Loop over results and show results other than sus as lists
This commit is contained in:
parent
780eca088b
commit
a56948b36c
3 changed files with 27 additions and 21 deletions
|
@ -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"
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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,23 +16,29 @@
|
|||
(: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
|
||||
(:tr
|
||||
(:th :scope "col" "Time")
|
||||
(loop for i from 1 below count-answers
|
||||
do (:th :scope "col" (format nil "Q ~a" i)))
|
||||
(:th :scope "col" "SUS Score")))
|
||||
(:tbody
|
||||
(loop for result in sus-results
|
||||
do (:tr (mapcar (lambda (x) (:td x)) result))))))
|
||||
(:caption "Questionnaire results table")
|
||||
(:thead
|
||||
(:tr
|
||||
(:th :scope "col" "Time")
|
||||
(loop for i from 1 below count-answers
|
||||
do (:th :scope "col" (format nil "Q ~a" i)))
|
||||
(:th :scope "col" "SUS Score")))
|
||||
(:tbody
|
||||
(loop for result in sus-results
|
||||
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)))))))))))
|
||||
|
|
Loading…
Add table
Reference in a new issue