diff --git a/src/chart/graph/GraphView.js b/src/chart/graph/GraphView.js index 32e1ebc7f396f1f27f25bdf588e94da6a4b73813..1b5477f18dd52cfc75fcaed191582a1f6daadc47 100644 --- a/src/chart/graph/GraphView.js +++ b/src/chart/graph/GraphView.js @@ -34,13 +34,14 @@ var nodeOpacityPath = ['itemStyle', 'opacity']; var lineOpacityPath = ['lineStyle', 'opacity']; function getItemOpacity(item, opacityPath) { - return item.getVisual('opacity') || item.getModel().get(opacityPath); + var opacity = item.getVisual('opacity'); + return opacity != null ? opacity : item.getModel().get(opacityPath); } function fadeOutItem(item, opacityPath, opacityRatio) { var el = item.getGraphicEl(); - var opacity = getItemOpacity(item, opacityPath); + if (opacityRatio != null) { opacity == null && (opacity = 1); opacity *= opacityRatio; @@ -48,7 +49,7 @@ function fadeOutItem(item, opacityPath, opacityRatio) { el.downplay && el.downplay(); el.traverse(function (child) { - if (child.type !== 'group') { + if (!child.isGroup) { var opct = child.lineLabelOriginalOpacity; if (opct == null || opacityRatio != null) { opct = opacity; @@ -61,13 +62,13 @@ function fadeOutItem(item, opacityPath, opacityRatio) { function fadeInItem(item, opacityPath) { var opacity = getItemOpacity(item, opacityPath); var el = item.getGraphicEl(); - - el.highlight && el.highlight(); + // Should go back to normal opacity first, consider hoverLayer, + // where current state is copied to elMirror, and support + // emphasis opacity here. el.traverse(function (child) { - if (child.type !== 'group') { - child.setStyle('opacity', opacity); - } + !child.isGroup && child.setStyle('opacity', opacity); }); + el.highlight && el.highlight(); } export default echarts.extendChartView({ diff --git a/test/hoverStyle.html b/test/hoverStyle.html index e3f80dc22f979b8b7d527fac41196931c1151630..551e890d521c754123ba93f9f54bc44f5bebe100 100644 --- a/test/hoverStyle.html +++ b/test/hoverStyle.html @@ -343,7 +343,13 @@ under the License. {value: 100, name: 'aa', x: 100, y: 200}, {value: 150, name: 'bb', x: 450, y: 300}, {value: 200, name: 'cc', x: 200, y: 100}, - {value: 250, name: 'dd', x: 450, y: 250} + {value: 250, name: 'dd', x: 450, y: 250, + emphasis: { + itemStyle: { + color: 'blue' + } + } + } ], links: [ {source: 'aa', target: 'bb'}, @@ -360,7 +366,6 @@ under the License. color: 'orange', type: 'solid', width: 8 - // opacity: .8 } } }] @@ -368,8 +373,8 @@ under the License. var chart = testHelper.create(echarts, 'mainb4', { title: [ - 'normal line is **green dashed width 3**,', - 'should become **orange solid width 8** when hovered' + 'normal style is **line: green dashed width 3, node: red**,', + 'should become **line: orange solid width 8, node: only "dd" blue** when hovered' ], option: option, height: 200