I have a feature creation and edit tool which opens multiple forms (using multiple WFs) to allow users to simultaneously edit a handful of related features. In Web, the tool opens a dialog containing tabs with a panel>workflow component for each of four workflows.
I'm having a lot of difficulty getting this working nicely. I am relying on workflow.run and ui.activate commands to initialize and draw the forms asynchronously, but the drawing behavior is causing a couple of issues:
- Blinking. After the dialog opens, the forms' element .load events fire, the focused tab blinks around between the forms until the last one is draws; it appears as though each time a form element is updated that form then pops into focus. As I have several forms loading simultaneously, the user ends up popping around among the forms until they are all completely filled. I've tried to run the workflows with the dialog or the WF panels deactivated, but this prevents them from drawing at all. Is there a method to deal with this? Perhaps a way to hide the forms while they draw, or could I add some sort of transparent "loading" overlay on top of the dialog to indicate to users that they need to wait a second before the tool fully loads?
- Interoperability. On some elements' .change events I'd like to update elements in the sibling forms. Of course I can re-run the other forms with an input here, but I'd rather not a) repeat all that logic and b) pop the other forms into focus. I know that forms are bound to the app and can be accessed, at least somewhat, through the app state accessible using the operation viewer.get-current-layout. Could I perhaps bind to forms through the app and make updates to them that way, or any other way for that matter, or am I better off dropping this idea? Anyone done that before?