Skip to content

Commit a2f8587

Browse files
authored
Add option to sort DB panel by language (#2993)
1 parent 30b51d9 commit a2f8587

File tree

4 files changed

+31
-1
lines changed

4 files changed

+31
-1
lines changed

extensions/ql-vscode/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
- Sorted result set filenames now include a hash of the result set name instead of the full name. [#2955](https://github.com/github/vscode-codeql/pull/2955)
66
- The "Install Pack Dependencies" will now only list CodeQL packs located in the workspace. [#2960](https://github.com/github/vscode-codeql/pull/2960)
7+
- Add a command to sort items in the databases view by language. [#2993](https://github.com/github/vscode-codeql/pull/2993)
78

89
## 1.9.2 - 12 October 2023
910

extensions/ql-vscode/package.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -772,6 +772,10 @@
772772
"command": "codeQLDatabases.sortByName",
773773
"title": "Sort by Name"
774774
},
775+
{
776+
"command": "codeQLDatabases.sortByLanguage",
777+
"title": "Sort by Language"
778+
},
775779
{
776780
"command": "codeQLDatabases.sortByDateAdded",
777781
"title": "Sort by Date Added"
@@ -998,10 +1002,15 @@
9981002
"group": "1_databases@0"
9991003
},
10001004
{
1001-
"command": "codeQLDatabases.sortByDateAdded",
1005+
"command": "codeQLDatabases.sortByLanguage",
10021006
"when": "view == codeQLDatabases",
10031007
"group": "1_databases@1"
10041008
},
1009+
{
1010+
"command": "codeQLDatabases.sortByDateAdded",
1011+
"when": "view == codeQLDatabases",
1012+
"group": "1_databases@2"
1013+
},
10051014
{
10061015
"command": "codeQLQueries.createQuery",
10071016
"when": "view == codeQLQueries",
@@ -1499,6 +1508,10 @@
14991508
"command": "codeQLDatabases.sortByName",
15001509
"when": "false"
15011510
},
1511+
{
1512+
"command": "codeQLDatabases.sortByLanguage",
1513+
"when": "false"
1514+
},
15021515
{
15031516
"command": "codeQLDatabases.sortByDateAdded",
15041517
"when": "false"

extensions/ql-vscode/src/common/commands.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ export type LocalDatabasesCommands = {
227227
"codeQLDatabases.chooseDatabaseInternet": () => Promise<void>;
228228
"codeQLDatabases.chooseDatabaseGithub": () => Promise<void>;
229229
"codeQLDatabases.sortByName": () => Promise<void>;
230+
"codeQLDatabases.sortByLanguage": () => Promise<void>;
230231
"codeQLDatabases.sortByDateAdded": () => Promise<void>;
231232

232233
// Database panel context menu

extensions/ql-vscode/src/databases/local-databases-ui.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ import { LanguageContextStore } from "../language-context-store";
5757
enum SortOrder {
5858
NameAsc = "NameAsc",
5959
NameDesc = "NameDesc",
60+
LanguageAsc = "LanguageAsc",
61+
LanguageDesc = "LanguageDesc",
6062
DateAddedAsc = "DateAddedAsc",
6163
DateAddedDesc = "DateAddedDesc",
6264
}
@@ -155,6 +157,10 @@ class DatabaseTreeDataProvider
155157
return db1.name.localeCompare(db2.name, env.language);
156158
case SortOrder.NameDesc:
157159
return db2.name.localeCompare(db1.name, env.language);
160+
case SortOrder.LanguageAsc:
161+
return db1.language.localeCompare(db2.language, env.language);
162+
case SortOrder.LanguageDesc:
163+
return db2.language.localeCompare(db1.language, env.language);
158164
case SortOrder.DateAddedAsc:
159165
return (db1.dateAdded || 0) - (db2.dateAdded || 0);
160166
case SortOrder.DateAddedDesc:
@@ -264,6 +270,7 @@ export class DatabaseUI extends DisposableObject {
264270
"codeQLDatabases.setCurrentDatabase":
265271
this.handleMakeCurrentDatabase.bind(this),
266272
"codeQLDatabases.sortByName": this.handleSortByName.bind(this),
273+
"codeQLDatabases.sortByLanguage": this.handleSortByLanguage.bind(this),
267274
"codeQLDatabases.sortByDateAdded": this.handleSortByDateAdded.bind(this),
268275
"codeQLDatabases.removeDatabase": createMultiSelectionCommand(
269276
this.handleRemoveDatabase.bind(this),
@@ -547,6 +554,14 @@ export class DatabaseUI extends DisposableObject {
547554
}
548555
}
549556

557+
private async handleSortByLanguage() {
558+
if (this.treeDataProvider.sortOrder === SortOrder.LanguageAsc) {
559+
this.treeDataProvider.sortOrder = SortOrder.LanguageDesc;
560+
} else {
561+
this.treeDataProvider.sortOrder = SortOrder.LanguageAsc;
562+
}
563+
}
564+
550565
private async handleSortByDateAdded() {
551566
if (this.treeDataProvider.sortOrder === SortOrder.DateAddedAsc) {
552567
this.treeDataProvider.sortOrder = SortOrder.DateAddedDesc;

0 commit comments

Comments
 (0)