1
1
import { ChangeDetectionStrategy , Component , Input } from "@angular/core" ;
2
- import { QueryExplainerOutputType , QueryExplainerSchemaType } from "../../query-explainer.types" ;
2
+ import { QueryExplainerOutputType } from "../../query-explainer.types" ;
3
3
import { extractSchemaFieldsFromData } from "src/app/common/table.helper" ;
4
4
import { DataRow , DataSchemaField } from "src/app/interface/dataset.interface" ;
5
5
@@ -9,21 +9,23 @@ import { DataRow, DataSchemaField } from "src/app/interface/dataset.interface";
9
9
changeDetection : ChangeDetectionStrategy . OnPush ,
10
10
} )
11
11
export class ReproducedResultSectionComponent {
12
- @Input ( { required : true } ) public output : QueryExplainerOutputType ;
12
+ @Input ( { required : true } ) public dataJsonAoS : QueryExplainerOutputType ;
13
13
14
14
public tableSource ( output : QueryExplainerOutputType ) : DataRow [ ] {
15
- const result = output . data . map ( ( dataItem ) => {
16
- const arr = dataItem . map ( ( value , index ) => ( { [ this . columnNames ( output . schema ) [ index ] ] : value } ) ) ;
17
- return arr . reduce ( ( resultObj , obj ) => Object . assign ( resultObj , obj ) , { } ) ;
18
- } ) as DataRow [ ] ;
19
- return result ;
20
- }
21
-
22
- private columnNames ( schema : QueryExplainerSchemaType ) : string [ ] {
23
- return schema . fields . map ( ( item ) => item . name ) ;
15
+ const columnNames : string [ ] = output . schema . fields . map ( ( item ) => item . name ) ;
16
+ return this . parseDataFromJsonAoSFormat ( output . data , columnNames ) ;
24
17
}
25
18
26
19
public schemaFields ( output : QueryExplainerOutputType ) : DataSchemaField [ ] {
27
20
return extractSchemaFieldsFromData ( this . tableSource ( output ) [ 0 ] ) ;
28
21
}
22
+
23
+ private parseDataFromJsonAoSFormat ( data : object [ ] , columnNames : string [ ] ) : DataRow [ ] {
24
+ return data . map ( ( dataItem : object ) => {
25
+ const arr = columnNames . map ( ( value : string ) => ( {
26
+ [ value ] : dataItem [ value as keyof typeof dataItem ] ,
27
+ } ) ) ;
28
+ return arr . reduce ( ( resultObj , obj ) => Object . assign ( resultObj , obj ) , { } ) ;
29
+ } ) ;
30
+ }
29
31
}
0 commit comments