@swiss-ai-hub/web 0.297.2 → 0.297.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/composables/tenant/useTenant.ts +1 -1
- package/composables/tenant/useTenantPath.ts +13 -6
- package/i18n/locales/de.yaml +3 -0
- package/i18n/locales/en.yaml +3 -0
- package/i18n/locales/fr.yaml +3 -0
- package/i18n/locales/it.yaml +3 -0
- package/package.json +1 -1
- package/pages/[tenant]/service/organization-memories/graph.vue +11 -1
- package/pages/[tenant]/service/organization-memories/list.vue +11 -1
- package/pages/[tenant]/service/processes.vue +10 -1
- package/pages/[tenant]/service/user-memories/graph.vue +11 -1
- package/pages/[tenant]/service/user-memories/list.vue +11 -1
|
@@ -5,7 +5,7 @@ import { setMyActiveTenant } from '@core/sdk/client'
|
|
|
5
5
|
*
|
|
6
6
|
* - **Read**: ``tenantId`` is a reactive computed derived from the route. Tenant-scoped
|
|
7
7
|
* routes carry the id as ``route.params.tenant`` (``/[tenant]/...``); sysadmin admin
|
|
8
|
-
* routes carry it as ``route.params.tenant_id`` (``/
|
|
8
|
+
* routes carry it as ``route.params.tenant_id`` (``/tenants/[tenant_id]/...``).
|
|
9
9
|
* Both shapes resolve to the same tenant context so composables and components that
|
|
10
10
|
* depend on ``useTenant()`` work transparently in either place.
|
|
11
11
|
* - **Write**: ``setTenant(id)`` navigates to the same route with the new ``tenant``
|
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Wraps ``useLocalePath()`` to auto-inject the
|
|
2
|
+
* Wraps ``useLocalePath()`` to auto-inject the tenant segment for the
|
|
3
|
+
* ``/[tenant]/...`` route tree.
|
|
4
|
+
*
|
|
5
|
+
* Only the tenant-scoped ``route.params.tenant`` is injected — sysadmin routes
|
|
6
|
+
* carry the tenant as ``route.params.tenant_id`` but their URLs are absolute
|
|
7
|
+
* (e.g. ``/tenants``), so on those routes this falls back to bare ``localePath``.
|
|
8
|
+
* (This differs from ``useTenant().tenantId``, which intentionally resolves both
|
|
9
|
+
* shapes for data fetching.)
|
|
3
10
|
*
|
|
4
11
|
* Usage:
|
|
5
12
|
* ```ts
|
|
6
13
|
* const tenantPath = useTenantPath()
|
|
7
14
|
* router.push(tenantPath('/service/agents'))
|
|
8
|
-
* // → /{locale}/{
|
|
15
|
+
* // → /{locale}/{tenant}/service/agents
|
|
9
16
|
* ```
|
|
10
17
|
*/
|
|
11
18
|
export function useTenantPath() {
|
|
12
19
|
const localePath = useLocalePath()
|
|
13
|
-
const
|
|
20
|
+
const route = useRoute()
|
|
14
21
|
|
|
15
22
|
return (path: string) => {
|
|
16
|
-
const
|
|
17
|
-
if (!
|
|
18
|
-
return localePath(`/${
|
|
23
|
+
const tenant = route.params.tenant as string | undefined
|
|
24
|
+
if (!tenant) return localePath(path)
|
|
25
|
+
return localePath(`/${tenant}${path}`)
|
|
19
26
|
}
|
|
20
27
|
}
|
package/i18n/locales/de.yaml
CHANGED
|
@@ -684,6 +684,7 @@ bar:
|
|
|
684
684
|
show_notifications: Benachrichtigungen anzeigen
|
|
685
685
|
process:
|
|
686
686
|
title: Prozesse
|
|
687
|
+
no_results: Keine Prozesse gefunden
|
|
687
688
|
overview:
|
|
688
689
|
name: Name
|
|
689
690
|
class: Klasse
|
|
@@ -759,8 +760,10 @@ memory:
|
|
|
759
760
|
title: Erinnerungen
|
|
760
761
|
graph:
|
|
761
762
|
title: Wissensgraph
|
|
763
|
+
no_results: Keine Erinnerungen gefunden
|
|
762
764
|
list:
|
|
763
765
|
title: Erinnerungsliste
|
|
766
|
+
no_results: Keine Erinnerungen gefunden
|
|
764
767
|
detail:
|
|
765
768
|
title: Erinnerungsdetails
|
|
766
769
|
created_at: Erstellt am
|
package/i18n/locales/en.yaml
CHANGED
|
@@ -675,6 +675,7 @@ bar:
|
|
|
675
675
|
show_notifications: Show notifications
|
|
676
676
|
process:
|
|
677
677
|
title: Processes
|
|
678
|
+
no_results: No processes found
|
|
678
679
|
overview:
|
|
679
680
|
name: Name
|
|
680
681
|
class: Class
|
|
@@ -750,8 +751,10 @@ memory:
|
|
|
750
751
|
title: Memories
|
|
751
752
|
graph:
|
|
752
753
|
title: Knowledge Graph
|
|
754
|
+
no_results: No memories found
|
|
753
755
|
list:
|
|
754
756
|
title: Memory List
|
|
757
|
+
no_results: No memories found
|
|
755
758
|
detail:
|
|
756
759
|
title: Memory Details
|
|
757
760
|
created_at: Created At
|
package/i18n/locales/fr.yaml
CHANGED
|
@@ -683,6 +683,7 @@ bar:
|
|
|
683
683
|
show_notifications: Afficher les notifications
|
|
684
684
|
process:
|
|
685
685
|
title: Processus
|
|
686
|
+
no_results: Aucun processus trouvé
|
|
686
687
|
overview:
|
|
687
688
|
name: Nom
|
|
688
689
|
class: Classe
|
|
@@ -758,8 +759,10 @@ memory:
|
|
|
758
759
|
title: Souvenirs
|
|
759
760
|
graph:
|
|
760
761
|
title: Graphe de connaissances
|
|
762
|
+
no_results: Aucun souvenir trouvé
|
|
761
763
|
list:
|
|
762
764
|
title: Liste des souvenirs
|
|
765
|
+
no_results: Aucun souvenir trouvé
|
|
763
766
|
detail:
|
|
764
767
|
title: Détails du souvenir
|
|
765
768
|
created_at: Créé le
|
package/i18n/locales/it.yaml
CHANGED
|
@@ -680,6 +680,7 @@ bar:
|
|
|
680
680
|
show_notifications: Mostra notifiche
|
|
681
681
|
process:
|
|
682
682
|
title: Processi
|
|
683
|
+
no_results: Nessun processo trovato
|
|
683
684
|
overview:
|
|
684
685
|
name: Nome
|
|
685
686
|
class: Classe
|
|
@@ -755,8 +756,10 @@ memory:
|
|
|
755
756
|
title: Ricordi
|
|
756
757
|
graph:
|
|
757
758
|
title: Grafo della conoscenza
|
|
759
|
+
no_results: Nessun ricordo trovato
|
|
758
760
|
list:
|
|
759
761
|
title: Elenco dei ricordi
|
|
762
|
+
no_results: Nessun ricordo trovato
|
|
760
763
|
detail:
|
|
761
764
|
title: Dettagli del ricordo
|
|
762
765
|
created_at: Creato il
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"license": "AGPL-3.0-or-later",
|
|
4
4
|
"author": "bbv Software Services AG (https://www.bbv.ch)",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"version": "0.297.
|
|
6
|
+
"version": "0.297.4",
|
|
7
7
|
"description": "Swiss AI Hub - Admin & Management UI (Nuxt 3 layer)",
|
|
8
8
|
"main": "./nuxt.config.ts",
|
|
9
9
|
"repository": {
|
|
@@ -4,7 +4,10 @@
|
|
|
4
4
|
:loading="memoriesAreLoading"
|
|
5
5
|
class="overflow-hidden"
|
|
6
6
|
>
|
|
7
|
-
<div
|
|
7
|
+
<div
|
|
8
|
+
v-if="paginatedMemories.length > 0"
|
|
9
|
+
class="flex h-full flex-col gap-2"
|
|
10
|
+
>
|
|
8
11
|
<div class="flex w-full items-center gap-2">
|
|
9
12
|
<IconField class="flex-1">
|
|
10
13
|
<InputIcon>
|
|
@@ -41,6 +44,13 @@
|
|
|
41
44
|
/>
|
|
42
45
|
</div>
|
|
43
46
|
</div>
|
|
47
|
+
|
|
48
|
+
<div
|
|
49
|
+
v-else
|
|
50
|
+
class="flex items-center justify-center py-8 text-surface-500"
|
|
51
|
+
>
|
|
52
|
+
<span class="text-xl">{{ t('memory.graph.no_results') }}</span>
|
|
53
|
+
</div>
|
|
44
54
|
</StructuralColumn>
|
|
45
55
|
|
|
46
56
|
<NuxtPage :selected-memory-id="selectedMemoryId" />
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
:title="t('memory.list.title')"
|
|
4
4
|
:loading="memoriesAreLoading"
|
|
5
5
|
>
|
|
6
|
-
<div
|
|
6
|
+
<div
|
|
7
|
+
v-if="paginatedMemories.length > 0"
|
|
8
|
+
class="flex h-full flex-col gap-2"
|
|
9
|
+
>
|
|
7
10
|
<div class="flex w-full items-center justify-between gap-2">
|
|
8
11
|
<div class="flex flex-1 items-center gap-2">
|
|
9
12
|
<IconField class="flex-1">
|
|
@@ -53,6 +56,13 @@
|
|
|
53
56
|
/>
|
|
54
57
|
</div>
|
|
55
58
|
</div>
|
|
59
|
+
|
|
60
|
+
<div
|
|
61
|
+
v-else
|
|
62
|
+
class="flex items-center justify-center py-8 text-surface-500"
|
|
63
|
+
>
|
|
64
|
+
<span class="text-xl">{{ t('memory.list.no_results') }}</span>
|
|
65
|
+
</div>
|
|
56
66
|
</StructuralColumn>
|
|
57
67
|
|
|
58
68
|
<NuxtPage :selected-memory-id="selectedMemoryId" />
|
|
@@ -4,7 +4,10 @@
|
|
|
4
4
|
:title="t('process.title')"
|
|
5
5
|
:loading="isLoading"
|
|
6
6
|
>
|
|
7
|
-
<div
|
|
7
|
+
<div
|
|
8
|
+
v-if="groupedProcesses.length > 0"
|
|
9
|
+
class="flex flex-col gap-12"
|
|
10
|
+
>
|
|
8
11
|
<div
|
|
9
12
|
v-for="group in groupedProcesses"
|
|
10
13
|
:key="group.processClass"
|
|
@@ -37,6 +40,12 @@
|
|
|
37
40
|
</div>
|
|
38
41
|
</div>
|
|
39
42
|
</div>
|
|
43
|
+
<div
|
|
44
|
+
v-else
|
|
45
|
+
class="flex items-center justify-center py-8 text-surface-500"
|
|
46
|
+
>
|
|
47
|
+
<span class="text-xl">{{ t('process.no_results') }}</span>
|
|
48
|
+
</div>
|
|
40
49
|
<ProcessCreateModal
|
|
41
50
|
v-model="createModalOpen"
|
|
42
51
|
:initial-class="selectedClassForCreate"
|
|
@@ -4,7 +4,10 @@
|
|
|
4
4
|
:loading="memoriesAreLoading"
|
|
5
5
|
class="overflow-hidden"
|
|
6
6
|
>
|
|
7
|
-
<div
|
|
7
|
+
<div
|
|
8
|
+
v-if="paginatedMemories.length > 0"
|
|
9
|
+
class="flex h-full flex-col gap-2"
|
|
10
|
+
>
|
|
8
11
|
<div class="flex w-full items-center gap-2">
|
|
9
12
|
<IconField class="flex-1">
|
|
10
13
|
<InputIcon>
|
|
@@ -41,6 +44,13 @@
|
|
|
41
44
|
/>
|
|
42
45
|
</div>
|
|
43
46
|
</div>
|
|
47
|
+
|
|
48
|
+
<div
|
|
49
|
+
v-else
|
|
50
|
+
class="flex items-center justify-center py-8 text-surface-500"
|
|
51
|
+
>
|
|
52
|
+
<span class="text-xl">{{ t('memory.graph.no_results') }}</span>
|
|
53
|
+
</div>
|
|
44
54
|
</StructuralColumn>
|
|
45
55
|
|
|
46
56
|
<NuxtPage :selected-memory-id="selectedMemoryId" />
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
:title="t('memory.list.title')"
|
|
4
4
|
:loading="memoriesAreLoading"
|
|
5
5
|
>
|
|
6
|
-
<div
|
|
6
|
+
<div
|
|
7
|
+
v-if="paginatedMemories.length > 0"
|
|
8
|
+
class="flex h-full flex-col gap-2"
|
|
9
|
+
>
|
|
7
10
|
<div class="flex w-full items-center justify-between gap-2">
|
|
8
11
|
<div class="flex flex-1 items-center gap-2">
|
|
9
12
|
<IconField class="flex-1">
|
|
@@ -53,6 +56,13 @@
|
|
|
53
56
|
/>
|
|
54
57
|
</div>
|
|
55
58
|
</div>
|
|
59
|
+
|
|
60
|
+
<div
|
|
61
|
+
v-else
|
|
62
|
+
class="flex items-center justify-center py-8 text-surface-500"
|
|
63
|
+
>
|
|
64
|
+
<span class="text-xl">{{ t('memory.list.no_results') }}</span>
|
|
65
|
+
</div>
|
|
56
66
|
</StructuralColumn>
|
|
57
67
|
|
|
58
68
|
<NuxtPage :selected-memory-id="selectedMemoryId" />
|