/* * 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 createListFromArray from '../helper/createListFromArray'; import SeriesModel from '../../model/Series'; import { SeriesOption, SeriesOnPolarOptionMixin, SeriesOnCartesianOptionMixin, SeriesOnCalendarOptionMixin, SeriesOnGeoOptionMixin, SeriesOnSingleOptionMixin, SeriesSymbolOptionMixin, OptionDataValue, ItemStyleOption, LabelOption, ZRColor } from '../../util/types'; import GlobalModel from '../../model/Global'; import List from '../../data/List'; type ScatterDataValue = OptionDataValue | OptionDataValue[] export interface EffectScatterDataItemOption { name?: string value?: ScatterDataValue itemStyle?: ItemStyleOption label?: LabelOption emphasis?: { itemStyle?: ItemStyleOption label?: LabelOption } } export interface EffectScatterSeriesOption extends SeriesOption, SeriesOnCartesianOptionMixin, SeriesOnPolarOptionMixin, SeriesOnCalendarOptionMixin, SeriesOnGeoOptionMixin, SeriesOnSingleOptionMixin, SeriesSymbolOptionMixin { coordinateSystem?: string effectType?: 'ripple' /** * When to show the effect */ showEffectOn?: 'render' | 'emphasis' /** * Ripple effect config */ rippleEffect?: { period?: number /** * Scale of ripple */ scale?: number brushType?: 'fill' | 'stroke' color?: ZRColor } data?: (EffectScatterDataItemOption | OptionDataValue)[] } class EffectScatterSeriesModel extends SeriesModel { static readonly type = 'series.effectScatter' type = EffectScatterSeriesModel.type static readonly dependencies = ['grid', 'polar'] brushSelector = 'point' getInitialData(option: EffectScatterSeriesOption, ecModel: GlobalModel): List { return createListFromArray(this.getSource(), this, {useEncodeDefaulter: true}); } defaultOption: EffectScatterSeriesOption = { coordinateSystem: 'cartesian2d', zlevel: 0, z: 2, legendHoverLink: true, effectType: 'ripple', progressive: 0, // When to show the effect, option: 'render'|'emphasis' showEffectOn: 'render', // Ripple effect config rippleEffect: { period: 4, // Scale of ripple scale: 2.5, // Brush type can be fill or stroke brushType: 'fill' }, // Cartesian coordinate system // xAxisIndex: 0, // yAxisIndex: 0, // Polar coordinate system // polarIndex: 0, // Geo coordinate system // geoIndex: 0, // symbol: null, // 图形类型 symbolSize: 10 // 图形大小,半宽(半径)参数,当图形为方向或菱形则总宽度为symbolSize * 2 // symbolRotate: null, // 图形旋转控制 // itemStyle: { // opacity: 1 // } } } SeriesModel.registerClass(EffectScatterSeriesModel); export default EffectScatterSeriesModel;