Перейти к основному содержимому

Множественный выбор и групповые операции

Библиотека To Do List позволяет выбирать несколько задач и управлять ими одновременно.

Множественный выбор

информация

Узнайте, как выбирать и управлять несколькими задачами через интерфейс.

Предварительно выбранные задачи

Чтобы создать To Do List с заранее выбранными задачами, используйте конфигурационное свойство selected. Пример ниже предварительно выбирает три задачи при инициализации:

const list = new ToDo("#root", {
tasks: [
{ id: "1", text: "Task 1" },
{ id: "1.1", text: "Task 1.1", parent: "1" },
{ id: "1.1.1", text: "Task 1.1.1", parent: "1.1" },
{ id: "1.2", text: "Task 1.2", parent: "1" },
{ id: "2", text: "Task 2" },
{ id: "2.1", text: "Task 2.1", parent: "2" },
{ id: "2.1.1", text: "Task 2.1.1", parent: "2.1" },
{ id: "2.2", text: "Task 2.2", parent: "2" },
],
selected: ["1.1", "1.2", "2.2"],
});

console.log(list.getSelection()); // ["1.1", "1.2", "2.2"]

Выбор задач

Используйте метод selectTask() для выбора задач после инициализации. Метод принимает два параметра:

  • id — идентификатор выбираемой задачи
  • join — добавлять ли задачу к текущему выделению

Выбор одной задачи

По умолчанию параметр join равен false. Метод выбирает только указанную задачу и сбрасывает ранее выбранные.

Следующий фрагмент заменяет текущее выделение одной задачей:

const list = new ToDo("#root", {
tasks: [
{ id: "1", text: "Task 1" },
{ id: "1.1", text: "Task 1.1", parent: "1" },
{ id: "1.1.1", text: "Task 1.1.1", parent: "1.1" },
{ id: "1.2", text: "Task 1.2", parent: "1" },
{ id: "2", text: "Task 2" },
{ id: "2.1", text: "Task 2.1", parent: "2" },
{ id: "2.1.1", text: "Task 2.1.1", parent: "2.1" },
{ id: "2.2", text: "Task 2.2", parent: "2" },
],
selected: ["1.1", "1.2", "2.2"],
});

console.log(list.getSelection()) // ["1.1", "1.2", "2.2"]

list.selectTask({
id: "2.1",
join: false // сбросить выделение ранее выбранных задач
});

console.log(list.getSelection()) // ["2.1"]

Выбор нескольких задач

Чтобы выбрать несколько задач, установите параметр join в true. Метод selectTask() добавит указанную задачу к текущему выделению.

Пример ниже выбирает несколько задач в цикле:

const list = new ToDo("#root", {
tasks: [
{ id: "1", text: "Task 1" },
{ id: "1.1", text: "Task 1.1", parent: "1" },
{ id: "1.1.1", text: "Task 1.1.1", parent: "1.1" },
{ id: "1.2", text: "Task 1.2", parent: "1" },
{ id: "2", text: "Task 2" },
{ id: "2.1", text: "Task 2.1", parent: "2" },
{ id: "2.1.1", text: "Task 2.1.1", parent: "2.1" },
{ id: "2.2", text: "Task 2.2", parent: "2" },
]
});

const selected = ["1.1", "1.2", "2.2"];

for (id of selected) {
list.selectTask({ id, join: true });
}

console.log(list.getSelection()) // ["1.1", "1.2", "2.2"]

Фрагмент ниже добавляет ещё одну задачу к текущему выделению:

console.log(list.getSelection()) // ["1.1", "1.2", "2.2"]

list.selectTask({ id: "2.1", join: true });

console.log(list.getSelection()) // ["1.1", "1.2", "2.2", "2.1"]

Получение всех выбранных задач

Чтобы получить идентификаторы всех текущих выбранных задач, используйте метод getSelection(). Пример ниже показывает разницу между несортированным и сортированным выводом:

// сортировка отключена
list.getSelection({ sorted: false }); // ["1.2", "1.1", "2.2", "2.1"]

// сортировка включена
list.getSelection({ sorted: true }); // ["1.1", "1.2", "2.1", "2.2"]

Включите параметр sorted, чтобы получить идентификаторы выбранных задач в порядке их отображения на экране.

Управление выбранными задачами

После выбора нескольких задач примените операции ко всем им сразу.

Библиотека предоставляет метод eachSelected() для перебора всех выбранных задач. Метод принимает дополнительные параметры — sorted и reversed — управляющие сортировкой и направлением обхода.

Пример ниже удаляет все выбранные задачи:

list.eachSelected(id => {
list.deleteTask({ id });
}, true);

Список доступных операций

Через методы API можно выполнять следующие групповые операции над несколькими выбранными задачами:

Сброс выделения

Снять выделение с одной задачи

Чтобы снять выделение с одной задачи, передайте её идентификатор в метод unselectTask(). Фрагмент ниже снимает выделение с одной задачи:

list.unselectTask({ id: "1.1" });

Снять выделение со всех задач

Чтобы снять выделение со всех текущих выбранных задач, передайте id: null в метод unselectTask():

list.unselectTask({ id: null });

Горячие клавиши

информация

Дополнительную информацию смотрите в руководстве Навигация с клавиатуры.