cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
136 lines (135 loc) • 4.73 kB
JavaScript
import { createHashMap, isObject, retrieve2 } from "../../../../zrender/lib/core/util.mjs";
import { makeInner } from "../../util/model.mjs";
import { shouldRetrieveDataByName } from "../Source.mjs";
var inner = makeInner();
var dimTypeShort = {
float: "f",
int: "i",
ordinal: "o",
number: "n",
time: "t"
};
var SeriesDataSchema = function() {
function SeriesDataSchema2(opt) {
this.dimensions = opt.dimensions;
this._dimOmitted = opt.dimensionOmitted;
this.source = opt.source;
this._fullDimCount = opt.fullDimensionCount;
this._updateDimOmitted(opt.dimensionOmitted);
}
SeriesDataSchema2.prototype.isDimensionOmitted = function() {
return this._dimOmitted;
};
SeriesDataSchema2.prototype._updateDimOmitted = function(dimensionOmitted) {
this._dimOmitted = dimensionOmitted;
if (!dimensionOmitted) {
return;
}
if (!this._dimNameMap) {
this._dimNameMap = ensureSourceDimNameMap(this.source);
}
};
SeriesDataSchema2.prototype.getSourceDimensionIndex = function(dimName) {
return retrieve2(this._dimNameMap.get(dimName), -1);
};
SeriesDataSchema2.prototype.getSourceDimension = function(dimIndex) {
var dimensionsDefine = this.source.dimensionsDefine;
if (dimensionsDefine) {
return dimensionsDefine[dimIndex];
}
};
SeriesDataSchema2.prototype.makeStoreSchema = function() {
var dimCount = this._fullDimCount;
var willRetrieveDataByName = shouldRetrieveDataByName(this.source);
var makeHashStrict = !shouldOmitUnusedDimensions(dimCount);
var dimHash = "";
var dims = [];
for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < dimCount; fullDimIdx++) {
var property = void 0;
var type = void 0;
var ordinalMeta = void 0;
var seriesDimDef = this.dimensions[seriesDimIdx];
if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) {
property = willRetrieveDataByName ? seriesDimDef.name : null;
type = seriesDimDef.type;
ordinalMeta = seriesDimDef.ordinalMeta;
seriesDimIdx++;
} else {
var sourceDimDef = this.getSourceDimension(fullDimIdx);
if (sourceDimDef) {
property = willRetrieveDataByName ? sourceDimDef.name : null;
type = sourceDimDef.type;
}
}
dims.push({
property,
type,
ordinalMeta
});
if (willRetrieveDataByName && property != null && (!seriesDimDef || !seriesDimDef.isCalculationCoord)) {
dimHash += makeHashStrict ? property.replace(/\`/g, "`1").replace(/\$/g, "`2") : property;
}
dimHash += "$";
dimHash += dimTypeShort[type] || "f";
if (ordinalMeta) {
dimHash += ordinalMeta.uid;
}
dimHash += "$";
}
var source = this.source;
var hash = [source.seriesLayoutBy, source.startIndex, dimHash].join("$$");
return {
dimensions: dims,
hash
};
};
SeriesDataSchema2.prototype.makeOutputDimensionNames = function() {
var result = [];
for (var fullDimIdx = 0, seriesDimIdx = 0; fullDimIdx < this._fullDimCount; fullDimIdx++) {
var name_1 = void 0;
var seriesDimDef = this.dimensions[seriesDimIdx];
if (seriesDimDef && seriesDimDef.storeDimIndex === fullDimIdx) {
if (!seriesDimDef.isCalculationCoord) {
name_1 = seriesDimDef.name;
}
seriesDimIdx++;
} else {
var sourceDimDef = this.getSourceDimension(fullDimIdx);
if (sourceDimDef) {
name_1 = sourceDimDef.name;
}
}
result.push(name_1);
}
return result;
};
SeriesDataSchema2.prototype.appendCalculationDimension = function(dimDef) {
this.dimensions.push(dimDef);
dimDef.isCalculationCoord = true;
this._fullDimCount++;
this._updateDimOmitted(true);
};
return SeriesDataSchema2;
}();
function isSeriesDataSchema(schema) {
return schema instanceof SeriesDataSchema;
}
function createDimNameMap(dimsDef) {
var dataDimNameMap = createHashMap();
for (var i = 0; i < (dimsDef || []).length; i++) {
var dimDefItemRaw = dimsDef[i];
var userDimName = isObject(dimDefItemRaw) ? dimDefItemRaw.name : dimDefItemRaw;
if (userDimName != null && dataDimNameMap.get(userDimName) == null) {
dataDimNameMap.set(userDimName, i);
}
}
return dataDimNameMap;
}
function ensureSourceDimNameMap(source) {
var innerSource = inner(source);
return innerSource.dimNameMap || (innerSource.dimNameMap = createDimNameMap(source.dimensionsDefine));
}
function shouldOmitUnusedDimensions(dimCount) {
return dimCount > 30;
}
export { SeriesDataSchema, createDimNameMap, ensureSourceDimNameMap, isSeriesDataSchema, shouldOmitUnusedDimensions };