You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by sh...@apache.org on 2020/09/23 10:41:17 UTC

[incubator-echarts] branch pr/13317 updated: fix(task): fix downSample wont change the task params end.

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

shenyi pushed a commit to branch pr/13317
in repository https://gitbox.apache.org/repos/asf/incubator-echarts.git


The following commit(s) were added to refs/heads/pr/13317 by this push:
     new c68ab09  fix(task): fix downSample wont change the task params end.
c68ab09 is described below

commit c68ab09d1f8b6ab197e9499b65b7df3ad64c35fe
Author: pissang <bm...@gmail.com>
AuthorDate: Wed Sep 23 18:40:11 2020 +0800

    fix(task): fix downSample wont change the task params end.
---
 src/chart/helper/createRenderPlanner.ts | 17 +++++++++--------
 src/data/List.ts                        |  4 ++--
 src/model/Series.ts                     |  9 +++++----
 3 files changed, 16 insertions(+), 14 deletions(-)

diff --git a/src/chart/helper/createRenderPlanner.ts b/src/chart/helper/createRenderPlanner.ts
index bdf564d..72daef1 100644
--- a/src/chart/helper/createRenderPlanner.ts
+++ b/src/chart/helper/createRenderPlanner.ts
@@ -17,8 +17,6 @@
 * under the License.
 */
 
-// @ts-nocheck
-
 import {makeInner} from '../../util/model';
 import SeriesModel from '../../model/Series';
 import { StageHandlerPlanReturn } from '../../util/types';
@@ -27,23 +25,26 @@ import { StageHandlerPlanReturn } from '../../util/types';
  * @return {string} If large mode changed, return string 'reset';
  */
 export default function () {
-    const inner = makeInner();
+    const inner = makeInner<{
+        large: boolean
+        progressiveRender: boolean
+    }, SeriesModel>();
 
     return function (seriesModel: SeriesModel): StageHandlerPlanReturn {
         const fields = inner(seriesModel);
         const pipelineContext = seriesModel.pipelineContext;
 
-        const originalLarge = fields.large;
-        const originalProgressive = fields.progressiveRender;
+        const originalLarge = !!fields.large;
+        const originalProgressive = !!fields.progressiveRender;
 
         // FIXME: if the planner works on a filtered series, `pipelineContext` does not
         // exists. See #11611 . Probably we need to modify this structure, see the comment
         // on `performRawSeries` in `Schedular.js`.
-        const large = fields.large = pipelineContext && pipelineContext.large;
-        const progressive = fields.progressiveRender = pipelineContext && pipelineContext.progressiveRender;
+        const large = fields.large = !!(pipelineContext && pipelineContext.large);
+        const progressive = fields.progressiveRender = !!(pipelineContext && pipelineContext.progressiveRender);
 
         return (
-            !!((originalLarge ^ large as any) || (originalProgressive ^ progressive as any)) && 'reset'
+            !!((originalLarge !== large) || (originalProgressive !== progressive)) && 'reset'
         ) as StageHandlerPlanReturn;
     };
 }
diff --git a/src/data/List.ts b/src/data/List.ts
index 15cebe5..46aa5e8 100644
--- a/src/data/List.ts
+++ b/src/data/List.ts
@@ -283,10 +283,10 @@ class List<
 
     // Methods that create a new list based on this list should be listed here.
     // Notice that those method should `RETURN` the new list.
-    TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'map'] as const;
+    TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'lttbDownSample', 'map'] as const;
     // Methods that change indices of this list should be listed here.
     CHANGABLE_METHODS = ['filterSelf', 'selectRange'] as const;
-
+    DOWNSAMPLE_METHODS = ['downSample', 'lttbDownSample'] as const;
 
     /**
      * @param dimensions
diff --git a/src/model/Series.ts b/src/model/Series.ts
index a082994..5857cbf 100644
--- a/src/model/Series.ts
+++ b/src/model/Series.ts
@@ -643,17 +643,18 @@ function dataTaskProgress(param: StageHandlerProgressParams, context: SeriesTask
 
 // TODO refactor
 function wrapData(data: List, seriesModel: SeriesModel): void {
-    zrUtil.each(data.CHANGABLE_METHODS, function (methodName) {
-        data.wrapMethod(methodName as any, zrUtil.curry(onDataSelfChange, seriesModel));
+    zrUtil.each([...data.CHANGABLE_METHODS, ...data.DOWNSAMPLE_METHODS], function (methodName) {
+        data.wrapMethod(methodName as any, zrUtil.curry(onDataChange, seriesModel));
     });
 }
 
-function onDataSelfChange(this: List, seriesModel: SeriesModel): void {
+function onDataChange(this: List, seriesModel: SeriesModel, newList: List): List {
     const task = getCurrentTask(seriesModel);
     if (task) {
         // Consider case: filter, selectRange
-        task.setOutputEnd(this.count());
+        task.setOutputEnd((newList || this).count());
     }
+    return newList;
 }
 
 function getCurrentTask(seriesModel: SeriesModel): GeneralTask {


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