/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import * as zrUtil from 'zrender/src/core/util'; import OrdinalMeta from './OrdinalMeta'; import { DataVisualDimensions, DimensionType } from '../util/types'; class SeriesDimensionDefine { /** * Dimension type. The enumerable values are the key of * Optional. */ type?: DimensionType; /** * Dimension name. * Mandatory. */ name: string; /** * The origin name in dimsDef, see source helper. * If displayName given, the tooltip will displayed vertically. * Optional. */ displayName?: string; // FIXME: check whether it is still used. // See Series.ts#formatArrayValue tooltip?: boolean; /** * This dimension maps to the the dimension in dataStore by `storeDimIndex`. * Notice the facts: * 1. When there are too many dimensions in data store, seriesData only save the * used store dimensions. * 2. We use dimensionIndex but not name to reference store dimension * becuause the dataset dimension definition might has no name specified by users, * or names in sereis dimension definition might be different from dataset. */ storeDimIndex?: number; /** * Which coordSys dimension this dimension mapped to. * A `coordDim` can be a "coordSysDim" that the coordSys required * (for example, an item in `coordSysDims` of `model/referHelper#CoordSysInfo`), * or an generated "extra coord name" if does not mapped to any "coordSysDim" * (That is determined by whether `isExtraCoord` is `true`). * Mandatory. */ coordDim?: string; /** * The index of this dimension in `series.encode[coordDim]`. * Mandatory. */ coordDimIndex?: number; /** * The format of `otherDims` is: * ```js * { * tooltip?: number * label?: number * itemName?: number * seriesName?: number * } * ``` * * A `series.encode` can specified these fields: * ```js * encode: { * // "3, 1, 5" is the index of data dimension. * tooltip: [3, 1, 5], * label: [0, 3], * ... * } * ``` * `otherDims` is the parse result of the `series.encode` above, like: * ```js * // Suppose the index of this data dimension is `3`. * this.otherDims = { * // `3` is at the index `0` of the `encode.tooltip` * tooltip: 0, * // `3` is at the index `1` of the `encode.label` * label: 1 * }; * ``` * * This prop should never be `null`/`undefined` after initialized. */ otherDims?: DataVisualDimensions = {}; /** * Be `true` if this dimension is not mapped to any "coordSysDim" that the * "coordSys" required. * Mandatory. */ isExtraCoord?: boolean; /** * If this dimension if for calculated value like stacking */ isCalculationCoord?: boolean; defaultTooltip?: boolean; ordinalMeta?: OrdinalMeta; /** * Whether to create inverted indices. */ createInvertedIndices?: boolean; /** * @param opt All of the fields will be shallow copied. */ constructor(opt?: object | SeriesDimensionDefine) { if (opt != null) { zrUtil.extend(this, opt); } } }; export default SeriesDimensionDefine;