From 2e9150d77e5c383fc9a86c650ceff9126ff559a2 Mon Sep 17 00:00:00 2001 From: andz-bb Date: Thu, 17 Apr 2025 12:51:03 +0100 Subject: [PATCH 1/7] direct app creation/importing from main apps screen --- .../pages/builder/portal/apps/index.svelte | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/packages/builder/src/pages/builder/portal/apps/index.svelte b/packages/builder/src/pages/builder/portal/apps/index.svelte index 91e84dd650..fab3df1aec 100644 --- a/packages/builder/src/pages/builder/portal/apps/index.svelte +++ b/packages/builder/src/pages/builder/portal/apps/index.svelte @@ -91,8 +91,6 @@ const initiateAppCreation = async () => { if ($licensing?.usageMetrics?.apps >= 100) { appLimitModal.show() - } else if ($appsStore.apps?.length) { - $goto("/builder/portal/apps/create") } else { template = null creationModal.show() @@ -224,21 +222,21 @@ > Create new app - {#if $appsStore.apps?.length > 0 && !$admin.offlineMode} + + {#if $appsStore.apps?.length > 0} + {#if !$admin.offlineMode} + + {/if} - {/if} - {#if !$appsStore.apps?.length} - + {/each} + + + + + diff --git a/packages/builder/src/pages/builder/portal/apps/index.svelte b/packages/builder/src/pages/builder/portal/apps/index.svelte index fab3df1aec..19d3ae445b 100644 --- a/packages/builder/src/pages/builder/portal/apps/index.svelte +++ b/packages/builder/src/pages/builder/portal/apps/index.svelte @@ -5,6 +5,7 @@ Button, Select, Modal, + ModalContent, Page, notifications, Notification, @@ -26,15 +27,18 @@ licensing, enrichedApps, sortBy, + templates, } from "@/stores/portal" import { goto } from "@roxi/routify" import AppRow from "@/components/start/AppRow.svelte" import Logo from "assets/bb-space-man.svg" + import TemplatesModal from "@/components/start/TemplatesModal.svelte" let template let creationModal let appLimitModal let accountLockedModal + let templatesModal let searchTerm = "" let creatingFromTemplate = false let automationErrors @@ -157,6 +161,12 @@ } } + const handleTemplateSelect = selectedTemplate => { + template = selectedTemplate + templatesModal.hide() + autoCreateApp() + } + onMount(async () => { try { // If the portal is loaded from an external URL with a template param @@ -168,6 +178,7 @@ if (usersLimitLockAction) { usersLimitLockAction() } + await templates.load() } catch (error) { notifications.error("Error getting init info") } @@ -228,8 +239,7 @@ @@ -306,6 +316,10 @@ + + + + Date: Tue, 22 Apr 2025 10:58:15 +0100 Subject: [PATCH 4/7] linter fixes --- packages/builder/src/components/start/TemplatesModal.svelte | 2 +- packages/builder/src/pages/builder/portal/apps/index.svelte | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/builder/src/components/start/TemplatesModal.svelte b/packages/builder/src/components/start/TemplatesModal.svelte index f2c4dbc44a..6f2a69d174 100644 --- a/packages/builder/src/components/start/TemplatesModal.svelte +++ b/packages/builder/src/components/start/TemplatesModal.svelte @@ -4,7 +4,7 @@ import { templates } from "@/stores/portal" import type { TemplateMetadata } from "@budibase/types" - export let onSelectTemplate: (template: TemplateMetadata) => void + export let onSelectTemplate: (_template: TemplateMetadata) => void let newTemplates: TemplateMetadata[] = [] $: { diff --git a/packages/builder/src/pages/builder/portal/apps/index.svelte b/packages/builder/src/pages/builder/portal/apps/index.svelte index 19d3ae445b..a77ae44907 100644 --- a/packages/builder/src/pages/builder/portal/apps/index.svelte +++ b/packages/builder/src/pages/builder/portal/apps/index.svelte @@ -5,7 +5,6 @@ Button, Select, Modal, - ModalContent, Page, notifications, Notification, From 2affdaf6581b28093cb7eaf690634f5b9b2619b9 Mon Sep 17 00:00:00 2001 From: andz-bb Date: Wed, 23 Apr 2025 12:32:24 +0100 Subject: [PATCH 5/7] only use sample app when onboarding otherwise start with a blank canvas --- .../builder/src/components/start/CreateAppModal.svelte | 2 ++ .../builder/src/pages/builder/portal/apps/index.svelte | 1 + .../pages/builder/portal/apps/onboarding/index.svelte | 1 + packages/server/src/api/controllers/application.ts | 9 ++++++++- packages/types/src/api/web/app/application.ts | 1 + 5 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/builder/src/components/start/CreateAppModal.svelte b/packages/builder/src/components/start/CreateAppModal.svelte index 53548959d1..00ba4e3489 100644 --- a/packages/builder/src/components/start/CreateAppModal.svelte +++ b/packages/builder/src/components/start/CreateAppModal.svelte @@ -134,6 +134,8 @@ data.append("templateKey", template.key) } + data.append("isOnboarding", "false") + // Create App const createdApp = await API.createApp(data) diff --git a/packages/builder/src/pages/builder/portal/apps/index.svelte b/packages/builder/src/pages/builder/portal/apps/index.svelte index a77ae44907..d7fc8e1d01 100644 --- a/packages/builder/src/pages/builder/portal/apps/index.svelte +++ b/packages/builder/src/pages/builder/portal/apps/index.svelte @@ -121,6 +121,7 @@ data.append("name", appName) data.append("useTemplate", true) data.append("templateKey", template.key) + data.append("isOnboarding", "false") // Create App const createdApp = await API.createApp(data) diff --git a/packages/builder/src/pages/builder/portal/apps/onboarding/index.svelte b/packages/builder/src/pages/builder/portal/apps/onboarding/index.svelte index 7213767bd1..67eb56cbf3 100644 --- a/packages/builder/src/pages/builder/portal/apps/onboarding/index.svelte +++ b/packages/builder/src/pages/builder/portal/apps/onboarding/index.svelte @@ -22,6 +22,7 @@ data.append("name", name.trim()) data.append("url", url.trim()) data.append("useTemplate", false) + data.append("isOnboarding", "true") const createdApp = await API.createApp(data) diff --git a/packages/server/src/api/controllers/application.ts b/packages/server/src/api/controllers/application.ts index ff19cf1050..e18027a5f2 100644 --- a/packages/server/src/api/controllers/application.ts +++ b/packages/server/src/api/controllers/application.ts @@ -301,6 +301,13 @@ async function performAppCreate( const { body } = ctx.request const { name, url, encryptionPassword, templateKey } = body + let isOnboarding = false + if (typeof body.isOnboarding === "string") { + isOnboarding = body.isOnboarding === "true" + } else if (typeof body.isOnboarding === "boolean") { + isOnboarding = body.isOnboarding + } + let useTemplate = false if (typeof body.useTemplate === "string") { useTemplate = body.useTemplate === "true" @@ -334,7 +341,7 @@ async function performAppCreate( const instance = await createInstance(appId, instanceConfig) const db = context.getAppDB() const isImport = !!instanceConfig.file - const addSampleData = !isImport && !useTemplate + const addSampleData = isOnboarding && !isImport && !useTemplate if (instanceConfig.useTemplate && !instanceConfig.file) { await updateUserColumns(appId, db, ctx.user._id!) diff --git a/packages/types/src/api/web/app/application.ts b/packages/types/src/api/web/app/application.ts index a0f53a6ba4..8ec826c004 100644 --- a/packages/types/src/api/web/app/application.ts +++ b/packages/types/src/api/web/app/application.ts @@ -15,6 +15,7 @@ export interface CreateAppRequest { fileToImport?: string encryptionPassword?: string file?: { path: string } + isOnboarding?: string } export interface CreateAppResponse extends App {} From c0c2dc1947553428378a54e3ad5368515649c41f Mon Sep 17 00:00:00 2001 From: andz-bb Date: Wed, 23 Apr 2025 16:56:26 +0100 Subject: [PATCH 6/7] remove unused code now that templates repo is updated --- packages/builder/src/components/start/TemplatesModal.svelte | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/builder/src/components/start/TemplatesModal.svelte b/packages/builder/src/components/start/TemplatesModal.svelte index 6f2a69d174..8d348ec075 100644 --- a/packages/builder/src/components/start/TemplatesModal.svelte +++ b/packages/builder/src/components/start/TemplatesModal.svelte @@ -10,11 +10,6 @@ $: { const templateList = $templates as TemplateMetadata[] newTemplates = templateList?.filter(template => template.new) || [] - - // for dev only, remove when templates manifest updated in s3 - if (newTemplates.length === 0) { - newTemplates = templateList?.slice(0, 3) || [] - } } From 4a5fffaa7ddf3dd12e1cc1470355963815702de1 Mon Sep 17 00:00:00 2001 From: andz-bb Date: Fri, 2 May 2025 11:32:26 +0100 Subject: [PATCH 7/7] remove portal/apps/create and portal/apps/templates screens --- .../components/common/TemplateDisplay.svelte | 137 ------------------ .../pages/builder/portal/apps/create.svelte | 69 --------- .../builder/portal/apps/templates.svelte | 18 --- 3 files changed, 224 deletions(-) delete mode 100644 packages/builder/src/components/common/TemplateDisplay.svelte delete mode 100644 packages/builder/src/pages/builder/portal/apps/create.svelte delete mode 100644 packages/builder/src/pages/builder/portal/apps/templates.svelte diff --git a/packages/builder/src/components/common/TemplateDisplay.svelte b/packages/builder/src/components/common/TemplateDisplay.svelte deleted file mode 100644 index a72e846011..0000000000 --- a/packages/builder/src/components/common/TemplateDisplay.svelte +++ /dev/null @@ -1,137 +0,0 @@ - - - -
- - (selectedCategory = null)} - text="All" - active={selectedCategory == null} - /> - {#each categories as category} - (selectedCategory = category.name)} - text={category.name} - active={selectedCategory === category.name} - /> - {/each} - -
-
- - - - - - - diff --git a/packages/builder/src/pages/builder/portal/apps/create.svelte b/packages/builder/src/pages/builder/portal/apps/create.svelte deleted file mode 100644 index 1f3a0cb052..0000000000 --- a/packages/builder/src/pages/builder/portal/apps/create.svelte +++ /dev/null @@ -1,69 +0,0 @@ - - -{#if !$appsStore.apps.length} - -{:else} - - - - - - -
-
- - -
-
- -
-
- - - - -{/if} diff --git a/packages/builder/src/pages/builder/portal/apps/templates.svelte b/packages/builder/src/pages/builder/portal/apps/templates.svelte deleted file mode 100644 index 87139da9a9..0000000000 --- a/packages/builder/src/pages/builder/portal/apps/templates.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - -
- - -