在panel中添加了Checker相关的选项
This commit is contained in:
parent
16bd58ca22
commit
dc7254fae2
|
|
@ -12,7 +12,11 @@ import {
|
||||||
getTriggerCountByEntity,
|
getTriggerCountByEntity,
|
||||||
subscribeTrigger,
|
subscribeTrigger,
|
||||||
} from '../utils/triggers';
|
} from '../utils/triggers';
|
||||||
import { TriggerInfo } from '../types';
|
import { CheckerInfo, TriggerInfo } from '../types';
|
||||||
|
import {
|
||||||
|
getCheckerCountByEntity,
|
||||||
|
getCheckersInfoByEntity,
|
||||||
|
} from '../utils/checkers';
|
||||||
|
|
||||||
class OakTreeDataProvider implements vscode.TreeDataProvider<TreeItem> {
|
class OakTreeDataProvider implements vscode.TreeDataProvider<TreeItem> {
|
||||||
private disposeGlobal: (() => void) | null = null;
|
private disposeGlobal: (() => void) | null = null;
|
||||||
|
|
@ -106,17 +110,10 @@ class OakTreeDataProvider implements vscode.TreeDataProvider<TreeItem> {
|
||||||
const children: TreeItem[] = [];
|
const children: TreeItem[] = [];
|
||||||
children.push(new ComponentsItem(element.getEntityName()));
|
children.push(new ComponentsItem(element.getEntityName()));
|
||||||
children.push(new TriggersItem(element.getEntityName()));
|
children.push(new TriggersItem(element.getEntityName()));
|
||||||
|
children.push(new CheckersItem(element.getEntityName()));
|
||||||
return children;
|
return children;
|
||||||
}
|
}
|
||||||
if (element instanceof TriggersItem) {
|
if (element instanceof TriggersItem) {
|
||||||
// return entityConfig
|
|
||||||
// .getEntityDesc(element.getEntityName())
|
|
||||||
// .projectionList.map((projection) => {
|
|
||||||
// return new TreeItem(
|
|
||||||
// projection,
|
|
||||||
// vscode.TreeItemCollapsibleState.None
|
|
||||||
// );
|
|
||||||
// });
|
|
||||||
return getTrigersInfoByEntity(element.getEntityName()).map(
|
return getTrigersInfoByEntity(element.getEntityName()).map(
|
||||||
(trigger) => {
|
(trigger) => {
|
||||||
return new TriggerItem(
|
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) {
|
if (element instanceof ComponentsItem) {
|
||||||
return componentConfig
|
return componentConfig
|
||||||
.getEntityComponents(element.getEntityName())
|
.getEntityComponents(element.getEntityName())
|
||||||
|
|
@ -213,6 +220,8 @@ export class ComponentItem extends TreeItem {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Trigger相关的选项
|
||||||
|
|
||||||
export class TriggersItem extends TreeItem {
|
export class TriggersItem extends TreeItem {
|
||||||
constructor(public readonly entity: string) {
|
constructor(public readonly entity: string) {
|
||||||
const count = getTriggerCountByEntity(entity);
|
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 = () => {
|
export const createOakTreePanel = () => {
|
||||||
const treeDataProvider = new OakTreeDataProvider();
|
const treeDataProvider = new OakTreeDataProvider();
|
||||||
const treeView = vscode.window.createTreeView('oak-entities', {
|
const treeView = vscode.window.createTreeView('oak-entities', {
|
||||||
|
|
|
||||||
|
|
@ -1061,7 +1061,7 @@ export const getCheckerCountByEntity = (entity: string): number => {
|
||||||
* @param entity entity名称
|
* @param entity entity名称
|
||||||
* @returns checker信息
|
* @returns checker信息
|
||||||
*/
|
*/
|
||||||
export const getTrigersInfoByEntity = (entity: string): CheckerInfo[] => {
|
export const getCheckersInfoByEntity = (entity: string): CheckerInfo[] => {
|
||||||
return checkers
|
return checkers
|
||||||
.filter((t) => t.entity === entity)
|
.filter((t) => t.entity === entity)
|
||||||
.map((t) => {
|
.map((t) => {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue