Is there any way to retrieve the number of alarms currently being shown in a perspective alarm status table? I have a simple alarm banner in a dock, which has no filtering (and no ability for the user to filter) - it just shows all the alarms for the relevant area based on a source filter passed in at runtime. I would like to set up an event script to close the alarm dock when the number of alarms shown in it goes from > 0 to 0.
I’ve made it work by setting up a custom property which uses system.alarm.queryStatus and gets all the parameters for the query from the table, but I’d like to think there’s an easier way, since the alarm status table tells me “n active alarms” in the header - but I can’t find anywhere in the properties that makes that value available to me.
Ah, so I have to enable it. I see that the doc you linked warns of a performance decline when enabling this property. Any developers here able to give a little context as to how large a performance hit we’re talking about? What would be the more significant performance impact, enabling that property, or running the script below every time the “Active and Unacknowledged Alarms Count” tag from the gateway system tags changes?
#determine which alarm priorities to count, based on what is being shown in the alarm table
filteredPriorities = self.getChild("root").getChild("AlarmStatusTable").props.filters.active.priorities
priorities = []
for key, value in filteredPriorities.items():
if value: priorities.append(key)
#determine which alarm states to count, based on what is being shown in the alarm table
filteredStates = self.getChild("root").getChild("AlarmStatusTable").props.filters.active.states
states = []
for key, value in filteredStates.items():
if value: states.append(key)
#determine with alarm sources to query, based on what is being shown in the alarm table
sources = self.getChild("root").getChild("AlarmStatusTable").props.filters.active.conditions.source
#query alarms
alarmStatusInfo = system.alarm.queryStatus(priority=priorities, state=states, source=sources)
return len(alarmStatusInfo)
There’s probably a larger performance hit by calling system.alarm.queryStatus for every client that’s open than there is by writing the alarm info to that property. I guess it depends how many alarms you have active at a time