From 60cb07f469c6ad0a1dd483c5ad217b20073d9e77 Mon Sep 17 00:00:00 2001 From: Danjela Lura Date: Mon, 20 Apr 2020 09:44:33 +0200 Subject: [PATCH] Add JSON representation for the Jobs page Signed-off-by: Christopher Baines --- guix-data-service/web/jobs/controller.scm | 41 ++++++++++++++++++----- guix-data-service/web/jobs/html.scm | 9 +++++ 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/guix-data-service/web/jobs/controller.scm b/guix-data-service/web/jobs/controller.scm index 7683a12..24a1274 100644 --- a/guix-data-service/web/jobs/controller.scm +++ b/guix-data-service/web/jobs/controller.scm @@ -19,6 +19,7 @@ #:use-module (ice-9 match) #:use-module (guix-data-service web render) #:use-module (guix-data-service web query-parameters) + #:use-module (guix-data-service web util) #:use-module (guix-data-service jobs load-new-guix-revision) #:use-module (guix-data-service web jobs html) #:export (jobs-controller)) @@ -79,14 +80,38 @@ (assq-ref query-parameters 'before_id) limit-results)) (recent-events (select-recent-job-events conn))) - (render-html - #:sxml (view-jobs - query-parameters - jobs - recent-events - (and limit-results - (>= (length jobs) - limit-results)))))) + (case (most-appropriate-mime-type + '(application/json text/html) + mime-types) + ((application/json) + (render-json + `((recent-events + . ,(list->vector + (map (match-lambda + ((_ commit _ _ event occurred_at) + `((commit . ,commit) + (event . ,event) + (occurred_at . ,occurred_at)))) + recent-events))) + (jobs + . ,(list->vector + (map (match-lambda + ((_ commit source _ created-at _ events log) + `((commit . ,commit) + (source . ,source) + (created-at . ,created-at) + (events . ,events) + (log . ,log)))) + jobs)))))) + (else + (render-html + #:sxml (view-jobs + query-parameters + jobs + recent-events + (and limit-results + (>= (length jobs) + limit-results)))))))) (define (render-job-events mime-types conn query-parameters) (let* ((limit-results diff --git a/guix-data-service/web/jobs/html.scm b/guix-data-service/web/jobs/html.scm index bf6b369..742d7bd 100644 --- a/guix-data-service/web/jobs/html.scm +++ b/guix-data-service/web/jobs/html.scm @@ -108,6 +108,15 @@ (button (@ (type "submit") (class "btn btn-lg btn-primary")) "Update results"))))))) + (div + (@ (class "btn-group pull-right") + (role "group")) + (a (@ (class "btn btn-lg btn-default") + (href ,(string-append + "/jobs.json")) + (role "button")) + "View JSON")) + (div (@ (class "row")) (div