diff --git a/packages/api/src/controllers/sessions.js b/packages/api/src/controllers/sessions.js index 1a7f9fad4..e42844214 100644 --- a/packages/api/src/controllers/sessions.js +++ b/packages/api/src/controllers/sessions.js @@ -54,6 +54,9 @@ module.exports = { this.dispatchMessage(sesid, 'Query execution finished'); } const session = this.opened.find(x => x.sesid == sesid); + if (session.loadingReader_jslid) { + socket.emit(`session-jslid-done-${session.loadingReader_jslid}`); + } if (session.killOnDone) { this.kill({ sesid }); } @@ -124,6 +127,7 @@ module.exports = { const session = this.opened.find(x => x.sesid == sesid); session.killOnDone = true; const jslid = uuidv1(); + session.loadingReader_jslid = jslid; const fileName = queryName && appFolder ? path.join(appdir(), appFolder, `${queryName}.query.sql`) : null; session.subprocess.send({ msgtype: 'executeReader', sql, fileName, jslid }); @@ -131,6 +135,15 @@ module.exports = { return { jslid }; }, + stopLoadingReader_meta: true, + async stopLoadingReader({ jslid }) { + const session = this.opened.find(x => x.loadingReader_jslid == jslid); + if (session) { + this.kill({ sesid: session.sesid }); + } + return true; + }, + // cancel_meta: true, // async cancel({ sesid }) { // const session = this.opened.find((x) => x.sesid == sesid); diff --git a/packages/types/index.d.ts b/packages/types/index.d.ts index 6b0174db4..9de4b755f 100644 --- a/packages/types/index.d.ts +++ b/packages/types/index.d.ts @@ -20,6 +20,7 @@ export interface OpenedSession { conid: string; database: string; killOnDone?: boolean; + loadingReader_jslid: string; subprocess: ChildProcess; } diff --git a/packages/web/src/tabs/QueryDataTab.svelte b/packages/web/src/tabs/QueryDataTab.svelte index 4c1b794c1..227414ec6 100644 --- a/packages/web/src/tabs/QueryDataTab.svelte +++ b/packages/web/src/tabs/QueryDataTab.svelte @@ -1,16 +1,35 @@ @@ -49,6 +106,7 @@ {/if} +