Frequently asked questions
This page answers common questions about creating Profinity dashboards in a sentence or two and links to the page that covers each topic in full.
General questions
- What is a Profinity dashboard? A Profinity dashboard is a user interface that you build in the Visual Editor and that Profinity stores as a YAML file. Its components show tag values, such as CAN signals, component properties and historical data, and its actions and toggles control the system.
- How do I create a dashboard? Add a Custom Component to the profile, or open a component that already has a dashboard, then open the Visual Editor. The steps are in Build a dashboard in the Visual Editor. A CAN database (DBC) file is only needed when the component needs to publish CAN signals as tags. See Where dashboards are used. For adding the component, refer to Using a Custom Component.
- Where do I put my dashboard YAML file? The Visual Editor creates and saves the dashboard file for you, and its YAML tab shows the contents.
The file is stored in the
dashboardsdirectory of the profile, or in the folder of the component, as described in Profiles. - Can I use existing dashboards as templates? Yes. Copy the YAML of any existing dashboard and modify the copy, as described in Copy a dashboard as a template.
- Where do I put images, styles, and content files? Store them in these folders of the profile. For more detail, refer to Store dashboard files in a profile.
- Images go in
imagesand are referenced by filename only. - Custom CSS goes in a file named
profile.cssinstyles. - HTML snippets go in
content.
- Images go in
Component and layout questions
- How do I display a simple value? Use a
readoutcomponent, as in the Readouts reference example. - How do I show multiple related values? Use a
pillcomponent, which groups values beside an icon, as in the starter template and the Pill reference example. - How do I create a chart? Use a
chartcomponent whose binding setsseriesMode: timeSerieswith astartandstopwindow. For examples, refer to Time series and the Charts reference example. - How do I show status indicators? Use a
lampscomponent, and bind itsenabledorcolortarget to a tag, as in Conditional styling. - How do I organise components into sections? Use
rowandgroupto arrange components,panelsfor titled panels, andaccordionfor collapsible sections, as described in Core elements. - How do I arrange components horizontally? Set
direction: horizontalon aroworgroup, as shown in Layout directions. - How do I show or hide sections conditionally? Bind the
visibletarget of a readout, tab, accordion, or footer, or use anaccordionfor sections that users open themselves. Refer to Show or hide a component.
Data binding questions
- How do I show a value on a dashboard? Bind the component to a tag.
Find the tag in the Tag Explorer and put its path in the
sourceof the binding. The tag for a CAN signal has the formDBC/MessageName/SignalName, as described in Data binding. - How does a binding refer to the component that owns the dashboard? A source that starts with a name, such as
DBC/...orProperties/..., is relative to the component that owns the dashboard. The same dashboard therefore works for any component that has the same tags. A source that starts with/names a tag in another component. Refer to Binding source paths. - How do I show historical data? Set
startandstopon a series binding withseriesMode: timeSeries. Older values come from the designated historian, which needs data logging to be enabled, as described in Live and past data. AddaggregationWindowandaggregationFunctionto aggregate the older values into intervals. - How do I view a dashboard at a past time? Select View at a time in the title bar, when the profile has a designated historian. Refer to View a dashboard at a past time.
- How do I convert data types or scale values? Use
toTypeto convert a type, andgainandoffsetto scale a value, as described under Type conversion and Scaling and offset.
Troubleshooting questions
| What you see | Cause | What to do |
|---|---|---|
| The dashboard does not load | The dashboard YAML fails validation against the schema. | Open it in the Visual Editor and read the entries under Schema validation issues. |
| Data is not updating, or a chart is blank | The source differs from the path of a tag, the tag has no current value, or a chart binding lacks seriesMode: timeSeries. |
Check that the source matches the path of a tag in the Tag Explorer, that the tag has a current value, and that a chart binding sets seriesMode: timeSeries. Refer to Data not updating and Charts not rendering. |
| Images do not load | The file is not being found. | Refer to the Image does not appear row in Component-specific troubleshooting. |
Advanced questions
- How do I create an interactive image? Use the
imagecomponent with regions, icons, and data values, as in the Image reference example. - How do I use the
htmlcomponent? Use thehtmlcomponent, as in the HTML reference example, and note the elements that the HTML sanitiser removes, which are listed in Store dashboard files in a profile. - How do I organise a large dashboard, improve performance or make it reusable? Keep the main dashboard to key metrics, place detail in an
accordionor in tabs, and group related components withgrouporpanel. SetrefreshInterval(in milliseconds, minimum 1000) on charts that do not need live updates. Use relative tag paths so that one dashboard fits every component with the same tags, and reference profile assets by filename only.
Further help
The Component reference describes each component, the Motor controller dashboard example holds a working dashboard, and Troubleshooting guide covers common problems. For anything else, contact Prohelion through the Prohelion website.