Реализация пользовательского sSortType и функции сортировки для jQuery dataTables

Мне трудно следовать инструкциям надокументация стр. У меня есть таблица, показывающая среднюю продолжительность времени в одном столбце в формате ЧЧ: ММ, например, 10:45 означает десять часов и сорок пять минут. Я хотел бы иметь возможность сортировать всю мою таблицу по значениям в этом столбце.

Вот мой код инициализации:

    var aoTable = $("#TableStatistic").dataTable({
    "bDestroy": true,
    "sDom": "<'row-fluid dt-header'<'span6'f><'span6'T>>t<'row-fluid dt-footer'<'span6'i><'span6'p>>",
    "oTableTools": {
        "aButtons": ["xls", "pdf", "print"],
        "sSwfPath": "../Content/media/swf/copy_csv_xls_pdf.swf"
    },
    "aaData": statisticsModel.byCategoriesList(),
    "aaSorting": [[0, "desc"]],
    "bPaginate": false,
    "aoColumns": [
        { "mDataProp": "CategoryName", "sTitle": "Reports.CategoryName" },
        { "mDataProp": "AverageTime", "sTitle": "Reports.AverageTime", "sSortDataType": "duration-desc"},
        { "mDataProp": "NumberOfProblemsSolved", "sTitle": "Reports.NumberOfProblemsSolved" }
    ],
    "oLanguage": MeridianTranslation.DataTable

});

Вот чтоЯ предполагаю чтобы быть правильным способом добавить новую функцию сортировки и новый sSortType в мою таблицу:

jQuery.extend(jQuery.fn.dataTableExt.oSort['duration-desc'] = function (x, y) {
    var xHours = parseInt(x.slice(0, x.indexOf(':')));
    var xMinutes = parseInt(x.slice(x.indexOf(':') + 1, x.length)) + xHours * 60;
    var yHours = parseInt(y.slice(0, y.indexOf(':')));
    var yMinutes = parseInt(y.slice(y.indexOf(':') + 1, y.length)) + yHours * 60;
    return ((xMinutes < yMinutes) ? -1 : ((xMinutes > yMinutes) ? 1 : 0));
});

jQuery.extend(jQuery.fn.dataTableExt.oSort['duration-asc'] = function (x, y) {
    var xHours = parseInt(x.slice(0, x.indexOf(':')));
    var xMinutes = parseInt(x.slice(x.indexOf(':')+1, x.length)) + xHours * 60;
    var yHours = parseInt(y.slice(0, y.indexOf(':')));
    var yMinutes = parseInt(y.slice(y.indexOf(':')+1, y.length)) + yHours * 60;
    return ((xMinutes < yMinutes) ? 1 : ((xMinutes > yMinutes) ? -1 : 0));
});

Я предполагаю, что есть намного лучший способ извлечь количество минут, чем то, как я это делаю, но давайте предположим, что мой алгоритм действителен. Что я должен сделать, чтобы правильно инициализировать таблицу данных и интегрировать в нее функцию сортировки и тип данных? Сама таблица отображается правильно, но когда я пытаюсь отсортировать столбец, он сортируется лексикографически, как если бы это была строка. Есть идеи?

Ответы на вопрос(2)

Ваш ответ на вопрос