blob: 760664b1747502a6616ccfc6f623d81d23fcf38f [file] [log] [blame]
/*
* 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 MarkerModel, { MarkerOption, MarkerStatisticType, MarkerPositionOption } from './MarkerModel';
import GlobalModel from '../../model/Global';
import {
LineStyleOption,
SeriesLineLabelOption,
SymbolOptionMixin,
ItemStyleOption,
StatesOptionMixin
} from '../../util/types';
interface MarkLineStateOption {
lineStyle?: LineStyleOption
/**
* itemStyle for symbol
*/
itemStyle?: ItemStyleOption
label?: SeriesLineLabelOption
}
interface MarkLineDataItemOptionBase extends MarkLineStateOption, StatesOptionMixin<MarkLineStateOption> {
name?: string
}
// 1D markLine for horizontal or vertical
export interface MarkLine1DDataItemOption extends MarkLineDataItemOptionBase {
// On cartesian coordinate system
xAxis?: number
yAxis?: number
// Use statistic method
type?: MarkerStatisticType
/**
* When using statistic method with type.
* valueIndex and valueDim can be specify which dim the statistic is used on.
*/
valueIndex?: number
valueDim?: string
/**
* Symbol for both two ends
*/
symbol?: string[] | string
symbolSize?: number[] | number
}
// 2D markLine on any direction
interface MarkLine2DDataItemDimOption extends
MarkLineDataItemOptionBase,
SymbolOptionMixin,
MarkerPositionOption {
}
export type MarkLine2DDataItemOption = [
// Start point
MarkLine2DDataItemDimOption,
// End point
MarkLine2DDataItemDimOption
];
export interface MarkLineOption extends MarkerOption,
MarkLineStateOption, StatesOptionMixin<MarkLineStateOption> {
mainType?: 'markLine'
symbol?: string[] | string
symbolSize?: number[] | number
/**
* Precision used on statistic method
*/
precision?: number
data?: (MarkLine1DDataItemOption | MarkLine2DDataItemOption)[]
}
class MarkLineModel extends MarkerModel<MarkLineOption> {
static type = 'markLine';
type = MarkLineModel.type;
createMarkerModelFromSeries(
markerOpt: MarkLineOption,
masterMarkerModel: MarkLineModel,
ecModel: GlobalModel
) {
return new MarkLineModel(markerOpt, masterMarkerModel, ecModel);
}
static defaultOption: MarkLineOption = {
zlevel: 0,
z: 5,
symbol: ['circle', 'arrow'],
symbolSize: [8, 16],
//symbolRotate: 0,
precision: 2,
tooltip: {
trigger: 'item'
},
label: {
show: true,
position: 'end',
distance: 5
},
lineStyle: {
type: 'dashed'
},
emphasis: {
label: {
show: true
},
lineStyle: {
width: 3
}
},
animationEasing: 'linear'
};
}
export default MarkLineModel;