from com.inductiveautomation.ignition.common.alarming.config.CommonAlarmProperties import EventTime priorityBGColors = {"Diagnostic":"#FFFFFF", "Low":"#7266B7", "Medium":"#F4B834", "High":"#DE7C33", "Critical":"#E22028"} priorityTextColors = {"Diagnostic":"#222222", "Low":"#FAFAFB", "Medium":"#FAFAFB", "High":"#FAFAFB", "Critical":"#FAFAFB"} def getTop3Alarms(): # import time # start= time.time() res= [] activeAlarms = system.alarm.queryStatus([], ["ActiveUnacked"], ["*"], [], []) sortedAlarms = system.dataset.toPyDataSet(system.dataset.sort(activeAlarms.getDataset(),3,False)) formatAlarms = [{'eventid':str(alm.EventId), "label":alm.get('label'), "dispPath":alm.getDisplayPathOrSource(), "eventtime":alm.getActiveData().get(EventTime), "priority":str(alm.getPriority())} for alm in activeAlarms] top3EventIDs = [alm["EventId"] for alm in sortedAlarms[:3]] for eid in top3EventIDs: for alm in formatAlarms: if alm["eventid"] == eid: res.append({"value":{"dispPath":alm["dispPath"],"label":alm["label"]}, "style":{"backgroundColor":priorityBGColors[alm["priority"]], "color":priorityTextColors[alm["priority"]]}}) break # system.perspective.print("alarm update duration %s"%(time.time()- start)) return res