@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
124 lines (119 loc) • 7.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: !0
}), exports.extractDataFromContext = exports.extractAxesData = void 0;
const utils_1 = require("./utils"), types_1 = require("../../types"), vutils_1 = require("@visactor/vutils"), const_1 = require("./const"), field_1 = require("../../utils/field"), spec_1 = require("../../utils/spec"), utils_2 = require("../dataClean/utils"), dataTable_1 = require("../../utils/dataTable"), getDimensionDataInfo = context => {
const {xField: xField, yField: yField, onlyOneSeries: onlyOneSeries, dataset: dataset} = context, dimensionDataMap = {}, dimensionValues = [];
dataset.forEach(((dataItem, index) => {
const groupBy = dataItem[xField];
groupBy && (dimensionDataMap[groupBy] || (dimensionDataMap[groupBy] = [], dimensionValues.push(groupBy)),
dimensionDataMap[groupBy].push({
index: index,
dataItem: dataItem
}));
}));
const dimensionStackSumMap = {}, dimensionSumMap = {};
return yField.forEach((measureId => {
dimensionStackSumMap[measureId] = [], dimensionSumMap[measureId] = dimensionValues.map((dimension => {
const dimensionDataset = dimensionDataMap[dimension].map((d => d.dataItem));
return dimensionStackSumMap[measureId].push((0, utils_1.sumDimensionValues)(dimensionDataset, measureId, (v => v))),
(0, utils_1.sumDimensionValues)(dimensionDataset, measureId, onlyOneSeries ? v => v : void 0);
}));
})), {
dimensionDataMap: dimensionDataMap,
dimensionValues: dimensionValues,
dimensionSumMap: dimensionSumMap,
dimensionStackSumMap: dimensionStackSumMap
};
}, getDataBySeries = context => {
var _a, _b;
const {spec: spec, xField: xField, seriesField: seriesField, position: position, yField: yField} = context, {series: series = [], _vmindAxesDiffKey: _vmindAxesDiffKey = "_editor_axis_orient", data: data, axes: axes = []} = spec, currentAxis = axes.find((v => position.includes(v.orient))), axisTitle = null === (_a = null == currentAxis ? void 0 : currentAxis.title) || void 0 === _a ? void 0 : _a.text;
let currentSeries = [], seriesIndex = null, seriesId = "";
(null == currentAxis ? void 0 : currentAxis.seriesId) ? (seriesId = null == currentAxis ? void 0 : currentAxis.seriesId,
currentSeries = series.filter((s => currentAxis.seriesId.includes(s.id)))) : (null == currentAxis ? void 0 : currentAxis.seriesIndex) ? (seriesIndex = null == currentAxis ? void 0 : currentAxis.seriesIndex,
currentSeries = currentAxis.seriesIndex.map((v => series[v])).filter((s => !!s))) : (series.filter((s => position.includes(s[_vmindAxesDiffKey]))),
seriesId = (series || []).map((v => v.id)).filter((v => !!v)));
const dataList = [];
currentSeries.forEach((s => {
var _a, _b, _c;
(null === (_a = null == s ? void 0 : s.data) || void 0 === _a ? void 0 : _a.values) ? dataList.push(...s.data.values) : (null == s ? void 0 : s.dataId) ? dataList.push(...(null === (_b = data.find((subData => subData.id === s.dataId))) || void 0 === _b ? void 0 : _b.values) || []) : (0,
vutils_1.isValidNumber)(null == s ? void 0 : s.dataIndex) && dataList.push(...(null === (_c = null == data ? void 0 : data[s.dataIndex]) || void 0 === _c ? void 0 : _c.values) || []);
}));
const seriesNames = seriesField ? [ ...new Set(dataList.map((d => d[seriesField]))) ] : [];
return Object.assign({
dataset: dataList,
series: currentSeries,
seriesNames: seriesNames,
axisTitle: axisTitle,
seriesIndex: (0, vutils_1.isArray)(seriesIndex) ? seriesIndex[0] : seriesIndex,
seriesId: (0, vutils_1.isArray)(seriesId) ? null == seriesId ? void 0 : seriesId[0] : seriesId,
yField: null === (_b = null == currentSeries ? void 0 : currentSeries[0]) || void 0 === _b ? void 0 : _b.yField
}, getDimensionDataInfo({
xField: xField,
yField: yField,
onlyOneSeries: 1 === seriesNames.length,
dataset: dataList
}));
}, extractAxesData = context => {
const {chartType: chartType} = context;
return chartType !== types_1.ChartType.DualAxisChart ? {} : {
leftAxesDataList: getDataBySeries(Object.assign(Object.assign({}, context), {
position: [ "left" ]
})),
rightAxesDataList: getDataBySeries(Object.assign(Object.assign({}, context), {
position: [ "right" ]
}))
};
};
exports.extractAxesData = extractAxesData;
const extractDataFromContext = context => {
var _a;
const {spec: spec, fieldInfo: inputFieldInfo, dataTable: dataTable, vChartType: vChartType} = context, chartType = (0,
spec_1.getChartTypeFromSpec)(spec, vChartType);
if (!chartType) return console.error("unsupported spec type"), null;
let dataset = dataTable;
dataset && 0 !== (null == dataset ? void 0 : dataset.length) || (dataset = (0, spec_1.getDatasetFromSpec)(spec));
const specFieldMapping = (0, spec_1.getFieldMappingFromSpec)(spec);
let fieldInfo = inputFieldInfo;
fieldInfo && 0 !== (null == fieldInfo ? void 0 : fieldInfo.length) || (fieldInfo = (0,
field_1.getFieldInfoFromDataset)(dataset)), fieldInfo = null === (_a = (0, utils_2.transferFieldInfo)({
fieldInfo: fieldInfo
}, specFieldMapping)) || void 0 === _a ? void 0 : _a.fieldInfo;
const originDataset = dataset;
dataset = (0, dataTable_1.transferMeasureInTable)(dataset, fieldInfo);
const cell = (0, spec_1.revisedCell)((0, spec_1.getCellFromSpec)(spec, chartType), dataset), {color: color, x: cellx, y: celly} = cell, seriesField = (0,
vutils_1.isArray)(color) ? color[0] : color, seriesDataMap = {};
seriesField && ![ types_1.ChartType.PieChart, types_1.ChartType.RoseChart ].includes(chartType) ? dataset.forEach(((dataItem, index) => {
const groupBy = dataItem[seriesField];
!groupBy || chartType === types_1.ChartType.WaterFallChart && "total" === groupBy || (seriesDataMap[groupBy] || (seriesDataMap[groupBy] = []),
seriesDataMap[groupBy].push({
index: index,
dataItem: dataItem
}));
})) : seriesDataMap[const_1.DEFAULT_SERIES_NAME] = dataset.map(((dataItem, index) => ({
index: index,
dataItem: dataItem
})));
const xField = (0, vutils_1.isArray)(cellx) ? cellx[0] : cellx, yField = (0, vutils_1.isArray)(celly) ? celly.flat() : [ celly ], onlyOneSeries = 1 === Object.keys(seriesDataMap).length;
return Object.assign(Object.assign({
dataset: dataset,
originDataset: originDataset,
fieldInfo: fieldInfo,
chartType: chartType,
seriesDataMap: seriesDataMap,
cell: cell
}, getDimensionDataInfo({
xField: xField,
yField: yField,
onlyOneSeries: onlyOneSeries,
dataset: dataset
})), (0, exports.extractAxesData)({
spec: spec,
chartType: chartType,
seriesField: seriesField,
yField: yField,
xField: xField
}));
};
exports.extractDataFromContext = extractDataFromContext;
//# sourceMappingURL=dataProcess.js.map