UNPKG

node-red-contrib-xmihome

Version:

Node-RED nodes for controlling Xiaomi Mi Home devices using the xmihome library.

48 lines (47 loc) 3.37 kB
<script type="text/javascript"> var k=window.RED;function h(){let f=!$("#node-config-input-username").val(),b=!$("#node-config-input-password").val();return f==b}k.nodes.registerType("xmihome-config",{category:"config",defaults:{name:{value:""},debug:{value:!1},connectionType:{value:"auto"},_:{value:!0,validate:h}},credentials:{username:{type:"text"},password:{type:"password"},country:{type:"text"}},label:function(){return this.name||"XiaomiMiHome"},oneditprepare:function(){let f=this,b=$("#node-config-input-username, #node-config-input-password"),q=$("input, select, textarea").not(b),j;function g(){setTimeout(()=>{if(h())b.removeClass("input-error");else b.addClass("input-error")},10),f.changed=!0,k.editor.validateNode(f)}b.on("blur",g),b.on("input",function(){clearTimeout(j),j=setTimeout(g,200)}),q.on("change input blur",function(){setTimeout(()=>{if(!h())b.addClass("input-error")},200)}),g()},oneditsave:function(){$("#node-config-input-username, #node-config-input-password").removeClass("input-error")},oneditcancel:function(){$("#node-config-input-username, #node-config-input-password").removeClass("input-error")}}); </script> <script type="text/html" data-template-name="xmihome-config"> <div class="form-row"> <label for="node-config-input-name"><i class="fa fa-tag"></i> <span data-i18n="config.label.name"></span></label> <input type="text" id="node-config-input-name" data-i18n="[placeholder]config.placeholder.name" /> </div> <div class="form-row"> <label style="width:auto" for="node-config-input-debug"><i class="fa fa-bug"></i> <span data-i18n="config.label.debug"></span></label> <input type="checkbox" id="node-config-input-debug" style="display:inline-block; width:auto; vertical-align:top;" /> </div> <fieldset> <legend data-i18n="config.label.authentication"></legend> <div class="form-row"> <label for="node-config-input-username"><i class="fa fa-user"></i> <span data-i18n="config.label.username"></span></label> <input type="text" id="node-config-input-username" data-i18n="[placeholder]config.placeholder.username" /> </div> <div class="form-row"> <label for="node-config-input-password"><i class="fa fa-key"></i> <span data-i18n="config.label.password"></span></label> <input type="password" id="node-config-input-password" /> </div> <div class="form-row"> <label for="node-config-input-country"><i class="fa fa-globe"></i> <span data-i18n="config.label.country"></span></label> <select id="node-config-input-country" style="width: 70%"> <option value='sg'>sg</option> <option value='cn'>cn</option> <option value='ru'>ru</option> <option value='us'>us</option> <option value='tw'>tw</option> <option value='de'>de</option> </select> </div> <fieldset> <legend data-i18n="config.label.defaults"></legend> <div class="form-row"> <label for="node-config-input-connectionType"><i class="fa fa-plug"></i> <span data-i18n="config.label.connectionType"></span></label> <select id="node-config-input-connectionType" style="width: 70%"> <option value="auto" data-i18n="config.label.connAuto"></option> <option value="cloud" data-i18n="config.label.connCloud"></option> <option value="miio" data-i18n="config.label.connMiio"></option> <option value="bluetooth" data-i18n="config.label.connBluetooth"></option> </select> </div> </fieldset> </fieldset> </script>