提交 4b8784e8 编写于 作者: S sushuang

Fix raw series process logic in pipeline.

上级 10bdc9d0
......@@ -6,7 +6,7 @@ import VisualMapping from '../../visual/VisualMapping';
var VISUAL_PRIORITY = echarts.PRIORITY.VISUAL.COMPONENT;
echarts.registerVisual(VISUAL_PRIORITY, {
allSeries: true,
createOnAllSeries: true,
reset: function (seriesModel, ecModel) {
var resetDefines = [];
ecModel.eachComponent('visualMap', function (visualMapModel) {
......@@ -31,7 +31,7 @@ echarts.registerVisual(VISUAL_PRIORITY, {
// Only support color.
echarts.registerVisual(VISUAL_PRIORITY, {
allSeries: true,
createOnAllSeries: true,
reset: function (seriesModel, ecModel) {
var data = seriesModel.getData();
var visualMetaList = [];
......
......@@ -1996,7 +1996,7 @@ export function registerVisual(priority, visualTask) {
}
/**
* @param {Object|Function} fn: {seriesType, processRawSeries, reset}
* @param {Object|Function} fn: {seriesType, createOnAllSeries, performRawSeries, reset}
*/
function normalizeRegister(targetList, priority, fn, defaultPriority, visualType) {
if (isFunction(priority) || isObject(priority)) {
......
......@@ -2,13 +2,12 @@
* @module echarts/stream/Scheduler
*/
import {each, assert, isFunction, createHashMap, noop} from 'zrender/src/core/util';
import {each, isFunction, createHashMap, noop} from 'zrender/src/core/util';
import {createTask} from './task';
import {getUID} from '../util/component';
import GlobalModel from '../model/Global';
import ExtensionAPI from '../ExtensionAPI';
import {normalizeToArray} from '../util/model';
import { __DEV__ } from '../config';
/**
* @constructor
......@@ -170,27 +169,19 @@ function performStageTasks(scheduler, stageHandlers, ecModel, payload, opt) {
// then execute the overall task. And stub will call seriesModel.setData,
// which ensures that in the overallTask seriesModel.getData() will not
// return incorrect data.
ecModel.eachRawSeries(function (seriesModel) {
var task = agentStubMap.get(seriesModel.uid);
task && task.perform(performArgs);
agentStubMap.each(function (stub) {
stub.perform(performArgs);
});
unfinished |= overallTask.perform(performArgs);
}
else if (seriesTaskMap) {
ecModel.eachRawSeries(function (seriesModel) {
var pipelineId = seriesModel.uid;
var task = seriesTaskMap.get(pipelineId);
if (!task) {
return;
}
seriesTaskMap.each(function (task, pipelineId) {
if (needSetDirty(opt, task)) {
task.dirty();
}
var performArgs = scheduler.getPerformArgs(task, opt.block);
// ??? chck skip necessary.
performArgs.skip = !stageHandler.processRawSeries && ecModel.isSeriesFiltered(seriesModel);
performArgs.skip = !stageHandler.performRawSeries
&& ecModel.isSeriesFiltered(task.context.model);
updatePayload(task, payload);
unfinished |= task.perform(performArgs);
});
......@@ -235,14 +226,15 @@ var updatePayload = proto.updatePayload = function (task, payload) {
};
function createSeriesStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) {
var seriesTaskMap = stageHandlerRecord.seriesTaskMap || (stageHandlerRecord.seriesTaskMap = createHashMap());
var seriesTaskMap = stageHandlerRecord.seriesTaskMap
|| (stageHandlerRecord.seriesTaskMap = createHashMap());
var seriesType = stageHandler.seriesType;
var getTargetSeries = stageHandler.getTargetSeries;
// If a stageHandler should cover all series, `allSeries` should be declared mandatorily,
// If a stageHandler should cover all series, `createOnAllSeries` should be declared mandatorily,
// to avoid some typo or abuse. Otherwise if an extension do not specify a `seriesType`,
// it works but it may cause other irrelevant charts blocked.
if (stageHandler.allSeries) {
if (stageHandler.createOnAllSeries) {
ecModel.eachRawSeries(create);
}
else if (seriesType) {
......
......@@ -41,6 +41,7 @@ var taskProto = Task.prototype;
taskProto.perform = function (performArgs) {
var upTask = this._upstream;
var skip = performArgs && performArgs.skip;
// TODO some refactor.
// Pull data.
......@@ -54,13 +55,13 @@ taskProto.perform = function (performArgs) {
}
var planResult;
if (this._plan) {
if (this._plan && !skip) {
planResult = this._plan(this.context);
}
if (this._dirty || planResult === 'reset') {
this._dirty = false;
reset(this);
reset(this, skip);
}
var step = performArgs && performArgs.step;
......@@ -88,7 +89,7 @@ taskProto.perform = function (performArgs) {
);
var outputDueEnd;
!(performArgs && performArgs.skip) && start < end && (
!skip && start < end && (
outputDueEnd = this._progress({start: start, end: end}, this.context)
);
......@@ -120,10 +121,10 @@ taskProto.dirty = function () {
/**
* @param {Object} [params]
*/
function reset(taskIns) {
function reset(taskIns, skip) {
taskIns._dueIndex = taskIns._outputDueEnd = taskIns._dueEnd = 0;
taskIns._progress = taskIns._reset && taskIns._reset(
taskIns._progress = !skip && taskIns._reset && taskIns._reset(
taskIns.context,
taskIns._upstream && taskIns._upstream.context
);
......
import Gradient from 'zrender/src/graphic/Gradient';
export default {
allSeries: true,
processRawSeries: true,
createOnAllSeries: true,
performRawSeries: true,
reset: function (seriesModel, ecModel) {
var data = seriesModel.getData();
var colorAccessPath = (seriesModel.visualColorAccessPath || 'itemStyle.color').split('.');
......
......@@ -3,7 +3,7 @@ export default function (seriesType, defaultSymbolType, legendSymbol) {
// Encoding visual for all series include which is filtered for legend drawing
return {
seriesType: seriesType,
processRawSeries: true,
performRawSeries: true,
reset: function (seriesModel, ecModel, api) {
var data = seriesModel.getData();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册