Define alternative ways of viewing data with deep customization capabilities to improve user experience.
The Special Renderings pattern provides mechanisms that simplify the process of developing new controls, while providing Genio users with more customization options over them. Special Renderings are available in the context of menu lists, form table lists, or, in some cases, simple form fields.
The most significant improvement of the Special Renderings pattern over Custom Controls is its capability to customize the controls. Previously, the Genio user lacked accessible customization methods through Custom Controls, which resulted in the need for manual coding, ultimately leading to impractical and undesirable outcomes.
Special Renderings introduce a solution to this issue through the implementation of special rendering variables. These variables can be defined in the XML specification file and are made available within Genio for customization purposes.
Mapping variables facilitate the mapping of table columns to specific display templates within the rendering. For example, by using the variable $card.title with the value PERSO.NAME, the column containing a person's name can be mapped to the title of a card.
Configuration variables serve the purpose of customizing the appearance and behavior of the generated control. These variables allow users to modify aspects such as text color, background color, and other relevant configuration settings to achieve the desired visual presentation.
Groups of variables allow for the definition of a set of variables that are applied together. For each special rendering type, a set of predefined variable groups is provided, and each group comes with a predefined set of variables.
Users can create multiple instances of these predefined groups and associate them with their special rendering configurations. For example, a group with the name "external-layer" is composed of multiple variables that collectively define an "external layer."
To create an instance of a variable group in Genio, follow these steps:
To associate variables with specific group instances in Genio, follow these steps:
Note: The field "Group" is only visible for variables that are part of a variable group.
When working with Special Renderings, one noticeable advantage is the ability to specify multiple alternative view modes for the same table list or form field. Moreover, you have the flexibility to configure which view modes are displayed by default and the order in which they appear.
While Special Renderings provide the freedom to configure multiple renderings and their display settings, it may not always be desirable to grant the application user complete control over these options. In some cases, the Genio developer might intend to keep the original view mode hidden at all times or limit certain interaction modes. To address this, Genio provides an option that allows the developer to specify the desired interaction mode for that particular page:
The exclusive view mode is designed to facilitate the navigation between the list and an alternative view mode (e.g., Cards). In order to minimize the number of clicks required to navigate between view modes, while making explicit to the user which view mode is currently in use, the following mechanism was implemented (located at the top right corner of a page that uses Special Renderings):
It may be convenient to display, at once, more than one form of representing the same information. To address that need, the Special Renderer in total control mode keeps the list on the page and places the new rendering right next to it (Custom Controls replace the list on the page).
The order in which these elements are displayed initially follows the definition in Genio, and later answers to the user's preference. In addition to the order, the user may also toggle the visibility of each control of the page. These actions are achieved by clicking on the "View options" icon, located at the top right corner of the page (next to the "Change display of the list" icon).
Note: only logged in users are able to set the page layout according to their preference (this feature is not available to guests).
Special Renderings can also be definied in global lists, as well as the corresponding type of user interaction (no control, control in exclusive mode or total control). Once a menu has a global list associated with it, the definition of the special rendering of the global list is used, ignoring anything that was previously defined locally.
When developing new Special Renderings, it's important to note that the process is entirely separate from the development of Genio. To initiate the development of a new Special Rendering, the first step involves specifying its structure. The structure should include the following elements:
To define the structure, an XML file specifically created for this purpose is required. This XML file acts as a protocol that Genio uses to interpret and handle the new control without requiring any code updates. It offers a flexible means of expanding and introducing new Special Renderings. However, it's important to note that to extend the protocol, code updates are necessary.
Below are some examples and a template for the XML file structure:
<CustomControl>
<Identifier>YourIdentifier</Identifier>
<Name BASE="por">
<por>Cartões</por>
<fre>Cartes</fre>
<eng>Cards</eng>
</Name>
<Variables>
<!-- Define your variables here -->
</Variables>
<Subtypes>
<!-- Define your subtypes here -->
</Subtypes>
</CustomControl>
The identification of a Special Rendering is performed using:
Note: the identifier is for internal use only. In order to fully enable translation of the Special Rendering name, it is required to add the translation of the name to StringsHardcoded.xml.
Variables provided by the Special Rendering can be specified as follows:
Common Attributes:
true
or false
).true
or false
).These attributes are applicable to both mapping variables and style variables. They define fundamental characteristics of the variables that can be customized within the Special Rendering.
Attributes for Style Variables Only:
true
or false
).These attributes are specific to style variables. They provide additional customization options for controlling the appearance and style of the Special Rendering.
Please note that the "CanBeMapped" attribute is only relevant for style variables, as mapping variables are inherently associated with database fields.
Finally, the subtypes provided by the Special Rendering can be specified as follows:
Note: it is not mandatory to specificy subtypes. If no subtype is specified, Genio will consider the special rendering as a single control without variations, and present all the variables specified for it.
A complete template to start developing a new special rendering can be downloaded here.
The complete changelog of all notable changes made to Special Renderings. Descriptions are written as New: or Fixed: for changes that are not considered a maintenance release.