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 = ""; + } + }, }, });