Novy ucet videl na dashboardu chybejici widget
Katalog widgetu schovava list.myTickets tomu, kdo ve firme neni veden jako resitel, ale vychozi rozlozeni ho obsahovalo vzdy. Novy ucet nebo nova firma tak videly jako prvni vec hlasku "Widget list.myTickets uz v katalogu neni". getLayout a resetLayout dostavaji stejne hasPerson jako katalog; bez resitele je misto nej list.unassigned pres celou sirku. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
104ae36783
commit
6eed909a0d
@@ -68,8 +68,23 @@ export async function initLayouts(): Promise<void> {
|
||||
}
|
||||
}
|
||||
|
||||
export function getLayout(userId: string, tenantId: string): LayoutItem[] {
|
||||
return layouts.get(key(userId, tenantId))?.items ?? defaultLayout.map((item) => ({ ...item }));
|
||||
/**
|
||||
* Rozlozeni uzivatele, nebo vychozi.
|
||||
*
|
||||
* `hasPerson` musi byt stejne, jako dostava katalog (`widgetCatalog`): kdo
|
||||
* neni ve firme veden jako resitel, nema v katalogu `list.myTickets`, a tak
|
||||
* nesmi byt ani ve vychozim rozlozeni. Jinak novy ucet uvidel jako prvni vec
|
||||
* na dashboardu hlasku, ze widget "uz v katalogu neni". Misto nej dostane
|
||||
* nezarazene tickety pres celou sirku, aby radek nezustal poloprazdny.
|
||||
*/
|
||||
export function getLayout(userId: string, tenantId: string, hasPerson: boolean): LayoutItem[] {
|
||||
const saved = layouts.get(key(userId, tenantId))?.items;
|
||||
if (saved) return saved;
|
||||
return defaultLayout
|
||||
.filter((item) => hasPerson || item.widgetId !== 'list.myTickets')
|
||||
.map((item) =>
|
||||
!hasPerson && item.widgetId === 'list.unassigned' ? { ...item, size: 'full' as const } : { ...item },
|
||||
);
|
||||
}
|
||||
|
||||
/** true = uzivatel si rozlozeni uz upravil, nekouka na vychozi. */
|
||||
@@ -91,13 +106,13 @@ export function saveLayout(userId: string, tenantId: string, items: LayoutItem[]
|
||||
}
|
||||
|
||||
/** Vrati dashboard do vychoziho stavu. */
|
||||
export function resetLayout(userId: string, tenantId: string): LayoutItem[] {
|
||||
export function resetLayout(userId: string, tenantId: string, hasPerson: boolean): LayoutItem[] {
|
||||
const id = key(userId, tenantId);
|
||||
layouts.delete(id);
|
||||
// Vychozi rozlozeni se neuklada, takze vraceni znamena smazat zaznam.
|
||||
mirror.drop(id);
|
||||
console.info(`[layout] ${userId}@${tenantId}: vraceno na vychozi`);
|
||||
return getLayout(userId, tenantId);
|
||||
return getLayout(userId, tenantId, hasPerson);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -299,7 +299,7 @@ dashboardRouter.get('/layout', (req, res) => {
|
||||
|
||||
return res.json({
|
||||
tenantId,
|
||||
items: getLayout(req.user!.id, tenantId),
|
||||
items: getLayout(req.user!.id, tenantId, accessOf(req).personId !== null),
|
||||
custom: hasCustomLayout(req.user!.id, tenantId),
|
||||
});
|
||||
});
|
||||
@@ -341,7 +341,7 @@ dashboardRouter.delete('/layout', (req, res) => {
|
||||
|
||||
return res.json({
|
||||
tenantId,
|
||||
items: resetLayout(req.user!.id, tenantId),
|
||||
items: resetLayout(req.user!.id, tenantId, accessOf(req).personId !== null),
|
||||
custom: false,
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user