@itexpert-dev/base-universal-table
Version:
base universal table for build tables
60 lines (54 loc) • 2.48 kB
text/typescript
import {IUniversalTableViewRow} from "./common/interfaces/IUniversalTableViewRow";
import {IUniversalTableViewCell} from "./common/interfaces/IUniversalTableViewCell";
import {IUniversalTableViewHeader} from "./common/interfaces/IUniversalTableViewHeader";
import {IDictionary} from "@itexpert-dev/i-dictionary";
import {IUniversalTableFieldMetadata} from "../../../contracts/IUniversalTableFieldMetadata";
import {isNullOrUndefined} from "@itexpert-dev/tiny-helpers";
import {IUniversalTableGetDataResponse} from "../../../contracts/IUniversalTableGetDataResponse";
class UniversalTableDataPreprocessors{
constructor(){}
public static parseData(viewFields:string[], response:IUniversalTableGetDataResponse):IUniversalTableViewRow[]{
let rows:IUniversalTableViewRow[] = [];
for(let requestRow of response.data){
let viewRow:IUniversalTableViewRow = <IUniversalTableViewRow>{
cells: []
};
for(let field of viewFields){
let cell:IUniversalTableViewCell;
if(requestRow.hasOwnProperty(field)){
cell = {
type: response.metadata[field].type,
value: requestRow[field].value
};
}else{
cell = {
type: null,
value: null
}
}
viewRow.cells.push(cell)
}
rows.push(viewRow)
}
return rows;
}
public static parseHeaders(viewFields:string[], metadata:IDictionary<IUniversalTableFieldMetadata>):IUniversalTableViewHeader[]{
let notFoundFieldsBucket: Array<string> = [];
let headers: IUniversalTableViewHeader[] = [];
for(let metaField of viewFields){
if(!isNullOrUndefined(metadata[metaField])){
let header:IUniversalTableViewHeader = {
label: metadata[metaField].verboseName
};
headers.push(header);
}else{
notFoundFieldsBucket.push(metaField)
}
}
if(notFoundFieldsBucket.length > 0){
throw new Error(`fields: [${notFoundFieldsBucket.join(', ')}] not found in metadata\ncurrent metadata: ${metadata}`)
}
return headers
}
}
export {UniversalTableDataPreprocessors}