private getGroupedData()

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