in src/tableView.ts [209:270]
private getGroupedData(): TableViewGroupedData {
let options: TableViewOptions = this.options,
groupedData: any[] = [],
totalItems: number = this._data.length,
totalRows: number = options.rows > totalItems
? totalItems
: options.rows,
totalColumns: number = options.columns > totalItems
? totalItems
: options.columns;
if (totalColumns === 0 && totalRows === 0) {
totalColumns = totalItems;
totalRows = 1;
} else if (totalColumns === 0 && totalRows > 0) {
totalColumns = Math.ceil(totalItems / totalRows);
} else if (totalColumns > 0 && totalRows === 0) {
totalRows = Math.ceil(totalItems / totalColumns);
}
if (totalRows === 0) {
totalRows = this._totalRows;
}
if (totalColumns === 0) {
totalColumns = this._totalColumns;
}
let m: number = 0,
k: number = 0;
for (let i: number = 0; i < totalRows; i++) {
if (options.columns === 0
&& totalItems % options.rows > 0
&& options.rows <= totalItems) {
if (totalItems % options.rows > i) {
m = i * Math.ceil(totalItems / options.rows);
k = m + Math.ceil(totalItems / options.rows);
this.addDataToArray(groupedData, this._data, m, k);
} else {
this.addDataToArray(groupedData, this._data, k, k + Math.floor(totalItems / options.rows));
k = k + Math.floor(totalItems / options.rows);
}
} else {
let k: number = i * totalColumns;
this.addDataToArray(groupedData, this._data, k, k + totalColumns);
}
}
this.computedOptions = this.getComputedOptions(groupedData);
return {
data: groupedData,
totalColumns: totalColumns,
totalRows: totalRows
};
}