tests/svghmi/py_ext_0@py_ext/pyfile.xml
branchsvghmi
changeset 3048 d46d545ff7b7
parent 3046 d1bb0c09e412
child 3065 c369a742443d
--- a/tests/svghmi/py_ext_0@py_ext/pyfile.xml	Fri Aug 28 11:31:18 2020 +0200
+++ b/tests/svghmi/py_ext_0@py_ext/pyfile.xml	Fri Aug 28 15:29:35 2020 +0200
@@ -9,13 +9,18 @@
   <globals>
     <xhtml:p><![CDATA[
 from twisted.web.resource import Resource
-import json, time, random
+import json, time, random, collections
 
 Alarms = []
+AlarmIndex = {}
+lastid = 0
 
 def TriggerAlarm(changed_var_name):
-    global Alarms
-    Alarms.append((time.time(), PLCGlobals.AlarmText, PLCGlobals.AlarmStatus))
+    global Alarms, lastid
+    new_entry = [time.time(), PLCGlobals.AlarmText, PLCGlobals.AlarmStatus, lastid]
+    Alarms.append(new_entry)
+    AlarmIndex[lastid] = new_entry
+    lastid = lastid + 1
     PLCGlobals.AlarmNotify = random.randint(0, 4294967296)
 
 class AlarmJsonResource(Resource):
@@ -25,16 +30,21 @@
     def render_POST(self, request):
         newstr = request.content.getvalue()
         newdata = json.loads(newstr)
-        print newdata
         vars = newdata[u'vars']
         args = newdata[u'args']
         visible = newdata[u'visible']
+        options = newdata[u'options']
+
+        if len(options) == 2 :
+            action, alarmid = options
+            if action == "onClick[acknowledge]":
+                AlarmIndex[int(alarmid)][2] = "ack"
+
         svars = (vars + [0,0])[:3]
         range_feedback = svars[1]
         slider_position = svars[2]
         answer = self.renderTable(range_feedback, slider_position, visible, *(args+svars[3:]))
         janswer = json.dumps(answer)
-        print janswer
         return janswer
 
     def renderTable(self, old_range, old_position, visible, *options):
@@ -44,11 +54,12 @@
         new_visible = new_range if delta <= 0 else visible
         
         visible_alarms = []
-        for ts, text, status in Alarms[new_position:new_position + new_visible]:
+        for ts, text, status, alarmid in Alarms[new_position:new_position + new_visible]:
             visible_alarms.append({
                 "time": time.ctime(ts),
                 "text": text, # TODO translate text
-                "status": status
+                "status": status,
+                "alarmid": alarmid
             })
 
         return new_range, new_position, visible_alarms