|
1 | 1 | // Copyright (c) jdneo. All rights reserved.
|
2 | 2 | // Licensed under the MIT license.
|
3 | 3 |
|
| 4 | +import*asosfrom"os"; |
4 | 5 | import*aspathfrom"path";
|
5 | 6 | import*asvscodefrom"vscode";
|
6 | 7 | import*aslistfrom"../commands/list";
|
@@ -46,6 +47,7 @@ export class LeetCodeTreeDataProvider implements vscode.TreeDataProvider<LeetCod
|
46 | 47 | constidPrefix:number=Date.now();
|
47 | 48 | return{
|
48 | 49 | label:element.isProblem ?`[${element.id}]${element.name}` :element.name,
|
| 50 | +tooltip:this.getSubCategoryTooltip(element), |
49 | 51 | id:`${idPrefix}.${element.parentName}.${element.id}`,
|
50 | 52 | collapsibleState:element.isProblem ?vscode.TreeItemCollapsibleState.None :vscode.TreeItemCollapsibleState.Collapsed,
|
51 | 53 | contextValue:element.isProblem ?"problem" :element.id.toLowerCase(),
|
@@ -168,6 +170,36 @@ export class LeetCodeTreeDataProvider implements vscode.TreeDataProvider<LeetCod
|
168 | 170 | }
|
169 | 171 | }
|
170 | 172 |
|
| 173 | +privategetSubCategoryTooltip(element:LeetCodeNode):string{ |
| 174 | +// return '' unless it is a sub-category node |
| 175 | +if(element.isProblem||!this.treeData[element.parentName]){ |
| 176 | +return""; |
| 177 | +} |
| 178 | + |
| 179 | +constproblems:IProblem[]=this.treeData[element.parentName].get(element.id); |
| 180 | + |
| 181 | +letacceptedNum:number=0; |
| 182 | +letfailedNum:number=0; |
| 183 | +for(constprobofproblems){ |
| 184 | +switch(prob.state){ |
| 185 | +caseProblemState.AC: |
| 186 | +acceptedNum++; |
| 187 | +break; |
| 188 | +caseProblemState.NotAC: |
| 189 | +failedNum++; |
| 190 | +break; |
| 191 | +default: |
| 192 | +break; |
| 193 | +} |
| 194 | +} |
| 195 | + |
| 196 | +return[ |
| 197 | +`AC:${acceptedNum}`, |
| 198 | +`Failed:${failedNum}`, |
| 199 | +`Total:${problems.length}`, |
| 200 | +].join(os.EOL); |
| 201 | +} |
| 202 | + |
171 | 203 | privateaddProblemToTreeData(problem:IProblem):void{
|
172 | 204 | this.putProblemToMap(this.treeData.Difficulty,problem.difficulty,problem);
|
173 | 205 | for(consttagofproblem.tags){
|
|