Spaces:
Running
Running
| /* | |
| * 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, | |
| triggerEmphasis: 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; | |