You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by sh...@apache.org on 2021/03/31 06:08:40 UTC

[echarts] 01/02: fix(marker): only use maker component when exists on series

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

shenyi pushed a commit to branch enhance-missing-components-log
in repository https://gitbox.apache.org/repos/asf/echarts.git

commit da7d797cdd1a9568aa8d2becff0afb7ca04e6be4
Author: pissang <bm...@gmail.com>
AuthorDate: Wed Mar 31 13:29:01 2021 +0800

    fix(marker): only use maker component when exists on series
---
 .../{installMarkLine.ts => checkMarkerInSeries.ts} | 29 ++++++++++++++--------
 src/component/marker/installMarkArea.ts            |  7 ++++--
 src/component/marker/installMarkLine.ts            |  7 ++++--
 src/component/marker/installMarkPoint.ts           |  7 ++++--
 4 files changed, 34 insertions(+), 16 deletions(-)

diff --git a/src/component/marker/installMarkLine.ts b/src/component/marker/checkMarkerInSeries.ts
similarity index 56%
copy from src/component/marker/installMarkLine.ts
copy to src/component/marker/checkMarkerInSeries.ts
index 2946b71..5f87a4c 100644
--- a/src/component/marker/installMarkLine.ts
+++ b/src/component/marker/checkMarkerInSeries.ts
@@ -16,16 +16,25 @@
 * specific language governing permissions and limitations
 * under the License.
 */
-import { EChartsExtensionInstallRegisters } from '../../extension';
-import MarkLineModel from './MarkLineModel';
-import MarkLineView from './MarkLineView';
 
-export function install(registers: EChartsExtensionInstallRegisters) {
-    registers.registerComponentModel(MarkLineModel);
-    registers.registerComponentView(MarkLineView);
+import { isArray } from 'zrender/src/core/util';
+import { SeriesOption } from '../../util/types';
 
-    registers.registerPreprocessor(function (opt) {
-        // Make sure markLine component is enabled
-        opt.markLine = opt.markLine || {};
-    });
+type MarkerTypes = 'markPoint' | 'markLine' | 'markArea';
+
+type SeriesWithMarkerOption = SeriesOption & Partial<Record<MarkerTypes, unknown>>;
+
+export default function checkMarkerInSeries(
+    seriesOpts: SeriesOption | SeriesOption[], markerType: MarkerTypes
+): boolean {
+    if (!seriesOpts) {
+        return false;
+    }
+    const seriesOptArr = isArray(seriesOpts) ? seriesOpts : [seriesOpts];
+    for (let idx = 0; idx < seriesOptArr.length; idx++) {
+        if (seriesOptArr[idx] && (seriesOptArr[idx] as SeriesWithMarkerOption)[markerType]) {
+            return true;
+        }
+    }
+    return false;
 }
\ No newline at end of file
diff --git a/src/component/marker/installMarkArea.ts b/src/component/marker/installMarkArea.ts
index a34b07d..1d41f58 100644
--- a/src/component/marker/installMarkArea.ts
+++ b/src/component/marker/installMarkArea.ts
@@ -18,6 +18,7 @@
 */
 
 import { EChartsExtensionInstallRegisters } from '../../extension';
+import checkMarkerInSeries from './checkMarkerInSeries';
 import MarkAreaModel from './MarkAreaModel';
 import MarkAreaView from './MarkAreaView';
 
@@ -26,7 +27,9 @@ export function install(registers: EChartsExtensionInstallRegisters) {
     registers.registerComponentView(MarkAreaView);
 
     registers.registerPreprocessor(function (opt) {
-        // Make sure markArea component is enabled
-        opt.markArea = opt.markArea || {};
+        if (checkMarkerInSeries(opt.series, 'markArea')) {
+            // Make sure markLine component is enabled
+            opt.markLine = opt.markLine || {};
+        }
     });
 }
\ No newline at end of file
diff --git a/src/component/marker/installMarkLine.ts b/src/component/marker/installMarkLine.ts
index 2946b71..b8542ab 100644
--- a/src/component/marker/installMarkLine.ts
+++ b/src/component/marker/installMarkLine.ts
@@ -17,6 +17,7 @@
 * under the License.
 */
 import { EChartsExtensionInstallRegisters } from '../../extension';
+import checkMarkerInSeries from './checkMarkerInSeries';
 import MarkLineModel from './MarkLineModel';
 import MarkLineView from './MarkLineView';
 
@@ -25,7 +26,9 @@ export function install(registers: EChartsExtensionInstallRegisters) {
     registers.registerComponentView(MarkLineView);
 
     registers.registerPreprocessor(function (opt) {
-        // Make sure markLine component is enabled
-        opt.markLine = opt.markLine || {};
+        if (checkMarkerInSeries(opt.series, 'markLine')) {
+            // Make sure markLine component is enabled
+            opt.markLine = opt.markLine || {};
+        }
     });
 }
\ No newline at end of file
diff --git a/src/component/marker/installMarkPoint.ts b/src/component/marker/installMarkPoint.ts
index 7526ddd..3d7cbf3 100644
--- a/src/component/marker/installMarkPoint.ts
+++ b/src/component/marker/installMarkPoint.ts
@@ -17,6 +17,7 @@
 * under the License.
 */
 import { EChartsExtensionInstallRegisters } from '../../extension';
+import checkMarkerInSeries from './checkMarkerInSeries';
 import MarkPointModel from './MarkPointModel';
 import MarkPointView from './MarkPointView';
 
@@ -25,7 +26,9 @@ export function install(registers: EChartsExtensionInstallRegisters) {
     registers.registerComponentView(MarkPointView);
 
     registers.registerPreprocessor(function (opt) {
-        // Make sure markPoint component is enabled
-        opt.markPoint = opt.markPoint || {};
+        if (checkMarkerInSeries(opt.series, 'markPoint')) {
+            // Make sure markLine component is enabled
+            opt.markLine = opt.markLine || {};
+        }
     });
 }
\ No newline at end of file

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