What is a layout
Layouts are tightly coupled to components. In fact, layouts are snapshots of components. They contain the necessary information to create templates of a given component, so it can be used by other users or in other profiles. Just like with profiles, a layout does not store transactional data. Instead, it stores the settings that make sense for that component. In that regard, it is very similar to a profile but with a different scope and context.
As is explained in greater depth in the grids section, the following elements are usually stored in a layout:
- Selection and order of the columns
- Column width
- Column filters
- Column sorting
In the components chapter, every component has a reference to the properties that are stored in the state. For example, the planning board stores additional information like the view, appointment height, calendar mode, etc.
Components that support layouts will typically contain the following four buttons in the top bar:
- : Load layouts in the component
- : Save the current layout
- : Save the layout as a new layout
- : Manage layouts
These all correspond to the standard features of the grids. Without having to recompose a grid every time you start Dime.Scheduler, you can save the configuration using the buttons provided in the toolbar.
The layout will be available to other instances of this component type as soon as the state is saved. If a user were to add a new component to a new user profile, the brand new layout would be ready for use. This implies that a layout can be used across profiles (and users), but remains for use for that particular component type only. For instance, when a user stores the state of an open tasks grid, the notifications grid will have no access to this layout. This makes sense as they are different components altogether.
The only time when user profiles are relevant to layouts is at profile initialization. Users can mark default layouts for their components in the profile in the management window:
When the profile is loaded, the default (and completely optional) layouts are applied as well. The component will fall back to the standard layout (that was defined by Dime) in case no default layout was specified. Just like the profiles, users can always modify the settings of the components (or even load other layouts) during the session.
It is also possible to load and apply layouts on the fly in the components. Using the button, a list of available layouts is displayed. The same principle applies here: only the layouts that were shared (either publicly or via a user group) or the ones that he created are accessible. This action has no effect on the default layout for that component; if the user reloaded this profile nothing would've happened. Again, this is just like the profiles with the only difference being the scope of the concept.