platypush/platypush/backend/http/static/js/plugins/zwave/node.js

97 lines
2.6 KiB
JavaScript

Vue.component('zwave-node', {
template: '#tmpl-zwave-node',
props: ['node','bus','selected'],
data: function() {
return {
editMode: {
name: false,
},
};
},
methods: {
onNodeClicked: function() {
this.bus.$emit('nodeClicked', {
nodeId: this.node.node_id,
});
},
removeFailedNode: async function() {
if (!confirm('Are you sure that you want to remove this node?')) {
return;
}
await request('zwave.remove_node', {
node_id: this.node.node_id,
});
},
replaceFailedNode: async function() {
if (!confirm('Are you sure that you want to replace this node?')) {
return;
}
await request('zwave.replace_node', {
node_id: this.node.node_id,
});
},
replicationSend: async function() {
await request('zwave.replication_send', {
node_id: this.node.node_id,
});
},
requestNetworkUpdate: async function() {
await request('zwave.request_network_update', {
node_id: this.node.node_id,
});
},
requestNeighbourUpdate: async function() {
await request('zwave.request_node_neighbour_update', {
node_id: this.node.node_id,
});
},
disableForm: function(form) {
form.querySelector('input,button').readOnly = true;
},
enableForm: function(form) {
form.querySelector('input,button').readOnly = false;
},
onEditMode: function(mode) {
Vue.set(this.editMode, mode, true);
const form = this.$refs[mode + 'Form'];
const input = form.querySelector('input[type=text]');
setTimeout(() => {
input.focus();
input.select();
}, 10);
},
editName: async function(event) {
this.disableForm(event.target);
const name = event.target.querySelector('input[name=name]').value;
await request('zwave.set_node_name', {
node_id: this.node.node_id,
new_name: name,
});
this.editMode.name = false;
this.enableForm(event.target);
},
heal: async function(event) {
await request('zwave.node_heal', {
node_id: this.node.node_id,
});
},
},
});