Commit f31d67db8aa13f15f88c56ffab891dcb7acfcd2b

Authored by xp.Huang
2 parents 0c14c69f e1e1638d

Merge branch 'fix/line-real-time' into 'main_dev'

fix: 修改h实时数据折线图名称标识符改成名称

See merge request yunteng/thingskit-view!200
@@ -8,7 +8,7 @@ export const includes = ['legend', 'xAxis', 'yAxis', 'grid'] @@ -8,7 +8,7 @@ export const includes = ['legend', 'xAxis', 'yAxis', 'grid']
8 export const seriesItem = { 8 export const seriesItem = {
9 type: 'line', 9 type: 'line',
10 label: { 10 label: {
11 - show: true, 11 + show: false,
12 position: 'top', 12 position: 'top',
13 color: '#fff', 13 color: '#fff',
14 fontSize: 12 14 fontSize: 12
@@ -205,23 +205,28 @@ watch( @@ -205,23 +205,28 @@ watch(
205 //fix 修复v-chart图表绑定联动组件视图不更新问题 205 //fix 修复v-chart图表绑定联动组件视图不更新问题
206 const updateVChart = (newData: SocketReceiveMessageType) => { 206 const updateVChart = (newData: SocketReceiveMessageType) => {
207 if (!newData) return 207 if (!newData) return
208 - const { option } = props.chartConfig 208 + const { option,request } = props.chartConfig
  209 + const {requestParams:{Params:{attrName}}} = request || {}
209 const { dataset: overrideDataset } = option 210 const { dataset: overrideDataset } = option
210 const { dimensions } = overrideDataset 211 const { dimensions } = overrideDataset
211 if (!Array.isArray(dimensions)) return 212 if (!Array.isArray(dimensions)) return
212 const { data } = newData 213 const { data } = newData
213 - const { keys, record } = useAssembleDataHooks(data,dimensions) 214 + const { record } = useAssembleDataHooks(data,dimensions,(attrName as any))
214 if (unref(realTimeList).length >= chartMaxDataPoint.value) { 215 if (unref(realTimeList).length >= chartMaxDataPoint.value) {
215 unref(realTimeList).splice(0, 1) 216 unref(realTimeList).splice(0, 1)
216 } 217 }
217 realTimeList.value.push(record) 218 realTimeList.value.push(record)
218 - const dataset = {  
219 - dimensions: ['ts', ...keys], 219 + const dataset = {
  220 + dimensions: ['ts', ...attrName],
220 source: toRaw(unref(realTimeList)) 221 source: toRaw(unref(realTimeList))
221 } 222 }
  223 + option.series.forEach((item:any,index:number)=>{
  224 + item.name = attrName?.[index]
  225 + })
222 vChartRef.value?.setOption({ 226 vChartRef.value?.setOption({
223 - ...option.value,  
224 - dataset 227 + ...option,
  228 + dataset,
  229 + legend:{data:attrName || []}
225 }) 230 })
226 } 231 }
227 const { vChartRef } = useChartDataFetch(props.chartConfig, useChartEditStore, newData => { 232 const { vChartRef } = useChartDataFetch(props.chartConfig, useChartEditStore, newData => {
@@ -3,9 +3,10 @@ @@ -3,9 +3,10 @@
3 * @param data {'wendu':[[xxxxxx,xxxx]]} 3 * @param data {'wendu':[[xxxxxx,xxxx]]}
4 * @returns keys:[xx,xx,xx] record:{'x':'xx'} 4 * @returns keys:[xx,xx,xx] record:{'x':'xx'}
5 */ 5 */
  6 +import { isNullOrUnDef } from '@/utils/external/is'
6 import dayjs from 'dayjs' 7 import dayjs from 'dayjs'
7 8
8 -export const useAssembleDataHooks = (data: Record<string, string | [number, string]>, dimensions: string[]) => { 9 +export const useAssembleDataHooks = (data: Record<string, string | [number, string]>, dimensions: string[],attrName?:string[]) => {
9 const formatValueToNumber = (value: string | number, defaultValue = 0) => 10 const formatValueToNumber = (value: string | number, defaultValue = 0) =>
10 isNaN(value as number) ? defaultValue : Number(value) 11 isNaN(value as number) ? defaultValue : Number(value)
11 const tempObj: Recordable = {} 12 const tempObj: Recordable = {}
@@ -17,11 +18,12 @@ export const useAssembleDataHooks = (data: Record<string, string | [number, stri @@ -17,11 +18,12 @@ export const useAssembleDataHooks = (data: Record<string, string | [number, stri
17 }) 18 })
18 }) 19 })
19 const keys = Object.keys(tempObj) 20 const keys = Object.keys(tempObj)
20 - const record = keys.reduce((prev, next) => { 21 + const record = keys.reduce((prev, next,index) => {
21 const [latest] = data[next] || [] 22 const [latest] = data[next] || []
  23 + if (isNullOrUnDef(latest)) return prev
22 const [ts, value] = latest as unknown as string[] 24 const [ts, value] = latest as unknown as string[]
23 //把值转为number类型 wendu:"23" 转为 wendu:23 25 //把值转为number类型 wendu:"23" 转为 wendu:23
24 - return { ...prev, ts: dayjs(ts).format('YYYY-MM-DD HH:mm:ss'), [next]: formatValueToNumber(value) } 26 + return { ...prev, ts: dayjs(ts).format('YYYY-MM-DD HH:mm:ss'),[ attrName![index]]: formatValueToNumber(value) }
25 }, {}) 27 }, {})
26 28
27 return { 29 return {
@@ -327,7 +327,8 @@ export const useSocketStore = defineStore({ @@ -327,7 +327,8 @@ export const useSocketStore = defineStore({
327 try { 327 try {
328 fn?.(value) 328 fn?.(value)
329 } catch (error) { 329 } catch (error) {
330 - throw `componentIds: ${componentIds} call update function happend error!` 330 + console.error(`componentIds: ${componentIds} call update function happend error!`)
  331 + throw error
331 } 332 }
332 this.updateComponentById(targetComponentId as string, value) 333 this.updateComponentById(targetComponentId as string, value)
333 }) 334 })
@@ -19,7 +19,8 @@ export enum BuiltInVariable { @@ -19,7 +19,8 @@ export enum BuiltInVariable {
19 DEVICE_PROFILE_ID = 'deviceProfileId', 19 DEVICE_PROFILE_ID = 'deviceProfileId',
20 DATE_FIXED = 'fixed_date', 20 DATE_FIXED = 'fixed_date',
21 DATE_RANGE = 'date_range', 21 DATE_RANGE = 'date_range',
22 - SELECT_TIME_AGGREGATION = 'selectTimeAggregation' 22 + SELECT_TIME_AGGREGATION = 'selectTimeAggregation',
  23 + ATTR_NAME='attrName'
23 } 24 }
24 25
25 export enum ComponentType { 26 export enum ComponentType {
@@ -134,7 +135,6 @@ export const useDynamicPublicForm = (paramsItemList: Ref<ParamsItemType[]>) => { @@ -134,7 +135,6 @@ export const useDynamicPublicForm = (paramsItemList: Ref<ParamsItemType[]>) => {
134 135
135 const getValue = computed(() => { 136 const getValue = computed(() => {
136 const value = { ...unref(params) } 137 const value = { ...unref(params) }
137 -  
138 if (Reflect.has(value, BuiltInVariable.DATE_FIXED)) { 138 if (Reflect.has(value, BuiltInVariable.DATE_FIXED)) {
139 const fieldMapping = unref(getParams).find(item => item.key === BuiltInVariable.DATE_FIXED) 139 const fieldMapping = unref(getParams).find(item => item.key === BuiltInVariable.DATE_FIXED)
140 Reflect.set(value, fieldMapping?.value || '', value[BuiltInVariable.DATE_FIXED]) 140 Reflect.set(value, fieldMapping?.value || '', value[BuiltInVariable.DATE_FIXED])
@@ -229,8 +229,12 @@ export const useDynamicPublicForm = (paramsItemList: Ref<ParamsItemType[]>) => { @@ -229,8 +229,12 @@ export const useDynamicPublicForm = (paramsItemList: Ref<ParamsItemType[]>) => {
229 labelField: 'name', 229 labelField: 'name',
230 valueField: 'identifier', 230 valueField: 'identifier',
231 multiple: true, 231 multiple: true,
232 - onUpdateValue(value) { 232 + onUpdateValue(value:any) {
233 params[BuiltInVariable.KEYS] = value 233 params[BuiltInVariable.KEYS] = value
  234 + //保存物模型name
  235 + const attrNameList = unref(optionsSet[BuiltInVariable.KEYS])
  236 +
  237 + params[BuiltInVariable.ATTR_NAME] = value.map((item:any) => attrNameList.find((temp:any)=>temp.identifier==item).name)
234 } 238 }
235 } 239 }
236 }) 240 })