You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by wa...@apache.org on 2021/03/27 07:02:37 UTC

[echarts] 01/01: fix(label): fix labels are not on the top bug.

This is an automated email from the ASF dual-hosted git repository.

wangzx pushed a commit to branch fix-label-z
in repository https://gitbox.apache.org/repos/asf/echarts.git

commit c152d9129784385e3c18504f10cfbdad917b3bcf
Author: plainheart <yh...@all-my-life.cn>
AuthorDate: Sat Mar 27 14:45:30 2021 +0800

    fix(label): fix labels are not on the top bug.
---
 src/chart/line/LineView.ts |  5 ++++
 src/core/echarts.ts        | 60 +++++++++++++++++++++++++++-------------------
 2 files changed, 40 insertions(+), 25 deletions(-)

diff --git a/src/chart/line/LineView.ts b/src/chart/line/LineView.ts
index 10b0b26..3721ded 100644
--- a/src/chart/line/LineView.ts
+++ b/src/chart/line/LineView.ts
@@ -840,6 +840,11 @@ class LineView extends ChartView {
                     seriesModel.get('zlevel'),
                     seriesModel.get('z')
                 );
+
+                // ensure label text of the temporal symbol is on the top of line and area polygon
+                const symbolLabel = symbol.getSymbolPath().getTextContent();
+                symbolLabel && (symbolLabel.z = this._polyline.z + 1);
+
                 (symbol as SymbolExtended).__temp = true;
                 data.setItemGraphicEl(dataIndex, symbol);
 
diff --git a/src/core/echarts.ts b/src/core/echarts.ts
index b272247..95bd8ff 100644
--- a/src/core/echarts.ts
+++ b/src/core/echarts.ts
@@ -2157,34 +2157,44 @@ class ECharts extends Eventful<ECEventDefinition> {
             if (model.preventAutoZ) {
                 return;
             }
-            const z = model.get('z');
-            const zlevel = model.get('zlevel');
             // Set z and zlevel
-            view.group.traverse(function (el: Displayable) {
-                if (!el.isGroup) {
-                    z != null && (el.z = z);
-                    zlevel != null && (el.zlevel = zlevel);
-
-                    // TODO if textContent is on group.
-                    const label = el.getTextContent();
-                    const labelLine = el.getTextGuideLine();
-                    if (label) {
-                        label.z = el.z;
-                        label.zlevel = el.zlevel;
-                        // lift z2 of text content
-                        // TODO if el.emphasis.z2 is spcefied, what about textContent.
-                        label.z2 = el.z2 + 2;
-                    }
-                    if (labelLine) {
-                        const showAbove = el.textGuideLineConfig && el.textGuideLineConfig.showAbove;
-                        labelLine.z = el.z;
-                        labelLine.zlevel = el.zlevel;
-                        labelLine.z2 = el.z2 + (showAbove ? 1 : -1);
-                    }
-                }
-            });
+            _updateZ(view.group, model.get('z'), model.get('zlevel'));
         };
 
+        function _updateZ(el: Element, z: number, zlevel: number) {
+            // Group may also have textContent
+            const label = el.getTextContent();
+            const labelLine = el.getTextGuideLine();
+            const isGroup = el.isGroup;
+
+            // always set z and zlevel if label/labelLine exists
+            if (label || labelLine) {
+                if (label) {
+                    label.z = z + 1;
+                    label.zlevel = zlevel;
+                    // lift z2 of text content
+                    // TODO if el.emphasis.z2 is spcefied, what about textContent.
+                    isGroup || (label.z2 = (el as Displayable).z2 + 2);
+                }
+                else {
+                    const showAbove = el.textGuideLineConfig && el.textGuideLineConfig.showAbove;
+                    labelLine.z = z + 1;
+                    labelLine.zlevel = zlevel;
+                    isGroup || (labelLine.z2 = (el as Displayable).z2 + (showAbove ? 1 : -1));
+                }
+            }
+
+            if (isGroup) {
+                // set z & zlevel of children elements of Group
+                el.traverse((childEl: Element) => _updateZ(childEl, z, zlevel));
+            }
+            else {
+                // not Group
+                z != null && ((el as Displayable).z = z);
+                zlevel != null && ((el as Displayable).zlevel = zlevel);
+            }
+        }
+
         // Clear states without animation.
         // TODO States on component.
         function clearStates(model: ComponentModel, view: ComponentView | ChartView): void {

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org