Skip to content

Commit 91e3c3b

Browse files
committed
Refactor TableDataAdapterService to use HeliumClassicTableData interface and remove unnecessary any types
1 parent f73dfea commit 91e3c3b

2 files changed

Lines changed: 27 additions & 35 deletions

File tree

zeppelin-web-angular/src/app/interfaces/helium.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
*/
1212

1313
import { HeliumPackageType } from '@zeppelin/helium';
14-
import { GraphConfig } from '@zeppelin/sdk';
14+
import { GraphConfig, ParagraphIResultsMsgItem } from '@zeppelin/sdk';
1515
import * as angular from 'angular';
1616
import * as JQuery from 'jquery';
1717

@@ -98,6 +98,14 @@ export interface HeliumClassicTransformation {
9898
_emitter(config: unknown): void;
9999
_templateRequest(tpl: string, ignoreRequestError?: boolean): Promise<string> | angular.IPromise<string>;
100100
setConfig(config: unknown): void;
101-
transform(tableData: unknown): unknown;
101+
transform(tableData: HeliumClassicTableData): unknown;
102102
renderSetting(elem: JQuery<HTMLElement>): void;
103103
}
104+
105+
export interface HeliumClassicTableData {
106+
columns: Array<{ name: string; index: number; aggr: 'sum' }>;
107+
rows: string[][];
108+
comment: string;
109+
loadParagraphResult(paragraphResult: ParagraphIResultsMsgItem): void;
110+
refresh(): void;
111+
}

zeppelin-web-angular/src/app/services/table-data-adapter.service.ts

Lines changed: 17 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,9 @@
1111
*/
1212

1313
import { Injectable } from '@angular/core';
14+
import { HeliumClassicTableData } from '@zeppelin/interfaces';
1415
import { 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

Comments
 (0)