UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

136 lines (135 loc) 4.73 kB
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 };