]> gitweb.factorcode.org Git - factor.git/blob - extra/webapps/mason/dashboard/dashboard.factor
0e6c3c2b5ca91751729de17ff7b9ce7c756c42f5
[factor.git] / extra / webapps / mason / dashboard / dashboard.factor
1 ! Copyright (C) 2010 Slava Pestov.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: accessors combinators kernel furnace.actions html.forms
4 sequences sorting xml.syntax webapps.mason.backend
5 webapps.mason.utils ;
6 IN: webapps.mason.downloads
7
8 CONSTANT: OFFLINE
9 [XML <span style="background-color: khaki;">OFFLINE</span> XML]
10
11 CONSTANT: BROKEN
12 [XML <span style="background-color: red; color: white;">BROKEN</span> XML]
13
14 : builder-status ( builder -- status/f )
15     {
16         { [ dup offline? ] [ drop OFFLINE ] }
17         { [ dup broken? ] [ drop BROKEN ] }
18         [ drop f ]
19     } cond ;
20
21 : builder-list ( seq -- xml )
22     [ os/cpu ] sort-with
23     [
24         [ report-url ] [ os/cpu ] [ builder-status ] tri
25         [XML <li><a href=<->><-></a> <-></li> XML]
26     ] map
27     [ [XML <p>No machines.</p> XML] ]
28     [ [XML <ul><-></ul> XML] ]
29     if-empty ;
30
31 : <dashboard-action> ( -- action )
32     <page-action>
33     [
34         [
35             all-builders builder-list
36             "builders" set-value
37         ] with-mason-db
38     ] >>init ;