That's correct, I'm not actually using `-resolve` in the example yet.

David

On Fri, Oct 3, 2014 at 10:18 AM, Peter Jaros <[email protected]> wrote:
> Brilliant, I had a thought like this earlier in the week, but I had no
> idea how to implement it.
>
> But, David, I'm not sure I follow your code. `-resolve` doesn't appear
> to be used anywhere. Is that an oversight, or am I missing something?
>
> Peter
>
> On Fri, Oct 3, 2014 at 8:54 AM, David Nolen <[email protected]> wrote:
>> I've updated the example to show how to dynamically add resolution
>> capabilities to all cursors in an application:
>> https://github.com/swannodette/om/blob/f63af72522f0a0045edbada19259b6b17f5d1dcf/examples/two_lists/src/core.cljs
>>
>> I'm starting to think this approach is very promising - this is
>> already heading in the direction where I believe it can deliver
>> independent addressability without really adding anything in the way
>> of new features to Om itself. However determining the tradeoffs and
>> uncovering what helpers/tools are needed to make this approach easier
>> to adopt is going to take some time to shakeout.
>>
>> David
>>
>> On Thu, Oct 2, 2014 at 8:54 PM, Todd Berman <[email protected]> wrote:
>>> Very interesting!
>>>
>>> I like the use of specify to create the collections, it makes a lot of 
>>> sense.
>>>
>>> How would you extend it so that instead of:
>>>
>>> {:list0 [:a :b :c]
>>>      :list1 [:d :e :f]
>>>      :items
>>>      {:a {:text "cat"}
>>>       :b {:text "dog"}
>>>       :c {:text "bird"}
>>>       :d {:text "lion"}
>>>       :e {:text "antelope"}
>>>       :f {:text "zebra"}}}
>>>
>>> you would have:
>>>
>>> {:list0 [:a :b :c]
>>>      :list1 [:d :e :f]
>>>      :items
>>>      {:a {:text "cat"}
>>>       :b {:text "dog"}
>>>       :c {:text "bird" :children :list1}
>>>       :d {:text "lion"}
>>>       :e {:text "antelope"}
>>>       :f {:text "zebra"}}}
>>>
>>> Where you use list0 as the root node, and have the item-view recursively 
>>> render child lists.
>>>
>>> That is the part that I am most struggling with how to express without 
>>> exposing the root atom.
>>>
>>> It seems like in theory, you could use something like a prewalk to convert 
>>> it into the data structure you want, but that seems super heavy, and it 
>>> doesn't allow you to load list1 on the fly easily.
>>>
>>> That actually brings me to a semi-related question. Is there any way to 
>>> create a cursor to a path that doesn't exist yet, but will/may in the 
>>> future?
>>>
>>> --Todd
>>>
>>> On Thursday, October 2, 2014 5:12:53 PM UTC-7, David Nolen wrote:
>>>> I spent some time thinking about your problem today and it's leading
>>>>
>>>> me towards something which may address it and the numerous variations
>>>>
>>>> of this problem. At the moment I only have the following short code
>>>>
>>>> snippet - it uses specify in some interesting ways that I think people
>>>>
>>>> may be overlooking:
>>>>
>>>>
>>>>
>>>> https://github.com/swannodette/om/blob/fcf6d866e95f5765c0d500887cb6b48f32683205/examples/two_lists/src/core.cljs
>>>>
>>>>
>>>>
>>>> Feel free to ask any questions you may have. Once I've played around
>>>>
>>>> with this approach a bit I'll probably collect my thoughts into a
>>>>
>>>> blogpost and likely some kind of tutorial.
>>>>
>>>>
>>>>
>>>> David
>>>>
>>>>
>>>>
>>>> On Thu, Oct 2, 2014 at 4:39 PM, Todd Berman <[email protected]> wrote:
>>>>
>>>> > I am in the middle of writing my first large OM/CLJS app, and have run 
>>>> > into something that feels wrong, and I am curious if other people have 
>>>> > come up with better solutions for it.
>>>>
>>>> >
>>>>
>>>> > I am writing a CMS-type app that allows you to edit/create data objects 
>>>> > that are stored in various lists. Originally, I was storing them in an 
>>>> > atom like:
>>>>
>>>> >
>>>>
>>>> > {:lists {
>>>>
>>>> >   "list 1" [{ ... } { ... }]
>>>>
>>>> > }}
>>>>
>>>> >
>>>>
>>>> > However, that causes some issues when items moved from list to list, so 
>>>> > instead I started storing them like:
>>>>
>>>> >
>>>>
>>>> > {:lists {
>>>>
>>>> >   "list 1" ["id1", "id2"]
>>>>
>>>> >   }
>>>>
>>>> >   :items {
>>>>
>>>> >     "id1": { ... }
>>>>
>>>> >     "id2": { ... }
>>>>
>>>> > }}
>>>>
>>>> >
>>>>
>>>> > This generally works, but feels a bit gross, because now om components 
>>>> > that show the list of items must have a reference to their own data, but 
>>>> > also the items themselves in order to generate cursors to pass to 
>>>> > om/build.
>>>>
>>>> >
>>>>
>>>> > As I got further into it, it has gotten a bit uglier (because I added a 
>>>> > datatype that included a list of items of its own type), which is why I 
>>>> > am asking if anyone has any better solutions to an issue like this?
>>>>
>>>> >
>>>>
>>>> > I could expose the root atom in shared state, but that sounds just like 
>>>> > a different bad idea.
>>>>
>>>> >
>>>>
>>>> > Any thoughts?
>>>>
>>>> >
>>>>
>>>> > --Todd
>>>>
>>>> >
>>>>
>>>> > --
>>>>
>>>> > 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.
>>>
>>> --
>>> 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.
>>
>> --
>> 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.
>
>
>
> --
> Visuals: http://youtube.com/peeja
> Words: http://blog.peeja.com/
> Conversation: (603) 548-1203
>
> --
> 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.

-- 
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