Estoy tratando de crear una tabla (un programa de trabajo) He codificado previamente el uso de Python, creo que sería una buena introducción al lenguaje Clojure para mí.Crear una tabla HTML a partir de mapas anidados (y vectores)
Tengo muy poca experiencia en Clojure (o lisp en ese asunto) y he hecho mis rondas en google y un poco de prueba y error, pero parece que no puedo entender este estilo de codificación.
Aquí es mis datos de la muestra (vendrán de una base de datos SQLite en el futuro):
(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"]}]}))
yo estaba tratando de pasar por esta originalmente usando para luego pasar a doseq y finalmente domap (que parece tener más éxito) y volcar los contenidos en una tabla html (mi programa original de python superó este de una base de datos sqlite en una hoja de cálculo de Excel usando COM).
Aquí está mi intento (fn crear tabla):
(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))
que da salida a la mesa con los apartados (a sueldo, gerente, etc.) y los nombres de las secciones, me siento como yo' Estoy abusando del domap al anidarlo demasiadas veces ya que probablemente necesite agregar más domaps solo para obtener los tiempos de cambio en sus columnas correctas y el código se está volviendo "sucio".
Pido disculpas de antemano si no incluyo suficiente información, normalmente no pido ayuda con la codificación, también esta es mi primera pregunta AS).
Si conoces algún método mejor para hacer esto o incluso consejos o trucos que debería conocer como novato, definitivamente son bienvenidos.
Gracias.
Para el futuro, no debe marcar preguntas que responden como esta comunidad wiki. Esto arruina nuestro juego de recopilación de reputación. ;-) –
Lo siento, no me di cuenta de que arrojó el sistema de rep. Solo pensé que significaba que mi pregunta era editable (que no tenía que ser de todos modos) :(. Pero gracias por responder independientemente, he aprendido bastante de tus publicaciones :) :) – Kenny164
Feliz de escuchar eso. :-) –