@visactor/vmind
Version:
<div align="center"> <a href="https://github.com/VisActor#gh-light-mode-only" target="_blank"> <img alt="VisActor Logo" width="200" src="https://github.com/VisActor/.github/blob/main/profile/logo_500_200_light.svg"/> </a> <a href="https://githu
49 lines (40 loc) • 2.98 kB
JavaScript
import { isArray, isNumber } from "@visactor/vutils";
import { ChartType } from "../../types";
export const isStackChartInAxes = (series, chartType) => !(chartType !== ChartType.DualAxisChart || !series.length) && series.every((s => {
var _a;
return (null == s ? void 0 : s.type) === (null === (_a = series[0]) || void 0 === _a ? void 0 : _a.type) && (!1 !== s.stack && "bar" === s.type || !!s.stack) && (null == s ? void 0 : s.seriesField) && !(isArray(s.xField) && s.xField.includes(s.seriesField));
}));
export const isStackChart = (spec, chartType, cell) => {
const {seriesField: seriesField, type: type, series: series = [], stack: stack} = spec || {};
return "common" === type && [ ChartType.BarChart, ChartType.AreaChart, ChartType.LineChart ].includes(chartType) ? null == series ? void 0 : series.every((s => !((!1 === (null == s ? void 0 : s.stack) || "bar" !== s.type) && !(null == s ? void 0 : s.stack) || isArray(cell.x) && cell.x.length > 1))) : (!1 !== stack && (chartType === ChartType.BarChart || "bar" === type) || !!stack) && seriesField && !(isArray(cell.x) && cell.x.includes(seriesField));
};
export const isPercentChart = (spec, chartType, cell) => {
const {type: type, series: series = [], seriesField: seriesField} = spec || {};
return "common" === type && [ ChartType.BarChart, ChartType.AreaChart, ChartType.LineChart ].includes(chartType) ? null == series ? void 0 : series.every((s => !!(null == s ? void 0 : s.percent))) : !(!(null == spec ? void 0 : spec.percent) || seriesField && isArray(cell.x) && cell.x.includes(seriesField));
};
const getYSeries = (series, yField) => (null != series ? series : []).find((s => s.yField === yField || isArray(s.yField) && s.yField.includes(yField)));
export const isStackSeries = (spec, yField) => {
const ySeries = getYSeries(null == spec ? void 0 : spec.series, yField);
if (ySeries) {
const {xField: xField, seriesField: seriesField, type: type, stack: stack} = ySeries;
return (!1 !== stack && "bar" === type || !!stack) && seriesField && !(isArray(xField) && xField.includes(seriesField));
}
return !1;
};
export const isPercenSeries = (spec, yField) => {
const ySeries = getYSeries(null == spec ? void 0 : spec.series, yField);
if (ySeries) {
const {percent: percent, seriesField: seriesField, xField: xField} = ySeries;
return !(!percent || seriesField && isArray(xField) && xField.includes(seriesField));
}
return !1;
};
export const sumDimensionValues = (dataset, measureId, getValue = (v => Math.abs(v))) => {
let validCount = 0;
const sum = dataset.reduce(((prev, cur) => {
const numValue = Number(cur[measureId]), isValidNumber = isNumber(numValue) && !isNaN(numValue) && "" !== cur[measureId], value = isValidNumber ? getValue(numValue) : 0;
return isValidNumber && validCount++, prev + value;
}), 0);
return validCount > 0 ? sum : null;
};
//# sourceMappingURL=utils.js.map