Skip to content

SortModel

Defined in: api/node/typescript/models.ts:663

SortModel acts as an adapter model for a given source model by sorting all its rows according to the order given by compareFunction.

Note that, like FilterModel, the SortModel does not automatically observe modifications made directly to the source model. After such a modification, call SortModel.reset to re-apply the sort order and refresh the sorted view. Modifications made through SortModel.setRowData are reflected automatically.

Calling SortModel.setRowData while the cached sort order is stale (i.e. after the source model was mutated directly without a following SortModel.reset) does not just return stale reads — it writes to whatever source row the stale order points at, which may no longer be the row the caller intended. Always call SortModel.reset after a direct source mutation before calling SortModel.setRowData again.

const source = new ArrayModel(["lorem", "ipsum", "dolor"]);
const sorted = new SortModel(source, (a, b) => a.localeCompare(b));
// prints dolor, ipsum, lorem
for (const x of sorted) {
console.log(x);
}
js

T

new SortModel<T>(sourceModel, compareFunction): SortModel<T>

Defined in: api/node/typescript/models.ts:678

Constructs a new SortModel that provides a sorted view on the given sourceModel by applying the order given by compareFunction.

Model<T>

the wrapped model.

(a, b) => number

compares two rows the same way the callback passed to Array.prototype.sort does.

SortModel<T>

Model<T>.constructor

readonly sourceModel: Model<T>

Defined in: api/node/typescript/models.ts:667

The source model that this SortModel sorts rows from.

[iterator](): Iterator<T>

Defined in: api/node/typescript/models.ts:196

Iterator<T>

Model.[iterator]


filter(filterFunction): FilterModel<T>

Defined in: api/node/typescript/models.ts:118

Returns a new Model that only contains the rows of this model for which filterFunction returns true.

(data) => boolean

returns true if a row should be visible.

FilterModel<T>

a new FilterModel that wraps the current model.

Model.filter


insertRow(_index, _data): void

Defined in: api/node/typescript/models.ts:190

Implementations of this function must add a row at the specified index, pushing all next rows to the right.

number

index of the row to insert.

T

new data item to store in a new row.

void

Model.insertRow


map<U>(mapFunction): MapModel<T, U>

Defined in: api/node/typescript/models.ts:108

Returns a new Model where all elements are mapped by the function mapFunction.

U

(data) => U

maps the data from T to U.

MapModel<T, U>

a new MapModel that wraps the current model.

Model.map


pushRow(_data): void

Defined in: api/node/typescript/models.ts:168

Implementations of this function must add a line to the model with the provided data.

T

new data item to store in a new row.

void

Model.pushRow


removeRow(_index): void

Defined in: api/node/typescript/models.ts:178

Implementations of this function must remove the row at the specified index.

number

index of the row to remove.

void

Model.removeRow


reset(): void

Defined in: api/node/typescript/models.ts:788

Re-applies the sort order on the rows of the source model and notifies the run-time that the sorted view has changed. Call this after modifying the source model directly, so that the sorted view reflects the current state of the source model.

void


reverse(): ReverseModel<T>

Defined in: api/node/typescript/models.ts:137

Returns a new Model with the same rows as this model, in reverse order.

ReverseModel<T>

a new ReverseModel that wraps the current model.

Model.reverse


rowCount(): number

Defined in: api/node/typescript/models.ts:730

Returns the number of entries in the sorted model.

number

Model.rowCount


rowData(row): T | undefined

Defined in: api/node/typescript/models.ts:739

Returns the data at the specified row.

number

index in range 0..(rowCount() - 1).

T | undefined

undefined if row is out of range otherwise the data.

Model.rowData


setRowData(row, data): void

Defined in: api/node/typescript/models.ts:760

Stores the given data in the source model at the row that corresponds to the given sorted row index, then re-reads it from the source model to find its new sorted position, notifying either a row change (position unchanged) or a row move (position changed) accordingly.

If the source model’s setRowData does not synchronously commit the value read back by rowData (for example a read-only model that ignores the write), the cached sort order may go out of sync; call SortModel.reset in that case.

number

index in range 0..(rowCount() - 1).

T

new data item to store on the given row index.

void

Model.setRowData


sort(compareFunction): SortModel<T>

Defined in: api/node/typescript/models.ts:129

Returns a new Model with the same rows as this model, ordered according to compareFunction.

(a, b) => number

compares two rows the same way the callback passed to Array.prototype.sort does.

SortModel<T>

a new SortModel that wraps the current model.

Model.sort


unsortedRow(sortedRow): number | undefined

Defined in: api/node/typescript/models.ts:799

Given a sortedRow index into this SortModel, returns the corresponding row index in the source model.

number

index in range 0..(rowCount() - 1).

number | undefined

undefined if sortedRow is out of range otherwise the source row index.


© 2026 SixtyFPS GmbH