Tabular views, unsurprisingly, present data in a tabular form. As an example, here is a screenshot of the hosts view...
Applications can create (and inject into the GUI) their own view(s) of tabular data. This tutorial will step you through the process...
Application Set Up
Setting up the application is exactly the same as for the Custom View tutorial, with one minor difference: the choice of archetype in step (2) should be uitab instead of ui:
Currently, the uitab archetype has not been implemented, so the following command will not work until this has been fixed.
(2) Overlay the UI additional components
Description of Template Files
The descriptions for both AppComponent and AppUiComponent remain the same as in the Custom View tutorial.
This class extends UiMessageHandler to implement code that handles events from the (client-side) sample application view. Salient features to note:
(1) implement createRequestHandlers() to provide request handler implementations for specific event types from our view.
(2) define SampleDataRequestHandler class to handle "sampleDataRequest" events from the client. Note that this class extends TableRequestHandler, which implements most of the functionality required to support the table data model:
Note the call to the super-constructor, which takes three arguments:
- request event identifier
- response event identifier
- "root" tag for data in response payload
To simplify coding (on the client side) the following convention is used for naming these entities:
- For a given table view, the table is identified by a "tag" (in this example, that tag is "sample")
request event identifier is derived as: <tag> + "DataRequest"
- response event identifier is derived as: <tag> + "DataResponse"
- "root" tag is derived as: <tag> + "s"
(2a) comment about defaultColumnId():
Typically, table rows have a unique value to identify the row (for example, in the Devices table it is the value of the Device.id() property). The default identifier for the column holding that value is "id". If you want to use a different column identifier for the unique row key, your class should override defaultColumnId(). For example: