gis-view-webgl2 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -8
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +316 -233
- package/dist/index.js +1 -1
- package/docs/AI/345/257/271/350/257/235/346/261/207/346/200/273.md +106 -0
- package/docs/GisView.md +1 -1
- package/docs/ai/06-/344/274/232/350/257/235/347/264/242/345/274/225/344/270/216/345/244/215/346/237/245/346/226/271/346/263/225.md +110 -0
- package/docs/demos/BasicDemo.vue +2 -2
- package/docs/demos/BatchAddDemo.vue +6 -6
- package/docs/demos/ConnectDemo.vue +164 -33
- package/docs/demos/CopyMergeDemo.vue +27 -14
- package/docs/demos/EventDemo.vue +17 -20
- package/docs/demos/LabelDemo.vue +7 -7
- package/docs/demos/StyleDemo.vue +1 -1
- package/docs/demos/api-index.js +34 -31
- package/docs/demos/gis-view-demo/GisViewDemoCardHeader.vue +1 -1
- package/docs/demos/gis-view-demo/GisViewDemoStage.vue +1 -1
- package/docs/demos/gis-view-demo/panels/DataPanels.vue +1 -1
- package/docs/demos/gis-view-demo/useGisViewDemo.js +33 -35
- package/docs/format/07-/344/272/213/344/273/266/350/275/275/350/215/267/344/270/216/347/244/272/344/276/213/346/225/260/346/215/256.md +8 -7
- package/docs/from0/05-/347/233/270/346/234/272/344/270/216/344/272/244/344/272/222.md +1 -1
- package/docs/from0/07-/351/200/232/351/201/223/345/210/206/347/273/204/344/270/216/345/244/232/345/233/236/347/272/277.md +26 -10
- package/docs/manual/02-/345/235/220/346/240/207/344/270/216/346/225/260/346/215/256.md +1 -1
- package/docs/manual/04-/344/272/213/344/273/266/344/270/216/345/233/236/350/260/203.md +49 -16
- package/docs/manual/06-/346/225/260/346/215/256/344/270/216/345/234/272/346/231/257/346/233/264/346/226/260.md +9 -10
- package/docs/manual/07-/346/214/207/351/222/210/344/270/216/350/246/201/347/264/240/347/274/226/350/276/221.md +60 -36
- package/docs/manual/08-/351/200/211/344/270/255/344/270/216/346/213/220/347/202/271.md +60 -4
- package/docs/manual/09-/351/200/232/351/201/223/344/270/216/345/244/232/345/233/236/347/272/277.md +17 -1
- package/docs/manual/10-/351/200/232/351/201/223/347/274/226/350/276/221/344/270/216/346/226/260/345/242/236.md +226 -493
- package/docs/manual/12-/346/240/207/347/255/276/344/270/216/350/243/205/351/245/260.md +2 -2
- package/docs/manual/14-/350/247/206/345/233/276/344/270/216/347/255/233/351/200/211.md +12 -13
- package/docs/manual/16-/345/256/236/344/276/213/346/226/271/346/263/225/346/200/273/350/241/250.md +26 -23
- package/docs/manual/17-/345/217/202/346/225/260/351/200/237/346/237/245.md +23 -20
- package/docs/manual/18-/351/200/220/346/226/271/346/263/225/347/244/272/344/276/213.md +132 -79
- package/docs/manual/19-/350/257/273/346/225/260/344/270/216/346/213/226/346/213/275/351/242/204/350/247/210.md +1 -1
- package/docs/manual/20-/346/200/247/350/203/275/344/270/216/345/244/247/346/225/260/346/215/256.md +2 -1
- package/docs/manual/21-/350/257/264/346/230/216/344/270/216/345/270/270/350/247/201/351/227/256/351/242/230.md +4 -4
- package/docs/steps/README.md +9 -7
- package/docs/steps/bench-scale.html +1 -1
- package/docs/steps/index.html +6 -6
- package/docs/steps/selftest-actions.html +26 -25
- package/docs/steps/selftest-data.html +1 -1
- package/docs/steps/selftest-demos.html +102 -6
- package/docs/steps/selftest-docs.html +3 -3
- package/docs/steps/selftest-features.html +284 -52
- package/docs/steps/selftest-full.html +3 -3
- package/docs/steps/selftest-labels.html +1 -1
- package/docs/steps/selftest-perf.html +31 -4
- package/docs/steps/selftest-select.html +183 -1
- package/docs/steps/step-05-pick.js +4 -8
- package/docs/steps/step-07-channels.js +3 -5
- package/docs/steps/step-08-labels.js +3 -3
- package/docs/steps/step-10-full.js +3 -3
- package/docs/steps/step-12-events.js +41 -24
- package/package.json +1 -1
|
@@ -473,3 +473,109 @@
|
|
|
473
473
|
- **正确性回归**:`selftest-perf.html` 新增 1 条像素级对拍,在同一交互状态下比较细线专用管线与四边形画法的线像素数量和整幅颜色差,防止新管线画丢、画黑或换色;新增断言与既有断言均通过。
|
|
474
474
|
- **核心文件**:`src/gis-view/shaders.js`、`src/gis-view/engine.js`、`docs/steps/selftest-perf.html`、`docs/steps/README.md`、`docs/manual/03-配置项.md`、`docs/manual/05-画质与批量更新.md`、`docs/manual/20-性能与大数据.md`、`docs/manual/21-说明与常见问题.md`、`docs/internals/18-性能实测与WebGPU评估.md`、根 `README.md`、`src/gis-view/README.md` 与本轮 aimd。
|
|
475
475
|
- **验证**:`node --check src/gis-view/engine.js`、`node --check src/gis-view/shaders.js`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs`(264 个实例成员未变)、`npm run check:docs`(264 个实例成员 / 250 个方法 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关)、九个定向自测页 **1504** 条通过 / 0 失败、`npm run build` 与 `git diff --check` 全部通过。`selftest-perf` **182 / 1**(共 183 条;标签读数 1313 次、重复 0 条,HEAD 基线已复现),新增像素断言通过;`selftest-scale` 117 / 2(既有的 onFilter 计数失败,筛选链路未改)。公开实例成员、options 与数据字段计数未变。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-26-增量修改txt线片段着色管线专用化)。
|
|
476
|
+
|
|
477
|
+
## 2026-10-26 增量(「修改.txt」:选中 / 取消选中入口速查)
|
|
478
|
+
|
|
479
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录最新的 `修改.txt`:修改 gis-view 组件;现在组件如何选中和取消选中。
|
|
480
|
+
|
|
481
|
+
- **现状核对**:公开入口只有 `selectFeatures(refs, options?)` 与 `deselect(refs?)`,`select()` 已在重复入口收口时删除。鼠标单选、Ctrl / ⌘ 取反、`multiSelect`、`boxSelect`、空白点击 / Esc 清空,以及接口替换 / 追加 / 取反 / 移除 / 清空都已存在,因此没有新增重复方法。
|
|
482
|
+
- **文档改动**:`docs/manual/08-选中与拐点.md` 顶部新增「选中与取消选中速查」,把鼠标 / 键盘 / 接口入口、`selectTrigger: 'dblClick'` 的差异、读回方法与 `onSelectChange` 放在一处;同时修正正文与当前 demo / 自测注释里的过期 `select()` 名称。
|
|
483
|
+
- **核心文件**:`docs/manual/08-选中与拐点.md`、`docs/demos/StyleDemo.vue`、`docs/demos/gis-view-demo/useGisViewDemo.js`、`docs/steps/selftest-features.html`、`docs/AI对话汇总.md`、`docs/ai/06-会话索引与复查方法.md`。
|
|
484
|
+
- **验证**:`node docs/steps/gen-api-index.mjs --check`(生成索引最新)、`npm run check:docs`(264 个实例成员 / 250 个方法 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关全部命中)、`npx tsc --noEmit`、`npm run build`、`selftest-select.html` **69** 条通过 / 0 失败,以及 `git diff --check` 全部通过。公开 API 计数未变。
|
|
485
|
+
## 2026-10-26 增量(「修改.txt」:按坐标模拟单击选中 selectAt)
|
|
486
|
+
|
|
487
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录最新的 `修改.txt`:「修改gis-view组件 1、我说的选中是手动触发单击选中,比如手动选中某个节点,某个通道,线路等,组件有这个方法吗」。
|
|
488
|
+
|
|
489
|
+
- **结论**:已有 `selectFeatures(refs, options?)` 可按 id / 下标 / `{ type, index }` 手动选中节点、线路、通道;`pickAt()` 只读命中、不改选中。为「拿鼠标坐标当一次单击」,本轮新增 `selectAt(clientX, clientY)`,没有恢复已删除的 `select()`。
|
|
490
|
+
- **行为**:`selectAt` 按真实单击相同的 `pick()` 顺序命中节点 / 线路并立即调用 `applySelection`;通道回线按 `channelSelectMode` 摊成一条 / 一组 / 整条通道。空白或聚合圆返回 `null`,不清空原选中;不等待 `selectTrigger: 'dblClick'`,也不派发 `onClick` / `onDblClick`,但 `onSelect` / `onSelectChange` 正常发,`cause` 为 `api`。
|
|
491
|
+
- **设计取舍**:这是接口入口,固定替换当前选中集;追加 / 取反仍用 `selectFeatures(refs, { mode: 'add' | 'toggle' })`。要清空仍用 `deselect()` / `selectFeatures(null)`。返回值为 `GisViewSelectPayload | null`。
|
|
492
|
+
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/manual/08-选中与拐点.md`、`docs/manual/09-通道与多回线.md`、`docs/manual/16-实例方法总表.md`、`docs/manual/17-参数速查.md`、`docs/manual/18-逐方法示例.md`、`README.md`、`docs/GisView.md`、`docs/steps/README.md`、`docs/steps/selftest-docs.html`、`docs/steps/selftest-demos.html`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
493
|
+
- **验证**:`node --check src/gis-view/create.js`、`node --check src/gis-view/engine.js`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(265 个实例成员 = 260 个方法 + 5 个属性 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关全部命中)、`selftest-select.html` **73** 条、`selftest-docs.html` **134** 条、`selftest-demos.html` **365** 条,三页共 **572** 条通过 / 0 失败;`npm run build` 与 `git diff --check` 全部通过。详细口径见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-26-增量修改txt按坐标模拟单击选中-selectat)。
|
|
494
|
+
## 2026-10-26 增量(「修改.txt」:选中接口的回调口径)
|
|
495
|
+
|
|
496
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录最新的 `修改.txt`:「修改gis-view组件 1、selectFeatures为什么不会触发onSelect事件,也会将内容标记为选中的样式,不是选中吗,新增的selectAt和selectFeatures有什么区别」。
|
|
497
|
+
|
|
498
|
+
- **结论**:`selectFeatures()` / `deselect()` 确实会改同一份选中 state,选中样式、`isSelected()` 与 `getSelectionData()` 立即更新;它们属于按引用改选中集的接口路径,只发 `onSelectChange`(`cause: 'api'`),不补发点击 / 框选语义的 `onSelect`。`selectAt()` 是明确的「按坐标模拟单击」,因此同时发 `onSelect` 与 `onSelectChange`,但不发 `onClick` / `onDblClick`。
|
|
499
|
+
- **事件口径**:`onSelectChange` 覆盖点击、框选、键盘清空与接口调用,并且只在选中集真的变化时发,适合统一同步面板;`onSelect` 覆盖点击 / 框选语义(真实点击 / Ctrl 多选 / 框选(含 `selectInBox()`)/ 空白清空)与模拟单击的 `selectAt()`。此前手册 17 把 `selectFeatures` 写成也会发 `onSelect`,与实际行为不一致,已改正。
|
|
500
|
+
- **两个方法的区别**:`selectAt(clientX, clientY)` 吃坐标、走与真实单击相同的 `pick()`,通道回线按 `channelSelectMode` 摊开,空白返回 `null` 且不动原选中,返回本次载荷;`selectFeatures(refs, options)` 吃 id / 下标 / 通道 / 分组引用,`mode` 支持 replace / add / toggle / remove,`null` / 空数组清空,返回实例本身。两者最终改的是同一份选中 state,样式与读数没有区别。
|
|
501
|
+
- **核心文件**:`docs/manual/04-事件与回调.md`、`docs/manual/08-选中与拐点.md`、`docs/manual/16-实例方法总表.md`、`docs/manual/17-参数速查.md`、`docs/manual/18-逐方法示例.md`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/steps/README.md`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
502
|
+
- **验证**:`selftest-select.html` 新增 2 条事件口径断言(73 → **75**),三页定向自测 **574** 条通过 / 0 失败(select 75 / docs 134 / demos 365);`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(265 个实例成员 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关全部命中)、`npm run build` 与 `git diff --check` 全部通过。运行时代码与公开成员计数未变。详细口径见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-26-增量修改txt选中接口的回调口径)。
|
|
503
|
+
|
|
504
|
+
## 2026-10-26 增量(「修改.txt」:统一选中回调与鼠标分组载荷)
|
|
505
|
+
|
|
506
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录最新的 `修改.txt`:「修改gis-view组件 1、选中指的不就是点击触发select的选中吗,什么叫真正的选中 2、那先selectFeatures有什么用,我想直接通过方法选中一个节点如何操作,用selectAt传坐标,不多余吗?3、鼠标事件里的groups怎么没」。
|
|
507
|
+
|
|
508
|
+
- **选中语义统一**:点击、框选与 `selectFeatures()` / `deselect()` / `selectAt()` 现在共用同一份选中 state,实际改变选中集时都从组件级 `handleSelectPayload(payload, detail)` 发出 `onSelect` 与 `onSelectChange`;接口来源的 `cause` 仍是 `'api'`,原样重设同一选中集只同步镜像与读数、不重复发回调。`selectAt()` 只解决「手上只有客户端坐标」这一种场景:走与单击相同的 `pick()`,立即生效但不派发 `onClick` / `onDblClick`;已知节点 / 线路 id 时直接 `selectFeatures('id')` 或传引用。上一轮「接口只发 onSelectChange」的章节保留为历史,本轮口径已取代它。
|
|
509
|
+
- **鼠标事件分组载荷**:通道回线最终命中时,拾取结果除 `group`(当前组)外补 `groups`(同一通道全部分组,按声明顺序,每项带 `groupIndex` / `lineIds` / `path` 与成员 / 拐点读数)。`pickAt()`、`hoverAt()` / `onHover`、`onPointerDown` / `onPointerUp`、`onClick` / `onDblClick`、`onContextMenu` 都是同一份;全部分组只在最终命中后构建,悬停扫描过程中不复制成员数组。
|
|
510
|
+
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/manual/04-事件与回调.md`、`07-指针与要素编辑.md`、`08-选中与拐点.md`、`09-通道与多回线.md`、`16-实例方法总表.md`、`17-参数速查.md`、`18-逐方法示例.md`、`src/gis-view/README.md`、`docs/steps/README.md`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
511
|
+
- **验证**:`node --check src/gis-view/create.js`、`node --check src/gis-view/engine.js`、`npx tsc --noEmit`;四页定向自测 **1250** 条通过 / 0 失败(select 79 / features 672 / docs 134 / demos 365);`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(265 个实例成员 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关全部命中);`npm run build` 与 `git diff --check` 通过(后者仅有 CRLF 提示)。详细口径见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-26-增量修改txt统一选中回调与鼠标分组载荷)。
|
|
512
|
+
|
|
513
|
+
## 2026-10-26 增量(「修改.txt」:选中事件分工、通道上下文与派发顺序)
|
|
514
|
+
|
|
515
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录最新的 `修改.txt`:「修改gis-view组件 1、onSelectChange和onSelect有必要同时存在吗,各自的意义是什么 2、为什么这两个事件里都拿不到通道的信息,group和groups都没有,隐藏这两个参数的意义是什么 3、为什么控制台顺序onSelectChange>onSelect>onClick」。
|
|
516
|
+
|
|
517
|
+
- **两个事件的职责**:保留 `onSelect` 与 `onSelectChange`。`onSelect` 是**本次选中操作**回调:真实单击 / Ctrl / `multiSelect` 取反 / 框选 / `selectAt()` 每次成功操作都发,清空或取反取没了时载荷为 `null`;`selectFeatures()` / `deselect()` / `focusOn({ select })` 等按引用接口只在实际改变选中集时发。`onSelectChange` 是**选中集合状态**回调:所有来源都只在实际变化时发,带 `ids` / `count` / 类型计数 / `cause` / `action`,需要统一同步面板时只订阅它。
|
|
518
|
+
- **通道上下文**:两条选中回调现在带同一套上下文。选中集只涉及一条通道时顶层平铺 `channelId` / `channelIndex` / `channel` / `groupId` / `groupIndex` / `group` / `groups`;多条通道时只给 `channelContexts`,每项带同样字段与本次选中的 `lineIndexes` / `lineIds`。`items[]` 里的通道回线也补 `group` / `groups`。真实单击与 `selectAt()` 的当前组是命中的那一组;框选 / 按引用选中取选中集里第一条通道回线所在的组;`groups` 始终是整条通道的全部分组。
|
|
519
|
+
- **派发顺序**:旧顺序 `onSelectChange → onSelect → onClick` 改为固定 `onClick → onSelect → onSelectChange`。普通单击由组件层 `deferredSelection` 只延后选中回调、先同步选中镜像与标签,等 `onClick` 派发后再补 `onSelect` / `onSelectChange`;Ctrl / `multiSelect` 取反、框选与接口选中没有 `onClick`,顺序为 `onSelect → onSelectChange`;双击模式第二下为 `onClick → onSelect → onSelectChange(有变化时)→ onDblClick`。回调里读 `getSelectionData()` 仍是最新值。
|
|
520
|
+
- **channelIndex 修正**:分组通道此前在拾取 / 悬停 / `describe` / `listLines` / 级联 / `getLineChannel` 等六处取了分组状态序号 `state.order`,与「通道在 `channels` 声明数组里的下标」不是一回事;现统一改为 `state.channelIndex`,通道增删或分组重排后读数不再漂移。
|
|
521
|
+
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/manual/04-事件与回调.md`、`07-指针与要素编辑.md`、`08-选中与拐点.md`、`09-通道与多回线.md`、`16-实例方法总表.md`、`17-参数速查.md`、`18-逐方法示例.md`、`src/gis-view/README.md`、`docs/steps/README.md`、`docs/demos/gis-view-demo/useGisViewDemo.js`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
522
|
+
- **验证**:`node --check`(engine / create)、`npx tsc --noEmit`;`selftest-select.html` **83** 条、`selftest-features.html` **672** 条、`selftest-docs.html` **134** 条、`selftest-demos.html` **365** 条,四页共 **1254** 条通过 / 0 失败;`npm run build` 通过;`node docs/steps/gen-api-index.mjs --check` PASS(索引最新)、`npm run check:docs` 全 PASS(265 个实例成员 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关)、`git diff --check` 通过(仅有 CRLF 提示)。公开实例成员 / options / 数据字段 / 事件 / 功能开关计数均未变。
|
|
523
|
+
|
|
524
|
+
## 2026-10-26 增量(「修改.txt」:选中载荷去重与通道索引缓存)
|
|
525
|
+
|
|
526
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录最新的 `修改.txt`:「修改gis-view组件 1、本次修改会影响组件性能吗,比如事件参数添加group和groups,selectFeatures触发onSelect等,如果影响性能,如何优化 2、现在onSelect和onSelectChange参数都有通道信息,下面的items里面也有通道信息,是不是有些多余, 3、继续检查组件,有没有冗余代码,继续提高组件性能」。
|
|
527
|
+
|
|
528
|
+
- **性能结论**:选中事件不进入逐帧渲染路径,只在选中操作 / 选中集实际变化时构造;`onSelect` 与 `onSelectChange` 共享同一批 `items`、分组对象与数组引用,不深拷贝。`selectFeatures()` 仍只在集合实际变化时发事件,同内容、同顺序的重设现在会在 `selectionKeys()`、引擎刷新与 `describeSelection()` 之前直接返回;`selectAt()` 每次成功命中发 `onSelect` 是既定语义,开销只随本次选中的通道 / 分组数增长,不随全量点线数增长。
|
|
529
|
+
- **载荷去重**:单通道只把 `channelId` / `channelIndex` / `channel` / `groupId` / `groupIndex` / `group` / `groups` 摊平到载荷顶层,不再额外创建 `channelContexts`;多通道才给 `channelContexts`。`items[]` 里的通道回线只保留 `channelId` / `channelIndex` / `groupId` / `groupIndex` 标量归属,不再逐条挂 `group` / `groups`,分组读数统一从顶层或 `channelContexts` 取。指针事件载荷保持原样,不受这条限制。上一节“items 里的通道回线也补 group / groups”的口径由本节撤回。
|
|
530
|
+
- **冗余与性能**:通道重建时按 `channelIndex` 同步收好分组状态数组,并把 `groupOrdinal` 直接记在通道状态上;`channelSiblings()` / `channelGroupOrdinal()` 从扫整张通道表降为 O(1),构造一条通道的全部分组读数从 O(组数 × 通道数) 降为 O(组数)。选中上下文按已记录的组序号取当前组,不再 `findIndex`;删掉已无引用的 `state.order` 和建通道时的重复 `channels.filter(...)`。单通道选中不再构造随后丢弃的 `lineIndexes` / `lineIds`,多通道才在 `channelContexts` 里按选中顺序补一次。
|
|
531
|
+
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/steps/README.md`、`docs/manual/04-事件与回调.md`、`07-指针与要素编辑.md`、`09-通道与多回线.md`、`20-性能与大数据.md`、`src/gis-view/README.md` 与本轮 aimd。
|
|
532
|
+
- **验证**:`node --check`(engine / create)、`npx tsc --noEmit`、`npm run build` 通过;五页定向自测 **1438** 条通过 / 0 失败(select 84 / features 672 / docs 134 / demos 365 / perf 183);`node docs/steps/gen-api-index.mjs --check` PASS(索引最新)、`npm run check:docs` 全 PASS(265 个实例成员 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关)、`git diff --check` 通过(仅有 CRLF 提示)。公开实例成员与配置计数未变。
|
|
533
|
+
|
|
534
|
+
## 2026-10-26 增量(「修改.txt」:选中 items 去重与选中通道缓存)
|
|
535
|
+
|
|
536
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录最新的 `修改.txt`:「修改gis-view组件 1、onSelect和onSelectChange 参数最外层有通道信息,items里面的线路对象也有通道信息,是不是重复了,删减会不会提高性能 2、继续检查有没有类似重复参数会影响性能」。
|
|
537
|
+
|
|
538
|
+
- **载荷再次去重**:`onSelect` / `onSelectChange` 的 `items[]` 不再挂任何通道字段(`channelId` / `channelIndex` / `channel` / `groupId` / `groupIndex` / `group` / `groups` / `lineIndexes` / `lineIds`)。单通道把通道上下文与本次选中的 `lineIndexes` / `lineIds` 摊平到载荷顶层,多通道只在 `channelContexts[]` 的每项给同一套字段;`groups[].lineIds` 是整组成员,外层 `lineIndexes` / `lineIds` 是本次选中子集。通道归属只看外层或对单条线路调 `getLineChannel(index)`。
|
|
539
|
+
- **引擎窄路**:`describe()` / `describeAll()` 增加 `{ withChannel: false }`,`describeSelection()` 与点击选中都走它;新增 `selectionPickOf()` 剥掉单击拾取结果的通道字段。`selectionChannelContexts()` 对单通道 / 多通道都保留 `lineIndexes` / `lineIds`,不再为“没人读”的中间载荷省掉映射。
|
|
540
|
+
- **组件侧缓存**:`syncSelections()` 按载荷外层 `lineIndexes` / `channelContexts` 一次建立“线路下标 → 通道”缓存;`selectionInfo`、`selectedCopyElements`、`getSelectionData()` 直接查表,选中数组换新时按引用失效,其他修改路径用引擎 O(1) 的 `getLineChannel()` 补建,不再逐条 `describe()`。`refreshChannelLineReadouts()` 对选中项只刷新 `coordinate` / `screen` / `distance`,悬停仍保留完整通道字段。
|
|
541
|
+
- **类似重复审计**:`group` 与 `groups[groupIndex]` 是同一个对象引用,`onSelectChange.action.data` 与 `items` 是同一个数组引用,共享引用不产生第二份数据,故保留;指针 / 悬停载荷构造改为先展开拾取结果,再补 `action` 与光标读数,去掉 `type` / `index` / `item` 的重复赋值。悬停分组读数仍是单份构造,没有在载荷里复制。
|
|
542
|
+
- **公开行为变化**:`getSelections()` 与 `getSelectionData().items` 里的线路同样不再带通道字段;需要单条归属时调 `getLineChannel(index)`,事件回调里优先用顶层 `lineIndexes` / `lineIds` 或 `channelContexts`。自测已同步改为断言这些字段**不存在**,并验证实时归属仍可读。
|
|
543
|
+
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/steps/selftest-features.html`、`docs/steps/README.md`、`docs/manual/04-事件与回调.md`、`07-指针与要素编辑.md`、`08-选中与拐点.md`、`09-通道与多回线.md`、`16-实例方法总表.md`、`17-参数速查.md`、`20-性能与大数据.md`、`src/gis-view/README.md`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
544
|
+
- **验证**:`node --check`(engine / create)、`npx tsc --noEmit`、`npm run build` 通过;定向自测 `selftest-select.html` **85** 条、`selftest-features.html` **672** 条、`selftest-docs.html` **134** 条、`selftest-demos.html` **365** 条全部通过;`selftest-perf.html` **182 / 1**,唯一失败仍是既有的“改一条可见标签后的定向重排”读数断言(1313 次 / 重复 0 条),与选中链路无关。`node docs/steps/gen-api-index.mjs --check` 与 `npm run check:docs`(265 个实例成员 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关)全部通过;`git diff --check` 仅有 CRLF 提示。公开实例成员 / options / 数据字段 / 事件 / 功能开关计数均未变。
|
|
545
|
+
|
|
546
|
+
## 2026-10-27 增量(「修改.txt」:事件载荷去重与指针回调收口)
|
|
547
|
+
|
|
548
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求来源是仓库根目录 `修改.txt`(当前落盘内容已损坏为问号,按本轮实际落实的 gis-view 事件载荷去重与性能优化记录)。
|
|
549
|
+
|
|
550
|
+
- **单参数回调**:`onPointerDown` / `onPointerUp` / `onContextMenu` / `onClusterClick` 的实例回调、事件总线与内部监听统一只给一个 `payload`;原始 DOM 事件、鼠标键、修饰键和浏览器坐标都读 `payload.originalEvent`,不再另传第二个 `event`。
|
|
551
|
+
- **载荷去重**:删除 `payload.selection`、`action.data`、`action.button` / `action.modifiers` / `action.left` / `action.right`,指针载荷也不再复制 `button` / `buttons` / `clientX` / `clientY`。命中数据直接放载荷顶层:`item` / `channel` / `channelContext` / `items` / `lineIndex` / `pathIndex` / `coordinate` / `line` / `label` / `parent` 与聚合字段;`selected` / `wasSelected` 保留为事件时刻的状态快照。
|
|
552
|
+
- **替代入口**:选中集总读数改调新增的 `getSelectionInfo()`(按选中集引用缓存 `{ ids, count, points, lines, channels }`);右键线路读 `payload.index` / `payload.item.id`,再用 `getLineChannel(index)` 查通道;标签右键 / 双击的光标位置读 `payload.originalEvent`;复制改读 `payload.item` / `item.x` / `item.y` / `items[0]`,回写用 `payload.update()`。
|
|
553
|
+
- **性能**:`withPointerCoordinates()` 对引擎刚交出的载荷就地补 `lngLat`,高频指针 / 悬停路径不再逐次展开一份对象;同时去掉重复包装和已可推导的派生字段,减少载荷构造与遍历成本。
|
|
554
|
+
- **计数与文档**:公开实例成员变为 **266**(新增 `getSelectionInfo`),数据字段 250、options 96、事件 43、功能开关 17 未变。两份 README、manual 04/07/10/12/16/17/18/20、format/from0 教程、Event/Label/Basic/GisView demos、第 5/7/8/10/12 步与 7 个自测页都同步到新口径;第 5 步教学实现也改为单参数回调,第 7 步草稿载荷不再重复挂 `clientX` / `clientY`;README 与 steps/README 的当前计数同步到 266 / 261。
|
|
555
|
+
- **核心文件**:`src/gis-view/engine.js`、`create.js`、`overlay.js`、`events.js`、`types.d.ts`、`README.md`、`src/gis-view/README.md`、`docs/manual/04-事件与回调.md`、`07-指针与要素编辑.md`、`10-通道编辑与新增.md`、`12-标签与装饰.md`、`16-实例方法总表.md`、`17-参数速查.md`、`18-逐方法示例.md`、`20-性能与大数据.md`、`docs/format/07-事件载荷与示例数据.md`、`docs/from0/05-相机与交互.md`、`07-通道分组与多回线.md`、`docs/demos/**`、`docs/steps/**` 与本轮 aimd。
|
|
556
|
+
- **验证**:`node --check`(engine / create / overlay / events / step-05-pick / step-07-channels / step-12-events)、`npx tsc --noEmit`、`npm run build`、`git diff --check` 通过;`node docs/steps/gen-api-index.mjs --check` PASS,`npm run check:docs` PASS(266 / 250 / 96 / 43 / 17);7 页定向自测 **1611** 条通过 / 0 失败(actions 96 / labels 165 / features 672 / select 85 / full 94 / docs 134 / demos 365)。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-27-增量修改txt事件载荷去重与指针回调收口)。
|
|
557
|
+
|
|
558
|
+
## 2026-10-27 增量(「问题.txt」:新增线路拆分、单一通道策略与解除合并分线)
|
|
559
|
+
|
|
560
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求来源是仓库根目录 `问题.txt`:① 优化 `beginAddChannel` 的方法规范,评估拆成 `beginAddLine` / `beginAddChannel`;② 支持单一通道模式,已有通道时可失败或转为新增回线,并可指定分组;③ 已有通道时新回线可建新分组或并进指定分组;④ 在 demo 中体现;⑤ 优化解除合并并在 demo 中体现。
|
|
561
|
+
|
|
562
|
+
- **入口拆分**:新增公开方法 `beginAddLine()`,与 `beginAddChannel()` 共用 `beginExtendedAddDraft()`;前者固定线路语义,后者保留新建通道语义,旧写法 `beginAddChannel({ kind: 'line' })` 继续兼容。`beginAddLine` 显式挂已有通道时,草稿 `kind` 仍是 `line`,落地成通道成员后结果 / `commit` / `blocked` 载荷的 `kind` 为 `channel`。
|
|
563
|
+
- **已有通道策略**:`singleChannel: true` 只约束 `beginAddChannel`,已有通道时等价于 `existingChannel: 'block'`;显式 `existingChannel` 支持 `block` / `newGroup` / `joinGroup` / `auto`,`joinGroup` 用 `groupId` / `groupIndex`(从 0 起、`groupId` 优先)指定分组。`beginAddLine` 不读 `singleChannel`,可显式把新回线挂进已有通道;没有通道时始终落成独立线路。plan 与草稿载荷补 `singleChannel` / `existingChannel` / `targetGroupId` / `targetGroupIndex`。
|
|
564
|
+
- **失败语义**:被策略阻断的草稿停在 `ready`(`blocked: true`、`preferred: null`);无参或 `'auto'` 提交直接返回失败并发 `phase: 'blocked'`,不会自动改道偷偷新建。显式传可用的 `resolution` 仍可改道。失败结果补齐 `kind` / `circuits` / `plan` 等字段。
|
|
565
|
+
- **解除合并**:`splitPoint()` 新增 `autoLines: 'alternate'`:没显式分配的线路按「同一条通道的成员成组、独立线路单条」轮流给负载最少的一份,返回 `autoLines` / `autoAssignedLines` / `lineAssignments`(每份 `index` / `pointId` / `lineIds` / `lineCount`);缺省 `first` 保持旧行为。
|
|
566
|
+
- **Demo**:`ConnectDemo` 拆分线路 / 通道入口,新增预置两组已有通道、`singleChannel`、`existingChannel`、目标分组控件与 blocked 读数;`CopyMergeDemo` 把拆分节点改成「解除合并」,用 `autoLines: 'alternate'` 并显示自动分线数、每份回线数与通道成组结果。
|
|
567
|
+
- **计数与文档**:公开实例成员变为 **267**(新增 `beginAddLine`,即 **262** 个方法 + 5 个属性),数据字段 250、options 96、事件 43、功能开关 17 未变。两份 README、manual 07/10/16/17/18、from0/07、GisView 索引、steps/README、selftest-docs 与生成的 `docs/demos/api-index.js` 同步到新口径。
|
|
568
|
+
- **核心文件**:`src/gis-view/engine.js`、`create.js`、`types.d.ts`、`docs/demos/ConnectDemo.vue`、`docs/demos/CopyMergeDemo.vue`、`docs/steps/selftest-features.html`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-docs.html`、`README.md`、`src/gis-view/README.md`、`docs/GisView.md`、`docs/manual/07-指针与要素编辑.md`、`docs/manual/10-通道编辑与新增.md`、`docs/manual/16-实例方法总表.md`、`docs/manual/17-参数速查.md`、`docs/manual/18-逐方法示例.md`、`docs/from0/07-通道分组与多回线.md`、`docs/steps/README.md`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
569
|
+
- **验证**:`node --check`(engine / create)、`npx tsc --noEmit`、`npm run build`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(267 / 250 / 96 / 43 / 17)与 `git diff --check` 全部通过。定向自测 `selftest-features.html` **683** 条、`selftest-demos.html` **373** 条、`selftest-docs.html` **134** 条全部通过;全量 14 页 **2355** 条通过 / **3** 条失败,其余 12 页全过。失败为 `selftest-perf.html` 既有的标签定向重排读数 1 条,以及 `selftest-scale.html` 的筛选重算计数 2 条(单页复跑仍复现,均不涉及本轮修改链路)。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-27-增量问题txt新增线路拆分单一通道策略与解除合并分线)。
|
|
570
|
+
|
|
571
|
+
## 2026-10-27 增量(「修改.txt」:新增默认选中参数化、删除旧兼容与 addLine 增量)
|
|
572
|
+
|
|
573
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求来源是仓库根目录 `修改.txt` 三条(新增通道 / 节点 / 线路是否默认选中改为参数决定;取消所有方法的旧版兼容写法;继续优化性能)与 `问题.txt`(修改 gis-view 组件)。
|
|
574
|
+
|
|
575
|
+
- **默认选中参数化**:`addChannel` / `addChannelGroupLines` / `joinChannelGroupLines` / `addChannelGroups` / `addChannels` / `addLine` / `addPoint` / `addPoints` / `addLines` 缺省都不改变选中集,只有 `options.select: true` 才选中落地的新要素;草稿的 `select` 只控制点中的节点,`commitAddChannel(..., { select: true })` 单独控制新回线。
|
|
576
|
+
- **统一新签名**:第二个线路数据参数统一为 `lineData`(裸字符串 / 数字 id 等价于 `{ id }`),草稿配置 / 载荷同名;`addChannel` 只新建通道,已有通道改走 `addChannelGroupLines` / `joinChannelGroupLines`;`beginAddChannel` / `beginAddLine` 固定各自入口语义;`commitAddChannel` 只接受一个容器对象。
|
|
577
|
+
- **旧兼容删除**:旧 `circuits` / `kind` / `resolution` / `channelId` / `groupId` / `lineItems` 等入参命中即明确失败且不写数据;`focusOn` / `flyTo` 的 `center`、`selectInBox` 旧 Event 重载与 `GisViewChannelAddInput` / `GisViewChannelLineItems` 类型已删除。
|
|
578
|
+
- **性能与修复**:已有通道声明时 `addLine` 仍走追加式补线,无筛选的 `addItems()` 不再空跑筛选;批量 `addChannelGroups` 改为本地分组表落地,修复两组连续 `defer` 时后一组覆盖前一组;修复 `autoCommit` / 无参提交遗漏草稿 `lineData`。`selftest-perf` 新增 `addLine` 增量正确性与代价断言。
|
|
579
|
+
- **计数与文档**:公开实例成员保持 **267**(**262** 方法 + **5** 属性),数据字段 **250**、options **96**、事件 **43**、功能开关 **17**;两份 README、manual 02/06/10/14/16/17/18/19/21、from0/07 与生成的 `docs/demos/api-index.js` 同步。
|
|
580
|
+
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-features.html`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-perf.html`、两份 README、`docs/manual/**`、`docs/from0/07-通道分组与多回线.md`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
581
|
+
- **验证**:`node --check`(create / engine)、`npx tsc --noEmit`、`npm run build`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs` 全部通过。全量 14 页自测 **2379** 条通过 / **2** 条失败(`selftest-features` 704、`selftest-demos` 373、`selftest-perf` 185 均 0 失败;仅 `selftest-scale` 既有 `onFilter 0 条` 2 条失败)。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-27-增量修改txt新增默认选中参数化删除旧兼容与-addline-增量)。
|
package/docs/GisView.md
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
| [14 视图与筛选](manual/14-视图与筛选.md) | 筛选、搜索定位、初始视图与缩放范围、背景层、鹰眼图、近义入口 |
|
|
33
33
|
| [15 导出与集成](manual/15-导出与集成.md) | 导出图片 / 选中节点 / 数据、自定义导出格式,插件、自建界面与键盘交互 |
|
|
34
34
|
| [16 实例方法总表](manual/16-实例方法总表.md) | 按功能分组的实例方法主表(找方法从这一章开始) |
|
|
35
|
-
| [17 参数速查(逐个方法)](manual/17-参数速查.md) |
|
|
35
|
+
| [17 参数速查(逐个方法)](manual/17-参数速查.md) | 267 个成员逐个列全:参数、默认值与返回 |
|
|
36
36
|
| [18 逐方法示例(复制就能跑)](manual/18-逐方法示例.md) | 每个成员一段可复制的调用示例(API 速查页读的就是这一章) |
|
|
37
37
|
| [19 读数与拖拽预览](manual/19-读数与拖拽预览.md) | 自建界面常用的读数 / 定位方法;拖拽落点预览 |
|
|
38
38
|
| [20 性能与大数据](manual/20-性能与大数据.md) | 十万级数据的开关与实测、WebGPU 取舍、渲染后端开关 |
|
|
@@ -448,6 +448,116 @@
|
|
|
448
448
|
- **实测**:10 万点 / 5 万线缩放 p50 **23.2 → 16.7 ms**、p95 **28.6 → 16.8 ~ 16.9 ms**;10 万点 / 10 万线缩放三次中位 p50 **42.6 → 18.0 ms**、p95 **46.3 → 21.4 ms**;2px 实线的 10 万线只走四边形轻量片元时约 **82.4 → 63.9 ms**。16 ~ 18 ms 已接近 60Hz 帧节拍,剩余成本是 GPU 填充率。
|
|
449
449
|
- **核心文件**:`src/gis-view/shaders.js`、`src/gis-view/engine.js`、`docs/steps/selftest-perf.html`、`docs/steps/README.md`、`docs/manual/03-配置项.md`、`docs/manual/05-画质与批量更新.md`、`docs/manual/20-性能与大数据.md`、`docs/manual/21-说明与常见问题.md`、`docs/internals/18-性能实测与WebGPU评估.md`、根 `README.md`、`src/gis-view/README.md` 与本轮 aimd。
|
|
450
450
|
- **验证**:`node --check`(engine / shaders)、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs`(264 个实例成员未变)、`npm run check:docs`(264 个实例成员 / 250 个方法 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关)、九个定向自测页 **1504** 条通过 / 0 失败、`npm run build` 与 `git diff --check` 全部通过。`selftest-perf` **182 / 1**(共 183 条;新增像素对拍通过,标签读数失败在 HEAD 已复现);`selftest-scale` 117 / 2(既有 onFilter 计数失败)。公开 API 计数未变。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-26-增量修改txt继续优化-gis-view回答感觉没提升多少)。
|
|
451
|
+
|
|
452
|
+
### 2026-10-26 增量(「修改.txt」:选中 / 取消选中入口速查)
|
|
453
|
+
|
|
454
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录最新的 `修改.txt`:修改 gis-view 组件;现在组件如何选中和取消选中。
|
|
455
|
+
|
|
456
|
+
- **结论**:公开入口只有 `selectFeatures(refs, options?)` 与 `deselect(refs?)`,没有 `select()`;现有鼠标、键盘、框选与接口路径已经覆盖选中 / 取消,不需要新增重复 API。
|
|
457
|
+
- **文档**:`docs/manual/08-选中与拐点.md` 顶部新增「选中与取消选中速查」,并修正当前正文、demo 与自测注释中把 `select()` 当现存接口的说法。
|
|
458
|
+
- **核心文件**:`docs/manual/08-选中与拐点.md`、`docs/demos/StyleDemo.vue`、`docs/demos/gis-view-demo/useGisViewDemo.js`、`docs/steps/selftest-features.html`、`docs/AI对话汇总.md` 与本章。
|
|
459
|
+
- **验证**:`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(264 个实例成员 / 250 个方法 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关)、`npx tsc --noEmit`、`npm run build`、`selftest-select.html` **69** 条通过 / 0 失败,以及 `git diff --check` 全部通过;公开 API 计数未变。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-26-增量修改txt选中--取消选中入口速查)。
|
|
460
|
+
|
|
461
|
+
### 2026-10-26 增量(「修改.txt」:按坐标模拟单击选中 selectAt)
|
|
462
|
+
|
|
463
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录最新的 `修改.txt`:「修改gis-view组件 1、我说的选中是手动触发单击选中,比如手动选中某个节点,某个通道,线路等,组件有这个方法吗」。
|
|
464
|
+
|
|
465
|
+
- **结论**:已有 `selectFeatures(refs, options?)` 可按 id / 下标 / `{ type, index }` 手动选中节点、线路、通道;`pickAt()` 只读命中、不改选中。为「拿鼠标坐标当一次单击」,本轮新增 `selectAt(clientX, clientY)`,没有恢复已删除的 `select()`。
|
|
466
|
+
- **行为**:`selectAt` 按真实单击相同的 `pick()` 顺序命中节点 / 线路并立即调用 `applySelection`;通道回线按 `channelSelectMode` 摊成一条 / 一组 / 整条通道。空白或聚合圆返回 `null`,不清空原选中;不等待 `selectTrigger: 'dblClick'`,也不派发 `onClick` / `onDblClick`,但 `onSelect` / `onSelectChange` 正常发,`cause` 为 `api`。
|
|
467
|
+
- **设计取舍**:这是接口入口,固定替换当前选中集;追加 / 取反仍用 `selectFeatures(refs, { mode: 'add' | 'toggle' })`。要清空仍用 `deselect()` / `selectFeatures(null)`。返回值为 `GisViewSelectPayload | null`。
|
|
468
|
+
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/manual/08-选中与拐点.md`、`docs/manual/09-通道与多回线.md`、`docs/manual/16-实例方法总表.md`、`docs/manual/17-参数速查.md`、`docs/manual/18-逐方法示例.md`、`README.md`、`docs/GisView.md`、`docs/steps/README.md`、`docs/steps/selftest-docs.html`、`docs/steps/selftest-demos.html`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
469
|
+
- **验证**:`node --check src/gis-view/create.js`、`node --check src/gis-view/engine.js`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(265 个实例成员 = 260 个方法 + 5 个属性 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关全部命中)、`selftest-select.html` **73** 条、`selftest-docs.html` **134** 条、`selftest-demos.html` **365** 条,三页共 **572** 条通过 / 0 失败;`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-26-增量修改txt按坐标模拟单击选中-selectat)。
|
|
470
|
+
|
|
471
|
+
### 2026-10-26 增量(「修改.txt」:选中接口的回调口径)
|
|
472
|
+
|
|
473
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录最新的 `修改.txt`:「修改gis-view组件 1、selectFeatures为什么不会触发onSelect事件,也会将内容标记为选中的样式,不是选中吗,新增的selectAt和selectFeatures有什么区别」。
|
|
474
|
+
|
|
475
|
+
- **结论**:`selectFeatures()` / `deselect()` 确实会改同一份选中 state,选中样式、`isSelected()` 与 `getSelectionData()` 立即更新;它们属于按引用改选中集的接口路径,只发 `onSelectChange`(`cause: 'api'`),不补发点击 / 框选语义的 `onSelect`。`selectAt()` 是明确的「按坐标模拟单击」,因此同时发 `onSelect` 与 `onSelectChange`,但不发 `onClick` / `onDblClick`。
|
|
476
|
+
- **事件口径**:`onSelectChange` 覆盖点击、框选、键盘清空与接口调用,并且只在选中集真的变化时发,适合统一同步面板;`onSelect` 覆盖点击 / 框选语义(真实点击 / Ctrl 多选 / 框选(含 `selectInBox()`)/ 空白清空)与模拟单击的 `selectAt()`。此前手册 17 把 `selectFeatures` 写成也会发 `onSelect`,与实际行为不一致,已改正。
|
|
477
|
+
- **两个方法的区别**:`selectAt(clientX, clientY)` 吃坐标、走与真实单击相同的 `pick()`,通道回线按 `channelSelectMode` 摊开,空白返回 `null` 且不动原选中,返回本次载荷;`selectFeatures(refs, options)` 吃 id / 下标 / 通道 / 分组引用,`mode` 支持 replace / add / toggle / remove,`null` / 空数组清空,返回实例本身。两者最终改的是同一份选中 state,样式与读数没有区别。
|
|
478
|
+
- **核心文件**:`docs/manual/04-事件与回调.md`、`docs/manual/08-选中与拐点.md`、`docs/manual/16-实例方法总表.md`、`docs/manual/17-参数速查.md`、`docs/manual/18-逐方法示例.md`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/steps/README.md`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
479
|
+
- **验证**:`selftest-select.html` 新增 2 条事件口径断言(73 → **75**),三页定向自测 **574** 条通过 / 0 失败(select 75 / docs 134 / demos 365);`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(265 个实例成员 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关全部命中)、`npm run build` 与 `git diff --check` 全部通过。运行时代码与公开成员计数未变。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-26-增量修改txt选中接口的回调口径)。
|
|
480
|
+
|
|
481
|
+
### 2026-10-26 增量(「修改.txt」:统一选中回调与鼠标分组载荷)
|
|
482
|
+
|
|
483
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录最新的 `修改.txt`:「修改gis-view组件 1、选中指的不就是点击触发select的选中吗,什么叫真正的选中 2、那先selectFeatures有什么用,我想直接通过方法选中一个节点如何操作,用selectAt传坐标,不多余吗?3、鼠标事件里的groups怎么没」。
|
|
484
|
+
|
|
485
|
+
- **选中回调统一**:点击、框选与 `selectFeatures()` / `deselect()` / `selectAt()` 共用同一份选中状态,实际改变选中集时都从组件级 `handleSelectPayload(payload, detail)` 发出 `onSelect` 与 `onSelectChange`;接口来源 `cause: 'api'`,原样重设同一选中集只同步镜像与读数、不重复发回调。
|
|
486
|
+
- **selectAt 与 selectFeatures 的分工**:`selectAt(clientX, clientY)` 只用于手上只有客户端坐标、需要像普通单击一样命中的场景;它走同一套 `pick()`,立即生效但不派发 `onClick` / `onDblClick`。已知节点 / 线路 id 时直接 `selectFeatures('id')` 或传引用,不必先求坐标;两套入口落到同一份选中 state,样式与读数没有区别。
|
|
487
|
+
- **鼠标分组载荷**:通道回线最终命中时,拾取结果补 `groups`(同一通道全部分组,按声明顺序,每项带 `groupIndex` / `lineIds` / `path` 与成员 / 拐点读数);`group` 仍是当前命中的那一组。`pickAt`、`hoverAt` / `onHover`、`onPointerDown` / `onPointerUp`、`onClick` / `onDblClick`、`onContextMenu` 都带这两个字段,且全部分组只在最终命中后构建,避免悬停扫描反复复制成员数组。
|
|
488
|
+
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/manual/04-事件与回调.md`、`07-指针与要素编辑.md`、`08-选中与拐点.md`、`09-通道与多回线.md`、`16-实例方法总表.md`、`17-参数速查.md`、`18-逐方法示例.md`、`src/gis-view/README.md`、`docs/steps/README.md`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
489
|
+
- **验证**:`node --check src/gis-view/create.js`、`node --check src/gis-view/engine.js`、`npx tsc --noEmit`;`selftest-select.html` **79** 条、`selftest-features.html` **672** 条、`selftest-docs.html` **134** 条、`selftest-demos.html` **365** 条,四页共 **1250** 条通过 / 0 失败;`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(265 个实例成员 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关全部命中)、`npm run build` 与 `git diff --check` 全部通过(后者仅有 CRLF 提示)。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-26-增量修改txt统一选中回调与鼠标分组载荷)。
|
|
490
|
+
- **历史口径**:本节之前的「选中接口的回调口径」保留上一轮“接口只发 onSelectChange”的记录;本轮已统一为实际变化时同时发 `onSelect` 与 `onSelectChange`,以本节为准。
|
|
491
|
+
|
|
492
|
+
### 2026-10-26 增量(「修改.txt」:选中事件分工、通道上下文与派发顺序)
|
|
493
|
+
|
|
494
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录最新的 `修改.txt`:「修改gis-view组件 1、onSelectChange和onSelect有必要同时存在吗,各自的意义是什么 2、为什么这两个事件里都拿不到通道的信息,group和groups都没有,隐藏这两个参数的意义是什么 3、为什么控制台顺序onSelectChange>onSelect>onClick」。
|
|
495
|
+
|
|
496
|
+
- **分工结论**:保留两个事件。`onSelect` 是本次选中操作回调(真实单击 / Ctrl / `multiSelect` 取反 / 框选 / `selectAt()` 每次成功操作都发,清空或取反取没了时载荷 `null`;`selectFeatures` / `deselect` / `focusOn({ select })` 只在集合实际变化时发),`onSelectChange` 是集合状态回调(所有来源都只在实际变化时发,带 `ids` / `count` / 类型计数 / `cause` / `action`)。
|
|
497
|
+
- **通道载荷**:两条回调都带同一份通道上下文。单通道时顶层平铺 `channelId` / `channelIndex` / `channel` / `groupId` / `groupIndex` / `group` / `groups`;多通道时只给 `channelContexts`(每项另有本次选中的 `lineIndexes` / `lineIds`)。`items[]` 里的通道回线也补 `group` / `groups`。真实单击与 `selectAt` 的当前组是命中的组;框选与按引用接口取选中集里第一条通道回线所在的组;`groups` 始终是整条通道的全部分组。
|
|
498
|
+
- **顺序修复**:旧顺序 `onSelectChange → onSelect → onClick` 已改为普通单击 `onClick → onSelect → onSelectChange`;Ctrl / `multiSelect` 取反、框选与接口选中是 `onSelect → onSelectChange`;双击模式第二下最后再补 `onDblClick`。`deferredSelection` 只延后点击路径的选中回调,选中镜像与标签仍先同步,回调内读 `getSelectionData()` 已是最新。
|
|
499
|
+
- **根因修复**:分组通道的 `channelIndex` 原来误取分组状态序号 `state.order`,现统一为通道在 `channels` 声明数组里的下标 `state.channelIndex`,覆盖拾取 / 悬停 / `describe` / `listLines` / 级联 / `getLineChannel` 六处。
|
|
500
|
+
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/manual/04-事件与回调.md`、`07-指针与要素编辑.md`、`08-选中与拐点.md`、`09-通道与多回线.md`、`16-实例方法总表.md`、`17-参数速查.md`、`18-逐方法示例.md`、`src/gis-view/README.md`、`docs/steps/README.md`、`docs/demos/gis-view-demo/useGisViewDemo.js`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
501
|
+
- **验证**:`node --check src/gis-view/engine.js`、`node --check src/gis-view/create.js`、`npx tsc --noEmit`;四页定向自测 **1254** 条通过 / 0 失败(select 83 / features 672 / docs 134 / demos 365);`npm run build` 通过;`node docs/steps/gen-api-index.mjs --check` PASS(索引最新)、`npm run check:docs` 全 PASS(265 个实例成员 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关)、`git diff --check` 通过(仅有 CRLF 提示)。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-26-增量修改txt选中事件分工通道上下文与派发顺序)。
|
|
502
|
+
|
|
503
|
+
### 2026-10-26 增量(「修改.txt」:选中载荷去重与通道索引缓存)
|
|
504
|
+
|
|
505
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录最新的 `修改.txt`:「修改gis-view组件 1、本次修改会影响组件性能吗,比如事件参数添加group和groups,selectFeatures触发onSelect等,如果影响性能,如何优化 2、现在onSelect和onSelectChange参数都有通道信息,下面的items里面也有通道信息,是不是有些多余, 3、继续检查组件,有没有冗余代码,继续提高组件性能」。
|
|
506
|
+
|
|
507
|
+
- **性能结论**:选中事件不进入逐帧渲染路径;两条事件共享同一批 `items`、分组对象与数组引用,不深拷贝。`selectFeatures()` 只在集合实际变化时发事件,同内容、同顺序的重设会在 `selectionKeys()`、引擎刷新与 `describeSelection()` 之前直接返回;`selectAt()` 每次成功命中发 `onSelect` 是既定语义。新增开销只随本次选中的通道 / 分组数增长。
|
|
508
|
+
- **载荷去重**:单通道只摊平顶层 `channelId` / `channelIndex` / `channel` / `groupId` / `groupIndex` / `group` / `groups`,不再生成 `channelContexts`;多通道才用 `channelContexts`。`items[]` 的通道回线只保留 `channelId` / `channelIndex` / `groupId` / `groupIndex` 标量,不重复挂 `group` / `groups`。指针事件仍保留自己的 `group` / `groups`。上一节逐条补充的口径已撤回。
|
|
509
|
+
- **索引与冗余**:`resolveChannels()` 同步维护 `channelGroupStatesByIndex`,状态上记录 `groupOrdinal`;`channelSiblings()` / `channelGroupOrdinal()` 变 O(1),分组读数从 O(组数 × 通道数) 降为 O(组数)。当前组改用组序号直取,删掉 `findIndex`、`state.order` 和建通道时重复的 `channels.filter(...)`。单通道选中不再构造随后丢弃的 `lineIndexes` / `lineIds`,多通道才在 `channelContexts` 里按选中顺序补一次。
|
|
510
|
+
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/steps/README.md`、`docs/manual/04-事件与回调.md`、`07-指针与要素编辑.md`、`09-通道与多回线.md`、`20-性能与大数据.md`、`src/gis-view/README.md` 与本轮 aimd。
|
|
511
|
+
- **验证**:`node --check src/gis-view/engine.js`、`node --check src/gis-view/create.js`、`npx tsc --noEmit`、`npm run build` 通过;五页定向自测 **1438** 条通过 / 0 失败(select 84 / features 672 / docs 134 / demos 365 / perf 183);`node docs/steps/gen-api-index.mjs --check` PASS(索引最新)、`npm run check:docs` 全 PASS(265 个实例成员 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关)、`git diff --check` 通过(仅有 CRLF 提示)。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-26-增量修改txt选中载荷去重与通道索引缓存)。
|
|
512
|
+
|
|
513
|
+
### 2026-10-26 增量(「修改.txt」:选中 items 去重与选中通道缓存)
|
|
514
|
+
|
|
515
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录最新的 `修改.txt`:「修改gis-view组件 1、onSelect和onSelectChange 参数最外层有通道信息,items里面的线路对象也有通道信息,是不是重复了,删减会不会提高性能 2、继续检查有没有类似重复参数会影响性能」。
|
|
516
|
+
|
|
517
|
+
- **载荷**:`items[]` 里的线路不再挂任何通道字段。单通道只在顶层给 `channelId` / `channelIndex` / `channel` / `groupId` / `groupIndex` / `group` / `groups` 与本次选中的 `lineIndexes` / `lineIds`;多通道只在 `channelContexts[]` 每项给同一套字段。`groups[].lineIds` 是整组成员,外层 `lineIndexes` / `lineIds` 是本次选中子集。线路归属看外层或 `getLineChannel(index)`。
|
|
518
|
+
- **实现**:`describe()` / `describeAll()` 增加 `{ withChannel: false }`;`describeSelection()` 与点击选中走它,`selectionPickOf()` 剥掉单击拾取结果的通道字段;`selectionChannelContexts()` 始终维护 `lineIndexes` / `lineIds`。组件侧 `syncSelections()` 从外层上下文建立“线路下标 → 通道”缓存,`selectionInfo` / 复制 / `getSelectionData()` 直接查表,数组换新时按引用失效,其他路径用引擎 O(1) `getLineChannel()` 补建;`refreshChannelLineReadouts()` 对选中项只刷新坐标读数。指针 / 悬停载荷改为先展开拾取结果再补 `action`,去掉重复赋值。
|
|
519
|
+
- **行为变化**:`getSelections()`、`getSelectionData().items` 的线路同样不带通道字段;事件外层与 `getLineChannel()` 是新的统一归属口径。`group === groups[groupIndex]`、`action.data === items` 都是共享引用,不复制内存,故保留。
|
|
520
|
+
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-select.html`、`docs/steps/selftest-features.html`、`docs/steps/README.md`、`docs/manual/04-事件与回调.md`、`07-指针与要素编辑.md`、`08-选中与拐点.md`、`09-通道与多回线.md`、`16-实例方法总表.md`、`17-参数速查.md`、`20-性能与大数据.md`、`src/gis-view/README.md`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
521
|
+
- **验证**:`node --check`(engine / create)、`npx tsc --noEmit`、`npm run build` 通过;`selftest-select.html` **85** 条、`selftest-features.html` **672** 条、`selftest-docs.html` **134** 条、`selftest-demos.html` **365** 条全部通过;`selftest-perf.html` **182 / 1**(既有标签定向重排读数断言,与选中链路无关)。`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(265 个实例成员 / 250 个数据字段 / 96 个 options / 43 个事件 / 17 个功能开关)通过;`git diff --check` 仅有 CRLF 提示。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-26-增量修改txt选中-items-去重与选中通道缓存)。
|
|
522
|
+
|
|
523
|
+
### 2026-10-27 增量(「修改.txt」:事件载荷去重与指针回调收口)
|
|
524
|
+
|
|
525
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求来源是仓库根目录 `修改.txt`(当前落盘内容已损坏为问号,按本轮实际落实的 gis-view 事件载荷去重与性能优化记录)。
|
|
526
|
+
|
|
527
|
+
- **单参数回调**:`onPointerDown` / `onPointerUp` / `onContextMenu` / `onClusterClick` 的实例回调、事件总线与内部监听统一只给一个 `payload`;原始 DOM 事件、鼠标键、修饰键和浏览器坐标都读 `payload.originalEvent`,不再另传第二个 `event`。
|
|
528
|
+
- **载荷去重**:删除 `payload.selection`、`action.data`、`action.button` / `action.modifiers` / `action.left` / `action.right`,指针载荷也不再复制 `button` / `buttons` / `clientX` / `clientY`。命中数据直接放载荷顶层:`item` / `channel` / `channelContext` / `items` / `lineIndex` / `pathIndex` / `coordinate` / `line` / `label` / `parent` 与聚合字段;`selected` / `wasSelected` 保留为事件时刻的状态快照。
|
|
529
|
+
- **替代入口**:选中集总读数改调新增的 `getSelectionInfo()`(按选中集引用缓存 `{ ids, count, points, lines, channels }`);右键线路读 `payload.index` / `payload.item.id`,再用 `getLineChannel(index)` 查通道;标签右键 / 双击的光标位置读 `payload.originalEvent`;复制改读 `payload.item` / `item.x` / `item.y` / `items[0]`,回写用 `payload.update()`。
|
|
530
|
+
- **性能**:`withPointerCoordinates()` 对引擎刚交出的载荷就地补 `lngLat`,高频指针 / 悬停路径不再逐次展开一份对象;同时去掉重复包装和已可推导的派生字段,减少载荷构造与遍历成本。
|
|
531
|
+
- **计数与文档**:公开实例成员变为 **266**(新增 `getSelectionInfo`),数据字段 250、options 96、事件 43、功能开关 17 未变。两份 README、manual 04/07/10/12/16/17/18/20、format/from0 教程、Event/Label/Basic/GisView demos、第 5/7/8/10/12 步与 7 个自测页都同步到新口径;第 5 步教学实现也改为单参数回调,第 7 步草稿载荷不再重复挂 `clientX` / `clientY`;README 与 steps/README 的当前计数同步到 266 / 261。
|
|
532
|
+
- **核心文件**:`src/gis-view/engine.js`、`create.js`、`overlay.js`、`events.js`、`types.d.ts`、`README.md`、`src/gis-view/README.md`、`docs/manual/04-事件与回调.md`、`07-指针与要素编辑.md`、`10-通道编辑与新增.md`、`12-标签与装饰.md`、`16-实例方法总表.md`、`17-参数速查.md`、`18-逐方法示例.md`、`20-性能与大数据.md`、`docs/format/07-事件载荷与示例数据.md`、`docs/from0/05-相机与交互.md`、`07-通道分组与多回线.md`、`docs/demos/**`、`docs/steps/**` 与本轮 aimd。
|
|
533
|
+
- **验证**:`node --check`(engine / create / overlay / events / step-05-pick / step-07-channels / step-12-events)、`npx tsc --noEmit`、`npm run build`、`git diff --check` 通过;`node docs/steps/gen-api-index.mjs --check` PASS,`npm run check:docs` PASS(266 / 250 / 96 / 43 / 17);7 页定向自测 **1611** 条通过 / 0 失败(actions 96 / labels 165 / features 672 / select 85 / full 94 / docs 134 / demos 365)。。
|
|
534
|
+
|
|
535
|
+
详细需求、替代入口与验证口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-27-增量修改txt事件载荷去重与指针回调收口)。
|
|
536
|
+
|
|
537
|
+
### 2026-10-27 增量(「问题.txt」:新增线路拆分、单一通道策略与解除合并分线)
|
|
538
|
+
|
|
539
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求来源是仓库根目录 `问题.txt` 的五条:把 `beginAddChannel` 拆成更规范的通道 / 线路入口;支持单一通道模式、已有通道失败事件与转为新增回线;已有通道时新回线可建新分组或并进指定分组;在 demo 中体现;优化解除合并并在 demo 中体现。
|
|
540
|
+
|
|
541
|
+
- **入口拆分**:新增公开方法 `beginAddLine()`,与 `beginAddChannel()` 共用 `beginExtendedAddDraft()`;前者固定线路语义,后者保留新建通道语义,旧写法 `beginAddChannel({ kind: 'line' })` 继续兼容。`beginAddLine` 在已有通道里加回线时,草稿 `kind` 仍是 `line`,真正落地成通道成员后结果 / `commit` / `blocked` 载荷的 `kind` 为 `channel`。
|
|
542
|
+
- **已有通道策略**:`singleChannel: true` 只约束 `beginAddChannel`,已有通道时等价于 `existingChannel: 'block'`;显式 `existingChannel` 支持 `block` / `newGroup` / `joinGroup` / `auto`,`joinGroup` 用 `groupId` / `groupIndex`(从 0 起、`groupId` 优先)指定分组。`beginAddLine` 不读 `singleChannel`,但可显式把新回线挂进已有通道;没有通道时始终落成独立线路。plan 与草稿载荷补 `singleChannel` / `existingChannel` / `targetGroupId` / `targetGroupIndex`。
|
|
543
|
+
- **失败语义**:被策略阻断的草稿停在 `ready`(`blocked: true`、`preferred: null`);无参或 `'auto'` 提交直接返回失败并发 `phase: 'blocked'`,不会自动改道偷偷新建。显式传可用的 `resolution` 仍可改道。失败结果补齐 `kind` / `circuits` / `plan` 等字段。
|
|
544
|
+
- **解除合并**:`splitPoint()` 新增 `autoLines: 'alternate'`:没显式分配的线路按「同一条通道的成员成组、独立线路单条」轮流给负载最少的一份,返回 `autoLines` / `autoAssignedLines` / `lineAssignments`(每份 `index` / `pointId` / `lineIds` / `lineCount`);缺省 `first` 保持旧行为。
|
|
545
|
+
- **Demo 与文档**:`ConnectDemo` 拆分线路 / 通道入口,新增预置两组已有通道、`singleChannel`、`existingChannel`、目标分组控件与 blocked 读数;`CopyMergeDemo` 把拆分节点改成「解除合并」,用 `autoLines: 'alternate'` 并显示自动分线数、每份回线数与通道成组结果。两份 README、manual 07/10/16/17/18、from0/07、GisView 索引、steps/README、selftest-docs 与生成的 `docs/demos/api-index.js` 同步。
|
|
546
|
+
- **计数**:公开实例成员 **267**(**262** 个方法 + 5 个属性),数据字段 250、options 96、事件 43、功能开关 17 未变。
|
|
547
|
+
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/demos/ConnectDemo.vue`、`docs/demos/CopyMergeDemo.vue`、`docs/steps/selftest-features.html`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-docs.html`、`README.md`、`src/gis-view/README.md`、`docs/GisView.md`、`docs/manual/07-指针与要素编辑.md`、`docs/manual/10-通道编辑与新增.md`、`docs/manual/16-实例方法总表.md`、`docs/manual/17-参数速查.md`、`docs/manual/18-逐方法示例.md`、`docs/from0/07-通道分组与多回线.md`、`docs/steps/README.md`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
548
|
+
- **验证**:`node --check`(engine / create)、`npx tsc --noEmit`、`npm run build`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(267 / 250 / 96 / 43 / 17)与 `git diff --check` 全部通过。定向自测 `selftest-features.html` **683** 条、`selftest-demos.html` **373** 条、`selftest-docs.html` **134** 条全部通过;全量 14 页 **2355** 条通过 / **3** 条失败,其余 12 页全过。失败为 `selftest-perf.html` 既有的标签定向重排读数 1 条,以及 `selftest-scale.html` 的筛选重算计数 2 条(单页复跑仍复现,均不涉及本轮修改链路)。
|
|
549
|
+
|
|
550
|
+
### 2026-10-27 增量(「修改.txt」:新增默认选中参数化、删除旧兼容与 addLine 增量)
|
|
551
|
+
|
|
552
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条统计。需求来源是仓库根目录 `修改.txt` 三条(新增通道 / 节点 / 线路是否默认选中改为参数决定;取消所有方法的旧版兼容写法;继续优化性能)与 `问题.txt`(修改 gis-view 组件)。
|
|
553
|
+
|
|
554
|
+
- **默认选中参数化**:`addChannel` / `addChannelGroupLines` / `joinChannelGroupLines` / `addChannelGroups` / `addChannels` / `addLine` / `addPoint` / `addPoints` / `addLines` 缺省都不改变选中集,只有 `options.select: true` 才选中落地的新要素。草稿的 `select` 仍只控制点中的节点,不等于“落地后选中”;`commitAddChannel` 的 `select` 也显式控制新回线。
|
|
555
|
+
- **统一新签名**:程序化新增的第二段统一为 `lineData`,裸字符串 / 数字 id 等价于 `{ id }`;草稿配置与载荷也改名 `lineData`。`addChannel(spec, lineData?, group?, options?)` 只负责新建通道,两端已有通道时明确失败;并组 / 新组分别走 `joinChannelGroupLines` / `addChannelGroupLines`。`beginAddChannel` 固定通道语义、`beginAddLine` 固定线路语义;`commitAddChannel` 只接受一个容器对象(`channel` / `line` / `lines` / `lineData` / `channelGroups` / `group` 等)。
|
|
556
|
+
- **旧兼容删除**:上述方法不再接受 `circuits` / `kind` / `resolution` / `channelId` / `groupId` / `lineItems` 等旧分派字段,命中时明确失败且不写数据;`focusOn` / `flyTo` 删除 `center: true`,`selectInBox` 删除旧 Event 重载,类型删除 `GisViewChannelAddInput` / `GisViewChannelLineItems`。旧 `lineItems` 在草稿入口只告警忽略,不再参与落地。
|
|
557
|
+
- **性能与回归修复**:`engine.canAppendLines()` 不再因存在通道声明直接拒绝,追加末尾独立线路时仍可走增量解析;无筛选时 `addItems()` 不再空跑 `applyFilter()`。批量 `addChannelGroups` 的 `defer` 路径改为从本地 `channels` 重写分组表,避免第二组用引擎旧快照覆盖第一组;同时修正草稿无参 / `autoCommit` 提交时 `lineData` 未转入落地参数的回归。`selftest-perf.html` 增加有通道声明时 `addLine` 的场景一致性、通道声明不变与“最快一次 × 5 < 整份重排”断言。
|
|
558
|
+
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-features.html`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-perf.html`、`README.md`、`src/gis-view/README.md`、`docs/manual/02/06/10/14/16/17/18/19/21`、`docs/from0/07-通道分组与多回线.md`、`docs/demos/api-index.js`(生成物)与本轮 aimd。
|
|
559
|
+
- **验证**:`node --check`(create / engine)、`npx tsc --noEmit`、`npm run build`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs` 全部通过;公开计数保持 **267**(**262** 方法 + **5** 属性)、数据字段 **250**、options **96**、事件 **43**、功能开关 **17**。全量 14 页自测 **2379** 条通过 / **2** 条失败;失败仅为 `selftest-scale.html` 既有的筛选重算计数 2 条(`onFilter 0 条`,单独复现,不涉及本轮新增链路)。`selftest-features` 704、`selftest-demos` 373、`selftest-perf` 185 均全过。
|
|
560
|
+
|
|
451
561
|
## 六、怎么自己复查
|
|
452
562
|
|
|
453
563
|
会话文件是逐行 JSON,不用整份读 —— 只挑两种行解析就够:`session_meta` 行里的 `payload.cwd` 认项目,`payload.type === 'user_message'` 行里的 `payload.message` 是用户原话:
|
package/docs/demos/BasicDemo.vue
CHANGED
|
@@ -25,14 +25,14 @@ let statsDrawnAt = Number.NEGATIVE_INFINITY
|
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* 事件载荷压成一行:`action.target` 说清点到了哪一类(point / line / channel / empty),
|
|
28
|
-
*
|
|
28
|
+
* 命中的数据在载荷顶层(点 / 线读 item,通道读 channel,标签读 label)—— 指针事件的载荷结构见 docs/数据格式.md。
|
|
29
29
|
*/
|
|
30
30
|
const describeTarget = (payload) => {
|
|
31
31
|
if (!payload) {
|
|
32
32
|
return '空白(清除选中)'
|
|
33
33
|
}
|
|
34
34
|
const target = payload.action?.target ?? payload.kind ?? payload.type ?? '—'
|
|
35
|
-
const data = payload.
|
|
35
|
+
const data = payload.item ?? payload.channel ?? payload.label ?? payload.line ?? null
|
|
36
36
|
const id = Array.isArray(data)
|
|
37
37
|
? `${data.length} 项`
|
|
38
38
|
: data?.id ?? data?.name ?? payload.id ?? payload.index ?? '—'
|
|
@@ -119,21 +119,21 @@ const addChannelBatch = () => runAction('addChannels', () => {
|
|
|
119
119
|
name: `批量通道 ${currentRound}-A`,
|
|
120
120
|
from: picked[0].id,
|
|
121
121
|
to: picked[2].id,
|
|
122
|
-
circuits: 2,
|
|
123
122
|
path: [[Number((middle[0] + normal[0]).toFixed(5)), Number((middle[1] + normal[1]).toFixed(5))]],
|
|
124
|
-
|
|
123
|
+
lineData: [
|
|
124
|
+
{ vn_kv: 525, max_loading_rate: 0.82 },
|
|
125
|
+
{ vn_kv: 525, max_loading_rate: 0.82 }
|
|
126
|
+
]
|
|
125
127
|
},
|
|
126
128
|
{
|
|
127
129
|
id: `batch-channel-${currentRound}-b`,
|
|
128
130
|
name: `批量通道 ${currentRound}-B`,
|
|
129
131
|
from: picked[1].id,
|
|
130
132
|
to: picked[3].id,
|
|
131
|
-
circuits: 1,
|
|
132
133
|
path: [[Number((middle[0] - normal[0]).toFixed(5)), Number((middle[1] - normal[1]).toFixed(5))]],
|
|
133
|
-
|
|
134
|
+
lineData: [{ vn_kv: 230, max_loading_rate: 0.61 }]
|
|
134
135
|
}
|
|
135
|
-
])
|
|
136
|
-
view.selectFeatures(result.lineIds)
|
|
136
|
+
], { select: true })
|
|
137
137
|
return `addChannels → ${result.count} 条通道 · ${result.channelIds.join(' / ')} · ${result.lineIds.length} 条回线`
|
|
138
138
|
})
|
|
139
139
|
|