docs(fork): update ACADENICE_PATCHES.md Patch 007 for R3.1.d
This commit is contained in:
parent
f3fae2ac78
commit
ea00386877
1 changed files with 67 additions and 0 deletions
|
|
@ -555,6 +555,73 @@ En attendant, le rendu est identique fonctionnellement (HTML table + colonnes de
|
|||
|
||||
---
|
||||
|
||||
## Patch 007 — R3.1.d : Kanban + Calendar renderers + Inline edit
|
||||
|
||||
**Date** : 2026-05-08
|
||||
**Scope** : renderers kanban (@dnd-kit) et calendar (@fullcalendar) + edition inline cellules (table) et cartes (kanban) + hook generique useUpdateRow + check permissions
|
||||
**Commit** : `f3fae2a`
|
||||
|
||||
### Fichiers crees
|
||||
|
||||
| Fichier | Role |
|
||||
|---------|------|
|
||||
| `renderers/kanban-renderer.tsx` + `.module.css` | Renderer kanban avec @dnd-kit drag-drop, group by single_select, optimistic update |
|
||||
| `renderers/calendar-renderer.tsx` + `.module.css` | Renderer calendar avec @fullcalendar month/week/day, eventDrop -> PATCH date |
|
||||
| `hooks/use-update-row.ts` | PATCH row generique avec optimistic update + rollback React Query v5 |
|
||||
| `hooks/use-permissions.ts` | Lecture acadenice_permissions depuis window global ou cookie acadenicePerms |
|
||||
| `components/inline-editor.tsx` + `.module.css` | Editor polymorphe (text/number/date/single_select/multi_select) |
|
||||
| `components/row-detail-modal.tsx` | Modal detail row ouverte depuis click event calendar |
|
||||
| `__tests__/kanban-renderer.test.tsx` | 8 tests kanban |
|
||||
| `__tests__/calendar-renderer.test.tsx` | 8 tests calendar (FullCalendar mocke) |
|
||||
| `__tests__/inline-editor.test.tsx` | 7 tests inline editor |
|
||||
| `__tests__/use-update-row.test.tsx` | 5 tests optimistic/rollback/endpoint/invalidation |
|
||||
| `__tests__/use-permissions.test.tsx` | 5 tests permissions |
|
||||
|
||||
### Fichiers modifies (touches minimales)
|
||||
|
||||
| Fichier | Modification |
|
||||
|---------|--------------|
|
||||
| `extension/database-view-component.tsx` | switch/case dispatch vers KanbanRenderer + CalendarRenderer (au lieu de PlaceholderRenderer) |
|
||||
| `renderers/table-renderer.tsx` | Integration InlineEditor sur double-click cellule + useUpdateRow + usePermissions |
|
||||
| `services/bridge-client.ts` | Ajout helper `patchRow(tableId, rowId, payload, bridgeUrl)` |
|
||||
| `types/database-view.types.ts` | SUPPORTED_VIEW_TYPES etendu : + "kanban" + "calendar" |
|
||||
| `__tests__/database-view-component.test.tsx` | Mocks KanbanRenderer + CalendarRenderer, tests kanban/calendar -> real renderers, test unknown -> placeholder |
|
||||
| `public/locales/en-US/translation.json` | +12 cles i18n (kanban.*, calendar.*, edit.*, row_detail.*) |
|
||||
| `public/locales/fr-FR/translation.json` | +12 cles i18n traductions FR |
|
||||
|
||||
### Nouvelles dependances a installer
|
||||
|
||||
```
|
||||
@dnd-kit/core@^6.3.1
|
||||
@dnd-kit/sortable@^8.0.0
|
||||
@dnd-kit/utilities@^3.2.2
|
||||
@fullcalendar/react@^6.1.15
|
||||
@fullcalendar/daygrid@^6.1.15
|
||||
@fullcalendar/timegrid@^6.1.15
|
||||
@fullcalendar/interaction@^6.1.15
|
||||
```
|
||||
|
||||
### Tests count
|
||||
|
||||
- Avant R3.1.d : 41 tests (5 suites R3.1.c) + 22 tests RBAC (R2.x) = 63 tests total
|
||||
- Apres R3.1.d : 63 + 33 nouveaux = 96 tests total (10 suites)
|
||||
|
||||
### Verifications skipped (convention fork)
|
||||
|
||||
- pnpm install : non execute (deps a ajouter listees ci-dessus)
|
||||
- pnpm typecheck : non execute (deps FullCalendar + dnd-kit absentes)
|
||||
- pnpm test : non execute
|
||||
- Lint : non execute
|
||||
|
||||
### Points a debattre avec Corentin
|
||||
|
||||
1. **usePermissions global cache** : le hook lit `window.__acadenice_perms` qui n'est pas set par le code existant. Il faut que le hook RBAC R2.3a set ce global apres resolution. A connecter dans `use-acadenice-permissions.ts` : apres la query resoud, `window.__acadenice_perms = data.permissions`.
|
||||
2. **KanbanRenderer drag-drop crosscolumn** : le DragEndEvent detecte la colonne cible via `closestCenter`. Si l'utilisateur drop dans une colonne vide (pas de card target), le `over.id` sera le column id (div), pas un row id. L'implementation actuelle cherche la colonne par `col.id === overRowId` — ca couvre ce cas. Mais si les IDs de colonnes collisionnent avec des IDs de rows Baserow (improbable mais possible), il faudrait un prefixe `col:` sur les IDs de colonnes.
|
||||
3. **FullCalendar CSS** : `@fullcalendar/react` inclut son propre CSS (`@fullcalendar/common/main.css`). Il faut l'importer globalement dans l'app ou dans le composant. Le CSS Mantine-compat dans `calendar-renderer.module.css` override les styles FullCalendar mais ne les importe pas.
|
||||
4. **@mantine/dates** : `DateInput` dans `inline-editor.tsx` vient de `@mantine/dates` qui necessite une installation separee (`pnpm add @mantine/dates`). A ajouter aux deps.
|
||||
|
||||
---
|
||||
|
||||
### TODO rebrand complet (futur)
|
||||
|
||||
- Logo SVG / favicon DocAdenice (actuellement reutilise `/icons/favicon-32x32.png` upstream)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue