Event Template Catalogue
The Event Template Catalogue javascript control (widget) allows you create a list of event templates which is filterable by both event and event template properties. For example, you can show a list of event templates filtered by running in a certain location, even though the location property only exists in the actual events that are created from the event templates. The control will find events running in that location, and return the event templates those events were created from.
This article will guide you through integrating a catalogue control into your webpage that will call the API and render event templates according to your configuration options, template, and CSS.
Contents
- Getting Started
- Code Editor Example
- Control Configuration
- Filtering
- Custom Templates
- Template Helpers
Getting Started
The following code block contains an example of all the elements necessary to create an Event Template Catalogue control on your webpage.
There is is quite a lot going on here as this control is one of our more complicated control types.
Based on the general getting started guide.
<div id="event-filter"></div> <div id="eventtemplate-filter"></div> <div id="catalogue-control"></div> <script src="//connect.arlocdn.net/jscontrols/1.0/init.js" charset="utf-8" defer="defer"></script> <script id="catalogue-control-template" type="text/html"> <%= Name %> <div class="nextrunning-<%= TemplateID %>"></div> </script> <script type='text/template' id='eventfilter-template'> <%= showFilter({filterCode: "traversablecategories", showCount: false}) %> <br /> <%= showFilter({filterCode: "locname", showCount: false}) %> </script> <script type='text/template' id='eventtemplatefilter-template'> <%= showFilter({filterCode: "advertisedpresenter", showCount: false}) %> </script> <script> document.addEventListener("arlojscontrolsloaded", function () { var catalogue = { moduleType: "EventTemplateCatalogue", targetElement: "#catalogue-control", template: "#catalogue-control-template", eventFilterControlId: "eventfilter", eventTemplateFilterControlId: "eventtemplatefilter" }; var eventFilter = { moduleType: "Filters", facetType: "Event", targetElement: "#event-filter", template: "#eventfilter-template", filterControlId: "eventfilter" }; var eventTemplateFilter = { moduleType: "Filters", facetType: "EventTemplate", targetElement: "#eventtemplate-filter", template: "#eventtemplatefilter-template", filterControlId: "eventtemplatefilter" }; new ArloWebControls().start({ "platformID": "demo.arlo.co", "modules": [catalogue, eventFilter, eventTemplateFilter] }); }); </script>
Explanation of example configuration above:
- Define a container for the event template catalogue control, and the two filter controls which will be assigned to it.
- Load the Arlo Web Controls application code onto the page
-
Define a configuration for an event template catalogue control (
moduleType: "EventTemplateCatalogue"
) that will display a list of event templates This control will be displayed in the DOM element with id#catalogue-control
and rendered using the template in the script element with id#catalogue-control-template
.
Note that the configuration also contains (optional)eventFilterControlId
andeventTemplateFilterControlId
options, that allow the user to assign filter controls to the catalogue list. -
Define configurations for event (
facetType: "Event"
) and event template (facetType: "EventTemplate"
) filter controls (moduleType: "Filters"
) that will be used to filter the list. These are separate controls and require their own templates and target elements. As stated above, both controls are optional. - Start the application, specifying a platform ID of "
demo
", and the Event Template Catalogue and Filter Control configurations.
Code Editor Example
For an explanation about the demo control code editors and how you can integrate these demos into your own page, click here.
Event Template Catalogue
See the Pen Event Template Index by Arlo Software Ltd. (arlosoftware) on CodePen.
Event Template Catalogue control configuration
To create an event template catalogue control, you should use a moduleType
value of "EventTemplateCatalogue".
Example: moduleType: "EventTemplateCatalogue"
The event template catalogue control has the following config options, as well as the shared configuration options.
Field | Type | Default | Description |
---|---|---|---|
eventFilterControlId | string |
Specify the ID of the filter control to use when filtering the list of event templates.
You should have a corresponding filter control configured with this value. Example: eventFilterControlId: "eventfilter"
|
|
eventTemplateFilterControlId | string |
Specify the ID of the filter control to use when filtering the list of event templates.
You should have a corresponding filter control configured with this value. Example: eventTemplateFilterControlId: "eventtemplatefilter"
|
|
maxNextRunningEvents | number | 1 |
The maximum number of next running events to display for each event template result. Example: maxNextRunningEvents: 3
|
resultCountTarget | string |
The control maintains a count of the total results for the current filter selection.
You can provide a target element on your page to display this count.
If you do not provide this configuration option, the count will not be displayed. The value for this option should be a CSS style id selector for the element to display the count in. Example: resultCountTarget: "#resultCount"
|
|
nextRunningEventTemplate | string/function | The template used to render the control. Can be a javascript function or the id of the script tag containing the template. See the overview for more information on custom templates. All fields available to the upcoming events list can be used in the template. The Count field can also be used in the template to display a count of the next running events. | |
nextRunningOnlineActivityTemplate | string/function | The template used to render the control. Can be a javascript function or the id of the script tag containing the template. See the overview for more information on custom templates. All fields available to the online activity list can be used in the template. | |
nextRunningUseRegisterLink | boolean | By default the next running dates will link through to the event template page, if this option is specified the next running dates will link directly to the register form. |
Table of customisable URLS
The following URL data fields can be customised. See custom urls for further information. You must define all customUrls whether they are being used in the template or not. The system needs this to generate the correct URLs for rich snippets.
Property Key | Affected event data field |
---|---|
eventtemplate | ViewUri |
presenter | Presenters - each presenter objects ViewUri |
Displaying the next running events for the results
In order to display next running events for this controls' results, you must provide a container in the template where they will be rendered once loaded. This container should be an HTML element with a class of 'nextrunning,' followed by a dash, followed by the template's ID. The following example demonstrates this.
<script id="catalogue-control-template" type="text/html"> <%= Name %> <div class="nextrunning-<%= TemplateID %>"></div> </script>
Catalogue - Full Configuration Example
var catalogueControl = { moduleType: "EventTemplateCatalogue", targetElement: "#catalogue-control", template: "#catalogue-control-template", eventFilterControlId: "eventfilter", eventTemplateFilterControlId: "eventtemplatefilter", maxNextRunningEvents: 2, resultCountTarget: "#result-count", callbacks: { onBeforeRender: function(eventTemplateData, jQuery){//Do something with eventTemplateData}, onShow: function(getTemplateListItemsFunction, jQuery){ //Do something with event template list item(s) elements } }, customUrls: { eventtemplate: "http://example.com/eventtemplatepage.html", venue: "http://example.com/venue.html", presenter: "http://example.com/presenter.html" } }; <script id="catalogue-control-template" type="text/html"> <%= Name %> </script>
Filtering
An important aspect of this control is that while it displays Event Templates items as its results, it can be filtered by both event and event template filter types.
When filtering by an event filter type, only event templates that have an event that matches the filters will show.
For example, if you filter by location, an event filter, then only event templates with an event running in that location will show.
To use filters of both types, you need to:
- Configure the control with
eventFilterControlId
andeventTemplateFilterControlId
values. -
Provide two filter controls, one for event filters and one for event template filters.
These controls should be configured with
filterControlId
values corresponding to those in the previous step.
Custom Templates
You can write a custom template for your control using HTML combined with the Underscore library templating system.. See the general template guide for more information.
Available template properties
From API
Field | Description |
---|---|
TemplateID | An integer value that uniquely identifies this resource within the platform. |
Code |
A string representing the short code used when referring to the template, up to 32 characters long. For example, MGMT101 .
|
Name | A string representing the name of this event, up to 128 characters long. |
Categories |
An array of structures representing leaf categories associated with this template.
Structure fields
|
AdvertisedDuration | A string representing the advertised duration of the template. |
AdvertisedPresenters |
An array of structures representing presenters associated with this template. The order of the records in the array represents the preferred display order of presenters for the template (if there are several).
If the template has no presenters, this field will be omitted.
Structure fields
|
BestAdvertisedOffers | An array of AdvertisedOffer structures representing the best generally available offers for the template and its events. |
Tags | An array of strings representing tags associated with this template. If the template has no tags, this field will be omitted. |
ViewUri | A string representing a URI where more information for this event can be found. This may be an Arlo page, or it may be a custom URI specified by the event organizer. |
RegisterInterestUri | The URL of the page where interest can be registered by individuals to run a new event at a different location and/or time. Interest submissions are recorded as Leads in the platform. This field is included only if recording of interest is enabled for the template. |
RegisterPrivateInterestUri | The URL of the page where interest can be registered by individuals to run an event at a private or onsite location (for internal staff training, for example). Interest submissions are recorded as Leads in the platform. This field is included only if recording of interest in running an event privately is enabled for the template. |
Generated fields
Field | Description |
---|---|
ContentFields | Creates an unordered list of all description content fields for this event template. |
Template Helpers
Field Helpers
Field helpers will manipulate the resource data that comes from the API making it easier to display the information you want in the way you want, without writing any complicated code.
Helper Function | Field(s) | Type | Description |
---|---|---|---|
contentField(fieldName) | FieldName | string |
Displays the content from the specified field.
Example: <%= contentField("Prerequisites") %>
|
formatAdvertisedOffers(config) | BestAdvertisedOffers | string |
Advertised offers is a collection of structures representing the offers (or prices) for the event.
This view helpers provides you with a means of choosing how to display this information.
It has many configuration options to offer full flexibility of the information displayed, but each option has sensible defaults
so you do not have to specify them all.
Example: <%= formatAdvertisedOffers({ showPriceWithTaxInclusive: true, showSingleOffer: false, showLabel: true, showCurrencyCode: true, showMessage: true, showTaxRate: true }) %>
|
formatCollection(collection, format, showLinks) | AdvertisedPresenters, Categories, Tags | collections |
Allows you to format an event field which is a collection of items. You can choose to show the items in these collections as links,
provided they have the associated ViewUri property used for generating the link. You achieve this by passing true as the third paramter of this function (showLinks).Formats
Example: <%= formatCollection(Categories, "ul", true) %>
|