sortChildren()

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);
    }

  }