IFClite TypeScript API
    Preparing search index...

    Interface ListGrouping

    interface ListGrouping {
        columnId: string;
        columnIds?: string[];
        sumColumnIds: string[];
        view?: "schedule" | "nested";
    }
    Index
    columnId: string

    Column id to group rows by (e.g. a Type / Material / Storey column).

    columnIds?: string[]

    Multi-criteria grouping (issue #1790): ordered column ids to group by, outermost first (e.g. Building, then Storey). When present and non-empty this takes precedence over columnId; columnId is kept in sync with the first entry for consumers built before multi-level grouping existed.

    sumColumnIds: string[]

    Column ids whose numeric values are summed per group and overall.

    view?: "schedule" | "nested"

    Result presentation for a grouped list (issue #1790 round 2 — the reporter's follow-up: Count as a first-class column, and a pivot/schedule layout like Bonsai's, not a nested tree):

    • nested (default) — the existing collapsible tree: one header per (sub)group with a count badge next to the label, per-element rows underneath.
    • schedule — a pivot/schedule table: ONE row per group-value tuple (a leaf group combination), the grouping columns repeated as leading columns, followed by a first-class Count column and any configured sums. No per-element detail rows. Optional so lists persisted before this existed keep their prior (nested) behaviour — undefined is treated as nested.