Hello all. Longtime ASP.NET dev working on his first Angular project here.
I'm working on a wizard-type interface that will contain between 5-15
"screens" (views), depending on user options. The user will use this
wizard to define criteria that will feed into analytical processing.
The data structure behind a complete Wizard object might look something
like:
WizardData
- Setup
- (a few properties)
- Metadata
- (a few more properties)
- Criteria (a collection of different types of criteria objects)
- Simple Criteria (could be 0-4 of instances of these)
- handful of simple attributes
- Complex Criteria type, with the following sub sections (could be 0-3
instances of these)
- lists of items the analytical process will be looking for (could be
hundreds of items in list)
- a dozen or so attributes about the collection of items
I'm coming into this project after some design work has been done, and the
team is currently storing the complete "Wizard" object in a single JSON
field in an RDBMS. I think that their expectation was the web application
(written in Angular) would simply make a single REST API call to update the
entire JSON object with any updates that the user might make to the object.
The workflow might be something like:
- User starts a wizard
- Completes Setup screen
- Based on user input, certain types of criteria are made available.
- Each of these criteria types are displayed on a separate screen, where
they are completed by the user.
- There is no requirement that the user must complete all of these screens
at one sitting. They should be able to work on as little or as much as
they want at a time.
- once the user has completed all of the criteria, they hit perform some
sort of "I'm all done" action. No more edits after this.
Given all of that context, here's my situation:
I'm thinking I should be persisting the user input to the backend whenever
the user "completes/edits" a screen. Given the way the API and backend
database is currently designed, however, that means that I would be sending
up a potentially large-ish JSON object for even the smallest change. That
seems wrong.
What about a separate set of API methods, just for the UI, that will work
on a separate set of DB tables? These would be traditional RDBMS tables,
and would not be storing JSON. When the user hits that "I'm all done"
button, all of the data from this set of tables will be transformed into
the complete Wizard JSON object and stored in the original table.
Or...Should I be saving everything to local storage as I go, and require
the user to hit some sort of "Really, really save this" button to persist
everything to the backend? What if the user never hits that button, or
just heads home for the day before hitting it?
I guess I'm looking for advice on dealing with multi-screen forms in
Angular:
- frequent/granular retrieval/update of data?
- initial load of a complex object model that serves many screens, then
save at the end?
- hybrid approach?
Thanks in advance for any help.
Mark
--
You received this message because you are subscribed to the Google Groups
"AngularJS" 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/angular.
For more options, visit https://groups.google.com/d/optout.