[Feedback] NEW Perspective Alarm Status Table

That’s next.

4 Likes

How do you modify the header color?

Is it possible to open the Shelved Tab by default when opening a View?

Someone asked the same question for Vision Module a while ago:
https://forum.inductiveautomation.com/t/alarm-shelf-display-by-default/47787

No, there is not currently a way to use scripting to alter the selection of the active/shelved tabs of the Alarm Status Table.

This was asked in this thread back in Aug 2019 but doesn't look like it had an official response.

I’m looking to replicate the “Marquee Mode” that existed in the Vision alarm table

We are converting a Vision app to Perspective and the customer would still like to see a scrolling list of alarms in the header. How can this be achieved in perspective?

1 Like

Is there a way to detect when "shelve" is clicked/triggered?

What would be the best or recommended way to add a note on shelving? As options, I can think of: custom alarm properties (associated data), custom (tag) properties, and a memory tag (if it's an UDT).

No, we don't expose any sort of extra events (onShelve, onAck) on the Alarm Status Table. If you must add a note when the alarm is shelved, then you should avoid the built-in "Shelve" button and provide your own UI which uses the selection of the Table to determine what alarms are to be shelved, then provide your notes to the alarms and shelve them yourself.

2 Likes

Thanks @cmallonee

Which of the three ways of writing shelve notes is better? I would guess the client will ask for a history of shelve notes.
I have historian module installed. Although, I haven't tested it with strings.

I don't know if there is a fourth option, I only see the three stated above.

Off topic, soon I'll bump into this:

Edit #1:
Has anyone had any experience building this function?

I just realized that when the alarms are shelved by a script, it logs "gateway-script" instead of the current operator name. Is there a way to use the correct user for it?

Edit #1:
Perspective - Add comment to shelved alarms
"... hit a snag with using system.alarm.shelve whereby you cannot specify the user who shelved and always shows as being shelved by gateway-script in perspective"

There is a weird behavior that I can't complete describe regarding shelve function.

I can see a case where a shelved alarm is in the active list and in the shelved list at the same time. Has anyone experienced this?

Edit #1:
I'm using system.alarm.shelve() and system.alarm.getShelvedPaths().

In one case I "re-shelve" a shelved alarm and in the other case I unshelved and shelved the same alarm again.

The function is about extending the shelving time of an alarm without waiting for it to be active again.

Edit #2:
After some testing, I can replicate the case of having the same alarms in both lists. It happens with shelve/unshelve functions, not with the built-in function for shelving.

Edit #3:
I missed the isExpired() method. "Returns True if the shelve has expired for the alarm; otherwise returns False."

I would like an update to this as well. it's been over a year since this (re) question was asked.

Any solution?

I created my own "Marquee" alarm "template" and have it shown in the header of the perspective app. It will just cycle through the list of alarms and display the description.

image

Sounds good, I would just suggest adding a number and total to indciate the alarm # you're showing and the total that exist (although that could be gleaned from the number in the icon)

Yeah, the number on the Icon shows the total number of alarms.

I do like the idea of showing the current alarm number as it cycles - Thanks for the suggestion.

would like to know how you did that. Sound like a very usefull tool.:slight_smile:

state = ["ActiveUnacked", "ActiveAcked"]
i = system.tag.readBlocking('PathtoUDT/AlarmMarqeeIndex')[0].value
alarmIndex = len(system.alarm.queryStatus(source=['*enterYourFilter*'],state=state))-1 #Minus one because value is 0 based
if i == alarmIndex:
	x = 0
else:
	x = i + 1
currentAlarm = system.dataset.sort(system.alarm.queryStatus(source=['*enterYourFilter*'],state=state).getDataset(),3,False)
system.tag.writeBlocking(['PathtoUDT/AlarmMarquee','PathtoUDT/AlarmMarqeeIndex',
						'PathtoUDT/AlarmMarqueePriority','PathtoUDT/AlarmCount']
					, [currentAlarm.getValueAt(x,2),x,currentAlarm.getValueAt(x,5),alarmIndex+1])

Put the above script in a gateway timer event. I have the marquee updating every 3 seconds which seems to work fine for what we need.

Created a UDT to hold the tag values.

Then just create a graphic to display the Marquee text - I have the priority as well so the Alarm Bell Icon and Text color changes according to the 4 alarm priority colors we use.

I am sure there is a better way to do it - but this was my implementation.

3 Likes