Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
missman
incubator-echarts
提交
1ac815ae
I
incubator-echarts
项目概览
missman
/
incubator-echarts
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
incubator-echarts
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1ac815ae
编写于
12月 29, 2017
作者:
S
sushuang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix overall task
上级
62959467
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
68 addition
and
39 deletion
+68
-39
src/component/dataZoom/SliderZoomView.js
src/component/dataZoom/SliderZoomView.js
+6
-0
src/component/dataZoom/dataZoomProcessor.js
src/component/dataZoom/dataZoomProcessor.js
+39
-28
src/data/List.js
src/data/List.js
+4
-2
src/stream/Scheduler.js
src/stream/Scheduler.js
+19
-7
src/stream/task.js
src/stream/task.js
+0
-2
未找到文件。
src/component/dataZoom/SliderZoomView.js
浏览文件 @
1ac815ae
...
...
@@ -284,6 +284,12 @@ var SliderZoomView = DataZoomView.extend({
var
size
=
this
.
_size
;
var
seriesModel
=
info
.
series
;
var
data
=
seriesModel
.
getRawData
();
// FIXME rough. ???
if
(
data
.
count
()
>
1
e5
)
{
return
;
}
var
otherDim
=
seriesModel
.
getShadowDim
?
seriesModel
.
getShadowDim
()
// @see candlestick
:
info
.
otherDim
;
...
...
src/component/dataZoom/dataZoomProcessor.js
浏览文件 @
1ac815ae
import
*
as
echarts
from
'
../../echarts
'
;
echarts
.
registerProcessor
(
function
(
ecModel
,
api
)
{
echarts
.
registerProcessor
({
getTargetSeries
:
function
(
ecModel
,
api
)
{
var
seriesModels
=
[];
ecModel
.
eachComponent
(
'
dataZoom
'
,
function
(
dataZoomModel
)
{
dataZoomModel
.
eachTargetAxis
(
function
(
dimNames
,
axisIndex
,
dataZoomModel
)
{
var
axisProxy
=
dataZoomModel
.
getAxisProxy
(
dimNames
.
name
,
axisIndex
);
seriesModels
=
seriesModels
.
concat
(
axisProxy
.
getTargetSeriesModels
());
});
});
return
seriesModels
;
},
overallReset
:
function
(
ecModel
,
api
)
{
ecModel
.
eachComponent
(
'
dataZoom
'
,
function
(
dataZoomModel
)
{
// We calculate window and reset axis here but not in model
// init stage and not after action dispatch handler, because
// reset should be called after seriesData.restoreData.
dataZoomModel
.
eachTargetAxis
(
resetSingleAxis
);
ecModel
.
eachComponent
(
'
dataZoom
'
,
function
(
dataZoomModel
)
{
// We calculate window and reset axis here but not in model
// init stage and not after action dispatch handler, because
// reset should be called after seriesData.restoreData.
dataZoomModel
.
eachTargetAxis
(
resetSingleAxis
);
// Caution: data zoom filtering is order sensitive when using
// percent range and no min/max/scale set on axis.
// For example, we have dataZoom definition:
// [
// {xAxisIndex: 0, start: 30, end: 70},
// {yAxisIndex: 0, start: 20, end: 80}
// ]
// In this case, [20, 80] of y-dataZoom should be based on data
// that have filtered by x-dataZoom using range of [30, 70],
// but should not be based on full raw data. Thus sliding
// x-dataZoom will change both ranges of xAxis and yAxis,
// while sliding y-dataZoom will only change the range of yAxis.
// So we should filter x-axis after reset x-axis immediately,
// and then reset y-axis and filter y-axis.
dataZoomModel
.
eachTargetAxis
(
filterSingleAxis
);
});
// Caution: data zoom filtering is order sensitive when using
// percent range and no min/max/scale set on axis.
// For example, we have dataZoom definition:
// [
// {xAxisIndex: 0, start: 30, end: 70},
// {yAxisIndex: 0, start: 20, end: 80}
// ]
// In this case, [20, 80] of y-dataZoom should be based on data
// that have filtered by x-dataZoom using range of [30, 70],
// but should not be based on full raw data. Thus sliding
// x-dataZoom will change both ranges of xAxis and yAxis,
// while sliding y-dataZoom will only change the range of yAxis.
// So we should filter x-axis after reset x-axis immediately,
// and then reset y-axis and filter y-axis.
dataZoomModel
.
eachTargetAxis
(
filterSingleAxis
);
});
function
resetSingleAxis
(
dimNames
,
axisIndex
,
dataZoomModel
)
{
dataZoomModel
.
getAxisProxy
(
dimNames
.
name
,
axisIndex
).
reset
(
dataZoomModel
,
api
);
}
function
resetSingleAxis
(
dimNames
,
axisIndex
,
dataZoomModel
)
{
dataZoomModel
.
getAxisProxy
(
dimNames
.
name
,
axisIndex
).
reset
(
dataZoomModel
,
api
);
}
function
filterSingleAxis
(
dimNames
,
axisIndex
,
dataZoomModel
)
{
dataZoomModel
.
getAxisProxy
(
dimNames
.
name
,
axisIndex
).
filterData
(
dataZoomModel
,
api
);
function
filterSingleAxis
(
dimNames
,
axisIndex
,
dataZoomModel
)
{
dataZoomModel
.
getAxisProxy
(
dimNames
.
name
,
axisIndex
).
filterData
(
dataZoomModel
,
api
);
}
}
});
...
...
src/data/List.js
浏览文件 @
1ac815ae
...
...
@@ -1068,7 +1068,7 @@ listProto.filterSelf = function (dimensions, cb, stack, context) {
};
/**
* Select data in range.
* Select data in range.
(For optimization of filter)
*/
listProto
.
selectRange
=
function
(
range
,
stack
)
{
'
use strict
'
;
...
...
@@ -1077,7 +1077,9 @@ listProto.selectRange = function (range, stack) {
var
dimensions
=
[];
for
(
var
dim
in
range
)
{
dimensions
.
push
(
dim
);
if
(
range
.
hasOwnProperty
(
dim
))
{
dimensions
.
push
(
dim
);
}
}
var
dimSize
=
dimensions
.
length
;
if
(
!
dimSize
)
{
...
...
src/stream/Scheduler.js
浏览文件 @
1ac815ae
...
...
@@ -126,7 +126,7 @@ proto.prepareView = function (view, model, ecModel, api) {
proto
.
performDataProcessorTasks
=
function
(
stageHandlers
,
ecModel
,
payload
)
{
// performStageTasks(this, stageHandlers, ecModel, payload, {block: true});
performStageTasks
(
this
,
stageHandlers
,
ecModel
,
payload
);
performStageTasks
(
this
,
stageHandlers
,
ecModel
,
payload
,
{
block
:
true
}
);
};
// opt
...
...
@@ -250,7 +250,8 @@ function createSeriesStageTask(scheduler, stageHandler, stageHandlerRecord, ecMo
function
createOverallStageTask
(
scheduler
,
stageHandler
,
stageHandlerRecord
,
ecModel
,
api
)
{
var
overallTask
=
stageHandlerRecord
.
overallTask
=
stageHandlerRecord
.
overallTask
||
createTask
(
{
plan
:
overallTaskPlan
,
reset
:
overallTaskReset
},
// For overall task, the function only be called on reset stage.
{
reset
:
overallTaskReset
},
{
ecModel
:
ecModel
,
api
:
api
,
overallReset
:
stageHandler
.
overallReset
}
);
...
...
@@ -259,11 +260,21 @@ function createOverallStageTask(scheduler, stageHandler, stageHandlerRecord, ecM
// Reuse orignal stubs.
var
stubs
=
overallTask
.
agentStubs
=
overallTask
.
agentStubs
||
[];
var
stubIndex
=
0
;
// If no series type detected, we do not set overallTask block. Otherwise the
// progressive rendering of all pipelines will be disabled unexpectedly.
// Moreover, it is not necessary to add stub to pipeline in the case.
// If no seriesType detected and no getTargetSeries method, we do not set
// overallTask block. Otherwise the progressive rendering of all pipelines
// will be disabled unexpectedly. Moreover, it is not necessary to add stub
// to pipeline in the case.
var
seriesType
=
stageHandler
.
seriesType
;
seriesType
&&
ecModel
.
eachRawSeriesByType
(
seriesType
,
function
(
seriesModel
)
{
var
getTargetSeries
=
stageHandler
.
getTargetSeries
;
if
(
seriesType
)
{
ecModel
.
eachRawSeriesByType
(
seriesType
,
createStub
);
}
else
if
(
getTargetSeries
)
{
each
(
getTargetSeries
(
ecModel
,
api
),
createStub
);
}
function
createStub
(
seriesModel
)
{
var
stub
=
stubs
[
stubIndex
]
=
stubs
[
stubIndex
]
||
createTask
(
{
plan
:
prepareData
,
reset
:
pullData
},
{
model
:
seriesModel
}
);
...
...
@@ -273,7 +284,8 @@ function createOverallStageTask(scheduler, stageHandler, stageHandlerRecord, ecM
// ???! sequence of call should be caution (when to set dirty), so move it to task.js?
pipe
(
scheduler
,
seriesModel
,
stub
);
});
}
stubs
.
length
=
stubIndex
;
}
...
...
src/stream/task.js
浏览文件 @
1ac815ae
...
...
@@ -124,8 +124,6 @@ function reset(taskIns) {
var
downstream
=
taskIns
.
_downstream
;
downstream
&&
downstream
.
dirty
();
// FIXME
taskIns
.
agent
&&
taskIns
.
agent
.
dirty
();
}
/**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录