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.

Reply via email to