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]
