99 lines
4.5 KiB
HTML
99 lines
4.5 KiB
HTML
<script type="text/javascript">
|
|
RED.nodes.registerType('xiaomi-configurator', {
|
|
category: 'config',
|
|
defaults: {
|
|
name: {value: ""},
|
|
deviceList: {value:[{ sid:"", desc:"", model:"plug"}]},
|
|
key: {value: ""}
|
|
},
|
|
label: function () {
|
|
return this.name || "xiaomi-configurator";
|
|
},
|
|
oneditprepare: function() {
|
|
var node = this;
|
|
|
|
var tw_sensor_ht = {value:"sensor_ht", label:"sensor ht", icon:"icons/sensor-ht-tw-icon.png"};
|
|
var tw_magnet = {value:"magnet", label:"contact", icon:"icons/magnet-tw-icon.png"};
|
|
var tw_motion = {value:"motion", label:"motion", icon:"icons/motion-tw-icon.png"};
|
|
var tw_plug = {value:"plug", label:"plug", icon:"icons/plug-tw-icon.png"};
|
|
var tw_switch = {value:"switch", label:"switch", icon:"icons/switch-tw-icon.png"};
|
|
|
|
$("#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: 15px;vertical-align:middle"}).appendTo(row);
|
|
var sid = $('<input/>',{id:"node-config-input-sid-"+i,type:"text", style:"width:auto;vertical-align:top"}).appendTo(row);
|
|
sid.typedInput({
|
|
default: 'sensor_ht',
|
|
types: [tw_sensor_ht, tw_magnet, tw_motion, tw_plug, tw_switch]
|
|
});
|
|
|
|
$('<label/>',{for:"node-config-input-desc-"+i, style:"margin-left: 7px; width: 20px;vertical-align:middle"}).html('<i class="fa fa-pencil-square-o"></i>').appendTo(row);
|
|
var desc = $('<input/>',{id:"node-config-input-desc-"+i, type:"text", style:"width:auto;vertical-align:top"}).appendTo(row);
|
|
|
|
sid.typedInput('value', device.sid);
|
|
sid.typedInput('type', device.model);
|
|
desc.val(device.desc);
|
|
},
|
|
resize: function() {
|
|
console.log("got resized");
|
|
|
|
},
|
|
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);
|
|
}
|
|
var listHeight = $("#node-config-input-devices").editableList('items').size() * 51 + 50;
|
|
$("#node-config-input-devices").editableList('height', listHeight);
|
|
},
|
|
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 model = deviceElement.find("#node-config-input-sid-"+i).typedInput('type').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>
|