--- 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