Программные c функции сортировки не работают в Табуляторе - PullRequest
0 голосов
/ 26 мая 2020

У меня проблема с Tabulator и его программными возможностями сортировки c. В частности, функция setSort() не работает должным образом при вызове методом tabEndNewRow.

Ниже приведен мой код настройки таблицы Tabulator:

    var table = new Tabulator(divId, {
        height: "100%",
        data: [],
        layout: "fitDataFill",
        tabEndNewRow: function (row) {
            table.setSort([
                { column: "DateComp", dir: "asc" },
                { column: "TimeStart", dir: "asc" }
            ]);
            return { DateComp: currentDate, TimeStart: "6:00 AM", TimeFinish: "6:00 AM" };
        },
        columns: [
            { title: "Date Worked", field: "DateComp", responsive: 0, hozAlign: "center", sorter: "date", editor: dateEditor },
            { title: "Start Time", field: "TimeStart", responsive: 0, hozAlign: "center", sorter: "time", editor: timeEditor },
            { title: "Finish Time", field: "TimeFinish", responsive: 0, hozAlign: "center", sorter: "time", editor: timeEditor }
        ]
    });

Я пытаясь повторно отсортировать мою таблицу Tabulator каждый раз, когда я вставляю новую строку, используя метод tabEndNewRow. Любая помощь приветствуется.

1 Ответ

1 голос
/ 28 августа 2020

Проблема, с которой вы столкнулись, заключается в том, что вы сортируете таблицу, а затем возвращаете новую строку, поэтому новая строка всегда применяется после сортировки.

Вам нужно будет добавить setTimeout для задержки сортировка до тех пор, пока не будет добавлена ​​строка:

tabEndNewRow: function (row) {
    
    //delay sorting until after the new row is added
    setTimeout(() => {
        table.setSort([
            { column: "DateComp", dir: "asc" },
            { column: "TimeStart", dir: "asc" }
        ]);
    }, 100);

    return { DateComp: currentDate, TimeStart: "6:00 AM", TimeFinish: "6:00 AM" };
},
...