diff --git a/frontend/src/views/chat/component/charts/Bar.ts b/frontend/src/views/chat/component/charts/Bar.ts index 69392bb7..7cda365e 100644 --- a/frontend/src/views/chat/component/charts/Bar.ts +++ b/frontend/src/views/chat/component/charts/Bar.ts @@ -7,6 +7,7 @@ import { getAxesWithFilter, processMultiQuotaData, } from '@/views/chat/component/charts/utils.ts' +import { some } from 'lodash-es' export class Bar extends BaseG2Chart { constructor(id: string) { @@ -106,7 +107,7 @@ export class Bar extends BaseG2Chart { labelAutoWrap: true, labelAutoEllipsis: true, labelFormatter: (value: any) => { - const formatted = axes.y[0].formatNumber ? formatNumber(value) : value + const formatted = some(axes.y, 'formatNumber') ? formatNumber(value) : value return String(formatted) }, }, @@ -125,7 +126,11 @@ export class Bar extends BaseG2Chart { tooltip: { series: series.length > 0, shared: true }, }, tooltip: (data: any) => { - const v = y[0].formatNumber ? formatNumber(data[y[0].value]) : data[y[0].value] + let isFormat = y[0].formatNumber + if (axes.multiQuota.length > 0) { + isFormat = data['sqlbot_axis_format'] + } + const v = isFormat ? formatNumber(data[y[0].value]) : data[y[0].value] if (series.length > 0) { const s = series[0].formatNumber ? formatNumber(data[series[0].value]) @@ -146,10 +151,14 @@ export class Bar extends BaseG2Chart { { text: (data: any) => { const value = data[y[0].value] + let isFormat = y[0].formatNumber + if (axes.multiQuota.length > 0) { + isFormat = data['sqlbot_axis_format'] + } if (value === undefined || value === null) { return '' } - const v = y[0].formatNumber ? formatNumber(value) : value + const v = isFormat ? formatNumber(value) : value return `${v}${_data.isPercent ? '%' : ''}` }, position: (data: any) => { diff --git a/frontend/src/views/chat/component/charts/Column.ts b/frontend/src/views/chat/component/charts/Column.ts index db0c20d8..56f19f99 100644 --- a/frontend/src/views/chat/component/charts/Column.ts +++ b/frontend/src/views/chat/component/charts/Column.ts @@ -7,6 +7,7 @@ import { getAxesWithFilter, processMultiQuotaData, } from '@/views/chat/component/charts/utils.ts' +import { some } from 'lodash-es' export class Column extends BaseG2Chart { constructor(id: string) { @@ -97,7 +98,7 @@ export class Column extends BaseG2Chart { y: { title: false, // y[0].name, labelFormatter: (value: any) => { - const formatted = axes.y[0].formatNumber ? formatNumber(value) : value + const formatted = some(axes.y, 'formatNumber') ? formatNumber(value) : value return String(formatted) }, }, @@ -116,7 +117,11 @@ export class Column extends BaseG2Chart { tooltip: { series: series.length > 0, shared: true }, }, tooltip: (data: any) => { - const v = y[0].formatNumber ? formatNumber(data[y[0].value]) : data[y[0].value] + let isFormat = y[0].formatNumber + if (axes.multiQuota.length > 0) { + isFormat = data['sqlbot_axis_format'] + } + const v = isFormat ? formatNumber(data[y[0].value]) : data[y[0].value] if (series.length > 0) { const s = series[0].formatNumber ? formatNumber(data[series[0].value]) @@ -137,10 +142,14 @@ export class Column extends BaseG2Chart { { text: (data: any) => { const value = data[y[0].value] + let isFormat = y[0].formatNumber + if (axes.multiQuota.length > 0) { + isFormat = data['sqlbot_axis_format'] + } if (value === undefined || value === null) { return '' } - const v = y[0].formatNumber ? formatNumber(value) : value + const v = isFormat ? formatNumber(value) : value return `${v}${_data.isPercent ? '%' : ''}` }, position: (data: any) => { diff --git a/frontend/src/views/chat/component/charts/Line.ts b/frontend/src/views/chat/component/charts/Line.ts index 062a503e..30f45b8c 100644 --- a/frontend/src/views/chat/component/charts/Line.ts +++ b/frontend/src/views/chat/component/charts/Line.ts @@ -7,6 +7,7 @@ import { getAxesWithFilter, processMultiQuotaData, } from '@/views/chat/component/charts/utils.ts' +import { some } from 'lodash-es' export class Line extends BaseG2Chart { constructor(id: string) { @@ -71,7 +72,7 @@ export class Line extends BaseG2Chart { y: { title: false, // y[0].name, labelFormatter: (value: any) => { - const formatted = axes.y[0].formatNumber ? formatNumber(value) : value + const formatted = some(axes.y, 'formatNumber') ? formatNumber(value) : value return String(formatted) }, }, @@ -96,10 +97,14 @@ export class Line extends BaseG2Chart { { text: (data: any) => { const value = data[y[0].value] + let isFormat = y[0].formatNumber + if (axes.multiQuota.length > 0) { + isFormat = data['sqlbot_axis_format'] + } if (value === undefined || value === null) { return '' } - const v = y[0].formatNumber ? formatNumber(value) : value + const v = isFormat ? formatNumber(value) : value return `${v}${_data.isPercent ? '%' : ''}` }, style: { @@ -115,7 +120,11 @@ export class Line extends BaseG2Chart { ] : [], tooltip: (data: any) => { - const v = y[0].formatNumber ? formatNumber(data[y[0].value]) : data[y[0].value] + let isFormat = y[0].formatNumber + if (axes.multiQuota.length > 0) { + isFormat = data['sqlbot_axis_format'] + } + const v = isFormat ? formatNumber(data[y[0].value]) : data[y[0].value] if (series.length > 0) { const s = series[0].formatNumber ? formatNumber(data[series[0].value]) diff --git a/frontend/src/views/chat/component/charts/utils.ts b/frontend/src/views/chat/component/charts/utils.ts index 89e8a4a2..67a79a27 100644 --- a/frontend/src/views/chat/component/charts/utils.ts +++ b/frontend/src/views/chat/component/charts/utils.ts @@ -84,9 +84,9 @@ export function processMultiQuotaData( data: Array ) { const _list: Array = [] - const _map: { [propName: string]: string } = {} + const _map: { [propName: string]: ChartAxis } = {} y.forEach((axis) => { - _map[axis.value] = axis.name + _map[axis.value] = axis }) for (const datum of data) { multiQuota.forEach((quota) => { @@ -95,7 +95,8 @@ export function processMultiQuotaData( _data[xAxis.value] = datum[xAxis.value] } _data['sqlbot_auto_quota'] = datum[quota] - _data['sqlbot_auto_series'] = _map[quota] + _data['sqlbot_auto_series'] = _map[quota].name + _data['sqlbot_axis_format'] = _map[quota].formatNumber _list.push(_data) }) }