Add selected and total count to settings description

Signed-off-by: Sanjula Ganepola <sanjulagane@gmail.com>
This commit is contained in:
Sanjula Ganepola
2024-11-16 23:20:31 -05:00
parent 319520c1d2
commit ff1864faf5
11 changed files with 43 additions and 23 deletions

View File

@@ -17,7 +17,7 @@ export class DecorationProvider implements FileDecorationProvider {
badge: '✅',
color: new ThemeColor('GitHubLocalActions.green')
};
} else if (!required && (status === CliStatus.NotInstalled || status === CliStatus.NotRunning|| status === ExtensionStatus.NotActivated)) {
} else if (!required && (status === CliStatus.NotInstalled || status === CliStatus.NotRunning || status === ExtensionStatus.NotActivated)) {
return {
badge: '⚠️',
color: new ThemeColor('GitHubLocalActions.yellow')
@@ -38,5 +38,13 @@ export class DecorationProvider implements FileDecorationProvider {
};
}
}
// else if (uri.scheme === SecretsTreeItem.contextValue || uri.scheme === VariablesTreeItem.contextValue || uri.scheme === InputsTreeItem.contextValue || uri.scheme === RunnersTreeItem.contextValue) {
// const selected = params.get('selected');
// return {
// badge: `${selected}`
// };
// }
}
}

View File

@@ -1,6 +1,6 @@
import { ThemeIcon, TreeItem, TreeItemCollapsibleState, WorkspaceFolder } from "vscode";
import { act } from "../../extension";
import { SettingsManager } from "../../settingsManager";
import { Setting, SettingsManager } from "../../settingsManager";
import { StorageKey } from "../../storageManager";
import { GithubLocalActionsTreeItem } from "../githubLocalActionsTreeItem";
import SettingTreeItem from "./setting";
@@ -8,8 +8,9 @@ import SettingTreeItem from "./setting";
export default class InputsTreeItem extends TreeItem implements GithubLocalActionsTreeItem {
static contextValue = 'githubLocalActions.inputs';
constructor(public workspaceFolder: WorkspaceFolder) {
constructor(public workspaceFolder: WorkspaceFolder, inputs: Setting[]) {
super('Inputs', TreeItemCollapsibleState.Collapsed);
this.description = `${inputs.filter(input => input.selected).length}/${inputs.length}`;
this.contextValue = InputsTreeItem.contextValue;
this.iconPath = new ThemeIcon('record-keys');
}

View File

@@ -1,6 +1,6 @@
import { ThemeIcon, TreeItem, TreeItemCollapsibleState, WorkspaceFolder } from "vscode";
import { act } from "../../extension";
import { SettingsManager } from "../../settingsManager";
import { Setting, SettingsManager } from "../../settingsManager";
import { StorageKey } from "../../storageManager";
import { GithubLocalActionsTreeItem } from "../githubLocalActionsTreeItem";
import SettingTreeItem from "./setting";
@@ -8,8 +8,9 @@ import SettingTreeItem from "./setting";
export default class RunnersTreeItem extends TreeItem implements GithubLocalActionsTreeItem {
static contextValue = 'githubLocalActions.runners';
constructor(public workspaceFolder: WorkspaceFolder) {
constructor(public workspaceFolder: WorkspaceFolder, runners: Setting[]) {
super('Runners', TreeItemCollapsibleState.Collapsed);
this.description = `${runners.filter(runner => runner.selected).length}/${runners.length}`;
this.contextValue = RunnersTreeItem.contextValue;
this.iconPath = new ThemeIcon('server-environment');
}

View File

@@ -1,6 +1,6 @@
import { ThemeIcon, TreeItem, TreeItemCollapsibleState, WorkspaceFolder } from "vscode";
import { act } from "../../extension";
import { SettingsManager } from "../../settingsManager";
import { Setting, SettingsManager } from "../../settingsManager";
import { StorageKey } from "../../storageManager";
import { GithubLocalActionsTreeItem } from "../githubLocalActionsTreeItem";
import SettingTreeItem from "./setting";
@@ -8,8 +8,9 @@ import SettingTreeItem from "./setting";
export default class SecretsTreeItem extends TreeItem implements GithubLocalActionsTreeItem {
static contextValue = 'githubLocalActions.secrets';
constructor(public workspaceFolder: WorkspaceFolder) {
constructor(public workspaceFolder: WorkspaceFolder, secrets: Setting[]) {
super('Secrets', TreeItemCollapsibleState.Collapsed);
this.description = `${secrets.filter(secret => secret.selected).length}/${secrets.length}`;
this.contextValue = SecretsTreeItem.contextValue;
this.iconPath = new ThemeIcon('lock');
}

View File

@@ -50,6 +50,7 @@ export default class SettingsTreeDataProvider implements TreeDataProvider<Github
for await (const [treeItem, state] of event.items) {
await act.settingsManager.editSetting(treeItem.workspaceFolder, { key: treeItem.setting.key, value: treeItem.setting.value, selected: state === TreeItemCheckboxState.Checked, password: treeItem.setting.password }, treeItem.storageKey);
}
this.refresh();
}
async getChildren(element?: GithubLocalActionsTreeItem): Promise<GithubLocalActionsTreeItem[]> {

View File

@@ -1,6 +1,6 @@
import { ThemeIcon, TreeItem, TreeItemCollapsibleState, WorkspaceFolder } from "vscode";
import { act } from "../../extension";
import { SettingsManager } from "../../settingsManager";
import { Setting, SettingsManager } from "../../settingsManager";
import { StorageKey } from "../../storageManager";
import { GithubLocalActionsTreeItem } from "../githubLocalActionsTreeItem";
import SettingTreeItem from "./setting";
@@ -8,8 +8,9 @@ import SettingTreeItem from "./setting";
export default class VariablesTreeItem extends TreeItem implements GithubLocalActionsTreeItem {
static contextValue = 'githubLocalActions.variables';
constructor(public workspaceFolder: WorkspaceFolder) {
constructor(public workspaceFolder: WorkspaceFolder, variables: Setting[]) {
super('Variables', TreeItemCollapsibleState.Collapsed);
this.description = `${variables.filter(variable => variable.selected).length}/${variables.length}`;
this.contextValue = VariablesTreeItem.contextValue;
this.iconPath = new ThemeIcon('symbol-key');
}

View File

@@ -1,4 +1,7 @@
import { ThemeIcon, TreeItem, TreeItemCollapsibleState, WorkspaceFolder } from "vscode";
import { act } from "../../extension";
import { SettingsManager } from "../../settingsManager";
import { StorageKey } from "../../storageManager";
import { GithubLocalActionsTreeItem } from "../githubLocalActionsTreeItem";
import InputsTreeItem from "./inputs";
import RunnersTreeItem from "./runners";
@@ -17,11 +20,15 @@ export default class WorkspaceFolderSettingsTreeItem extends TreeItem implements
async getChildren(): Promise<GithubLocalActionsTreeItem[]> {
const items: GithubLocalActionsTreeItem[] = [];
const secrets = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.secretsRegExp, StorageKey.Secrets, true);
const variables = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.variablesRegExp, StorageKey.Variables, false);
const inputs = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.inputsRegExp, StorageKey.Inputs, false);
const runners = await act.settingsManager.getSetting(this.workspaceFolder, SettingsManager.runnersRegExp, StorageKey.Runners, false);
items.push(...[
new SecretsTreeItem(this.workspaceFolder),
new VariablesTreeItem(this.workspaceFolder),
new InputsTreeItem(this.workspaceFolder),
new RunnersTreeItem(this.workspaceFolder)
new SecretsTreeItem(this.workspaceFolder, secrets),
new VariablesTreeItem(this.workspaceFolder, variables),
new InputsTreeItem(this.workspaceFolder, inputs),
new RunnersTreeItem(this.workspaceFolder, runners)
]);
return items;