|
1 | 1 | // Copyright (c) jdneo. All rights reserved.
|
2 | 2 | // Licensed under the MIT license.
|
3 | 3 |
|
| 4 | +import * as os from "os"; |
4 | 5 | import * as path from "path";
|
5 | 6 | import * as vscode from "vscode";
|
6 | 7 | import * as list from "../commands/list";
|
@@ -46,6 +47,7 @@ export class LeetCodeTreeDataProvider implements vscode.TreeDataProvider<LeetCod
|
46 | 47 | const idPrefix: 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 | + private getSubCategoryTooltip(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 | + const problems: IProblem[] = this.treeData[element.parentName].get(element.id); |
| 180 | + |
| 181 | + let acceptedNum: number = 0; |
| 182 | + let failedNum: number = 0; |
| 183 | + for (const prob of problems) { |
| 184 | + switch (prob.state) { |
| 185 | + case ProblemState.AC: |
| 186 | + acceptedNum++; |
| 187 | + break; |
| 188 | + case ProblemState.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 | private addProblemToTreeData(problem: IProblem): void {
|
172 | 204 | this.putProblemToMap(this.treeData.Difficulty, problem.difficulty, problem);
|
173 | 205 | for (const tag of problem.tags) {
|
|
0 commit comments