You'll have to provide some more details for me.
Alarm List = tabular data
Map = geospatial 2D graphical data
So how would you envisage this 'display' to look?
Do you want a table embedded in the map? Do you want dots indicating the locations of alarms? Do you want a plane flying across the map carrying a banner which is a scrolling list of the items in the alarm list?
The embedded list, not 'really' possible... you can customise the tooltip, so you could put something like a table in the tooltip, but it would only display when hovering over the location that the tooltip is associated with.
You can have sites shown on the map with a colour indicating something about the alarms... like severity, or number of.. or however else you want to write the SQL to transform data -> colour / flashy-ness
You can have something of a combination of these... which is what I've done so far... sites coloured based on alarm severity, and tooltip which shows some additional alarm details (like highest severity label, and acknowledgement state). The tooltip itself doesn't seem well suited to large volumes of text, so I avoided trying to jam a whole list of alarms on a site in there.
Lol. Yea looking to display the location of the alarms. We have figured out how to display the location of alarms thru display on map but looking for how to make all alarms display on the map.
The way that I've done map displays is:
* CGroup (well CTemplateInstance really) for the sites is where the location is defined
* CGroup also has some properties for AlarmSeverity and AlarmState... this is like a rollup of all alarms under that particular Group, so it's normally enough information. Then I just match the colour of the Alarm Severity, using the CSeverity table and display the site symbol using that.
* The tooltip will then just show the AlarmSeverityDesc and AlarmStateDesc, possibly even getting down to the Ack/Unack details.. but normally not.
All of those items get defined in the user query associated with that map layer, and I'll have a different map layer for the different site types (Water / Sewer, or Pump Station / Tank / etc.. it really depends on how many variants there are of each, since there is a very low number of unique symbols available currently)
I suspect my exact query won't be of much help to you... but as requested
No warranty provided. It's got a few system specific items in it, and isn't a well polished example, there were a lot of nice ideas that got pulled out because of 'bugs' in the Geo SCADA Expert mapping display (where the help says that it supports CSS styles, but at the time it did not)
SELECT FULLNAME, OBJECTLINK, NAME || '<br/>'|| '<br/>Severity: ' || AlarmSeverityDesc || '<br/>State: ' || AlarmStateDesc || CASE WHEN LEVEL.CurrentValueFormatted = '' THEN '' ELSE COALESCE( '<br/>Level: ' || LEVEL.CurrentValueFormatted, '') END AS "TOOLTIP", GISLOCATION->LATITUDE, GISLOCATION->LONGITUDE, CASE WHEN AlarmState=4 THEN S.ColAlarmListUnacc WHEN AlarmState=2 THEN S.ColAlarmListAcc WHEN AlarmState=3 THEN S.ColAlarmListCleared ELSE CASE WHEN RUN.Running>1 THEN 255 + 255*256 + 255*256*256 ELSE 163 + 163*256 + 163*256*256 END END AS Foreground, 186 + 141*256 + 92*256*256 AS Background, CASE WHEN AlarmState=4 THEN S.FlashAlarmListUnacc WHEN AlarmState=2 THEN S.FlashAlarmListAcc WHEN AlarmState=3 THEN S.FlashAlarmListCleared ELSE FALSE END as Blink, LEVEL.CurrentValueAsReal As Level, AlarmState, AlarmSeverity, AlarmSetCount, AlarmAcceptedCount, AlarmClearedCount FROM CGROUP G LEFT OUTER JOIN ( SELECT ParentGroupId->ParentGroupId->ParentGroupId As "SiteId", MAX(CurrentValueAsInteger) AS Running FROM CDBPoint WHERE Name = 'Running' AND ParentGroupId->Name LIKE 'Pump %' GROUP BY "SiteId" ) AS RUN ON RUN."SiteId" = G.ID LEFT OUTER JOIN ( SELECT DISTINCT PARENTGROUPID->PARENTGROUPID->PARENTGROUPID AS "SiteId", CURRENTVALUEFORMATTED, CURRENTVALUEASREAL FROM CDBPOINT WHERE NAME = 'Level' AND ( PARENTGROUPID->NAME LIKE 'Wet Well%' ) ) AS LEVEL ON LEVEL."SiteId" = G.ID LEFT OUTER JOIN CSEVERITY AS S ON G.AlarmSeverity = S.Priority WHERE FullName LIKE 'Sewer.%' AND GISLocationSource=True ORDER BY AlarmSetCount ASC, AlarmAcceptedCount ASC, AlarmClearedCount ASC, Level ASC
This was only on a small system, I expect with hundreds/thousands of sites, the query performance may have been excessive.
Good reference Jesse.
It would be nice if the first example could be expanded to include the reference to the CSeverity table to get the real configured alarm severity colours etc.
This "<br>Highest_Severity:_" also seems a bit misleading, like it's suggesting the ' ' (space) character is not valid in the HTML string.
Discuss challenges in energy and automation with 30,000+ experts and peers.
Find answers in 10,000+ support articles to help solve your product and business challenges.
Find peer based solutions to your questions. Provide answers for fellow community members!