Files
b-mob-tasks 82e260fbf5 docs(app-map): карта Задач + diff итерация 1 (из кода v0.17.1)
tasks.md — дерево экранов + всплывающие меню поимённо (mail/087).
tasks.diff.md — веб↔натив, Ff=16.7% Fd=41.5% по 8 экранам, бэклог P1-P5.
STATUS.md — строка tasks обновлена.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 05:47:52 +00:00

191 lines
15 KiB
Markdown

# Карта: Задачи (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 (показ/скрыть), неактивно |