diff options
Diffstat (limited to 'guix-data-service/web/build')
-rw-r--r-- | guix-data-service/web/build/controller.scm | 35 | ||||
-rw-r--r-- | guix-data-service/web/build/html.scm | 25 |
2 files changed, 54 insertions, 6 deletions
diff --git a/guix-data-service/web/build/controller.scm b/guix-data-service/web/build/controller.scm index 413f381..df08e3c 100644 --- a/guix-data-service/web/build/controller.scm +++ b/guix-data-service/web/build/controller.scm @@ -20,9 +20,18 @@ #:use-module (guix-data-service web render) #:use-module (guix-data-service web query-parameters) #:use-module (guix-data-service model build) + #:use-module (guix-data-service model build-status) #:use-module (guix-data-service web build html) #:export (build-controller)) +(define (parse-build-status status) + (if (member status build-status-strings) + status + (make-invalid-query-parameter + status + (string-append "unknown build status: " + status)))) + (define (build-controller request method-and-path-components mime-types @@ -30,11 +39,27 @@ conn) (match method-and-path-components (('GET "builds") - (render-builds mime-types + (render-builds request + mime-types conn)) (_ #f))) -(define (render-builds mime-types conn) - (render-html - #:sxml (view-builds (select-build-stats conn) - (select-builds-with-context conn)))) +(define (render-builds request mime-types conn) + (let ((parsed-query-parameters + (parse-query-parameters + request + `((build_status ,parse-build-status #:multi-value))))) + (if (any-invalid-query-parameters? parsed-query-parameters) + (render-html + #:sxml (view-builds parsed-query-parameters + build-status-strings + '() + '())) + (render-html + #:sxml (view-builds parsed-query-parameters + build-status-strings + (select-build-stats conn) + (select-builds-with-context + conn + (assq-ref parsed-query-parameters + 'build_status))))))) diff --git a/guix-data-service/web/build/html.scm b/guix-data-service/web/build/html.scm index 61382aa..65c4e66 100644 --- a/guix-data-service/web/build/html.scm +++ b/guix-data-service/web/build/html.scm @@ -21,7 +21,7 @@ #:use-module (guix-data-service web view html) #:export (view-builds)) -(define (view-builds stats builds) +(define (view-builds query-parameters build-status-strings stats builds) (layout #:body `(,(header) @@ -49,6 +49,29 @@ (div (@ (class "row")) (div + (@ (class "col-md-12")) + (div + (@ (class "well")) + (form + (@ (method "get") + (action "") + (class "form-horizontal")) + ,(form-horizontal-control + "Build status" query-parameters + #:options + (map (lambda (build-status) + (cons (build-status-value->display-string build-status) + build-status)) + build-status-strings) + #:help-text "Return builds with these statuses.") + (div (@ (class "form-group form-group-lg")) + (div (@ (class "col-sm-offset-2 col-sm-10")) + (button (@ (type "submit") + (class "btn btn-lg btn-primary")) + "Update results"))))))) + (div + (@ (class "row")) + (div (@ (class "col-sm-12")) (table (@ (class "table")) |