Spaces:
Running
Running
| /* | |
| * 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 Element from 'zrender/src/Element'; | |
| import { | |
| DataModel, ECEventData, BlurScope, InnerFocus, SeriesDataType, | |
| ComponentMainType, ComponentItemTooltipOption | |
| } from './types'; | |
| import { makeInner } from './model'; | |
| export type SSRItemType = 'chart' | 'legend'; | |
| /** | |
| * ECData stored on graphic element | |
| */ | |
| export interface ECData { | |
| dataIndex?: number; | |
| dataModel?: DataModel; | |
| eventData?: ECEventData; | |
| seriesIndex?: number; | |
| dataType?: SeriesDataType; | |
| focus?: InnerFocus; | |
| blurScope?: BlurScope; | |
| ssrType?: SSRItemType; | |
| // Required by `tooltipConfig` and `focus`. | |
| componentMainType?: ComponentMainType; | |
| componentIndex?: number; | |
| componentHighDownName?: string; | |
| // To make a tooltipConfig, seach `setTooltipConfig`. | |
| // Used to find component tooltip option, which is used as | |
| // the parent of tooltipConfig.option for cascading. | |
| // If not provided, do not use component as its parent. | |
| // (Set manatary to make developers not to forget them). | |
| tooltipConfig?: { | |
| // Target item name to locate tooltip. | |
| name: string; | |
| option: ComponentItemTooltipOption<unknown>; | |
| }; | |
| } | |
| export const getECData = makeInner<ECData, Element>(); | |
| export const setCommonECData = (seriesIndex: number, dataType: SeriesDataType, dataIdx: number, el: Element) => { | |
| if (el) { | |
| const ecData = getECData(el); | |
| // Add data index and series index for indexing the data by element | |
| // Useful in tooltip | |
| ecData.dataIndex = dataIdx; | |
| ecData.dataType = dataType; | |
| ecData.seriesIndex = seriesIndex; | |
| ecData.ssrType = 'chart'; | |
| // TODO: not store dataIndex on children. | |
| if (el.type === 'group') { | |
| el.traverse(function (child: Element): void { | |
| const childECData = getECData(child); | |
| childECData.seriesIndex = seriesIndex; | |
| childECData.dataIndex = dataIdx; | |
| childECData.dataType = dataType; | |
| childECData.ssrType = 'chart'; | |
| }); | |
| } | |
| } | |
| }; | |