import { TableColumn } from 'src/@vex/interfaces/table-column.interface'; export function trackByTableColumnProperty<T>( index: number, column: TableColumn<T> ): any { return column.property; } export function getVisibleColumns<T>(columns: TableColumn<T>[]): string[] { return columns .filter(column => column.visible) .map(column => column.property); } export function getVisibleColumnsByColumnDef<T>( columns: TableColumn<T>[] ): string[] { return columns .filter(column => column.visible) .map(column => column.columnDef); } export class GroupTable { level: number = 0; parent: GroupTable; expanded: boolean = true; get visible(): boolean { return !this.parent || (this.parent.visible && this.parent.expanded); } }