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