Those issues seem to deal with cursors, which are conceptually based on lenses. I think this Pedestal article <http://frankiesardo.github.io/blog/2014/12/15/give-pedestal-another-chance/> is closer in spirit, to what Paul DeGrandis is talking about. Pedestal's route table is a data structure, rather than a set of chained functions. This makes the architecture more malleable and composable, the author argues. So for Immutable UIs like Om, I'd imagine a declarative syntax for layout, data description / binding, business logic, etc. And certainly cursors could be part of the implementation of such a system. That's my take anyways.
Hth Tim Washington Interruptsoftware.com <http://interruptsoftware.com> On Mon, Dec 22, 2014 at 2:06 AM, Oliver George <[email protected]> wrote: > > Quick follow up. Seems like this is a topic that David and others are > exploring. > > https://github.com/swannodette/om/issues/293 > https://github.com/swannodette/om/issues/265 > > > > On Sunday, December 21, 2014 1:21:50 AM UTC+11, Timothy Washington wrote: > > Yeah, Paul gave a great presentation, I thought. I'm looking forward to > using his ideas in some of my future implementations. > > > > > > Hard for me to know exactly how your code applies. But one question you > can consider is does my logic contain just data? And further can that exact > data be taken and used in a different piece of code? It's the reusability > and composability that I took away from the approach. > > > > > > > > > > Hth > > > > > > > > > > > > Tim Washington > > Interruptsoftware.com > > > > > > > > > > On Fri, Dec 19, 2014 at 9:18 PM, Oliver George <[email protected]> > wrote: > > > > I really look forward to seeing some code from that project - seems > perfect. Paul was quite the tease! > > > > > > > > Here's a concept I knocked up this morning. It's a bit of a hack but > I'd be interested to see what people think of it. > > > > > > > > https://gist.github.com/anonymous/f8faa4dbfa33c2b324d4 > > > > > > > > Essentially it uses "logic-fn" hooks in the app-state and components > call update-with-logic! with their cursor to request data updates. > > > > > > > > The update-with-logic! does om/update! but first looks for a logic-fn to > apply. > > > > > > > > I can't decide if it's a hideous API or genius! Please feel free to pop > my bubble. > > > > > > > > > > > > On Saturday, December 20, 2014 9:25:25 AM UTC+11, Timothy Washington > wrote: > > > > > At this year's conj, Paul DeGrandis gave a talk on Unlocking Data > Driven Systems. > > > > > > > > > > My phone shows: http://m.youtube.com/watch?v=BNkYYYyfF48 > > > > > > > > > > It was very much in the vein in which your talking. Using data to > describe operations, configurations, etc. Such an approach would work > really well with an immutable UI as well. > > > > > > > > > > Hth > > > > > > > > > > Tim > > > > > > > > > > On Dec 19, 2014 4:47 PM, "Oliver George" <[email protected]> > wrote: > > > > > Hello > > > > > > > > > > > > > > > > > > > > I'm trying to work out a good method for applying business logic to an > OM based UI. In particular, I'd like to avoid embedding business logic in > the render components themselves. > > > > > > > > > > > > > > > > > > > > Things like: > > > > > > > > > > * if this model attribute changes clear these other ones > > > > > > > > > > * reject this new attribute value because it fails some validation test > > > > > > > > > > * when this attribute changes use ajax to fetch some new data > > > > > > > > > > > > > > > > > > > > I think OM still requires a single atom holds all app state even when > using ref-cursors to decouple things better. That means my "models" would > all be in that main atom but parked at different locations within it. > > > > > > > > > > > > > > > > > > > > I wondered if there was a way to hook into transact! such that I could > inject this logic before the update was applied but it's not apparent. > > > > > > > > > > > > > > > > > > > > Seems like something others may have explored. I'd love any > thoughts/links. > > > > > > > > > > > > > > > > > > > > cheers, Oliver > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > 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.
