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