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

shenyi pushed a commit to branch no-register-when-extend
in repository https://gitbox.apache.org/repos/asf/incubator-echarts.git

commit 938da28e51dcb228c5e062b53941262e446750d8
Author: pissang <[email protected]>
AuthorDate: Wed Jan 6 16:49:49 2021 +0800

    refact: remove registerWhenExtend, add ability for class extend in 
extension.
---
 build/build.js         |  4 ++--
 src/core/echarts.ts    | 16 ++++++++++++----
 src/extension.ts       |  5 +++++
 src/model/Component.ts |  2 +-
 src/scale/Scale.ts     |  4 +---
 src/util/clazz.ts      | 16 +---------------
 src/view/Chart.ts      |  2 +-
 src/view/Component.ts  |  2 +-
 8 files changed, 24 insertions(+), 27 deletions(-)

diff --git a/build/build.js b/build/build.js
index d8e37a3..c7a7af5 100755
--- a/build/build.js
+++ b/build/build.js
@@ -167,6 +167,7 @@ async function build(configs) {
             chalk.cyan(singleConfig.input)
         );
 
+        console.time('rollup build');
         const bundle = await rollup.rollup(singleConfig);
 
         for (let output of singleConfig.output) {
@@ -178,9 +179,8 @@ async function build(configs) {
 
             await bundle.write(output);
 
-            console.time('rollup build');
-            console.timeEnd('rollup build');
         };
+        console.timeEnd('rollup build');
 
         checkBundleCode(singleConfig);
     }
diff --git a/src/core/echarts.ts b/src/core/echarts.ts
index 069ef7f..7093603 100644
--- a/src/core/echarts.ts
+++ b/src/core/echarts.ts
@@ -2811,7 +2811,9 @@ export function extendComponentModel(proto: object): 
ComponentModel {
     //     let classType = parseClassType(superClass);
     //     Clazz = ComponentModel.getClass(classType.main, classType.sub, 
true);
     // }
-    return (ComponentModel as ComponentModelConstructor).extend(proto) as any;
+    const Model = (ComponentModel as ComponentModelConstructor).extend(proto) 
as any;
+    ComponentModel.registerClass(Model);
+    return Model;
 }
 
 export function extendComponentView(proto: object): ChartView {
@@ -2820,7 +2822,9 @@ export function extendComponentView(proto: object): 
ChartView {
     //     let classType = parseClassType(superClass);
     //     Clazz = ComponentView.getClass(classType.main, classType.sub, true);
     // }
-    return (ComponentView as ComponentViewConstructor).extend(proto) as any;
+    const View = (ComponentView as ComponentViewConstructor).extend(proto) as 
any;
+    ComponentView.registerClass(View);
+    return View;
 }
 
 export function extendSeriesModel(proto: object): SeriesModel {
@@ -2830,7 +2834,9 @@ export function extendSeriesModel(proto: object): 
SeriesModel {
     //     let classType = parseClassType(superClass);
     //     Clazz = ComponentModel.getClass(classType.main, classType.sub, 
true);
     // }
-    return (SeriesModel as SeriesModelConstructor).extend(proto) as any;
+    const Model = (SeriesModel as SeriesModelConstructor).extend(proto) as any;
+    SeriesModel.registerClass(Model);
+    return Model;
 }
 
 export function extendChartView(proto: object): ChartView {
@@ -2840,7 +2846,9 @@ export function extendChartView(proto: object): ChartView 
{
     //     let classType = parseClassType(superClass);
     //     Clazz = ChartView.getClass(classType.main, true);
     // }
-    return (ChartView as ChartViewConstructor).extend(proto) as any;
+    const View = (ChartView as ChartViewConstructor).extend(proto) as any;
+    ChartView.registerClass(View);
+    return View;
 }
 
 /**
diff --git a/src/extension.ts b/src/extension.ts
index e4a6493..2f223aa 100644
--- a/src/extension.ts
+++ b/src/extension.ts
@@ -55,6 +55,11 @@ const extensionRegisters = {
     registerLoading,
     registerMap,
     PRIORITY,
+
+    ComponentModel,
+    ComponentView,
+    SeriesModel,
+    ChartView,
     // TODO Use ComponentModel and SeriesModel instead of Constructor
     registerComponentModel(ComponentModelClass: Constructor) {
         ComponentModel.registerClass(ComponentModelClass);
diff --git a/src/model/Component.ts b/src/model/Component.ts
index 373ea68..a730d14 100644
--- a/src/model/Component.ts
+++ b/src/model/Component.ts
@@ -336,7 +336,7 @@ export type ComponentModelConstructor = typeof 
ComponentModel
     & componentUtil.TopologicalTravelable<object>;
 
 mountExtend(ComponentModel, Model);
-enableClassManagement(ComponentModel as ComponentModelConstructor, 
{registerWhenExtend: true});
+enableClassManagement(ComponentModel as ComponentModelConstructor);
 componentUtil.enableSubTypeDefaulter(ComponentModel as 
ComponentModelConstructor);
 componentUtil.enableTopologicalTravel(ComponentModel as 
ComponentModelConstructor, getDependencies);
 
diff --git a/src/scale/Scale.ts b/src/scale/Scale.ts
index 815ae54..701013c 100644
--- a/src/scale/Scale.ts
+++ b/src/scale/Scale.ts
@@ -181,8 +181,6 @@ abstract class Scale<SETTING extends Dictionary<unknown> = 
Dictionary<unknown>>
 }
 
 type ScaleConstructor = typeof Scale & clazzUtil.ClassManager;
-clazzUtil.enableClassManagement(Scale as ScaleConstructor, {
-    registerWhenExtend: true
-});
+clazzUtil.enableClassManagement(Scale as ScaleConstructor);
 
 export default Scale;
\ No newline at end of file
diff --git a/src/util/clazz.ts b/src/util/clazz.ts
index 7f46f07..98a9338 100644
--- a/src/util/clazz.ts
+++ b/src/util/clazz.ts
@@ -228,12 +228,9 @@ export interface ClassManager {
  * ```
  */
 export function enableClassManagement(
-    target: ClassManager,
-    options?: {registerWhenExtend?: boolean}
+    target: ClassManager
 ): void {
 
-    options = options || {};
-
     /**
      * Component model classes
      * key: componentType,
@@ -354,17 +351,6 @@ export function enableClassManagement(
         }
         return container as SubclassContainer;
     }
-
-    // FIXME:TS remove `registerWhenExtend` finally when ts migration 
completed?
-    if (options.registerWhenExtend) {
-        const originalExtend = (target as any).extend;
-        if (originalExtend) {
-            (target as any).extend = function (proto: any) {
-                const ExtendedClass = originalExtend.call(this, proto);
-                return target.registerClass(ExtendedClass);
-            };
-        }
-    }
 }
 
 // /**
diff --git a/src/view/Chart.ts b/src/view/Chart.ts
index cabb7b9..69b1236 100644
--- a/src/view/Chart.ts
+++ b/src/view/Chart.ts
@@ -230,7 +230,7 @@ export type ChartViewConstructor = typeof ChartView
     & clazzUtil.ClassManager;
 
 clazzUtil.enableClassExtend(ChartView as ChartViewConstructor, ['dispose']);
-clazzUtil.enableClassManagement(ChartView as ChartViewConstructor, 
{registerWhenExtend: true});
+clazzUtil.enableClassManagement(ChartView as ChartViewConstructor);
 
 
 function renderTaskPlan(context: SeriesTaskContext): StageHandlerPlanReturn {
diff --git a/src/view/Component.ts b/src/view/Component.ts
index e3e3dae..70bc825 100644
--- a/src/view/Component.ts
+++ b/src/view/Component.ts
@@ -107,6 +107,6 @@ export type ComponentViewConstructor = typeof ComponentView
     & clazzUtil.ClassManager;
 
 clazzUtil.enableClassExtend(ComponentView as ComponentViewConstructor);
-clazzUtil.enableClassManagement(ComponentView as ComponentViewConstructor, 
{registerWhenExtend: true});
+clazzUtil.enableClassManagement(ComponentView as ComponentViewConstructor);
 
 export default ComponentView;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to