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

74 lines
2.2 KiB
JavaScript

Vue.component('zwave-value', {
template: '#tmpl-zwave-value',
props: ['node','bus','selected','values'],
data: function() {
return {
};
},
methods: {
onNodeClicked: function() {
this.bus.$emit('nodeClicked', {
nodeId: 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: function(event) {
const value = this.node.values[event.target.parentElement.dataset.idOnNetwork];
const name = prompt('New name', value.label);
if (!name || !name.length || name === value.label) {
return;
}
request('zwave.set_value_label', {
id_on_network: value.id_on_network,
new_label: name,
}).then(() => {
this.bus.$emit('refreshNodes');
createNotification({
text: 'Value successfully renamed',
image: { icon: 'check' }
});
});
},
onValueChanged: function(event) {
const target = event.target ? event.target : event.event.target.parentElement;
const value = this.node.values[target.dataset.idOnNetwork];
const data = value.type === 'List' ? value.data_items[event.target.value] : (target.value || event.value);
request('zwave.set_value', {
id_on_network: value.id_on_network,
data: data,
}).then(() => {
this.bus.$emit('refreshNodes');
createNotification({
text: 'Value successfully modified',
image: { icon: 'check' }
});
});
},
},
});