| /* | |
| * 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, | |
| ZRColor, | |
| ColorString, | |
| SeriesLabelOption, | |
| SeriesLargeOptionMixin, | |
| StatesOptionMixin, | |
| SeriesEncodeOptionMixin, | |
| DefaultEmphasisFocus, | |
| OptionDataValue | |
| } from '../../util/types'; | |
| import SeriesData from '../../data/SeriesData'; | |
| import Cartesian2D from '../../coord/cartesian/Cartesian2D'; | |
| import { BrushCommonSelectorsForSeries } from '../../component/brush/selector'; | |
| import { mixin } from 'zrender/src/core/util'; | |
| type CandlestickDataValue = OptionDataValue[]; | |
| interface CandlestickItemStyleOption extends ItemStyleOption { | |
| color0?: ZRColor | |
| borderColor0?: ColorString | |
| borderColorDoji?: ZRColor | |
| } | |
| export interface CandlestickStateOption { | |
| itemStyle?: CandlestickItemStyleOption | |
| label?: SeriesLabelOption | |
| } | |
| export interface CandlestickDataItemOption | |
| extends CandlestickStateOption, StatesOptionMixin<CandlestickStateOption, ExtraStateOption> { | |
| value: CandlestickDataValue | |
| } | |
| interface ExtraStateOption { | |
| emphasis?: { | |
| focus?: DefaultEmphasisFocus | |
| scale?: boolean | |
| } | |
| } | |
| export interface CandlestickSeriesOption | |
| extends SeriesOption<CandlestickStateOption, ExtraStateOption>, CandlestickStateOption, | |
| SeriesOnCartesianOptionMixin, | |
| SeriesLargeOptionMixin, | |
| SeriesEncodeOptionMixin { | |
| type?: 'candlestick' | |
| coordinateSystem?: 'cartesian2d' | |
| layout?: LayoutOrient | |
| clip?: boolean | |
| barMaxWidth?: number | string | |
| barMinWidth?: number | string | |
| barWidth?: number | string | |
| data?: (CandlestickDataValue | CandlestickDataItemOption)[] | |
| } | |
| class CandlestickSeriesModel extends SeriesModel<CandlestickSeriesOption> { | |
| static readonly type = 'series.candlestick'; | |
| readonly type = CandlestickSeriesModel.type; | |
| static readonly dependencies = ['xAxis', 'yAxis', 'grid']; | |
| coordinateSystem: Cartesian2D; | |
| dimensions: string[]; | |
| defaultValueDimensions = [ | |
| {name: 'open', defaultTooltip: true}, | |
| {name: 'close', defaultTooltip: true}, | |
| {name: 'lowest', defaultTooltip: true}, | |
| {name: 'highest', defaultTooltip: true} | |
| ]; | |
| static defaultOption: CandlestickSeriesOption = { | |
| // zlevel: 0, | |
| z: 2, | |
| coordinateSystem: 'cartesian2d', | |
| legendHoverLink: true, | |
| // xAxisIndex: 0, | |
| // yAxisIndex: 0, | |
| layout: null, // 'horizontal' or 'vertical' | |
| clip: true, | |
| itemStyle: { | |
| color: '#eb5454', // positive | |
| color0: '#47b262', // negative | |
| borderColor: '#eb5454', | |
| borderColor0: '#47b262', | |
| borderColorDoji: null, // when close === open | |
| // borderColor: '#d24040', | |
| // borderColor0: '#398f4f', | |
| borderWidth: 1 | |
| }, | |
| emphasis: { | |
| scale: true, | |
| itemStyle: { | |
| borderWidth: 2 | |
| } | |
| }, | |
| barMaxWidth: null, | |
| barMinWidth: null, | |
| barWidth: null, | |
| large: true, | |
| largeThreshold: 600, | |
| progressive: 3e3, | |
| progressiveThreshold: 1e4, | |
| progressiveChunkMode: 'mod', | |
| animationEasing: 'linear', | |
| animationDuration: 300 | |
| }; | |
| /** | |
| * Get dimension for shadow in dataZoom | |
| * @return dimension name | |
| */ | |
| getShadowDim() { | |
| return 'open'; | |
| } | |
| brushSelector(dataIndex: number, data: SeriesData, selectors: BrushCommonSelectorsForSeries): boolean { | |
| const itemLayout = data.getItemLayout(dataIndex); | |
| return itemLayout && selectors.rect(itemLayout.brushRect); | |
| } | |
| } | |
| mixin(CandlestickSeriesModel, WhiskerBoxCommonMixin, true); | |
| export default CandlestickSeriesModel; |