A form in an enterprise application is rarely one table. It is a tab that depends on two others, a filter the user types into, and a server-side rule that runs when something changes. These releases, spread over two years, gave the form definition those powers without code in the client.
Relationships
- Several parents A tab can observe any number of parent tabs. Only subscriptions with a selected row contribute, and their conditions are joined with AND.
- Query fields A tab can render filter inputs inside the form, so the user queries where they work.
- Events to the server A client-side script dispatches a named event that runs server-side JavaScript in the cursor's own context, with its security and its transaction.
Layout
- Screen size A form declares automatic, small, medium or large at 400, 800 and 1,200 pixels; sidebar row-link modes and a two-column aside style follow.
- Fill the height A tab height of minus one fills the remaining band; one grid measured 705 pixels where its container had given it 53.
- Hotkeys and scripts Keyboard navigation across tabs, box resizes batched in one transaction, and script tabs that render JSON, Python, Groovy and 4GL.
Each of these is one attribute in the form definition. The alternative is a page of client code per screen, which is what they replace.