UNPKG

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.

154 lines (137 loc) 7.97 kB
<script type="text/javascript" src="resources/node-red-contrib-knx-ultimate/htmlUtils.js"></script> <script type="text/javascript"> RED.nodes.registerType('knxUltimateLogger', { category: "KNX Ultimate", color: '#C7E9C0', defaults: { server: { type: "knxUltimate-config", required: true }, topic: { value: "" }, intervalCreateETSXML: { value: 15, required: true, validate: RED.validators.number() }, name: { value: "" }, autoStartTimerCreateETSXML: { value: true }, maxRowsInETSXML: { value: 0, required: true, validate: RED.validators.number() }, saveMode: { value: "emit" }, filePath: { value: "" }, autoStartTimerTelegramCounter: { value: false }, intervalTelegramCount: { value: 60, required: false, validate: RED.validators.number() } }, inputs: 1, outputs: 2, outputLabels: ["ETS Diag file", "Telegram Count"], icon: "node-logger-icon.svg", label: function () { return ((this.name || "KNX Logger") + " " + this.topic); }, paletteLabel: "KNX Logger", oneditprepare: function () { // Go to the help panel try { RED.sidebar.show("help"); } catch (error) { } $("#mlxETSFileAccordion").accordion({ header: "h3", heightStyle: "content", collapsible: true, active: false }); const nodeId = this.id; const toggleFilePath = () => { const isEmitSave = $("#node-input-saveMode").val() === "emit_save"; const $filePathRow = $("#knx-logger-filePath-row"); if (isEmitSave) { $filePathRow.show(); } else { $filePathRow.hide(); } }; $("#node-input-saveMode").on("change", toggleFilePath); const currentFilePath = this.filePath || ""; $("#node-input-filePath").val(currentFilePath); toggleFilePath(); $("#knx-logger-downloadButton").on("click", function (evt) { evt.preventDefault(); const filePathVal = $("#node-input-filePath").val() || ""; if (!filePathVal) { try { const msg = (RED._ && RED._("node-red-contrib-knx-ultimate/knxUltimateLogger:noFilePath")) || "File path is empty"; RED.notify(msg, "warning"); } catch (error) { alert("File path is empty"); } return; } const url = "knxUltimateLoggerDownload?nodeId=" + encodeURIComponent(nodeId) + "&_=" + new Date().getTime(); window.open(url, "_blank"); }); }, oneditsave: function () { // Return to the info tab try { RED.sidebar.show("info"); } catch (error) { } this.filePath = $("#node-input-filePath").val() || ""; } }) </script> <script type="text/html" data-template-name="knxUltimateLogger"> <div class="form-row"> <b><span data-i18n="knxUltimateLogger.title"></span></b> <br/><br/> <label for="node-input-server"><i class="fa fa-tag"></i> <span data-i18n="knxUltimateLogger.properties.node-input-server"></span> </label> <input type="text" id="node-input-server"> </div> <div class="form-row"> <label for="node-input-topic"><i class="fa fa-tasks"></i> <span data-i18n="knxUltimateLogger.properties.node-input-topic"></span></label> <input type="text" id="node-input-topic" data-i18n="[placeholder]knxUltimateLogger.properties.node-input-topic"> </div> <div class="form-row"> <label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="knxUltimateLogger.properties.node-input-name"></span> </label> <input type="text" id="node-input-name" data-i18n="[placeholder]knxUltimateLogger.properties.node-input-name" style="flex:1 1 240px; min-width:240px; max-width:240px;"> </div> <div id="mlxETSFileAccordion"> <h3><span data-i18n="knxUltimateLogger.properties.mlxETSFileAccordion"></span></h3> <div> <p> <div class="form-row"> <input type="checkbox" id="node-input-autoStartTimerCreateETSXML" style="display:inline-block; width:auto; vertical-align:top;"> <label style="width:auto" for="node-input-autoStartTimerCreateETSXML">&nbsp;&nbsp;<i class="fa fa-play-circle"></i> <span data-i18n="knxUltimateLogger.properties.node-input-autoStartTimerCreateETSXML"></span> </label> </div> <div class="form-row"> <label style="width:290px" for="node-input-saveMode"><i class="fa fa-save"></i> <span data-i18n="knxUltimateLogger.properties.node-input-saveMode"></span></label> <select style="width:100%" id="node-input-saveMode"> <option value="emit" data-i18n="knxUltimateLogger.selectlists.saveMode.emit"></option> <option value="emit_save" data-i18n="knxUltimateLogger.selectlists.saveMode.emit_save"></option> </select> </div> <div class="form-row" id="knx-logger-filePath-row"> <label style="width:290px" for="node-input-filePath"><i class="fa fa-file-text-o"></i> <span data-i18n="knxUltimateLogger.properties.node-input-filePath"></span></label> <input style="width:calc(100% - 80px)" type="text" id="node-input-filePath" data-i18n="[placeholder]knxUltimateLogger.placeholder.node-input-filePath"> <button type="button" class="red-ui-button" id="knx-logger-downloadButton" style="margin-left:6px;" title="Download"> <i class="fa fa-download"></i> </button> </div> <div class="form-row"> <label style="width:290px" for="node-input-intervalCreateETSXML"><i class="fa fa-clock-o"></i> <span data-i18n="knxUltimateLogger.properties.node-input-intervalCreateETSXML"></span></label> <input style="width:90px" type="number" id="node-input-intervalCreateETSXML"> </div> <div class="form-row"> <label style="width:290px" for="node-input-maxRowsInETSXML"><i class="fa fa-bars"></i> <span data-i18n="knxUltimateLogger.properties.node-input-maxRowsInETSXML"></span></label> <input style="width:90px" type="number" id="node-input-maxRowsInETSXML"> </div> </p> </div> <h3><span data-i18n="knxUltimateLogger.properties.telegramCounter"></span></h3> <div> <p> <div class="form-row"> <input type="checkbox" id="node-input-autoStartTimerTelegramCounter" style="display:inline-block; width:auto; vertical-align:top;"> <label style="width:auto" for="node-input-autoStartTimerTelegramCounter">&nbsp;&nbsp;<i class="fa fa-play-circle"></i> <span data-i18n="knxUltimateLogger.properties.node-input-autoStartTimerCreateETSXML"></span> </label> </div> <div class="form-row"> <label style="width:290px" for="node-input-intervalTelegramCount"><i class="fa fa-clock-o"></i> <span data-i18n="knxUltimateLogger.properties.node-input-intervalTelegramCount"></span></label> <input style="width:90px" type="number" id="node-input-intervalTelegramCount"> </div> </p> </div> </div> </script>