PasteRack.org | ||
Paste # 14179 | ||
2014-09-01 15:37:15 | ||
Fork as a new paste. | ||
Paste viewed 55 times. | ||
Tweet | ||
Embed: | ||
#lang web-server/insta ; TODOS ; Add conditional formlet for changing real/ideal (require web-server/formlets racket/date "model.rkt") (date-display-format 'iso-8601) (define (get-date) (date->string (seconds->date (current-seconds)) #true)) ; start: request -> response (define (start request) (render-top (initialize-chart! (build-path (current-directory) "st-chart-data.sqlite")) request)) ; render-st-page: entry request -> response ; consumes an entry and a request, and produces the HTML page ; of the content of the entry (define (render-st-page a-entries a-entry request) (local [; new-entry-formlet : formlet (values string?) ; A formlet for requesting a title of an entry (define new-entry-formlet (formlet (#%# ,{input-string . => . title}) (values title "Ideal" "Real" (get-date) "" (entry-id a-entry)))) (define (response-generator embed/url) (response/xexpr `(html (head (title "Structural Tension") (link ((rel "stylesheet") (href "/style.css") (type "text/css")))) (body (h1 "Structural Tension") (a ((href ,(embed/url render-top))) "Back to Top") ,(render-entry a-entries embed/url) (form ((action ,(embed/url insert-entry-handler))) ,@(formlet-display new-entry-formlet) (input ([type "submit"]))))))) (define (insert-entry-handler request) (define-values (title) (formlet-process new-entry-formlet request)) (entries-insert-entry! a-entries ;fill in rest ) (render-st-page a-entries (redirect/get)))] (send/suspend/dispatch response-generator))) ; render-top: request -> response ; Renders the top-level ST chart (define (render-top a-entries request) (render-st-page a-entries (entries-top a-entries) request)) ; render-entry: entry (handler -> string) -> response (define (render-entry a-entry embed/url) `(div ((class "entry")) (h2 ,(entry-title a-entry)) (h3 ,(entry-ideal a-entry)) ,(render-steps a-entry embed/url) (h3 ,(entry-real a-entry)))) ; render-step: entry (handler -> string) -> xexpr (define (render-step a-entry embed/url) (local [(define (view-entry-handler request) (render-st-page a-entry request))] `(div ((class "step")) (p ,(entry-title a-entry) " " (a ((href ,(embed/url view-entry-handler))) "view"))))) ; render-steps: entry (handler -> string) -> xexpr (define (render-steps e embed/url) (local [(define (render-step/embed/url a-step) (render-step a-step embed/url))] `(div ((class "steps")) ,@(map render-step/embed/url (entry-children e)))))