in sample/frontend/agr-lib/src/lib/grid/agr-engine.ts [257:288]
sortChildren(row: Row<T>) {
const sorts = [];
const orders = [];
if (Array.isArray(row.filteredChildren) && row.filteredChildren.length > 0) {
for (const columnDef of this.sortColumnsData.values()) {
if (!this.processRowByLevel(row.filteredChildren[0], columnDef)) {
continue;
}
sorts.push((item) => {
let columnValue;
switch (columnDef.type) {
case ColumnTypes.date:
columnValue = new Date(ColumnHelper.getColumnValue(item.data, columnDef)).getTime();
break;
default:
columnValue = ColumnHelper.getColumnValue(item.data, columnDef) ?? '';
if (typeof columnValue === 'string') {
columnValue = columnValue.toLowerCase();
}
}
return columnValue;
});
orders.push(columnDef.sort === ColumnSortOrder.asc ? 'asc' : 'desc');
}
}
const orderedRows = sorts.length > 0 ? orderBy(row.filteredChildren, sorts, orders) : row.filteredChildren;
for (const orderRow of orderedRows) {
this.rows.push(orderRow);
this.sortChildren(orderRow);
}
}