mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-05 05:29:26 +08:00
feat(data-vi): allows pie chart to accept negative numbers, fix T-4075 (#4094)
This commit is contained in:
parent
2d9ed8d1ff
commit
067042ac3a
@ -32,15 +32,29 @@ export class Pie extends G2PlotChart {
|
||||
};
|
||||
|
||||
getProps({ data, general, advanced, fieldProps }: RenderProps) {
|
||||
const angleFieldProps = fieldProps[general.angleField];
|
||||
const angleField = general.angleField;
|
||||
const angleFieldProps: any = fieldProps[angleField] || {};
|
||||
const hasMinus = data.some((item: any) => item[angleField] < 0);
|
||||
if (hasMinus) {
|
||||
const min = Math.min(...data.map((item: any) => item[angleField]));
|
||||
data = data.map((item: any) => ({
|
||||
...item,
|
||||
[angleField]: item[angleField] - min,
|
||||
}));
|
||||
const transformer = angleFieldProps.transformer;
|
||||
angleFieldProps.transformer = (value: number) => {
|
||||
const v = value + min;
|
||||
return transformer ? transformer(v) : v;
|
||||
};
|
||||
}
|
||||
const props = super.getProps({ data, general, advanced, fieldProps });
|
||||
return {
|
||||
...props,
|
||||
tooltip: {
|
||||
items: [
|
||||
(data: any) => {
|
||||
const { [general.colorField]: color, [general.angleField]: angle } = data;
|
||||
const name = color || angleFieldProps?.label || general.angleField;
|
||||
const { [general.colorField]: color, [angleField]: angle } = data;
|
||||
const name = color || angleFieldProps?.label || angleField;
|
||||
const transformer = angleFieldProps?.transformer;
|
||||
return { name, value: transformer ? transformer(angle) : angle };
|
||||
},
|
||||
|
@ -174,11 +174,11 @@ const transformers: {
|
||||
fn: (val: number, separator: string) => {
|
||||
switch (separator) {
|
||||
case 'en-US':
|
||||
return val.toLocaleString('en-US', { maximumFractionDigits: 2 });
|
||||
return val.toLocaleString('en-US', { minimumFractionDigits: 2 });
|
||||
case 'de-DE':
|
||||
return val.toLocaleString('de-DE', { maximumFractionDigits: 2 });
|
||||
return val.toLocaleString('de-DE', { minimumFractionDigits: 2 });
|
||||
case 'ru-RU':
|
||||
return val.toLocaleString('ru-RU', { maximumFractionDigits: 2 });
|
||||
return val.toLocaleString('ru-RU', { minimumFractionDigits: 2 });
|
||||
default:
|
||||
return val;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user