在panel中添加了Checker相关的选项

This commit is contained in:
Pan Qiancheng 2024-11-02 15:22:28 +08:00
parent 16bd58ca22
commit dc7254fae2
2 changed files with 54 additions and 10 deletions

View File

@ -12,7 +12,11 @@ import {
getTriggerCountByEntity,
subscribeTrigger,
} from '../utils/triggers';
import { TriggerInfo } from '../types';
import { CheckerInfo, TriggerInfo } from '../types';
import {
getCheckerCountByEntity,
getCheckersInfoByEntity,
} from '../utils/checkers';
class OakTreeDataProvider implements vscode.TreeDataProvider<TreeItem> {
private disposeGlobal: (() => void) | null = null;
@ -106,17 +110,10 @@ class OakTreeDataProvider implements vscode.TreeDataProvider<TreeItem> {
const children: TreeItem[] = [];
children.push(new ComponentsItem(element.getEntityName()));
children.push(new TriggersItem(element.getEntityName()));
children.push(new CheckersItem(element.getEntityName()));
return children;
}
if (element instanceof TriggersItem) {
// return entityConfig
// .getEntityDesc(element.getEntityName())
// .projectionList.map((projection) => {
// return new TreeItem(
// projection,
// vscode.TreeItemCollapsibleState.None
// );
// });
return getTrigersInfoByEntity(element.getEntityName()).map(
(trigger) => {
return new TriggerItem(
@ -126,6 +123,16 @@ class OakTreeDataProvider implements vscode.TreeDataProvider<TreeItem> {
}
);
}
if (element instanceof CheckersItem) {
return getCheckersInfoByEntity(element.getEntityName()).map(
(checker) => {
return new CheckerItem(
checker,
vscode.TreeItemCollapsibleState.None
);
}
);
}
if (element instanceof ComponentsItem) {
return componentConfig
.getEntityComponents(element.getEntityName())
@ -213,6 +220,8 @@ export class ComponentItem extends TreeItem {
}
}
// Trigger相关的选项
export class TriggersItem extends TreeItem {
constructor(public readonly entity: string) {
const count = getTriggerCountByEntity(entity);
@ -246,6 +255,41 @@ export class TriggerItem extends TreeItem {
}
}
// Checker相关的选项
export class CheckersItem extends TreeItem {
constructor(public readonly entity: string) {
const count = getCheckerCountByEntity(entity);
super(
`Checkers (${count})`,
vscode.TreeItemCollapsibleState.Collapsed,
entity
);
this.contextValue = 'checkersItem'; // 添加这行,用于识别右键菜单项
}
}
export class CheckerItem extends TreeItem {
constructor(
public readonly checker: CheckerInfo,
public readonly collapsibleState: vscode.TreeItemCollapsibleState
) {
super(`${checker.action.join(',')}`, collapsibleState);
this.contextValue = 'checkerItem'; // 添加这行,用于识别右键菜单项
// 命令点击后跳转到指定文件的指定位置
const args = {
filePath: checker.path,
start: checker.pos.start,
end: checker.pos.end,
};
this.command = {
command: 'oak-assistant.jumpToPosition',
title: '定位到文件',
arguments: [args],
};
}
}
export const createOakTreePanel = () => {
const treeDataProvider = new OakTreeDataProvider();
const treeView = vscode.window.createTreeView('oak-entities', {

View File

@ -1061,7 +1061,7 @@ export const getCheckerCountByEntity = (entity: string): number => {
* @param entity entity名称
* @returns checker信息
*/
export const getTrigersInfoByEntity = (entity: string): CheckerInfo[] => {
export const getCheckersInfoByEntity = (entity: string): CheckerInfo[] => {
return checkers
.filter((t) => t.entity === entity)
.map((t) => {