From 0fadc263856dcd06c3a045db075f65747ef0741d Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Sat, 31 Dec 2022 13:34:59 +0100 Subject: [PATCH] overhaul app creation flow --- .../src/lib/components/apps/CreateApp.svelte | 77 ----------------- .../components/apps/editor/AppEditor.svelte | 16 +--- .../apps/editor/AppEditorHeader.svelte | 82 +++++++++++++++++-- .../apps/editor/AppExportButton.svelte | 46 +++++++++++ .../componentsPanel/ComponentList.svelte | 2 + frontend/src/lib/components/apps/store.ts | 7 ++ .../components/flows/CreateActionsApp.svelte | 48 +++++++++++ .../components/flows/CreateActionsFlow.svelte | 7 +- .../flows/header/FlowImportExportMenu.svelte | 2 +- .../components/sidebar/WorkspaceMenu.svelte | 4 +- frontend/src/lib/stores.ts | 8 +- .../src/routes/(root)/(logged)/+page.svelte | 4 +- .../routes/(root)/(logged)/apps/add/+page.js | 5 ++ .../(root)/(logged)/apps/add/+page.svelte | 51 ++++++++++++ .../(logged)/apps/edit/[...path]/+page.js | 5 ++ .../(logged)/apps/edit/[...path]/+page.svelte | 19 ++--- .../(root)/(logged)/flows/add/+page.svelte | 9 +- .../(root)/(logged)/scripts/add/+page.svelte | 2 + .../user/(user)/create_workspace/+page.svelte | 9 +- .../user/(user)/workspaces/+page.svelte | 10 ++- 20 files changed, 289 insertions(+), 124 deletions(-) delete mode 100644 frontend/src/lib/components/apps/CreateApp.svelte create mode 100644 frontend/src/lib/components/apps/editor/AppExportButton.svelte create mode 100644 frontend/src/lib/components/apps/store.ts create mode 100644 frontend/src/lib/components/flows/CreateActionsApp.svelte create mode 100644 frontend/src/routes/(root)/(logged)/apps/edit/[...path]/+page.js diff --git a/frontend/src/lib/components/apps/CreateApp.svelte b/frontend/src/lib/components/apps/CreateApp.svelte deleted file mode 100644 index 1562408453..0000000000 --- a/frontend/src/lib/components/apps/CreateApp.svelte +++ /dev/null @@ -1,77 +0,0 @@ - - - - closeDrawer()}> - -
- App permissions depend on their path. Select the group all - to share it, and user to keep it private. - docs -
-
- -
- -
-
-
- - diff --git a/frontend/src/lib/components/apps/editor/AppEditor.svelte b/frontend/src/lib/components/apps/editor/AppEditor.svelte index 968c1e8ee1..02048baefe 100644 --- a/frontend/src/lib/components/apps/editor/AppEditor.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditor.svelte @@ -27,8 +27,7 @@ import { userStore } from '$lib/stores' import InlineScriptsPanel from './inlineScriptsPanel/InlineScriptsPanel.svelte' - import TablePanel from './TablePanel.svelte' - import { grid } from 'd3-dag' + import SettingsPanel from './SettingsPanel.svelte' import { fly } from 'svelte/transition' import type { Policy } from '$lib/gen' @@ -72,18 +71,7 @@ function saveDraft() { timeout && clearTimeout(timeout) - timeout = setTimeout( - () => - localStorage.setItem( - 'app', - encodeState({ - path, - value: $appStore, - policy - }) - ), - 500 - ) + timeout = setTimeout(() => localStorage.setItem('app', encodeState($appStore)), 500) } let mounted = false diff --git a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte index f667abd323..a0c3d095e2 100644 --- a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte @@ -1,16 +1,20 @@ + + closeDrawer()}> + + +
+ +
+
+
+
@@ -73,13 +132,14 @@
- + + Centered + Full Width +
-
+
+ + - +
diff --git a/frontend/src/lib/components/apps/editor/AppExportButton.svelte b/frontend/src/lib/components/apps/editor/AppExportButton.svelte new file mode 100644 index 0000000000..504d9d57ca --- /dev/null +++ b/frontend/src/lib/components/apps/editor/AppExportButton.svelte @@ -0,0 +1,46 @@ + + + + + + jsonViewerDrawer.toggleDrawer()}> +
+ + +
+
+
diff --git a/frontend/src/lib/components/apps/editor/componentsPanel/ComponentList.svelte b/frontend/src/lib/components/apps/editor/componentsPanel/ComponentList.svelte index 7b6421c773..b99ae35f82 100644 --- a/frontend/src/lib/components/apps/editor/componentsPanel/ComponentList.svelte +++ b/frontend/src/lib/components/apps/editor/componentsPanel/ComponentList.svelte @@ -12,6 +12,7 @@ import { faAngleDown } from '@fortawesome/free-solid-svg-icons' import { isOpenStore } from './store' import { gridColumns } from '../../gridUtils' + import { dirtyStore } from '$lib/components/common/confirmationModal/dirtyStore' const { app, selectedComponent } = getContext('AppEditorContext') @@ -57,6 +58,7 @@ } function addComponent(appComponent: AppComponent) { + $dirtyStore = true const grid = $app.grid ?? [] const id = getNextId(grid.map((gridItem) => gridItem.data.id)) diff --git a/frontend/src/lib/components/apps/store.ts b/frontend/src/lib/components/apps/store.ts new file mode 100644 index 0000000000..d5d2e7cb3b --- /dev/null +++ b/frontend/src/lib/components/apps/store.ts @@ -0,0 +1,7 @@ +import { writable } from "svelte/store"; +import type { + App, + +} from './types' + +export const importStore = writable(undefined) \ No newline at end of file diff --git a/frontend/src/lib/components/flows/CreateActionsApp.svelte b/frontend/src/lib/components/flows/CreateActionsApp.svelte new file mode 100644 index 0000000000..d23ba5a9c1 --- /dev/null +++ b/frontend/src/lib/components/flows/CreateActionsApp.svelte @@ -0,0 +1,48 @@ + + + +
+ + New App (alpha) + + drawer?.toggleDrawer?.()}> + Import from raw JSON + + +
+ + + + drawer?.toggleDrawer?.()}> + + + + + + diff --git a/frontend/src/lib/components/flows/CreateActionsFlow.svelte b/frontend/src/lib/components/flows/CreateActionsFlow.svelte index 58a6ec53b5..cd8942a97c 100644 --- a/frontend/src/lib/components/flows/CreateActionsFlow.svelte +++ b/frontend/src/lib/components/flows/CreateActionsFlow.svelte @@ -23,7 +23,12 @@
- + New Flow diff --git a/frontend/src/lib/components/flows/header/FlowImportExportMenu.svelte b/frontend/src/lib/components/flows/header/FlowImportExportMenu.svelte index d9ed4f047c..91ef62b783 100644 --- a/frontend/src/lib/components/flows/header/FlowImportExportMenu.svelte +++ b/frontend/src/lib/components/flows/header/FlowImportExportMenu.svelte @@ -27,7 +27,7 @@
- jsonViewerDrawer.toggleDrawer()}> + jsonViewerDrawer.toggleDrawer()}> {#if $flowStore} {/if} diff --git a/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte b/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte index 61652ad7f7..f93f2701e9 100644 --- a/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte +++ b/frontend/src/lib/components/sidebar/WorkspaceMenu.svelte @@ -1,5 +1,5 @@ + +{#if value} +
+ +
+{/if} diff --git a/frontend/src/routes/(root)/(logged)/apps/edit/[...path]/+page.js b/frontend/src/routes/(root)/(logged)/apps/edit/[...path]/+page.js new file mode 100644 index 0000000000..1ae579cdc7 --- /dev/null +++ b/frontend/src/routes/(root)/(logged)/apps/edit/[...path]/+page.js @@ -0,0 +1,5 @@ +export function load({ params }) { + return { + stuff: { title: `Edit App ${params.path}` } + } +} diff --git a/frontend/src/routes/(root)/(logged)/apps/edit/[...path]/+page.svelte b/frontend/src/routes/(root)/(logged)/apps/edit/[...path]/+page.svelte index f60cc82d4f..ce73ec5355 100644 --- a/frontend/src/routes/(root)/(logged)/apps/edit/[...path]/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/apps/edit/[...path]/+page.svelte @@ -11,8 +11,6 @@ let path = $page.params.path let nodraft = $page.url.searchParams.get('nodraft') - const initialState = nodraft ? undefined : localStorage.getItem('app') - let stateLoadedFromUrl = initialState != undefined ? decodeState(initialState) : undefined if (nodraft) { goto('?', { replaceState: true }) @@ -21,15 +19,16 @@ let loading = true async function loadApp(): Promise { loading = true - console.log(stateLoadedFromUrl) - app = - stateLoadedFromUrl != undefined && stateLoadedFromUrl?.path == path - ? stateLoadedFromUrl - : await AppService.getAppByPath({ - path, - workspace: $workspaceStore! - }) + app = await AppService.getAppByPath({ + path, + workspace: $workspaceStore! + }) + const initialState = nodraft ? undefined : localStorage.getItem('app') + let stateLoadedFromUrl = initialState != undefined ? decodeState(initialState) : undefined + if (stateLoadedFromUrl) { + app.value = stateLoadedFromUrl + } loading = false $dirtyStore = false } diff --git a/frontend/src/routes/(root)/(logged)/flows/add/+page.svelte b/frontend/src/routes/(root)/(logged)/flows/add/+page.svelte index bd90754bbf..4b81908ac4 100644 --- a/frontend/src/routes/(root)/(logged)/flows/add/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/flows/add/+page.svelte @@ -1,4 +1,5 @@