Commit 7cdca435498ecf13358287e7e9538a7026a8e0dd
1 parent
bf9d205b
perf: data board component chart component update color not update immediate
Showing
2 changed files
with
44 additions
and
8 deletions
@@ -79,15 +79,20 @@ | @@ -79,15 +79,20 @@ | ||
79 | const getUpdateValueFn = (componentType: InstrumentComponentType) => { | 79 | const getUpdateValueFn = (componentType: InstrumentComponentType) => { |
80 | if (componentType === 'instrument-component-1') return update_instrument_1_value; | 80 | if (componentType === 'instrument-component-1') return update_instrument_1_value; |
81 | if (componentType === 'instrument-component-2') return update_instrument_2_value; | 81 | if (componentType === 'instrument-component-2') return update_instrument_2_value; |
82 | - return (_radio: number) => {}; | 82 | + return (_radio: DashBoardValue) => {}; |
83 | }; | 83 | }; |
84 | 84 | ||
85 | - const updateChartValue = useThrottleFn((newValue) => { | 85 | + const updateChartValue = useThrottleFn(() => { |
86 | const updateFn = getUpdateValueFn(props.layout.componentType); | 86 | const updateFn = getUpdateValueFn(props.layout.componentType); |
87 | - unref(chartRef)?.setOption((updateFn(newValue || 0) as unknown as EChartsOption) || {}); | 87 | + unref(chartRef)?.setOption((updateFn(props.value) as unknown as EChartsOption) || {}); |
88 | }, 500); | 88 | }, 500); |
89 | 89 | ||
90 | - watch(() => props.value.value, updateChartValue); | 90 | + watch(() => props.value, updateChartValue); |
91 | + | ||
92 | + // watch( | ||
93 | + // () => [props.value.gradientInfo, props.value.unit, props.value.valueColor, props.value.name], | ||
94 | + // updateChartValue | ||
95 | + // ); | ||
91 | 96 | ||
92 | const updateChartFont = useThrottleFn(() => { | 97 | const updateChartFont = useThrottleFn(() => { |
93 | const option = beforeUpdateFn(props.layout.componentType); | 98 | const option = beforeUpdateFn(props.layout.componentType); |
@@ -110,7 +115,9 @@ | @@ -110,7 +115,9 @@ | ||
110 | function handleRandomValue() { | 115 | function handleRandomValue() { |
111 | const newValue = Math.floor(Math.random() * 100); | 116 | const newValue = Math.floor(Math.random() * 100); |
112 | const updateFn = getUpdateValueFn(props.layout.componentType); | 117 | const updateFn = getUpdateValueFn(props.layout.componentType); |
113 | - unref(chartRef)?.setOption((updateFn(newValue) as unknown as EChartsOption) || {}); | 118 | + unref(chartRef)?.setOption( |
119 | + (updateFn({ ...props.value, value: newValue }) as unknown as EChartsOption) || {} | ||
120 | + ); | ||
114 | } | 121 | } |
115 | 122 | ||
116 | onMounted(() => { | 123 | onMounted(() => { |
@@ -32,7 +32,7 @@ export interface DashBoardValue { | @@ -32,7 +32,7 @@ export interface DashBoardValue { | ||
32 | name?: string; | 32 | name?: string; |
33 | updateTime?: string; | 33 | updateTime?: string; |
34 | value?: number; | 34 | value?: number; |
35 | - valueColor?: string; | 35 | + fontColor?: string; |
36 | gradientInfo?: GradientInfoRecord[]; | 36 | gradientInfo?: GradientInfoRecord[]; |
37 | } | 37 | } |
38 | 38 | ||
@@ -277,11 +277,16 @@ const handleValue = (value: any) => { | @@ -277,11 +277,16 @@ const handleValue = (value: any) => { | ||
277 | return Number(value).toFixed(2); | 277 | return Number(value).toFixed(2); |
278 | }; | 278 | }; |
279 | 279 | ||
280 | -export const update_instrument_1_value = (value: number) => { | 280 | +export const update_instrument_1_value = (params: DashBoardValue) => { |
281 | + const { value = 0, unit = '°C', fontColor } = params; | ||
281 | return { | 282 | return { |
282 | series: [ | 283 | series: [ |
283 | { | 284 | { |
284 | data: [{ value: handleValue(value) }], | 285 | data: [{ value: handleValue(value) }], |
286 | + detail: { | ||
287 | + formatter: `{value} ${unit ?? ''}`, | ||
288 | + color: fontColor || 'inherit', | ||
289 | + }, | ||
285 | }, | 290 | }, |
286 | { | 291 | { |
287 | data: [{ value: handleValue(value) }], | 292 | data: [{ value: handleValue(value) }], |
@@ -290,11 +295,35 @@ export const update_instrument_1_value = (value: number) => { | @@ -290,11 +295,35 @@ export const update_instrument_1_value = (value: number) => { | ||
290 | } as EChartsOption; | 295 | } as EChartsOption; |
291 | }; | 296 | }; |
292 | 297 | ||
293 | -export const update_instrument_2_value = (value: number) => { | 298 | +export const update_instrument_2_value = (params: DashBoardValue) => { |
299 | + const { value = 0, unit = 'km/h', fontColor, gradientInfo } = params; | ||
300 | + const firstRecord = getGradient(Gradient.FIRST, gradientInfo); | ||
301 | + const secondRecord = getGradient(Gradient.SECOND, gradientInfo); | ||
302 | + const thirdRecord = getGradient(Gradient.THIRD, gradientInfo); | ||
303 | + | ||
304 | + let max = thirdRecord?.value || secondRecord?.value || firstRecord?.value || 70; | ||
305 | + max = Number(1 + Array(String(max).length).fill(0).join('')); | ||
306 | + | ||
307 | + const firstGradient = firstRecord?.value ? firstRecord.value / max : 0.3; | ||
308 | + const secondGradient = secondRecord?.value ? secondRecord.value / max : 0.7; | ||
294 | return { | 309 | return { |
295 | series: [ | 310 | series: [ |
296 | { | 311 | { |
297 | data: [{ value: handleValue(value) }], | 312 | data: [{ value: handleValue(value) }], |
313 | + detail: { | ||
314 | + formatter: `{value} ${unit ?? ''}`, | ||
315 | + color: fontColor || 'inherit', | ||
316 | + }, | ||
317 | + axisLine: { | ||
318 | + lineStyle: { | ||
319 | + width: 20, | ||
320 | + color: [ | ||
321 | + [firstGradient, firstRecord?.color || GradientColor.FIRST], | ||
322 | + [secondGradient, secondRecord?.color || GradientColor.SECOND], | ||
323 | + [1, thirdRecord?.color || GradientColor.THIRD], | ||
324 | + ], | ||
325 | + }, | ||
326 | + }, | ||
298 | }, | 327 | }, |
299 | ], | 328 | ], |
300 | } as EChartsOption; | 329 | } as EChartsOption; |