未验证 提交 d2fefebb 编写于 作者: D Deqing Li 提交者: GitHub

Merge pull request #11572 from deqingli/sankey

Fix sankey frequent flashing with hovering on the node and edge #11306
......@@ -94,6 +94,7 @@ export default echarts.extendChartView({
},
render: function (seriesModel, ecModel, api) {
var graphView = this;
var coordSys = seriesModel.coordinateSystem;
this._model = seriesModel;
......@@ -163,6 +164,10 @@ export default echarts.extendChartView({
if (itemModel.get('focusNodeAdjacency')) {
el.on('mouseover', el[FOCUS_ADJACENCY] = function () {
if (this._unfocusDelayTimer) {
clearTimeout(this._unfocusDelayTimer);
this._unfocusDelayTimer = null;
}
api.dispatchAction({
type: 'focusNodeAdjacency',
seriesId: seriesModel.id,
......@@ -170,10 +175,7 @@ export default echarts.extendChartView({
});
});
el.on('mouseout', el[UNFOCUS_ADJACENCY] = function () {
api.dispatchAction({
type: 'unfocusNodeAdjacency',
seriesId: seriesModel.id
});
graphView._dispatchUnfocus(api);
});
}
......@@ -187,6 +189,10 @@ export default echarts.extendChartView({
if (edge.getModel().get('focusNodeAdjacency')) {
el.on('mouseover', el[FOCUS_ADJACENCY] = function () {
if (this._unfocusDelayTimer) {
clearTimeout(this._unfocusDelayTimer);
this._unfocusDelayTimer = null;
}
api.dispatchAction({
type: 'focusNodeAdjacency',
seriesId: seriesModel.id,
......@@ -194,10 +200,7 @@ export default echarts.extendChartView({
});
});
el.on('mouseout', el[UNFOCUS_ADJACENCY] = function () {
api.dispatchAction({
type: 'unfocusNodeAdjacency',
seriesId: seriesModel.id
});
graphView._dispatchUnfocus(api);
});
}
});
......@@ -249,6 +252,26 @@ export default echarts.extendChartView({
dispose: function () {
this._controller && this._controller.dispose();
this._controllerHost = {};
if (this._unfocusDelayTimer) {
clearTimeout(this._unfocusDelayTimer);
this._unfocusDelayTimer = null;
}
},
_dispatchUnfocus: function (api, opt) {
var self = this;
if (this._unfocusDelayTimer) {
clearTimeout(this._unfocusDelayTimer);
this._unfocusDelayTimer = null;
}
this._unfocusDelayTimer = setTimeout(function () {
self._unfocusDelayTimer = null;
api.dispatchAction({
type: 'unfocusNodeAdjacency',
seriesId: self._model.id
});
}, 500);
},
focusNodeAdjacency: function (seriesModel, ecModel, api, payload) {
......
......@@ -277,6 +277,10 @@ export default echarts.extendChartView({
if (itemModel.get('focusNodeAdjacency')) {
el.off('mouseover').on('mouseover', function () {
if (!sankeyView._focusAdjacencyDisabled) {
if (this._unfocusDelayTimer) {
clearTimeout(this._unfocusDelayTimer);
this._unfocusDelayTimer = null;
}
api.dispatchAction({
type: 'focusNodeAdjacency',
seriesId: seriesModel.id,
......@@ -286,10 +290,7 @@ export default echarts.extendChartView({
});
el.off('mouseout').on('mouseout', function () {
if (!sankeyView._focusAdjacencyDisabled) {
api.dispatchAction({
type: 'unfocusNodeAdjacency',
seriesId: seriesModel.id
});
sankeyView._dispatchUnfocus(api);
}
});
}
......@@ -300,6 +301,10 @@ export default echarts.extendChartView({
if (edgeModel.get('focusNodeAdjacency')) {
el.off('mouseover').on('mouseover', function () {
if (!sankeyView._focusAdjacencyDisabled) {
if (this._unfocusDelayTimer) {
clearTimeout(this._unfocusDelayTimer);
this._unfocusDelayTimer = null;
}
api.dispatchAction({
type: 'focusNodeAdjacency',
seriesId: seriesModel.id,
......@@ -309,10 +314,7 @@ export default echarts.extendChartView({
});
el.off('mouseout').on('mouseout', function () {
if (!sankeyView._focusAdjacencyDisabled) {
api.dispatchAction({
type: 'unfocusNodeAdjacency',
seriesId: seriesModel.id
});
sankeyView._dispatchUnfocus(api);
}
});
}
......@@ -327,7 +329,27 @@ export default echarts.extendChartView({
this._data = seriesModel.getData();
},
dispose: function () {},
dispose: function () {
if (this._unfocusDelayTimer) {
clearTimeout(this._unfocusDelayTimer);
this._unfocusDelayTimer = null;
}
},
_dispatchUnfocus: function (api) {
var self = this;
if (this._unfocusDelayTimer) {
clearTimeout(this._unfocusDelayTimer);
this._unfocusDelayTimer = null;
}
this._unfocusDelayTimer = setTimeout(function () {
self._unfocusDelayTimer = null;
api.dispatchAction({
type: 'unfocusNodeAdjacency',
seriesId: self._model.id
});
}, 500);
},
focusNodeAdjacency: function (seriesModel, ecModel, api, payload) {
var data = this._model.getData();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册