Templates are a quick way of reusing the same layouts between different components and even projects. To accommodate this process imola introduces a simple template engine.
Templates can be created via
They are collections of arguments that can be passed to a
In practice this means they share all the properties of those arguments, including:
It is important to note that templates require a name and a type.
The name is simply an identifier for the template (useful later for registering templates) and the type defines what type of functions it can be used for (
Trying to apply a template of the wrong type to a
panel or page
function is not possible.
<- gridTemplate("myareas", "grid", mytemplate areas = list( default = c( "area1 area1 area1", "area2 area3 area3", "area2 area3 area3" ),xs = c( "area1", "area2", "area3" ) ),gap = "20px" )
We can then use this template object as a value for the template argument in grid panels or pages:
#in ui.R gridPanel( id = "somePanel" template = mytemplate area1 = div("area 1 content"), area2 = div("area 2 content"), area3 = div("area 3 content") )
Registered templates are templates that are either bundled with imola, or added to the global template list by using
registerTemplate() on a template object.
You can view all registered templates by using
By registering a template you are making it available outside of the scope where it is created, meaning it will be available to use even if the object itself was created somewhere else.
This approach allows us to create and register templates before they are needed, making them easier to bundle and manage when a lot of templates are needed.
#in global.R <- gridTemplate("myareas", "grid", mytemplate areas = list( default = c( "area1 area1 area1", "area2 area3 area3", "area2 area3 area3" ),xs = c( "area1", "area2", "area3" ) ),gap = "20px" ) # register it globally registerTemplate(mytemplate)
registerTemplate() on a
gridTemplate() object adds that template available to use in any
panel page directly by its
#in ui.R gridPanel( id = "somePanel" template = "myareas" area1 = div("area 1 content"), area2 = div("area 2 content"), area3 = div("area 3 content") )
If needed you can also remove a template from the global list using
# unregister a template unregisterTemplate("myareas", "grid")
Registered templates can also be turned back into a template object using
getTemplate(). This object can then be used and if created with
By default imola also includes some ready to use templates. Similar to manually registered templates these are also listed under
These can be used just like registered templates, with the difference that they do not require manually registering them:
#in ui.R gridPanel( template = "header-sidebar-right" header = div("header"), content = div("content"), sidebar = div("sidebar") )
For a demo on all templates bundled with imola, click here
It is also possible to import and export template objects for future usage in different projects. In this case you can make use of
exportTemplate() allows you to export a template object into a specific file.
This file will contain all the necessary information to rebuild the template, even in a different project, and can be turned back into a template object using