Cumulus template file
Introduction
A Cumulus Template File is the name given by Steve Loft to any files that contain web tags and need to be processed before they actually include values.
When Cumulus processes these files it generates output files where the tags/tokens have been replaced by values.
Consequently, a single template will actually generate a different file each time Cumulus processes that template because the part of the content that was web tags is now populated with text (values, times, dates, etc.) and, as these values change, a newly generated file is different to the previous generated file.
Original cumulus software
Template files provided
There is one template that is held within the legacy Cumulus code, this generates the default Realtime.txt. It is possible to generate different content
The other template files are always installed into a sub-folder: cumulus\web\originals (except for very early versions). As its name suggests, "web" sub-folder holds templates that generate web pages for Cumulus to then upload to your web server.
When you run the install package (see Setup, you can choose whether these web template files are also installed into the parent folder cumulus\web.
- This allows you to use only some of the templates (you only include the ones you want the software to process, and delete the others).
- It also means if you have modified the provided template files (keeping original names), the installation process will not overwrite them and you can continue to have the software process your modifed template files.
Steve Loft made it clear that the 'web template files his wife (Beth) designed, were their files, and only included in his software as examples to help you devise your own template files. He said, we never thought that people would use our files without modification. Each of these templates, after processing becomes a fully working web page that can optionally be uploaded to your web server.
To help people using the legacy software, there is more about processing of files on the Customised templates page, but think of a template as containing text that Cumulus copies from the template file to the web page it is constructing. The processing process is basically a parse, each time Cumulus finds a web tag complete with any parameters it needs, Cumulus software looks up the value that it will use to replace that web tag in the web page it is creating before moving on through the text.
The example web templates provided by Cumulus insert a "T" at the end of the intended web page name before the extension (.htm or .html), so that the template files and generated web pages cannot be confused.
You may find the information on the FAQ page helps answer some of your questions.
Template files you add
The page dealing with the customisation of web templates is Customised templates, and it includes a diagram that explains how file names are affected by your choices in some of the settings for file transfer.
People writing their own templates can use any file extension (some popular choices are "tmpl" or "cum" to indicate they are Cumulus templates). To ensure that the template files and generated web pages cannot be confused, Steve Loft realised the "T" notation used by the provided templates may not be part of the name you choose, hence the generated file will have "tmp" added to the end of the template name you selected, just to remind you of its temporary existance until the source template is processed again. That "tmp" is removed when the final web page is stored on your web server.
Using web tags in templates for creating HTML pages
- You can create a template file that has a structure of HTML elements with Cumulus web tags to represent the information you want included.
- If you ask Cumulus to process that template file, it will create a HTML page from the template, and during that file creation replace the tag with the current value of the item the tag represents.
- You also need to tell Cumulus that the resulting HTML file is to be uploaded to the internet (or copied to a local web server).
Using web tags in scripts
- You can also use the tags within script, this might be a PHP script, or JavaScript either embedded in HTML, or in external files, to transfer the values (or the result of calculations based on those values) to your web server for further processing.
- As JavaScript can not understand a real number that has the integer and decimal parts separated by a comma, but your computer may be set to use that representation in standard tags, there are special versions of many tags to use in script - see tags with commas removed section.
- Note that if a PHP or JavaScript file contains any Cumulus web tags then you must ask Cumulus to process the script file.
- JavaScript processing code can be embedded in a template that is already being processed into HTML. (This technique has been used in the standard 'monthlyrecordT.htm' template).
- Alternatively embed a bit of JavaScript assignment code in HTML, that is already been processed, to convert the tags to a collection of string variables and use those variable names in any external script called from the HTML file. (This technique has been used in the standard 'gaugesT.htm' template).
- To use the value from a tag as an integer in JavaScript assigning code you need to use a
integer_variable_name=parseInt(string_variable_name,10)
type conversion
- To use a value from a tag as a floating point number in JavaScript you need to use
parseFloat(string_variable_name)
otherwise you will find any attempt to add something to it results in a concatenation because JavaScript uses "+" for two purposes and concatenation takes precedence over arithmetic adding! - Alternatively, in most script languages, apply ' * 1', i.e. multiply by one, to implicitly convert the tag from string to base 10 number.
- Another alternative is to add zero when a web tag is being assigned to a script variable, this is frequently used in scripts where the web tag being used is not available in all versions of Cumulus, because Cumulus does not implement the concept of null values and often zero is used when a true value is not available because that sensor is not installed for example. Adding 0 means that if the web tag is not recognised, the script is still able to give a variable in its language some value and won't fail because that variable is undefined. If the web tag is available, adding zero does not prevent the true value of that web tag being assigned to the variable.
Cumulus MX
All the template files in the latest MX release (at the time of writing) create JavaScript Object Notation (.json) files.
Template files you can customise
These templates use the "T" notation and are found in CumulusMX/web sub-folder.
- realtimegaugesT.txt is included in all releases, it contains the web tags used to produce the latest available values for the "gauges.htm" web page to plot, and is processed at whatever real time interval you have programmed. There are some settings that determine whether it is processed and whether the resulting data file is uploaded.
- websitedataT.json is included in releases from 3.10.1, it is a large file, and probably contains more than you need for your web site. Obviously, as this file is transferred to your web server on every standard update period, it is best to upload only what you need. After all you may choose to use only a sub-set of the default web pages provided with MX. The template file can be edited to exclude any derivatives that you don't want, and/or to add any extras you want.
Early MX releases
These had modified versions of the original Beth Loft web templates in the CumulusMX/web sub-folder. These templates use the "T" notation as with the legacy software, but there is no "originals" sub-folder.
Internal template files
The vast majority of the JavaScript Object Notation files uploaded by MX are generated in the code, and so cannot be customised, although later releases have additional settings that give you control over which are generated and which are uploaded.
One-off uploads
These templates are found in CumulusMX/web sub-folder:
- availabledata.json
- graphconfig.json
You upload them once if you have the MX default web pages on your web server, as they tell those web pages what settings you have enabled.
Internal api
The admin interface relies on .json files transferred via the application program interface (api), again these are generated within the code and cannot be modified, although scroll up on the linked Wiki page to find out how you can write customised api calls.