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"
|
(defsystem "dev.metalisp.survey"
|
||||||
:description "A simple survey"
|
:description "A simple survey"
|
||||||
:version "0.1.3"
|
:version "0.1.4"
|
||||||
:author "Marcus Kammer <marcus.kammer@metalisp.dev"
|
:author "Marcus Kammer <marcus.kammer@metalisp.dev"
|
||||||
:source-control "git@git.sr.ht:~marcuskammer/dev.metalisp.survey"
|
:source-control "git@git.sr.ht:~marcuskammer/dev.metalisp.survey"
|
||||||
:licence "MIT"
|
:licence "MIT"
|
||||||
|
|
|
@ -3,20 +3,20 @@
|
||||||
(defun list-of-categorized-results (result-objs)
|
(defun list-of-categorized-results (result-objs)
|
||||||
"Categorize results into different lists based on their type.
|
"Categorize results into different lists based on their type.
|
||||||
Apply special calculation for results of type 'sus'."
|
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)
|
(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))
|
(data (ml-survey::questionnaire-result-post-data result))
|
||||||
(timestamp (ml-survey::questionnaire-result-timestamp result)))
|
(timestamp (ml-survey::questionnaire-result-timestamp result)))
|
||||||
(cond
|
(cond
|
||||||
((string= type "sus")
|
((eq type :sus)
|
||||||
(setf (getf categorized-results :sus)
|
(setf (getf categorized-results :sus)
|
||||||
(cons (ml-survey:sus-calc (cons timestamp data))
|
(cons (ml-survey:sus-calc (cons timestamp data))
|
||||||
(getf categorized-results :sus))))
|
(getf categorized-results :sus))))
|
||||||
(t
|
(t
|
||||||
(setf (getf categorized-results :other)
|
(setf (getf categorized-results type)
|
||||||
(cons (cons timestamp (mapcar #'cdr data))
|
(cons (cons timestamp (mapcar #'cdr data))
|
||||||
(getf categorized-results :other)))))))))
|
(getf categorized-results type)))))))))
|
||||||
|
|
||||||
(defun survey-uri-p (uri)
|
(defun survey-uri-p (uri)
|
||||||
(let ((parts (split-uri uri)))
|
(let ((parts (split-uri uri)))
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
(defun survey (survey &optional results)
|
(defun survey (survey &optional results)
|
||||||
"Generates the view to show the survey created."
|
"Generates the view to show the survey created."
|
||||||
(check-type survey ml-survey:survey)
|
(check-type survey ml-survey:survey)
|
||||||
|
(print results)
|
||||||
(let ((results-not-null (results-not-null results))
|
(let ((results-not-null (results-not-null results))
|
||||||
(sus-results (getf results :sus))
|
(sus-results (getf results :sus)))
|
||||||
(other-results (getf results :other)))
|
|
||||||
(with-page (:title "Survey Details")
|
(with-page (:title "Survey Details")
|
||||||
(body-header "Survey Details" (navbar-en))
|
(body-header "Survey Details" (navbar-en))
|
||||||
(:main :id "main-content"
|
(:main :id "main-content"
|
||||||
|
@ -16,11 +16,13 @@
|
||||||
(:p (format nil "ID: ~a" (ml-survey:survey-id survey)))
|
(:p (format nil "ID: ~a" (ml-survey:survey-id survey)))
|
||||||
(:h2 "Properties")
|
(:h2 "Properties")
|
||||||
(ml-survey:survey-html survey)
|
(ml-survey:survey-html survey)
|
||||||
|
|
||||||
(when results-not-null
|
(when results-not-null
|
||||||
(:h2 "Questionnaire Results")
|
(:h2 "Questionnaire Results")
|
||||||
|
|
||||||
(if sus-results
|
(if sus-results
|
||||||
(let ((count-answers (length (cdr (car sus-results)))))
|
(let ((count-answers (length (cdr (car sus-results)))))
|
||||||
|
(:h3 "SUS")
|
||||||
(:table :class "table table-hover"
|
(:table :class "table table-hover"
|
||||||
(:caption "Questionnaire results table")
|
(:caption "Questionnaire results table")
|
||||||
(:thead
|
(:thead
|
||||||
|
@ -31,8 +33,12 @@
|
||||||
(:th :scope "col" "SUS Score")))
|
(:th :scope "col" "SUS Score")))
|
||||||
(:tbody
|
(:tbody
|
||||||
(loop for result in sus-results
|
(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
|
(loop for (type data) on results by #'cddr unless (eq type :sus)
|
||||||
do (:ul (loop for x in el
|
do (progn (:h3 (format nil "~a" type))
|
||||||
do (:li x))))))))))
|
(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