| /* | |
| * 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 BaseBarSeriesModel, { BaseBarSeriesOption } from './BaseBarSeries'; | |
| import { | |
| OptionDataValue, | |
| ItemStyleOption, | |
| SeriesLabelOption, | |
| AnimationOptionMixin, | |
| SeriesStackOptionMixin, | |
| StatesOptionMixin, | |
| OptionDataItemObject, | |
| DefaultEmphasisFocus, | |
| SeriesEncodeOptionMixin | |
| } from '../../util/types'; | |
| import type Cartesian2D from '../../coord/cartesian/Cartesian2D'; | |
| import { inheritDefaultOption } from '../../util/component'; | |
| export interface PictorialBarStateOption { | |
| itemStyle?: ItemStyleOption | |
| label?: SeriesLabelOption | |
| } | |
| interface PictorialBarSeriesSymbolOption { | |
| /** | |
| * Customized bar shape | |
| */ | |
| symbol?: string | |
| /** | |
| * Can be ['100%', '100%'], null means auto. | |
| * The percent will be relative to category width. If no repeat. | |
| * Will be relative to symbolBoundingData. | |
| */ | |
| symbolSize?: (number | string)[] | number | string | |
| symbolRotate?: number | |
| /** | |
| * Default to be auto | |
| */ | |
| symbolPosition?: 'start' | 'end' | 'center' | |
| /** | |
| * Can be percent offset relative to the symbolSize | |
| */ | |
| symbolOffset?: (number | string)[] | number | string | |
| /** | |
| * start margin and end margin. Can be a number or a percent string relative to symbolSize. | |
| * Auto margin by default. | |
| */ | |
| symbolMargin?: (number | string)[] | number | string | |
| /** | |
| * true: means auto calculate repeat times and cut by data. | |
| * a number: specifies repeat times, and do not cut by data. | |
| * 'fixed': means auto calculate repeat times but do not cut by data. | |
| * | |
| * Otherwise means no repeat | |
| */ | |
| symbolRepeat?: boolean | number | 'fixed' | |
| /** | |
| * From start to end or end to start. | |
| */ | |
| symbolRepeatDirection?: 'start' | 'end' | |
| symbolClip?: boolean | |
| /** | |
| * It will define the size of graphic elements. | |
| */ | |
| symbolBoundingData?: number | number[] | |
| symbolPatternSize?: number | |
| } | |
| interface ExtraStateOption { | |
| emphasis?: { | |
| focus?: DefaultEmphasisFocus | |
| scale?: boolean | |
| } | |
| } | |
| export interface PictorialBarDataItemOption extends PictorialBarSeriesSymbolOption, | |
| // Pictorial bar support configure animation in each data item. | |
| AnimationOptionMixin, | |
| PictorialBarStateOption, StatesOptionMixin<PictorialBarStateOption, ExtraStateOption>, | |
| OptionDataItemObject<OptionDataValue> { | |
| z?: number | |
| cursor?: string | |
| } | |
| export interface PictorialBarSeriesOption | |
| extends BaseBarSeriesOption<PictorialBarStateOption, ExtraStateOption>, PictorialBarStateOption, | |
| PictorialBarSeriesSymbolOption, | |
| SeriesStackOptionMixin, SeriesEncodeOptionMixin { | |
| type?: 'pictorialBar' | |
| coordinateSystem?: 'cartesian2d' | |
| data?: (PictorialBarDataItemOption | OptionDataValue | OptionDataValue[])[] | |
| } | |
| class PictorialBarSeriesModel extends BaseBarSeriesModel<PictorialBarSeriesOption> { | |
| static type = 'series.pictorialBar'; | |
| type = PictorialBarSeriesModel.type; | |
| static dependencies = ['grid']; | |
| coordinateSystem: Cartesian2D; | |
| hasSymbolVisual = true; | |
| defaultSymbol = 'roundRect'; | |
| static defaultOption: PictorialBarSeriesOption = inheritDefaultOption(BaseBarSeriesModel.defaultOption, { | |
| symbol: 'circle', // Customized bar shape | |
| symbolSize: null, // | |
| symbolRotate: null, | |
| symbolPosition: null, // 'start' or 'end' or 'center', null means auto. | |
| symbolOffset: null, | |
| symbolMargin: null, | |
| symbolRepeat: false, | |
| symbolRepeatDirection: 'end', // 'end' means from 'start' to 'end'. | |
| symbolClip: false, | |
| symbolBoundingData: null, // Can be 60 or -40 or [-40, 60] | |
| symbolPatternSize: 400, // 400 * 400 px | |
| barGap: '-100%', // In most case, overlap is needed. | |
| // z can be set in data item, which is z2 actually. | |
| // Disable progressive | |
| progressive: 0, | |
| emphasis: { | |
| // By default pictorialBar do not hover scale. Hover scale is not suitable | |
| // for the case that both has foreground and background. | |
| scale: false | |
| }, | |
| select: { | |
| itemStyle: { | |
| borderColor: '#212121' | |
| } | |
| } | |
| }); | |
| getInitialData(option: PictorialBarSeriesOption) { | |
| // Disable stack. | |
| (option as any).stack = null; | |
| return super.getInitialData.apply(this, arguments as any); | |
| } | |
| } | |
| export default PictorialBarSeriesModel; |