/*
|
* 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;
|