Commit 92b3279bbe49dfa0a3236f121036fcf28d96a767
1 parent
40c29078
perf: 调整数据看板socket逻辑, 新增自定义推送socket消息及接受消息逻辑
Showing
40 changed files
with
446 additions
and
263 deletions
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 3 | 3 | import { option } from './config'; |
| 4 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 5 | 4 | import { Spin } from 'ant-design-vue'; |
| 6 | 5 | import { computed, ref } from 'vue'; |
| 7 | 6 | import { useComponentScale } from '../../../hook/useComponentScale'; |
| 8 | 7 | import { useSendCommand } from '../../../hook/useSendCommand'; |
| 9 | 8 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 9 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 10 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 10 | 11 | |
| 11 | 12 | const props = defineProps<{ |
| 12 | 13 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 3 | 3 | import { option } from './config'; |
| 4 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 5 | 4 | import { SvgIcon } from '/@/components/Icon'; |
| 6 | 5 | import { Switch } from 'ant-design-vue'; |
| 7 | 6 | import { computed, ref } from 'vue'; |
| ... | ... | @@ -9,6 +8,8 @@ |
| 9 | 8 | import { useSendCommand } from '../../../hook/useSendCommand'; |
| 10 | 9 | import { unref } from 'vue'; |
| 11 | 10 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 11 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 12 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 12 | 13 | |
| 13 | 14 | const props = defineProps<{ |
| 14 | 15 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 3 | 3 | import { option } from './config'; |
| 4 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 5 | 4 | import { Spin } from 'ant-design-vue'; |
| 6 | 5 | import { computed, ref } from 'vue'; |
| 7 | 6 | import { useComponentScale } from '../../../hook/useComponentScale'; |
| 8 | 7 | import { useSendCommand } from '../../../hook/useSendCommand'; |
| 9 | 8 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 9 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 10 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 10 | 11 | |
| 11 | 12 | const props = defineProps<{ |
| 12 | 13 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 3 | 3 | import { option } from './config'; |
| 4 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 5 | 4 | import { Slider, Spin } from 'ant-design-vue'; |
| 6 | 5 | import { computed, ref, unref } from 'vue'; |
| 7 | 6 | import { useComponentScale } from '../../../hook/useComponentScale'; |
| 8 | 7 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 9 | 8 | import { useSendCommand } from '../../../hook/useSendCommand'; |
| 10 | 9 | import { useReceiveValue } from '../../../hook/useReceiveValue'; |
| 10 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 11 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 11 | 12 | |
| 12 | 13 | const props = defineProps<{ |
| 13 | 14 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { | |
| 3 | - ComponentPropsConfigType, | |
| 4 | - MultipleDataFetchUpdateFn, | |
| 5 | - } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 6 | 3 | import { option } from './config'; |
| 7 | - import { useMultipleDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 8 | 4 | import { SvgIcon } from '/@/components/Icon'; |
| 9 | 5 | import { Switch } from 'ant-design-vue'; |
| 10 | 6 | import { computed, ref } from 'vue'; |
| ... | ... | @@ -12,6 +8,8 @@ |
| 12 | 8 | import { useSendCommand } from '../../../hook/useSendCommand'; |
| 13 | 9 | import { unref } from 'vue'; |
| 14 | 10 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 11 | + import { MultipleDataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 12 | + import { useMultipleDataFetch } from '../../../hook/socket/useSocket'; | |
| 15 | 13 | |
| 16 | 14 | const props = defineProps<{ |
| 17 | 15 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 3 | 3 | import { option } from './config'; |
| 4 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 5 | 4 | import { computed } from 'vue'; |
| 6 | 5 | import { ref } from 'vue'; |
| 7 | 6 | import { unref } from 'vue'; |
| 8 | 7 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 9 | 8 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 9 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 10 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 10 | 11 | |
| 11 | 12 | const props = defineProps<{ |
| 12 | 13 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 3 | 3 | import { option } from './config'; |
| 4 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 5 | 4 | import { computed } from 'vue'; |
| 6 | 5 | import { ref } from 'vue'; |
| 7 | 6 | import { unref } from 'vue'; |
| 8 | 7 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 9 | 8 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 9 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 10 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 10 | 11 | |
| 11 | 12 | const props = defineProps<{ |
| 12 | 13 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 3 | 3 | import { option } from './config'; |
| 4 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 5 | 4 | import { ref } from 'vue'; |
| 6 | 5 | import { computed } from 'vue'; |
| 7 | 6 | import { unref } from 'vue'; |
| 8 | 7 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 9 | 8 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 9 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 10 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 10 | 11 | |
| 11 | 12 | const props = defineProps<{ |
| 12 | 13 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 3 | 3 | import { option } from './config'; |
| 4 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 5 | 4 | import { ref, computed, unref } from 'vue'; |
| 6 | 5 | import { Space } from 'ant-design-vue'; |
| 7 | 6 | import { useComponentScale } from '/@/views/visual/packages/hook/useComponentScale'; |
| 8 | 7 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 9 | 8 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 9 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 10 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 10 | 11 | |
| 11 | 12 | const props = defineProps<{ |
| 12 | 13 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | 2 | import { EChartsOption, ECharts, init } from 'echarts'; |
| 3 | 3 | import { unref, ref, onMounted, computed, nextTick } from 'vue'; |
| 4 | - import { useDataFetch } from '../../../hook/useSocket'; | |
| 5 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '../../../index.type'; | |
| 4 | + import { ComponentPropsConfigType } from '../../../index.type'; | |
| 6 | 5 | import { option } from './config'; |
| 7 | 6 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 8 | 7 | import { useIntervalFn } from '@vueuse/core'; |
| 9 | 8 | import { useComponentScale } from '../../../hook/useComponentScale'; |
| 10 | 9 | import { isArray } from '/@/utils/is'; |
| 11 | 10 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 11 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 12 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 12 | 13 | |
| 13 | 14 | const props = defineProps<{ |
| 14 | 15 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | 2 | import { EChartsOption, ECharts, init } from 'echarts'; |
| 3 | 3 | import { unref, ref, onMounted, computed, nextTick } from 'vue'; |
| 4 | - import { useDataFetch } from '../../../hook/useSocket'; | |
| 5 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '../../../index.type'; | |
| 4 | + import { ComponentPropsConfigType } from '../../../index.type'; | |
| 6 | 5 | import { option } from './config'; |
| 7 | 6 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 8 | 7 | import { useIntervalFn } from '@vueuse/core'; |
| 9 | 8 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 10 | 9 | import { isArray } from '/@/utils/is'; |
| 11 | 10 | import { useComponentScale } from '/@/views/visual/packages/hook/useComponentScale'; |
| 11 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 12 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 12 | 13 | |
| 13 | 14 | const props = defineProps<{ |
| 14 | 15 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | 2 | import { EChartsOption, ECharts, init } from 'echarts'; |
| 3 | 3 | import { unref, ref, onMounted, computed, nextTick } from 'vue'; |
| 4 | - import { useMultipleDataFetch } from '../../../hook/useSocket'; | |
| 5 | - import { ComponentPropsConfigType, MultipleDataFetchUpdateFn } from '../../../index.type'; | |
| 4 | + import { ComponentPropsConfigType } from '../../../index.type'; | |
| 6 | 5 | import { option } from './config'; |
| 7 | 6 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 8 | 7 | // import { useIntervalFn } from '@vueuse/core'; |
| ... | ... | @@ -10,6 +9,7 @@ |
| 10 | 9 | import { useComponentScale } from '/@/views/visual/packages/hook/useComponentScale'; |
| 11 | 10 | import { useReceiveMessage } from '../../../hook/useReceiveMessage'; |
| 12 | 11 | import { useReceiveValue } from '../../../hook/useReceiveValue'; |
| 12 | + import { MultipleDataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 13 | 13 | |
| 14 | 14 | const props = defineProps<{ |
| 15 | 15 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | 2 | import { EChartsOption, ECharts, init } from 'echarts'; |
| 3 | 3 | import { unref, ref, onMounted, computed, nextTick } from 'vue'; |
| 4 | - import { useDataFetch } from '../../../hook/useSocket'; | |
| 5 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '../../../index.type'; | |
| 4 | + import { ComponentPropsConfigType } from '../../../index.type'; | |
| 6 | 5 | import { option } from './config'; |
| 7 | 6 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 8 | 7 | import { useIntervalFn } from '@vueuse/core'; |
| 9 | 8 | import { useComponentScale } from '../../../hook/useComponentScale'; |
| 10 | 9 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 10 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 11 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 11 | 12 | |
| 12 | 13 | const props = defineProps<{ |
| 13 | 14 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| ... | ... | @@ -3,8 +3,7 @@ |
| 3 | 3 | import { onMounted } from 'vue'; |
| 4 | 4 | import { unref } from 'vue'; |
| 5 | 5 | import { ref } from 'vue'; |
| 6 | - import { useDataFetch } from '../../../hook/useSocket'; | |
| 7 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '../../../index.type'; | |
| 6 | + import { ComponentPropsConfigType } from '../../../index.type'; | |
| 8 | 7 | import { option } from './config'; |
| 9 | 8 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 10 | 9 | import { useIntervalFn } from '@vueuse/core'; |
| ... | ... | @@ -12,6 +11,8 @@ |
| 12 | 11 | import { useComponentScale } from '../../../hook/useComponentScale'; |
| 13 | 12 | import { nextTick } from 'vue'; |
| 14 | 13 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 14 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 15 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 15 | 16 | |
| 16 | 17 | const props = defineProps<{ |
| 17 | 18 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 3 | 3 | import { Gradient, GradientColor, option } from './config'; |
| 4 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 5 | 4 | import { ECharts, EChartsOption, init } from 'echarts'; |
| 6 | 5 | import { ref, unref, onMounted, computed } from 'vue'; |
| 7 | 6 | import { isArray } from '/@/utils/is'; |
| ... | ... | @@ -11,6 +10,8 @@ |
| 11 | 10 | import { useIntervalFn } from '@vueuse/core'; |
| 12 | 11 | import { nextTick } from 'vue'; |
| 13 | 12 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 13 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 14 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 14 | 15 | |
| 15 | 16 | const props = defineProps<{ |
| 16 | 17 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { | |
| 3 | - ComponentPropsConfigType, | |
| 4 | - MultipleDataFetchUpdateFn, | |
| 5 | - } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 6 | 3 | import { option } from './config'; |
| 7 | - import { useMultipleDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 8 | 4 | import { useBaiduMapSDK } from '../../../hook/useBaiduMapSDK'; |
| 9 | 5 | import { ref, unref } from 'vue'; |
| 10 | 6 | import { buildUUID } from '/@/utils/uuid'; |
| 11 | 7 | import { Spin } from 'ant-design-vue'; |
| 12 | 8 | import { computed } from 'vue'; |
| 13 | 9 | import { useMapTrackPlayBack } from './useMapTrackPlayback'; |
| 10 | + import { useMultipleDataFetch } from '../../../hook/socket/useSocket'; | |
| 11 | + import { MultipleDataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 14 | 12 | |
| 15 | 13 | const props = defineProps<{ |
| 16 | 14 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| ... | ... | @@ -2,8 +2,9 @@ |
| 2 | 2 | import { ref } from 'vue'; |
| 3 | 3 | import { Image as AntImage } from 'ant-design-vue'; |
| 4 | 4 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 5 | - import { useDataFetch } from '../../../hook/useSocket'; | |
| 6 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '../../../index.type'; | |
| 5 | + import { ComponentPropsConfigType } from '../../../index.type'; | |
| 6 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 7 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 7 | 8 | |
| 8 | 9 | const props = defineProps<{ |
| 9 | 10 | config: ComponentPropsConfigType; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 3 | 3 | import { option } from './config'; |
| 4 | 4 | import { useComponentScale } from '/@/views/visual/packages/hook/useComponentScale'; |
| 5 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 6 | 5 | import { computed } from 'vue'; |
| 7 | 6 | import { ref, onMounted, unref } from 'vue'; |
| 8 | 7 | import { useIntervalFn } from '@vueuse/core'; |
| 9 | 8 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 10 | 9 | import { useReceiveValue } from '../../../hook/useReceiveValue'; |
| 11 | 10 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 11 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 12 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 12 | 13 | |
| 13 | 14 | const props = defineProps<{ |
| 14 | 15 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| ... | ... | @@ -2,8 +2,9 @@ |
| 2 | 2 | import { ref } from 'vue'; |
| 3 | 3 | import { Image as AntImage } from 'ant-design-vue'; |
| 4 | 4 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 5 | - import { useDataFetch } from '../../../hook/useSocket'; | |
| 6 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '../../../index.type'; | |
| 5 | + import { ComponentPropsConfigType } from '../../../index.type'; | |
| 6 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 7 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 7 | 8 | |
| 8 | 9 | const props = defineProps<{ |
| 9 | 10 | config: ComponentPropsConfigType; |
| ... | ... | @@ -16,27 +17,6 @@ |
| 16 | 17 | |
| 17 | 18 | const url = ref<string>(fallback); |
| 18 | 19 | |
| 19 | - // const getImagBase64 = ref(fallback); | |
| 20 | - | |
| 21 | - // const getBase64Image = (url: string) => { | |
| 22 | - // let canvas: Nullable<HTMLCanvasElement> = document.createElement('canvas'); | |
| 23 | - // const ctx = canvas.getContext('2d'); | |
| 24 | - // let image: Nullable<HTMLImageElement> = new Image(); | |
| 25 | - | |
| 26 | - // image.onload = function () { | |
| 27 | - // canvas!.height = image!.height; | |
| 28 | - // canvas!.width = image!.width; | |
| 29 | - // ctx?.drawImage(image!, 0, 0); | |
| 30 | - // const dataUrl = canvas!.toDataURL('image/png'); | |
| 31 | - // getImagBase64.value = dataUrl; | |
| 32 | - // console.log(dataUrl); | |
| 33 | - // image = null; | |
| 34 | - // canvas = null; | |
| 35 | - // }; | |
| 36 | - // image.setAttribute('crossOrigin', 'Anonymous'); | |
| 37 | - // image.src = url; | |
| 38 | - // }; | |
| 39 | - | |
| 40 | 20 | const updateFn: DataFetchUpdateFn = (message, attribute) => { |
| 41 | 21 | const { data = {} } = message; |
| 42 | 22 | const [latest] = data[attribute] || []; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | 2 | import { EChartsOption, SeriesOption, ECharts, init } from 'echarts'; |
| 3 | 3 | import { unref, ref, onMounted, computed, nextTick } from 'vue'; |
| 4 | - import { useMultipleDataFetch } from '../../../hook/useSocket'; | |
| 5 | - import { ComponentPropsConfigType, MultipleDataFetchUpdateFn } from '../../../index.type'; | |
| 4 | + import { ComponentPropsConfigType } from '../../../index.type'; | |
| 6 | 5 | import { option } from './config'; |
| 7 | 6 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 8 | 7 | import { useComponentScale } from '../../../hook/useComponentScale'; |
| 9 | 8 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 10 | 9 | import { useReceiveMessage } from '../../../hook/useReceiveMessage'; |
| 11 | 10 | import { useReceiveValue } from '../../../hook/useReceiveValue'; |
| 11 | + import { useMultipleDataFetch } from '../../../hook/socket/useSocket'; | |
| 12 | + import { MultipleDataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 12 | 13 | |
| 13 | 14 | const props = defineProps<{ |
| 14 | 15 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | 2 | import { EChartsOption, SeriesOption, ECharts, init } from 'echarts'; |
| 3 | 3 | import { unref, ref, onMounted, computed, nextTick } from 'vue'; |
| 4 | - import { useMultipleDataFetch } from '../../../hook/useSocket'; | |
| 5 | - import { ComponentPropsConfigType, MultipleDataFetchUpdateFn } from '../../../index.type'; | |
| 4 | + import { ComponentPropsConfigType } from '../../../index.type'; | |
| 6 | 5 | import { option } from './config'; |
| 7 | 6 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 8 | 7 | import { useComponentScale } from '../../../hook/useComponentScale'; |
| ... | ... | @@ -10,6 +9,8 @@ |
| 10 | 9 | import { useReceiveMessage } from '../../../hook/useReceiveMessage'; |
| 11 | 10 | import { useReceiveValue } from '../../../hook/useReceiveValue'; |
| 12 | 11 | import { toRaw } from 'vue'; |
| 12 | + import { useMultipleDataFetch } from '../../../hook/socket/useSocket'; | |
| 13 | + import { MultipleDataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 13 | 14 | |
| 14 | 15 | const props = defineProps<{ |
| 15 | 16 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | 2 | import { EChartsOption, SeriesOption, ECharts, init } from 'echarts'; |
| 3 | 3 | import { unref, ref, onMounted, computed, nextTick, toRaw } from 'vue'; |
| 4 | - import { useMultipleDataFetch } from '../../../hook/useSocket'; | |
| 5 | - import { ComponentPropsConfigType, MultipleDataFetchUpdateFn } from '../../../index.type'; | |
| 4 | + import { ComponentPropsConfigType } from '../../../index.type'; | |
| 6 | 5 | import { option } from './config'; |
| 7 | 6 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 8 | 7 | import { useComponentScale } from '../../../hook/useComponentScale'; |
| 9 | 8 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 9 | + import { useMultipleDataFetch } from '../../../hook/socket/useSocket'; | |
| 10 | + import { MultipleDataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 10 | 11 | |
| 11 | 12 | const props = defineProps<{ |
| 12 | 13 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | 2 | import { EChartsOption, SeriesOption, ECharts, init } from 'echarts'; |
| 3 | 3 | import { unref, ref, onMounted, computed, nextTick, toRaw } from 'vue'; |
| 4 | - import { useMultipleDataFetch } from '../../../hook/useSocket'; | |
| 5 | - import { ComponentPropsConfigType, MultipleDataFetchUpdateFn } from '../../../index.type'; | |
| 4 | + import { ComponentPropsConfigType } from '../../../index.type'; | |
| 6 | 5 | import { option } from './config'; |
| 7 | 6 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 8 | 7 | import { useComponentScale } from '../../../hook/useComponentScale'; |
| 9 | 8 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 9 | + import { useMultipleDataFetch } from '../../../hook/socket/useSocket'; | |
| 10 | + import { MultipleDataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 10 | 11 | |
| 11 | 12 | const props = defineProps<{ |
| 12 | 13 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | 2 | import { reactive, ref } from 'vue'; |
| 3 | - import { useMultipleDataFetch } from '../../../hook/useSocket'; | |
| 4 | - import { ComponentPropsConfigType, MultipleDataFetchUpdateFn } from '../../../index.type'; | |
| 3 | + import { ComponentPropsConfigType } from '../../../index.type'; | |
| 5 | 4 | import { option } from './config'; |
| 6 | 5 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 7 | 6 | import { BasicTable, useTable, BasicColumn } from '/@/components/Table'; |
| 7 | + import { MultipleDataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 8 | + import { useMultipleDataFetch } from '../../../hook/socket/useSocket'; | |
| 8 | 9 | |
| 9 | 10 | const props = defineProps<{ |
| 10 | 11 | config: ComponentPropsConfigType<typeof option>; |
| ... | ... | @@ -28,30 +29,12 @@ |
| 28 | 29 | canResize: true, |
| 29 | 30 | maxHeight: 144, |
| 30 | 31 | size: 'small', |
| 31 | - // columns: [{ title: '属性', dataIndex: 'attribute', width: 80 }], | |
| 32 | 32 | columns: realTimeColumn as any, |
| 33 | 33 | }); |
| 34 | 34 | |
| 35 | - // const getDesign = computed(() => { | |
| 36 | - // const { persetOption, option } = props.config; | |
| 37 | - // clearInterval; | |
| 38 | - // return {}; | |
| 39 | - // }); | |
| 40 | - | |
| 41 | - // const randomFn = () => { | |
| 42 | - // useIntervalFn(() => { | |
| 43 | - // const value = (Math.random() * 100).toFixed(0); | |
| 44 | - // unref(chartInstance)?.setOption({ | |
| 45 | - // series: [{ data: [{ value }] }, { data: [{ value }] }], | |
| 46 | - // } as EChartsOption); | |
| 47 | - // }, 3000); | |
| 48 | - // }; | |
| 49 | - | |
| 50 | 35 | const updateFn: MultipleDataFetchUpdateFn = () => {}; |
| 51 | 36 | |
| 52 | 37 | useMultipleDataFetch(props, updateFn); |
| 53 | - | |
| 54 | - // const { getRatio } = useComponentScale(props); | |
| 55 | 38 | </script> |
| 56 | 39 | |
| 57 | 40 | <template> | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | 2 | import { EChartsOption, ECharts, init } from 'echarts'; |
| 3 | 3 | import { unref, ref, onMounted, nextTick, toRaw } from 'vue'; |
| 4 | - import { useMultipleDataFetch } from '../../../hook/useSocket'; | |
| 5 | - import { ComponentPropsConfigType, MultipleDataFetchUpdateFn } from '../../../index.type'; | |
| 4 | + import { ComponentPropsConfigType } from '../../../index.type'; | |
| 6 | 5 | import { option } from './config'; |
| 7 | 6 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 8 | 7 | import { useComponentScale } from '../../../hook/useComponentScale'; |
| 9 | 8 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 10 | 9 | import { dateFormat } from '/@/utils/common/compUtils'; |
| 10 | + import { useMultipleDataFetch } from '../../../hook/socket/useSocket'; | |
| 11 | + import { MultipleDataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 11 | 12 | |
| 12 | 13 | const props = defineProps<{ |
| 13 | 14 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 3 | 3 | import { option } from './config'; |
| 4 | 4 | import { useComponentScale } from '/@/views/visual/packages/hook/useComponentScale'; |
| 5 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 6 | 5 | import { ref, onMounted, unref } from 'vue'; |
| 7 | 6 | import { useIntervalFn } from '@vueuse/core'; |
| 8 | 7 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 9 | 8 | import { useReceiveValue } from '../../../hook/useReceiveValue'; |
| 9 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 10 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 10 | 11 | |
| 11 | 12 | const props = defineProps<{ |
| 12 | 13 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 3 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 4 | - | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 5 | 3 | import { option } from './config'; |
| 6 | 4 | import { SvgIcon } from '/@/components/Icon'; |
| 7 | 5 | import { computed } from 'vue'; |
| 8 | 6 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 7 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 8 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 9 | 9 | |
| 10 | 10 | const props = defineProps<{ |
| 11 | 11 | config: ComponentPropsConfigType<typeof option>; |
| ... | ... | @@ -33,25 +33,6 @@ |
| 33 | 33 | }; |
| 34 | 34 | }); |
| 35 | 35 | |
| 36 | - // const svgList = ref<any>([ | |
| 37 | - // { | |
| 38 | - // value: 26.2, | |
| 39 | - // name: 'wendu', | |
| 40 | - // icon: 'zongfushe', | |
| 41 | - // unit: 'kw', | |
| 42 | - // iconColor: '#367BFF', | |
| 43 | - // fontColor: '#357CFB', | |
| 44 | - // }, | |
| 45 | - // { | |
| 46 | - // value: 53.7, | |
| 47 | - // name: 'shidu', | |
| 48 | - // icon: 'guangzhaoqiangdu', | |
| 49 | - // unit: '℃', | |
| 50 | - // iconColor: '#FFA000', | |
| 51 | - // fontColor: '#FFA000', | |
| 52 | - // }, | |
| 53 | - // ]); | |
| 54 | - | |
| 55 | 36 | const updateFn: DataFetchUpdateFn = () => {}; |
| 56 | 37 | |
| 57 | 38 | useDataFetch(props, updateFn); | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 3 | 3 | import { option } from './config'; |
| 4 | 4 | import { useComponentScale } from '/@/views/visual/packages/hook/useComponentScale'; |
| 5 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 6 | 5 | import { computed } from 'vue'; |
| 7 | 6 | import { ref } from 'vue'; |
| 8 | 7 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 8 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 9 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 9 | 10 | |
| 10 | 11 | const props = defineProps<{ |
| 11 | 12 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 3 | 3 | import { option } from './config'; |
| 4 | 4 | import { useComponentScale } from '/@/views/visual/packages/hook/useComponentScale'; |
| 5 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 6 | 5 | import { computed } from 'vue'; |
| 7 | 6 | import { ref } from 'vue'; |
| 8 | 7 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 9 | 8 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 9 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 10 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 10 | 11 | |
| 11 | 12 | const props = defineProps<{ |
| 12 | 13 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 3 | 3 | import { option } from './config'; |
| 4 | 4 | import { useComponentScale } from '/@/views/visual/packages/hook/useComponentScale'; |
| 5 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 6 | 5 | import { ref } from 'vue'; |
| 7 | 6 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 8 | 7 | import { SvgIcon } from '/@/components/Icon'; |
| 9 | 8 | import { computed } from 'vue'; |
| 10 | 9 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 10 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 11 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 11 | 12 | |
| 12 | 13 | const props = defineProps<{ |
| 13 | 14 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, DataFetchUpdateFn } from '/@/views/visual/packages/index.type'; | |
| 2 | + import { ComponentPropsConfigType } from '/@/views/visual/packages/index.type'; | |
| 3 | 3 | import { option } from './config'; |
| 4 | 4 | import { useComponentScale } from '/@/views/visual/packages/hook/useComponentScale'; |
| 5 | - import { useDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 6 | 5 | import { computed } from 'vue'; |
| 7 | 6 | import { ref } from 'vue'; |
| 8 | 7 | import { SvgIcon } from '/@/components/Icon'; |
| 9 | 8 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 9 | + import { useDataFetch } from '../../../hook/socket/useSocket'; | |
| 10 | + import { DataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 10 | 11 | |
| 11 | 12 | const props = defineProps<{ |
| 12 | 13 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | 2 | import { option } from './config'; |
| 3 | - // import { useComponentScale } from '/@/views/visual/packages/hook/useComponentScale'; | |
| 4 | - import { ComponentPropsConfigType, MultipleDataFetchUpdateFn } from '../../../index.type'; | |
| 5 | - import { useMultipleDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 6 | - import { computed } from 'vue'; | |
| 7 | - import { ref } from 'vue'; | |
| 3 | + import { ComponentPropsConfigType } from '../../../index.type'; | |
| 8 | 4 | import { Progress } from 'ant-design-vue'; |
| 9 | 5 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 10 | - import { unref } from 'vue'; | |
| 11 | - import { onMounted } from 'vue'; | |
| 12 | 6 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| 13 | 7 | import { useReceiveMessage } from '../../../hook/useReceiveMessage'; |
| 14 | 8 | import { buildUUID } from '/@/utils/uuid'; |
| 15 | 9 | import { useReceiveValue } from '../../../hook/useReceiveValue'; |
| 10 | + import { ref, computed, unref, onMounted } from 'vue'; | |
| 11 | + import { useMultipleDataFetch } from '../../../hook/socket/useSocket'; | |
| 12 | + import { MultipleDataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 16 | 13 | |
| 17 | 14 | const props = defineProps<{ |
| 18 | 15 | config: ComponentPropsConfigType<typeof option>; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | - import { ComponentPropsConfigType, MultipleDataFetchUpdateFn } from '../../../index.type'; | |
| 3 | - | |
| 2 | + import { ComponentPropsConfigType } from '../../../index.type'; | |
| 4 | 3 | import { option } from './config'; |
| 5 | - import { useMultipleDataFetch } from '/@/views/visual/packages/hook/useSocket'; | |
| 6 | 4 | import { ref, unref } from 'vue'; |
| 7 | 5 | import { SvgIcon } from '/@/components/Icon'; |
| 8 | 6 | import { UpdateTime } from '/@/views/visual/commonComponents/UpdateTime'; |
| ... | ... | @@ -10,6 +8,8 @@ |
| 10 | 8 | import { DeviceName } from '/@/views/visual/commonComponents/DeviceName'; |
| 11 | 9 | import { useReceiveMessage } from '../../../hook/useReceiveMessage'; |
| 12 | 10 | import { useReceiveValue } from '../../../hook/useReceiveValue'; |
| 11 | + import { useMultipleDataFetch } from '../../../hook/socket/useSocket'; | |
| 12 | + import { MultipleDataFetchUpdateFn } from '../../../hook/socket/useSocket.type'; | |
| 13 | 13 | |
| 14 | 14 | const props = defineProps<{ |
| 15 | 15 | config: ComponentPropsConfigType<typeof option>; |
| ... | ... | @@ -42,14 +42,6 @@ |
| 42 | 42 | deviceRename, |
| 43 | 43 | id: deviceId, |
| 44 | 44 | }; |
| 45 | - // return { | |
| 46 | - // unit: unit ?? persetUnit, | |
| 47 | - // fontColor: fontColor ?? persetFontColor, | |
| 48 | - // icon: icon ?? persetIcon, | |
| 49 | - // iconColor: iconColor ?? persetIconColor, | |
| 50 | - // attribute: attribute || attributeRename, | |
| 51 | - // attributeRename, | |
| 52 | - // }; | |
| 53 | 45 | }), |
| 54 | 46 | }; |
| 55 | 47 | }); |
| ... | ... | @@ -88,25 +80,7 @@ |
| 88 | 80 | time.value = timespan; |
| 89 | 81 | } |
| 90 | 82 | }); |
| 91 | - // }); | |
| 92 | 83 | }); |
| 93 | - // console.log(unref(svgList), 'svglist'); | |
| 94 | - // const { data = {} } = message; | |
| 95 | - // const { dataSource } = unref(getDesign); | |
| 96 | - // svgList.value.length = 0; | |
| 97 | - // svgList.value = dataSource.map((item) => { | |
| 98 | - // const { icon, iconColor, unit, fontColor, attribute } = item || {}; | |
| 99 | - // const [latest] = data[attribute] || []; | |
| 100 | - // const [_timespan, value] = latest || []; | |
| 101 | - // return { | |
| 102 | - // value: Number(value), | |
| 103 | - // name: attribute, | |
| 104 | - // icon, | |
| 105 | - // unit, | |
| 106 | - // iconColor, | |
| 107 | - // fontColor, | |
| 108 | - // }; | |
| 109 | - // }); | |
| 110 | 84 | }; |
| 111 | 85 | |
| 112 | 86 | useMultipleDataFetch(props, updateFn); | ... | ... |
src/views/visual/packages/hook/socket/useSocket.ts
renamed from
src/views/visual/packages/hook/useSocket.ts
| 1 | 1 | import { Ref, computed, onUnmounted, unref, watch } from 'vue'; |
| 2 | -import { WidgetDataType } from '../../palette/hooks/useDataSource'; | |
| 2 | +import { WidgetDataType } from '../../../palette/hooks/useDataSource'; | |
| 3 | 3 | import { useWebSocket } from '@vueuse/core'; |
| 4 | 4 | import { useGlobSetting } from '/@/hooks/setting'; |
| 5 | 5 | import { isShareMode } from '/@/views/sys/share/hook'; |
| 6 | 6 | import { getJwtToken, getShareJwtToken } from '/@/utils/auth'; |
| 7 | -import { isNullAndUnDef } from '/@/utils/is'; | |
| 7 | +import { DataSource } from '../../../palette/types'; | |
| 8 | +import { CUSTOM_SUBSCRIBE_MESSAGE_COMPONENT_KEY_LIST } from '../../package'; | |
| 8 | 9 | import { |
| 9 | - ComponentPropsConfigType, | |
| 10 | + CmdUpdateMsg, | |
| 11 | + CmdUpdateTypeEnum, | |
| 10 | 12 | DataFetchUpdateFn, |
| 11 | 13 | EntityTypeEnum, |
| 12 | 14 | MultipleDataFetchUpdateFn, |
| 13 | - ReceiveGroupMessageType, | |
| 15 | + ReceiveAlarmDataCmdsMessageType, | |
| 16 | + ReceiveEntityCountMessageType, | |
| 17 | + ReceiveEntityDataMessageType, | |
| 14 | 18 | ReceiveMessageType, |
| 19 | + ReceiveTsSubCmdsGroupMessageType, | |
| 20 | + ReceiveTsSubCmdsMessageType, | |
| 15 | 21 | ScopeTypeEnum, |
| 16 | - SubscribeMessageItemType, | |
| 17 | 22 | SubscribeMessageType, |
| 18 | -} from '../index.type'; | |
| 19 | -import { DataSource } from '../../palette/types'; | |
| 23 | + TsSubCmdsItemType, | |
| 24 | +} from './useSocket.type'; | |
| 25 | +import { ComponentPropsConfigType } from '../../index.type'; | |
| 20 | 26 | |
| 21 | 27 | interface DeviceGroupMapType { |
| 22 | 28 | subscriptionId: number; |
| ... | ... | @@ -29,11 +35,18 @@ interface ComponentUpdateFnMapValueType { |
| 29 | 35 | attributes: string[]; |
| 30 | 36 | } |
| 31 | 37 | |
| 32 | -const parseMessage = (text: string): ReceiveMessageType => { | |
| 38 | +interface CustomSubscribeMapValueType { | |
| 39 | + uuid: string; | |
| 40 | + updateFn?: Fn; | |
| 41 | +} | |
| 42 | + | |
| 43 | +export type CustomSubscribeSendMessageFnType = (cmdId: number) => void; | |
| 44 | + | |
| 45 | +const parseMessage = (text: string): ReceiveTsSubCmdsMessageType => { | |
| 33 | 46 | try { |
| 34 | 47 | return JSON.parse(text); |
| 35 | 48 | } catch (error) { |
| 36 | - return {} as ReceiveMessageType; | |
| 49 | + return {} as ReceiveTsSubCmdsMessageType; | |
| 37 | 50 | } |
| 38 | 51 | }; |
| 39 | 52 | |
| ... | ... | @@ -48,6 +61,8 @@ class Subscriber { |
| 48 | 61 | |
| 49 | 62 | componentGroupUpdateFnMap = new Map<string, ComponentUpdateFnMapValueType[]>(); |
| 50 | 63 | |
| 64 | + customSubscribeMap = new Map<number, CustomSubscribeMapValueType>(); | |
| 65 | + | |
| 51 | 66 | getNextSubscribeId() { |
| 52 | 67 | return this.subscribeId++; |
| 53 | 68 | } |
| ... | ... | @@ -56,6 +71,8 @@ class Subscriber { |
| 56 | 71 | this.deviceGroupMap.clear(); |
| 57 | 72 | this.subscriptionMap.clear(); |
| 58 | 73 | this.componentUpdateFnMap.clear(); |
| 74 | + this.componentGroupUpdateFnMap.clear(); | |
| 75 | + this.customSubscribeMap.clear(); | |
| 59 | 76 | }; |
| 60 | 77 | |
| 61 | 78 | addSubscriber = (info: Record<'deviceId' | 'slaveDeviceId' | 'attribute' | 'uuid', string>) => { |
| ... | ... | @@ -85,7 +102,7 @@ class Subscriber { |
| 85 | 102 | entityType: EntityTypeEnum.DEVICE, |
| 86 | 103 | scope: ScopeTypeEnum.LATEST_TELEMERY, |
| 87 | 104 | ...(unsubscribe ? { unsubscribe } : {}), |
| 88 | - } as SubscribeMessageItemType; | |
| 105 | + } as TsSubCmdsItemType; | |
| 89 | 106 | }); |
| 90 | 107 | return { tsSubCmds: message } as SubscribeMessageType; |
| 91 | 108 | } |
| ... | ... | @@ -98,14 +115,14 @@ class Subscriber { |
| 98 | 115 | return this.genBasicMessage(); |
| 99 | 116 | } |
| 100 | 117 | |
| 101 | - getScopeMessage(message: ReceiveMessageType, attribute: string[]) { | |
| 118 | + getScopeMessage(message: ReceiveTsSubCmdsMessageType, attribute: string[]) { | |
| 102 | 119 | const data = attribute.reduce((prev, next) => { |
| 103 | 120 | return { ...prev, [next]: (message.data || {})[next] || [[]] }; |
| 104 | - }, {} as ReceiveMessageType['data']); | |
| 121 | + }, {} as ReceiveTsSubCmdsMessageType['data']); | |
| 105 | 122 | |
| 106 | 123 | const latestValues = attribute.reduce((prev, next) => { |
| 107 | 124 | return { ...prev, [next]: (message.latestValues || {})[next] || [[]] }; |
| 108 | - }, {} as ReceiveMessageType['data']); | |
| 125 | + }, {} as ReceiveTsSubCmdsMessageType['data']); | |
| 109 | 126 | |
| 110 | 127 | return { |
| 111 | 128 | subscriptionId: message.subscriptionId, |
| ... | ... | @@ -113,10 +130,14 @@ class Subscriber { |
| 113 | 130 | errorMsg: message.errorMsg, |
| 114 | 131 | data, |
| 115 | 132 | latestValues, |
| 116 | - } as ReceiveMessageType; | |
| 133 | + } as ReceiveTsSubCmdsMessageType; | |
| 117 | 134 | } |
| 118 | 135 | |
| 119 | - getGroupScopeMessage(message: ReceiveMessageType, attribute: string[], deviceId: string) { | |
| 136 | + getGroupScopeMessage( | |
| 137 | + message: ReceiveTsSubCmdsMessageType, | |
| 138 | + attribute: string[], | |
| 139 | + deviceId: string | |
| 140 | + ) { | |
| 120 | 141 | const result = this.getScopeMessage(message, attribute); |
| 121 | 142 | |
| 122 | 143 | return { |
| ... | ... | @@ -127,7 +148,13 @@ class Subscriber { |
| 127 | 148 | latestValues: { |
| 128 | 149 | [deviceId]: result.latestValues, |
| 129 | 150 | }, |
| 130 | - } as ReceiveGroupMessageType; | |
| 151 | + } as ReceiveTsSubCmdsGroupMessageType; | |
| 152 | + } | |
| 153 | + | |
| 154 | + customSubscribe(uuid: string, sendMessageFn: CustomSubscribeSendMessageFnType, updateFn: Fn) { | |
| 155 | + const cmdId = this.getNextSubscribeId(); | |
| 156 | + this.customSubscribeMap.set(cmdId, { uuid, updateFn }); | |
| 157 | + sendMessageFn(cmdId); | |
| 131 | 158 | } |
| 132 | 159 | |
| 133 | 160 | trackUpdate(uuid: string, fn: Fn) { |
| ... | ... | @@ -144,8 +171,30 @@ class Subscriber { |
| 144 | 171 | } |
| 145 | 172 | |
| 146 | 173 | triggerUpdate(message: ReceiveMessageType) { |
| 174 | + if (message.errorCode) { | |
| 175 | + return; | |
| 176 | + } | |
| 177 | + | |
| 178 | + if (isEntityDataUpdateMsg(message)) { | |
| 179 | + return; | |
| 180 | + } | |
| 181 | + | |
| 182 | + if (isAlarmDataUpdateMsg(message)) { | |
| 183 | + this.triggerAlarmDataMesssage(message); | |
| 184 | + return; | |
| 185 | + } | |
| 186 | + | |
| 187 | + if (isEntityCountUpdateMsg(message)) { | |
| 188 | + return; | |
| 189 | + } | |
| 190 | + | |
| 191 | + if (message.subscriptionId) { | |
| 192 | + this.triggerTsSubCmdsMessage(message); | |
| 193 | + } | |
| 194 | + } | |
| 195 | + | |
| 196 | + triggerTsSubCmdsMessage(message: ReceiveTsSubCmdsMessageType) { | |
| 147 | 197 | const { subscriptionId } = message; |
| 148 | - if (isNullAndUnDef(subscriptionId)) return; | |
| 149 | 198 | const deviceId = this.subscriptionMap.get(subscriptionId); |
| 150 | 199 | if (!deviceId) return; |
| 151 | 200 | const deviceGroup = this.deviceGroupMap.get(deviceId); |
| ... | ... | @@ -179,6 +228,21 @@ class Subscriber { |
| 179 | 228 | } |
| 180 | 229 | }); |
| 181 | 230 | } |
| 231 | + | |
| 232 | + triggerAlarmDataMesssage(message: ReceiveAlarmDataCmdsMessageType) { | |
| 233 | + const { cmdId } = message; | |
| 234 | + const isCustomSubscribeMessage = this.customSubscribeMap.get(cmdId); | |
| 235 | + if (isCustomSubscribeMessage) { | |
| 236 | + const updateFn = isCustomSubscribeMessage.updateFn; | |
| 237 | + try { | |
| 238 | + updateFn?.(message); | |
| 239 | + } catch (error) { | |
| 240 | + console.error(`Custom subscribe message invoke update function failed`); | |
| 241 | + throw error; | |
| 242 | + } | |
| 243 | + return; | |
| 244 | + } | |
| 245 | + } | |
| 182 | 246 | } |
| 183 | 247 | |
| 184 | 248 | const subscriber = new Subscriber(); |
| ... | ... | @@ -206,12 +270,14 @@ export const useSocket = (dataSourceRef: Ref<WidgetDataType[]>) => { |
| 206 | 270 | |
| 207 | 271 | const initSubscribe = () => { |
| 208 | 272 | subscriber.clearSubscriber(); |
| 209 | - unref(dataSourceRef).forEach((item) => { | |
| 210 | - item.dataSource.forEach((temp) => { | |
| 273 | + | |
| 274 | + for (const item of unref(dataSourceRef)) { | |
| 275 | + if (CUSTOM_SUBSCRIBE_MESSAGE_COMPONENT_KEY_LIST.includes(item.frontId)) continue; | |
| 276 | + for (const temp of item.dataSource) { | |
| 211 | 277 | const { deviceId, slaveDeviceId, attribute, uuid } = temp; |
| 212 | 278 | subscriber.addSubscriber({ deviceId, slaveDeviceId, attribute, uuid }); |
| 213 | - }); | |
| 214 | - }); | |
| 279 | + } | |
| 280 | + } | |
| 215 | 281 | }; |
| 216 | 282 | |
| 217 | 283 | watch( |
| ... | ... | @@ -234,8 +300,34 @@ export const useSocket = (dataSourceRef: Ref<WidgetDataType[]>) => { |
| 234 | 300 | onUnmounted(() => { |
| 235 | 301 | close(); |
| 236 | 302 | }); |
| 303 | + | |
| 304 | + return { | |
| 305 | + send, | |
| 306 | + close, | |
| 307 | + }; | |
| 237 | 308 | }; |
| 238 | 309 | |
| 310 | +export function isEntityDataUpdateMsg( | |
| 311 | + message: ReceiveMessageType | |
| 312 | +): message is ReceiveEntityDataMessageType { | |
| 313 | + const updateMsg = message as CmdUpdateMsg; | |
| 314 | + return updateMsg.cmdId !== undefined && updateMsg.cmdUpdateType === CmdUpdateTypeEnum.ENTITY_DATA; | |
| 315 | +} | |
| 316 | + | |
| 317 | +export function isAlarmDataUpdateMsg( | |
| 318 | + message: ReceiveMessageType | |
| 319 | +): message is ReceiveAlarmDataCmdsMessageType { | |
| 320 | + const updateMsg = message as CmdUpdateMsg; | |
| 321 | + return updateMsg.cmdId !== undefined && updateMsg.cmdUpdateType === CmdUpdateTypeEnum.ALARM_DATA; | |
| 322 | +} | |
| 323 | + | |
| 324 | +export function isEntityCountUpdateMsg( | |
| 325 | + message: ReceiveMessageType | |
| 326 | +): message is ReceiveEntityCountMessageType { | |
| 327 | + const updateMsg = message as CmdUpdateMsg; | |
| 328 | + return updateMsg.cmdId !== undefined && updateMsg.cmdUpdateType === CmdUpdateTypeEnum.COUNT_DATA; | |
| 329 | +} | |
| 330 | + | |
| 239 | 331 | export const useDataFetch = ( |
| 240 | 332 | props: { config: ComponentPropsConfigType }, |
| 241 | 333 | updateFn: DataFetchUpdateFn |
| ... | ... | @@ -288,16 +380,6 @@ export const useMultipleDataFetch = ( |
| 288 | 380 | }); |
| 289 | 381 | |
| 290 | 382 | if (!Object.keys(unref(getDataSourceGroup)).length) return; |
| 291 | - // const getBindAttributes = computed(() => { | |
| 292 | - // const attributes = props.config.option.dataSource?.map((item) => item.attribute); | |
| 293 | - // return [...new Set(attributes)]; | |
| 294 | - // }); | |
| 295 | - | |
| 296 | - // if (!unref(getBindAttributes).length) return; | |
| 297 | - | |
| 298 | - // const getDeviceId = computed(() => { | |
| 299 | - // return props.config.option.dataSource?.at(0)?.deviceId; | |
| 300 | - // }); | |
| 301 | 383 | |
| 302 | 384 | watch( |
| 303 | 385 | () => getDataSourceGroup, |
| ... | ... | @@ -318,3 +400,23 @@ export const useMultipleDataFetch = ( |
| 318 | 400 | |
| 319 | 401 | return {}; |
| 320 | 402 | }; |
| 403 | + | |
| 404 | +export const useCustomDataFetch = ( | |
| 405 | + props: { config: ComponentPropsConfigType }, | |
| 406 | + transformMessage: Fn, | |
| 407 | + updateFn: Fn | |
| 408 | +) => { | |
| 409 | + const getUUID = computed(() => { | |
| 410 | + return props.config.option.uuid; | |
| 411 | + }); | |
| 412 | + | |
| 413 | + watch( | |
| 414 | + () => getUUID, | |
| 415 | + () => { | |
| 416 | + subscriber.customSubscribe(props.config.option.uuid, transformMessage, updateFn); | |
| 417 | + }, | |
| 418 | + { | |
| 419 | + immediate: true, | |
| 420 | + } | |
| 421 | + ); | |
| 422 | +}; | ... | ... |
| 1 | +export interface SubscribeMessageType { | |
| 2 | + tsSubCmds?: TsSubCmdsItemType[]; | |
| 3 | + alarmDataCmds?: AlarmDataCmdsItemType[]; | |
| 4 | + alarmDataUnsubscribeCmds?: UnsubscribeCmdsItemType[]; | |
| 5 | + attrSubCmds?: []; | |
| 6 | + entityCountCmds?: []; | |
| 7 | + entityCountUnsubscribeCmds?: UnsubscribeCmdsItemType[]; | |
| 8 | + entityDataCmds?: []; | |
| 9 | + entityDataUnsubscribeCmds?: UnsubscribeCmdsItemType[]; | |
| 10 | + historyCmds?: []; | |
| 11 | +} | |
| 12 | + | |
| 13 | +export interface UnsubscribeCmdsItemType { | |
| 14 | + cmdId: number; | |
| 15 | +} | |
| 16 | + | |
| 17 | +export enum CmdUpdateTypeEnum { | |
| 18 | + ENTITY_DATA = 'ENTITY_DATA', | |
| 19 | + ALARM_DATA = 'ALARM_DATA', | |
| 20 | + COUNT_DATA = 'COUNT_DATA', | |
| 21 | +} | |
| 22 | + | |
| 23 | +export interface AlarmDataCmdsItemType { | |
| 24 | + cmdId: number; | |
| 25 | +} | |
| 26 | + | |
| 27 | +export interface TsSubCmdsItemType { | |
| 28 | + cmdId: number; | |
| 29 | + entityId: string; | |
| 30 | + entityType: string; | |
| 31 | + keys?: string; | |
| 32 | + scope?: string; | |
| 33 | + unsubscribe?: boolean; | |
| 34 | +} | |
| 35 | + | |
| 36 | +export interface ReceiveTsSubCmdsMessageType { | |
| 37 | + subscriptionId: number; | |
| 38 | + errorCode: number; | |
| 39 | + errorMsg: Nullable<string>; | |
| 40 | + data: Record<string, [number, string][]>; | |
| 41 | + latestValues: Record<string, number>; | |
| 42 | +} | |
| 43 | + | |
| 44 | +export interface ReceiveTsSubCmdsGroupMessageType { | |
| 45 | + subscriptionId: number; | |
| 46 | + errorCode: number; | |
| 47 | + errorMsg: Nullable<string>; | |
| 48 | + data: { | |
| 49 | + string: Record<string, [number, string][]>; | |
| 50 | + }; | |
| 51 | + latestValues: { | |
| 52 | + string: Record<string, number>; | |
| 53 | + }; | |
| 54 | +} | |
| 55 | + | |
| 56 | +export interface PageData<T> { | |
| 57 | + data: T[]; | |
| 58 | + totalPages: number; | |
| 59 | + totalElements: number; | |
| 60 | + hasNext: boolean; | |
| 61 | +} | |
| 62 | + | |
| 63 | +export interface CmdUpdateMsg { | |
| 64 | + cmdId: number; | |
| 65 | + errorCode: number; | |
| 66 | + errorMsg: string; | |
| 67 | + cmdUpdateType: CmdUpdateTypeEnum; | |
| 68 | +} | |
| 69 | + | |
| 70 | +export interface DataUpdateMsg<T> extends CmdUpdateMsg { | |
| 71 | + data?: PageData<T>; | |
| 72 | + update?: T[]; | |
| 73 | +} | |
| 74 | + | |
| 75 | +export enum EntityType { | |
| 76 | + TENANT = 'TENANT', | |
| 77 | + TENANT_PROFILE = 'TENANT_PROFILE', | |
| 78 | + CUSTOMER = 'CUSTOMER', | |
| 79 | + USER = 'USER', | |
| 80 | + DASHBOARD = 'DASHBOARD', | |
| 81 | + ASSET = 'ASSET', | |
| 82 | + DEVICE = 'DEVICE', | |
| 83 | + DEVICE_PROFILE = 'DEVICE_PROFILE', | |
| 84 | + ASSET_PROFILE = 'ASSET_PROFILE', | |
| 85 | + ALARM = 'ALARM', | |
| 86 | + RULE_CHAIN = 'RULE_CHAIN', | |
| 87 | + RULE_NODE = 'RULE_NODE', | |
| 88 | + EDGE = 'EDGE', | |
| 89 | + ENTITY_VIEW = 'ENTITY_VIEW', | |
| 90 | + WIDGETS_BUNDLE = 'WIDGETS_BUNDLE', | |
| 91 | + WIDGET_TYPE = 'WIDGET_TYPE', | |
| 92 | + API_USAGE_STATE = 'API_USAGE_STATE', | |
| 93 | + TB_RESOURCE = 'TB_RESOURCE', | |
| 94 | + OTA_PACKAGE = 'OTA_PACKAGE', | |
| 95 | + RPC = 'RPC', | |
| 96 | + QUEUE = 'QUEUE', | |
| 97 | +} | |
| 98 | + | |
| 99 | +export enum AliasEntityType { | |
| 100 | + CURRENT_CUSTOMER = 'CURRENT_CUSTOMER', | |
| 101 | + CURRENT_TENANT = 'CURRENT_TENANT', | |
| 102 | + CURRENT_USER = 'CURRENT_USER', | |
| 103 | + CURRENT_USER_OWNER = 'CURRENT_USER_OWNER', | |
| 104 | +} | |
| 105 | + | |
| 106 | +export interface HasUUID { | |
| 107 | + id: string; | |
| 108 | +} | |
| 109 | + | |
| 110 | +export interface TsValue { | |
| 111 | + ts: number; | |
| 112 | + value: string; | |
| 113 | + count?: number; | |
| 114 | +} | |
| 115 | + | |
| 116 | +export interface EntityId extends HasUUID { | |
| 117 | + entityType: EntityType | AliasEntityType; | |
| 118 | +} | |
| 119 | + | |
| 120 | +export interface ComparisonTsValue { | |
| 121 | + current?: TsValue; | |
| 122 | + previous?: TsValue; | |
| 123 | +} | |
| 124 | + | |
| 125 | +export interface EntityData { | |
| 126 | + entityId: EntityId; | |
| 127 | + latest: { [entityKeyType: string]: { [key: string]: TsValue } }; | |
| 128 | + timeseries: { [key: string]: TsValue[] }; | |
| 129 | + aggLatest?: { [id: number]: ComparisonTsValue }; | |
| 130 | +} | |
| 131 | + | |
| 132 | +/** | |
| 133 | + * @description entity data receive message | |
| 134 | + */ | |
| 135 | +export interface ReceiveEntityDataMessageType extends DataUpdateMsg<EntityData> { | |
| 136 | + cmdUpdateType: CmdUpdateTypeEnum.ENTITY_DATA; | |
| 137 | +} | |
| 138 | + | |
| 139 | +/** | |
| 140 | + * @description 告警 | |
| 141 | + */ | |
| 142 | +export interface ReceiveAlarmDataCmdsMessageType extends DataUpdateMsg<Recordable> { | |
| 143 | + cmdUpdateType: CmdUpdateTypeEnum.ALARM_DATA; | |
| 144 | + allowedEntities: number; | |
| 145 | + totalEntities: number; | |
| 146 | +} | |
| 147 | + | |
| 148 | +/** | |
| 149 | + * @description entity count receive message | |
| 150 | + */ | |
| 151 | +export interface ReceiveEntityCountMessageType extends CmdUpdateMsg { | |
| 152 | + cmdUpdateType: CmdUpdateTypeEnum.COUNT_DATA; | |
| 153 | + count: number; | |
| 154 | +} | |
| 155 | + | |
| 156 | +/** | |
| 157 | + * @description 接受消息 | |
| 158 | + */ | |
| 159 | +export type ReceiveMessageType = | |
| 160 | + | ReceiveTsSubCmdsMessageType | |
| 161 | + | ReceiveAlarmDataCmdsMessageType | |
| 162 | + | ReceiveEntityDataMessageType | |
| 163 | + | ReceiveEntityCountMessageType; | |
| 164 | + | |
| 165 | +export enum EntityTypeEnum { | |
| 166 | + DEVICE = 'DEVICE', | |
| 167 | +} | |
| 168 | + | |
| 169 | +export enum ScopeTypeEnum { | |
| 170 | + LATEST_TELEMERY = 'LATEST_TELEMERY', | |
| 171 | +} | |
| 172 | + | |
| 173 | +export enum AttributeScopeEnum { | |
| 174 | + CLIENT_SCOPE = 'CLIENT_SCOPE', | |
| 175 | + SERVER_SCOPE = 'SERVER_SCOPE', | |
| 176 | + SHARED_SCOPE = 'SHARED_SCOPE', | |
| 177 | +} | |
| 178 | + | |
| 179 | +export type DataFetchUpdateFn = (message: ReceiveTsSubCmdsMessageType, attr: string) => void; | |
| 180 | + | |
| 181 | +export type MultipleDataFetchUpdateFn = ( | |
| 182 | + message: ReceiveTsSubCmdsGroupMessageType, | |
| 183 | + deviceId: string, | |
| 184 | + attr: string[] | |
| 185 | +) => void; | ... | ... |
| 1 | -import { ReceiveGroupMessageType } from '../index.type'; | |
| 1 | +import { ReceiveTsSubCmdsGroupMessageType } from '../index.type'; | |
| 2 | 2 | |
| 3 | 3 | export const useReceiveMessage = () => { |
| 4 | 4 | const forEachGroupMessage = ( |
| 5 | - message: ReceiveGroupMessageType, | |
| 5 | + message: ReceiveTsSubCmdsGroupMessageType, | |
| 6 | 6 | deviceId: string, |
| 7 | 7 | attributes: string[], |
| 8 | 8 | Fn: (attribute: string, value: any, timespan: number) => void | ... | ... |
| ... | ... | @@ -140,68 +140,3 @@ export interface PackagesType { |
| 140 | 140 | // [PackagesCategoryEnum.STATISTICS]: ConfigType[]; |
| 141 | 141 | [PackagesCategoryEnum.OTHER]: ConfigType[]; |
| 142 | 142 | } |
| 143 | - | |
| 144 | -export interface SubscribeMessageType { | |
| 145 | - tsSubCmds: SubscribeMessageItemType[]; | |
| 146 | -} | |
| 147 | - | |
| 148 | -export interface SubscribeMessageItemType { | |
| 149 | - cmdId: number; | |
| 150 | - entityId: string; | |
| 151 | - entityType: string; | |
| 152 | - keys?: string; | |
| 153 | - scope?: string; | |
| 154 | - unsubscribe?: boolean; | |
| 155 | -} | |
| 156 | - | |
| 157 | -export interface ReceiveMessageType { | |
| 158 | - subscriptionId: number; | |
| 159 | - errorCode: number; | |
| 160 | - errorMsg: Nullable<string>; | |
| 161 | - data: Record<string, [number, string][]>; | |
| 162 | - latestValues: Record<string, number>; | |
| 163 | -} | |
| 164 | - | |
| 165 | -export interface ReceiveGroupMessageType { | |
| 166 | - subscriptionId: number; | |
| 167 | - errorCode: number; | |
| 168 | - errorMsg: Nullable<string>; | |
| 169 | - data: { | |
| 170 | - string: Record<string, [number, string][]>; | |
| 171 | - }; | |
| 172 | - latestValues: { | |
| 173 | - string: Record<string, number>; | |
| 174 | - }; | |
| 175 | -} | |
| 176 | - | |
| 177 | -export enum EntityTypeEnum { | |
| 178 | - DEVICE = 'DEVICE', | |
| 179 | -} | |
| 180 | - | |
| 181 | -export enum ScopeTypeEnum { | |
| 182 | - LATEST_TELEMERY = 'LATEST_TELEMERY', | |
| 183 | -} | |
| 184 | - | |
| 185 | -export type DataFetchUpdateFn = (message: ReceiveMessageType, attr: string) => void; | |
| 186 | - | |
| 187 | -export type MultipleDataFetchUpdateFn = ( | |
| 188 | - message: ReceiveGroupMessageType, | |
| 189 | - deviceId: string, | |
| 190 | - attr: string[] | |
| 191 | -) => void; | |
| 192 | - | |
| 193 | -// 旧 组件key | |
| 194 | -// TEXT_COMPONENT_1 = 'text-component-1', | |
| 195 | -// TEXT_COMPONENT_2 = 'text-component-2', | |
| 196 | -// TEXT_COMPONENT_3 = 'text-component-3', | |
| 197 | -// TEXT_COMPONENT_4 = 'text-component-4', | |
| 198 | -// TEXT_COMPONENT_5 = 'text-component-5', | |
| 199 | -// INSTRUMENT_COMPONENT_1 = 'instrument-component-1', | |
| 200 | -// INSTRUMENT_COMPONENT_2 = 'instrument-component-2', | |
| 201 | -// DIGITAL_DASHBOARD_COMPONENT = 'digital-dashboard-component', | |
| 202 | -// PICTURE_COMPONENT_1 = 'picture-component-1', | |
| 203 | -// CONTROL_COMPONENT_TOGGLE_SWITCH = 'control-component-toggle-switch', | |
| 204 | -// CONTROL_COMPONENT_SWITCH_WITH_ICON = 'control-component-switch-with-icon', | |
| 205 | -// CONTROL_COMPONENT_SLIDING_SWITCH = 'control-component-sliding-switch', | |
| 206 | -// MAP_COMPONENT_TRACK_REAL = 'map-component-track-real', | |
| 207 | -// MAP_COMPONENT_TRACK_HISTORY = 'map-component-track-history', | ... | ... |
| ... | ... | @@ -18,3 +18,8 @@ export const packageList: PackagesType = { |
| 18 | 18 | // [PackagesCategoryEnum.STATISTICS]: STATISTICSList, |
| 19 | 19 | [PackagesCategoryEnum.OTHER]: OtherList, |
| 20 | 20 | }; |
| 21 | + | |
| 22 | +/** | |
| 23 | + * @description | |
| 24 | + */ | |
| 25 | +export const CUSTOM_SUBSCRIBE_MESSAGE_COMPONENT_KEY_LIST: string[] = []; | ... | ... |
| 1 | +import { inject, provide } from 'vue'; | |
| 2 | + | |
| 3 | +const SymbolKey = Symbol('data-board'); | |
| 4 | + | |
| 5 | +export interface ContextOptionsType { | |
| 6 | + send: (data: string | ArrayBuffer | Blob, useBuffer?: boolean | undefined) => boolean; | |
| 7 | + close: (code?: number | undefined, reason?: string | undefined) => void; | |
| 8 | +} | |
| 9 | + | |
| 10 | +export const createDataBoardContext = (options: ContextOptionsType) => { | |
| 11 | + provide(SymbolKey, options); | |
| 12 | +}; | |
| 13 | + | |
| 14 | +export const useDataBoardContext = () => { | |
| 15 | + return inject<ContextOptionsType>(SymbolKey) || ({} as Partial<ContextOptionsType>); | |
| 16 | +}; | ... | ... |
| ... | ... | @@ -25,10 +25,11 @@ |
| 25 | 25 | import { ModalParamsType } from '/#/utils'; |
| 26 | 26 | import { DataActionModeEnum } from '/@/enums/toolEnum'; |
| 27 | 27 | import { HistoryTrendModal } from './components/HistoryTrendModal'; |
| 28 | - import { useSocket } from '../packages/hook/useSocket'; | |
| 29 | 28 | import { watch } from 'vue'; |
| 30 | 29 | import { useRootSetting } from '/@/hooks/setting/useRootSetting'; |
| 31 | 30 | import { ThemeEnum } from '/@/enums/appEnum'; |
| 31 | + import { createDataBoardContext } from './hooks/useDataBoardContext'; | |
| 32 | + import { useSocket } from '/@/views/visual/packages/hook/socket/useSocket'; | |
| 32 | 33 | |
| 33 | 34 | const props = defineProps<{ |
| 34 | 35 | value?: Recordable; |
| ... | ... | @@ -72,7 +73,9 @@ |
| 72 | 73 | openTrendModal(true, { mode: DataActionModeEnum.READ, record: data } as ModalParamsType); |
| 73 | 74 | }; |
| 74 | 75 | |
| 75 | - useSocket(dataSource); | |
| 76 | + const { send, close } = useSocket(dataSource); | |
| 77 | + | |
| 78 | + createDataBoardContext({ send, close }); | |
| 76 | 79 | |
| 77 | 80 | const { getDarkMode } = useRootSetting(); |
| 78 | 81 | watch( |
| ... | ... | @@ -164,3 +167,4 @@ |
| 164 | 167 | </template> |
| 165 | 168 | |
| 166 | 169 | <style lang="less" scoped></style> |
| 170 | +../packages/hook/socket/useSocket | ... | ... |