<?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_BOOL" onchange="TriggerAlarm"/>
<variable name="AlarmText" type="HMI_STRING" initial="'POS'"/>
<variable name="AlarmStatus" type="HMI_STRING" initial="'alarm'"/>
from twisted.web.resource import Resource
import json, time, random
def TriggerAlarm(changed_var_name):
Alarms.append((time.time(), PLCGlobals.AlarmText, PLCGlobals.AlarmStatus))
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)
visible = newdata[u'visible']
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)
def renderTable(self, old_range, old_position, visible, *options):
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 in Alarms[new_position:new_position + new_visible]:
"text": text, # TODO translate text
return new_range, new_position, visible_alarms
svghmi_root.putChild("alarms", AlarmJsonResource())