Навигация с клавиатуры

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

Включение функциональности

Чтобы включить навигацию с клавиатуры в диаграмме Gantt, активируйте плагин keyboard_navigation с помощью метода gantt.plugins:

gantt.plugins({
    keyboard_navigation: true
});

API для объекта gantt.ext.keyboardNavigation подробно описан в статье Расширение для навигации с клавиатуры.

Доступны два типа навигации с клавиатуры:

  • Навигация по строкам задач: Включите, установив свойство keyboard_navigation в true.

  • Навигация по ячейкам задач: Включите, установив свойство keyboard_navigation_cells в true.

Поведение фокуса при навигации с клавиатуры

Фокус на Gantt

Нажатие клавиши Tab устанавливает фокус на Gantt, как и на любой другой элемент. После установки фокуса можно перемещаться с помощью стрелок и других сочетаний клавиш. Повторное нажатие Tab перемещает фокус с Gantt на другой элемент страницы.

Фокус на модальном окне

Когда открывается модальное окно (например, лайтбокс или окно подтверждения), фокус перемещается с Gantt на модальное окно, позволяя перемещаться внутри него, как в обычной форме. После закрытия модального окна фокус возвращается на Gantt.

Чтобы вручную вернуть фокус на Gantt, используйте метод фокус. Когда фокус восстанавливается, он будет направлен на активный элемент внутри Gantt, первую строку или последний выбранный элемент.

Стандартные действия навигации в модальных окнах включают:

  • Enter: Подтвердить и закрыть окно.
  • Escape: Закрыть без сохранения изменений.

Если фокус установлен на кнопке в форме, нажатие Space или Enter вызовет действие кнопки.


Если фокус установлен на ячейке или строке грида и вы нажимаете на пользовательский HTML-элемент внутри Gantt, фокус вернется на ячейку/строку грида.

Начиная с версии 7.1.13, добавление класса 'no_keyboard_navigation' к пользовательскому элементу предотвращает возврат фокуса на ячейку/строку грида.

Области

Сочетания клавиш могут вызывать различные действия в зависимости от контекста (или области). Диаграмма Gantt имеет следующие области:

  • "gantt": Вся диаграмма Gantt.
  • "taskRow": Строка, содержащая задачу.
  • "taskCell": Ячейка внутри строки задачи.
  • "headerCell": Ячейка заголовка.

Если одно и то же сочетание клавиш назначено нескольким областям, приоритет имеет более специфическая. Например, сочетание, привязанное к конкретному элементу, переопределит то же сочетание, назначенное всей диаграмме Gantt.

Добавление сочетания клавиш

Чтобы добавить пользовательское сочетание клавиш, используйте метод addShortcut. Он требует три параметра:

  • shortcut: (строка) Клавиша или комбинация клавиш для сочетания.
  • handler: (функция) Функция, выполняемая при срабатывании сочетания.
  • scope: (строка) Необязательный. Контекстный элемент, к которому привязано сочетание. По умолчанию - "gantt".

Пример:

gantt.addShortcut("shift+w", function(e){ 
    var task = gantt.locate(e); 
    if(task) 
        gantt.showQuickInfo(task)
},"taskRow");

Удаление сочетания клавиш

Чтобы удалить сочетание клавиш, используйте метод removeShortcut. Он требует два параметра:

  • shortcut: (строка) Клавиша или комбинация клавиш сочетания.
  • scope: (строка) Контекстный элемент, к которому привязано сочетание.

Пример:

gantt.removeShortcut("shift+w","taskRow");

Получение обработчика сочетания клавиш

Чтобы получить функцию-обработчик для сочетания клавиш, используйте метод getShortcutHandler. Он принимает два параметра:

  • shortcut: (строка) Клавиша или комбинация клавиш сочетания.
  • scope: (строка) Контекстный элемент, к которому привязано сочетание.

Пример:

var shortcut_handler = gantt.getShortcutHandler("shift+w","taskRow");

Метод возвращает функцию, обрабатывающую сочетание.

Синтаксис сочетаний клавиш

Сочетания клавиш могут состоять из:

  • Клавиши-модификатора в сочетании с клавишей символа (например, "ctrl+a").
  • Клавиши-модификатора в сочетании с несивольной клавишей (например, "ctrl+space").
  • Одной клавиши символа (например, "a").
  • Одной несивольной клавиши (например, "space").

Несколько комбинаций клавиш для одного и того же действия могут быть перечислены через запятую (например, "ctrl+a, ctrl+space").

Поддерживаемые клавиши для сочетаний

  • Клавиши-модификаторы: shift, alt, ctrl, meta.
  • Несимвольные клавиши: backspace, tab, enter, esc, space, up, down, left, right, home, end, pageup, pagedown, delete, insert, plus, f1-f12.

Существующие сочетания клавиш

Диаграмма Gantt включает несколько встроенных сочетаний для навигации:

Общие сочетания клавиш

  • Tab: Фокус на Gantt.
  • Alt+Up/Down: Вертикальная прокрутка.
  • Alt+Left/Right: Горизонтальная прокрутка.
  • Ctrl+Enter: Создать новую задачу.
  • Ctrl+Z: Отменить действие.
  • Ctrl+R: Повтор действия.

Сочетания для ячеек заголовка

  • Стрелки влево/вправо: Перемещение по ячейкам заголовка.
  • Home/End: Переход к первому/последнему столбцу.
  • Вниз: Переход к строкам задач.
  • Space/Enter: Активация заголовка (например, для сортировки).

Сочетания для строк задач

  • Вверх/Вниз: Перемещение между строками.
  • PageDown/PageUp: Переход к первой/последней задаче.
  • Space: Выбор задачи.
  • Ctrl+Enter: Создать новую задачу.
  • Delete: Удалить выбранную задачу.
  • Enter: Открыть лайтбокс.
  • Ctrl+Left/Right: Развернуть/свернуть дерево.
  • Shift+Left/Right: Увеличить/уменьшить отступ задачи.
  • Shift+Down/Up: Развернуть/свернуть ветви.

Related sample:  Keyboard Navigation

Для примера реализации копирования/вставки задач с использованием Ctrl+C/Ctrl+V, смотрите связанную статью.

Сочетания для ячеек задач

  • Стрелки вверх/вниз/влево/вправо: Перемещение по ячейкам задач.
  • PageDown/PageUp: Переход к первой/последней ячейке в столбце.
  • Home/End: Переход к первой/последней ячейке в столбце.
  • Space: Выбор задачи.
  • Ctrl+Enter: Создать новую задачу.
  • Delete: Удалить выбранную задачу.
  • Enter: Открыть лайтбокс.
  • Ctrl+Left/Right: Развернуть/свернуть дерево.

Related sample:  Keyboard Navigation - navigate cells

Встроенное сочетание для горизонтальной прокрутки временной шкалы

Начиная с версии 4.2, вы можете прокручивать временную шкалу горизонтально, используя:

-> Клавиша Shift + движение колесиком мыши.

Начиная с версии 6.3, вы можете настроить клавишу горизонтальной прокрутки на Alt или Meta вместо стандартной клавиши Shift, установив свойство horizontal_scroll_key:

gantt.config.horizontal_scroll_key = "altKey";

Чтобы отключить горизонтальную прокрутку, установите horizontal_scroll_key в false:

gantt.config.horizontal_scroll_key = false;
К началу