Skip to content

Commit

Permalink
Merge pull request #40 from czfadmin/feat/add-sort
Browse files Browse the repository at this point in the history
feat(sort): 增加书签组内排序
  • Loading branch information
czfadmin committed May 12, 2024
2 parents c630e8a + 50f9dc1 commit 5279e02
Show file tree
Hide file tree
Showing 36 changed files with 1,334 additions and 509 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Change Log

## 0.0.34

### Patch Changes

- 支持自定义分组排序功能

## 0.0.33

### Patch Changes
Expand Down
66 changes: 65 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "bookmark-manager",
"displayName": "Bookmark Manager (BM)",
"description": "Simple and easy to use bookmark manager",
"version": "0.0.33",
"version": "0.0.34",
"engines": {
"vscode": "^1.82.0"
},
Expand Down Expand Up @@ -271,6 +271,30 @@
"title": "%bookmark-manager.changeSetting%",
"icon": "$(bookmark)",
"category": "Bookmark Manager (BM)"
},
{
"command": "bookmark-manager.revealInExplorer",
"title": "%bookmark-manager.revealInExplorer%",
"icon": "$(bookmark)",
"category": "Bookmark Manager (BM)"
},
{
"command": "bookmark-manager.sortedByCustom",
"title": "%bookmark-manager.sortedByCustom%",
"icon": "$(bookmark)",
"category": "Bookmark Manager (BM)"
},
{
"command": "bookmark-manager.sortedByLineNumber",
"title": "%bookmark-manager.sortedByLineNumber%",
"icon": "$(bookmark)",
"category": "Bookmark Manager (BM)"
},
{
"command": "bookmark-manager.sortedByCreateTime",
"title": "%bookmark-manager.sortedByCreateTime%",
"icon": "$(bookmark)",
"category": "Bookmark Manager (BM)"
}
],
"views": {
Expand Down Expand Up @@ -437,6 +461,24 @@
"type": "boolean",
"default": false,
"description": "%bookmark-manager.autoSwitchSingleToMultiWithLineWrap%"
},
"bookmark-manager.ignoreFolders": {
"type": "array",
"default": [],
"description": "%bookmark-manager.ignoreFolders%"
},
"bookmark-manager.logLevel": {
"type": "string",
"default": "Warning",
"enum": [
"Off",
"Trace",
"Debug",
"Info",
"Warning",
"Error"
],
"description": "%bookmark-manager.logLevel%"
}
}
},
Expand Down Expand Up @@ -493,6 +535,20 @@
"group": "bookmarksActionsGroup2@1"
}
],
"bookmark-manager.codeSortedSubmenu": [
{
"command": "bookmark-manager.sortedByLineNumber",
"group": "group@1"
},
{
"command": "bookmark-manager.sortedByCustom",
"group": "group@2"
},
{
"command": "bookmark-manager.sortedByCreateTime",
"group": "group@3"
}
],
"bookmark-manager.codeGroupSubmenu": [
{
"command": "bookmark-manager.groupedByDefault",
Expand Down Expand Up @@ -552,6 +608,10 @@
{
"submenu": "bookmark-manager.codeGroupSubmenu",
"when": "view === bookmark-manager"
},
{
"submenu": "bookmark-manager.codeSortedSubmenu",
"when": "view === bookmark-manager"
}
],
"view/item/context": [
Expand Down Expand Up @@ -690,6 +750,10 @@
{
"id": "bookmark-manager.codeGroupSubmenu",
"label": "%bookmark-manager.group%"
},
{
"id": "bookmark-manager.codeSortedSubmenu",
"label": "%bookmark-manager.sortMenu%"
}
],
"keybindings": {
Expand Down
9 changes: 8 additions & 1 deletion package.nls.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,5 +64,12 @@
"bookmark-manager.changeBookmarkGroup": "Change group",
"bookmark-manager.listBookmarksInSelectedGroup": "List the bookmarks in the selected group",
"bookmark-manager.showWalkthroughs": "Show walkthroughs",
"bookmark-manager.changeSetting": "Change setting"
"bookmark-manager.changeSetting": "Change setting",
"bookmark-manager.ignoreFolders": "When this is set, the creation of the storage file `bookmark-manager.json` in the `.vscode` directory under the folder directory in this array will be automatically ignored.",
"bookmark-manager.logLevel": "Log level",
"bookmark-manager.revealInExplorer": "Reveal in explorer",
"bookmark-manager.sortMenu": "Sort",
"bookmark-manager.sortedByCustom": "Sorted by custom",
"bookmark-manager.sortedByLineNumber": "Sorted by line number",
"bookmark-manager.sortedByCreateTime": "Sorted by create time"
}
9 changes: 8 additions & 1 deletion package.nls.zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,5 +64,12 @@
"bookmark-manager.changeBookmarkGroup": "改变书签分组",
"bookmark-manager.listBookmarksInSelectedGroup": "列出已选择分组中的书签列表",
"bookmark-manager.showWalkthroughs": "显示交互指南",
"bookmark-manager.changeSetting": "更改设置"
"bookmark-manager.changeSetting": "更改设置",
"bookmark-manager.ignoreFolders": "当设置此项时, 将自动忽略在此数组中的文件夹目录下的`.vscode`目录中创建存储文件`bookmark-manager.json`",
"bookmark-manager.logLevel": "日志级别",
"bookmark-manager.revealInExplorer": "在Explorer中显示",
"bookmark-manager.sortMenu": "排序方式",
"bookmark-manager.sortedByCustom": "自定义排序",
"bookmark-manager.sortedByLineNumber": "行号",
"bookmark-manager.sortedByCreateTime": "创建时间"
}
7 changes: 3 additions & 4 deletions src/bootstrap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import BookmarksController from './controllers/BookmarksController';
import UniversalBookmarkController from './controllers/UniversalBookmarkController';
import {BookmarksTreeView} from './views/BookmarksTreeView';
import {UniversalBookmarksTreeView} from './views/UniversalBookmarksTreeView';
import {EXTENSION_ID} from './constants';
import {
updateCursorChangeListener,
updateChangeActiveTextEditorListener,
Expand All @@ -12,8 +11,6 @@ import {
updateFilesRenameAndDeleteListeners,
updateTextEditorSelectionListener,
} from './events';
import {registerTelemetryLogger} from './utils';
import logger from './utils/logger';

import {
ServiceManager,
Expand All @@ -22,6 +19,8 @@ import {
} from './services/ServiceManager';

import registerAllBookmarksCommands from './commands';
import {LoggerService, registerTelemetryLogger} from './services';
import {EXTENSION_ID} from './constants';

let controllerManager: {
bookmarks?: BookmarksController;
Expand Down Expand Up @@ -77,7 +76,7 @@ export default async function bootstrap(context: ExtensionContext) {
return;
}
context.subscriptions.push(registerTelemetryLogger());

const logger = new LoggerService('Bootstrap');
logger.log(`${EXTENSION_ID} is now active!`);
try {
const sm = await initServiceManager(context, updateEverything);
Expand Down
26 changes: 13 additions & 13 deletions src/commands/bookmark/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@ import {
import {resolveBookmarkController} from '../../bootstrap';
import resolveServiceManager from '../../services/ServiceManager';
import {BookmarksGroupedByColorType, IBookmark} from '../../stores';
import {BookmarksGroupedByFileType, LineBookmarkContext} from '../../types';
import {
BookmarksGroupedByFileType,
BookmarkTypeEnum,
LineBookmarkContext,
} from '../../types';
import {
checkIfBookmarksIsInCurrentEditor,
chooseBookmarkColor,
Expand All @@ -30,7 +34,7 @@ import {
* 开启行书签, 使用默认颜色且无标签等相关信息
*/
export function toggleLineBookmark(args: LineBookmarkContext) {
toggleBookmark(args, {type: 'line'});
toggleBookmark(args, {type: BookmarkTypeEnum.LINE});
}

/**
Expand All @@ -50,7 +54,7 @@ export async function toggleLineBookmarkWithLabel(
}
toggleBookmark(context, {
label,
type: 'line',
type: BookmarkTypeEnum.LINE,
});
}

Expand All @@ -60,7 +64,7 @@ export async function toggleLineBookmarkWithLabel(
export function toggleLineBookmarkWithColor(context: LineBookmarkContext) {
toggleBookmark(context, {
withColor: true,
type: 'line',
type: BookmarkTypeEnum.LINE,
});
}

Expand Down Expand Up @@ -111,7 +115,7 @@ export async function editLabel(context: LineBookmarkContext) {
if (!bookmark) {
toggleBookmark(context as LineBookmarkContext | undefined, {
label,
type: 'line',
type: BookmarkTypeEnum.LINE,
});
} else {
bookmark.updateLabel(label);
Expand Down Expand Up @@ -176,10 +180,7 @@ export async function changeBookmarkColor(ctx: LineBookmarkContext) {
if (!controller) {
return;
}
bookmark.updateColor({
...bookmark.customColor,
name: newColor,
});
bookmark.updateColor(newColor);
}

export async function changeBookmarkColorName(ctx: LineBookmarkContext) {
Expand All @@ -205,10 +206,7 @@ export async function changeBookmarkColorName(ctx: LineBookmarkContext) {
if (!controller) {
return;
}
bookmark.updateColor({
...bookmark.customColor,
name: newColorName,
});
bookmark.updateColor(newColorName);
}

/**
Expand Down Expand Up @@ -361,3 +359,5 @@ export function showWalkthroughs(args: any) {
'@ext:czfadmin.bookmark-manager',
);
}

export function revealInExplorer(args: any) {}
13 changes: 6 additions & 7 deletions src/commands/bookmark/group.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {resolveBookmarkController} from '../../bootstrap';
import {DEFAULT_BOOKMARK_COLOR} from '../../constants';
import {DEFAULT_BOOKMARK_GROUP_ID} from '../../constants/bookmark';
import {IBookmarkGroup} from '../../stores';
import {BookmarksGroupedByCustomType} from '../../types';
import {BookmarksGroupedByCustomType, TreeViewGroupEnum} from '../../types';
import {
showGroupQuickPick,
getBookmarkFromCtx,
Expand Down Expand Up @@ -106,7 +106,6 @@ export const BookmarkGroupCommands: IBookmarkCommand[] = [
docs: ` * 通过命令创建分组 * - 可支持自定义分组名称(非按照颜色分组,同时之前未分组的归为Default组) * - 分组拖拽移动 * - 分组拖拽排序`,
callback: async (ctx: IBookmarkCommandContext, args: any) => {
let selectedWorkspaceFolder;
console.log(args);
// 此时从命令面板或者视图顶部的菜单中选择调用此命令,以及当存在多个工作区间, 需要用户选择工作区进行操作.
if (!args || (args && args.contextValue !== 'workspace')) {
selectedWorkspaceFolder = await showWorkspaceFolderQuickPick();
Expand Down Expand Up @@ -139,31 +138,31 @@ export const BookmarkGroupCommands: IBookmarkCommand[] = [
docs: '按颜色分组',
callback: async (ctx: IBookmarkCommandContext, args: any) => {
const controller = resolveBookmarkController();
controller.changeGroupView('color');
controller.changeGroupView(TreeViewGroupEnum.COLOR);
},
},
{
name: 'groupedByDefault',
docs: `默认排序分组`,
callback: async (ctx: IBookmarkCommandContext, args: any) => {
const controller = resolveBookmarkController();
controller.changeGroupView('default');
controller.changeGroupView(TreeViewGroupEnum.DEFAULT);
},
},
{
name: 'groupedByWorkspace',
docs: '按照工作区间分组',
callback: async (ctx: IBookmarkCommandContext, args: any) => {
const controller = resolveBookmarkController();
controller.changeGroupView('workspace');
controller.changeGroupView(TreeViewGroupEnum.WORKSPACE);
},
},
{
name: 'groupedByCustom',
docs: '按照用户自定义分组方式分组, 默认未分组放到 `Default` 组中',
callback: async (ctx: IBookmarkCommandContext, args: any) => {
const controller = resolveBookmarkController();
controller.changeGroupView('custom');
controller.changeGroupView(TreeViewGroupEnum.CUSTOM);
},
},
];
Expand Down Expand Up @@ -213,7 +212,7 @@ export async function listBookmarksInSelectedGroup(args: any) {
const bookmarks =
(
controller.store
.getBookmarksGroupedByCustom as BookmarksGroupedByCustomType[]
.bookmarksGroupedByCustom as BookmarksGroupedByCustomType[]
).find(it => it.id === group.id)?.bookmarks || [];

const selectedBookmark = await showBookmarksQuickPick(bookmarks);
Expand Down
1 change: 1 addition & 0 deletions src/commands/bookmark/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
export * from './group';
export * from './view';
export * from './base';
export * from './sort';
export * from './settings';
18 changes: 18 additions & 0 deletions src/commands/bookmark/sort.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import {resolveBookmarkController} from '../../bootstrap';
import {TreeViewSortedEnum} from '../../types';

const controlller = resolveBookmarkController();
export function sortedByLineNumber(args: any) {
if (!controlller) {return;}
controlller.changeSortType(TreeViewSortedEnum.LINENUMBER);
}

export function sortedByCustom(args: any) {
if (!controlller) {return;}
controlller.changeSortType(TreeViewSortedEnum.CUSTOM);
}

export function sortedByCreateTime(args: any) {
if (!controlller) {return;}
controlller.changeSortType(TreeViewSortedEnum.CREATED_TIME);
}
5 changes: 3 additions & 2 deletions src/commands/bookmark/view.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
import {resolveBookmarkController} from '../../bootstrap';
import {TreeViewStyleEnum} from '../../types';

/**
* 按照树格式展示
*/
export function viewAsTree(args: any) {
const controller = resolveBookmarkController();
controller.changeViewType('tree');
controller.changeViewType(TreeViewStyleEnum.TREE);
}

/**
* 按照列表方式显示
*/
export function viewAsList(args: any) {
const controller = resolveBookmarkController();
controller.changeViewType('list');
controller.changeViewType(TreeViewStyleEnum.LIST);
}
6 changes: 4 additions & 2 deletions src/commands/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import {ExtensionContext} from 'vscode';
import {registerCommand} from '../utils';
import logger from '../utils/logger';
import {LoggerService} from '../services';

const logger = new LoggerService('Commands');

function log(name: string) {
logger.log(`command: ${name} has registered successfully!`);
logger.log(`${name} has registered successfully!`);
}

/**
Expand Down
Loading

0 comments on commit 5279e02

Please sign in to comment.