fix(all): fix filter of "all" node

Close #11
This commit is contained in:
Pierre CLEMENT
2018-01-08 20:41:04 +01:00
parent 4b981f0f79
commit 0b6b51ce34
2 changed files with 15 additions and 4 deletions

View File

@@ -1,4 +1,12 @@
<script type="text/javascript">
function getOnlyModelsValue(input) {
var cleanOnlyModels = [];
input.forEach(function(value) {
cleanOnlyModels = cleanOnlyModels.concat(value.split(','));
});
return cleanOnlyModels;
}
RED.nodes.registerType('xiaomi-all', {
category: 'xiaomi',
color: '#3FADB5',
@@ -24,7 +32,7 @@
if (configNodeID) {
var configNode = RED.nodes.node(configNodeID);
if(configNode) {
onlyModels = onlyModels || $('#node-input-onlyModels').val() || [];
onlyModels = getOnlyModelsValue(onlyModels || $('#node-input-onlyModels').val() || []);
excludedSids = excludedSids || $('#node-input-excludedSids').val() || [];
$('#node-input-excludedSids').empty();
for (key in configNode.deviceList) {
@@ -53,6 +61,7 @@
if(!$('#node-input-excludedSids').val()) {
this.excludedSids = [];
}
this.onlyModels = getOnlyModelsValue(this.onlyModels);
}
});
</script>
@@ -71,10 +80,10 @@
<div class="form-row">
<label for="node-input-onlyModels"><i class="icon-tag"></i> Only</label>
<select multiple id="node-input-onlyModels">
<option value="sensor_ht">Temperature/humidty</option>
<option value="sensor_ht,weather.v1">Temperature/humidty</option>
<option value="motion">Motion</option>
<option value="switch">Switches</option>
<option value="magnet">Contacts</option>
<option value="switch,sensor_switch.aq2">Switches</option>
<option value="magnet,sensor_magnet.aq2">Contacts</option>
<option value="plug">Plugs</option>
</select>
</div>

View File

@@ -6,12 +6,14 @@ module.exports = (RED) => {
this.gateway = RED.nodes.getNode(config.gateway);
this.onlyModels = config.onlyModels;
this.excludedSids = config.excludedSids;
console.log(this.onlyModels);
this.isDeviceValid = (device) => {
if((!this.onlyModels || this.onlyModels.length == 0) && (!this.excludedSids || this.excludedSids.length == 0)) {
return true;
}
// Is excluded
if((this.excludedSids && this.excludedSids.length != 0) && this.excludedSids.indexOf(device.sid) >= 0) {
return false;
}