|
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){ |
|