Skip to content

Commit a669a44

Browse files
author
Aasim Khan
committed
Enhance tooltip formatting for background tasks to display elapsed time in HH:MM:SS format
1 parent a900c9c commit a669a44

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

extensions/mssql/src/backgroundTasks/backgroundTaskNode.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@ function createTaskContextValue(task: BackgroundTaskEntry): string {
7373

7474
function createTaskTooltip(task: BackgroundTaskEntry): string | vscode.MarkdownString {
7575
const status = toBackgroundTaskStateDisplayString(task.state);
76-
const elapsedTime = localizedConstants.backgroundTaskElapsedTime(formatElapsedTime(task));
76+
const elapsedTime = localizedConstants.backgroundTaskElapsedTime(
77+
formatTooltipElapsedTime(task),
78+
);
7779

7880
if (typeof task.tooltip === "string") {
7981
const sections = [task.tooltip, status];
@@ -139,6 +141,29 @@ function formatElapsedTime(task: BackgroundTaskEntry): string {
139141
return localizedConstants.backgroundTaskElapsedSeconds(totalSeconds);
140142
}
141143

144+
function formatTooltipElapsedTime(task: BackgroundTaskEntry): string {
145+
const elapsedTimeMs = getBackgroundTaskElapsedTimeMs(task);
146+
if (elapsedTimeMs < 60_000) {
147+
return formatElapsedTime(task);
148+
}
149+
150+
const totalSeconds = Math.floor(elapsedTimeMs / 1000);
151+
const seconds = totalSeconds % 60;
152+
const totalMinutes = Math.floor(totalSeconds / 60);
153+
const minutes = totalMinutes % 60;
154+
const totalHours = Math.floor(totalMinutes / 60);
155+
156+
if (totalHours > 0) {
157+
return `${padClockSegment(totalHours)}:${padClockSegment(minutes)}:${padClockSegment(seconds)}`;
158+
}
159+
160+
return `${padClockSegment(totalMinutes)}:${padClockSegment(seconds)}`;
161+
}
162+
163+
function padClockSegment(value: number): string {
164+
return value.toString().padStart(2, "0");
165+
}
166+
142167
function getDefaultIconForState(
143168
state: BackgroundTaskState,
144169
): vscode.ThemeIcon | vscode.Uri | { light: vscode.Uri; dark: vscode.Uri } {

extensions/mssql/test/unit/backgroundTasksProvider.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ suite("Background Tasks Provider Tests", () => {
148148

149149
node = provider.getChildren()[0] as BackgroundTaskNode;
150150
expect(node.description).to.equal("1m 5s");
151-
expect(node.tooltip).to.equal("Working\n\nIn progress\n\nElapsed time: 1m 5s");
151+
expect(node.tooltip).to.equal("Working\n\nIn progress\n\nElapsed time: 01:05");
152152
});
153153

154154
test("clearFinished removes only completed tasks", () => {

0 commit comments

Comments
 (0)