From 185806ec64f1bffa314b80ffeb21a6ac10bf0a1d Mon Sep 17 00:00:00 2001 From: Kristaps Fabians Geikins Date: Wed, 8 Oct 2025 09:49:26 +0200 Subject: [PATCH] feat: embedding saved views (#5690) * init + new API query * embed dialog works * embed actions menu * embed label * WIP positioning fix: * cleanup * embed options finalized * prevent reset in embed mode * more embed UX improverments * tests fix --- .../components/form/select/SavedView.vue | 126 +++++++ .../project/model-page/dialog/embed/Embed.vue | 79 ++++- .../components/viewer/PageSetup.vue | 23 +- .../viewer/saved-views/panel/Groups.vue | 24 +- .../viewer/saved-views/panel/View.vue | 17 +- .../lib/common/generated/gql/gql.ts | 24 +- .../lib/common/generated/gql/graphql.ts | 53 ++- .../lib/common/helpers/debugging.ts | 72 +++- .../viewer/composables/savedViews/general.ts | 4 +- .../viewer/composables/savedViews/state.ts | 26 +- .../composables/savedViews/validation.ts | 25 +- .../lib/viewer/composables/setup/postSetup.ts | 72 ++-- .../frontend-2/lib/viewer/helpers/eventBus.ts | 7 + packages/frontend-2/utils/globals.ts | 10 +- .../assets/viewer/typedefs/savedViews.graphql | 28 ++ .../modules/core/graph/generated/graphql.ts | 39 +++ .../viewer/domain/operations/savedViews.ts | 36 ++ .../viewer/graph/resolvers/savedViews.ts | 39 +++ .../modules/viewer/repositories/savedViews.ts | 83 ++++- .../viewer/services/savedViewsManagement.ts | 47 ++- .../modules/viewer/tests/helpers/graphql.ts | 17 + .../integration/savedViewsCrud.graph.spec.ts | 329 ++++++++++++++++++ packages/shared/src/core/helpers/error.ts | 16 +- .../layout/DialogSection.stories.ts | 26 ++ .../src/components/layout/DialogSection.vue | 16 +- 25 files changed, 1146 insertions(+), 92 deletions(-) create mode 100644 packages/frontend-2/components/form/select/SavedView.vue diff --git a/packages/frontend-2/components/form/select/SavedView.vue b/packages/frontend-2/components/form/select/SavedView.vue new file mode 100644 index 000000000..846ddd1fc --- /dev/null +++ b/packages/frontend-2/components/form/select/SavedView.vue @@ -0,0 +1,126 @@ + + diff --git a/packages/frontend-2/components/project/model-page/dialog/embed/Embed.vue b/packages/frontend-2/components/project/model-page/dialog/embed/Embed.vue index 61d5cf851..c965f6a88 100644 --- a/packages/frontend-2/components/project/model-page/dialog/embed/Embed.vue +++ b/packages/frontend-2/components/project/model-page/dialog/embed/Embed.vue @@ -49,13 +49,37 @@

Embed URL

- +
+
+ + +
-
-
{ } }) +const embedName = computed(() => { + if (!modelName.value) return 'Loading...' + + let ret = '' + if (savedView.value) { + ret += `${savedView.value.name} | ` + } + + ret += modelName.value + return ret +}) + const lastUpdate = computed(() => { if (project.value?.models?.items[0] && project.value.models.items[0].updatedAt) { return 'Updated ' + dayjs(project.value.models.items[0].updatedAt).fromNow() diff --git a/packages/frontend-2/components/viewer/saved-views/panel/Groups.vue b/packages/frontend-2/components/viewer/saved-views/panel/Groups.vue index 548418aab..aa870f528 100644 --- a/packages/frontend-2/components/viewer/saved-views/panel/Groups.vue +++ b/packages/frontend-2/components/viewer/saved-views/panel/Groups.vue @@ -46,6 +46,12 @@ v-model:open="showGroupDeleteDialog" :group="groupBeingDeleted" /> +