cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
115 lines (114 loc) • 4.69 kB
JavaScript
import { isFunction, curry, isArray, map, each } from "../../../../zrender/lib/core/util.mjs";
import SeriesData from "../../data/SeriesData.mjs";
import prepareSeriesDataSchema from "../../data/helper/createDimensions.mjs";
import { getDimensionTypeByAxis } from "../../data/helper/dimensionHelper.mjs";
import { getDataItemValue } from "../../util/model.mjs";
import CoordinateSystem from "../../core/CoordinateSystem.mjs";
import { getCoordSysInfoBySeries } from "../../model/referHelper.mjs";
import { createSourceFromSeriesDataOption } from "../../data/Source.mjs";
import { enableDataStack } from "../../data/helper/dataStackHelper.mjs";
import { makeSeriesEncodeForAxisCoordSys } from "../../data/helper/sourceHelper.mjs";
import { SOURCE_FORMAT_ORIGINAL } from "../../util/types.mjs";
function getCoordSysDimDefs(seriesModel, coordSysInfo) {
var coordSysName = seriesModel.get("coordinateSystem");
var registeredCoordSys = CoordinateSystem.get(coordSysName);
var coordSysDimDefs;
if (coordSysInfo && coordSysInfo.coordSysDims) {
coordSysDimDefs = map(coordSysInfo.coordSysDims, function(dim) {
var dimInfo = {
name: dim
};
var axisModel = coordSysInfo.axisMap.get(dim);
if (axisModel) {
var axisType = axisModel.get("type");
dimInfo.type = getDimensionTypeByAxis(axisType);
}
return dimInfo;
});
}
if (!coordSysDimDefs) {
coordSysDimDefs = registeredCoordSys && (registeredCoordSys.getDimensionsInfo ? registeredCoordSys.getDimensionsInfo() : registeredCoordSys.dimensions.slice()) || ["x", "y"];
}
return coordSysDimDefs;
}
function injectOrdinalMeta(dimInfoList, createInvertedIndices, coordSysInfo) {
var firstCategoryDimIndex;
var hasNameEncode;
coordSysInfo && each(dimInfoList, function(dimInfo, dimIndex) {
var coordDim = dimInfo.coordDim;
var categoryAxisModel = coordSysInfo.categoryAxisMap.get(coordDim);
if (categoryAxisModel) {
if (firstCategoryDimIndex == null) {
firstCategoryDimIndex = dimIndex;
}
dimInfo.ordinalMeta = categoryAxisModel.getOrdinalMeta();
if (createInvertedIndices) {
dimInfo.createInvertedIndices = true;
}
}
if (dimInfo.otherDims.itemName != null) {
hasNameEncode = true;
}
});
if (!hasNameEncode && firstCategoryDimIndex != null) {
dimInfoList[firstCategoryDimIndex].otherDims.itemName = 0;
}
return firstCategoryDimIndex;
}
function createSeriesData(sourceRaw, seriesModel, opt) {
opt = opt || {};
var sourceManager = seriesModel.getSourceManager();
var source;
var isOriginalSource = false;
if (sourceRaw) {
isOriginalSource = true;
source = createSourceFromSeriesDataOption(sourceRaw);
} else {
source = sourceManager.getSource();
isOriginalSource = source.sourceFormat === SOURCE_FORMAT_ORIGINAL;
}
var coordSysInfo = getCoordSysInfoBySeries(seriesModel);
var coordSysDimDefs = getCoordSysDimDefs(seriesModel, coordSysInfo);
var useEncodeDefaulter = opt.useEncodeDefaulter;
var encodeDefaulter = isFunction(useEncodeDefaulter) ? useEncodeDefaulter : useEncodeDefaulter ? curry(makeSeriesEncodeForAxisCoordSys, coordSysDimDefs, seriesModel) : null;
var createDimensionOptions = {
coordDimensions: coordSysDimDefs,
generateCoord: opt.generateCoord,
encodeDefine: seriesModel.getEncode(),
encodeDefaulter,
canOmitUnusedDimensions: !isOriginalSource
};
var schema = prepareSeriesDataSchema(source, createDimensionOptions);
var firstCategoryDimIndex = injectOrdinalMeta(schema.dimensions, opt.createInvertedIndices, coordSysInfo);
var store = !isOriginalSource ? sourceManager.getSharedDataStore(schema) : null;
var stackCalculationInfo = enableDataStack(seriesModel, {
schema,
store
});
var data = new SeriesData(schema, seriesModel);
data.setCalculationInfo(stackCalculationInfo);
var dimValueGetter = firstCategoryDimIndex != null && isNeedCompleteOrdinalData(source) ? function(itemOpt, dimName, dataIndex, dimIndex) {
return dimIndex === firstCategoryDimIndex ? dataIndex : this.defaultDimValueGetter(itemOpt, dimName, dataIndex, dimIndex);
} : null;
data.hasItemOption = false;
data.initData(
isOriginalSource ? source : store,
null,
dimValueGetter
);
return data;
}
function isNeedCompleteOrdinalData(source) {
if (source.sourceFormat === SOURCE_FORMAT_ORIGINAL) {
var sampleItem = firstDataNotNull(source.data || []);
return !isArray(getDataItemValue(sampleItem));
}
}
function firstDataNotNull(arr) {
var i = 0;
while (i < arr.length && arr[i] == null) {
i++;
}
return arr[i];
}
export { createSeriesData as default };