Skip to content

Instantly share code, notes, and snippets.

@rossta
Created September 23, 2015 21:57
Show Gist options
  • Save rossta/0ae5122062887de03eb5 to your computer and use it in GitHub Desktop.
Save rossta/0ae5122062887de03eb5 to your computer and use it in GitHub Desktop.
Lab notebook WIP
(ns lab-notebook.core
(:require [om.core :as om]
[om.dom :as dom]))
(defonce appstate (atom {}))
(defn item-view [cursor component]
(reify
om/IRender
(render [this]
(dom/div #js {:style #js {:marginTop "1em"
:paddingTop "1em"
:backgroundColor "white"
:borderTop "1px solid #CCC"}
:className "entry" }
(dom/div nil (:summary cursor))
(dom/div nil (:date-time cursor))
(dom/div nil (:notes cursor))))))
(defn update-entries [cursor]
(fn [e]
(.preventDefault e)
(om/transact! cursor :entries
(fn [entries]
((fnil conj []) entries
{:summary "summary"
:date-time "date-time"
:notes "notes"})))))
(defn item-table [cursor component]
(reify
om/IRender
(render [this]
(dom/div nil
(apply dom/div nil
(for [entry (:entries cursor)]
(om/build item-view entry)))
(dom/div nil
(dom/h3 nil "New Entry")
(dom/form #js {:className "form-horizontal"
:onClick (update-entries cursor)}
(dom/input #js {:type "text"
:className "form-control"
:placeholder "Summary"})
(dom/input #js {:type "text"
:className "form-control"
:placeholder "Time"})
(dom/textarea #js {:className "form-control"
:placeholder "Notes"
:rows 5})
(dom/button #js {:className "btn btn-primary"}
"Save")))))))
(defn app-container [cursor component]
(reify
om/IRender
(render [this]
(dom/div nil
(dom/h1 nil "Lab notebook")
(om/build item-table cursor)))))
(om/root app-container appstate
{:target (. js/document (getElementById "app"))})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment