@@ -5,11 +5,19 @@ import * as path from 'path';
55
66const namespaceSeparator = ':' ;
77
8- export class Tasks implements vscode . TreeDataProvider < elements . TreeItem > {
8+ export class TaskTreeDataProvider implements vscode . TreeDataProvider < elements . TreeItem > {
99 private _onDidChangeTreeData : vscode . EventEmitter < elements . TaskTreeItem | undefined > = new vscode . EventEmitter < elements . TaskTreeItem | undefined > ( ) ;
1010 readonly onDidChangeTreeData : vscode . Event < elements . TaskTreeItem | undefined > = this . _onDidChangeTreeData . event ;
1111 private _taskfiles ?: models . Taskfile [ ] ;
1212
13+ constructor (
14+ private nestingEnabled : boolean = false
15+ ) { }
16+
17+ setTreeNesting ( enabled : boolean ) {
18+ this . nestingEnabled = enabled ;
19+ }
20+
1321 getTreeItem ( element : elements . TreeItem ) : vscode . TreeItem {
1422 return element ;
1523 }
@@ -74,7 +82,7 @@ export class Tasks implements vscode.TreeDataProvider<elements.TreeItem> {
7482
7583 // Check if the task has a namespace
7684 // If it does, add it to the namespace/tasks map
77- if ( namespacePath !== "" ) {
85+ if ( this . nestingEnabled && namespacePath !== "" ) {
7886 let namespaceLabel = getNamespaceLabel ( namespacePath ) ;
7987 let namespaceTreeItem = namespaceTreeItems . get ( namespaceLabel ) ?? new elements . NamespaceTreeItem (
8088 namespaceLabel ,
@@ -89,7 +97,7 @@ export class Tasks implements vscode.TreeDataProvider<elements.TreeItem> {
8997
9098 // Otherwise, create a tree item for the task
9199 else {
92- let taskLabel = getTaskLabel ( task ) ;
100+ let taskLabel = getTaskLabel ( task , this . nestingEnabled ) ;
93101 let taskTreeItem = new elements . TaskTreeItem (
94102 taskLabel ,
95103 workspace ,
@@ -138,8 +146,10 @@ export class Tasks implements vscode.TreeDataProvider<elements.TreeItem> {
138146 return workspaceTreeItems ;
139147 }
140148
141- refresh ( taskfiles : models . Taskfile [ ] ) : void {
142- this . _taskfiles = taskfiles ;
149+ refresh ( taskfiles ?: models . Taskfile [ ] ) : void {
150+ if ( taskfiles ) {
151+ this . _taskfiles = taskfiles ;
152+ }
143153 this . _onDidChangeTreeData . fire ( undefined ) ;
144154 }
145155}
@@ -174,9 +184,9 @@ function getNamespaceLabel(namespacePath: string): string {
174184 return namespacePath . substring ( 0 , namespacePath . indexOf ( namespaceSeparator ) ) ;
175185}
176186
177- function getTaskLabel ( task : models . Task ) : string {
187+ function getTaskLabel ( task : models . Task , nestingEnabled : boolean ) : string {
178188 // If the task has no namespace, return the task's name
179- if ( ! task . name . includes ( namespaceSeparator ) ) {
189+ if ( ! task . name . includes ( namespaceSeparator ) || ! nestingEnabled ) {
180190 return task . name ;
181191 }
182192 // Return the task's name by removing the namespace
0 commit comments