forked from Mirrors/node-red-contrib-mi-devices
92 lines
4.0 KiB
HTML
92 lines
4.0 KiB
HTML
<script type="text/javascript">
|
|
RED.nodes.registerType('xiaomi-configurator', {
|
|
category: 'config',
|
|
defaults: {
|
|
name: {value: ""},
|
|
deviceList: {value:[{ sid:"a", desc:"b", model:"plug"}]},
|
|
key: {value: ""}
|
|
},
|
|
label: function () {
|
|
return this.name || "xiaomi-configurator";
|
|
},
|
|
oneditprepare: function() {
|
|
var node = this;
|
|
|
|
$("#node-config-input-devices").css('min-height','250px').css('min-width','450px').editableList({
|
|
addItem: function(container, i, device) {
|
|
if (!device.hasOwnProperty('model')) {
|
|
device.model = 'sensor_ht';
|
|
}
|
|
var row = $('<div/>').appendTo(container);
|
|
|
|
$('<label/>',{for:"node-config-input-sid-"+i, style:"margin-left: 3px; width: 30px;vertical-align:middle"}).text("sid").appendTo(row);
|
|
var sid = $('<input/>',{id:"node-config-input-sid-"+i,type:"text", style:"width:auto;vertical-align:top"}).appendTo(row);
|
|
|
|
$('<label/>',{for:"node-config-input-desc-"+i, style:"margin-left: 7px; width: 35px;vertical-align:middle"}).text("desc.").appendTo(row);
|
|
var desc = $('<input/>',{id:"node-config-input-desc-"+i, type:"text", style:"width:auto;vertical-align:top"}).appendTo(row);
|
|
|
|
var model = $('<select/>',{id:"node-config-input-model-"+i},{style:"width:120px; margin-left: 5px; text-align: center;"}).appendTo(row);
|
|
model.append($("<option></option>").val("sensor_ht").text("sensor_ht"));
|
|
model.append($("<option></option>").val("magnet").text("magnet"));
|
|
model.append($("<option></option>").val("plug").text("plug"));
|
|
model.append($("<option></option>").val("gateway").text("gateway"));
|
|
model.append($("<option></option>").val("switch").text("switch"));
|
|
model.append($("<option></option>").val("motion").text("motion"));
|
|
|
|
sid.val(device.sid);
|
|
desc.val(device.desc);
|
|
model.val(device.model);
|
|
|
|
},
|
|
removeItem: function(opt) {
|
|
},
|
|
sortItems: function(rules) {
|
|
},
|
|
sortable: true,
|
|
removable: true
|
|
});
|
|
|
|
for (var i=0;i<this.deviceList.length;i++) {
|
|
var device = this.deviceList[i];
|
|
$("#node-config-input-devices").editableList('addItem', device);
|
|
}
|
|
|
|
},
|
|
oneditsave: function() {
|
|
var devices = $("#node-config-input-devices").editableList('items');
|
|
var node = this;
|
|
var devicesArray = [];
|
|
devices.each(function(i) {
|
|
var deviceElement = $(this);
|
|
var sid = deviceElement.find("#node-config-input-sid-"+i).val();
|
|
var desc = deviceElement.find("#node-config-input-desc-"+i).val();
|
|
var model = deviceElement.find("#node-config-input-model-"+i).val();
|
|
var d = {};
|
|
d['sid']=sid;
|
|
d['desc']=desc;
|
|
d['model']=model;
|
|
devicesArray.push(d);
|
|
});
|
|
node.deviceList = devicesArray;
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<script type="text/x-red" data-template-name="xiaomi-configurator">
|
|
<div class="form-row">
|
|
<label for="node-config-input-name"><i class="icon-tag"></i> Name</label>
|
|
<input type="text" id="node-config-input-name" placeholder="Name">
|
|
</div>
|
|
<div class="form-row">
|
|
<label for="node-config-input-key"><i class="fa fa-ticket"></i> Key</label>
|
|
<input type="text" id="node-config-input-key" placeholder="Key">
|
|
</div>
|
|
<div class="form-row node-config-input-devices">
|
|
<ol id="node-config-input-devices"></ol>
|
|
</div>
|
|
</script>
|
|
|
|
<script type="text/x-red" data-help-name="xiaomi-configurator">
|
|
<p>Configuration node for a xiaomi gateway device</p>
|
|
</script>
|