You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by ov...@apache.org on 2021/04/08 07:28:04 UTC

[echarts] 01/01: fix(timeline): trigger timelineplaychange event when play to the end #14588

This is an automated email from the ASF dual-hosted git repository.

ovilia pushed a commit to branch fix-timeline-event
in repository https://gitbox.apache.org/repos/asf/echarts.git

commit 0e29b0d74413e1aa959a4ece7d4345e3cde594fe
Author: Ovilia <zw...@gmail.com>
AuthorDate: Thu Apr 8 15:25:26 2021 +0800

    fix(timeline): trigger timelineplaychange event when play to the end #14588
---
 src/component/timeline/timelineAction.ts | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/component/timeline/timelineAction.ts b/src/component/timeline/timelineAction.ts
index c4ef686..202bc18 100644
--- a/src/component/timeline/timelineAction.ts
+++ b/src/component/timeline/timelineAction.ts
@@ -22,6 +22,7 @@ import TimelineModel from './TimelineModel';
 import { defaults } from 'zrender/src/core/util';
 import { Payload } from '../../util/types';
 import { EChartsExtensionInstallRegisters } from '../../extension';
+import ExtensionAPI from '../../core/ExtensionAPI';
 
 export interface TimelineChangePayload extends Payload {
     type: 'timelineChange'
@@ -38,14 +39,25 @@ export function installTimelineAction(registers: EChartsExtensionInstallRegister
 
         {type: 'timelineChange', event: 'timelineChanged', update: 'prepareAndUpdate'},
 
-        function (payload: TimelineChangePayload, ecModel: GlobalModel) {
+        function (payload: TimelineChangePayload, ecModel: GlobalModel, api: ExtensionAPI) {
 
             const timelineModel = ecModel.getComponent('timeline') as TimelineModel;
             if (timelineModel && payload.currentIndex != null) {
                 timelineModel.setCurrentIndex(payload.currentIndex);
 
-                if (!timelineModel.get('loop', true) && timelineModel.isIndexMax()) {
+                if (
+                    !timelineModel.get('loop', true)
+                    && timelineModel.isIndexMax()
+                    && timelineModel.getPlayState()
+                ) {
                     timelineModel.setPlayState(false);
+
+                    // The timeline has played to the end, trigger event
+                    api.dispatchAction({
+                        type: 'timelinePlayChange',
+                        playState: false,
+                        from: payload.from
+                    });
                 }
             }
 

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org