diff --git a/documentation/07-firmy-a-prava.md b/documentation/07-firmy-a-prava.md index 0e82eb5..9ada8db 100644 --- a/documentation/07-firmy-a-prava.md +++ b/documentation/07-firmy-a-prava.md @@ -48,8 +48,9 @@ muze mit vic. Bez `tenantId` se pouzije prvni. ## Prepinac firmy je nad celym portalem Vybrana firma je **jedna hodnota pro cely dashboard** (`web/src/lib/tenant.ts`), -ne stav jedne stranky. Prepinac je v hlavicce nad obsahem a `apiFetch` doplnuje -`tenantId` do kazdeho dotazu na `/api/dashboard`. +ne stav jedne stranky. Prepinac je v sidebaru nad navigaci, tedy nad vsim, co se +pod nim kresli, a `apiFetch` doplnuje `tenantId` do kazdeho dotazu +na `/api/dashboard`. Doplnuje se to v API vrstve schvalne, ne na strankach. Kdyz si to mela pridavat kazda stranka sama, vetsina na to zapomnela a server sahnul po vychozi firme - @@ -65,6 +66,17 @@ Vyjimky, kdy se nedoplnuje: | Neni vybrano | server pouzije vychozi firmu uctu | | Cesta mimo `/api/dashboard` | prihlaseni a verejny web s firmou nepracuji | +**Prepnuti prekresli obsah cely.** Obsah dashboardu ma `key` podle vybrane +firmy, takze jina firma znamena novy strom komponent. + +Bez toho to nestacilo: `useApiQuery` se sice zeptat umi, ale komponenty, ktere +volaji `apiFetch` primo - `EntityAdmin`, a tim cele Nastaveni a zalozky +Resitele a Skupiny - o zmene nevi a zustala by na nich data predchozi firmy. +Doplnovat zavislost do kazde z nich je totez zapomenuti, jen o patro niz. + +Ztrata rozepsaneho stavu je pritom spravne: filtr na cloveka z firmy A nema +ve firme B co znamenat. + Volba prezije obnoveni stranky (localStorage). Kdyz ulozena firma uz mezi `access.tenants` neni - clovek z ni odesel, prihlasil se nekdo jiny na tomtez pocitaci - spadne se na vychozi firmu uctu, aby kazdy dotaz nekoncil na 403. diff --git a/documentation/99-zmeny.md b/documentation/99-zmeny.md index e0a1137..b8eb961 100644 --- a/documentation/99-zmeny.md +++ b/documentation/99-zmeny.md @@ -2,6 +2,31 @@ Nejnovejsi nahore. +## 2026-08-26 - prepinac firmy: do sidebaru a prekresli obsah cely + +Dodelavka predchoziho bodu. Tvrzeni "prepinac plati pro cely system" nebylo +pravdive: `useApiQuery` se na zmenu firmy zeptat umel, ale komponenty, ktere +volaji `apiFetch` primo - `EntityAdmin`, a tim cele Nastaveni a zalozky +Resitele a Skupiny v Lidech - o zmene nevedely a zustala na nich data +predchozi firmy. + +### Opraveno + +- **Obsah dashboardu ma `key` podle vybrane firmy**, takze prepnuti prestavi + cely strom komponent. Zadny dotaz nemuze zustat stary, protoze zadna stara + komponenta nezustane. Doplnovat zavislost do kazde komponenty zvlast je + totez zapomenuti, jen o patro niz. + +### Zmeneno + +- **Prepinac je v sidebaru nad navigaci**, ne v hlavicce. Vypada jako ovladaci + prvek: ram, ikona firmy, sipka. Predchozi verze mela pruhledny ram a splyvala + s popiskem - prepinac, ktery neni videt, je k nicemu. +- **V hlavicce zustal jen nazev aktivni firmy.** Driv tam stalo natvrdo + `tenants[0]`, takze po prepnuti ukazovala porad prvni firmu ze seznamu. +- Kdo patri do jedne firmy, vidi misto prepinace jeji nazev. Vyber z jedne + moznosti neni vyber. + ## 2026-08-26 - prava plati za firmu, ne za cloveka `permissionsOf(user)` scitalo role pres vsechna clenstvi. Kdo byl spravce diff --git a/web/src/components/dashboard/DashboardLayout.tsx b/web/src/components/dashboard/DashboardLayout.tsx index 72f7c28..1040979 100644 --- a/web/src/components/dashboard/DashboardLayout.tsx +++ b/web/src/components/dashboard/DashboardLayout.tsx @@ -1,13 +1,15 @@ import { AlarmClock, Blocks, + Building2, + ChevronDown, ExternalLink, LayoutDashboard, LayoutGrid, LifeBuoy, - MessageSquarePlus, LogOut, Menu, + MessageSquarePlus, MousePointerClick, Plug, ScrollText, @@ -92,27 +94,36 @@ function TenantSwitch({ access }: { access: Access | null }) { const current = tenants.find((tenant) => tenant.id === activeTenant); + // Vyber z jedne moznosti neni vyber, tak se vykresli jen nazev. if (tenants.length <= 1) { return ( -
+
{current?.name ?? tenants[0]?.name ?? 'Klientský portál'}
); } + /* + Vypada jako ovladaci prvek, ne jako popisek. Predchozi verze mela pruhledny + ram a splyvala s textem - prepinac, ktery neni videt, je k nicemu. + */ return ( - +