dev.metalisp.sbt/docs/pattern/questionnaire.org

72 lines
2.7 KiB
Org Mode
Raw Normal View History

2023-09-14 15:00:36 +02:00
#+title: Creating a Questionnaire using cl-sbt/questionnaire Macros in a Web Application
#+author: Marcus Kammer
#+email: marcus.kammer@mailbox.org
2023-09-21 15:17:47 +02:00
#+date: [2023-09-21 Thu]
2023-09-14 15:00:36 +02:00
* Introduction
Questionnaires are powerful tools for gathering information and insights from
users. They are crucial for understanding user behaviors, preferences, and
requirements. This document will demonstrate how to build a web-based
questionnaire using the cl-sbt/questionnaire macros in a Common Lisp
application.
** The Importance of Questionnaires
Questionnaires help in collecting data for various purposes including market
research, user experience study, and many more. They can be in multiple formats
like single-choice, multiple-choice, or open-ended questions.
*** Types of Questions
- Single Choice: Questions that allow one answer.
- Multiple Choice: Questions that allow multiple answers.
- Text: Open-ended questions for free text input.
* Integrating cl-sbt/questionnaire Macros
To create a questionnaire in your Common Lisp web application,
cl-sbt/questionnaire macros can be employed. These macros generate the HTML
required for different types of questions in a questionnaire.
2023-08-25 22:01:32 +02:00
2023-09-21 15:17:47 +02:00
#+name: questionnaire-page
#+begin_src lisp :results value file :file-ext html
2023-09-15 10:32:46 +02:00
(defpackage my-web-app
(:use :cl :cl-sbt/questionnaire)
(:export :generate-button-page))
(in-package :my-web-app)
2023-08-25 22:01:32 +02:00
2023-09-15 10:32:46 +02:00
(defun generate-questionnaire-page ()
"Generates an HTML page with questionnaires using cl-sbt/questionnaire macros."
(spinneret:with-html-string
(:html
(:head
(:title "Questionnaire Examples")
2023-09-21 15:17:47 +02:00
(:link :type "text/css" :rel "stylesheet" :href "https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css")
2023-09-15 10:32:46 +02:00
;; Include Bootstrap CSS and JavaScript links here
)
(:body
(:h1 "Questionnaire Examples")
(questionnaire "/submit"
2023-09-21 15:17:47 +02:00
(:ask "How old are you?"
:group "age"
:choices (:radio "18-24" "25-34" "35-44" "45-54" "55+"))
(:ask "Gender"
:group "gender"
:choices (:radio "Male" "Female" "Non-binary" "Prefer not to say" :text "Other"))
(:ask "How many hours per day, on average, do you spend browsing the internet?"
:group "webbrowsing"
:choices (:radio "Less than 1 hour" "1-3 hours" "3-5 hours" "5+ hours")))
(:script :src "https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js")
2023-09-15 10:32:46 +02:00
))))
2023-08-25 22:01:32 +02:00
2023-09-15 10:32:46 +02:00
(generate-questionnaire-page)
2023-08-25 22:01:32 +02:00
#+end_src
2023-09-15 10:32:46 +02:00
2023-09-21 15:17:47 +02:00
#+RESULTS: questionnaire-page
[[file:questionnaire-page.html]]
2023-09-15 10:32:46 +02:00
This example demonstrates the integration of the cl-sbt/questionnaire macros into a
web application. The macros assist in generating the required HTML for
different types of Bootstrap questionnaires.