node-red-contrib-doorbird-ultimate
Version:
Node-Red Integration for Doorbird Devices
82 lines (76 loc) • 3.13 kB
HTML
<script type="text/javascript">
RED.nodes.registerType('doorbird-open', {
category: 'Doorbird',
defaults: {
name: {value: ''},
station: {value: '', type: 'doorbird-config'},
relay: {value: '', required: true}
},
inputs: 1,
outputs: 1,
color: '#dedede',
paletteLabel: function () {
return this._('doorbird-open.admin.paletteLabel');
},
label: function () {
return this.name || this._('doorbird-open.admin.paletteLabel');
},
inputLabels: function() {
return this._('doorbird-open.admin.inputLabel');
},
outputLabels: function() {
return this._('doorbird-open.admin.outputLabel');
},
icon: 'doorbird.png',
oneditprepare: function () {
var node = this;
var stationNode = RED.nodes.node($('#node-input-station').val());
if (stationNode === undefined) {
$('#divDeployFirst').show();
$('#divMain').hide();
} else {
$('#divDeployFirst').hide();
$('#divMain').show();
}
var updateRelays = () => {
$.ajax({
url: `DoorbirdUltimate/${stationNode.id}/info`,
type: 'GET'
}).done(info => {
var selectElement = $('#node-input-relay');
selectElement.empty();
var relays = info?.BHA?.VERSION[0]?.RELAYS;
if (relays === undefined) {
relays = [];
}
relays.forEach(relay => {
$(`<option value="${relay}">${relay}</option>`).appendTo(selectElement);
});
});
};
updateRelays();
$('#node-input-station').change(updateRelays);
}
});
</script>
<script type="text/html" data-template-name="doorbird-open">
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="doorbird-open.admin.form.labels.name"></span></label>
<input type="text" id="node-input-name" data-i18n="[placeholder]doorbird-open.admin.form.placeholders.name">
</div>
<div class="form-row">
<label for="node-input-station"><i class="fa fa-tag"></i> <span data-i18n="doorbird-open.admin.form.labels.station"></span></label>
<input type="text" id="node-input-station">
</div>
<div id="divMain">
<div class="form-row">
<label for="node-input-relay"><i class="fa fa-tag"></i> <span data-i18n="doorbird-open.admin.form.labels.relay"></span></label>
<select id="node-input-relay"></select>
</div>
</div>
<div id="divDeployFirst">
<div class="form-tips" style="margin-top:11px">
<span data-i18n="doorbird-open.admin.form.deployFirst"></span>
</div>
</div>
</script>