aboutsummaryrefslogtreecommitdiff
path: root/guix-data-service/web
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2019-06-24 20:30:47 +0100
committerChristopher Baines <mail@cbaines.net>2019-06-24 20:30:47 +0100
commit54b992246637fb4f73a9d8b15d381cdc7bce3183 (patch)
tree8e2f8a01bcdf416ee59cb5c09af8a123d93e8146 /guix-data-service/web
parentafa86d61158f3bbded19f71bed9370d76a4f6622 (diff)
downloaddata-service-54b992246637fb4f73a9d8b15d381cdc7bce3183.tar
data-service-54b992246637fb4f73a9d8b15d381cdc7bce3183.tar.gz
Iterate the log viewing
Replace the Guile-side HTML escaping with a less complete, but hopefully faster PostgreSQL side HTML escaping approach. Also, allow reading part of the log, by default, the last 1,000,000 characters, as this should render quickly.
Diffstat (limited to 'guix-data-service/web')
-rw-r--r--guix-data-service/web/controller.scm21
-rw-r--r--guix-data-service/web/view/html.scm25
2 files changed, 39 insertions, 7 deletions
diff --git a/guix-data-service/web/controller.scm b/guix-data-service/web/controller.scm
index 6990fb9..d964497 100644
--- a/guix-data-service/web/controller.scm
+++ b/guix-data-service/web/controller.scm
@@ -529,11 +529,16 @@
#:sxml (view-jobs
(select-jobs-and-events conn))))
-(define (render-job mime-types conn job-id)
+(define (render-job mime-types conn job-id query-parameters)
(render-html
#:sxml (view-job
job-id
- (log-for-job conn job-id))))
+ query-parameters
+ (log-for-job conn job-id
+ #:character-limit
+ (assq-ref query-parameters 'characters)
+ #:start-character
+ (assq-ref query-parameters 'start_character)))))
(define (parse-commit conn)
(lambda (s)
@@ -823,8 +828,14 @@
(render-jobs mime-types
conn))
((GET "job" job-id)
- (render-job mime-types
- conn
- job-id))
+ (let ((parsed-query-parameters
+ (parse-query-parameters
+ request
+ `((start_character ,parse-number)
+ (characters ,parse-number #:default 1000000)))))
+ (render-job mime-types
+ conn
+ job-id
+ parsed-query-parameters)))
((GET path ...)
(not-found (request-uri request)))))
diff --git a/guix-data-service/web/view/html.scm b/guix-data-service/web/view/html.scm
index da7e992..ca744ff 100644
--- a/guix-data-service/web/view/html.scm
+++ b/guix-data-service/web/view/html.scm
@@ -975,7 +975,7 @@
'())))))
jobs-and-events)))))))))
-(define (view-job job-id log)
+(define (view-job job-id query-parameters log)
(layout
#:body
`(,(header)
@@ -989,7 +989,28 @@
(div
(@ (class "row"))
(div
- (pre ,log)))))))
+ (@ (class "col-md-12"))
+ (div
+ (@ (class "well"))
+ (form
+ (@ (method "get")
+ (action "")
+ (class "form-horizontal"))
+ ,(form-horizontal-control
+ "Characters" query-parameters
+ #:help-text "Return at most this many characters.")
+ ,(form-horizontal-control
+ "Start character" query-parameters
+ #:help-text "Start reading the log from this character.")
+ (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 log")))))))
+ (div
+ (@ (class "row"))
+ (div
+ (pre (raw ,log))))))))
(define (view-derivation derivation derivation-inputs derivation-outputs
builds)