JMatrixPlatform 命令面板:多模块系统导航优化
像 JMatrixPlatform 这样的多模块系统常常面临 UI 过载问题:数百个命令、按钮和标签页让导航变得异常繁琐,即便是管理员也深感头疼。我们借鉴 VSCode 的命令面板理念,推出通用解决方案——一个统一的搜索栏,覆盖所有用户可访问命令。这大大减少了对嵌套菜单的依赖,加速功能访问。
传统导航痛点
在拥有数十个模块的系统中,仪表板充斥着快捷方式、分类和子菜单。用户访问 10+ 工作流时,往往要费时搜索:首页 -> 我的操作 -> 需求管理 -> 指派。步步为营的指引必不可少:“展开 A 分类,进入 B,点击 C”。
管理员任务(如缓存刷新、同步、报表)尤其棘手——难以定位且不易记忆。所有解决方案都归结为分组,这只是将功能藏得更深。
借鉴 VSCode
VSCode 的命令面板通过名称搜索,提供键盘驱动的 IDE 功能即时访问。它消除了 UI 布局争议,实现一键调用。
在 JMatrixPlatform 中,架构已就位:每个 UI 操作都是 JCommand,包含 href、标签、描述和访问权限。命令驱动仪表板、工具栏和面板。
Projects 命令示例:
@JModelPart
public final class ACDProjectsDesk extends JCommand {
public static ACDProjectsDesk COMMAND = new ACDProjectsDesk();
@Override
public JHref getHref(JContext ctx, JRequestParams requestParams) {
return new JHrefTable(
ATBProjectsDesk.TABLE,
JTarget.CONTENT,
Actions.TOOLBAR,
null,
AIQProjectsAll.INQUIRY,
JHrefTable.RowSelection.MULTI);
}
}
本地化文件 messages_en.properties:
en.demo.matrix.schema.ui.command.ACDProjectsDesk=Projects
标签实现
命令面板使用标签实现访问过滤和语义搜索(如“companies” -> “organizations”)。
@Override
public Set<String> getHashTags() {
return Set.of(
"document-management",
"demo",
"projects",
"kits");
}
控制器返回可用命令:
@GetMapping("/navigator/paletteCommands")
public ResponseEntity<List<JDTOCommand>> getCommands(
@JPathContextVariable JContext ctx,
@RequestParam Map<String, String> requestParamsMap) {
JRequestParams requestParams = new JRequestParams(requestParamsMap);
Set<JCommand> commands = JModel.getAdminListByClass(JCommand.class);
List<JDTOCommand> results = commands
.stream()
.filter(cmd -> cmd.getHashTags() != null && !cmd.getHashTags().isEmpty() && cmd.show(ctx, requestParams))
.map(cmd -> new JDTOCommand(ctx, requestParams, cmd))
.toList();
return ResponseEntity.ok(results);
}
客户端过滤确保速度(支持至多 1000 个命令)。JSON 示例:
[
{
"name":"ACPersonDesk",
"description":"平台用户注册表",
"label":"用户",
"icon":null,
"settings":{},
"href":{
"url":"../table/ATBPersonDesk",
"requestParams":{
"toolbar":"AMPersonDeskTableActions",
"rowSelection":"MULTI",
"inquiry":"AIQPersonsDesk",
"target":"CONTENT"
}
},
"hashTags":["users", "org-structure"]
}
]
搜索“projects”即可瞬间打开对应 href,无论菜单嵌套多深。
核心优势
- 即时访问:按标签、描述、哈希标签搜索。
- 上下文感知:标签提供同义词并过滤相关命令。
- 多功能:适用于查看组件和直接操作。
- 高扩展性:独立于 UI 结构,完美适配 100+ 模块。
- 高性能:服务器发送列表,客户端实时过滤。
命令面板补充菜单而非取代。管理员可快速访问罕见功能,无需手册。
关键收获
- JCommand 架构让面板实现轻松,无需重构。
- 标签一举搞定过滤和语义搜索。
- 客户端过滤确保 1000+ 命令下仍响应迅捷。
- 面板降低多模块生态的认知负担。
- 适合保守型用户的工程系统。
— Editorial Team
暂无评论。