123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- import { createHashMap, isObject, retrieve2 } from 'zrender/lib/core/util.js';
- import { makeInner } from '../../util/model.js';
- import { shouldRetrieveDataByName } from '../Source.js';
- var inner = makeInner();
- var dimTypeShort = {
- float: 'f',
- int: 'i',
- ordinal: 'o',
- number: 'n',
- time: 't'
- };
- var SeriesDataSchema =
- function () {
- function SeriesDataSchema(opt) {
- this.dimensions = opt.dimensions;
- this._dimOmitted = opt.dimensionOmitted;
- this.source = opt.source;
- this._fullDimCount = opt.fullDimensionCount;
- this._updateDimOmitted(opt.dimensionOmitted);
- }
- SeriesDataSchema.prototype.isDimensionOmitted = function () {
- return this._dimOmitted;
- };
- SeriesDataSchema.prototype._updateDimOmitted = function (dimensionOmitted) {
- this._dimOmitted = dimensionOmitted;
- if (!dimensionOmitted) {
- return;
- }
- if (!this._dimNameMap) {
- this._dimNameMap = ensureSourceDimNameMap(this.source);
- }
- };
-
- SeriesDataSchema.prototype.getSourceDimensionIndex = function (dimName) {
- return retrieve2(this._dimNameMap.get(dimName), -1);
- };
-
- SeriesDataSchema.prototype.getSourceDimension = function (dimIndex) {
- var dimensionsDefine = this.source.dimensionsDefine;
- if (dimensionsDefine) {
- return dimensionsDefine[dimIndex];
- }
- };
- SeriesDataSchema.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: property,
- type: type,
- ordinalMeta: 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: hash
- };
- };
- SeriesDataSchema.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;
- };
- SeriesDataSchema.prototype.appendCalculationDimension = function (dimDef) {
- this.dimensions.push(dimDef);
- dimDef.isCalculationCoord = true;
- this._fullDimCount++;
-
-
- this._updateDimOmitted(true);
- };
- return SeriesDataSchema;
- }();
- export { SeriesDataSchema };
- export function isSeriesDataSchema(schema) {
- return schema instanceof SeriesDataSchema;
- }
- export 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;
- }
- export function ensureSourceDimNameMap(source) {
- var innerSource = inner(source);
- return innerSource.dimNameMap || (innerSource.dimNameMap = createDimNameMap(source.dimensionsDefine));
- }
- export function shouldOmitUnusedDimensions(dimCount) {
- return dimCount > 30;
- }
|