DataTables - Как заказать столбец, используя пользовательские условия? - PullRequest
0 голосов
/ 22 октября 2018

В одном из моих проектов на основе PHP мне нужно заказать столбец , используя пользовательское условие или пользовательский порядок, а не DataTable по умолчанию (по возрастанию или по убыванию).

У меня есть четыре статуса : Срочный, Высокий, Средний, Низкий


Я хочу сделать следующий заказ:

Во время повышения он будетбыть: Низкий, Средний, Высокий, Срочный
Во время спуска это будет: Срочно, Высокий, Средний, Низкий


Итак, после поиска по DataTables я нашелрешение, которое работает нормально в DataTables .Вот он [немного настроен в соответствии с моими критериями]:

$.fn.dataTable.ext.type.order['ticket-priority-pre'] = function ( d ) {
    switch ( d ) {
        case 'Low'      :   return 1;
        case 'Medium'   :   return 2;
        case 'High'     :   return 3;
        case 'Urgent'   :   return 4;
    }
    return 0;
};

$( document ).ready( function() {
    //initializing datatables
    $('#ticketList').DataTable({
        "paging"    :   false,
        "info"      :   false,
        "searching" :   false,
        "order": [[ 0, "desc" ]],
        "columnDefs": [ {
            "type": "ticket-priority",
            "targets": -1
        } ]
    });
});

Но заказ, который я получил:

По возрастанию: Высокий, Низкий, Средний, Срочный
По убыванию: Срочный, Средний, Низкий, Высокий


По неизвестной причине Низкий и Высокий сделали неправильный порядок.

Может кто-нибудь помочь мне решить проблему в моем коде или предложить решение?

  • Спасибо

1 Ответ

0 голосов
/ 22 октября 2018

Чтение из следующего примера:

https://datatables.net/examples/plug-ins/sorting_auto.html

Я думаю, вам нужно будет сделать это:

$.fn.dataTable.ext.type.detect.unshift(
    function ( d ) {
        return (d === 'Low' || d === 'Medium' || d === 'High' || d === 'Urgent') ?
            'ticket-priority' :
            null;
    }
);

$.fn.dataTable.ext.type.order['ticket-priority-pre'] = function ( d ) {
    switch ( d ) {
        case 'Low'      :   return 1;
        case 'Medium'   :   return 2;
        case 'High'     :   return 3;
        case 'Urgent'   :   return 4;
    }
    return 0;
};

$( document ).ready( function()
{
    // Initializing datatables.

    $('#ticketList').DataTable({
        "paging"    :   false,
        "info"      :   false,
        "searching" :   false,
        "order"     : [[ 0, "desc" ]],
        "columnDefs": [ {
            "type": "ticket-priority",
            "targets": -1
        } ]
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...