On Wednesday, December 17, 2014 12:42:24 PM UTC+1, Lucas Bradstreet wrote: > It might be worth checking out this repo which I have noted for my future > attention but have not tried yet: https://github.com/bahulneel/om-datascript > > > > > On 17 Dec 2014, at 17:21, stephanos <[email protected]> wrote: > > > > So, I created a QueryCursor now. But the Om component doesn't refresh yet > > when the cursor state changes. What am I missing? > > > > ; from https://gist.github.com/allgress/11348685 > > (defn bind > > ([conn q] > > (bind conn q (atom nil))) > > ([conn q state] > > (let [k (guid)] > > (reset! state (d/q q @conn)) > > (d/listen! conn k (fn [tx-report] > > (let [novelty (d/q q (:tx-data tx-report))] > > (when (not-empty novelty) ;; Only update if > > query results actually changed > > (reset! state (d/q q (:db-after > > tx-report))))))) > > (set! (.-__key state) k) > > state))) > > > > (deftype QueryCursor [conn q state] > > IDeref > > (-deref [_] > > state) > > om/ICursor > > (-path [_] []) > > (-state [_] state) > > om/ITransact > > (-transact! [_ _ _ _] > > (throw (js/Error. "not supported"))) > > IEquiv > > (-equiv [_ other] > > (if (om/cursor? other) > > (= state (-value other)) > > (= state other))) > > ISeqable > > (-seq [this] > > (when (pos? (count @state)) > > (map (fn [v _] (om/-derive this v state [])) @state (range)))) > > IPrintWithWriter > > (-pr-writer [_ writer opts] > > (-pr-writer q writer opts))) > > > > ; run a query > > (defn query [q] > > (QueryCursor. conn q (bind conn q))) > > > > Stephan > > > >> On Monday, December 15, 2014 10:41:31 PM UTC+1, stephanos wrote: > >> Hey there, > >> > >> with my humble ClojureScript skills, I'm attempting to use Om and > >> DataScript together. But I struggle with closing the gap between a > >> DataScript query and an Om cursor. > >> > >> In my test app I have a DataScript query 'q-count' and an Om component > >> 'app-counter'. The main component looks like this: > >> > >> (defn app-view [] > >> (reify > >> om/IRender > >> (render [_] > >> (let [count (query q-count)] > >> (dom/div nil > >> (dom/h2 nil "Hello World") > >> (om/build #(app-counter count) {})))))) > >> > >> The 'query' function is supposed to run the query and, in order for the Om > >> component to automatically refresh upon change, return a cursor (it only > >> needs to be readable, not writeable). > >> > >> But how do I create a cursor from the query? I suppose Dave Dixon's > >> Reagent example can be applied here but I simply can't connect the dots. > >> > >> PS: The complete source code of the test app can be found at > >> https://github.com/stephanos/om-tutorial/blob/counter/src/todomvc/app.cljs > >> > >> Stephan > > > > -- > > Note that posts from new members are moderated - please be patient with > > your first post. > > --- > > You received this message because you are subscribed to the Google Groups > > "ClojureScript" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to [email protected]. > > To post to this group, send email to [email protected]. > > Visit this group at http://groups.google.com/group/clojurescript.
Thanks, that's just what I was looking for! :) -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/clojurescript.
