diff --git a/src/components/queryBuilder/BuilderHost.vue b/src/components/queryBuilder/BuilderHost.vue
index 55938a4..cbe420e 100644
--- a/src/components/queryBuilder/BuilderHost.vue
+++ b/src/components/queryBuilder/BuilderHost.vue
@@ -32,7 +32,7 @@
>
@@ -54,7 +54,7 @@
class="p-1"
:class="typeof value == 'object' ? 'bg-gray-200' : ''"
title="Visual Builder"
- @click="queryMode = 'builder'"
+ @click="changeMode('builder')"
>
@@ -62,7 +62,7 @@
class="p-1"
:class="typeof value == 'string' ? 'bg-gray-200' : ''"
title="SQL Editor"
- @click="queryMode = 'editor'"
+ @click="changeMode('editor')"
>
@@ -116,21 +116,9 @@ export default defineComponent({
},
emits: ["update:model-value", "query:run", "query:save", "results:export", "results:clear"],
watch: {
- queryMode() {
- if (this.queryMode == "builder") {
- this.value = {
- select: "*",
- table: "",
- where: [],
- join: [],
- orderBy: [],
- };
- } else {
- this.value = "";
- }
- this.activeQueryId = undefined;
- },
activeQueryId() {
+ if (this.activeQueryId == undefined) return;
+
let query = this.queries.find((t) => t.id == this.activeQueryId)?.query;
if (query != undefined) {
if (typeof query == "string") {
@@ -188,6 +176,22 @@ export default defineComponent({
showStructure() {
this.openModal(markRaw(defineAsyncComponent(() => import("@/components/queryBuilder/StructureModal.vue"))));
},
+ changeMode(mode: "editor" | "builder") {
+ this.queryMode = mode;
+
+ this.activeQueryId = undefined;
+ if (this.queryMode == "builder") {
+ this.value = {
+ select: "*",
+ table: "",
+ where: [],
+ join: [],
+ orderBy: [],
+ };
+ } else {
+ this.value = "";
+ }
+ },
},
});