blob: 2857ef85621a5a133d056d5592383c32bdefe3a7 [file] [log] [blame]
/*
* 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 DataDimensionInfo {
/**
* Dimension type. The enumerable values are the key of
* `dataCtors` of `data/List`.
* 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;
/**
* 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;
/**
* This index of this dimension info in `data/List#_dimensionInfos`.
* Mandatory after added to `data/List`.
*/
index?: 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 | DataDimensionInfo) {
if (opt != null) {
zrUtil.extend(this, opt);
}
}
};
export default DataDimensionInfo;