/
githubmirror
/
echarts
Обзор
Документация
Войти
/
githubmirror
/
echarts
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/component/axis/axisAction.ts
147 строк
5 KB
100pah
(fix) Remove the breaking change introduced by axis break. And export axis break related TS type.
08 апр 2025, 13:19
08 апр 2025, 13:19
2629a7c
Код
Авторство
О чём код?
/* * 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 { ModelFinderIdQuery, ModelFinderIndexQuery, ModelFinderNameQuery, parseFinder } from '../../util/model'; import { Payload, AxisBreakOptionIdentifierInAxis, ECActionRefinedEvent, ECActionRefinedEventContent } from '../../util/types'; import { defaults, each } from 'zrender/src/core/util'; import type { AxisBaseModel } from '../../coord/AxisBaseModel'; import type { EChartsExtensionInstallRegisters } from '../../extension'; import GlobalModel from '../../model/Global'; import ExtensionAPI from '../../core/ExtensionAPI'; export interface BaseAxisBreakPayload extends Payload { xAxisIndex?: ModelFinderIndexQuery; xAxisId?: ModelFinderIdQuery; xAxisName?: ModelFinderNameQuery; yAxisIndex?: ModelFinderIndexQuery; yAxisId?: ModelFinderIdQuery; yAxisName?: ModelFinderNameQuery; singleAxisIndex?: ModelFinderIndexQuery; singleAxisId?: ModelFinderIdQuery; singleAxisName?: ModelFinderNameQuery; breaks: AxisBreakOptionIdentifierInAxis[]; } export interface ExpandAxisBreakPayload extends BaseAxisBreakPayload { type: typeof AXIS_BREAK_EXPAND_ACTION_TYPE; } export interface CollapseAxisBreakPayload extends BaseAxisBreakPayload { type: typeof AXIS_BREAK_COLLAPSE_ACTION_TYPE; } export interface ToggleAxisBreakPayload extends BaseAxisBreakPayload { type: typeof AXIS_BREAK_TOGGLE_ACTION_TYPE; } export type AxisBreakChangedEventBreak = AxisBreakOptionIdentifierInAxis & { xAxisIndex?: ModelFinderIndexQuery; yAxisIndex?: ModelFinderIndexQuery; singleAxisIndex?: ModelFinderIndexQuery; isExpanded: boolean; old: { isExpanded: boolean; } }; export interface AxisBreakChangedEvent extends ECActionRefinedEvent { type: typeof AXIS_BREAK_CHANGED_EVENT_TYPE; fromAction: typeof AXIS_BREAK_EXPAND_ACTION_TYPE | typeof AXIS_BREAK_COLLAPSE_ACTION_TYPE | typeof AXIS_BREAK_TOGGLE_ACTION_TYPE; fromActionPayload: ExpandAxisBreakPayload | CollapseAxisBreakPayload | ToggleAxisBreakPayload; // Only include specified breaks. breaks: AxisBreakChangedEventBreak[]; } export const AXIS_BREAK_EXPAND_ACTION_TYPE = 'expandAxisBreak' as const; export const AXIS_BREAK_COLLAPSE_ACTION_TYPE = 'collapseAxisBreak' as const; export const AXIS_BREAK_TOGGLE_ACTION_TYPE = 'toggleAxisBreak' as const; const AXIS_BREAK_CHANGED_EVENT_TYPE = 'axisbreakchanged' as const; const expandAxisBreakActionInfo = { type: AXIS_BREAK_EXPAND_ACTION_TYPE, event: AXIS_BREAK_CHANGED_EVENT_TYPE, update: 'update', refineEvent: refineAxisBreakChangeEvent, }; const collapseAxisBreakActionInfo = { type: AXIS_BREAK_COLLAPSE_ACTION_TYPE, event: AXIS_BREAK_CHANGED_EVENT_TYPE, update: 'update', refineEvent: refineAxisBreakChangeEvent, }; const toggleAxisBreakActionInfo = { type: AXIS_BREAK_TOGGLE_ACTION_TYPE, event: AXIS_BREAK_CHANGED_EVENT_TYPE, update: 'update', refineEvent: refineAxisBreakChangeEvent, }; function refineAxisBreakChangeEvent( actionResultBatch: {eventBreaks: AxisBreakChangedEventBreak[]}[], payload: BaseAxisBreakPayload, ecModel: GlobalModel, api: ExtensionAPI ): { eventContent: ECActionRefinedEventContent<AxisBreakChangedEvent>; } { let breaks: AxisBreakChangedEventBreak[] = []; each(actionResultBatch, actionResult => { breaks = breaks.concat(actionResult.eventBreaks); }); return { eventContent: {breaks} }; } export function registerAction(registers: EChartsExtensionInstallRegisters) { registers.registerAction(expandAxisBreakActionInfo, actionHandler); registers.registerAction(collapseAxisBreakActionInfo, actionHandler); registers.registerAction(toggleAxisBreakActionInfo, actionHandler); function actionHandler(payload: BaseAxisBreakPayload, ecModel: GlobalModel) { const eventBreaks: AxisBreakChangedEventBreak[] = []; const finderResult = parseFinder(ecModel, payload); function dealUpdate(modelProp: string, indexProp: string) { each(finderResult[modelProp], (axisModel: AxisBaseModel) => { const result = axisModel.updateAxisBreaks(payload); each(result.breaks, item => { eventBreaks.push( defaults({[indexProp]: axisModel.componentIndex}, item) ); }); }); } dealUpdate('xAxisModels', 'xAxisIndex'); dealUpdate('yAxisModels', 'yAxisIndex'); dealUpdate('singleAxisModels', 'singleAxisIndex'); return {eventBreaks}; } }