UNPKG

@itexpert-dev/base-universal-table

Version:

base universal table for build tables

60 lines (54 loc) 2.48 kB
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}