From 2309d48d96829e47cb5a29ed46fec218309e885a Mon Sep 17 00:00:00 2001 From: worksofliam Date: Tue, 5 Mar 2024 12:14:37 -0500 Subject: [PATCH] Improved cancel state Signed-off-by: worksofliam --- src/views/jobManager/statusBar.ts | 8 +++++++- src/views/results/index.ts | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/views/jobManager/statusBar.ts b/src/views/jobManager/statusBar.ts index 0c5838d6..c67c06c7 100644 --- a/src/views/jobManager/statusBar.ts +++ b/src/views/jobManager/statusBar.ts @@ -5,7 +5,7 @@ import { getInstance } from "../../base"; const item = window.createStatusBarItem(`sqlJob`, StatusBarAlignment.Left); -export async function updateStatusBar(options: {newJob?: boolean, executing?: boolean} = {}) { +export async function updateStatusBar(options: {newJob?: boolean, cancelling?: boolean, jobIsBusy?: boolean, executing?: boolean} = {}) { const instance = getInstance(); const connection = instance.getConnection(); @@ -19,6 +19,12 @@ export async function updateStatusBar(options: {newJob?: boolean, executing?: bo if (options.executing) { text = `$(sync~spin) Executing...`; } else + if (options.cancelling) { + text = `$(sync~spin) Cancelling...`; + } else + if (options.jobIsBusy) { + text = `🙁 Job is busy`; + } else if (options.newJob) { text = `$(sync~spin) Spinning up job...`; } else diff --git a/src/views/results/index.ts b/src/views/results/index.ts index 6000a619..a05c6989 100644 --- a/src/views/results/index.ts +++ b/src/views/results/index.ts @@ -8,7 +8,7 @@ import Document from "../../language/sql/document"; import { changedCache } from "../../language/providers/completionItemCache"; import { ParsedEmbeddedStatement, StatementGroup, StatementType } from "../../language/sql/types"; import Statement from "../../language/sql/statement"; -import { ExplainTree, ContextType } from "./explain/nodes"; +import { ExplainTree } from "./explain/nodes"; import { DoveResultsView, ExplainTreeItem } from "./explain/doveResultsView"; import { DoveNodeView, PropertyNode } from "./explain/doveNodeView"; import { DoveTreeDecorationProvider } from "./explain/doveTreeDecorationProvider"; @@ -60,10 +60,15 @@ export function initialise(context: vscode.ExtensionContext) { vscode.commands.registerCommand(`vscode-db2i.statement.cancel`, async () => { const selected = JobManager.getSelection(); if (selected) { + updateStatusBar({cancelling: true}); const cancelled = await selected.job.requestCancel(); if (cancelled) { resultSetProvider.setError(`Statement canceled.`); setCancelButtonVisibility(false); + updateStatusBar(); + } else { + updateStatusBar({jobIsBusy: true}); + setTimeout(() => updateStatusBar(), 2000); } } }),