ln.ethercat/ln.ethercat.service/www/static/js/sdopanel.js

49 lines
1.5 KiB
JavaScript

(function(){
Vue.component('sdo-panel',{
props: {
subscribed: {
type: Array,
required: true,
default: []
},
},
computed: {
},
data: function(){
return {}
},
methods: {
promptNewValue: function(slave, index, subindex, datatype, initialValue){
console.log(index, subindex, datatype, initialValue);
let newValue = window.prompt(`new value for ${slave}:${index.toString(16)}.${subindex}`, initialValue);
console.log(newValue);
if (newValue)
{
this.$emit("write", { Slave: slave, Index: index, SubIndex: subindex, Value: newValue});
}
}
},
template: `
<div class="panel">
<h2>SDO Panel</h2>
<article v-for="sdo,key in subscribed">
<h2>{{sdo.Index.toString(16).toUpperCase()}} {{ sdo.Name }} ({{ sdo.DataType}} / M:{{ sdo.MaxSubIndex }})</h2>
<ul>
<fieldset
v-for="sdovalue in sdo.Values"
>
<span>.{{sdovalue.SubIndex}} {{ sdovalue.Name }} ({{ sdovalue.DataType}})</span>
<div
class="value"
@dblclick="promptNewValue(sdo.SlaveId, sdo.Index, sdovalue.SubIndex, sdovalue.DataType, sdovalue.Value);"
>{{ sdovalue.Value }}</div>
</fieldset>
</ul>
</article>
</div>
`,
});
})();