Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 0 additions & 50 deletions src/views/jobManager/jobLog.ts

This file was deleted.

20 changes: 8 additions & 12 deletions src/views/jobManager/jobManagerView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import { sqlLanguageStatus } from "../../language/providers";
import { setCancelButtonVisibility } from "../results";
import { ConfigGroup, ConfigManager } from "./ConfigManager";
import { editJobUi } from "./editJob";
import { displayJobLog } from "./jobLog";
import { SelfValue, selfCodesMap } from "./selfCodes/nodes";
import { SelfCodesQuickPickItem } from "./selfCodes/selfCodesBrowser";
import { updateStatusBar } from "./statusBar";
Expand Down Expand Up @@ -89,21 +88,18 @@ export class JobManagerView implements TreeDataProvider<any> {
}),

vscode.commands.registerCommand(`vscode-db2i.jobManager.viewJobLog`, async (node?: SQLJobItem) => {
const id = node ? node.label as string : undefined;
Comment thread
buzzia2001 marked this conversation as resolved.
let selected = id ? JobManager.getJob(id) : JobManager.getSelection();
if (selected) {
displayJobLog(selected);
const selected = JobManager.getSelection();
if (selected?.job.id) {
await vscode.commands.executeCommand('code-for-ibmi.showJobLog', selected.job.id);
}
}),

vscode.commands.registerCommand(`vscode-db2i.jobManager.copyJobId`, async (node?: SQLJobItem) => {
if (node) {
const id = node.label as string;
const selected = JobManager.getJob(id);
if (selected?.job.id) {
await env.clipboard.writeText(selected.job.id);
window.showInformationMessage(`Copied ${selected.job.id} to clipboard.`);
}
const id = node ? node.label as string : undefined;
const selected = id ? JobManager.getJob(id) : JobManager.getSelection();
if (selected?.job.id) {
await env.clipboard.writeText(selected.job.id);
window.showInformationMessage(`Copied ${selected.job.id} to clipboard.`);
}
}),

Expand Down
8 changes: 7 additions & 1 deletion src/views/jobManager/statusBar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { MarkdownString, StatusBarAlignment, ThemeColor, window } from "vscode";
import { getInstance } from "../../base";
import { JobManager } from "../../config";
import Statement from "../../database/statement";
import { parseStatusBarColor } from "./statusBarColor";

const item = window.createStatusBarItem(`sqlJob`, StatusBarAlignment.Left);

Expand Down Expand Up @@ -33,6 +34,11 @@ export async function updateStatusBar(options: {newJob?: boolean, canceling?: bo

const job = selected.job;

if (job.id) {
toolTipItems.push(`[SQL Job: \`${job.id}\`](command:vscode-db2i.jobManager.copyJobId)`);
toolTipItems.push(`[$(info) View Job Log](command:vscode-db2i.jobManager.viewJobLog)`);
}

if (job.getNaming() === `sql`) {
toolTipItems.push(`SQL Naming.\n\nCurrent schema: \`${Statement.delimName(await job.getCurrentSchema())}\``);
} else {
Expand All @@ -58,7 +64,6 @@ export async function updateStatusBar(options: {newJob?: boolean, canceling?: bo
}
}

toolTipItems.push(`[$(info) View Job Log](command:vscode-db2i.jobManager.viewJobLog)`);
toolTipItems.push(`[$(edit) Edit Connection Settings](command:vscode-db2i.jobManager.editJobProps)`);
toolTipItems.push(`[$(bracket-error) Edit SELF codes](command:vscode-db2i.jobManager.editSelfCodes)`);
} else {
Expand All @@ -74,6 +79,7 @@ export async function updateStatusBar(options: {newJob?: boolean, canceling?: bo

item.text = text;
item.backgroundColor = backgroundColour;
item.color = parseStatusBarColor((connection.getConfig() as any).statusBarColor);

item.show();
} else {
Expand Down
19 changes: 19 additions & 0 deletions src/views/jobManager/statusBarColor.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const HEX_COLOR = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i;

/** The colour picker has no empty state, so black is what it reports when no colour was ever picked. */
const NO_COLOR = `#000000`;

/**
* Normalizes a status bar colour into `#rrggbb`; returns undefined when it's empty, invalid or black,
* which leaves the status bar item with the colour of the current theme.
*/
export function parseStatusBarColor(color?: string) {
Comment thread
buzzia2001 marked this conversation as resolved.
Outdated
const trimmed = (color || ``).trim();
if (!HEX_COLOR.test(trimmed)) {
return undefined;
}

const hex = trimmed.substring(1);
const normalized = `#${hex.length === 3 ? hex.split(``).map(channel => channel + channel).join(``) : hex}`.toLowerCase();
return normalized === NO_COLOR ? undefined : normalized;
}
Loading