Loop over results and show results other than sus as lists

This commit is contained in:
Marcus Kammer 2024-07-04 17:49:44 +02:00
parent 780eca088b
commit a56948b36c
3 changed files with 27 additions and 21 deletions

View file

@ -1,6 +1,6 @@
(defsystem "dev.metalisp.survey"
:description "A simple survey"
:version "0.1.3"
:version "0.1.4"
:author "Marcus Kammer <marcus.kammer@metalisp.dev"
:source-control "git@git.sr.ht:~marcuskammer/dev.metalisp.survey"
:licence "MIT"

View file

@ -3,20 +3,20 @@
(defun list-of-categorized-results (result-objs)
"Categorize results into different lists based on their type.
Apply special calculation for results of type 'sus'."
(let ((categorized-results (list :sus nil :other nil)))
(let ((categorized-results (list :sus nil)))
(dolist (result result-objs categorized-results)
(let ((type (ml-survey::questionnaire-result-type result))
(let ((type (intern (string-upcase (ml-survey::questionnaire-result-type result)) :keyword))
(data (ml-survey::questionnaire-result-post-data result))
(timestamp (ml-survey::questionnaire-result-timestamp result)))
(cond
((string= type "sus")
((eq type :sus)
(setf (getf categorized-results :sus)
(cons (ml-survey:sus-calc (cons timestamp data))
(getf categorized-results :sus))))
(t
(setf (getf categorized-results :other)
(setf (getf categorized-results type)
(cons (cons timestamp (mapcar #'cdr data))
(getf categorized-results :other)))))))))
(getf categorized-results type)))))))))
(defun survey-uri-p (uri)
(let ((parts (split-uri uri)))

View file

@ -6,9 +6,9 @@
(defun survey (survey &optional results)
"Generates the view to show the survey created."
(check-type survey ml-survey:survey)
(print results)
(let ((results-not-null (results-not-null results))
(sus-results (getf results :sus))
(other-results (getf results :other)))
(sus-results (getf results :sus)))
(with-page (:title "Survey Details")
(body-header "Survey Details" (navbar-en))
(:main :id "main-content"
@ -16,11 +16,13 @@
(:p (format nil "ID: ~a" (ml-survey:survey-id survey)))
(:h2 "Properties")
(ml-survey:survey-html survey)
(when results-not-null
(:h2 "Questionnaire Results")
(if sus-results
(let ((count-answers (length (cdr (car sus-results)))))
(:h3 "SUS")
(:table :class "table table-hover"
(:caption "Questionnaire results table")
(:thead
@ -31,8 +33,12 @@
(:th :scope "col" "SUS Score")))
(:tbody
(loop for result in sus-results
do (:tr (mapcar (lambda (x) (:td x)) result))))))
do (:tr (mapcar (lambda (x) (:td x)) result)))))))
(loop for el in other-results
do (:ul (loop for x in el
do (:li x))))))))))
(loop for (type data) on results by #'cddr unless (eq type :sus)
do (progn (:h3 (format nil "~a" type))
(loop for row in data
do (:ul :class "list-group py-3"
(loop for item in row
do (:li :class "list-group-item"
item)))))))))))