aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-10-31 15:53:50 +0000
committerChristopher Baines <mail@cbaines.net>2020-10-31 15:53:50 +0000
commitf05af4479d6c41907a282be1a1bf3a42a8671b6d (patch)
tree9762520f84a477707d7b77d907bdedf6a9b17a31
parentc05cbd8438dac68c7454e5e79f0fefd1f39367f6 (diff)
downloaddata-service-f05af4479d6c41907a282be1a1bf3a42a8671b6d.tar
data-service-f05af4479d6c41907a282be1a1bf3a42a8671b6d.tar.gz
Add a way of displaying build statuses as small labels
-rw-r--r--guix-data-service/web/html-utils.scm38
1 files changed, 37 insertions, 1 deletions
diff --git a/guix-data-service/web/html-utils.scm b/guix-data-service/web/html-utils.scm
index 660fcd3..5c0730d 100644
--- a/guix-data-service/web/html-utils.scm
+++ b/guix-data-service/web/html-utils.scm
@@ -27,7 +27,8 @@
build-status-span
build-url
build-server-link-url
- build-status-alist->build-icon))
+ build-status-alist->build-icon
+ build-statuses->build-status-labels))
(define (sexp-div sexp)
(match sexp
@@ -116,3 +117,38 @@
(define (build-status-alist->build-icon status)
(build-status-span (assoc-ref status "status")))
+
+(define (build-status-label status count)
+ `(span (@ (class ,(string-append
+ "pull-right label label-"
+ (assoc-ref
+ '(("scheduled" . "info")
+ ("started" . "primary")
+ ("succeeded" . "success")
+ ("failed" . "danger")
+ ("failed-dependency" . "warning")
+ ("failed-other" . "danger")
+ ("canceled" . "default")
+ ("" . "default"))
+ status))))
+ ,count))
+
+(define (build-statuses->build-status-labels builds)
+ (define statuses-and-counts
+ (fold (lambda (status counts)
+ `((,status . ,(+ 1
+ (or (assoc-ref counts status)
+ 0)))
+ ,@(alist-delete status counts)))
+ '()
+ (sort
+ (map (lambda (build)
+ (assoc-ref build "status"))
+ builds)
+ string<?)))
+
+ (map
+ (match-lambda
+ ((status . count)
+ (build-status-label status count)))
+ statuses-and-counts))