@antv/g2plot
Version:
An interactive and responsive charting library
52 lines (48 loc) • 1.35 kB
text/typescript
import { each, every, isString } from '@antv/util';
import { Data } from '../../types';
import { processIllegalData } from '../../utils';
import { PieOptions } from './types';
/**
* 获取总计值
* @param data
* @param field
*/
export function getTotalValue(data: Data, field: string) {
let total = null;
each(data, (item) => {
if (typeof item[field] === 'number') {
total += item[field];
}
});
return total;
}
/**
* pie label offset adaptor
*/
export function adaptOffset(type: string, offset?: string | number): string | number {
let defaultOffset;
switch (type) {
case 'inner':
defaultOffset = '-30%';
if (isString(offset) && offset.endsWith('%')) {
return parseFloat(offset) * 0.01 > 0 ? defaultOffset : offset;
}
return offset < 0 ? offset : defaultOffset;
case 'outer':
defaultOffset = 12;
if (isString(offset) && offset.endsWith('%')) {
return parseFloat(offset) * 0.01 < 0 ? defaultOffset : offset;
}
return offset > 0 ? offset : defaultOffset;
default:
return offset;
}
}
/**
* 判断数据是否全部为 0
* @param data
* @param angleField
*/
export function isAllZero(data: PieOptions['data'], angleField: string): boolean {
return every(processIllegalData(data, angleField), (d) => d[angleField] === 0);
}