gis-view-webgl2 0.1.0 → 0.1.2
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 +40 -8
- package/dist/gis-view.css +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1036 -249
- package/dist/index.js +1 -1
- package/docs/AI/345/257/271/350/257/235/346/261/207/346/200/273.md +194 -0
- package/docs/GisView.md +9 -8
- package/docs/GisView/345/256/236/347/216/260/345/216/237/347/220/206.md +2 -2
- 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 +172 -0
- package/docs/api/index.html +545 -59
- package/docs/demos/BackendSyncDemo.vue +10 -8
- package/docs/demos/BasicDemo.vue +101 -101
- package/docs/demos/BatchAddDemo.vue +5 -5
- package/docs/demos/ChannelDemo.vue +617 -10
- package/docs/demos/ConnectDemo.vue +392 -0
- package/docs/demos/CopyMergeDemo.vue +980 -929
- package/docs/demos/DecorationDraftDemo.vue +1300 -0
- package/docs/demos/DemoShell.vue +569 -240
- package/docs/demos/DragDropDemo.vue +11 -11
- package/docs/demos/EffectsDemo.vue +6 -6
- package/docs/demos/EventDemo.vue +327 -327
- package/docs/demos/ExtensionDemo.vue +458 -0
- package/docs/demos/GisViewDemo.vue +61 -48
- package/docs/demos/GraphicDemo.vue +338 -0
- package/docs/demos/LabelDemo.vue +553 -497
- package/docs/demos/MinimapDemo.vue +358 -0
- package/docs/demos/PerfDemo.vue +29 -0
- package/docs/demos/SearchFilterDemo.vue +412 -0
- package/docs/demos/StyleDemo.vue +121 -121
- package/docs/demos/api-index.js +98 -77
- package/docs/demos/demos.js +159 -135
- package/docs/demos/shared/demoData.js +107 -107
- package/docs/demos/shared/demoStyle.css +249 -249
- package/docs/demos/shared/fakeBackend.js +93 -6
- package/docs/format/03-/346/213/220/347/202/271/350/243/205/351/245/260/344/270/216/346/240/267/345/274/217.md +28 -8
- package/docs/format/04-/351/200/232/351/201/223/344/270/216/346/240/207/347/255/276.md +5 -4
- package/docs/format/06-/345/257/274/345/205/245/345/257/274/345/207/272/344/270/216/346/240/207/345/207/206/346/226/207/346/241/243.md +8 -6
- 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 +6 -6
- package/docs/guide/sample-document.html +4 -4
- package/docs/index.html +180 -9
- package/docs/internals/11-/350/246/206/347/233/226/345/261/202/346/240/207/347/255/276/344/270/216/346/217/220/347/244/272.md +1 -1
- package/docs/internals/13-/351/271/260/347/234/274/345/233/276.md +3 -2
- package/docs/internals/15-03-/351/200/220/350/275/256/350/256/260/345/275/225-/346/200/247/350/203/275/344/270/216/344/277/256/345/244/215-/344/270/213.md +16 -0
- package/docs/internals/16-03-/344/274/230/345/214/226/344/270/216/345/217/226/350/210/215-/344/270/213.md +11 -0
- package/docs/internals/17-/350/260/203/350/257/225/344/270/216/346/211/251/345/261/225/345/273/272/350/256/256.md +1 -1
- package/docs/manual/02-/345/235/220/346/240/207/344/270/216/346/225/260/346/215/256.md +18 -4
- package/docs/manual/03-/351/205/215/347/275/256/351/241/271.md +110 -25
- package/docs/manual/04-/344/272/213/344/273/266/344/270/216/345/233/236/350/260/203.md +13 -8
- 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 +111 -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 +47 -9
- package/docs/manual/08-/351/200/211/344/270/255/344/270/216/346/213/220/347/202/271.md +17 -15
- package/docs/manual/09-/351/200/232/351/201/223/344/270/216/345/244/232/345/233/236/347/272/277.md +61 -11
- 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 +74 -7
- package/docs/manual/11-/346/240/267/345/274/217/344/270/216/350/247/204/345/210/231.md +3 -2
- package/docs/manual/12-/346/240/207/347/255/276/344/270/216/350/243/205/351/245/260.md +260 -3
- package/docs/manual/13-/345/212/250/346/225/210/344/270/216/345/233/276/345/205/203.md +6 -5
- package/docs/manual/14-/350/247/206/345/233/276/344/270/216/347/255/233/351/200/211.md +27 -14
- package/docs/manual/15-/345/257/274/345/207/272/344/270/216/351/233/206/346/210/220.md +142 -49
- package/docs/manual/16-/345/256/236/344/276/213/346/226/271/346/263/225/346/200/273/350/241/250.md +31 -29
- package/docs/manual/17-/345/217/202/346/225/260/351/200/237/346/237/245.md +55 -39
- package/docs/manual/18-/351/200/220/346/226/271/346/263/225/347/244/272/344/276/213.md +189 -64
- 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 +4 -4
- package/docs/manual/20-/346/200/247/350/203/275/344/270/216/345/244/247/346/225/260/346/215/256.md +42 -2
- 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 +22 -6
- package/docs/playground/index.html +5 -5
- package/docs/steps/README.md +14 -10
- package/docs/steps/check-doc-truth.mjs +1 -1
- package/docs/steps/selftest-actions.html +10 -10
- package/docs/steps/selftest-data.html +96 -14
- package/docs/steps/selftest-decoration.html +577 -0
- package/docs/steps/selftest-demo.html +6 -5
- package/docs/steps/selftest-demos.html +2201 -1612
- package/docs/steps/selftest-docs.html +89 -16
- package/docs/steps/selftest-effects.html +5 -5
- package/docs/steps/selftest-features.html +757 -86
- package/docs/steps/selftest-full.html +583 -583
- package/docs/steps/selftest-labels.html +1034 -652
- package/docs/steps/selftest-perf.html +1899 -1844
- package/docs/steps/selftest-scale.html +117 -7
- package/docs/steps/selftest-select.html +24 -17
- package/docs/steps/step-10-full.js +1 -1
- package/docs//346/216/245/345/217/243/345/215/217/350/256/256.md +167 -17
- package/docs//346/225/260/346/215/256/346/240/274/345/274/217.md +1 -1
- package/package.json +43 -43
- package/docs/demos/HistoryDemo.vue +0 -230
- package/docs/demos/InterfaceDemo.vue +0 -309
- package/docs/demos/SampleDemo.vue +0 -283
|
@@ -19,3 +19,197 @@
|
|
|
19
19
|
- **「十万级是怎么做到的」**:[02 的 2.4 性能](ai/02-按内容分类-这一路都在改什么.md) 与 [04 的百万级会话](ai/04-重要问答选(二):交互性能与数据.md);实测数据在 [实现原理 18](internals/18-性能实测与WebGPU评估.md)。
|
|
20
20
|
- **「拐点 / 分组跟后端怎么对接」**:[04 的超长会话](ai/04-重要问答选(二):交互性能与数据.md)(配套 demo `?demo=backend`)。
|
|
21
21
|
- **「某一轮到底改了什么」**:先看 [06 的会话索引](ai/06-会话索引与复查方法.md),再翻 [实现原理的逐轮记录](internals/15-01-逐轮记录-新增与修复.md)。
|
|
22
|
+
|
|
23
|
+
## 2026-10-20 增量:装饰位置来源与吸附关系解耦
|
|
24
|
+
|
|
25
|
+
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:① 修改装饰 Demo,吸附方式只有「跟随 / 固定」,跟随也能选鼠标位置,固定也能选与跟随一样的设置,两种方式的区别只是落地后跟随或固定,可添加的位置完全一样;② 继续检查组件有没有可简化优化的地方,可以破坏原有语义。
|
|
26
|
+
|
|
27
|
+
- **位置来源与落地关系解耦**:节点草稿的 `placement` 收窄为位置来源(`offset` 相对节点 / `fixed` 固定坐标 / `pointer` 鼠标位置),新增 `anchor` 表示落地关系(`follow` 保留相对节点的屏幕偏移 / `fixed` 保留世界坐标)。六种组合都可预览、避让与提交;缺省仍按 `offset → follow`、`fixed / pointer → fixed` 推导,兼容旧调用。重复避让与最终数据生成只读取 `candidate.anchor`。
|
|
28
|
+
- **Demo 改为正交控件**:`docs/demos/DecorationDraftDemo.vue` 的「吸附方式」只保留跟随 / 固定,「位置来源」始终显示相对节点 / 固定位置 / 鼠标位置三档;方向距离、世界坐标与指针提示按来源切换,日志、命中读数和确认文案统一显示「落地关系 · 位置来源」组合。`usePointerAsFixed()` 只填坐标并切来源,不再偷偷改吸附方式。
|
|
29
|
+
- **类型与内部简化**:删除 `GisViewPointDecoration.placement` 与 `anchor` 重叠的旧别名,节点数据只保留 `anchor: 'offset' | 'fixed'`;草稿候选去掉未使用的 `placement` / `at` 临时字段。实例成员 / 数据字段 / options / 功能开关 / 分组计数保持 **241 / 238 / 90 / 18 / 16**。
|
|
30
|
+
- **文档与自测**:同步 `docs/manual/12` / `16` / `17` / `18`、`docs/steps/README.md`、`README.md`、`src/gis-view/README.md` 与 `docs/demos/api-index.js`。`selftest-demos.html` 新增 3 条(两档三来源与映射)、`selftest-decoration.html` 新增 6 条跨组合断言(`pointer + follow`、`fixed + follow`、`offset + fixed` 的预览与提交)。
|
|
31
|
+
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/demos/DecorationDraftDemo.vue`、`docs/demos/api-index.js`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-decoration.html`、`docs/manual/12-标签与装饰.md`。
|
|
32
|
+
- **验证**:14 个自测页 **2031** 条通过 / 0 失败(`selftest-decoration` 75、`selftest-demos` 286、`selftest-features` 582、`selftest-docs` 130);`npx tsc --noEmit`、`npm run check:docs`(241 个成员 / 238 个方法 / 238 个数据字段 / 90 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-20-增量装饰位置来源与吸附关系解耦)。
|
|
33
|
+
|
|
34
|
+
## 2026-10-20 增量:装饰吸附分级与重复快捷方法收口
|
|
35
|
+
|
|
36
|
+
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:① 修改装饰 Demo,吸附方式只保留「跟随 / 固定」,吸附位置再分「固定位置 / 鼠标位置」;② 继续检查 gis-view 有没有可简化和优化的地方。
|
|
37
|
+
|
|
38
|
+
- **装饰吸附分级**:`docs/demos/DecorationDraftDemo.vue` 的节点装饰面板改成两级控件:吸附方式只给「跟随 / 固定」,固定档再选「固定位置 / 鼠标位置」;映射仍是 `placement: 'offset' / 'fixed' / 'pointer'`,鼠标位置档不传 `at`,并把草稿提示、日志与读数统一到新叫法。`selftest-demos.html` 新增 3 条断言验两级选项、固定档默认值与鼠标位置档的载荷。
|
|
39
|
+
- **重复快捷入口收口**:删除 `setEffects` / `setPointSize` / `setPointSymbol` / `setPointColor` / `setLineWidth` / `setLineColor` / `setChannelWidth` / `setChannelNodeWidth` / `setChannelInset` / `setChannelTangentInset` / `setChannelName` / `clearFilter` / `clearDropPreview` 共 13 个只做转发的实例方法,分别统一到 `updateOptions({ effects })` / `updatePoint` / `updateLine` / `updateChannel` / `setFilter(null)` / `setDropPreview(null)`;保留 `movePoint`、`setLineWaypoints`、`setChannelPath`、`setChannelLineWidth`、`setChannelColors` 等带复合语义的入口。实例成员 254 → **241**(方法 251 → **238**,属性 3)。
|
|
40
|
+
- **通道窄读**:引擎把通道快照抽成 `channelInfoSnapshot()`,`getChannels()` 与新增的 `getChannel(channelId, index)` 共用;组件 `getChannel()` 按目标通道取一份,不再先复制全部通道再查找。`selftest-features.html` 新增 1 条断言确认 13 个旧入口已移除、统一入口仍在。
|
|
41
|
+
- **文档、Demo 与核心文件**:迁移 `docs/demos`、`docs/playground`、手册、README、类型与自测里的旧调用;同步 `docs/manual/12-标签与装饰.md` 的两级吸附说明与 241 个成员计数。核心文件为 `src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/demos/DecorationDraftDemo.vue`、`docs/demos/api-index.js`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-features.html`。
|
|
42
|
+
- **验证**:14 个自测页 **2022** 条通过 / 0 失败(`selftest-features` 582、`selftest-demos` 283、`selftest-docs` 130);`npx tsc --noEmit`、`npm run check:docs`(241 个成员 / 238 个方法 / 238 个数据字段 / 90 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-20-增量装饰吸附分级与重复快捷方法收口)。
|
|
43
|
+
|
|
44
|
+
## 2026-10-20 增量:性能收口与重复实例入口合并
|
|
45
|
+
|
|
46
|
+
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:「继续优化组件性能、可扩展性和二次开发性;检查实例方法、属性、事件中的重复 / 多余 / 可合并项,进行合并删除」。
|
|
47
|
+
|
|
48
|
+
- **重复实例入口合并**:删除 `select` / `updatePoints` / `updateLines` / `updateChannels` 四个实例方法,分别统一到 `selectFeatures` 与 `updateData({ points | lines | channels })`;内部 8 处 `instance.select(...)` 同步迁移,`patchPoints` / `patchLines` 的定向补丁语义保留,`updatePoints` / `updateLines` 仅作为这两条路径的数据变更事件名继续存在。实例成员从 258 收到 **254**(方法 255 → **251**),属性仍为 3 个。
|
|
49
|
+
- **视口通道读取**:`getChannelsInView()` 不再调用 `listLines({ inView: true })` 生成整份线路快照,改为 `getViewRect()` + `forEachLineInView()` 单遍遍历,并用 O(1) 的 `getLineChannel(index)` 聚合通道与分组;`getLineChannel()` 的 group 读数改走新增的引擎窄查询 `getChannelGroup(channelId, groupId)`,不再复制整条通道的全部分组。
|
|
50
|
+
- **WebGL 卸载安全**:`addWebGLLayer()` 返回的卸载函数会先确认同 id 的当前层仍挂着自己那一份 `draw`;同 id 被后加的层覆盖后,旧卸载函数不会误删新层。
|
|
51
|
+
- **Demo、手册与自测迁移**:`docs/demos`、`docs/guide`、`docs/steps` 中的调用与文案统一到新入口,手册删除旧方法行、近义入口与事件类型 `updateChannels`,同步 `README.md`、`src/gis-view/README.md`、`docs/GisView.md` 的成员计数(**254** / 251 个方法 / 3 个属性);数据字段 / options / 功能开关 / 分组计数保持 **238 / 90 / 18 / 16**。
|
|
52
|
+
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`README.md`、`src/gis-view/README.md`、`docs/GisView.md`、`docs/manual/04` / `06` / `07` / `08` / `10` / `12` / `14` / `16` / `17` / `18` / `21`、`docs/demos/api-index.js` 与相关 demo / 自测页。
|
|
53
|
+
- **验证**:14 个自测页 **2018** 条通过 / 0 失败(`selftest-features` 581、`selftest-demos` 280、`selftest-select` 60);`npx tsc --noEmit`、`npm run check:docs`、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-20-增量性能收口与重复实例入口合并)。
|
|
54
|
+
|
|
55
|
+
## 2026-10-20 增量:通道预览扩展、旧导出收口与 WebGL 自定义层
|
|
56
|
+
|
|
57
|
+
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:「修改gis-view组件 1、beginAddChannel方法,预览样式可以自定义,包括箭头位置等,一定要可扩展,如果选择通道的时候,那么预览也要是通道效果,触发连接事件后,如果已经点了起点之后再次点击到除了节点以外的地方直接取消事件 2、旧导出方法不用保留,有些方法没必要,为什么既要exportStationData又要exportPointData 3、可以直接拿到组件本体,然后在本体上直接使用webgl的方法手动绘制,以便提高组件的可扩展性」。
|
|
58
|
+
|
|
59
|
+
- **通道草稿预览**:`beginAddChannel` 支持本次专属 `channelDraftStyle`,并新增 `updateAddChannelStyle(patch)`(传 `null` 回到全局样式)。样式可配 `color` / `width` / `dot` / `dotColor` / `arrow` / `arrowSize` / `arrowPositions` / `arrowReverse` / `arrowColor` / `circuitSpacing` / `opacity` / `customDraw`;多回线按间距生成平行路径并逐条画箭头,`arrowPositions` 按弧长归一化,单值或数组都可。`customDraw` 可拿到 `gl`、`canvas`、`viewport`、`camera`、`path`、`circuitPaths`、`circuits`、`kind`、`phase`、`style`、投影函数与 `requestRender`,并在回调结束后恢复内置绘制依赖的 GL 状态。
|
|
60
|
+
- **空白取消**:已点起点后,再点节点以外的位置会直接结束草稿并清空;`onChannelDraft` 与 `onChannelDraftClick` 都会收到 `phase: 'cancel'`、`reason: 'click-outside-node'`。尚未点起点时点空白仍只发 `pick`,不取消草稿。
|
|
61
|
+
- **旧导出收口**:删除 `exportViewportData`、`exportSelectionData`、`exportStationData`、`exportPointData`、`exportLineData`、`exportChannelData`、`exportParallelGroups` 七个实例方法,统一走 `exportData({ scope: 'all' | 'viewport' | 'selection', parts, format })`;`format: 'new'` 补齐 `box: false` / `showStation: false`,完整承接原场站导出口径。
|
|
62
|
+
- **WebGL 自定义绘制**:实例直接暴露 `gl` 与 `requestRender()`,新增 `addWebGLLayer` / `updateWebGLLayer` / `removeWebGLLayer` / `clearWebGLLayers` / `getWebGLLayers`,顶层也支持 `options.webglLayers`。自定义层在内置内容与 offscreen blit 之后按 `order` 绘制,可设 `enabled`,每层开画前重置 framebuffer / viewport / blend / scissor / stencil / VAO / buffer 等状态;`draw` 异常只上报一次,`addWebGLLayer` 返回卸载函数。层只影响画面,不参与拾取、场景解析或导出。
|
|
63
|
+
- **Demo 与核心文件**:`docs/demos/ConnectDemo.vue` 演示 3 回通道、箭头位置 / 回线间距 / 颜色 / 线宽与空白取消读数;`docs/demos/ExtensionDemo.vue` 新增 WebGL 自定义层扩展点(挂载 / 隐藏 / 排序 / 卸载 / `requestRender`);`BackendSyncDemo.vue` 与 `GisViewDemo.vue` 的导出改为统一入口。核心改动在 `src/gis-view/engine.js`、`create.js`、`types.d.ts`、`export-formats.js`,并同步 `README.md`、`src/gis-view/README.md`、`docs/manual/02` / `03` / `15` / `16` / `17` / `18` / `20` / `21`、`docs/format/03` / `06`、`docs/steps/README.md`、`docs/demos/api-index.js` 与相关自测页。
|
|
64
|
+
- **验证**:14 个自测页 **2015** 条通过 / 0 失败;`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 238 个数据字段 / 90 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-20-增量通道预览扩展旧导出收口与-webgl-自定义层)。
|
|
65
|
+
|
|
66
|
+
## 2026-10-20 增量:API 文档视觉、性能降级、箭头统一与导出收口
|
|
67
|
+
|
|
68
|
+
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:「修改gis-view组件 1、现在文档页面的展示效果还是不好,参考echarts或者antd那种效果,让配置项,方法和参数一目了然 2、从性能上继续优化组件 3、新增的连接demo问为么箭头在前面,添加后就到中间,不统一 4、优化大数据下的展示效果,增加动态开关,当数据量过大过密的时候,提高显示效果 5、检测导出方法,有些方法是否重复,比如导出节点和导出场站等,合并优化去重,比如导出数据可以导出可视区域也可以导出全部当成一个方法不同传参,同理线路,节点等也能当作参数,这样导出方法就比较清晰」。
|
|
69
|
+
|
|
70
|
+
- **API 文档页**:`docs/api/index.html` 重做顶部导航、检索、Hero、统计卡、成员卡与 options 分组表格;`docs/demos/api-index.js` 同步生成,让配置项 / 方法 / 参数层级一目了然。
|
|
71
|
+
- **性能与动态降级**:`src/gis-view/create.js` 新增 `denseMode: 'auto' | 'on' | 'off'`(兼容布尔值和阈值对象)。自动档在可见节点 4000、每百万 CSS 像素 3000 点或总量 50000 时触发,带 160ms 判定延迟与 78% 退出回滞;密集档内标签走优化档、引擎关 `effects`,并通过 `getStats().dense` 暴露状态与原因。`src/gis-view/overlay.js` 只在标签优化档真正切换时刷新标签,避免打断线路标签候选复用。
|
|
72
|
+
- **连接箭头统一**:`src/gis-view/engine.js` 的 `channelDraftArrowPlacement(path)` 按整条折线弧长找中点,返回 `center / unitX / unitY`;预览箭头改用与落地 `direction.count: 1` 相同的中心算法和 16×16 内置轮廓,避免「预览在端点、落地在中间」。
|
|
73
|
+
- **导出 API 收口**:统一主入口 `exportData({ scope, parts, format })`,`scope` 支持 `all / viewport / selection` 及同义词;节点 / 线路 / 通道 / 拐点通过 `parts` 选择。旧 `exportViewportData`、`exportSelectionData`、`exportStationData`、`exportPointData`、`exportLineData`、`exportChannelData`、`exportParallelGroups` 保留兼容;新视口导出的 `full / input / 自定义格式` 保持原始结果,旧视口别名仍补 `viewRect / margin`。修复 `exportParallelGroups` 对非法通道引用的重复告警。
|
|
74
|
+
- **核心文件与文档**:`src/gis-view/create.js`、`engine.js`、`overlay.js`、`types.d.ts`、`docs/api/index.html`、`docs/demos/api-index.js`、`docs/demos/PerfDemo.vue`,并同步 `README.md`、`src/gis-view/README.md`、`docs/manual/03` / `15` / `16` / `17` / `18` / `20` / `21`、`docs/steps/README.md` 与相关自测页。
|
|
75
|
+
- **验证**:13 个自测页 **1974** 条通过 / 0 失败;`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 237 个数据字段 / 89 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-20-增量api-文档视觉性能降级箭头统一与导出收口)。
|
|
76
|
+
|
|
77
|
+
## 2026-10-20 增量:无通道连线与可视化连线构建器
|
|
78
|
+
|
|
79
|
+
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:「1、当前组件如果没有 channel 也可以独立运行吗,比如我只想用 line 和 point 做连接关系图 2、优化组件的可视化添加通道和线路的功能,比如可以添加一些常规的线,比如带箭头的线,带转折的线等,同时增加 demo,优化这个可视化配置功能性 3、可视化的时候视图上显示的线可以自定义配置,可以取消添加,也可以使用默认添加,也可以使用 addLines 或者 addChannels 方法真实添加」。
|
|
80
|
+
|
|
81
|
+
- **无通道模式**:`channels` 保持可选,省略或写 `channels: []` 时点、线、选中与新增照常工作;`lines[].path` / `direction` / `lineType` 都不依赖通道声明。新增 Demo 从空通道数据启动,专门验证纯点 + 线场景。
|
|
82
|
+
- **可视化连线**:草稿新增 `routing: 'straight' | 'orthogonal'` 与 `path`(中间拐点);`orthogonal` 在没有有效拐点时自动补 `[to.x, from.y]`。`line.js` 的 `resolveRoutedPath` 由草稿预览与真实落地共用,`channelDraftStyle` 增加 `arrow` / `arrowSize`,预览按折线逐段绘制,草稿期间改样式立即重绘;真实线路箭头仍由 `direction` 控制。
|
|
83
|
+
- **落地方式**:`onChannelDraft` / `onChannelDraftClick` 载荷带 `routing` / `path`;`cancelAddChannel()` 取消且不改数据,`commitAddChannel()` 默认落地并完整传递路由,`addLines` / `addChannels` 可自行落地。独立线路写完整 `path`,通道 / 新分组只写中间拐点。
|
|
84
|
+
- **Demo 与文档**:新增 `docs/demos/ConnectDemo.vue` 并注册 `?demo=connect`,可切独立线路 / 2 回 / 3 回通道、直线 / 正交折线、颜色 / 线宽 / 箭头,并演示取消、默认提交与两种自定义落地;演示页签更新为 **20 页**(19 个功能页 + 综合示例)。同步 `README.md`、`src/gis-view/README.md`、`docs/manual/03` / `04` / `06` / `10` / `16` / `17` / `21`、`docs/steps/README.md`、`docs/demos/api-index.js` 与 `docs/steps/selftest-demos.html`。
|
|
85
|
+
- **核心文件**:`src/gis-view/line.js`、`engine.js`、`create.js`、`types.d.ts`、`docs/demos/ConnectDemo.vue`、`docs/demos/demos.js`。
|
|
86
|
+
- **验证**:14 个自测页 **1975** 条通过 / 0 失败(`selftest-demos.html` 272 条);`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-20-增量无通道连线与可视化连线构建器)。
|
|
87
|
+
|
|
88
|
+
## 2026-10-20 增量:鹰眼图交互与页面展示
|
|
89
|
+
|
|
90
|
+
这一轮仍是现有会话的继续增量,没有独立会话归档文件,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:「修改gis-view组件 1、继续优化鹰眼图,考虑功能完整性,可拓展性,性能等方面 2、帮我删除一些没什么必要的demo 比如InterfaceDemo.vue等,同时优化一些demo的表现形式 3、优化一些md页面的表现形式」。
|
|
91
|
+
|
|
92
|
+
- **鹰眼图交互与扩展**:`src/gis-view/minimap.js` 的 `layers` 新增 `placement: 'below-data' | 'above-data'`,网格、分区底色这类内容可以放到节点与线路之下;`setOptions` 时按段和 `order` 预排一次,绘制帧不再逐层 `map` / `filter` / `sort`。绘制回调新增 `stage`,旧的单层 `draw` 固定最后执行(`stage: 'overlay'`);新增 `onInteraction`,在框拖动、框选、小图平移、小图缩放、滚轮缩放主图、长按跟随时发一条带 `local` / `world` / `zoom` / `extent` / `camera` / `viewport` 的通知,没有位移的点击与 `pointermove` 都不触发。小图根节点补了 `role=region` 与 `aria-label=鹰眼图`。
|
|
93
|
+
- **Demo 精简与分组**:删除 `InterfaceDemo.vue`、`HistoryDemo.vue`、`SampleDemo.vue`,注册表收敛为 **19 页**(18 个功能页 + 综合示例);`DemoShell.vue` 改为六个分组按钮 + 当前组页签,组名直接可见,一次只展开一组。`MinimapDemo.vue` 增加 `placement` 切换、`drawInfo.stage` 与手势读数,`api-index.js` 同步鹰眼图相关 options 描述。
|
|
94
|
+
- **Markdown 展示**:`docs/index.html` 把 H1 后紧随的引用渲染成「摘要」卡片,没有引用时把首段抬成导语,并在元信息增加按去空白字符估算的阅读时长;`selftest-docs.html` 覆盖摘要、导语与时长,`selftest-demos.html` 覆盖分组导航、19 个页签与鹰眼图新交互。
|
|
95
|
+
- **文档同步**:更新 `README.md`、`src/gis-view/README.md` 与 `docs/manual/02` / `03` / `06` / `14` / `15` / `21`、`docs/internals/13`、`docs/format/07`、`docs/steps/README.md` 和相关自测页;其中 `docs/format/07` 已把原先指向已删除 `?demo=samples` 的入口改成样本文件与导出对账口径。
|
|
96
|
+
- **核心文件**:`src/gis-view/minimap.js`、`types.d.ts`、`docs/demos/DemoShell.vue`、`MinimapDemo.vue`、`demos.js`、`api-index.js`、`docs/index.html`、`docs/steps/selftest-demos.html`、`selftest-docs.html`、`docs/manual/14-视图与筛选.md`。
|
|
97
|
+
- **验证**:14 个自测页 **1964** 条通过 / 0 失败(`selftest-demos` 261、`selftest-docs` 126、`selftest-labels` 135);`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-20-增量鹰眼图交互与页面展示)。
|
|
98
|
+
|
|
99
|
+
## 2026-10-20 增量(「修改.txt」三条:标签拖动晃动 / 清晰度 / 鹰眼图扩展)
|
|
100
|
+
|
|
101
|
+
这是现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:「1、为什么标签会随着地图拖动的时候轻微晃动,直到拖动结束 2、相同标签为什么显示会有差异,有的会模糊一点 3、优化鹰眼图,提高鹰眼图的扩展性和性能,同时单独增加鹰眼图配置demo」。
|
|
102
|
+
|
|
103
|
+
- **标签晃动**:`overlay.js` 把节点标签、线路标签、提示框与底图区域文字的落点,以及拖动期的整层位移,统一吸附到「设备像素网格」(`devicePixelRatio × 宿主显示比例`),不再只取整 CSS 像素;标签层保留整体 `will-change` 与 `contain: layout style paint` / `isolation: isolate`,移除逐条标签的 `will-change: transform`,避免多个合成层在拖动期产生相位差与重复栅格化。1.25 / 1.5 倍屏上同一行字不会再因为停在半个设备像素上而出现清晰度差异。
|
|
104
|
+
- **鹰眼图扩展与性能**:`minimap.js` 新增 `layers`(按 `order` 从小到大绘制、逐层 `save` / `restore`,`enabled: false` 可临时关层,旧 `draw` 仍兼容并最后执行)与 `maxPixelRatio`(备份倍率上限,默认 4、夹在 1 ~ 4),小图容器增加 `contain: layout paint` / `isolation: isolate`;`types.d.ts` 同步新增 `GisViewMinimapLayer` 与两个 options。新增 `docs/demos/MinimapDemo.vue` 并在 `demos.js` 注册 `?demo=minimap`(页签「鹰眼图配置」),可现场调尺寸、位置、范围、规则、层级、回线、小图缩放、备份倍率与网格 / 指北针两层自定义绘制。
|
|
105
|
+
- **核心文件**:`src/gis-view/overlay.js`、`gis-view.css`、`minimap.js`、`types.d.ts`、`docs/demos/MinimapDemo.vue`、`docs/demos/demos.js`、`docs/steps/selftest-labels.html`、`docs/steps/selftest-demos.html`、`docs/manual/03` / `12` / `14` / `20`、`docs/internals/11` / `13`、`README.md`、`src/gis-view/README.md`、`docs/steps/README.md`。
|
|
106
|
+
- **验证**:`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。CDP 真实时间下 `selftest-labels.html` 135 条全部 PASS(新增 DPR 1.25 的标签落点、整层位移与「逐条标签不提层」断言);`selftest-demos.html` 272 条中 271 PASS / 1 FAIL,新增的 8 条鹰眼图配置断言全部通过,唯一失败是既有的「悬停与提示:独立线路命中后走 lineHoverStyle」在无头环境命中了节点(读数为 `point #0`),与本轮修改无关。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md)。
|
|
107
|
+
|
|
108
|
+
## 2026-10-19 增量(「修改.txt」继续优化与排查)
|
|
109
|
+
|
|
110
|
+
这是同一现有会话的继续增量,没有新建会话归档,因此不改 06 的 39 条会话统计;需求原话来自仓库根目录的 `修改.txt`:「修改gis-view组件 1、继续优化组件性能 2、排查bug」。
|
|
111
|
+
|
|
112
|
+
- **性能**:`src/gis-view/overlay.js` 把相机事件触发的 GeoJSON 区域文字重投影并到下一帧,同一帧 12 次 `cameraChange` 只排一次;同一份底图重新下发时按「样式签名 + 锚点签名」判断,文字、样式与 `x` / `y` / 偏移全都没变才跳过,锚点变化仍会重投影。新增自测断言验证合并重投影与锚点变化两条路径。
|
|
113
|
+
- **Bug 修复(运行时)**:区域文字节点保留上一次的 `display` / `transform` 状态,不再在文字 / 字号变化时丢掉离屏标记。修复「离屏时 `updateBackground` 改样式、同一任务里把相机移回,标签仍是 `display:none`」的问题;`selftest-labels.html` 新增对应回归断言。
|
|
114
|
+
- **Bug 修复(类型)**:`src/gis-view/types.d.ts` 删除重复声明的 `createConditionMatcher`(保留泛型版本);把与作用域联合类型重名的草稿目标接口改为 `GisViewDecorationDraftLineTarget`,同步草稿载荷与提交结果的 `targets` 类型。`npx tsc --noEmit --skipLibCheck false` 不再报重复声明。
|
|
115
|
+
- **核心文件**:`src/gis-view/overlay.js`、`create.js`、`types.d.ts`、`docs/steps/selftest-labels.html`、`docs/manual/20-性能与大数据.md`、`docs/steps/README.md`。
|
|
116
|
+
- **验证**:`selftest-labels.html` 由 129 条增至 132 条;14 个自测页合计 **1961** 条通过 / 0 失败。`npx tsc --noEmit`、`npx tsc --noEmit --skipLibCheck false`、`npm run check:docs`、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-19-增量修改txt继续优化与排查)。
|
|
117
|
+
|
|
118
|
+
## 2026-10-19 增量(「修改.txt」五条)
|
|
119
|
+
|
|
120
|
+
本轮是在现有会话里继续的增量轮次,需求来源是仓库根目录的 `修改.txt`,主题是 gis-view 组件的文档同步机制、扩展图形能力、拐点开关收口与大数据标签优化:
|
|
121
|
+
|
|
122
|
+
- **aimd 同步**:新增根 `AGENTS.md`,规定修改 `README.md` / `src/gis-view/README.md` / `docs/**/*.md` 时必须同步 `docs/AI对话汇总.md` 与本索引,并带上需求来源、核心文件与验证结果。
|
|
123
|
+
- **扩展图形**:新增 `graphics` 配置与 `src/gis-view/graphic.js`,支持世界坐标锚定的 SVG `path`、图片与外部 `canvas`,可设锚点、偏移、旋转、缩放、透明度、`zIndex` 和 `scaleWithView`;图形位于画布之上、标签之下,不参与拾取,并接入 `snapshotScene`、PNG / SVG 导出。
|
|
124
|
+
- **手动删除装饰**:`docs/manual/12-标签与装饰.md` 补充 `removeLineDecoration` / `removePointDecoration` / `set...Decorations([])`、取消草稿与 `removeGraphic` / `clearGraphics` 的删除口径。
|
|
125
|
+
- **大数据标签**:节点优化档增加 32px 细格去重、160px 粗格每格 3 条主候选、补位队列与按屏幕行列排序;已显示节点也参与稳定候选窗口的格位占位,避免稳态重排因候选漂移反复量尺寸。
|
|
126
|
+
- **拐点总闸**:取消 `waypointAdd`,`features` 收敛为 18 项;`waypoint` / `waypointEditable` 关闭时新增、移动、删除一起停,`shortcuts.addWaypoint` 只决定加点组合键。
|
|
127
|
+
|
|
128
|
+
验证:14 个自测页 **1941** 条通过 / 0 失败;`npx tsc --noEmit`、`npm run check:docs`、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。核心文件见 `src/gis-view/create.js`、`graphic.js`、`overlay.js`、`features.js`、`engine.js`、`svg.js`、`types.d.ts` 与相关手册;复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md)。
|
|
129
|
+
|
|
130
|
+
## 2026-10-19 增量(「修改.txt」四条)
|
|
131
|
+
|
|
132
|
+
这是同一现有会话的继续增量,没有新建会话归档,因此不修改 06 的 39 个会话索引表与消息数;需求原话来自仓库根目录的 `修改.txt`:① 优化组件性能;② 增加 `graphic` 使用 demo;③ 修改组件提高规范性;④ 简化组件、检查重复与多余方法。
|
|
133
|
+
|
|
134
|
+
- **性能**:`src/gis-view/graphic.js` 的静态样式(`opacity` / `zIndex` / `transformOrigin` / `transform`)改为建 DOM 时一次写入;相机平移 / 缩放与容器 resize 时只比较并写变化的 `left` / `top` / `width` / `height` 和隐藏状态,不再反复写整份样式。`snapshotScene()` 直接按记录计算屏幕坐标,不再因导出写 DOM;图片 `load` 只重排对应图形;增删改统一走 `markChanged()`,三处重复排序收口到 `sortedEntries()`。
|
|
135
|
+
- **demo**:新增 `docs/demos/GraphicDemo.vue` 并在 `docs/demos/demos.js` 注册 `?demo=graphic`(页签「扩展图形」):SVG 路径、图片、外部 Canvas 三类同屏,可切 `scaleWithView`、改旋转 / 透明度 / `zIndex`,并现场演示 `addGraphic` / `addGraphics` / `updateGraphic` / `removeGraphic` / `clearGraphics` 与 `getGraphics()` 读数。演示页签从 20 更新为 21(20 个功能 + 综合)。
|
|
136
|
+
- **规范性**:`addGraphics` 的重复 id 现在与 `addGraphic` 一样点名告警并按更新覆盖;显式写错的 `type` 会被跳过并通过 `onWarning` 说明只认 `path` / `image` / `canvas`,不再静默推断成 `path`。`selftest-features.html` 新增两条对应断言。
|
|
137
|
+
- **简化**:删除 `create.js` 中只转发 `resolvePointMerge(true / false)` 的 `confirmPointMerge` / `cancelPointMerge` 两个别名,统一保留 `resolvePointMerge()`;同步 `types.d.ts`、`docs/manual/07` / `16` / `17` / `18`、`CopyMergeDemo.vue` 与自测文案。API 计数从 260 个成员(257 个方法)更新为 **258 个成员(255 个方法)**,`options` 仍为 88 个。
|
|
138
|
+
- **核心文件**:`src/gis-view/graphic.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/demos/GraphicDemo.vue`、`docs/demos/demos.js`、`docs/demos/api-index.js`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-features.html` 与相关手册 / README。
|
|
139
|
+
- **验证**:14 个自测页 **1954** 条通过 / 0 失败(`selftest-features` 558、`selftest-demos` 262);`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-19-增量修改txt四条)。
|
|
140
|
+
|
|
141
|
+
## 2026-10-19 增量(「修改.txt」五条续)
|
|
142
|
+
|
|
143
|
+
这一轮仍是同一现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计,也不虚构会话名与消息数。需求原话来自仓库根目录的 `修改.txt`:「修改gis-view组件:1、继续优化组件性能;2、继续提高规范性;3、继续简化组件,检查组件有没有重复,多余的方法;4、完善md详细和准确性;5、优化文档页面的展示效果。」
|
|
144
|
+
|
|
145
|
+
- **性能**:`src/gis-view/overlay.js` 的 GeoJSON 区域文字改为按下标复用 DOM,逐条用 `JSON.stringify([...])` 生成样式签名,单条变化只更新那一条并清掉对应尺寸缓存;每节点缓存 `display` / `transform`,同一相机重复刷新不再写 `style`。`src/gis-view/minimap.js` 的鹰眼视口框缓存上一次矩形与三项样式,位置 / 尺寸一致时直接返回。
|
|
146
|
+
- **规范性与简化**:`src/gis-view/create.js` 新增 `fallbackViewport()`,统一覆盖层、小图、公开 `getViewport()` 与 `getViewState().viewport` 的引擎未就绪兜底;`src/gis-view/graphic.js` 删除未使用的 `GRAPHIC_ANCHOR_NAMES`。
|
|
147
|
+
- **文档准确性**:同步 `docs/manual/20-性能与大数据.md` 的两处新缓存与视口口径,`docs/GisView.md` 补充 API 速查的深浅主题 / 分组跟随 / 深链入口,`docs/steps/README.md` 更新页面说明与自测条数。
|
|
148
|
+
- **页面展示**:`docs/api/index.html` 新增与文档中心共用 `gisDocs.reading` 的深色主题、左侧当前分组滚动高亮、深链 `scroll-margin-top`、卡片 / 示例头 / 按钮 / 焦点 / 滚动条 / 窄屏布局优化;快速开始里的成员数改为读取 `API_SUMMARY.members`,不再写死。
|
|
149
|
+
- **核心文件**:`src/gis-view/overlay.js`、`minimap.js`、`create.js`、`graphic.js`、`docs/api/index.html`、`docs/GisView.md`、`docs/manual/20-性能与大数据.md`、`docs/steps/README.md`、`docs/steps/selftest-labels.html`、`docs/steps/selftest-docs.html`。
|
|
150
|
+
- **验证**:`selftest-labels.html` 新增 2 条(同相机 0 次样式写入、只改字号复用原节点),129 条 0 FAIL;`selftest-docs.html` 新增 2 条(左侧分组高亮、深浅主题与阅读设置持久化),125 条 0 FAIL;14 个自测页合计 **1958** 条 0 FAIL。`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-19-增量修改txt五条续)。
|
|
151
|
+
|
|
152
|
+
## 2026-10-21 增量:标签 HTML 语义与渲染性能
|
|
153
|
+
|
|
154
|
+
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:① 标签显示的 HTML 为什么不生效、是否永远按 HTML 渲染、标签多了会不会影响性能;② 继续检查隐藏性能问题和 bug 并修复;③ 在可以破坏组件原有语义时优化性能。
|
|
155
|
+
|
|
156
|
+
- **HTML 语义结论**:渲染链本身可用 —— 全局 `label.html` / `lineLabel.html`、数据 `labels[].html` 的逐条覆盖、`updateLabel` 双向切换与线路标签都正常;默认仍是纯文本,不是永远按 HTML 渲染。函数返回 `HTMLElement` 时始终按元素插入,是既有文档化例外。
|
|
157
|
+
- **修复**:`src/gis-view/create.js` 导出时显式保留逐条 `html: true / false`,不再只写开;`src/gis-view/overlay.js` 的 `labelClick` / `labelDrag` 载荷补 `html`,HTML 模式 `content` 回报 `innerHTML`;`getLabels()` 优先回报运行时偏移;模板 `{field}`、`field` 与默认名称在 HTML 模式转义,只有 `content` 模板与函数内容由使用方掌控。
|
|
158
|
+
- **性能收口**:`paintLabel()` 把 class / 样式 / 内容 / 尺寸拆成独立签名,只改样式不重写 `innerHTML`,只换位置不重写内容与样式;尺寸缓存键去掉 index / labelId / 锚点,批量量尺寸时实时复用本轮缓存。120 条同内容 HTML 标签首轮布局读取 **127 → 7** 次;只改样式 **121 次布局读取 + 120 次 `innerHTML` → 3 次 + 0 次**;改内容仍逐条写 `innerHTML`,属必要成本。
|
|
159
|
+
- **文档与核心文件**:核心文件为 `src/gis-view/overlay.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-labels.html`;同步 `docs/manual/12-标签与装饰.md`、`docs/manual/20-性能与大数据.md`、`docs/steps/README.md`、根 `README.md` 与 `src/gis-view/README.md`。
|
|
160
|
+
- **验证**:`selftest-labels.html` 新增 16 条(151 条 / 0 失败),覆盖全局 / 逐条 HTML、模板与隐式文本转义、线路标签、点击载荷、偏移、样式零重写、导出回灌与 120 条同内容标签的布局读取上限;14 个自测页 **2047** 条通过 / 0 失败。`npx tsc --noEmit`、`npm run check:docs`(241 个成员 / 238 个方法 / 238 个数据字段 / 90 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-21-增量标签-html-语义与渲染性能)。
|
|
161
|
+
|
|
162
|
+
## 2026-10-21 增量:高密度标签自动画布化
|
|
163
|
+
|
|
164
|
+
这一轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:① `html` 改成 `false` 之后组件的标签为什么还是用 `div` 渲染,几万个标签 `div` 会不会卡顿;② 继续优化组件性能。
|
|
165
|
+
|
|
166
|
+
- **先回答 `html`**:`html` 只决定字符串按纯文本还是 HTML 解析,不改变容器;`html: false` 仍然逐条建 `.gis-view__label`(默认 `div`)。低密度时这样最灵活,但几万条纯文本标签就是几万个 DOM,单靠关掉 HTML 不会变快。
|
|
167
|
+
- **新增画布档**:`src/gis-view/overlay.js` 在强制显示档(`labelOptimize !== true` 且未进密集档)给节点层 / 线路层各加一张 Canvas;某一层本轮可画布的纯文本标签达到 **1024** 条时,该层改画到 `.gis-view__label-canvas`。HTML、函数返回 `HTMLElement`、可拖拽 / 可编辑,以及背景图 / 阴影 / `transform` / 多行 / 字间距 / 非实线或四边不等边框等 Canvas 画不全的标签继续留在 DOM,可与画布混排。
|
|
168
|
+
- **同步与回退**:首屏排版、平移缩放、拖节点、拖线路、悬停半径变化都会重算画布标签,`exportImage({ includeLabels: true })` 的 SVG 也包含画布文本;DOM ↔ Canvas 切换会回收旧 `div` 但保留标签 meta。`create.js` / `types.d.ts` 新增顶层 `labelRender?: 'auto' | 'dom'`(缺省 `auto`,非法值告警并按 `auto`),`dom` 强制保持旧行为。优化档 / 密集档仍走 DOM,因为避让、截断与命中判定要真实量尺寸,不能用画布绕过。
|
|
169
|
+
- **核心文件**:`src/gis-view/overlay.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`src/gis-view/gis-view.css`、`docs/steps/selftest-labels.html`、`docs/manual/03-配置项.md`、`docs/manual/12-标签与装饰.md`、`docs/manual/20-性能与大数据.md`、`docs/steps/README.md`、`README.md`、`src/gis-view/README.md`。
|
|
170
|
+
- **验证**:`selftest-labels.html` 新增 7 条(151 → **158** 条 / 0 失败),覆盖 1100 条纯文本只留一张画布、`html: true` 混排保留一条 DOM、`labelRender: 'dom'` 回退、切回 `auto` 回收上一轮 `div`、SVG 导出与缩放只推一次;14 个自测页 **2054** 条通过 / 0 失败。`npx tsc --noEmit`、`npm run check:docs`(241 个成员 / 238 个方法 / 239 个数据字段 / 91 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-21-增量高密度标签自动画布化)。
|
|
171
|
+
|
|
172
|
+
## 2026-10-21 增量(「问题.txt」四条:要素显隐 / 节点拆分 / 标签逐条交互 / 通道变化对账)
|
|
173
|
+
|
|
174
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `问题.txt`:① 节点 / 线路 / 通道如何隐藏后恢复;② 节点拆分为多个并重算线路与通道;③ 标签能否逐条配置交互能力;④ 参考节点位置对账,新增最近通道变化对账。
|
|
175
|
+
|
|
176
|
+
- **显隐**:`create.js` / `types.d.ts` 新增 `setFeatureVisible(kind, refs, visible)` / `hideFeatures` / `showFeatures`。`kind` 只认 `point` / `line` / `channel`,`refs` 支持单个 / 批量 id、下标、`{ id }` / `{ index }` 与 `'selection'`;整次调用收成一条历史、一条 `batch`。`GisViewChannel.visible: false` 让整条通道与成员回线退场,数据、分组、骨架与编辑状态保留,恢复时原样接上;节点隐藏时绑定线路退回自身 `path` / `start` / `end`,锚定通道整条收起。
|
|
177
|
+
- **拆分**:`splitPoint(source, parts, options?)` 至少两份,第一份复用原下标与 id、其余追加;`lines` 分配线路,未分配的跟第一份;通道端点默认跟第一条被分配过的成员回线,也可用 `channels` / `channelFrom` / `channelTo` 显式指定。自环 / 零长度线路、两端相同的通道与成员全空的通道拆完删除;整次调用一步历史、一条 `splitPoint` 数据变更,`changes` 给拆分后的节点、受影响的线路 / 通道端点与删除项。
|
|
178
|
+
- **标签**:`GisViewItemLabel` 补 `draggable` / `editable` 逐条交互开关与 `avoidOverlap` 类型;数据里的每条标签独立覆盖全局配置,`LabelDemo` 在同一节点上并列演示可拖 / 可编辑与只读两条。
|
|
179
|
+
- **通道对账**:`getChangedChannels()` 相对建视图 / 整份换声明 / 上次对账给出 `{ groups, groupsChanged, membersChanged, waypointsChanged, endpointsChanged, visibilityChanged, fieldsChanged, fields, reasons }`;`reasons` 顺序为 `groups` / `members` / `waypoints` / `endpoints` / `visibility` / `fields`。新通道只补基准不报变化,删除通道清账,整份换声明重设基准,读取本身不重置;`clearChangedChannels(refs?)` 发完接口后把当前声明记成新基准。
|
|
180
|
+
- **demo**:`ChannelDemo` 补隐藏 / 显示与最近变化面板,`CopyMergeDemo` 补“拆分节点”按钮与变更集读数,`LabelDemo` 补逐条交互示例;同步手册与 API 类型。
|
|
181
|
+
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/overlay.js`、`src/gis-view/types.d.ts`、`src/gis-view/gis-view.css`、`docs/demos/ChannelDemo.vue`、`docs/demos/CopyMergeDemo.vue`、`docs/demos/LabelDemo.vue`、`docs/manual/02` / `03` / `06` / `07` / `09` / `12` / `16` / `17` / `18` / `20`、`docs/steps/README.md`、根 `README.md` 与 `src/gis-view/README.md`。
|
|
182
|
+
- **验证**:`selftest-features.html` 595、`selftest-demos.html` 292、`selftest-labels.html` 161、`selftest-docs.html` 130,四页共 **1178** 条通过 / 0 失败;`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(247 个成员 / 244 个方法 / 242 个数据字段 / 91 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-21-增量要素显隐节点拆分与通道对账)。
|
|
183
|
+
|
|
184
|
+
## 2026-10-21 增量(「修改.txt」三条:通道筛选 / 线路对账 / 继续优化)
|
|
185
|
+
|
|
186
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:① `getChangedChannels` 在通道被删后是否同步清记录,能否只记拐点、忽略整组增删或加参数;② 新增 `getChangedLines`,线路删除时同步清记录,覆盖只有节点和线路、没有通道的场景;③ 继续优化组件。
|
|
187
|
+
|
|
188
|
+
- **通道筛选**:`getChangedChannels(options?)` 新增 `reasons` 与 `ignoreGroups`。`reasons` 是白名单,支持 `groups` / `members` / `waypoints` / `endpoints` / `visibility` / `fields`;筛选后返回项的 `*Changed` 与 `fields` 一起收窄,空数组不扫数据直接返回,非数组提醒一次后按全量查。`ignoreGroups: true` 不报分组结构的新增 / 删除 / 重排,也不把整组增删折成 `waypoints`;基准与当前都存在的同 id 分组 `path` 真变了仍报 `waypoints`。缺省 `path` 与 `[]` 归一成同一档,避免分组声明落数据时误报。
|
|
189
|
+
- **线路对账**:新增 `getChangedLines(options?)` / `clearChangedLines(refs?)`,原因分 `path`(`path` / `start` / `end`)、`endpoints`(`from` / `to`)、`visibility`、`fields`。新线路只补基准不报变化,删除线路同步清账,整份换线路重设基准,读取本身不重置;`reasons` 规则与通道一致。通道骨架 / 分组拐点仍由 `getChangedChannels` 负责,只有节点和线路的场景直接走线路账本。
|
|
190
|
+
- **删除与类型**:`removeLines` / `removeChannel` 同步摘掉线路与通道账本;`removeChannel` 连带删除的成员回线也不再出现在线路变化里。`types.d.ts` 补 `GisViewChangedChannelOptions` / `GisViewChangedChannelReason` / `GisViewChangedLineOptions` / `GisViewChangedLineReason` / `GisViewChangedLine` 与两个新方法签名。
|
|
191
|
+
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-features.html`、`docs/manual/06` / `16` / `17` / `18`、`docs/steps/README.md`、`docs/GisView.md`、根 `README.md`、`src/gis-view/README.md` 与 `docs/demos/api-index.js`(生成物)。
|
|
192
|
+
- **验证**:`selftest-features.html` 新增 8 条对账断言(595 → **603** 条 / 0 失败),覆盖 `ignoreGroups`、已有分组拐点、`reasons` 收窄、线路字段 / 路径 / 显隐、删除通道 / 删除线路与无通道场景清账。`selftest-demos` 292、`selftest-labels` 161、`selftest-docs` 130,四页共 **1186** 条通过 / 0 失败。`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(249 个成员 / 246 个方法 / 242 个数据字段 / 91 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-21-增量修改txt三条通道筛选--线路对账--继续优化)。
|
|
193
|
+
|
|
194
|
+
## 2026-10-21 增量(「修改.txt」:channelDemo 线路分组弹框)
|
|
195
|
+
|
|
196
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:修改 gis-view 组件;修改 channelDemo 分组弹框,参考图片;可以使用一次改变整个分组的方法。
|
|
197
|
+
|
|
198
|
+
- **弹框界面**:`docs/demos/ChannelDemo.vue` 新增居中的「线路分组」模态框,标题下显示「场站对标标识」,每个分组一张卡片(分组序号 / 回线数 / 组 id),每行回线显示名称、端点与「移入其他组」下拉;入口同时放在通道分组面板与右键交互框里。
|
|
199
|
+
- **草稿式整组编辑**:行内「确认移入」只移动 `groupDialog.groups` 本地草稿并清掉该行的下拉选择,可以连续挪多条;取消 / Esc / 点遮罩只清草稿,不写组件数据、不记历史。
|
|
200
|
+
- **一次提交**:底部「确定分组」把整份草稿过滤空组后调用一次 `view.splitChannelGroups(channelId, groups)`,整份 groups 声明一次落地;没有移动时按钮保持禁用并提示继续编辑或取消。
|
|
201
|
+
- **兼容与入口**:右键框原有的逐条「分配」与 `moveChannelLine` 保留,单条粒度与整组粒度并存;弹框从右键框打开时先收右键框,再以命中的通道为编辑目标。
|
|
202
|
+
- **核心文件**:`docs/demos/ChannelDemo.vue`、`docs/steps/selftest-demos.html`、`docs/steps/README.md`、根 `README.md`、`src/gis-view/README.md`。本轮不改组件实例接口,成员 / 方法 / 数据字段 / options 保持 **249 / 246 / 242 / 91**。
|
|
203
|
+
- **验证**:`selftest-demos.html` 新增 4 条断言(分组卡片与副标题、行内移入只改草稿、取消不写数据、确定只调用一次 `splitChannelGroups`),292 → **296** 条 / 0 失败;`selftest-features` 603、`selftest-labels` 161、`selftest-docs` 130,四页共 **1190** 条 / 0 失败。`npx tsc --noEmit`、`npm run check:docs`、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-21-增量修改txtchanneldemo-线路分组弹框)。
|
|
204
|
+
|
|
205
|
+
## 2026-10-21 增量(「修改.txt」两条:Ctrl 加点高亮范围 / 分组拐点拖动模式)
|
|
206
|
+
|
|
207
|
+
本轮仍是现有会话的继续增量,没有新建会话归档,因此不改上表的 39 条会话统计。需求原话来自仓库根目录的 `修改.txt`:① 按 Ctrl 添加拐点时增加类型,可只高亮单线路、整个分组或整条通道,普通点选线路也按同一档控制;② 分组拐点拖动增加一种模式,一种沿用现有逻辑,另一种只移动当前分组同一序号 / 平行位置的拐点,其它非相对位置的拐点不动,并在 demo 中演示。
|
|
208
|
+
|
|
209
|
+
- **加点高亮范围**:`engine.js` 的 Ctrl / ⌘ + 点击通道回线加点不再固定只选一条,而是复用 `channelSelectMode` 的 `expandChannelSelection()`:`line` 只高亮被加点回线、`group` 连所在分组、`channel` 连整条通道;普通单击与 Ctrl 多选仍走同一套展开,切换 option 只重画一帧、不重排场景。
|
|
210
|
+
- **拖动模式**:新增 `channelWaypointDragMode: 'parallel' | 'vertex'`,缺省 `'parallel'` 保持现有共用骨架 + 平行偏移。`'vertex'` 拖动时只把当前分组同一 `pathIndex` 的拐点按相同世界增量平移,组内所有成员回线同步移动这一序号,相邻顶点、其它顶点与其它分组都不动;普通线路仍只改自己的 `path`。
|
|
211
|
+
- **偏移存储**:`vertex` 结果写进 `groups[].waypointOffsets`,键按含首尾端点的骨架序号计算且只接受中间拐点,值支持 `[dx, dy]` / `{ x, y }`。渲染顺序是公共骨架 → 各回线车道平行偏移 → 分组刚性偏移;增删拐点时已有偏移序号同步平移到新下标,模式切换不会清空已有偏移,重写分组声明并省略该项即可清除。
|
|
212
|
+
- **读数与导出**:`getChannels()` / `getChannelGroups()` / `getChannelGroupWaypoints()` 都返回归一化后的 `waypointOffsets`;`getParallelGroups()` 与 `exportData({ format: 'test' | 'view', parts: ['waypoint'] })` 的 `group_route` 已叠加偏移,导出的是实际路由;分组对账也把 `waypointOffsets` 计入 `waypoints`。
|
|
213
|
+
- **demo 与后端**:`docs/demos/ChannelDemo.vue` 增加选中模式、拖动模式下拉和「准备两分组拐点」按钮;通道拐点后端请求同时提交 `path` 与 `waypointOffsets`,协议文档 `docs/接口协议.md` 的 5.1 / 5.2 / 6.3 与后端落库清单同步说明两段必须一起落库、一起返回。
|
|
214
|
+
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/demos/ChannelDemo.vue`、`docs/steps/selftest-features.html`、`docs/steps/selftest-demos.html`、`docs/manual/02` / `03` / `08` / `09` / `10` / `21`、`docs/format/03` / `04`、`docs/接口协议.md`、`docs/steps/README.md`、根 `README.md`、`src/gis-view/README.md` 与 `docs/demos/api-index.js`(生成物)。
|
|
215
|
+
- **验证**:`selftest-features.html` 新增 8 条(3 条 Ctrl 加点高亮范围 + 5 条 `vertex` 偏移 / 邻点 / 分组隔离 / 导出路由),603 → **611** 条 / 0 失败;`selftest-demos.html` 新增 1 条,296 → **297** 条 / 0 失败;`selftest-labels` 161、`selftest-docs` 130,四页共 **1199** 条通过 / 0 失败。`node --check`、`npx tsc --noEmit`、`npm run check:docs`(249 个成员 / 246 个方法 / 245 个数据字段 / 92 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。复查入口见 [06 的增量记录](ai/06-会话索引与复查方法.md#2026-10-21-增量修改txt两条ctrl-加点高亮范围--分组拐点拖动模式)。
|
package/docs/GisView.md
CHANGED
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
|
|
7
7
|
**这份手册按主题拆成了 21 章,正文在 [`docs/manual/`](manual/) 下**:找方法先看 [16 实例方法总表](manual/16-实例方法总表.md),查参数跳 [17 参数速查](manual/17-参数速查.md),要能直接复制的调用看 [18 逐方法示例](manual/18-逐方法示例.md);只想先跑起来看 [01 快速开始](manual/01-快速开始.md)。
|
|
8
8
|
|
|
9
|
-
- 想在页面上按方法名搜、直接看示例:打开 [API 速查(方法 + 示例)](api/index.html)(清单就是从 17 / 18
|
|
9
|
+
- 想在页面上按方法名搜、直接看示例:打开 [API 速查(方法 + 示例)](api/index.html)(清单就是从 17 / 18 两章生成的;支持深浅主题、左侧分组跟随与 `#成员名` 深链);要边改边跑用 [调试演示页](playground/index.html)。
|
|
10
10
|
- 「某个特性怎么实现、为什么这么做」看 [GisView 实现原理](GisView实现原理.md);数据的标准写法与五套口径看 [数据格式](数据格式.md)。
|
|
11
|
-
- 复制 / 合并 / 通道分组 / 拐点要接真实后端:请求头、body、成功响应、409 / 500、幂等与前端重试流程看 [编辑接口协议](接口协议.md)
|
|
11
|
+
- 复制 / 合并 / 通道分组 / 拐点要接真实后端:请求头、body、成功响应、409 / 500、幂等与前端重试流程看 [编辑接口协议](接口协议.md);成功响应怎么落到本地数据(`idMap` 改写、合并对账、分组 / 拐点覆盖、409 局部恢复)见其中的「前端落地映射」。
|
|
12
|
+
- 后端 DTO 与内置列名不一致时,不必改组件:用 `defineExportFormat`(或底层的 `registerExportFormat`)注册一个同步导出格式,把标准文档映射成自己的表结构,见 [自定义导出格式](manual/15-导出与集成.md#自定义导出格式后端-dto)。
|
|
12
13
|
- 想照着源码从零写一遍看 [从 0 到完整的实现](从0到完整的实现.md);逐文件的教程与自测页在 [docs/steps](steps/README.md)(页面:[docs/steps/index.html](steps/index.html))。
|
|
13
14
|
|
|
14
15
|
## 手册目录
|
|
@@ -26,12 +27,12 @@
|
|
|
26
27
|
| [09 通道与多回线](manual/09-通道与多回线.md) | 通道的数据结构、createChannels 批量生成、分组与选中模式 |
|
|
27
28
|
| [10 通道编辑与新增](manual/10-通道编辑与新增.md) | 分组拐点的增删、右键交互框、新增通道的草稿流程、改名与增删回线 |
|
|
28
29
|
| [11 样式与规则](manual/11-样式与规则.md) | 点配置、线配置、条件语言(筛选 / 规则 / 标签共用)与批量样式规则 |
|
|
29
|
-
| [12 标签与装饰](manual/12-标签与装饰.md) | 节点 /
|
|
30
|
+
| [12 标签与装饰](manual/12-标签与装饰.md) | 节点 / 线路标签、标签拖动与编辑、节点与线路装饰、动态装饰器草稿、悬浮提示 |
|
|
30
31
|
| [13 动效与图元](manual/13-动效与图元.md) | 热力图、动画效果、线路方向箭头、贴图预热与自定义图元 |
|
|
31
32
|
| [14 视图与筛选](manual/14-视图与筛选.md) | 筛选、搜索定位、初始视图与缩放范围、背景层、鹰眼图、近义入口 |
|
|
32
|
-
| [15 导出与集成](manual/15-导出与集成.md) | 导出图片 / 选中节点 /
|
|
33
|
+
| [15 导出与集成](manual/15-导出与集成.md) | 导出图片 / 选中节点 / 数据、自定义导出格式,插件、自建界面与键盘交互 |
|
|
33
34
|
| [16 实例方法总表](manual/16-实例方法总表.md) | 按功能分组的实例方法主表(找方法从这一章开始) |
|
|
34
|
-
| [17 参数速查(逐个方法)](manual/17-参数速查.md) |
|
|
35
|
+
| [17 参数速查(逐个方法)](manual/17-参数速查.md) | 249 个成员逐个列全:参数、默认值与返回 |
|
|
35
36
|
| [18 逐方法示例(复制就能跑)](manual/18-逐方法示例.md) | 每个成员一段可复制的调用示例(API 速查页读的就是这一章) |
|
|
36
37
|
| [19 读数与拖拽预览](manual/19-读数与拖拽预览.md) | 自建界面常用的读数 / 定位方法;拖拽落点预览 |
|
|
37
38
|
| [20 性能与大数据](manual/20-性能与大数据.md) | 十万级数据的开关与实测、WebGPU 取舍、渲染后端开关 |
|
|
@@ -43,10 +44,10 @@
|
|
|
43
44
|
- **配置与回调**:[options 总表](manual/03-配置项.md#options) · [回调](manual/04-事件与回调.md#回调) · [功能开关](manual/04-事件与回调.md#功能开关)
|
|
44
45
|
- **通道**:[通道与多回线](manual/09-通道与多回线.md) · [通道编辑与新增](manual/10-通道编辑与新增.md) · [分组拐点](manual/10-通道编辑与新增.md#分组拐点把某一组拉走)
|
|
45
46
|
- **样式**:[点配置](manual/11-样式与规则.md#点配置) · [线配置](manual/11-样式与规则.md#线配置) · [条件语言](manual/11-样式与规则.md#条件语言) · [批量样式规则](manual/11-样式与规则.md#批量样式规则)
|
|
46
|
-
- **标签与动效**:[节点标签](manual/12-标签与装饰.md#节点标签) · [线路标签](manual/12-标签与装饰.md#线路标签) · [动画效果](manual/13-动效与图元.md#动画效果effects) · [自定义图元](manual/13-动效与图元.md#自定义图元)
|
|
47
|
+
- **标签与动效**:[节点标签](manual/12-标签与装饰.md#节点标签) · [线路标签](manual/12-标签与装饰.md#线路标签) · [标签优化](manual/12-标签与装饰.md#标签显示优化开关labeloptimize) · [扩展图形](manual/12-标签与装饰.md#扩展图形graphic) · [节点装饰](manual/12-标签与装饰.md#节点上的装饰图片--svg) · [线路装饰](manual/12-标签与装饰.md#线路上的装饰图片--svg) · [手动删除装饰](manual/12-标签与装饰.md#手动删除装饰) · [动态装饰器](manual/12-标签与装饰.md#动态装饰器草稿) · [动画效果](manual/13-动效与图元.md#动画效果effects) · [自定义图元](manual/13-动效与图元.md#自定义图元)
|
|
47
48
|
- **视图**:[筛选](manual/14-视图与筛选.md#筛选) · [搜索与定位](manual/14-视图与筛选.md#搜索与定位) · [自适应比例](manual/14-视图与筛选.md#自适应比例zoomscaleauto) · [背景层](manual/14-视图与筛选.md#背景层) · [鹰眼图](manual/14-视图与筛选.md#鹰眼图)
|
|
48
|
-
- **导出与集成**:[导出数据](manual/15-导出与集成.md#导出数据) · [插件](manual/15-导出与集成.md#插件) · [自建界面](manual/15-导出与集成.md#自建界面)
|
|
49
|
+
- **导出与集成**:[导出数据](manual/15-导出与集成.md#导出数据) · [自定义导出格式](manual/15-导出与集成.md#自定义导出格式后端-dto) · [插件](manual/15-导出与集成.md#插件) · [自建界面](manual/15-导出与集成.md#自建界面)
|
|
49
50
|
- **查方法**:[实例方法总表](manual/16-实例方法总表.md) · [参数速查](manual/17-参数速查.md) · [逐方法示例](manual/18-逐方法示例.md) · [读数与拖拽预览](manual/19-读数与拖拽预览.md)
|
|
50
|
-
- **概念与排查**:[大数据量](manual/20-性能与大数据.md#大数据量) · [常见问题](manual/21-说明与常见问题.md#常见问题) · [类型定义索引](manual/21-说明与常见问题.md#类型定义索引)
|
|
51
|
+
- **概念与排查**:[大数据展示模式(denseMode)](manual/20-性能与大数据.md#大数据展示模式densemode) · [大数据量](manual/20-性能与大数据.md#大数据量) · [常见问题](manual/21-说明与常见问题.md#常见问题) · [类型定义索引](manual/21-说明与常见问题.md#类型定义索引)
|
|
51
52
|
|
|
52
53
|
> 本页也可以从文档中心(`docs/index.html`)打开:左侧清单里 `GisView.md` 是这一页,下面紧跟着 21 章手册。
|
|
@@ -25,11 +25,11 @@
|
|
|
25
25
|
| [背景层:图片与 GeoJSON](internals/14-%E8%83%8C%E6%99%AF%E5%B1%82.md) | 底图的解析、绘制与导出时怎么带上 |
|
|
26
26
|
| [逐轮记录 ①:新增与修复](internals/15-01-%E9%80%90%E8%BD%AE%E8%AE%B0%E5%BD%95-%E6%96%B0%E5%A2%9E%E4%B8%8E%E4%BF%AE%E5%A4%8D.md) | 早期各轮的新增能力与 bug 修复(15.1 ~ 15.20) |
|
|
27
27
|
| [逐轮记录 ②:性能与修复(上)](internals/15-02-%E9%80%90%E8%BD%AE%E8%AE%B0%E5%BD%95-%E6%80%A7%E8%83%BD%E4%B8%8E%E4%BF%AE%E5%A4%8D-%E4%B8%8A.md) | 百万级、标签与性能相关的各轮(15.48 ~ 15.70) |
|
|
28
|
-
| [逐轮记录 ③:性能与修复(下)](internals/15-03-%E9%80%90%E8%BD%AE%E8%AE%B0%E5%BD%95-%E6%80%A7%E8%83%BD%E4%B8%8E%E4%BF%AE%E5%A4%8D-%E4%B8%8B.md) | 增量删除、事件捕捉与文档相关的各轮(15.71 ~ 15.
|
|
28
|
+
| [逐轮记录 ③:性能与修复(下)](internals/15-03-%E9%80%90%E8%BD%AE%E8%AE%B0%E5%BD%95-%E6%80%A7%E8%83%BD%E4%B8%8E%E4%BF%AE%E5%A4%8D-%E4%B8%8B.md) | 增量删除、事件捕捉与文档相关的各轮(15.71 ~ 15.99) |
|
|
29
29
|
| [逐轮记录 ④:热力图与性能](internals/15-04-%E9%80%90%E8%BD%AE%E8%AE%B0%E5%BD%95-%E7%83%AD%E5%8A%9B%E5%9B%BE%E4%B8%8E%E6%80%A7%E8%83%BD.md) | 密度场、标签排版与线路批次裁剪等各轮(15.21 ~ 15.47) |
|
|
30
30
|
| [优化与取舍(上)](internals/16-01-%E4%BC%98%E5%8C%96%E4%B8%8E%E5%8F%96%E8%88%8D-%E4%B8%8A.md) | 开篇数据表与 16.1 ~ 16.38 的取舍记录 |
|
|
31
31
|
| [优化与取舍(中)](internals/16-02-%E4%BC%98%E5%8C%96%E4%B8%8E%E5%8F%96%E8%88%8D-%E4%B8%AD.md) | 16.39 ~ 16.56:删除 / 增量 / 文档对账相关的取舍 |
|
|
32
|
-
| [优化与取舍(下)](internals/16-03-%E4%BC%98%E5%8C%96%E4%B8%8E%E5%8F%96%E8%88%8D-%E4%B8%8B.md) | 16.57 ~ 16.
|
|
32
|
+
| [优化与取舍(下)](internals/16-03-%E4%BC%98%E5%8C%96%E4%B8%8E%E5%8F%96%E8%88%8D-%E4%B8%8B.md) | 16.57 ~ 16.74:坐标、通道、筛选与文档口径的取舍 |
|
|
33
33
|
| [调试与扩展建议](internals/17-%E8%B0%83%E8%AF%95%E4%B8%8E%E6%89%A9%E5%B1%95%E5%BB%BA%E8%AE%AE.md) | 怎么排查 GL 错误、怎么接自己的覆盖层与插件 |
|
|
34
34
|
| [性能实测与 WebGPU 评估](internals/18-%E6%80%A7%E8%83%BD%E5%AE%9E%E6%B5%8B%E4%B8%8EWebGPU%E8%AF%84%E4%BC%B0.md) | 十五轮实测数据、瓶颈定位与 WebGPU 值不值得上 |
|
|
35
35
|
|
|
@@ -48,6 +48,178 @@
|
|
|
48
48
|
| 10-13 16:06 | `rollout-2026-10-13T16-06-57-…` | 4 | 问题.txt 轮次:选中集 / 拐点键跟要素走(删除、合并后不跳到邻线)→ 15.74 |
|
|
49
49
|
| 10-14 08:50 | `rollout-2026-10-14T08-50-59-…` | 2 | 本轮:问题.txt 六条(拐点样式文档 / 文档搜索 / 右键新增场站 / demo 缩放限制 / 新增方法文档 / 本汇总)→ 15.77 |
|
|
50
50
|
|
|
51
|
+
### 2026-10-19 增量(「修改.txt」继续优化与排查)
|
|
52
|
+
|
|
53
|
+
这一轮仍是现有会话的继续增量,没有独立会话归档文件,因此不改上表的 39 条统计,也不虚构会话名与消息数;需求原话来自仓库根目录的 `修改.txt`:① 继续优化 gis-view 组件性能;② 排查 bug。
|
|
54
|
+
|
|
55
|
+
- **性能**:`src/gis-view/overlay.js` 的 GeoJSON 区域文字在相机连续变化时统一排到下一帧,一帧内多次 `cameraChange` 只重投影一次;同一份底图重新下发时同时比较样式签名与锚点签名,文字 / 样式 / 坐标全都没变才跳过。`selftest-labels.html` 用同一帧 12 次 `setCamera` 验证只有 1 次 `style` 写入,并验证只改锚点位置仍会重新投影。
|
|
56
|
+
- **运行时 bug**:区域文字在文字 / 字号变化时保留已有的 `display` / `transform` 绘制状态,避免离屏节点先写入 `display:none`、随后状态被清掉后回到视野无法恢复。自测覆盖「离屏时 `updateBackground` 改样式 → 同一任务恢复相机」这条路径。
|
|
57
|
+
- **类型 bug**:`src/gis-view/types.d.ts` 删除重复的 `createConditionMatcher` 声明,保留泛型版本;将草稿目标线路接口改名为 `GisViewDecorationDraftLineTarget`,并更新 `GisViewDecorationDraftPayload.targets` 与 `GisViewDecorationCommitResult.targets`。严格库检查不再报 TS2451 / TS2300。
|
|
58
|
+
- **核心文件**:`src/gis-view/overlay.js`、`create.js`、`types.d.ts`、`docs/steps/selftest-labels.html`、`docs/manual/20-性能与大数据.md`、`docs/steps/README.md`。
|
|
59
|
+
- **验证**:14 个自测页 **1961** 条通过 / 0 失败(`selftest-labels.html` 132 条);`npx tsc --noEmit`、`npx tsc --noEmit --skipLibCheck false`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的 2026-10-19 增量(继续优化与排查)](../AI对话汇总.md#2026-10-19-增量修改txt继续优化与排查)。
|
|
60
|
+
|
|
61
|
+
### 2026-10-19 增量(「修改.txt」五条)
|
|
62
|
+
|
|
63
|
+
本轮是现有会话里的增量轮次,没有独立的会话归档文件,因此不改上表的 39 条统计,也不虚构会话名与消息数;需求原话来自仓库根目录的 `修改.txt`。
|
|
64
|
+
|
|
65
|
+
- **需求**:① 更新相关 md 时同步 aimd;② 增加类似 ECharts `graphic` 的可扩展图形;③ 说明如何手动删除装饰器;④ 优化大数据下标签的隐藏与避让;⑤ 取消 `waypointAdd`,把拐点新增 / 移动 / 删除收敛到 `waypointEditable` 总开关。
|
|
66
|
+
- **改动主题与核心文件**:新增根 `AGENTS.md` 固化文档同步规则;新增 `src/gis-view/graphic.js` 并接入 `create.js`、`svg.js`、`gis-view.css`、`types.d.ts`(`graphics` 配置、7 个实例方法、场景快照与 PNG / SVG 导出);`overlay.js` 增加节点标签的细格去重、粗格配额、补位队列与稳定候选窗口;`features.js`、`engine.js`、`create.js`、`types.d.ts` 与 demo 删除 `waypointAdd`,统一由 `waypointEditable` / `features.waypoint` 控制。
|
|
67
|
+
- **文档**:同步 `README.md`、`src/gis-view/README.md`、`docs/GisView.md`、`docs/manual/03` / `04` / `08` / `12` / `15` / `16` / `17` / `18` / `20` / `21`、`docs/steps/README.md` 与 `docs/demos/api-index.js`;`selftest-demos.html` 的接口计数更新为 15 组 / 260 个成员 / 88 个 options 键。
|
|
68
|
+
- **验证**:14 个自测页 **1941** 条通过 / 0 失败;`npx tsc --noEmit`、`npm run check:docs`、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的 2026-10-19 增量](../AI对话汇总.md#2026-10-19-增量修改txt五条)。
|
|
69
|
+
|
|
70
|
+
### 2026-10-19 增量(「修改.txt」四条)
|
|
71
|
+
|
|
72
|
+
这一轮仍在现有会话里继续,没有独立的会话归档文件,因此不改上表的 39 条统计,也不虚构会话名与消息数;需求原话来自仓库根目录的 `修改.txt`:① 优化组件性能;② 增加 `graphic` 使用 demo;③ 修改组件提高规范性;④ 简化组件、检查重复与多余方法。
|
|
73
|
+
|
|
74
|
+
- **性能与核心文件**:`src/gis-view/graphic.js` 原来在每次相机变化 / resize 时为每个图形重写整份样式,`snapshotScene()` 也会写 DOM。现在 `opacity` / `zIndex` / `transformOrigin` / `transform` 在 `buildNode()` 时一次写入,布局只比较并写变化的 `left` / `top` / `width` / `height` 与隐藏状态;`snapshot()` 直接算屏幕坐标、不改页面,图片 `load` 只重排对应 entry;`markChanged()` 统一运行时变更,`sortedEntries()` 收掉重复排序。
|
|
75
|
+
- **demo**:新增 `docs/demos/GraphicDemo.vue` 并在 `docs/demos/demos.js` 注册 `?demo=graphic`:路径 / 图片 / Canvas 三类同屏,可切 `scaleWithView`、改旋转 / 透明度 / `zIndex`,并演示全部图形的增删改查方法。演示页签从 20 更新为 21(20 个功能 + 综合),`selftest-demos.html` 增加 11 条图形页断言。
|
|
76
|
+
- **规范性与简化**:`addGraphics` 重复 id 补上告警,显式非法 `type` 跳过并说明原因;删除只转发 `resolvePointMerge()` 的 `confirmPointMerge` / `cancelPointMerge` 别名,实例成员 260 → **258**(方法 257 → 255),类型、手册、demo 与 API 清单同步。`selftest-features.html` 为两条规范性行为新增断言(556 → **558**)。
|
|
77
|
+
- **验证**:14 个自测页 **1954** 条通过 / 0 失败(`selftest-demos` 262、`selftest-features` 558);`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的 2026-10-19 增量(四条)](../AI对话汇总.md#2026-10-19-增量修改txt四条)。
|
|
78
|
+
|
|
79
|
+
### 2026-10-19 增量(「修改.txt」五条续)
|
|
80
|
+
|
|
81
|
+
这一轮仍是现有会话的继续增量,没有独立会话归档文件,因此不改上表的 39 条统计,也不虚构会话名与消息数;需求原话来自仓库根目录的 `修改.txt`:① 继续优化组件性能;② 继续提高规范性;③ 继续简化组件、检查重复与多余方法;④ 完善 md 详细和准确性;⑤ 优化文档页面的展示效果。
|
|
82
|
+
|
|
83
|
+
- **性能与核心文件**:`src/gis-view/overlay.js` 的背景区域文字改为按下标复用节点、逐条保存 `JSON.stringify([...])` 签名,单条变化只更新那一条;每节点缓存 `display` / `transform`,同一相机重复刷新不再写 `style`。`src/gis-view/minimap.js` 的鹰眼视口框缓存矩形与样式,位置 / 尺寸一致时直接返回。
|
|
84
|
+
- **规范性与简化**:`src/gis-view/create.js` 新增 `fallbackViewport()`,统一覆盖层、小图、公开 `getViewport()` 与 `getViewState().viewport` 在引擎未就绪时的兜底对象与 `pixelRatio` 口径;`src/gis-view/graphic.js` 删除未使用的 `GRAPHIC_ANCHOR_NAMES`。
|
|
85
|
+
- **文档与展示**:`docs/manual/20-性能与大数据.md` 补两处缓存与兜底口径,`docs/GisView.md` / `docs/steps/README.md` 补 API 速查主题、分组跟随与深链说明;`docs/api/index.html` 增加与文档中心共用 `gisDocs.reading` 的深浅主题、左侧分组滚动高亮、深链落点与卡片 / 代码 / 窄屏展示优化,快速开始的成员数改为读取 `API_SUMMARY.members`。
|
|
86
|
+
- **验证**:`selftest-labels.html` 129 条、`selftest-docs.html` 125 条,14 个自测页合计 **1958** 条通过 / 0 失败;`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的 2026-10-19 增量(五条续)](../AI对话汇总.md#2026-10-19-增量修改txt五条续)。
|
|
87
|
+
|
|
88
|
+
### 2026-10-20 增量(「修改.txt」三条:标签拖动晃动 / 清晰度 / 鹰眼图扩展)
|
|
89
|
+
|
|
90
|
+
这一轮仍是现有会话的继续增量,没有独立会话归档文件,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:① 标签随地图拖动时轻微晃动、停手才恢复;② 相同标签显示清晰度不一致,有的模糊;③ 优化鹰眼图的扩展性与性能,并单独增加鹰眼图配置 demo。
|
|
91
|
+
|
|
92
|
+
- **标签稳定性与清晰度**:`src/gis-view/overlay.js` 新增设备像素吸附(`devicePixelRatio × 宿主显示比例`),节点标签、线路标签、提示框覆盖层与 GeoJSON 区域文字都按物理像素网格落点;拖动期整层位移也用同一份吸附。`src/gis-view/gis-view.css` 移除逐条标签的 `will-change: transform`,只保留标签层整体的合成提示,并给小图层加 `contain: layout style paint` / `isolation: isolate`,避免拖动时多个合成层相位差与重复栅格化。
|
|
93
|
+
- **鹰眼图扩展与性能**:`src/gis-view/minimap.js` 新增 `layers`(`order` 排序、逐层 `save` / `restore`、兼容旧 `draw`)与 `maxPixelRatio`(默认 4、夹在 1 ~ 4),小图容器加 `contain: layout paint` / `isolation: isolate`;`types.d.ts` 新增 `GisViewMinimapLayer` 并补两个 options。新增 `docs/demos/MinimapDemo.vue`(`?demo=minimap`)把尺寸 / 位置 / 范围 / 规则 / 层级 / 回线 / 小图缩放 / 备份倍率 / 自定义网格与指北针放在一页里调。
|
|
94
|
+
- **文档与自测**:同步 `docs/manual/03` / `12` / `14` / `20`、`docs/internals/11` / `13`、根 `README.md`、`src/gis-view/README.md`、`docs/steps/README.md`;`selftest-labels.html` 135 条(新增 3 条设备像素断言)、`selftest-demos.html` 272 条(新增 8 条鹰眼图断言)。
|
|
95
|
+
- **验证**:`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。`selftest-labels.html` 135 / 135 PASS;`selftest-demos.html` 271 / 272 PASS,唯一失败是既有的悬停线路命中测试落到了节点(`point #0`),与本次改动无关。
|
|
96
|
+
|
|
97
|
+
### 2026-10-20 增量:鹰眼图交互与页面展示
|
|
98
|
+
|
|
99
|
+
这一轮仍是现有会话的继续增量,没有独立会话归档文件,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:① 继续优化鹰眼图,兼顾功能完整性、可扩展性与性能;② 删除 `InterfaceDemo.vue` 等不必要的 demo,并优化 demo 的表现形式;③ 优化 md 页面的展示。
|
|
100
|
+
|
|
101
|
+
- **鹰眼图**:`src/gis-view/minimap.js` 的 `layers` 增加 `placement`(`below-data` / `above-data`),并把排序与分段缓存到 `setOptions`;`draw` 回调带 `stage`,旧单层 `draw` 固定为最后的 `overlay`。新增 `onInteraction`,只在一手势完成时通知框拖动、框选、平移、小图缩放、主图滚轮缩放与长按跟随,载荷含本地 / 世界坐标、小图倍数、范围、相机和视口;根节点补 `role=region` 与 `aria-label`。`types.d.ts` 同步新增 `GisViewMinimapLayerPlacement`、`GisViewMinimapLayerStage`、`GisViewMinimapInteractionType`、`GisViewMinimapInteractionInfo` 与 `onInteraction`。
|
|
102
|
+
- **Demo**:删除 `InterfaceDemo.vue`、`HistoryDemo.vue`、`SampleDemo.vue`,注册表变为 19 页(18 个功能 + 综合);`DemoShell.vue` 改为「六个分组按钮 + 当前组页签」,组名直接显示且一次只展开当前组;`MinimapDemo.vue` 增加 `placement`、`stage`、`onInteraction` 现场读数,`api-index.js` 同步配置说明。
|
|
103
|
+
- **Markdown**:`docs/index.html` 把 H1 后的引用渲染为摘要卡片、无引用时把首段渲染为导语,并在元信息加阅读时长;`docs/steps/selftest-docs.html` 增加对应断言,`selftest-demos.html` 更新 19 页、分组导航和鹰眼图扩展断言。
|
|
104
|
+
- **文档与核心文件**:同步 `README.md`、`src/gis-view/README.md`、`docs/manual/02` / `03` / `06` / `14` / `15` / `21`、`docs/internals/13`、`docs/format/07`、`docs/steps/README.md`;`docs/format/07` 删除了指向已移除 `?demo=samples` 的当前入口。核心实现文件为 `src/gis-view/minimap.js`、`types.d.ts`,展示文件为 `docs/demos/DemoShell.vue`、`MinimapDemo.vue`、`demos.js`、`api-index.js`、`docs/index.html`。
|
|
105
|
+
- **验证**:14 个自测页 **1964** 条通过 / 0 失败(`selftest-demos` 261、`selftest-docs` 126、`selftest-labels` 135);`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的 2026-10-20 增量(鹰眼图交互与页面展示)](../AI对话汇总.md#2026-10-20-增量鹰眼图交互与页面展示)。
|
|
106
|
+
|
|
107
|
+
### 2026-10-20 增量:API 文档视觉、性能降级、箭头统一与导出收口
|
|
108
|
+
|
|
109
|
+
本轮仍是现有会话的继续增量,没有独立会话归档文件,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:① 文档页参考 ECharts / Ant Design,让配置项、方法和参数一目了然;② 继续优化组件性能;③ 统一连接 demo 预览箭头与落地线路箭头的位置;④ 大数据下增加动态降级开关;⑤ 合并重复的导出方法,以 `exportData({ scope, parts, format })` 统一范围、分项与格式。
|
|
110
|
+
|
|
111
|
+
- **文档页**:`docs/api/index.html` 重做顶部导航、检索、Hero、统计卡、成员卡与 options 分组表格;`docs/demos/api-index.js` 同步重新生成。同步 `README.md`、`src/gis-view/README.md`、`docs/GisView.md`、`docs/manual/03` / `15` / `16` / `17` / `18` / `20` / `21`、`docs/steps/README.md` 与相关自测页。
|
|
112
|
+
- **动态降级**:`src/gis-view/create.js` 的 `denseMode` 支持 `auto` / `on` / `off`、布尔值与阈值对象;缺省在可见节点 4000、每百万 CSS 像素 3000 点或总量 50000 时进入密集档,判定延迟 160ms、退出回滞 78%。密集档内标签走 `labelOptimize` 优化档、引擎传 `effects: false`,`getStats().dense` 返回 `mode / active / reason / visiblePoints / thresholds`;退出后恢复用户原来的 `effects`。`src/gis-view/overlay.js` 只在标签优化档实际变化时刷新标签。
|
|
113
|
+
- **箭头统一**:`src/gis-view/engine.js` 的 `channelDraftArrowPlacement(path)` 按整条折线弧长取中点并返回 `{ center, unitX, unitY }`;预览箭头与落地 `direction.count: 1` 使用同一中心算法和 16×16 内置箭头轮廓。`docs/steps/selftest-demos.html` 的箭头断言改为检查 `center`。
|
|
114
|
+
- **导出收口**:`src/gis-view/create.js` 新增统一入口 `exportData({ scope, parts, format, ... })`,`scope` 支持 `all / viewport / selection` 及同义词;旧导出方法保留兼容别名。新视口导出的 `full / input / 自定义格式` 保持原始形状,旧 `exportViewportData` 仍补 `viewRect / margin`;`exportParallelGroups` 遇到非法通道引用只告警一次。`types.d.ts` 同步统一导出选项 / 结果与视口重载。
|
|
115
|
+
- **验证**:13 个自测页 **1974** 条通过 / 0 失败;`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 237 个数据字段 / 89 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的 2026-10-20 增量(API 文档视觉、性能降级、箭头统一与导出收口)](../AI对话汇总.md#2026-10-20-增量api-文档视觉性能降级箭头统一与导出收口)。
|
|
116
|
+
|
|
117
|
+
### 2026-10-20 增量:无通道连线与可视化连线构建器
|
|
118
|
+
|
|
119
|
+
本轮仍是现有会话的继续增量,没有独立会话归档文件,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:① 没有通道时能否只用 `line` + `point` 独立运行;② 优化可视化新增通道 / 线路,支持箭头、折线等常规线并增加 demo;③ 预览线可自定义,可取消、默认添加,或用 `addLines` / `addChannels` 真实落地。
|
|
120
|
+
|
|
121
|
+
- **实现**:`line.js` 新增 `resolveRoutedPath(start, end, routing, bends)`;`engine.js` 的草稿保存并暴露 `routing` / `path`,按折线分段绘制,`channelDraftStyle.arrow` / `arrowSize` 控制预览箭头,草稿期间改样式立即重绘;`create.js` 的 `commitAddChannel` 透传路由,`applyChannelAdd` 对独立线路写完整 `path`、对通道 / 新分组只写中间拐点;`types.d.ts` 同步草稿入参、载荷、新增入参与预览样式。
|
|
122
|
+
- **Demo 与文档**:新增 `docs/demos/ConnectDemo.vue` 并注册 `?demo=connect`,初始 `channels: []`,演示直线 / 正交折线、颜色 / 线宽 / 箭头、取消、默认提交与 `addLines` / `addChannels`;同步 `README.md`、`src/gis-view/README.md`、`docs/manual/03` / `04` / `06` / `10` / `16` / `17` / `21`、`docs/steps/README.md`、`docs/demos/api-index.js`、`docs/steps/selftest-demos.html` 与 [AI 对话汇总](../AI对话汇总.md#2026-10-20-增量无通道连线与可视化连线构建器)。
|
|
123
|
+
- **验证**:14 个自测页 **1975** 条通过 / 0 失败(`selftest-demos.html` 272 条);`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 236 个数据字段 / 88 个 options / 18 个功能开关 / 15 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。
|
|
124
|
+
|
|
125
|
+
### 2026-10-20 增量:性能收口与重复实例入口合并
|
|
126
|
+
|
|
127
|
+
本轮仍是现有会话的继续增量,没有独立会话归档文件,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:① 继续优化组件性能、可扩展性和二次开发性;② 检查实例方法 / 属性 / 事件中的重复、多余、可合并项并合并删除。
|
|
128
|
+
|
|
129
|
+
- **重复入口收口**:删除 `select` / `updatePoints` / `updateLines` / `updateChannels`,统一为 `selectFeatures` 与 `updateData({ points | lines | channels })`;内部调用与类型声明同步迁移。`patchPoints` / `patchLines` 保留定向补丁语义,`updatePoints` / `updateLines` 仅继续作为这两条路径的数据变更事件名;`updateChannels` 事件类型删除,通道声明整份替换改发 `updateData`。实例成员 258 → **254**(方法 255 → **251**,属性 3)。
|
|
130
|
+
- **性能与扩展**:`getChannelsInView()` 改为按视口单遍 `forEachLineInView()` + O(1) 的 `getLineChannel()` 聚合,不再生成整份线路快照;`getLineChannel()` 通过引擎新增的 `getChannelGroup()` 窄查询只复制目标分组;`addWebGLLayer()` 的卸载函数校验当前同 id 层的 `draw` 身份,覆盖后旧卸载函数不会误删新层。
|
|
131
|
+
- **文档与自测**:同步 `README.md`、`src/gis-view/README.md`、`docs/GisView.md`、`docs/manual/04` / `06` / `07` / `08` / `10` / `12` / `14` / `16` / `17` / `18` / `21`、`docs/demos` / `docs/guide` / `docs/steps` 与 `docs/demos/api-index.js`;`selftest-select.html` 新增重复入口已删除断言,`selftest-features.html` 新增视口通道聚合与 WebGL 覆盖卸载断言。
|
|
132
|
+
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/demos/api-index.js`、`docs/steps/selftest-select.html`、`docs/steps/selftest-features.html`。
|
|
133
|
+
- **验证**:14 个自测页 **2018** 条通过 / 0 失败(`selftest-features` 581、`selftest-demos` 280、`selftest-select` 60);`npx tsc --noEmit`、`npm run check:docs`(254 个成员 / 251 个方法 / 238 个数据字段 / 90 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的 2026-10-20 增量(性能收口与重复实例入口合并)](../AI对话汇总.md#2026-10-20-增量性能收口与重复实例入口合并)。
|
|
134
|
+
|
|
135
|
+
### 2026-10-20 增量:通道预览扩展、旧导出收口与 WebGL 自定义层
|
|
136
|
+
|
|
137
|
+
本轮仍是现有会话的继续增量,没有独立会话归档文件,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:① `beginAddChannel` 的预览完全可自定义(含箭头位置),选择通道时预览也必须是通道效果;已点起点后再点节点以外位置直接取消;② 不再保留冗余的旧导出方法;③ 可直接取得组件本体并手动使用 WebGL 绘制,以提升扩展性。
|
|
138
|
+
|
|
139
|
+
- **通道草稿**:`engine.js` 为本次草稿保存独立的 `style` 覆盖,`channelDraftStyle` 支持颜色 / 线宽 / 端点 / 箭头开关、尺寸、位置、方向、颜色 / 回线间距 / 透明度 / `customDraw`;多回线生成平行路径并逐条画箭头,`arrowPositions` 按弧长归一化。`create.js` 新增 `updateAddChannelStyle(patch)`;已选起点后点空白会取消并清空草稿,`onChannelDraft` / `onChannelDraftClick` 的载荷带 `reason: 'click-outside-node'`。`customDraw` 收到 GL、画布、视口、相机、路径、各回线路径、阶段与投影函数,回调后恢复内置绘制状态。
|
|
140
|
+
- **导出与 WebGL**:删除七个旧导出实例方法,统一为 `exportData({ scope, parts, format })`,并补齐 `format: 'new'` 的 `box` / `showStation` 口径。实例新增 `gl`、`requestRender()`、`addWebGLLayer` / `updateWebGLLayer` / `removeWebGLLayer` / `clearWebGLLayers` / `getWebGLLayers`,顶层支持 `webglLayers`;自定义层按 `order` 在内置绘制之后执行,逐层重置 GL 状态,异常只上报一次,且不参与拾取 / 场景解析 / 导出。
|
|
141
|
+
- **Demo、文档与核心文件**:`ConnectDemo.vue` 演示 3 回通道与运行时样式调整;`ExtensionDemo.vue` 新增 WebGL 层挂载 / 隐藏 / 排序 / 卸载;`BackendSyncDemo.vue`、`GisViewDemo.vue` 改用统一导出。核心文件为 `src/gis-view/engine.js`、`create.js`、`types.d.ts`、`export-formats.js`,同步 `README.md`、`src/gis-view/README.md`、`docs/manual/02` / `03` / `15` / `16` / `17` / `18` / `20` / `21`、`docs/format/03` / `06`、`docs/steps/README.md`、`docs/demos/api-index.js` 与五个相关自测页。
|
|
142
|
+
- **验证**:14 个自测页 **2015** 条通过 / 0 失败;`npx tsc --noEmit`、`npm run check:docs`(258 个成员 / 255 个方法 / 238 个数据字段 / 90 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的 2026-10-20 增量(通道预览扩展、旧导出收口与 WebGL 自定义层)](../AI对话汇总.md#2026-10-20-增量通道预览扩展旧导出收口与-webgl-自定义层)。
|
|
143
|
+
|
|
144
|
+
### 2026-10-20 增量:装饰位置来源与吸附关系解耦
|
|
145
|
+
|
|
146
|
+
本轮仍是现有会话的继续增量,没有独立会话归档文件,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:① 装饰 Demo 的吸附方式只留「跟随 / 固定」,但两种方式都能选同样的位置(相对节点 / 固定坐标 / 鼠标位置),区别只在落地后是否跟随;② 继续检查 gis-view 有没有可简化和优化的地方,可以破坏原有语义。
|
|
147
|
+
|
|
148
|
+
- **API 正交拆分**:`src/gis-view/engine.js` 把节点草稿的 `placement` 收窄为位置来源(`offset` / `fixed` / `pointer`),新增 `anchor` 作为落地关系(`follow` / `fixed`)。候选计算先按来源求屏幕 / 世界位置,再按 `anchor` 落成相对偏移或世界坐标;重复避让、预览与提交统一按 `candidate.anchor` 分支。缺省锚点由 `placement` 推导,保持旧调用行为。
|
|
149
|
+
- **类型破坏性收口**:`src/gis-view/types.d.ts` 删除 `GisViewPointDecoration.placement` 旧别名,节点数据只保留 `anchor: 'offset' | 'fixed'`;新增 `GisViewDecorationDraftPointAnchor`,草稿 options 与 payload 增加 `anchor`。内部候选结构同时去掉未使用的 `placement` / `at` 字段。
|
|
150
|
+
- **Demo 与自测**:`DecorationDraftDemo.vue` 的吸附方式与位置来源改成正交下拉,两个方式下都能选三种来源,日志 / 确认文案同步显示组合;`selftest-demos.html` 新增 3 条选项与映射断言,`selftest-decoration.html` 新增 6 条 `pointer + follow`、`fixed + follow`、`offset + fixed` 的预览与提交断言。
|
|
151
|
+
- **文档与核心文件**:同步 `docs/manual/12` / `16` / `17` / `18`、`docs/steps/README.md`、`README.md`、`src/gis-view/README.md` 与 `docs/demos/api-index.js`;核心文件为 `src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/demos/DecorationDraftDemo.vue`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-decoration.html`。
|
|
152
|
+
- **验证**:14 个自测页 **2031** 条通过 / 0 失败(`selftest-decoration` 75、`selftest-demos` 286、`selftest-features` 582、`selftest-docs` 130);`npx tsc --noEmit`、`npm run check:docs`(241 个成员 / 238 个方法 / 238 个数据字段 / 90 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的 2026-10-20 增量(装饰位置来源与吸附关系解耦)](../AI对话汇总.md#2026-10-20-增量装饰位置来源与吸附关系解耦)。
|
|
153
|
+
|
|
154
|
+
### 2026-10-20 增量:装饰吸附分级与重复快捷方法收口
|
|
155
|
+
|
|
156
|
+
本轮仍是现有会话的继续增量,没有独立会话归档文件,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:① 修改装饰 Demo,吸附方式只保留「跟随 / 固定」,吸附位置再分「固定位置 / 鼠标位置」;② 继续检查 gis-view 有没有可简化和优化的地方。
|
|
157
|
+
|
|
158
|
+
- **装饰吸附分级**:`docs/demos/DecorationDraftDemo.vue` 拆成两级控件,`pointSnapMode` 只有 `follow` / `fixed`,`pointSnapPosition` 只有 `fixed` / `pointer`;映射到草稿 API 仍是 `placement: 'offset' / 'fixed' / 'pointer'`,仅固定坐标档传 `at`。`selftest-demos.html` 新增 3 条断言验选项值、固定档载荷与鼠标位置档不传 `at`。
|
|
159
|
+
- **重复实例入口收口**:删除 `setEffects` / `setPointSize` / `setPointSymbol` / `setPointColor` / `setLineWidth` / `setLineColor` / `setChannelWidth` / `setChannelNodeWidth` / `setChannelInset` / `setChannelTangentInset` / `setChannelName` / `clearFilter` / `clearDropPreview` 共 13 个转发型快捷方法,统一到 `updateOptions({ effects })` / `updatePoint` / `updateLine` / `updateChannel` / `setFilter(null)` / `setDropPreview(null)`;保留坐标归一化、拐点、多回线与分组联动等复合入口。实例成员 254 → **241**(方法 251 → **238**,属性 3)。
|
|
160
|
+
- **通道窄读**:`engine.js` 抽出 `channelInfoSnapshot()`,`getChannels()` 与新增的 `getChannel(channelId, index)` 共用;组件 `getChannel()` 按目标通道取一份,不再复制全部通道再查找。`selftest-features.html` 新增 1 条断言确认 13 个旧入口已移除、统一入口仍存在。
|
|
161
|
+
- **文档与自测迁移**:同步 `README.md`、`src/gis-view/README.md`、`docs/GisView.md`、`docs/manual/12` / `16` / `17`、`docs/steps/README.md`、`docs/demos/api-index.js`、Demo、Playground 与相关自测页;`selftest-demos.html` 283 条,`selftest-features.html` 582 条。
|
|
162
|
+
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/demos/DecorationDraftDemo.vue`、`docs/demos/api-index.js`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-features.html`。
|
|
163
|
+
- **验证**:14 个自测页 **2022** 条通过 / 0 失败(`selftest-features` 582、`selftest-demos` 283、`selftest-docs` 130);`npx tsc --noEmit`、`npm run check:docs`(241 个成员 / 238 个方法 / 238 个数据字段 / 90 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的 2026-10-20 增量(装饰吸附分级与重复快捷方法收口)](../AI对话汇总.md#2026-10-20-增量装饰吸附分级与重复快捷方法收口)。
|
|
164
|
+
|
|
165
|
+
### 2026-10-21 增量:标签 HTML 语义与渲染性能
|
|
166
|
+
|
|
167
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:① 标签显示的 HTML 为什么不生效、是否永远按 HTML 渲染、标签多了会不会影响性能;② 继续检查隐藏性能问题和 bug 并修复;③ 在可以破坏组件原有语义时优化性能。
|
|
168
|
+
|
|
169
|
+
- **结论**:HTML 渲染链本身可用;全局 `label.html` / `lineLabel.html`、数据 `labels[].html` 的逐条覆盖、`updateLabel` 双向切换与线路标签都正常。函数返回 `HTMLElement` 时始终按元素插入,是既有文档化例外。
|
|
170
|
+
- **修复**:导出显式保留逐条 `html: true / false`;`labelClick` / `labelDrag` 载荷补 `html`,HTML 模式 `content` 回报 `innerHTML`;`getLabels()` 优先回报运行时偏移;模板取值、`field` 与默认名称在 HTML 模式转义,只有 `content` 模板与函数内容由使用方掌控。
|
|
171
|
+
- **性能**:`paintLabel()` 拆分 class / 样式 / 内容 / 尺寸签名,只改样式不重写 `innerHTML`,只换位置不重写内容与样式;尺寸缓存键去掉 index / labelId / 锚点,批量量尺寸实时复用本轮缓存。120 条同内容 HTML 标签首轮布局读取 127 → 7 次;只改样式 121 次布局读取 + 120 次 `innerHTML` → 3 次 + 0 次;改内容仍逐条写 `innerHTML`,属必要成本。
|
|
172
|
+
- **核心文件**:`src/gis-view/overlay.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-labels.html`、`docs/manual/12-标签与装饰.md`、`docs/manual/20-性能与大数据.md`、`docs/steps/README.md`、根 `README.md`、`src/gis-view/README.md`。
|
|
173
|
+
- **验证**:`selftest-labels.html` 新增 16 条(151 条 / 0 失败);14 个自测页 **2047** 条通过 / 0 失败;`npx tsc --noEmit`、`npm run check:docs`(241 个成员 / 238 个方法 / 238 个数据字段 / 90 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。
|
|
174
|
+
### 2026-10-21 增量:高密度标签自动画布化
|
|
175
|
+
|
|
176
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:① `html` 改成 `false` 之后组件的标签为什么还是用 `div` 渲染,几万个标签 `div` 会不会卡顿;② 继续优化组件性能。
|
|
177
|
+
|
|
178
|
+
- **结论**:`html` 只决定字符串按纯文本还是 HTML 解析,不改变容器;`html: false` 仍然逐条建 `.gis-view__label`(默认 `div`),所以单靠它不能减少高密度场景的 DOM。
|
|
179
|
+
- **实现**:`overlay.js` 在强制显示档(`labelOptimize !== true` 且未进密集档)为节点层 / 线路层各加一张 Canvas;某一层本轮可画布的纯文本标签达到 **1024** 条时,该层改画到 `.gis-view__label-canvas`。HTML、函数返回 `HTMLElement`、可拖拽 / 可编辑及背景图 / 阴影 / `transform` / 多行 / 字间距 / 非实线或四边不等边框等 Canvas 画不全的标签继续走 DOM,可混排。首屏排版、平移缩放、拖节点、拖线路、悬停半径变化同步更新,SVG 导出包含画布文本;DOM ↔ Canvas 切换会回收旧节点但保留标签 meta。
|
|
180
|
+
- **选项与回退**:`create.js` / `types.d.ts` 新增顶层 `labelRender?: 'auto' | 'dom'`(缺省 `auto`,非法值告警并按 `auto`);`dom` 强制逐条 DOM。优化档 / 密集档始终走 DOM,因为避让、截断与命中判定要真实量尺寸,不能用这条画布路径绕过。
|
|
181
|
+
- **核心文件**:`src/gis-view/overlay.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`src/gis-view/gis-view.css`、`docs/steps/selftest-labels.html`、`docs/manual/03-配置项.md`、`docs/manual/12-标签与装饰.md`、`docs/manual/20-性能与大数据.md`、`docs/steps/README.md`、`README.md`、`src/gis-view/README.md`。
|
|
182
|
+
- **验证**:`selftest-labels.html` 新增 7 条(151 → **158** 条 / 0 失败),覆盖 1100 条纯文本单画布、HTML 混排保留 DOM、`labelRender: 'dom'` 回退、切回 `auto` 回收旧 div、SVG 导出与缩放只推一次;14 个自测页 **2054** 条通过 / 0 失败。`npx tsc --noEmit`、`npm run check:docs`(241 个成员 / 238 个方法 / 239 个数据字段 / 91 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的 2026-10-21 增量(高密度标签自动画布化)](../AI对话汇总.md#2026-10-21-增量高密度标签自动画布化)。
|
|
183
|
+
|
|
184
|
+
### 2026-10-21 增量:要素显隐、节点拆分与通道对账
|
|
185
|
+
|
|
186
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:① 节点 / 线路 / 通道隐藏后再恢复;② 节点拆分为多个并重算线路与通道;③ 标签逐条配置交互能力;④ 参考节点位置对账,新增最近通道变化对账。
|
|
187
|
+
|
|
188
|
+
- **显隐**:新增 `setFeatureVisible` / `hideFeatures` / `showFeatures`,统一改 `visible` 并收成一步历史、一条 `batch`;通道藏起保留成员 / 分组 / 骨架 / 编辑状态,节点藏起时绑定线路退回自身几何,锚定通道整条收起。
|
|
189
|
+
- **拆分**:`splitPoint` 支持两份或更多,第一份复用原下标与 id;线路按 `lines` 分配、未分配跟第一份;通道端点默认跟第一条被分配过的成员回线,也支持显式 `channels` / `channelFrom` / `channelTo`;退化线路 / 通道删除,`changes` 可直接提交后端事务。
|
|
190
|
+
- **标签与对账**:`GisViewItemLabel` 补 `draggable` / `editable` / `avoidOverlap`;`getChangedChannels` / `clearChangedChannels` 参考节点位置对账,按分组、成员、拐点、端点、可见性与其它字段报变化,并明确新通道只补基准、删除通道清账、读取不重置。
|
|
191
|
+
- **demo 与核心文件**:`ChannelDemo.vue`、`CopyMergeDemo.vue`、`LabelDemo.vue`;核心实现为 `create.js`、`engine.js`、`overlay.js`、`types.d.ts`、`gis-view.css`,同步 `docs/steps/selftest-features.html` / `selftest-demos.html` / `selftest-labels.html` / `selftest-docs.html` 与相关手册。
|
|
192
|
+
- **验证**:`selftest-features` 595、`selftest-demos` 292、`selftest-labels` 161、`selftest-docs` 130,四页共 **1178** 条 0 失败;`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(247 个成员 / 244 个方法 / 242 个数据字段 / 91 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的 2026-10-21 增量(问题.txt 四条)](../AI对话汇总.md#2026-10-21-增量问题txt四条要素显隐--节点拆分--标签逐条交互--通道变化对账)。
|
|
193
|
+
|
|
194
|
+
### 2026-10-21 增量(「修改.txt」三条:通道筛选 / 线路对账 / 继续优化)
|
|
195
|
+
|
|
196
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:① `getChangedChannels` 删除通道后是否同步清记录;能否只记拐点、忽略整组增删或加参数;② 新增 `getChangedLines`,线路删除时同步清记录,适用于只有节点和线路、没有通道的场景;③ 继续优化组件。
|
|
197
|
+
|
|
198
|
+
- **通道筛选**:`getChangedChannels({ reasons, ignoreGroups })`。`reasons` 白名单支持 `groups` / `members` / `waypoints` / `endpoints` / `visibility` / `fields`,结果里的原因与 `*Changed` / `fields` 同步收窄;`[]` 不扫数据直接返回;非数组提醒一次并忽略。`ignoreGroups` 忽略分组新增 / 删除 / 重排,只比较共有分组(按 `id`)的 `path`,已有分组拐点真变了仍报 `waypoints`;缺省 `path` 与空数组等价。
|
|
199
|
+
- **线路账本**:新增 `getChangedLines(options?)` / `clearChangedLines(refs?)`,按 `path`(`path` / `start` / `end`)、`endpoints`(`from` / `to`)、`visibility`、`fields` 报变化。新线路只补基准、删除线路清账、整份换线路重设基准,读取不改基准;通道骨架变化仍归 `getChangedChannels`。
|
|
200
|
+
- **删除清账**:`removeChannel` / `removeLines` 同步摘掉通道与线路账本,连带删除的成员回线也不留在下一次线路查询里。
|
|
201
|
+
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-features.html`、`docs/manual/06` / `16` / `17` / `18`、`docs/steps/README.md`、`docs/GisView.md`、根 `README.md`、`src/gis-view/README.md`、`docs/demos/api-index.js`(生成物)。
|
|
202
|
+
- **验证**:`selftest-features.html` 595 → **603** 条 / 0 失败(新增 8 条),`selftest-demos` 292、`selftest-labels` 161、`selftest-docs` 130,四页共 **1186** 条 0 失败;`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(249 个成员 / 246 个方法 / 242 个数据字段 / 91 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-21-增量修改txt三条通道筛选--线路对账--继续优化)。
|
|
203
|
+
|
|
204
|
+
### 2026-10-21 增量(「修改.txt」:channelDemo 线路分组弹框)
|
|
205
|
+
|
|
206
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:修改 gis-view 组件;修改 channelDemo 分组弹框,参考图片;可以使用一次改变整个分组的方法。
|
|
207
|
+
|
|
208
|
+
- **弹框界面**:`docs/demos/ChannelDemo.vue` 新增居中的「线路分组」模态框,标题下显示「场站对标标识」,每个分组一张卡片(分组序号 / 回线数 / 组 id),每行回线显示名称、端点与「移入其他组」下拉;入口同时放在通道分组面板与右键交互框里。
|
|
209
|
+
- **草稿与一次提交**:行内「确认移入」只改 `groupDialog.groups` 本地草稿,可以连续移动;取消 / Esc / 点遮罩不写组件数据、不记历史。底部「确定分组」把整份草稿过滤空组后只调用一次 `view.splitChannelGroups(channelId, groups)`,整份 groups 一次落地;没有移动时按钮禁用。右键框原有的逐条「分配」与 `moveChannelLine` 保留。
|
|
210
|
+
- **核心文件**:`docs/demos/ChannelDemo.vue`、`docs/steps/selftest-demos.html`、`docs/steps/README.md`、根 `README.md`、`src/gis-view/README.md`。本轮不改组件实例接口,成员 / 方法 / 数据字段 / options 保持 **249 / 246 / 242 / 91**。
|
|
211
|
+
- **验证**:`selftest-demos.html` 新增 4 条断言(分组卡片与副标题、行内移入只改草稿、取消不写数据、确定只调用一次 `splitChannelGroups`),292 → **296** 条 / 0 失败;`selftest-features` 603、`selftest-labels` 161、`selftest-docs` 130,四页共 **1190** 条 / 0 失败。`npx tsc --noEmit`、`npm run check:docs`、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-21-增量修改txtchanneldemo-线路分组弹框)。
|
|
212
|
+
### 2026-10-21 增量(「修改.txt」两条:Ctrl 加点高亮范围 / 分组拐点拖动模式)
|
|
213
|
+
|
|
214
|
+
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:① 按 Ctrl 添加拐点时增加类型,可只高亮单线路、整个分组或整条通道,普通点选线路也可指定;② 分组拐点拖动增加一种模式,一种与现有逻辑相同,另一种只移动当前分组同一序号 / 平行位置的拐点,其它非相对位置的拐点不动,并在 demo 中演示。
|
|
215
|
+
|
|
216
|
+
- **加点高亮范围**:`engine.js` 中 Ctrl / ⌘ + 点击通道回线加点后的选中集改为复用 `channelSelectMode`:`line` 只高亮被加点回线、`group` 连所在分组、`channel` 连整条通道;普通点选与 Ctrl 多选仍走同一套展开,切换 option 只重画一帧。
|
|
217
|
+
- **拖动模式**:新增 `channelWaypointDragMode: 'parallel' | 'vertex'`,缺省 `'parallel'` 保持共用骨架 + 平行偏移。`'vertex'` 只把当前分组同一 `pathIndex` 的拐点按相同世界增量平移,组内成员回线一起移动这一序号,相邻顶点、其它顶点与其它分组不动。
|
|
218
|
+
- **偏移数据**:`vertex` 结果写进 `groups[].waypointOffsets`,键按含首尾端点的骨架序号计算且只接受中间拐点,值支持 `[dx, dy]` / `{ x, y }`。增删拐点时偏移序号同步平移,切回 `parallel` 不清空已有偏移;重写分组声明并省略该项可清除。`getChannels()` / `getChannelGroups()` / `getChannelGroupWaypoints()` 都带偏移,`getParallelGroups()` 与 `exportData` 的 `group_route` 已叠成实际路由。
|
|
219
|
+
- **demo 与协议**:`docs/demos/ChannelDemo.vue` 增加选中模式、拖动模式下拉与「准备两分组拐点」;通道拐点后端请求同时带 `path` 与 `waypointOffsets`。`docs/接口协议.md` 的 5.1 / 5.2 / 6.3 与后端落库清单同步要求两段一起落库、一起返回。
|
|
220
|
+
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/demos/ChannelDemo.vue`、`docs/steps/selftest-features.html`、`docs/steps/selftest-demos.html`、`docs/manual/02` / `03` / `08` / `09` / `10` / `21`、`docs/format/03` / `04`、`docs/接口协议.md`、`docs/steps/README.md`、根 `README.md`、`src/gis-view/README.md` 与 `docs/demos/api-index.js`(生成物)。
|
|
221
|
+
- **验证**:`selftest-features.html` 603 → **611** 条 / 0 失败(3 条 Ctrl 加点高亮范围 + 5 条 `vertex` 偏移 / 邻点 / 分组隔离 / 导出路由),`selftest-demos.html` 296 → **297** 条 / 0 失败(模式下拉与准备按钮),`selftest-labels` 161、`selftest-docs` 130,四页共 **1199** 条通过 / 0 失败。`node --check`、`npx tsc --noEmit`、`npm run check:docs`(249 个成员 / 246 个方法 / 245 个数据字段 / 92 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-21-增量修改txt两条ctrl-加点高亮范围--分组拐点拖动模式)。
|
|
222
|
+
|
|
51
223
|
## 六、怎么自己复查
|
|
52
224
|
|
|
53
225
|
会话文件是逐行 JSON,不用整份读 —— 只挑两种行解析就够:`session_meta` 行里的 `payload.cwd` 认项目,`payload.type === 'user_message'` 行里的 `payload.message` 是用户原话:
|