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) {

Reply via email to