feat: upgrade to v1.2.0 with model param validation and UI improvements
- Upgrade iflow-engine-base to ^2.0.0 - Add sanitizeModelParams for robust model operation validation - Add try-catch error handling for render mode and model tool calls - Preserve tree scroll position across tab switches - Optimize tree node reveal with visibility check and centered scrolling - Refactor collectModelParams to support multi-model grouping - Fix tree CSS: remove duplicates, constrain overflow, improve layout - Move version label to bottom-left - Rebuild demo libs
This commit is contained in:
@@ -588,6 +588,29 @@ const dialog = engine.dialog.create({
|
||||
- 树节点 ID 生成:当节点 `id` 为空但存在 `ids` 数组时,会对 `ids` 做纯 JS 哈希(FNV-1a 32-bit 双哈希拼接),用于生成稳定且较短的节点唯一标识。
|
||||
- 设计动机:避免依赖 `crypto.subtle`(该 API 在非安全上下文,如 HTTP 站点下可能为 `undefined`),导致运行时报错。
|
||||
- 注意:该哈希仅用于 UI 树组件的 key/映射,不用于安全加密或鉴权。
|
||||
- 父级联动规则:树节点勾选/取消勾选时,Manager 会递归收集当前节点与全部子孙节点的构件 ID,并按模型 URL 分组后再调用引擎显示/隐藏接口,避免父节点跨模型时仅处理单一 URL。
|
||||
- 选中联动规则:节点选中时同样使用“递归收集 + 按 URL 分组”策略,先清空高亮,再执行高亮与视角定位。
|
||||
|
||||
#### 4.1.2 树组件搜索跳转与滚动稳定性
|
||||
|
||||
- 相关文件:`src/components/tree/index.ts`、`src/components/tree/index.css`
|
||||
- 搜索命中节点跳转不再使用 `scrollIntoView({ behavior: 'smooth' })`,改为在树内容容器内计算目标 `scrollTop` 并调用 `contentElement.scrollTo({ behavior: 'auto' })`。
|
||||
- 跳转时机采用双层 `requestAnimationFrame`,确保父节点展开后的布局完成后再滚动,避免在嵌套滚动容器中出现“跳转后无法滚动/卡死”。
|
||||
- CSS 约束:树内容区使用 `overflow-y: auto` + `overflow-x: hidden`,节点行宽统一 `width: 100%`,避免 `fit-content + min-width: 100%` 组合导致滚动区域异常。
|
||||
- Tab 切换显示修正:`src/components/tab/index.ts` 中激活面板不再写入 `display: block`,改为 `display: ''` + `.is-active` 类控制,避免覆盖 `display: flex` 后破坏树容器高度链导致“滑动后回弹”。
|
||||
- Tab 面板滚动状态保留:`src/components/tab/index.ts` 为每个面板缓存 `.bim-tree-content` 的 `scrollTop`,切走时保存、切回时在 `requestAnimationFrame` 中恢复,避免切换后滚动位置突变。
|
||||
- 树跳转幂等保护:`src/components/tree/index.ts` 新增 `lastRevealedNodeId` 与可视区判断;同一节点已在可视区时跳过再次自动滚动,减少切换 Tab 后重复重定位造成的“被拉回”。
|
||||
- Tab 切换行为收敛:`src/managers/construct-tree-manager-btn.ts` 的 `onChange` 不再调用 `resetAllTrees()`,避免每次切换都触发全量勾选/模型显示与树状态重置。
|
||||
|
||||
#### 4.1.3 Engine 模型参数防御性校验
|
||||
|
||||
- 相关文件:`src/components/engine/index.ts`
|
||||
- 对 `showModel/hideModels/highlightModel/viewScaleToModel` 增加统一参数清洗:
|
||||
- 过滤空 URL、非数组 ID、非整数 ID;
|
||||
- 与已加载模型 URL 对齐(支持去除尾部 `/` 后匹配);
|
||||
- 校验 `nodesMap` 中 ID 是否真实存在且具备可用索引;
|
||||
- 去重后再下发到底层引擎。
|
||||
- 目标:避免底层 `modelToolModule.showModel/hideModel` 在异常参数下触发 `forEach` 相关运行时错误。
|
||||
|
||||
#### 4.1.1 剖切盒(SectionBox)对接说明
|
||||
|
||||
|
||||
Reference in New Issue
Block a user