|  | /* | 
|  | * 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 SeriesModel from '../../model/Series'; | 
|  | import {WhiskerBoxCommonMixin} from '../helper/whiskerBoxCommon'; | 
|  | import { | 
|  | SeriesOption, | 
|  | SeriesOnCartesianOptionMixin, | 
|  | LayoutOrient, | 
|  | ItemStyleOption, | 
|  | SeriesLabelOption, | 
|  | OptionDataValueNumeric, | 
|  | StatesOptionMixin, | 
|  | SeriesEncodeOptionMixin, | 
|  | DefaultEmphasisFocus, | 
|  | CallbackDataParams | 
|  | } from '../../util/types'; | 
|  | import type Axis2D from '../../coord/cartesian/Axis2D'; | 
|  | import Cartesian2D from '../../coord/cartesian/Cartesian2D'; | 
|  | import { mixin } from 'zrender/src/core/util'; | 
|  |  | 
|  | // [min,  Q1,  median (or Q2),  Q3,  max] | 
|  | type BoxplotDataValue = OptionDataValueNumeric[]; | 
|  |  | 
|  | export interface BoxplotStateOption<TCbParams = never> { | 
|  | itemStyle?: ItemStyleOption<TCbParams> | 
|  | label?: SeriesLabelOption | 
|  | } | 
|  |  | 
|  | export interface BoxplotDataItemOption | 
|  | extends BoxplotStateOption, StatesOptionMixin<BoxplotStateOption, ExtraStateOption> { | 
|  | value: BoxplotDataValue | 
|  | } | 
|  |  | 
|  | interface ExtraStateOption { | 
|  | emphasis?: { | 
|  | focus?: DefaultEmphasisFocus | 
|  | scale?: boolean | 
|  | } | 
|  | } | 
|  |  | 
|  | export interface BoxplotSeriesOption | 
|  | extends SeriesOption<BoxplotStateOption<CallbackDataParams>, ExtraStateOption>, | 
|  | BoxplotStateOption<CallbackDataParams>, | 
|  | SeriesOnCartesianOptionMixin, SeriesEncodeOptionMixin { | 
|  | type?: 'boxplot' | 
|  |  | 
|  | coordinateSystem?: 'cartesian2d' | 
|  |  | 
|  | layout?: LayoutOrient | 
|  | /** | 
|  | * [min, max] can be percent of band width. | 
|  | */ | 
|  | boxWidth?: (string | number)[] | 
|  |  | 
|  | data?: (BoxplotDataValue | BoxplotDataItemOption)[] | 
|  | } | 
|  |  | 
|  | class BoxplotSeriesModel extends SeriesModel<BoxplotSeriesOption> { | 
|  |  | 
|  | static readonly type = 'series.boxplot'; | 
|  | readonly type = BoxplotSeriesModel.type; | 
|  |  | 
|  | static readonly dependencies = ['xAxis', 'yAxis', 'grid']; | 
|  |  | 
|  | coordinateSystem: Cartesian2D; | 
|  | // TODO | 
|  | // box width represents group size, so dimension should have 'size'. | 
|  |  | 
|  | /** | 
|  | * @see <https://en.wikipedia.org/wiki/Box_plot> | 
|  | * The meanings of 'min' and 'max' depend on user, | 
|  | * and echarts do not need to know it. | 
|  | * @readOnly | 
|  | */ | 
|  | defaultValueDimensions = [ | 
|  | {name: 'min', defaultTooltip: true}, | 
|  | {name: 'Q1', defaultTooltip: true}, | 
|  | {name: 'median', defaultTooltip: true}, | 
|  | {name: 'Q3', defaultTooltip: true}, | 
|  | {name: 'max', defaultTooltip: true} | 
|  | ]; | 
|  |  | 
|  | dimensions: string[]; | 
|  |  | 
|  | visualDrawType = 'stroke' as const; | 
|  |  | 
|  | static defaultOption: BoxplotSeriesOption = { | 
|  | // zlevel: 0, | 
|  | z: 2, | 
|  | coordinateSystem: 'cartesian2d', | 
|  | legendHoverLink: true, | 
|  |  | 
|  | layout: null, | 
|  | boxWidth: [7, 50], | 
|  |  | 
|  | itemStyle: { | 
|  | color: '#fff', | 
|  | borderWidth: 1 | 
|  | }, | 
|  |  | 
|  | emphasis: { | 
|  | scale: true, | 
|  |  | 
|  | itemStyle: { | 
|  | borderWidth: 2, | 
|  | shadowBlur: 5, | 
|  | shadowOffsetX: 1, | 
|  | shadowOffsetY: 1, | 
|  | shadowColor: 'rgba(0,0,0,0.2)' | 
|  | } | 
|  | }, | 
|  |  | 
|  | animationDuration: 800 | 
|  | }; | 
|  | } | 
|  |  | 
|  | interface BoxplotSeriesModel extends WhiskerBoxCommonMixin<BoxplotSeriesOption> { | 
|  | getBaseAxis(): Axis2D | 
|  | } | 
|  | mixin(BoxplotSeriesModel, WhiskerBoxCommonMixin, true); | 
|  |  | 
|  | export default BoxplotSeriesModel; |