| /* | |
| * 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 Axis from '../Axis'; | |
| import { DimensionName, OrdinalSortInfo } from '../../util/types'; | |
| import Scale from '../../scale/Scale'; | |
| import CartesianAxisModel, { CartesianAxisPosition } from './AxisModel'; | |
| import Grid from './Grid'; | |
| import { OptionAxisType } from '../axisCommonTypes'; | |
| import OrdinalScale from '../../scale/Ordinal'; | |
| interface Axis2D { | |
| /** | |
| * Transform global coord to local coord, | |
| * i.e. let localCoord = axis.toLocalCoord(80); | |
| */ | |
| toLocalCoord(coord: number): number; | |
| /** | |
| * Transform global coord to local coord, | |
| * i.e. let globalCoord = axis.toLocalCoord(40); | |
| */ | |
| toGlobalCoord(coord: number): number; | |
| } | |
| class Axis2D extends Axis { | |
| /** | |
| * Axis position | |
| * - 'top' | |
| * - 'bottom' | |
| * - 'left' | |
| * - 'right' | |
| */ | |
| readonly position: CartesianAxisPosition; | |
| /** | |
| * Index of axis, can be used as key | |
| * Injected outside. | |
| */ | |
| index: number = 0; | |
| /** | |
| * Axis model. Injected outside | |
| */ | |
| model: CartesianAxisModel; | |
| /** | |
| * Injected outside. | |
| */ | |
| grid: Grid; | |
| constructor( | |
| dim: DimensionName, | |
| scale: Scale, | |
| coordExtent: [number, number], | |
| axisType?: OptionAxisType, | |
| position?: CartesianAxisPosition | |
| ) { | |
| super(dim, scale, coordExtent); | |
| this.type = axisType || 'value'; | |
| this.position = position || 'bottom'; | |
| } | |
| /** | |
| * Implemented in <module:echarts/coord/cartesian/Grid>. | |
| * @return If not on zero of other axis, return null/undefined. | |
| * If no axes, return an empty array. | |
| */ | |
| getAxesOnZeroOf: () => Axis2D[]; | |
| isHorizontal(): boolean { | |
| const position = this.position; | |
| return position === 'top' || position === 'bottom'; | |
| } | |
| /** | |
| * Each item cooresponds to this.getExtent(), which | |
| * means globalExtent[0] may greater than globalExtent[1], | |
| * unless `asc` is input. | |
| * | |
| * @param {boolean} [asc] | |
| * @return {Array.<number>} | |
| */ | |
| getGlobalExtent(asc?: boolean): [number, number] { | |
| const ret = this.getExtent(); | |
| ret[0] = this.toGlobalCoord(ret[0]); | |
| ret[1] = this.toGlobalCoord(ret[1]); | |
| asc && ret[0] > ret[1] && ret.reverse(); | |
| return ret; | |
| } | |
| pointToData(point: number[], clamp?: boolean): number { | |
| return this.coordToData(this.toLocalCoord(point[this.dim === 'x' ? 0 : 1]), clamp); | |
| } | |
| /** | |
| * Set ordinalSortInfo | |
| * @param info new OrdinalSortInfo | |
| */ | |
| setCategorySortInfo(info: OrdinalSortInfo): boolean { | |
| if (this.type !== 'category') { | |
| return false; | |
| } | |
| this.model.option.categorySortInfo = info; | |
| (this.scale as OrdinalScale).setSortInfo(info); | |
| } | |
| } | |
| export default Axis2D; |