src/app/shared/widgets/data-list/pipes/data-list-column-settings.pipe.ts
name | nmDataListColumnSettings |
transform | ||||||||||||||||||||||||
transform(columns: Column[], grid: DataListComponent, columnOrder: string[], visibleDataColumns: string[], showAllColumns: boolean)
|
||||||||||||||||||||||||
Parameters :
Returns :
Column[]
|
import { Pipe, PipeTransform } from "@angular/core";
import { DataListComponent } from "../data-list-component/data-list.component";
import { Column } from "../../interfaces/list.interfaces";
import { Attributes } from "../../../components/edit-attribute";
@Pipe({
name: "nmDataListColumnSettings",
})
export class DataListColumnSettingsPipe implements PipeTransform {
transform(
columns: Column[],
grid: DataListComponent,
columnOrder: string[],
visibleDataColumns: string[],
showAllColumns: boolean = false
): Column[] {
if (columnOrder.length) {
const orders = columnOrder.map((attribute) =>
Attributes.fromField(attribute)
);
columns = columns.sort((a, b) => {
let aField = Attributes.fromField(a.field);
let bField = Attributes.fromField(b.field);
return (
(orders.indexOf(aField) != -1 ? orders.indexOf(aField) : 1000) -
(orders.indexOf(bField) != -1 ? orders.indexOf(bField) : 1000)
);
});
}
const settingsColOrder = JSON.stringify(columnOrder);
return columns.map((column, idx) => {
column.settings = {
columnHeaderClasses: grid.getColumnHeaderClasses(column),
headerClasses: grid.getHeaderClass(column),
cellClasses: grid.getCellClass(column),
sortStrategy: grid.sortStrategy(column),
groupingComparer: grid.groupingComparer(column),
header: grid.getTranslationKey(column),
highlightReadOnly: grid.getHighlightReadOnly(),
source: Attributes.toSourceField(column.field),
order: idx,
columnOrder: settingsColOrder,
};
if (column.visibilityConfigurable) {
column.hidden = !(
visibleDataColumns.includes(column.field) || showAllColumns
);
}
column.width = grid.getGridColumnWidth(column);
return column;
});
}
}