+
diff --git a/packages/builder/src/components/integration/QueryViewerBindingBuilder.svelte b/packages/builder/src/components/integration/QueryViewerBindingBuilder.svelte
index 049eecafcc..3d74e3f6b6 100644
--- a/packages/builder/src/components/integration/QueryViewerBindingBuilder.svelte
+++ b/packages/builder/src/components/integration/QueryViewerBindingBuilder.svelte
@@ -1,9 +1,9 @@
-
-
- Bindings
-
-
- {#if !bindable}
- Bindings come in two parts: the binding name, and a default/fallback
- value. These bindings can be used as Handlebars expressions throughout the
- query.
- {:else}
- Enter a value for each binding. The default values will be used for any
- values left blank.
- {/if}
-
-
-
-
-
-
-
+
diff --git a/packages/builder/src/components/integration/QueryViewerSavePromptModal.svelte b/packages/builder/src/components/integration/QueryViewerSavePromptModal.svelte
new file mode 100644
index 0000000000..691d2121cc
--- /dev/null
+++ b/packages/builder/src/components/integration/QueryViewerSavePromptModal.svelte
@@ -0,0 +1,53 @@
+
+
+
{
+ navigateTo = null
+ }}
+>
+ {
+ try {
+ await attemptSave()
+ override = true
+ resumeNavigation()
+ } catch (e) {
+ navigateTo = false
+ }
+ }}
+ onCancel={async () => {
+ override = true
+ resumeNavigation()
+ }}
+ >
+ Leaving this section will mean losing any changes to your query
+
+
diff --git a/packages/builder/src/components/integration/QueryViewerSidePanel/JSONPanel.svelte b/packages/builder/src/components/integration/QueryViewerSidePanel/JSONPanel.svelte
new file mode 100644
index 0000000000..433b8d41ab
--- /dev/null
+++ b/packages/builder/src/components/integration/QueryViewerSidePanel/JSONPanel.svelte
@@ -0,0 +1,22 @@
+
+
+
+
+
diff --git a/packages/builder/src/components/integration/QueryViewerSidePanel/PreviewPanel.svelte b/packages/builder/src/components/integration/QueryViewerSidePanel/PreviewPanel.svelte
new file mode 100644
index 0000000000..f379ad18a1
--- /dev/null
+++ b/packages/builder/src/components/integration/QueryViewerSidePanel/PreviewPanel.svelte
@@ -0,0 +1,33 @@
+
+
+
+
+
diff --git a/packages/builder/src/components/integration/QueryViewerSidePanel/SchemaPanel.svelte b/packages/builder/src/components/integration/QueryViewerSidePanel/SchemaPanel.svelte
new file mode 100644
index 0000000000..37aa1c4e0d
--- /dev/null
+++ b/packages/builder/src/components/integration/QueryViewerSidePanel/SchemaPanel.svelte
@@ -0,0 +1,29 @@
+
+
+{#key schema}
+
+{/key}
diff --git a/packages/builder/src/components/integration/QueryViewerSidePanel/index.svelte b/packages/builder/src/components/integration/QueryViewerSidePanel/index.svelte
new file mode 100644
index 0000000000..995d98e5ac
--- /dev/null
+++ b/packages/builder/src/components/integration/QueryViewerSidePanel/index.svelte
@@ -0,0 +1,66 @@
+
+
+
+
+
+ {#each tabs as tab}
+
{
+ activeTab = tab
+ }}
+ >
+ {tab}
+
+ {/each}
+
+
+
+ {#if activeTab === "JSON"}
+
+ {:else if activeTab === "Schema"}
+
+ {:else}
+
+ {/if}
+
+
+
+
diff --git a/packages/builder/src/components/integration/index.svelte b/packages/builder/src/components/integration/index.svelte
index e503406aaa..453179f25b 100644
--- a/packages/builder/src/components/integration/index.svelte
+++ b/packages/builder/src/components/integration/index.svelte
@@ -23,6 +23,7 @@
export let schema
export let editable = true
export let height = 500
+ export let noLabel = false
let stepEditors = []
@@ -75,7 +76,7 @@
{#if schema.type === QueryTypes.SQL}
{
let query = {
+ name: "Untitled query",
+ transformer: "return data",
+ schema: {},
datasourceId: $params.datasourceId,
parameters: [],
fields: {},