This is an automated email from the ASF dual-hosted git repository.
chanholee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zeppelin.git
The following commit(s) were added to refs/heads/master by this push:
new 6dd68c3f97 [ZEPPELIN-6327] Fix wrong order of the arguments for
Visualization components
6dd68c3f97 is described below
commit 6dd68c3f9702554c4c7afde68795885e7c985c3e
Author: ChanHo Lee <[email protected]>
AuthorDate: Tue Oct 7 11:43:09 2025 +0900
[ZEPPELIN-6327] Fix wrong order of the arguments for Visualization
components
### What is this PR for?
Visualizations are not working because the constructor arguments were
passed in the wrong order.
Since using `any` made this error hard to detect, I replaced it with
specific types.
(Related to #5053)
### What type of PR is it?
Bug Fix
### What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-6327
### Questions:
* Does the license files need to update? No
* Is there breaking changes for older versions? No
* Does this needs documentation? No
Closes #5074 from tbonelee/fix-argument-order.
Signed-off-by: ChanHo Lee <[email protected]>
---
.../zeppelin-visualization/src/visualization.ts | 12 +++++++++--
.../workspace/share/result/result.component.ts | 23 ++++++++++------------
2 files changed, 20 insertions(+), 15 deletions(-)
diff --git
a/zeppelin-web-angular/projects/zeppelin-visualization/src/visualization.ts
b/zeppelin-web-angular/projects/zeppelin-visualization/src/visualization.ts
index ba642a6917..0fd0981744 100644
--- a/zeppelin-web-angular/projects/zeppelin-visualization/src/visualization.ts
+++ b/zeppelin-web-angular/projects/zeppelin-visualization/src/visualization.ts
@@ -10,13 +10,14 @@
* limitations under the License.
*/
-import { ComponentRef } from '@angular/core';
+import { CdkPortalOutlet } from '@angular/cdk/portal';
+import { ComponentRef, ViewContainerRef } from '@angular/core';
import { Subject } from 'rxjs';
import { GraphConfig } from '@zeppelin/sdk';
import { Transformation } from './transformation';
-// tslint:disable-next-line
+// tslint:disable-next-line:no-any
export abstract class Visualization<T = any> {
// tslint:disable-next-line
transformed: any;
@@ -45,3 +46,10 @@ export abstract class Visualization<T = any> {
return this.config;
}
}
+
+// tslint:disable-next-line:no-any
+export type VisualizationConstructor<T = any> = new (
+ portalOutlet: CdkPortalOutlet,
+ viewContainerRef: ViewContainerRef,
+ config: GraphConfig
+) => Visualization<T>;
diff --git
a/zeppelin-web-angular/src/app/pages/workspace/share/result/result.component.ts
b/zeppelin-web-angular/src/app/pages/workspace/share/result/result.component.ts
index 71079fc654..4d182dde4b 100644
---
a/zeppelin-web-angular/src/app/pages/workspace/share/result/result.component.ts
+++
b/zeppelin-web-angular/src/app/pages/workspace/share/result/result.component.ts
@@ -16,7 +16,6 @@ import {
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
- ComponentFactoryResolver,
EventEmitter,
Injector,
Input,
@@ -52,9 +51,14 @@ import {
HeliumClassicVisualizationConstructor,
HeliumVisualizationBundle
} from '@zeppelin/interfaces';
-import { DynamicTemplate, HeliumService, NgZService, RuntimeCompilerService }
from '@zeppelin/services';
-import { ClassicVisualizationService } from
'@zeppelin/services/classic-visualization.service';
-import { TableData, Visualization } from '@zeppelin/visualization';
+import {
+ ClassicVisualizationService,
+ DynamicTemplate,
+ HeliumService,
+ NgZService,
+ RuntimeCompilerService
+} from '@zeppelin/services';
+import { TableData, Visualization, VisualizationConstructor } from
'@zeppelin/visualization';
import {
AreaChartVisualization,
BarChartVisualization,
@@ -68,7 +72,6 @@ interface VisualizationItem {
id: string;
name: string;
changeSubscription: Subscription | null;
- componentFactoryResolver?: ComponentFactoryResolver;
}
interface ClassicVisualizationItem extends VisualizationItem {
@@ -81,8 +84,7 @@ interface ClassicVisualizationItem extends VisualizationItem {
interface ModernVisualizationItem extends VisualizationItem {
isClassic: false;
icon: string;
- // tslint:disable-next-line:no-any
- Class: any;
+ Class: VisualizationConstructor;
instance: Visualization | undefined;
}
@@ -431,12 +433,7 @@ export class NotebookParagraphResultComponent implements
OnInit, AfterViewInit,
return; // Exit early for classic visualizations
} else {
// Modern visualization
- const classicVisInstance = new visualizationItem.Class(
- config.graph,
- this.portalOutlet,
- this.viewContainerRef,
- visualizationItem.componentFactoryResolver
- ) as Visualization;
+ const classicVisInstance = new
visualizationItem.Class(this.portalOutlet, this.viewContainerRef, config.graph);
visualizationItem.instance = classicVisInstance;
visualizationItem.changeSubscription =
classicVisInstance.configChanged().subscribe(c => {
if (!this.config) {