Merge branch 'feature/elite_trigger' into feature/dpv

This commit is contained in:
Jordan Hsu
2021-10-28 14:52:33 +08:00
7 changed files with 520 additions and 5 deletions
@@ -0,0 +1,106 @@
<template>
<div class="flex px-0 mx-0 my-0 py-0">
<va-tree-root class="flex sm12 xl12 md12 xs12 px-0 mx-0 my-0 py-0">
<div class="flex sm12 xl12 md12 xs12 px-0 mx-0 my-0 py-0">
<va-select
@input="workingModeSelectChange(workingModeSelect)"
:label="'WORKING MODE'"
v-model="workingModeSelect"
textBy="description"
:options="workingModeOptions"
style="width: 300px;"
noClear
/>
</div>
<div v-if="workingModeSelect != null && workingModeSelect.id == 0">
<elite-parameter-recording-elite-a-c-c :ref="'CurrentControl'" :deviceID="deviceID" :deviceName="deviceName"/>
</div>
</va-tree-root>
</div>
</template>
<script>
import { taskInfo } from '@/data/task/TaskInfo'
import EliteParameterRecordingEliteACC from '../parameter/item/AnalogCurrentControl/EliteParameterRecordingEliteACC'
export default {
name: 'EliteParameterRecordingEliteTrigger',
components: {
EliteParameterRecordingEliteACC,
},
props: {
deviceID: {
type: Number,
required: true,
},
deviceName: {
type: String,
default: 'Elite',
},
},
created () {
},
data () {
return {
workingModeSelect: {
id: -1,
description: 'Init',
},
workingModeOptions: [
{
id: 0,
description: 'Analog Current Control (ACC)',
},
],
}
},
mqtt: {
},
methods: {
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
// Array[String of Parameter Nmae, Value]
deviceParameterChange: function (e) {
console.log('e[0],e[1]', e[0], ',', e[1])
this.mqttPub(taskInfo.getTaskInfo().controllerID + '_user', JSON.stringify({
header: 'device_parameter/0',
device: taskInfo.getRawDeviceID(this.deviceID),
parameter: e[0],
content: e[1],
}))
},
refresh () {
this.workingModeSelect = this.workingModeOptions[taskInfo.getDeviceInfo(this.deviceID).parameterSet.MODE]
if (this.workingModeSelect != null) {
this.workingModeSelectChange(this.workingModeSelect)
}
if (this.$refs.CurrentControl != null) {
this.$refs.CurrentControl.refresh()
}
},
workingModeSelectChange (val) {
if (this.workingModeSelect.id === -1) {
return false
}
this.workingModeSelect = val
if (this.workingModeSelect.id !== taskInfo.getDeviceInfo(this.deviceID).parameterSet.MODE) {
this.deviceParameterChange(['MODE', this.workingModeSelect.id])
console.log(this.workingModeSelect.id, this.workingModeSelect.description)
}
},
},
mounted () {
this.refresh()
},
watch: {
},
destroyed () {
},
}
</script>
@@ -1,13 +1,10 @@
<template>
<div>
<elite-parameter-recording v-if="eliteVer=='1'" :ref="'rec_ref_1'" :deviceID="deviceID"/>
<!-- <elite-parameter-recording-elitezm15 :ref="'rec_ref'" :deviceID="deviceID"/> -->
<!--<elite-parameter-recording :ref="'rec_ref'" :deviceID="deviceID"/>-->
<elite-parameter-recording-elitezm15 v-else-if="eliteVer=='2'" :ref="'rec_ref_2'" :deviceID="deviceID"/>
<elite-parameter-recording-elite-e-i-s v-else-if="eliteVer=='4'" :ref="'rec_ref_4'" :deviceID="deviceID"/>
<elite-parameter-recording-elite-trigger v-else-if="eliteVer=='5'" :ref="'rec_ref_5'" :deviceID="deviceID"/>
<elite-parameter-recording-elite-e-i-s v-else :ref="'rec_ref_4'" :deviceID="deviceID"/>
<!--<elite-parameter-recording :ref="'rec_ref'" :deviceID="deviceID"/>-->
</div>
</template>
@@ -16,6 +13,7 @@
import EliteParameterRecording from './EliteParameterRecording'
import EliteParameterRecordingElitezm15 from './EliteParameterRecordingElitezm15'
import EliteParameterRecordingEliteEIS from './EliteParameterRecordingEliteEIS'
import EliteParameterRecordingEliteTrigger from './EliteParameterRecordingEliteTrigger'
import { taskInfo } from '../../../../data/task/TaskInfo'
export default {
@@ -24,6 +22,7 @@ export default {
EliteParameterRecording,
EliteParameterRecordingElitezm15,
EliteParameterRecordingEliteEIS,
EliteParameterRecordingEliteTrigger,
},
props: {
deviceID: {
@@ -53,6 +52,10 @@ export default {
} else if (JSON.stringify(ver.slice(0, 4)) === JSON.stringify([0, 2, 1, 7])) {
this.eliteVer = '3' // megafly
// console.log('3:', JSON.stringify(ver.slice(0, 4)), ',', JSON.stringify([0, 2, 1, 7]))
} else if (JSON.stringify(ver.slice(0, 4)) === JSON.stringify([0, 4, 1, 0])) {
this.eliteVer = '4' // eis
} else if (JSON.stringify(ver.slice(0, 4)) === JSON.stringify([0, 5, 1, 0])) {
this.eliteVer = '5' // trigger
} else {
this.eliteVer = '4'
}
@@ -95,6 +98,13 @@ export default {
}
})
break
case '5':
this.$nextTick(() => {
if (this.$refs.rec_ref_5 != null) {
this.$refs.rec_ref_5.refresh()
}
})
break
}
// this.$nextTick(() => {
// if (this.$refs.rec_ref != null) {
@@ -0,0 +1,107 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 my-0 py-0 align--center">
<div class="flex sm3 xl3 md3 xs3 px-0 mx-0 my-0 py-0">
<p class="display-6"> CHANNEL {{ channel }} <p/>
</div>
<div class="flex sm3 xl3 md3 xs3 px-0 mx-0 my-0 py-0">
<va-input
@mouseleave.native="itemChange(currentNumberInput)"
@keyup.enter="itemChange(currentNumberInput)"
@blur="itemChange(currentNumberInput)"
v-model="currentNumberInput"
:disabled="!channelToggle"
class="mb-0"
>
<p slot="append" style="margin-right: 0;" small>
mA
</p>
</va-input>
</div>
<div class="flex sm6 xl6 md6 xs6 px-0 mx-0 my-0 py-0">
<va-toggle v-model="channelToggle" style="float: right;" small @click.native="switchToggle()"/>
</div>
<div class="flex sm12 xl12 md12 xs12 my-1 py-1" :key="inputeKey">
<va-slider
@mouseup.native="itemChange(currentNumber)"
@mouseleave.native="itemChange(currentNumber)"
@touchend.native="itemChange(currentNumber)"
pins
:min="0"
:max="200"
value-visible
:step="10"
:disabled="!channelToggle"
v-model="currentNumber"
/>
</div>
</div>
</template>
<script>
import { taskInfo } from '@/data/task/TaskInfo'
export default {
name: 'ChannelBlock',
components: {
},
props: {
deviceID: {
type: Number,
required: true,
},
channel: {
type: Number,
required: true,
},
parameterName: {
type: String,
required: true,
},
},
created () {
},
data () {
return {
inputeKey: 0,
channelToggle: taskInfo.getDeviceInfo(this.deviceID).parameterSet[this.parameterName + String(this.channel - 1)] === 1,
currentNumberInput: '0',
currentNumber: 0,
}
},
mqtt: {
},
methods: {
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
itemChange (val) {
this.currentNumberInput = parseFloat(val).toFixed(1)
this.currentNumber = parseFloat(this.currentNumberInput)
if (this.currentNumber !== parseFloat(taskInfo.getDeviceInfo(this.deviceID).parameterSet[this.parameterName + String(this.channel - 1) + '_current']) / 250) {
this.$emit('parameterChange', [this.parameterName + String(this.channel - 1) + '_current', String(this.currentNumberInput * 250)])
}
this.inputeKey++
},
switchToggle () {
const serverStatus = taskInfo.getDeviceInfo(this.deviceID).parameterSet[this.parameterName + String(this.channel - 1)] === 1
if (this.channelToggle !== serverStatus) {
this.$emit('parameterChange', [this.parameterName + String(this.channel - 1), this.channelToggle])
}
this.inputeKey++
},
refresh () {
this.channelToggle = taskInfo.getDeviceInfo(this.deviceID).parameterSet[this.parameterName + String(this.channel - 1)] === 1
this.currentNumber = parseFloat(taskInfo.getDeviceInfo(this.deviceID).parameterSet[this.parameterName + String(this.channel - 1) + '_current']) / 250
this.currentNumberInput = String(this.currentNumber)
},
},
mounted () {
this.refresh()
},
watch: {
},
destroyed () {
},
}
</script>
@@ -0,0 +1,105 @@
<template>
<div>
<div v-for="channel in channelList" :key="channel">
<channel-block :ref="'ChannelBlock'" :deviceID="deviceID" :channel="channel" :parameterName="'ACC_a_out'" @parameterChange="deviceParameterChange($event)"/>
</div>
<va-tree-root>
<va-tree-category
style="font-size: 20px;"
:label="'Advanced Setting'">
<va-tree-node>
<div v-for="triggerIndex in triggerList" :key="'trigger_' + triggerIndex">
<trigger-block :ref="'TriggerBlock'" :deviceID="deviceID" :triggerIndex="triggerIndex" :parameterName="''" @parameterChange="deviceParameterChange($event)"/>
</div>
<div v-for="timerIndex in timerList" :key="'timer_' + timerIndex">
<timer-block :ref="'TimerBlock'" :deviceID="deviceID" :timerIndex="timerIndex" :parameterName="''" :channelList="channelList" @parameterChange="deviceParameterChange($event)"/>
</div>
</va-tree-node>
</va-tree-category>
</va-tree-root>
</div>
</template>
<script>
import { taskInfo } from '@/data/task/TaskInfo'
import ChannelBlock from './ChannelBlock'
import TriggerBlock from './TriggerBlock'
import TimerBlock from './TimerBlock'
export default {
name: 'EliteParameterRecordingEliteACC',
components: {
ChannelBlock,
TriggerBlock,
TimerBlock,
},
props: {
deviceID: {
type: Number,
required: true,
},
deviceName: {
type: String,
default: 'Elite',
},
},
created () {
},
data () {
return {
channelList: [1, 2, 3, 4],
triggerList: [1, 2],
timerList: [1, 2],
}
},
mqtt: {
},
methods: {
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
// Array[String of Parameter Nmae, Value]
deviceParameterChange: function (e) {
console.log('e[0],e[1]', e[0], ',', e[1])
this.mqttPub(taskInfo.getTaskInfo().controllerID + '_user', JSON.stringify({
header: 'device_parameter/0',
device: taskInfo.getRawDeviceID(this.deviceID),
parameter: e[0],
content: e[1],
}))
},
refresh () {
if (this.$refs.ChannelBlock != null) {
for (let i = 0; i < this.$refs.ChannelBlock.length; i++) {
this.$refs.ChannelBlock[i].refresh()
}
}
if (this.$refs.TriggerBlock != null) {
for (let i = 0; i < this.$refs.TriggerBlock.length; i++) {
this.$refs.TriggerBlock[i].refresh()
}
}
if (this.$refs.TimerBlock != null) {
for (let i = 0; i < this.$refs.TimerBlock.length; i++) {
this.$refs.TimerBlock[i].refresh()
}
}
},
},
mounted () {
},
watch: {
},
destroyed () {
},
}
</script>
<style scoped>
.long-list {
max-height: 300px;
overflow: auto;
}
</style>
@@ -0,0 +1,88 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 my-0 py-0 align--center">
<div class="flex sm3 xl3 md3 xs3 px-0 mx-0 my-0 py-0">
<p class="display-6"> TIMER {{ timerIndex }} <p/>
</div>
<div class="flex sm7 xl7 md7 xs7 px-0 mx-0 my-0 py-0">
<va-select
v-model="selectMultipleTimer"
textBy="name"
:options="timerOptions"
:disabled="!timerToggle"
multiple
/>
</div>
<div class="flex sm2 xl2 md2 xs2 px-0 mx-0 my-0 py-0">
<va-toggle v-model="timerToggle" style="float: right;" small @click.native="switchToggle()"/>
</div>
</div>
</template>
<script>
// import { taskInfo } from '@/data/task/TaskInfo'
export default {
name: 'TimerBlock',
components: {
},
props: {
deviceID: {
type: Number,
required: true,
},
timerIndex: {
type: Number,
required: true,
},
parameterName: {
type: String,
required: true,
},
channelList: {
type: Array,
required: true,
},
},
created () {
},
data () {
return {
inputeKey: 0,
selectMultipleTimer: [],
timerOptions: [],
timerToggle: false,
}
},
mqtt: {
},
methods: {
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
switchToggle () {
// const serverStatus = taskInfo.getDeviceInfo(this.deviceID).parameterSet[this.parameterName + String(this.channel - 1)] ? true : false
// if (this.channelToggle !== serverStatus) {
// this.$emit('parameterChange', [this.parameterName + String(this.channel - 1), this.channelToggle])
// }
// this.inputeKey++
},
refresh () {
// this.selectMultipleTimer
this.timerToggle = false
// this.timerToggle = taskInfo.getDeviceInfo(this.deviceID).parameterSet[this.parameterName + String(this.channel - 1) + '_current']
},
},
mounted () {
this.timerOptions = []
this.channelList.forEach(channel => {
this.timerOptions.push({ id: channel, name: 'CH' + channel })
})
this.refresh()
},
watch: {
},
destroyed () {
},
}
</script>
@@ -0,0 +1,90 @@
<template>
<div class="row flex sm12 xl12 md12 xs12 my-0 py-0 align--center">
<div class="flex sm3 xl3 md3 xs3 px-0 mx-0 my-0 py-0">
<p class="display-6"> TRIGGER {{ triggerIndex }} <p/>
</div>
<div class="flex sm8 xl8 md8 xs8 px-0 mx-0 my-0 py-0">
<va-radio-button
v-for="(option, index) in optionTrigger"
:key="index"
style="float: left;"
v-model="selectTrigger"
:option="optionTrigger[index]"
:label="optionTrigger[index]"
:disabled="!triggerToggle"
@click.native.stop="paraSend()"
/>
</div>
<div class="flex sm1 xl1 md1 xs1 px-0 mx-0 my-0 py-0">
<va-toggle v-model="triggerToggle" style="float: right;" small @click.native="switchToggle()"/>
</div>
</div>
</template>
<script>
// import { taskInfo } from '@/data/task/TaskInfo'
export default {
name: 'TriggerBlock',
components: {
},
props: {
deviceID: {
type: Number,
required: true,
},
triggerIndex: {
type: Number,
required: true,
},
parameterName: {
type: String,
required: true,
},
},
created () {
},
data () {
return {
inputeKey: 0,
selectTrigger: 'RISING',
optionTrigger: [
'RISING',
'FALLING',
],
triggerToggle: false,
}
},
mqtt: {
},
methods: {
mqttPub: function (topic, mes) {
this.$mqtt.publish(topic, mes)
},
switchToggle () {
// const serverStatus = taskInfo.getDeviceInfo(this.deviceID).parameterSet[this.parameterName + String(this.channel - 1)] ? true : false
// if (this.channelToggle !== serverStatus) {
// this.$emit('parameterChange', [this.parameterName + String(this.channel - 1), this.channelToggle])
// }
// this.inputeKey++
},
paraSend () {
},
refresh () {
this.selectTrigger = 'RISING'
this.triggerToggle = false
// this.selectTrigger = taskInfo.getDeviceInfo(this.deviceID).parameterSet[this.parameterName + String(this.channel - 1)] ? true : false
// this.triggerToggle = taskInfo.getDeviceInfo(this.deviceID).parameterSet[this.parameterName + String(this.channel - 1) + '_current']
},
},
mounted () {
this.refresh()
},
watch: {
},
destroyed () {
},
}
</script>
@@ -232,6 +232,15 @@ function newParameterSet () {
SCALE: 0,
PPD: 0,
RTIA: 0,
// Elite Trigger
ACC_a_out0: 0,
ACC_a_out0_current: 0,
ACC_a_out1: 0,
ACC_a_out1_current: 0,
ACC_a_out2: 0,
ACC_a_out2_current: 0,
ACC_a_out3: 0,
ACC_a_out3_current: 0,
// Global
_DEVICE_ADDR_: '',
_DEVICE_NAME_: '',