aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix-data-service/web/query-parameters.scm6
-rw-r--r--guix-data-service/web/view/html.scm35
2 files changed, 28 insertions, 13 deletions
diff --git a/guix-data-service/web/query-parameters.scm b/guix-data-service/web/query-parameters.scm
index 1c7fb8b..c12a490 100644
--- a/guix-data-service/web/query-parameters.scm
+++ b/guix-data-service/web/query-parameters.scm
@@ -220,4 +220,8 @@
(define parse-result-limit parse-number)
(define (any-invalid-query-parameters? query-parameters)
- (->bool (any invalid-query-parameter? (map cdr query-parameters))))
+ (->bool (any (lambda (val)
+ (if (list? val)
+ (any invalid-query-parameter? val)
+ (invalid-query-parameter? val)))
+ (map cdr query-parameters))))
diff --git a/guix-data-service/web/view/html.scm b/guix-data-service/web/view/html.scm
index 487954f..1417505 100644
--- a/guix-data-service/web/view/html.scm
+++ b/guix-data-service/web/view/html.scm
@@ -122,9 +122,12 @@
(input-name (or name
(underscore-join-words
(string-downcase label))))
- (has-error? (invalid-query-parameter?
- (assq-ref query-parameters
- (string->symbol input-name))))
+ (has-error? (let ((val
+ (assq-ref query-parameters
+ (string->symbol input-name))))
+ (if (list? val)
+ (any invalid-query-parameter? val)
+ (invalid-query-parameter? val))))
(show-help-span?
(or help-text has-error? required?)))
`(div
@@ -204,16 +207,24 @@
`((span (@ (id ,help-span-id)
(class "help-block"))
,@(if has-error?
- (let ((message
- (invalid-query-parameter-message
+ (let* ((val
(assq-ref query-parameters
- (string->symbol input-name)))))
- `((p (strong
- ,(string-append
- "Error: "
- (if message
- message
- "invalid value."))))))
+ (string->symbol input-name)))
+ (messages
+ (map invalid-query-parameter-message
+ (if (list? val)
+ val
+ (list val)))))
+ `((p
+ ,@(if (null? messages)
+ '(string "Error: invalid value")
+ (map
+ (lambda (message)
+ `(strong
+ (@ (style "display: block;"))
+ ,(string-append
+ "Error: " message)))
+ messages)))))
'())
,@(if required? '((strong "Required. ")) '())
,@(if help-text