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
HTML
<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>