# Карта: Задачи (Tasks) Источник: апстрим `nextcloud/tasks v0.17.1` (`src/**/*.vue`, точная версия forbion) + тема `_mobile-tasks.css` (+ `app-tasks/forms/*`). Живой мобильный web (Browser 1) — для порядка/вида, помечено `визуал(?)` где не подтверждено на устройстве. Составил `b-mob-tasks` (mail/075/078/087). Легенда: **[веб]** — как в мобильном вебе forbion; `расхождение:` — чего нет/иначе в нативе (вход в `tasks.diff.md`). --- ## Вход Нижняя панель / шторка приложений → «Задачи». Открывается **Панель навигации** (в вебе — левая `app-navigation`; в нативе — экран списков `TasksListNavView`). --- ## Экран: Панель навигации (списки + умные коллекции) Источник: `views/AppNavigation.vue`. **Тело (сверху вниз):** 1. **Умные коллекции** (виртуальные списки, каждый со счётчиком-бейджем `NcCounterBubble`): - «Важное» (starred, иконка Star) → `/collections/starred` - «Сегодня» (today, CalendarToday) → `/collections/today` - «На неделе» (week, CalendarWeek) → `/collections/week` - «Все» (all, CircleOutline) → `/collections/all` - «Текущие» (current, TrendingUp) → `/collections/current` - «Завершённые» (completed, Check) → `/collections/completed` - Видимость каждой управляется настройкой (Скрыта/Видима/Автоматически — см. модалку Настроек); «Автоматически» = показывать только если счётчик > 0. 2. **Реальные списки** (календари VTODO), перетаскиваемые для ручной сортировки (long-press drag). У каждого — «⋯» меню (см. ниже). 3. **«Add List…» / «Добавить список»** (иконка Plus) → инлайн-форма: поле «New list» + **выбор цвета** (`Colorpicker`); Enter/стрелка — создать (MKCALENDAR), Esc — отмена. 4. **«Корзина» / «Trash bin»** (иконка Delete, если сервер поддерживает) → модалка Корзины. 5. **Настройки** (шестерёнка в футере) → модалка «Параметры задач». **Drag&drop:** задачу можно перетащить на коллекцию starred/completed/today/week — это проставляет приоритет=1 / 100% / срок сегодня / срок +6 дней соответственно. `расхождение:` в нативе (`TasksListNavView`) показаны ТОЛЬКО реальные списки; умных коллекций, Корзины, drag-сортировки и drag-на-коллекцию нет; «Добавить список» — мёртвая кнопка (без обработчика). ### Всплывающее меню: «⋯» списка (в панели навигации) Источник: `components/AppNavigation/ListItemCalendar.vue`. Пункты по порядку: 1. «Поделиться» (Share, если список расшариваем) → панель шаринга (пользователи/группы). 2. «Изменить» (Edit) → форма правки списка: имя + цвет. 3. «Копировать личную ссылку» (Copy private link → «Скопировано»/«Не удалось»). 4. «Экспорт» (Export) → скачивание списка `.ics`. 5. «Удалить» / «Отменить общий доступ» (Delete/Unshare, с обратным отсчётом → «Отмена»). 6. (внутри правки) «Удалить все завершённые задачи» → модалка (см. `DeleteCompletedModal`). `расхождение:` в нативе у списков НЕТ «⋯»-меню вовсе (нельзя переименовать/цвет/шарить/экспорт/ удалить/копировать ссылку). --- ## Экран: Список задач (коллекция или реальный список) Источник: `components/HeaderBar.vue`, `views/AppContent/General.vue`, `components/TaskBody.vue`. **Шапка (`HeaderBar`):** - **Поле быстрого ввода** «Add a task…» (иконка Plus): Enter/стрелка — создать задачу; вставка многострочного текста → диалог «Создать несколько задач». Скрыто для коллекции «Завершённые» и для read-only списка. - **«Фильтр»** (`FilterDropdown`, иконка воронки; активна — подсвечена) → меню (см. ниже). - **«Сортировка»** (`SortorderDropdown`, иконка текущего порядка + стрелка направления) → меню (см. ниже). **Тело:** - Список задач (по выбранному порядку). Незавершённые сверху; завершённые — отдельной зоной. - Коллекция «Завершённые» / завершённые в списке: кнопка **«Загрузить завершённые задачи»** (`LoadCompletedButton`; варианты «…этого списка» / «…всех списков»). - Пустое состояние: плейсхолдер без задач. `визуал(?)`. ### Строка задачи + всплывающее меню «⋯» Источник: `components/TaskBody.vue`. Элементы строки: - **Чекбокс** выполнения (клик — переключить 0/100%); показывает % выполнения. - **Звезда** (если приоритет > 0). - **Заголовок** (клик — открыть деталь в сайдбаре). - **Дата** старта/срока (бейдж: Вчера/Сегодня/Завтра/дата; для завершённых — «Завершено …»). - Индикаторы: **закреплена** (Pin), **есть заметка** (клик → сайдбар, вкладка Заметки), **есть скрытые подзадачи** (SortVariant). - **Меню «⋯»** — пункты по порядку: 1. «Добавить подзадачу» (Add subtask) → инлайн-поле ввода названия. 2. «Показать/скрыть подзадачи» (если есть подзадачи). 3. «Показать/скрыть завершённые подзадачи» (если есть завершённые подзадачи). 4. «Удалить задачу» (Delete task, с обратным отсчётом отмены). 5. «Переключить важность» (Toggle starred). `расхождение:` нативное «⋯» (`TasksComponents.TasksRow`) имеет только «Добавить вложенную задачу» и «Удалить задачу»; нет toggle-звезды, show/hide подзадач, индикаторов pin/заметка/ скрытые-подзадачи; звезды приоритета в строке нет. ### Выпадающее меню: Сортировка (`SortorderDropdown`) 10 порядков (клик повторно — сменить направление ↑/↓): Актуальность (Relevance) · Дата начала · Дата выполнения (due) · Дата создания · Изменено · Дата завершения · Приоритет · По алфавиту · Метки (Tags) · Вручную (Manually). `расхождение:` в нативе только тумблер ↑/↓ по одному критерию (дата→имя), выбора из 10 порядков нет. ### Выпадающее меню: Фильтр (`FilterDropdown`) - «Фильтровать по меткам» (мультиселект тегов). - «Сбросить фильтр». `расхождение:` в нативе кнопка «фильтр» открывает шит Настроек (не фильтр по тегам); тегов нет, фильтрации по тегам нет. Поиск по тексту в нативе есть (в VM), но отдельной строки поиска в вебе на этом экране нет — сверить `визуал(?)`. --- ## Экран: Деталь задачи (правый сайдбар) Источник: `views/AppSidebar.vue` (+ `components/AppSidebar/*`). **Шапка сайдбара:** заголовок (редактируемый), подзаголовок (даты). Меню действий: - «Закрепить»/«Открепить» (Pin/Unpin). - «Показать в Календаре» (Show in Calendar). - «Показать в Deck» (Show in Deck). - «Изменить заголовок» (Edit summary). - «Экспорт» (Export). - «Удалить» (Delete). **Вкладка «Подробно» (Details):** - **Классификация** (Select a classification): Public/Private/Confidential. - **Статус** (Select a status): Требует действия · Выполнено · В процессе · Отменено · Очистить. - **Дата начала** (Set start date) + **Дата выполнения** (Set due date), флажок **«Весь день»**. - **Приоритет** (слайдер): нет / низкий / средний / высокий (1–9). - **% выполнения** (слайдер/поле). - **Метки** (Select tags). - **Расположение** (Set a location), **URL** (Set a URL). - **Список** (переключение календаря задачи). - **Напоминания** (`AlarmList`): меню «Добавить напоминание» → «До начала задачи» / «До срока» / «Выбрать дату и время»; список напоминаний, «Нет напоминаний» — пусто. **Вкладка «Заметки» (Notes):** многострочная заметка (Markdown). `расхождение:` натив (`TaskDetailSheet`) — только заголовок, срок, приоритет, описание, toggle выполнения, удалить. Нет: старт-даты/всего дня, статуса (кроме bool), классификации, %-слайдера, меток, локации, URL, смены списка, напоминаний, Pin, «Показать в Календаре/Deck», экспорта, разделения на вкладки Подробно/Заметки. --- ## Модалка: Параметры задач (Настройки) Источник: `components/AppNavigation/AppNavigationSettings.vue`. - «Список по умолчанию» (Default list) — селект. - «Видимость умных коллекций» (Visibility of Smart Collections) — по каждой коллекции 3 варианта: **Скрыта / Видима / Автоматически**. `расхождение:` в нативе (`TasksSettingsSheet`) видимость — только 2 варианта (Показывать/Скрывать), не персистится и ни на что не влияет; «список по умолчанию» не персистится. ## Модалка: Правка/создание списка Источник: `ListItemCalendar.vue` (форма) + тема `_tasks-list-edit-mobile.css`. - Поле «Имя списка» + **Colorpicker**. Сохранить/Отмена. `расхождение:` нет в нативе. ## Модалка: Шаринг списка Источник: тема `_tasks-list-shares-mobile.css` + `ListItemCalendar` share. - Поиск пользователей/групп, выдача доступа, список получателей. `расхождение:` нет в нативе. ## Модалка: Удалить завершённые Источник: `components/DeleteCompletedModal.vue`. - «Удалить все завершённые задачи» → подтверждение, отчёт «Удалено из списка …». - В нативе аналог есть: массовое удаление завершённых в зоне «Завершённые» (`deleteCompletedTasks`). ## Модалка: Фильтр по тегам Источник: тема `_tasks-filter-popover-mobile.css` + `FilterDropdown`. `расхождение:` нет в нативе. ## Экран: Корзина (Trash bin) Источник: `components/AppNavigation/Trashbin.vue` + тема `_tasks-trash-modal-mobile.css`. - Таблица удалённых (имя, дата удаления, сортировка), «Восстановить», «Очистить корзину», пусто-состояние «Нет удалённых…». `расхождение:` нет в нативе. ## Диалоги создания Источник: `TaskCreateDialog.vue` (Создать задачу: поле «Краткое описание», Отмена/Создать), `CreateMultipleTasksDialog.vue` (из вставленного текста: «Создать N задач», Отмена/Создать). `расхождение:` быстрый ввод в нативе есть; массового создания из вставки — нет. --- ## Сводка всплывающих меню (mail/087) — веб ↔ натив | Меню | Веб (пунктов) | Натив | |---|---|---| | «⋯» списка (навигация) | 6 (share/edit/copy-link/export/delete/del-completed) | нет меню | | «⋯» задачи | 5 (subtask/show-hide/show-hide-closed/delete/star) | 2 (subtask/delete) | | Сортировка | 10 порядков + направление | тумблер ↑/↓ | | Фильтр | по тегам + сброс | нет (кнопка ведёт в Настройки) | | Создание «+» | задача / из вставки | задача | | Действия сайдбара | 6 (pin/calendar/deck/edit/export/delete) | 2 (toggle/delete) | | Напоминания | 3 (до старта/до срока/дата-время) | нет | | Настройки: видимость коллекций | 3 (скрыта/видима/авто) ×6 | 2 (показ/скрыть), неактивно |