Сортировка Столбцов

dhtmlxGantt позволяет сортировать данные в столбцах грида на стороне клиента. Существует два основных способа включения сортировки:

  1. Щелчком по заголовку столбца, у которого включен атрибут sort.
  2. Вызовом API-метода sort, который может быть запущен событиями или действиями, такими как нажатие кнопки или загрузка страницы.

Gantt может сортировать задачи только на основе значений данных и не будет сортировать значения, полученные из атрибута шаблона столбца.

Сортировка по Щелчку на Заголовок

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

Чтобы включить эту функцию, просто установите свойство sort в true:

gantt.config.sort = true; 
gantt.init("gantt_here");

Related sample:  Built-in sorting

Программная Сортировка

Если вы хотите сортировать грид на основе события или действия, такого как нажатие кнопки или загрузка страницы, вы можете использовать метод sort.

Сортировка по нажатию кнопки

<input type='button' value='Сортировать по названию задачи' onclick='gantt.sort("text", true);'>
 
<script type="text/javascript" charset="utf-8">
    gantt.init("gantt_here"); 
    gantt.parse(tasks);
</script>

Related sample:  Using sorting methods

Пользовательские Функции Сортировки

Вы также можете создать пользовательскую логику сортировки, используя метод sort. Просто предоставьте вашу пользовательскую функцию в качестве первого параметра.

Пользовательская функция сортировки сравнивает пары смежных значений и возвращает одно из следующих значений:

  • 1 - первое значение должно предшествовать второму.
  • -1 - второе значение должно предшествовать первому.
  • 0 - порядок остается прежним.

Использование пользовательской функции для сортировки диаграммы Ганта

<input type='button' value='Сортировать по количеству владельцев' 
       onclick='sortByHolders(direction)'>
 
<script type="text/javascript" charset="utf-8">
    var direction = false;
 
    function sortByHolders(direction1){
        direction = !direction;
        gantt.sort(sortHolders);
    };
    function sortHolders(a,b){
         a = a.users.length;
         b = b.users.length;
 
         if (direction){
            return a>b?1:(a<b?-1:0);
         } else {
            return a>b?-1:(a<b?1:0);
         }
    };
</script>

Related sample:  Custom sorting function

Сортировка Грида по Отдельным Столбцам

Вы можете настроить правила сортировки для отдельных столбцов. Вот три распространенных способа управления сортировкой, специфичной для столбца:

1) Отключение сортировки для столбца: Установите свойство sort в false.

gantt.config.columns[1].sort = false;

2) Использование пользовательской функции сортировки: Назначьте функцию свойству sort.

gantt.config.columns[1].sort = function(a,b){
    return custom_function(a,b);
};

Пользовательская функция сортировки сравнит два объекта задачи (a и b) и вернет одно из следующих значений:

  • 1 - первое значение должно предшествовать второму.
  • -1 - второе значение должно предшествовать первому.
  • 0 - порядок остается неизменным.

3) Сортировка по другому полю задачи: Назначьте имя поля свойству sort.

gantt.config.columns[1].sort = 'other_field';
К началу