| /* |
| * 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 ComponentModel from '../../model/Component'; |
| import { |
| ComponentOption, |
| ScaleDataValue, |
| CommonAxisPointerOption |
| } from '../../util/types'; |
| |
| interface MapperParamAxisInfo { |
| axisIndex: number |
| axisName: string |
| axisId: string |
| axisDim: string |
| } |
| |
| interface AxisPointerLink { |
| xAxisIndex?: number[] | 'all' |
| yAxisIndex?: number[] | 'all' |
| xAxisId?: string[] |
| yAxisId?: string[] |
| xAxisName?: string[] | string |
| yAxisName?: string[] | string |
| |
| radiusAxisIndex?: number[] | 'all' |
| angleAxisIndex?: number[] | 'all' |
| radiusAxisId?: string[] |
| angleAxisId?: string[] |
| radiusAxisName?: string[] | string |
| angleAxisName?: string[] | string |
| |
| singleAxisIndex?: number[] | 'all' |
| singleAxisId?: string[] |
| singleAxisName?: string[] | string |
| |
| mapper?( |
| sourceVal: ScaleDataValue, |
| sourceAxisInfo: MapperParamAxisInfo, |
| targetAxisInfo: MapperParamAxisInfo |
| ): CommonAxisPointerOption['value'] // TODO: TYPE Should return numeric value or category value? |
| } |
| |
| // TODO: TYPE AxisPointerOption for each axis |
| export interface AxisPointerOption extends ComponentOption, Omit<CommonAxisPointerOption, 'type'> { |
| mainType?: 'axisPointer' |
| |
| type?: 'line' | 'shadow' | 'cross' | 'none' |
| |
| link?: AxisPointerLink[] |
| } |
| |
| |
| class AxisPointerModel extends ComponentModel<AxisPointerOption> { |
| |
| static type = 'axisPointer' as const; |
| type = AxisPointerModel.type; |
| |
| // Will be injected and read in modelHelper and axisTrigger |
| // No need to care about it. |
| coordSysAxesInfo: unknown; |
| |
| static defaultOption: AxisPointerOption = { |
| // 'auto' means that show when triggered by tooltip or handle. |
| show: 'auto', |
| |
| // zlevel: 0, |
| z: 50, |
| |
| type: 'line', // 'line' 'shadow' 'cross' 'none'. |
| // axispointer triggered by tootip determine snap automatically, |
| // see `modelHelper`. |
| snap: false, |
| triggerTooltip: true, |
| |
| value: null, |
| status: null, // Init value depends on whether handle is used. |
| |
| link: [], |
| |
| // Do not set 'auto' here, otherwise global animation: false |
| // will not effect at this axispointer. |
| animation: null, |
| animationDurationUpdate: 200, |
| |
| lineStyle: { |
| color: '#B9BEC9', |
| width: 1, |
| type: 'dashed' |
| }, |
| |
| shadowStyle: { |
| color: 'rgba(210,219,238,0.2)' |
| }, |
| |
| label: { |
| show: true, |
| formatter: null, // string | Function |
| precision: 'auto', // Or a number like 0, 1, 2 ... |
| margin: 3, |
| color: '#fff', |
| padding: [5, 7, 5, 7], |
| backgroundColor: 'auto', // default: axis line color |
| borderColor: null, |
| borderWidth: 0, |
| borderRadius: 3 |
| }, |
| |
| handle: { |
| show: false, |
| // eslint-disable-next-line |
| icon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z', // jshint ignore:line |
| size: 45, |
| // handle margin is from symbol center to axis, which is stable when circular move. |
| margin: 50, |
| // color: '#1b8bbd' |
| // color: '#2f4554' |
| color: '#333', |
| shadowBlur: 3, |
| shadowColor: '#aaa', |
| shadowOffsetX: 0, |
| shadowOffsetY: 2, |
| |
| // For mobile performance |
| throttle: 40 |
| } |
| }; |
| } |
| |
| export default AxisPointerModel; |