1111 */
1212
1313import { Injectable } from '@angular/core' ;
14+ import { HeliumClassicTableData } from '@zeppelin/interfaces' ;
1415import { TableData } from '@zeppelin/visualization' ;
1516
16- interface ClassicColumn {
17- name : string ;
18- index : number ;
19- aggr : string ;
20- }
21-
22- interface ClassicTableData {
23- columns : ClassicColumn [ ] ;
24- // tslint:disable-next-line:no-any
25- rows : any [ ] [ ] ;
26- comment : string ;
27- }
28-
2917@Injectable ( {
3018 providedIn : 'root'
3119} )
@@ -35,16 +23,15 @@ export class TableDataAdapterService {
3523 /**
3624 * Convert modern TableData to classic format expected by AngularJS visualizations
3725 */
38- convertToClassicFormat ( modernTableData : TableData ) : ClassicTableData {
39- const classicColumns : ClassicColumn [ ] = modernTableData . columns . map ( ( columnName , index ) => ( {
26+ convertToClassicFormat ( modernTableData : TableData ) : Omit < HeliumClassicTableData , 'loadParagraphResult' | 'refresh' > {
27+ const classicColumns : HeliumClassicTableData [ 'columns' ] = modernTableData . columns . map ( ( columnName , index ) => ( {
4028 name : columnName ,
4129 index,
4230 aggr : 'sum' // Default aggregation
4331 } ) ) ;
4432
4533 // Convert rows from modern format (objects) to classic format (arrays)
46- // tslint:disable-next-line:no-any
47- const classicRows : any [ ] [ ] = [ ] ;
34+ const classicRows : string [ ] [ ] = [ ] ;
4835
4936 if ( modernTableData . rows && modernTableData . rows . length > 0 ) {
5037 // Check if rows are objects (modern format) or arrays (already classic format)
@@ -58,8 +45,7 @@ export class TableDataAdapterService {
5845 } else if ( typeof firstRow === 'object' && firstRow !== null ) {
5946 // Modern format (array of objects) - convert to classic format
6047 modernTableData . rows . forEach ( rowObj => {
61- // tslint:disable-next-line:no-any
62- const rowArray : any [ ] = [ ] ;
48+ const rowArray : string [ ] = [ ] ;
6349 modernTableData . columns . forEach ( columnName => {
6450 rowArray . push ( rowObj [ columnName ] ) ;
6551 } ) ;
@@ -78,36 +64,34 @@ export class TableDataAdapterService {
7864 /**
7965 * Create a classic TableData-like object with the required methods
8066 */
81- // tslint:disable-next-line:no-any
82- createClassicTableDataProxy ( modernTableData : TableData ) : any {
67+ createClassicTableDataProxy ( modernTableData : TableData ) : HeliumClassicTableData {
8368 const classicData = this . convertToClassicFormat ( modernTableData ) ;
8469
8570 // Create a proxy object that mimics the classic TableData interface
86- const proxy = {
71+ const proxy : HeliumClassicTableData = {
8772 columns : classicData . columns ,
8873 rows : classicData . rows ,
8974 comment : classicData . comment ,
9075
9176 // Add any methods that classic visualizations might expect
92- // tslint:disable-next-line:no-any
93- loadParagraphResult : function ( paragraphResult : any ) {
77+ loadParagraphResult : paragraphResult => {
9478 // Delegate to modern TableData's method
9579 modernTableData . loadParagraphResult ( paragraphResult ) ;
9680
9781 // Update proxy data after loading
9882 const updatedClassicData = this . convertToClassicFormat ( modernTableData ) ;
99- this . columns = updatedClassicData . columns ;
100- this . rows = updatedClassicData . rows ;
101- this . comment = updatedClassicData . comment ;
102- } . bind ( this ) ,
83+ proxy . columns = updatedClassicData . columns ;
84+ proxy . rows = updatedClassicData . rows ;
85+ proxy . comment = updatedClassicData . comment ;
86+ } ,
10387
10488 // Refresh data from modern TableData
105- refresh : function ( ) {
89+ refresh : ( ) => {
10690 const updatedClassicData = this . convertToClassicFormat ( modernTableData ) ;
107- this . columns = updatedClassicData . columns ;
108- this . rows = updatedClassicData . rows ;
109- this . comment = updatedClassicData . comment ;
110- } . bind ( this )
91+ proxy . columns = updatedClassicData . columns ;
92+ proxy . rows = updatedClassicData . rows ;
93+ proxy . comment = updatedClassicData . comment ;
94+ }
11195 } ;
11296
11397 return proxy ;
0 commit comments