ZoeDuan's picture
Upload 1382 files
4bb817b verified
raw
history blame
6 kB
/*
* 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;