(scheduler, stageHandler, stageHandlerRecord, ecModel, api)
| 25827 | }; |
| 25828 | |
| 25829 | function createSeriesStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) { |
| 25830 | var seriesTaskMap = stageHandlerRecord.seriesTaskMap |
| 25831 | || (stageHandlerRecord.seriesTaskMap = createHashMap()); |
| 25832 | var seriesType = stageHandler.seriesType; |
| 25833 | var getTargetSeries = stageHandler.getTargetSeries; |
| 25834 | |
| 25835 | // If a stageHandler should cover all series, `createOnAllSeries` should be declared mandatorily, |
| 25836 | // to avoid some typo or abuse. Otherwise if an extension do not specify a `seriesType`, |
| 25837 | // it works but it may cause other irrelevant charts blocked. |
| 25838 | if (stageHandler.createOnAllSeries) { |
| 25839 | ecModel.eachRawSeries(create); |
| 25840 | } |
| 25841 | else if (seriesType) { |
| 25842 | ecModel.eachRawSeriesByType(seriesType, create); |
| 25843 | } |
| 25844 | else if (getTargetSeries) { |
| 25845 | getTargetSeries(ecModel, api).each(create); |
| 25846 | } |
| 25847 | |
| 25848 | function create(seriesModel) { |
| 25849 | var pipelineId = seriesModel.uid; |
| 25850 | |
| 25851 | // Init tasks for each seriesModel only once. |
| 25852 | // Reuse original task instance. |
| 25853 | var task = seriesTaskMap.get(pipelineId) |
| 25854 | || seriesTaskMap.set(pipelineId, createTask({ |
| 25855 | plan: seriesTaskPlan, |
| 25856 | reset: seriesTaskReset, |
| 25857 | count: seriesTaskCount |
| 25858 | })); |
| 25859 | task.context = { |
| 25860 | model: seriesModel, |
| 25861 | ecModel: ecModel, |
| 25862 | api: api, |
| 25863 | useClearVisual: stageHandler.isVisual && !stageHandler.isLayout, |
| 25864 | plan: stageHandler.plan, |
| 25865 | reset: stageHandler.reset, |
| 25866 | scheduler: scheduler |
| 25867 | }; |
| 25868 | pipe(scheduler, seriesModel, task); |
| 25869 | } |
| 25870 | |
| 25871 | // Clear unused series tasks. |
| 25872 | var pipelineMap = scheduler._pipelineMap; |
| 25873 | seriesTaskMap.each(function (task, pipelineId) { |
| 25874 | if (!pipelineMap.get(pipelineId)) { |
| 25875 | task.dispose(); |
| 25876 | seriesTaskMap.removeKey(pipelineId); |
| 25877 | } |
| 25878 | }); |
| 25879 | } |
| 25880 | |
| 25881 | function createOverallStageTask(scheduler, stageHandler, stageHandlerRecord, ecModel, api) { |
| 25882 | var overallTask = stageHandlerRecord.overallTask = stageHandlerRecord.overallTask |
no test coverage detected