Ich versuche, eine Tabelle (ein Arbeitsplan) zu erstellen Ich habe zuvor mit Python codiert, ich denke, es wäre eine nette Einführung in die Clojure-Sprache für mich.Erstellen Sie eine HTML-Tabelle aus verschachtelten Karten (und Vektoren)
Ich habe sehr wenig Erfahrung in Clojure (oder lisp in dieser Angelegenheit) und ich habe meine Runden in Google und ein gutes Stück von Versuch und Irrtum, aber kann nicht scheinen, meinen Kopf um diese Art der Codierung zu bekommen.
Hier ist mein Beispieldaten (wird aus einer SQLite-Datenbank in der Zukunft kommen):
(def smpl2 (ref {"Salaried"
[{"John Doe" ["12:00-20:00" nil nil nil "11:00-19:00"]}
{"Mary Jane" [nil "12:00-20:00" nil nil nil "11:00-19:00"]}]
"Shift Manager"
[{"Peter Simpson" ["12:00-20:00" nil nil nil "11:00-19:00"]}
{"Joe Jones" [nil "12:00-20:00" nil nil nil "11:00-19:00"]}]
"Other"
[{"Super Man" ["07:00-16:00" "07:00-16:00" "07:00-16:00"
"07:00-16:00" "07:00-16:00"]}]}))
ich versuchte, durch diese ursprünglich mit dem Schritt für dann auf doseq bewegen und schließlich domap (was erfolgreicher scheint) und den Inhalt in eine HTML-Tabelle (meine ursprüngliche Python-Programm outputed dies aus einer SQLite-Datenbank in eine Excel-Tabelle mit COM).
Hier ist mein Versuch (der create-Tabelle fn):
(defn html-doc [title & body]
(html (doctype "xhtml/transitional")
[:html [:head [:title title]] [:body body]]))
(defn create-table []
[:h1 "Schedule"]
[:hr]
[:table (:style "border: 0; width: 90%")
[:th "Name"][:th "Mon"][:th "Tue"][:th "Wed"]
[:th "Thur"][:th "Fri"][:th "Sat"][:th "Sun"]
[:tr
(domap [ct @smpl2]
[:tr [:td (key ct)]
(domap [cl (val ct)]
(domap [c cl]
[:tr [:td (key c)]]))])
]])
(defroutes tstr
(GET "/" ((html-doc "Sample" create-table)))
(ANY "*" 404))
, die die Tabelle mit den Abschnitten gibt (Angestellte, Manager, etc.) und die Namen in den Abschnitten, ich fühle mich wie ich Ich missbrauche die Domap, indem ich sie zu oft verschachtele, da ich wahrscheinlich mehr DOMAPs hinzufügen muss, nur um die Verschiebungszeiten in ihren richtigen Spalten zu erhalten, und der Code bekommt ein "schmutziges" Gefühl.
Ich entschuldige mich im Voraus, wenn ich nicht genug Informationen einschließe, bitte ich normalerweise nicht um Hilfe beim Codieren, auch das ist meine erste SO Frage :).
Wenn Sie irgendwelche besseren Ansätze kennen, um dies zu tun oder sogar Tipps oder Tricks, die ich als Neuling wissen sollte, sind sie auf jeden Fall willkommen.
Danke.
Für die Zukunft sollten Sie keine beantwortbaren Fragen wie dieses Community-Wiki markieren. Dies verdirbt unser Reputationsspiel. ;-) –
Sorry, mir ist nicht klar, dass es das Rep-System weggeworfen hat. Ich dachte nur, dass meine Frage bearbeitbar war (was sie sowieso nicht sein musste) :(. Aber danke, dass du trotzdem geantwortet hast, ich habe eine Menge von deinen Posts gelernt. :) – Kenny164
Freut mich zu hören. :-) –