Files
f7cloud_mobile/docs/app-map/deck.md
T
b-mob-deck 534dafc2c0 docs(app-map): deck.md — визуальная сверка на forbion (Browser 1, read-only)
Реальные подписи forbion (Ожидающие выполнения/Свойства/секции обзора), добавлен блок
«Режимы просмотра» (архивные/компактный/обложки), отмечено отсутствие Архивные/Shared
доски в мобильной навигации. Ни одной пишущей операции.
2026-07-12 22:28:18 +00:00

22 KiB
Raw Blame History

Карта: Карточки (Deck)

Приложение «Карточки» (/apps/deck/) на forbion.f7cloud.ru. Структура кнопок/меню/переходов снята из кода (метод mail/078): апстрим nextcloud/deck v1.16.4 (src/**/*.vue — точная версия с forbion, канон README) + мобильная тема forbion (design-reference/forbion-theme/css/pages/pages-mobile/_mobile-deck.css, css/pages/app-deck/_app-deck.css). Живой мобильный web (Browser 1, cloude, mail/079) — только для визуальной сверки «как выглядит/порядок»; строго read-only (mail/073): ничего не создаётся/не меняется/не удаляется. Приватность: реальные названия досок/карточек не фиксируются — только структура UI и дерево переходов.

Статус визуальной сверки на живом forbion: выполнена 2026-07-12 (Browser 1, cloude, мобильный вьюпорт через same-origin iframe 390px, read-only — ни одной пишущей операции). Реальные русские подписи forbion внесены ниже; расхождения кода ↔ живой темы помечены сверено:. Пройдены: Обзор, Все доски, доска (Controls+стеки+карточки), сайдбар карточки.

Компоненты-источники (nextcloud/deck v1.16.4)

Навигация: navigation/AppNavigation.vue (+ AppNavigationAddBoard, AppNavigationBoard, AppNavigationBoardCategory, AppNavigationImportBoard, BoardCloneModal, BoardExportModal). Список досок: boards/Boards.vue, boards/BoardItem.vue. Обзор: overview/Overview.vue (+ dashboard/Card.vue, views/DashboardToday|Tomorrow|Upcoming.vue). Доска: board/Board.vue, board/Stack.vue, Controls.vue. Карточка на доске: cards/CardItem.vue, cards/CardMenu.vue, cards/CardMenuEntries.vue, cards/CardBadges.vue, cards/AvatarList.vue, cards/badges/DueDate.vue, cards/badges/CardId.vue. Сайдбар карточки: card/CardSidebar.vue + табы CardSidebarTabDetails (→ TagSelector, AssignmentSelector, DueDateSelector, Description, AttachmentList), CardSidebarTabAttachments, CardSidebarTabComments (+ CommentForm, CommentItem), CardSidebarTabActivity. Сайдбар доски: board/BoardSidebar.vue + SharingTabSidebar, TagsTabSidebar, DeletedTabSidebar, TimelineTabSidebar. Диалоги: CardMoveDialog.vue, CardCreateDialog.vue, BoardSelector.vue, CardSelector.vue. Настройки: DeckAppSettings.vue (+ KeyboardShortcuts.vue).

Вход

Шторка приложений (по «трём полоскам») → «Карточки», или прямой URL /apps/deck/. Оболочку (нижняя панель, шторка, бургер) описывает shell.md (зона лида) — здесь только специфика приложения. На мобильном (узкий вьюпорт) тема (_mobile-deck.css) раскладывает доску колонками по вертикали (.smooth-dnd-container.horizontal { flex-direction: column }), навигацию убирает под бургер/шторку навигации, а сайдбары/модалки/настройки раскрывает на весь экран (modal-container height:100%, modal-header скрыт).

Экран: Навигация приложения (левая шторка — AppNavigation)

На мобильном — за «бургером»/шторкой навигации приложения (не нижняя панель оболочки). Тело (пункты по порядку, сверено: подписи с forbion):

  • «Ожидающие выполнения» (Upcoming cards, to="/") → экран «Обзор» (дашборд по срокам). сверено: на forbion пункт назван «Ожидающие выполнения», это и есть лендинг приложения.
  • «Все доски» (All boards, to="/board", иконка deck) → список досок.
  • Список личных досок (каждая — AppNavigationBoard, см. ниже), сгруппировано по категориям (AppNavigationBoardCategory).
  • «Добавить доску» (Add board, иконка +) → инлайн-создание: цветной bullet (палитра-пикер) + поле «Имя доски» (Board name) + кнопки «Отмена правки»/«Сохранить доску». (write — не жму.)
  • «Импортировать доску» (Import board, иконка upload) → диалог импорта (файл). (write — не жму.)
  • Внизу: «Настройки Deck» (Deck settings, шестерёнка) → модалка настроек.

сверено: в мобильной навигации forbion пунктов «Архивные доски» (/board/archived) и «Доски, доступные вам» (/board/shared) НЕ видно — в коде они есть (AppNavigation), но на узком вьюпорте тема их не выводит (или показывает только при непустом списке). Для нативного клиента это скорее плюс: паритет по видимой мобильной навигации не требует этих двух видов.

Меню доски (⋯ на пункте доски — AppNavigationBoard NcActions)

Порядок пунктов из кода:

  • «Сведения о доске» (Board details, icon-info) → открывает сайдбар доски (см. ниже).
  • «Редактировать доску» (Edit board, icon-rename; если canManage и не архивная) → инлайн-правка названия/цвета.
  • «Клонировать доску» (Clone board; если canCreate) → модалка BoardCloneModal.
  • «Разархивировать доску» / «Архивировать доску» (Unarchive/Archive board) — тумблер.
  • «Экспортировать доску» (Export board, icon-download) → модалка BoardExportModal.
  • «Вкл./выкл. напоминания о сроках» → подменю «Напоминания о сроках» (Due date reminders): «Все карточки» (All cards) / «Назначенные карточки» (Assigned cards) / «Выкл.» (Off). (все write — не выполняю.)

Экран: Все доски (список — Boards.vue)

Тело: таблица-список досок. Тема (_app-deck.css, _mobile-deck.css) делает каждую строку карточкой (border, radius 8px). Колонки-заголовки (board-list-header-row):

  • «Имя доски» (Board name) — bullet цвета доски + название (тап по строке → открыть доску).
  • «Участники» (Members) — аватары ACL (AvatarList; если >5 — «+N» иконкой more).
  • Поле фильтра списка navFilter (быстрый поиск по названию доски) — визуал(?) (положение на мобильной вёрстке). Пустое состояние: стандартный NcEmptyContent (тема подставляет deck-иконку).

Экран: Доска (Board.vue + Controls.vue)

Шапка (Controls)сверено: на мобильном forbion в шапке доски 4 контрола (иконками):

  • «Добавить список» (Add list) — инлайн-поле «Имя списка» (List name) + подтверждение. (write — не жму.)
  • «Применить фильтр» (иконка-воронка; активная = primary). Раскрывает поповер фильтров:
    • «Фильтр по метке» (Filter by tag) — чекбоксы по меткам доски.
    • «Фильтр по назначенному» (Filter by assigned user) — «Без назначения» (Unassigned) + список пользователей доски.
    • «Фильтр по статусу» (Filter by status) — «Открытые и выполненные» / «Открытые» / «Выполненные».
  • «Режимы просмотра» (View modes, иконка-сетка) — сверено: поповер с переключателями: «Показывать архивные карточки», «Выбор компактного или обычного режима просмотра», «Показывать обложки карточек». (в карте кода этого блока не было — добавлено по сверке.)
  • «Открыть подробности» (Open details, ⋯) → сайдбар доски (Общий доступ/Метки/Удалённые/Активность).
  • «Добавить карточку» (Add card) в коде тоже есть в Controls — на мобильном быстрый ввод идёт из шапки колонки (см. Stack). (write — не жму.) Тело: колонки-списки (Stack) по вертикали (мобильная тема), в каждой — карточки. Состояния: «Загрузка доски» (Loading board) / «Доска не найдена» (Board not found) / пусто «Нет доступных списков» (No lists available) + «Создать новый список, чтобы добавлять карточки» + поле «Имя списка».

Колонка-список (Stack.vue)

Шапка колонки:

  • Заголовок списка — тап (canManage) → инлайн-правка «Изменить заголовок списка» (Edit list title).
  • Меню колонки (⋯, NcActions): «Архивировать все карточки» (Archive all cards) / «Разархивировать все карточки» (Unarchive all cards) → подтверждение («Архивировать все карточки в этом списке» + Архивировать/Отмена); «Удалить список» (Delete list). (все write — не выполняю.)
  • «Добавить карточку» (Add card) → инлайн-поле «Имя карточки» (Card name). (write — не жму.) Тело: карточки (CardItem), drag-n-drop переносом между колонками (мышью/тачем).

Карточка на доске (CardItem + CardBadges)

  • Тап по карточке → сайдбар/деталь карточки.
  • Заголовок (тап при canEdit / клавиша E → инлайн-правка «Edit card title»).
  • Бейджи (CardBadges): срок (DueDate — цвет по просрочке, «выполнено»→галочка), счётчик «чек-пунктов» (Todo items), счётчик «комментариев» (N comments, M unread), аватары назначенных (AvatarList), ID карточки (если включён бейдж ID в настройках).
  • Меню карточки (⋯ / long-press, CardMenuEntries): «Сведения о карточке» (Card details) → сайдбар; «Изменить заголовок» (Edit title); «Назначить мне» / «Снять назначение с меня» (Assign to me / Unassign myself); «Отметить выполненной» / «Отметить невыполненной» (Mark as done / not done); «Переместить/копировать карточку» (Move/copy card) → диалог; «Архивировать» / «Разархивировать карточку» (Archive/Unarchive card); «Удалить карточку» (Delete card) — с тостом «Карточка удалена» + «Отменить» (undo). (все write — не выполняю.)
  • Клавиши на карточке: E правка заголовка, S назначить себя, archive/done по хоткею (см. настройки).

Экран: Обзор / Предстоящие карточки (Overview.vue)

Дашборд карточек по срокам (to="/", заголовок экрана «Ожидающие выполнения» + кнопка «+»), колонки-секции (мобильная тема ставит их в столбец). сверено: реальные подписи forbion: «Просроченные», «Сегодня», «Завтра», «Ближайшие 7 дней», «Позже», «Без назначенной даты». Каждая секция — список dashboard/Card.vue (карточки с меткой, иконкой описания и ⋯). Состояние загрузки: «Загрузка отфильтрованного вида».

Сайдбар карточки (CardSidebar — на мобильном во весь экран)

Шапка: заголовок карточки (редактируемый), меню (⋯): «Открыть в боковом виде» (Open in sidebar view) / «Открыть в большом виде» (Open in bigger view). Подпись «Изменено … ⸱ Создано …». Табы (по порядку)сверено: на forbion таб Details назван «Свойства», далее «Вложения», «Комментарии», «Активность»:

  • Свойства (Details) — CardSidebarTabDetails, порядок секций (сверено на живой карточке: метка → назначение → срок → описание):
    1. «Назначить метку карточке…» (TagSelector) — комбобокс «Выбрать или создать метку…», можно «Создать новую метку».
    2. «Назначить пользователю/группе/команде» (AssignmentSelector) — «Выбрать пользователя…».
    3. «Назначить срок карточке…» (DueDateSelector) — «Установить срок» / «Добавить срок»; быстрые опции: «Позже сегодня», «Завтра», «В эти выходные», «На след. неделе»; «Выбрать дату» (Choose a date) → пикер; «Убрать срок» (Remove due date); «Отметить выполненной» (Mark as done); при наличии — «Срок: …»/«Не выполнено»; «Архивировать карточку».
    4. (если включены проекты) блок связанных проектов (NcCollectionList).
    5. «Описание» (Description) — «Редактировать описание» / «Просмотр описания», «Справка по форматированию», «Добавить вложение», плейсхолдер «Напишите описание …»; статусы «(Не сохранено)»/«(Сохранение…)».
  • Вложения (Attachments) — CardSidebarTabAttachments (+ AttachmentList): «Загрузить новые файлы» (Upload new files), «Поделиться из Файлов» (Share from Files); по элементу: «Показать в Файлах», «Скачать» (Download), «Удалить вложение», «Восстановить вложение»; drop-зона «Перетащите файлы для загрузки»; «Эта доска только для чтения».
  • Комментарии (Comments) — CardSidebarTabComments (+ CommentForm): поле ввода + «Сохранить»; пусто «Пока нет комментариев. Начните обсуждение!».
  • Активность (Activity) — CardSidebarTabActivity (если включён Activity-апп). (все действия табов — write, на forbion не выполняю.)

Сайдбар доски (BoardSidebar — во весь экран на мобильном)

Табы: «Общий доступ» (Sharing) — SharingTabSidebar: «Поделиться доской с пользователем, группой или командой …», права по ACL (Can edit / Can share / Can manage / Owner), «Передать доску» (Transfer) с подтверждением, «Удалить» доступ; «Метки» (Tags) — TagsTabSidebar: список меток, «Добавить новую метку», по метке — «Редактировать»/«Удалить»; «Удалённые элементы» (Deleted items) — DeletedTabSidebar: «Удалённые списки» / «Удалённые карточки» (восстановление); «Активность» (Activity). (все write — не выполняю.)

Диалог: Переместить/копировать карточку (CardMoveDialog)

  • «Выбрать доску» (Select a board) — комбобокс.
  • «Выбрать список» (Select a list; «Нет доступных списков», если пусто).
  • Кнопки «Переместить карточку» (Move card) / «Копировать карточку» (Copy card).

Модалка: Настройки Deck (DeckAppSettings — во весь экран на мобильном)

  • Общее (General): «Использовать увеличенный вид карточки» (Use bigger card view).
  • Внешний вид (Appearance): «Показывать бейдж ID карточки» (Show card ID badge), «Показывать доски в календаре/задачах» (Show boards in calendar/tasks).
  • Настройки администратора (Admin settings, если админ): «Ограничить создание досок группами».
  • Комбинации клавиш (KeyboardShortcuts): действия доски (Scroll sideways, навигация стрелками, Escape закрыть карточку, Ctrl+F поиск, F фильтры, X сброс фильтров, ? справка) и карточки (Enter/Space открыть, E правка заголовка, S назначить себя). В теме forbion секция клавиш может быть скрыта на мобильном — визуал(?).

Расхождения с нативным клиентом (feature/deck) — бэклог

Нативный модуль (DeckRepository/DeckScreen/DeckCardSheet/DeckViewModel) сейчас покрывает: список неархивных досок, доску колонками, карточки (метки/срок/исполнители-чтение/done/ счётчик), деталь карточки (правка названия/описания, срок через пикер, done, toggle меток, перенос между колонками, архив, удаление), создание карточки и колонки, учёт PERMISSION_EDIT. Отсутствует против веба (приоритетный бэклог):

  • Обзор/Предстоящие карточки — дашборда по срокам (Просрочено/Сегодня/…/Без срока) нет.
  • Архивные доски и Доски, доступные вам — отдельных видов нет (архивные доски просто скрыты).
  • Фильтры доски — по метке / назначенному / статусу; поиска по доске нет.
  • Исполнители — только чтение: нет «Назначить мне/пользователю», снятия (совпадает с долгом №1 плана mail/071, п.2).
  • Комментарии и Вложения карточки — нет совсем (вложения явно в зоне, mail/065).
  • Меню/CRUD колонки: правка заголовка списка, «Архивировать/Разархивировать все карточки», «Удалить список» — в приложении нет (только создание).
  • CRUD досок: создать/править/клонировать/архивировать/экспортировать/импортировать доску — нет; переименования колонок нет.
  • Move/copy на другую доску — нативно только перенос между колонками одной доски.
  • Метки (Tags) доски — управления (создать/править/удалить) нет; toggle существующих есть.
  • Sharing / Deleted items / Activity доски — нет.
  • Быстрые опции срока (Позже сегодня/Завтра/Выходные/След. неделя) — в пикере нет.
  • Режимы просмотра доски (сверено: шапка forbion): показ архивных карточек, компактный/ обычный режим, обложки карточек — в нативном клиенте нет.
  • Напоминания о сроках (notify-due) и бейдж ID / увеличенный вид из настроек — нет.
  • Undo при удалении карточки — в вебе есть тост-отмена; в нативном удаление сразу.
  • Мелочь UI: счётчики чек-пунктов и комментариев на карточке доски — не показываются.