a595f1d1352b5c5a7c9d75a9930ee30e6738675b6ec3c9fd5cced17df4c8e4556b3c87c814ed62fca290b97c0c776865f76b634bdc1bd07507327de74cdfb6 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { HashMap } from 'zrender/lib/core/util.js';
  2. import { DimensionDefinition, DimensionDefinitionLoose, DimensionIndex, DimensionName } from '../../util/types.js';
  3. import { DataStoreDimensionDefine } from '../DataStore.js';
  4. import SeriesDimensionDefine from '../SeriesDimensionDefine.js';
  5. import { Source } from '../Source.js';
  6. /**
  7. * Represents the dimension requirement of a series.
  8. *
  9. * NOTICE:
  10. * When there are too many dimensions in dataset and many series, only the used dimensions
  11. * (i.e., used by coord sys and declared in `series.encode`) are add to `dimensionDefineList`.
  12. * But users may query data by other unused dimension names.
  13. * In this case, users can only query data if and only if they have defined dimension names
  14. * via ec option, so we provide `getDimensionIndexFromSource`, which only query them from
  15. * `source` dimensions.
  16. */
  17. export declare class SeriesDataSchema {
  18. /**
  19. * When there are too many dimensions, `dimensionDefineList` might only contain
  20. * used dimensions.
  21. *
  22. * CAUTION:
  23. * Should have been sorted by `storeDimIndex` asc.
  24. *
  25. * PENDING:
  26. * The item can still be modified outsite.
  27. * But MUST NOT add/remove item of this array.
  28. */
  29. readonly dimensions: SeriesDimensionDefine[];
  30. readonly source: Source;
  31. private _fullDimCount;
  32. private _dimNameMap;
  33. private _dimOmitted;
  34. constructor(opt: {
  35. source: Source;
  36. dimensions: SeriesDimensionDefine[];
  37. fullDimensionCount: number;
  38. dimensionOmitted: boolean;
  39. });
  40. isDimensionOmitted(): boolean;
  41. private _updateDimOmitted;
  42. /**
  43. * @caution Can only be used when `dimensionOmitted: true`.
  44. *
  45. * Get index by user defined dimension name (i.e., not internal generate name).
  46. * That is, get index from `dimensionsDefine`.
  47. * If no `dimensionsDefine`, or no name get, return -1.
  48. */
  49. getSourceDimensionIndex(dimName: DimensionName): DimensionIndex;
  50. /**
  51. * @caution Can only be used when `dimensionOmitted: true`.
  52. *
  53. * Notice: may return `null`/`undefined` if user not specify dimension names.
  54. */
  55. getSourceDimension(dimIndex: DimensionIndex): DimensionDefinition;
  56. makeStoreSchema(): {
  57. dimensions: DataStoreDimensionDefine[];
  58. hash: string;
  59. };
  60. makeOutputDimensionNames(): DimensionName[];
  61. appendCalculationDimension(dimDef: SeriesDimensionDefine): void;
  62. }
  63. export declare function isSeriesDataSchema(schema: any): schema is SeriesDataSchema;
  64. export declare function createDimNameMap(dimsDef: DimensionDefinitionLoose[]): HashMap<DimensionIndex, DimensionName>;
  65. export declare function ensureSourceDimNameMap(source: Source): HashMap<DimensionIndex, DimensionName>;
  66. export declare function shouldOmitUnusedDimensions(dimCount: number): boolean;