<?xml version='1.0' encoding='utf-8'?>
<PyFile xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<variable name="AlarmNotify" type="HMI_INT"/>
<variable name="SendAlarm" type="HMI_INT" onchange="TriggerAlarm"/>
<variable name="AlarmText" type="HMI_STRING" initial="'break time !'"/>
<variable name="AlarmStatus" type="HMI_STRING" initial="'alarm'"/>
from twisted.web.resource import Resource
import json, time, random, collections
def TriggerAlarm(changed_var_name):
new_entry = [time.time(), PLCGlobals.AlarmText, PLCGlobals.AlarmStatus, lastid]
AlarmIndex[lastid] = new_entry
PLCGlobals.AlarmNotify = random.randint(0, 4294967296)
class AlarmJsonResource(Resource):
def render_GET(self, request):
def render_POST(self, request):
newstr = request.content.getvalue()
newdata = json.loads(newstr)
range_feedback = newdata['range']
slider_position = newdata['position']
visible = newdata['visible']
options = newdata['options']
if action == "action_reset":
action, alarmid = options
if action == "onClick[acknowledge]":
AlarmIndex[int(alarmid)][2] = "ack"
answer = self.renderTable(range_feedback, slider_position, visible, extra)
janswer = json.dumps(answer)
def renderTable(self, old_range, old_position, visible, extra):
if len(extra) > 0 and extra[0] != "":
fAlarms = [alrm for alrm in Alarms if alrm[1].find(extra[0])!=-1]
delta = new_range - visible
new_position = 0 if delta <= 0 else delta if old_position > delta else old_position
new_visible = new_range if delta <= 0 else visible
for ts, text, status, alarmid in fAlarms[new_position:new_position + new_visible]:
"text": text, # TODO translate text
return new_range, new_position, visible_alarms
AddPathToSVGHMIServers(b"alarms", AlarmJsonResource)