| /* |
| * 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 DataZoomModel, {DataZoomOption} from './DataZoomModel'; |
| import { |
| BoxLayoutOptionMixin, |
| ZRColor, |
| LineStyleOption, |
| AreaStyleOption, |
| ItemStyleOption, |
| LabelOption |
| } from '../../util/types'; |
| import { inheritDefaultOption } from '../../util/component'; |
| |
| export interface SliderDataZoomOption extends DataZoomOption, BoxLayoutOptionMixin { |
| |
| show?: boolean |
| /** |
| * Slider dataZoom don't support textStyle |
| */ |
| |
| /** |
| * Background of slider zoom component |
| */ |
| backgroundColor?: ZRColor |
| |
| /** |
| * @deprecated Use borderColor instead |
| */ |
| // dataBackgroundColor?: ZRColor |
| |
| /** |
| * border color of the box. For compatibility, |
| * if dataBackgroundColor is set, borderColor |
| * is ignored. |
| */ |
| borderColor?: ZRColor |
| |
| /** |
| * Border radius of the box. |
| */ |
| borderRadius?: number | number[] |
| |
| dataBackground?: { |
| lineStyle?: LineStyleOption |
| areaStyle?: AreaStyleOption |
| } |
| |
| selectedDataBackground?: { |
| lineStyle?: LineStyleOption |
| areaStyle?: AreaStyleOption |
| } |
| |
| /** |
| * Color of selected area. |
| */ |
| fillerColor?: ZRColor |
| |
| /** |
| * @deprecated Use handleStyle instead |
| */ |
| // handleColor?: ZRColor |
| |
| handleIcon?: string |
| |
| /** |
| * number: height of icon. width will be calculated according to the aspect of icon. |
| * string: percent of the slider height. width will be calculated according to the aspect of icon. |
| */ |
| handleSize?: string | number |
| |
| handleStyle?: ItemStyleOption |
| |
| /** |
| * Icon to indicate it is a draggable panel. |
| */ |
| moveHandleIcon?: string |
| moveHandleStyle?: ItemStyleOption |
| /** |
| * Height of handle rect. Can be a percent string relative to the slider height. |
| */ |
| moveHandleSize?: number |
| |
| labelPrecision?: number | 'auto' |
| |
| labelFormatter?: string | ((value: number, valueStr: string) => string) |
| |
| showDetail?: boolean |
| |
| showDataShadow?: 'auto' | boolean |
| |
| zoomLock?: boolean |
| |
| textStyle?: LabelOption |
| |
| /** |
| * If eable select by brushing |
| */ |
| brushSelect?: boolean |
| |
| brushStyle?: ItemStyleOption |
| |
| emphasis?: { |
| handleStyle?: ItemStyleOption |
| moveHandleStyle?: ItemStyleOption |
| } |
| } |
| |
| |
| class SliderZoomModel extends DataZoomModel<SliderDataZoomOption> { |
| static readonly type = 'dataZoom.slider'; |
| type = SliderZoomModel.type; |
| |
| static readonly layoutMode = 'box'; |
| |
| static defaultOption: SliderDataZoomOption = inheritDefaultOption(DataZoomModel.defaultOption, { |
| show: true, |
| |
| // deault value can only be drived in view stage. |
| right: 'ph', // Default align to grid rect. |
| top: 'ph', // Default align to grid rect. |
| width: 'ph', // Default align to grid rect. |
| height: 'ph', // Default align to grid rect. |
| left: null, // Default align to grid rect. |
| bottom: null, // Default align to grid rect. |
| |
| borderColor: '#d2dbee', |
| borderRadius: 3, |
| |
| backgroundColor: 'rgba(47,69,84,0)', // Background of slider zoom component. |
| |
| // dataBackgroundColor: '#ddd', |
| dataBackground: { |
| lineStyle: { |
| color: '#d2dbee', |
| width: 0.5 |
| }, |
| areaStyle: { |
| color: '#d2dbee', |
| opacity: 0.2 |
| } |
| }, |
| |
| selectedDataBackground: { |
| lineStyle: { |
| color: '#8fb0f7', |
| width: 0.5 |
| }, |
| areaStyle: { |
| color: '#8fb0f7', |
| opacity: 0.2 |
| } |
| }, |
| |
| // Color of selected window. |
| fillerColor: 'rgba(135,175,274,0.2)', |
| handleIcon: 'path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z', |
| // Percent of the slider height |
| handleSize: '100%', |
| |
| handleStyle: { |
| color: '#fff', |
| borderColor: '#ACB8D1' |
| }, |
| |
| moveHandleSize: 7, |
| moveHandleIcon: 'path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z', |
| moveHandleStyle: { |
| color: '#D2DBEE', |
| opacity: 0.7 |
| }, |
| |
| showDetail: true, |
| showDataShadow: 'auto', // Default auto decision. |
| realtime: true, |
| zoomLock: false, // Whether disable zoom. |
| |
| textStyle: { |
| color: '#6E7079' |
| }, |
| |
| brushSelect: true, |
| brushStyle: { |
| color: 'rgba(135,175,274,0.15)' |
| }, |
| |
| emphasis: { |
| handleStyle: { |
| borderColor: '#8FB0F7' |
| }, |
| moveHandleStyle: { |
| color: '#8FB0F7' |
| } |
| } |
| } as SliderDataZoomOption); |
| } |
| |
| export default SliderZoomModel; |