node-red-contrib-knx-ultimate
Version:
Control your KNX and KNX Secure intallation via Node-Red! A bunch of KNX nodes, with integrated Philips HUE control and ETS group address importer. Easy to use and highly configurable.
127 lines (107 loc) • 5.13 kB
HTML
<script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/htmlUtils.js"></script>
<script type="text/javascript">
RED.nodes.registerType('knxUltimateGlobalContext', {
category: "KNX Ultimate",
color: '#C7E9C0',
defaults: {
//buttonState: {value: true},
server: { type: "knxUltimate-config", required: true },
name: { value: "KNXGlobalContext", validate: RED.validators.regex(/^[a-zA-Z]+$/) },
exposeAsVariable: { value: "exposeAsVariableREADWRITE", required: false },
writeExecutionInterval: { value: 1000 },
contextStorage: { value: "" }
},
inputs: 0,
outputs: 0,
icon: "node-knx-icon.svg",
label: function () {
return (this.name);
},
paletteLabel: "KNX Global Context",
// button: {
// enabled: function() {
// // return whether or not the button is enabled, based on the current
// // configuration of the node
// return !this.changed
// },
// visible: function() {
// // return whether or not the button is visible, based on the current
// // configuration of the node
// return this.hasButton
// },
// //toggle: "buttonState",
// onclick: function() {}
// },
oneditprepare: function () {
// Go to the help panel
try {
RED.sidebar.show("help");
} catch (error) { }
},
oneditsave: function () {
// Return to the info tab
try {
RED.sidebar.show("info");
} catch (error) { }
},
oneditcancel: function () {
// Return to the info tab
try {
RED.sidebar.show("info");
} catch (error) { }
}
})
</script>
<script type="text/html" data-template-name="knxUltimateGlobalContext">
<div class="form-row">
<b><span data-i18n="knxUltimateGlobalContext.title"></span></b>
<br />
<div class="form-tips" style="margin-top: 11px;background-color:#FFEEEE;text-align:center">
<b><span data-i18n="knxUltimateGlobalContext.advanced.warning"></span></b>
</div>
<br />
<label for="node-input-server">
<img
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAKnRFWHRDcmVhdGlvbiBUaW1lAEZyIDYgQXVnIDIwMTAgMjE6NTI6MTkgKzAxMDD84aS8AAAAB3RJTUUH3gYYCicNV+4WIQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAARnQU1BAACxjwv8YQUAAACUSURBVHjaY2CgFZg5c+Z/ZEyWAZ8+f/6/ZsWs/xoamqMGkGrA6Wla/1+fVARjEBuGsSoGmY4eZSCNL59d/g8DIDbIAHR14OgFGQByKjIGKX5+6/T///8gGMQGiV1+/B0Fg70GIkD+RMYgxf/O5/7//2MSmAZhkBi6OrgB6Bg5DGB4ajr3f2xqsYYLSDE2THJUDg0AAAqyDVd4tp4YAAAAAElFTkSuQmCC"></img>
<span data-i18n="knxUltimateGlobalContext.advanced.node-input-server"></span>
</label>
<input type="text" id="node-input-server" />
</div>
<div class="form-row">
<label for="node-input-name" style="width:60%;">
<i class="fa fa-tag"></i>
<span data-i18n="knxUltimateGlobalContext.node-input-name"></span>
</label>
<input style="width:35%;" type="text" id="node-input-name" data-i18n="[placeholder]knxUltimateGlobalContext.node-input-name" />
</div>
<div class="form-row">
<label for="node-input-exposeAsVariable" style="width:60%;">
<i class="fa fa-link"></i>
<span data-i18n="knxUltimateGlobalContext.advanced.exposeAsVariable"></span>
</label>
<select id="node-input-exposeAsVariable" style="width:35%;">
<option value="exposeAsVariableNO" data-i18n="knxUltimateGlobalContext.advanced.exposeAsVariableNO"></option>
<option value="exposeAsVariableREADONLY" data-i18n="knxUltimateGlobalContext.advanced.exposeAsVariableREADONLY"></option>
<option value="exposeAsVariableREADWRITE" data-i18n="knxUltimateGlobalContext.advanced.exposeAsVariableREADWRITE"></option>
</select>
</div>
<div class="form-row">
<label for="node-input-writeExecutionInterval" style="width:60%;">
<i class="fa fa-link"></i>
<span data-i18n="knxUltimateGlobalContext.advanced.writeExecutionInterval"></span>
</label>
<select id="node-input-writeExecutionInterval" style="width:35%;">
<option value=250 data-i18n="knxUltimateGlobalContext.interval_250ms"></option>
<option value=500 data-i18n="knxUltimateGlobalContext.interval_500ms"></option>
<option value=1000 data-i18n="knxUltimateGlobalContext.interval_1000ms_default"></option>
<option value=1500 data-i18n="knxUltimateGlobalContext.interval_1500ms"></option>
<option value=2000 data-i18n="knxUltimateGlobalContext.interval_2000ms"></option>
</select>
</div>
<div class="form-row">
<label for="node-input-contextStorage" style="width:60%;">
<i class="fa fa-tag"></i> Context storage
</label>
<input style="width:35%;" type="text" id="node-input-contextStorage" placeholder="Optional context storage name" />
</div>
</script>