Skip to content

Instantly share code, notes, and snippets.

@monjohn
Created October 26, 2015 14:59
Show Gist options
  • Save monjohn/30aac8676e7a84f27f2b to your computer and use it in GitHub Desktop.
Save monjohn/30aac8676e7a84f27f2b to your computer and use it in GitHub Desktop.
(def init-data
{:current-list
{:german? true
:current 2
:count 0
:word-list
[{:ger "Stollen" :eng "Cleats" :level :daily :score 1}
{:ger "Ball" :eng "Ball" :level :daily :score 0}
{:ger "Torhüter" :eng "Goal Keeper" :level :daily :score 2}
{:ger "Gras" :eng "Grass" :score 0 :level :daily}
{:ger "Strafenstoß" :eng "Penalty Kick" :score 1 :level :daily}
{:ger "Vorwärts" :eng "Forward" :score 0 :level :daily}
{:ger "Mittelfeld" :eng "Midfield" :score 2 :level :daily}
{:ger "Eckball" :eng "Corner" :score 3 :level :daily}
{:ger "Tor" :eng "Goal" :score 3 :level :daily}
{:ger "Pass" :eng "Pass" :score 2 :level :daily}
{:ger "Verlängerung" :eng "Overtime" :score 5 :level :daily}
{:ger "Schiedsrichter" :eng "Referee" :score 3 :level :daily}]}})
(def app-state (atom init-data))
(defmulti mutate om/dispatch)
(defmethod mutate 'card/flip
[{:keys [state]} _ _]
{:value [:current-list]
:action #(swap! state update-in [:current-list :german?] not)})
(defui Card
static om/IQuery
(query [this]
[:current-list])
Object
(render [this]
(let [{:keys [word-list german? current]} (-> this om/props)
{:keys [ger eng]} (get word-list current)]
(dom/section #js {:className "container"}
(dom/div #js {:id "card"
:className (if-not german? "flipped" "non-flipped")}
(dom/figure #js {:className "front"
:onClick #(om/transact! this '[(card/flip)])} ger)
(dom/figure #js {:className "back"} eng))))
(defui Root
static om/IQuery
(query [this]
(om/get-query Card))
Object
(render [this]
(let [{:keys [current-list]} (om/props this)]
(card current-list))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment