@mihaelkonjevic Oh, is confeedence using a different forms library than the one in the form repo?
Oh, never mind. Confused toolbox and forms
Toolbox has a new / different forms implementation
The original one is ok, but this one is much more integrated with keechma and has some additional features
I still need to document it, but we're using it in production for months and it's rock solid
@mihaelkonjevic So if I understand correctly forms are records which define how they get data and how they submit and such?
@mihaelkonjevic hm... so is it true that if the root component subscribes to the route of the app it will rerender anytime any part of the app changes? So if some row in a table changes the url to open a from (for example), all components which subscribe to route will rerender?
it will not rerender the whole app if that’s what you’re asking
because reagent is smart enough not to do that
it will probably re-render the virtual dom
but I had no performance problems with that, and I’ve implemented some weird excel / spreadsheet like functionality where each cell was bound to a route
Ok, I'll examine what I'm doing a bit. How many cells did your spreadsheet have? Did you use some kind of occlusion culling?
I think I was integrating with react-virtualized
so, the number of cells was dynamic - you could add columns dynamically, but it was in hundreds at least
and regarding the forms lib, you’re right it’s a record that defines how to get data, submit data, recover from errors, validate, etc…
interesting thing: most async actions can return pipelines
you can wait for dataloader to finish before getting the form data
this form has examples for both features https://github.com/retro/confeedence/blob/master/src/cljs/confeedence/forms/schedule.cljs#L64
Yeah, keechma seems to have great handling of async stuff. 🙂
Regarding the route, I suppose if the virtual-dom re-rendering were a problem, I could always define more granular subscriptions to specific parts of the route
yes, that’s how I’d do it
you can access the route data in app db under [:route :data]