gis-view-webgl2 0.1.7 → 0.1.9
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 +14 -11
- package/dist/gis-view.css +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +445 -241
- package/dist/index.js +1 -1
- package/docs/AI/345/257/271/350/257/235/346/261/207/346/200/273.md +65 -498
- package/docs/GisView.md +1 -1
- package/docs/GisView/345/256/236/347/216/260/345/216/237/347/220/206.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 +114 -478
- package/docs/demos/BasicDemo.vue +144 -27
- package/docs/demos/BatchAddDemo.vue +133 -7
- package/docs/demos/ChannelDemo.vue +61 -0
- package/docs/demos/ConnectDemo.vue +164 -33
- package/docs/demos/CopyMergeDemo.vue +144 -42
- package/docs/demos/EventDemo.vue +29 -24
- package/docs/demos/LabelDemo.vue +5 -5
- package/docs/demos/api-index.js +53 -41
- 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 +31 -33
- package/docs/format/02-/350/212/202/347/202/271/344/270/216/347/272/277/350/267/257.md +1 -0
- package/docs/format/04-/351/200/232/351/201/223/344/270/216/346/240/207/347/255/276.md +3 -0
- 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/index.html +136 -13
- package/docs/internals/15-04-/351/200/220/350/275/256/350/256/260/345/275/225-/347/203/255/345/212/233/345/233/276/344/270/216/346/200/247/350/203/275.md +10 -0
- 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/03-/351/205/215/347/275/256/351/241/271.md +82 -14
- package/docs/manual/04-/344/272/213/344/273/266/344/270/216/345/233/236/350/260/203.md +23 -17
- package/docs/manual/05-/347/224/273/350/264/250/344/270/216/346/211/271/351/207/217/346/233/264/346/226/260.md +65 -0
- 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 +100 -40
- package/docs/manual/08-/351/200/211/344/270/255/344/270/216/346/213/220/347/202/271.md +11 -7
- package/docs/manual/09-/351/200/232/351/201/223/344/270/216/345/244/232/345/233/236/347/272/277.md +66 -6
- 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 +28 -5
- package/docs/manual/14-/350/247/206/345/233/276/344/270/216/347/255/233/351/200/211.md +46 -14
- package/docs/manual/15-/345/257/274/345/207/272/344/270/216/351/233/206/346/210/220.md +5 -2
- package/docs/manual/16-/345/256/236/344/276/213/346/226/271/346/263/225/346/200/273/350/241/250.md +34 -29
- package/docs/manual/17-/345/217/202/346/225/260/351/200/237/346/237/245.md +30 -22
- package/docs/manual/18-/351/200/220/346/226/271/346/263/225/347/244/272/344/276/213.md +168 -81
- 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 +5 -3
- 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 +9 -6
- package/docs/steps/README.md +201 -120
- package/docs/steps/bench-scale.html +1 -1
- package/docs/steps/index.html +222 -6
- package/docs/steps/selftest-actions.html +26 -25
- package/docs/steps/selftest-data.html +1 -1
- package/docs/steps/selftest-demos.html +290 -16
- package/docs/steps/selftest-docs.html +17 -6
- package/docs/steps/selftest-features.html +594 -54
- package/docs/steps/selftest-full.html +3 -3
- package/docs/steps/selftest-labels.html +82 -1
- package/docs/steps/selftest-perf.html +62 -7
- package/docs/steps/selftest-select.html +71 -6
- 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/docs//344/273/2160/345/210/260/345/256/214/346/225/264/347/232/204/345/256/236/347/216/260.md +1 -0
- package/package.json +1 -1
- package/docs/ai/01-/350/265/267/346/272/220/344/270/216/350/277/231/344/273/275/346/261/207/346/200/273/347/232/204/347/224/261/346/235/245.md +0 -29
- package/docs/ai/02-/346/214/211/345/206/205/345/256/271/345/210/206/347/261/273-/350/277/231/344/270/200/350/267/257/351/203/275/345/234/250/346/224/271/344/273/200/344/271/210.md +0 -66
- package/docs/ai/03-/351/207/215/350/246/201/351/227/256/347/255/224/351/200/211/357/274/210/344/270/200/357/274/211/357/274/232/351/200/211/345/236/213/351/200/232/351/201/223/344/270/216/346/240/267/345/274/217.md +0 -178
- package/docs/ai/04-/351/207/215/350/246/201/351/227/256/347/255/224/351/200/211/357/274/210/344/272/214/357/274/211/357/274/232/344/272/244/344/272/222/346/200/247/350/203/275/344/270/216/346/225/260/346/215/256.md +0 -140
- package/docs/ai/05-/351/207/215/350/246/201/351/227/256/347/255/224/351/200/211/357/274/210/344/270/211/357/274/211/357/274/232/345/256/277/344/270/273/346/227/201/346/224/257/344/270/216/346/224/266/345/217/243.md +0 -43
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 会话索引与复查方法
|
|
2
2
|
|
|
3
|
-
> 39
|
|
3
|
+
> 39 个会话文件、历史增量索引与本轮复查入口。主页面看结论与精选问答,这里负责“某一天到底改了什么、怎么复核”。
|
|
4
|
+
> 维护约定:改 `README.md`、`src/gis-view/README.md` 或 `docs/**/*.md` 时,同步更新 [AI 对话汇总](../AI对话汇总.md) 与本章节。
|
|
4
5
|
|
|
5
|
-
##
|
|
6
|
+
## 一、会话索引(39 个)
|
|
6
7
|
|
|
7
|
-
>
|
|
8
|
+
> 会话文件名格式为 `rollout-<日期>T<时间>-<id>.jsonl`,下表只写前两段;完整路径在 `C:\Users\tode\.codex\sessions\<年>\<月>\<日>\` 下。消息数包含用户发出的所有消息(含“继续”这类短指令)。10-14 之后的需求多为现有会话的增量轮次,不另造新会话。
|
|
8
9
|
|
|
9
10
|
| 日期 | 会话 | 消息 | 主题一句话 |
|
|
10
11
|
| --- | --- | --- | --- |
|
|
@@ -48,490 +49,125 @@
|
|
|
48
49
|
| 10-13 16:06 | `rollout-2026-10-13T16-06-57-…` | 4 | 问题.txt 轮次:选中集 / 拐点键跟要素走(删除、合并后不跳到邻线)→ 15.74 |
|
|
49
50
|
| 10-14 08:50 | `rollout-2026-10-14T08-50-59-…` | 2 | 本轮:问题.txt 六条(拐点样式文档 / 文档搜索 / 右键新增场站 / demo 缩放限制 / 新增方法文档 / 本汇总)→ 15.77 |
|
|
50
51
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
-
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
-
|
|
223
|
-
### 2026-10-21 增量(大数据性能收口与 Canvas 标签模式)
|
|
224
|
-
|
|
225
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:① 继续优化 gis-view 性能,确保大数据下的交互与渲染;② 标签已有 `auto` / `dom`,新增 `canvas`。
|
|
226
|
-
|
|
227
|
-
- **模式**:`labelRender?: 'auto' | 'canvas' | 'dom'`。`auto` 保持强制显示档、单层达到 1024 条才自动画布化;显式 `canvas` 不受阈值限制,`labelOptimize: true` / 密集档也生效,但仍遵守 `maxCount` / `when` / `scanLimit` / 避让;`dom` 保持旧行为。需要 DOM 语义的标签始终留在同层 DOM。
|
|
228
|
-
- **性能**:`overlay.js` 增加画布文字测量缓存(字体 / 样式 / 文案,上限 8192)、交互期按 `requestAnimationFrame` 合并重绘、缩放位移与屏外标签裁剪;优化档的避让和换落点直接使用画布宽高,不创建也不测量 DOM。线路标签换位后同步 `lineLabelMeta`,函数内容无法安全重算时放弃沿线回退。
|
|
229
|
-
- **核心文件**:`src/gis-view/overlay.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-labels.html`、`docs/manual/03` / `12` / `20`、`docs/steps/README.md`、根 `README.md`、`src/gis-view/README.md`、`docs/demos/api-index.js`(生成物)与 `docs/AI对话汇总.md`。
|
|
230
|
-
- **验证**:`selftest-labels.html` 新增 4 条(1100 条同文案 `measureText` ≤ 2 次、连续 5 次缩放只重绘 1 ~ 2 次、显式画布在优化档遵守 `maxCount: 200`、6 条线路标签全部进画布且 DOM 为 0),161 → **165** 条 / 0 失败;14 个自测页共 **2101** 条通过 / 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-增量大数据性能收口与-canvas-标签模式)。
|
|
231
|
-
|
|
232
|
-
### 2026-10-21 增量:大数据展示与点聚合
|
|
233
|
-
|
|
234
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:① 继续优化 gis-view 性能,保证大数据下的交互与渲染流畅性;② 增加功能并补 Demo。本轮新增点聚合,只影响展示、拾取、快照与导出,不改原始 `points`、选中集或 `getData()`。
|
|
235
|
-
|
|
236
|
-
- **聚合语义**:新增 `pointCluster`(`true` 或半径 / `minPoints` / `maxZoom` 配置),多成员收成一个带数量的圆,成员从普通点批次、标签、拾取、框选、涟漪、装饰与导出中隐藏;点击聚合圆只发 `clusterClick`,不触发普通 `click`、不选中内部节点。选中、拖动、合并和复制预览中的点强制单成员。
|
|
237
|
-
- **性能与读数**:`cluster.js` 的固定网格 + `Int32Array` 成员链表按 O(n) 建组,平移不重算,缩放 / 配置 / 数据 / 编辑状态变化才在开画前重排;`getClusters()` / `getPointCluster()` / `getStats().clusterCount` / `clusterPointCount` / `clusterMs` 与 `listPoints({ visibleOnly: true })` 给出当前展示口径。
|
|
238
|
-
- **核心文件**:`src/gis-view/cluster.js`(新增)、`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/overlay.js`、`src/gis-view/svg.js`、`src/gis-view/events.js`、`src/gis-view/gis-view.css`、`src/gis-view/types.d.ts`、`docs/demos/ClusterDemo.vue`、`docs/demos/demos.js`、`docs/steps/selftest-perf.html`、`docs/steps/selftest-demos.html`、`docs/manual/03` / `04` / `16` / `17` / `18` / `20`、`docs/GisView.md`、`docs/steps/README.md`、根 `README.md`、`src/gis-view/README.md` 与 `docs/demos/api-index.js`(生成物)。
|
|
239
|
-
- **验证**:`selftest-perf.html` 新增 19 条,136 → **155** 条 / 0 失败;`selftest-demos.html` 297 → **305** 条 / 0 失败;全部 14 个自测页共 **2121** 条通过 / 0 失败。`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(**251** 个成员 / **248** 个方法 / **247** 个数据字段 / **93** 个 options / **18** 个功能开关 / **43** 个事件 / **16** 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-21-增量点聚合与大数据展示)。
|
|
240
|
-
|
|
241
|
-
### 2026-10-21 增量:动效、热力图与鹰眼图性能
|
|
242
|
-
|
|
243
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:① 继续优化组件和性能;② 优化动画效果和性能;③ 优化热力图效果和性能;④ 优化鹰眼图效果和性能。
|
|
244
|
-
|
|
245
|
-
- **动画**:`lineEffectRuns` / `lineEffectRunByIndex` 让每帧只遍历真正配了动点的线路;路径就地变化时重算总长、包围盒与 `motion.total`,多层阴影合并上传。
|
|
246
|
-
- **热力图**:`styleKey()` / `weightKey()` 把要素采样与密度烘焙分开;只改 `density.opacity` / `layer` 不重烤,换色带 / 核参数复用采样重烤;`updatePoint` / `updateLine` 只在坐标、权重或通道宽度变化时标脏,追加与拖动路径也同步记账,拖动期间延迟到停手统一补烤。
|
|
247
|
-
- **鹰眼图**:线路单独使用离屏层与缓存,`collectMinimapData()` 顺路记录线路包围盒,视野外线路直接跳过;布局尺寸未变不重设 canvas,点层缓存键补 `ratio`。
|
|
248
|
-
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/heatmap.js`、`src/gis-view/minimap.js`、`src/gis-view/create.js`、`docs/steps/selftest-effects.html`、`docs/steps/selftest-perf.html`、`docs/steps/selftest-demos.html`、`docs/manual/13` / `14` / `20`、`docs/steps/README.md`。
|
|
249
|
-
- **验证**:`selftest-effects.html` 83 → **87** 条、`selftest-perf.html` 155 → **162** 条、`selftest-demos.html` 305 → **308** 条;14 个自测页共 **2135** 条通过 / 0 失败。`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(251 个成员 / 248 个方法 / 247 个数据字段 / 93 个 options / 18 个功能开关 / 43 个事件 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-21-增量动效热力图与鹰眼图性能)。
|
|
250
|
-
|
|
251
|
-
### 2026-10-22 增量:动效、热力图与鹰眼图显示优化
|
|
252
|
-
|
|
253
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:① 优化动画显示效果;② 优化热力图显示效果;③ 优化鹰眼图显示效果。
|
|
254
|
-
|
|
255
|
-
- **动画显示**:`engine.js` 增加动点拖尾批次(28 CSS 像素、4 段渐隐、独立缓冲 / VAO),按相机比例把屏幕长度换成世界距离;拖尾绘制在线路圆头之上、节点涟漪之下,高倍缩放下仍然可见。
|
|
256
|
-
- **热力图显示**:`density.js` 写预乘 alpha,`shaders.js` 增加 `u_premultiplied`,`engine.js` 的密度场改用 `ONE / ONE_MINUS_SRC_ALPHA`;LINEAR 过滤的透明边缘不再混黑,整层 opacity 也不会只淡 alpha、留下发亮的 RGB。
|
|
257
|
-
- **鹰眼图显示**:`minimap.js` 按像素覆盖率给节点做抗锯齿并用 source-over 合成重叠像素,线路补圆头端点,小图缩略节点不再呈硬边方块。
|
|
258
|
-
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/density.js`、`src/gis-view/shaders.js`、`src/gis-view/minimap.js`、`docs/steps/selftest-effects.html`、`docs/steps/selftest-perf.html`、`docs/steps/selftest-demos.html`。
|
|
259
|
-
- **验证**:`selftest-effects.html` 87 → **88** 条、`selftest-perf.html` 162 → **163** 条、`selftest-demos.html` 308 → **309** 条;14 个自测页共 **2138** 条通过 / 0 失败。`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(251 个成员 / 248 个方法 / 247 个数据字段 / 93 个 options / 18 个功能开关 / 43 个事件 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-22-增量动效热力图与鹰眼图显示优化)。
|
|
260
|
-
|
|
261
|
-
### 2026-10-22 增量:移除 zoomScaleAuto 并新增 fitSpacing
|
|
262
|
-
|
|
263
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:① `zoomScaleAuto` 有什么用、能否删除;② 远处孤立节点撑大包围盒后主体节点过挤,增加开关与最小节点间距参数,按间距调整内部比例。
|
|
264
|
-
|
|
265
|
-
- **移除自适应比例开关**:确认 `zoomScaleAuto` 只给没写的 `pointZoomScale` / `lineZoomScale` 兜底成 `1`,无法解决包围盒被远处孤立点撑大的比例问题,因此连同 `zoomExponent` 与指数 `null` 哨兵一起删除;联动指数恢复缺省 `0`,显式写多少就按多少算。`getZoomBaseScale()` / `setZoomBaseScale()` 保留。
|
|
266
|
-
- **新增 fitSpacing**:`fitSpacing?: boolean | GisViewFitSpacingOptions`,`true` 等价于 `{ minDistance: 24, maxZoom: 0 }`。普通适应后按筛选 / 隐藏后可见节点的最近正中心距反推比例,`maxZoom` 为正数时限制相对普通适应比例的倍数,`0` 表示不限且仍受 `maxScale` 约束。相机中心改用可见节点 x / y 中位数,远处孤立点允许落到视口外;只在首次默认适应与 `fitView()` 生效,显式 `initialView.scale` / `zoom` 优先。`updateOptions({ fitSpacing })` 不移动相机,需要再调 `fitView()`。
|
|
267
|
-
- **实现与 demo**:`utils.js` 的 `measurePointSpacing()` 用 y 序相邻点上界、x 序扫描与比较预算求最近正距离,避免全量 O(n²) 并跳过重合坐标;`engine.js` 把调整串进默认适应与 `fitView()`,`create.js` 把 `fitSpacing` 归入展示类热更新。`GisViewDemo.vue` 的样式面板增加开关、最小中心距与最大放大输入,修改后即时 `fitView()` 便于对照。
|
|
268
|
-
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/utils.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/demos/GisViewDemo.vue`、`docs/steps/selftest-scale.html`、`docs/steps/README.md`、`docs/GisView.md`、`docs/api/index.html`、`docs/demos/api-index.js`(生成物)、`docs/manual/02` / `03` / `14` / `16` / `17` / `18` / `21`、`docs/internals/16-03-优化与取舍-下.md`。
|
|
269
|
-
- **验证**:14 个自测页共 **2138** 条通过 / 0 失败;其中 `selftest-scale.html` 输出 113 条结果,**107 PASS / 0 FAIL / 6 DIAG**;新增的 6 条 `fitSpacing` 断言全部通过(配置回显 / 孤立点下提高比例且忽略重合点 / 中位中心 / 24px 屏幕间距 / `maxZoom` 上限 / 关闭恢复),关键读数 `0.0224 → 0.24`、中心 `[50, 50]`、间距 `24`、上限 `0.0224 → 0.0448`、关闭恢复 `0.0224`。`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(251 个实例成员 / 93 个 options / 247 个数据字段)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的 2026-10-22 增量](../AI对话汇总.md#2026-10-22-增量移除-zoomscaleauto-并新增-fitspacing)。
|
|
270
|
-
|
|
271
|
-
### 2026-10-22 增量:fitSpacing 居中修正与 GisViewDemo 拆分
|
|
272
|
-
|
|
273
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:① 优化 `fitSpacing` 的放大效果,按两个最近节点的最小距离处理并居中;② 把 `GisViewDemo.vue` 拆分成多个组件,放进一个文件夹。
|
|
274
|
-
|
|
275
|
-
- **fitSpacing 口径**:`utils.js` 的 `measurePointSpacing()` 求最近正中心距时同时记住这一对节点,返回 `{ distance, center }`;`center` 是最近节点对的中点,不再取全量节点 x / y 中位数。`engine.js` 仍按 `minDistance / distance` 提高比例,并把相机中心放到这对节点的中点;重合坐标不参与,远处孤立点允许出屏,`maxZoom` / `maxScale` 与显式 `initialView.scale` / `zoom` 的优先级不变。
|
|
276
|
-
- **Demo 拆分**:`docs/demos/GisViewDemo.vue` 只保留入口编排与 `provide`,新目录 `docs/demos/gis-view-demo/` 收纳 `useGisViewDemo.js`(状态与动作)、`demoContext.js`、`demo.css`、页头 / 说明 / 面板栈 / 舞台 / 弹框 / 页脚组件,以及 `panels/` 下的 `ViewPanels` / `StylePanels` / `DataPanels` / `OpsPanels`。面板按原页签分组,DOM 类名与 `data-demo` 钩子保持不变。
|
|
277
|
-
- **兼容处理**:根组件 `setupState` 继续暴露 `viewRef`、`channelReadyPayload` 和既有自测读取的 demo 读数;舞台容器仍用字符串模板 ref,避免自动解包成 `null`。原 scoped 样式移到 `demo.css` 并统一加 `.gis-view-demo` 命名空间,Teleport 弹层增加同名容器,避免污染其他演示。
|
|
278
|
-
- **核心文件**:`src/gis-view/utils.js`、`src/gis-view/engine.js`、`src/gis-view/types.d.ts`、`docs/demos/GisViewDemo.vue`、`docs/demos/gis-view-demo/**`、`docs/steps/selftest-scale.html`、`docs/manual/03` / `14`、`docs/steps/README.md`。
|
|
279
|
-
- **验证**:`selftest-scale.html` 为 **108 PASS / 0 FAIL / 6 DIAG**(114 条结果);14 个自测页共 **2139** 条通过 / 0 失败(`selftest-demo` 132、`selftest-demos` 309)。`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(251 个实例成员 / 248 个方法 / 247 个数据字段 / 93 个 options / 18 个功能开关 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-22-增量fitspacing-居中修正与-gisviewdemo-拆分)。
|
|
280
|
-
|
|
281
|
-
### 2026-10-22 增量:fitSpacing 居中、级联高亮与 forward
|
|
282
|
-
|
|
283
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:① 优化 `fitSpacing` 的放大位置;② 新增独立级联高亮、可配置样式并读取读数;③ 线路新增 `forward` 反向;④ 合并两个右键回调。工作区未发现随附参考图片,按问题文本实现。
|
|
284
|
-
|
|
285
|
-
- **fitSpacing**:`measurePointSpacing()` 在最近距离并列时,用「节点对中点离 x / y 中位数中心最近」打破平局;规则网格不会再从边角开始放大。相机仍居中到选中节点对的中点,阈值与优先级不变。
|
|
286
|
-
- **级联高亮**:`cascadeHighlight` 独立于选中集,支持 `scope` / `pointStyle` / `lineStyle` / `clearOnEmptyClick`;节点亮自身、直连线路与另一端节点,线路 / 通道回线亮两端。新增 `onCascadeHighlight`、`cascadeHighlight` 总线事件与 `getCascadeHighlight()`,空白点击、来源失效或关开关时收掉。
|
|
287
|
-
- **forward 与右键**:`GisViewLine.forward` 默认 `true`,写 `false` 反向装饰、箭头、动点与拖尾,并与 `effect.reverse` / `direction.reverse` 异或;不改 `path`。右键只留 `onContextMenu`,通道回线在顶层带 `lineId` / `lineIndex`,同一载荷附 `channelContext`;删除 `onChannelContextMenu`、`channelContextMenu` 与 `channelMenu` 开关。
|
|
288
|
-
- **文档与核心文件**:`engine.js`、`create.js`、`line.js`、`effect.js`、`utils.js`、`types.d.ts`、`features.js`、`events.js`;根 `README.md`、`src/gis-view/README.md`、`docs/GisView.md`、`docs/manual/02` / `03` / `04` / `07` / `10` / `14` / `16` / `17` / `18` / `21`、`docs/format/07`、`docs/steps/README.md` 与六个相关自测页;`docs/demos/api-index.js` 由脚本重生成。
|
|
289
|
-
- **验证**:14 个自测页 **2160** 条通过 / 0 失败(features 621、effects 96、demos 309、scale 115 条结果 = 109 PASS + 6 DIAG);`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(252 个成员 / 249 个方法 / 248 个数据字段 / 94 个 options / 17 个功能开关 / 43 个事件 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-22-增量fitspacing-居中级联高亮与-forward)。
|
|
290
|
-
|
|
291
|
-
### 2026-10-22 增量(「问题.txt」三条:合并样式说明 / 级联高亮 Demo / 筛选后的通道宽度)
|
|
292
|
-
|
|
293
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:① 说明「合并样式」是什么、有什么用;② 把上一轮的点击级联高亮补进 Demo;③ 排查 `setFilter` 为什么有时会让仍在显示的通道宽度发生变化。工作区未发现随附的参考图片,第 ③ 条按问题文字与现有锚点逻辑复现。
|
|
294
|
-
|
|
295
|
-
- **合并样式说明**:`mergePoints()` 后保留节点最终写进数据的 `size` / `symbol` 就是“合并样式”:尺寸取双方较大值,图标优先目标节点;自定义走 `merge.createItem()` 或 `payload.item`。Demo 合并读数加「合并样式:」前缀,复制与合并面板补规则与改写入口。
|
|
296
|
-
- **级联高亮 Demo**:综合示例「视图 · 交互 → 交互开关与快捷键」新增开关、`both` / `points` 范围、`getCascadeHighlight()` 读数;`selftest-demos` 覆盖开启、点节点读数、切范围、关闭和还原。
|
|
297
|
-
- **筛选后的通道宽度**:`engine.js` 的 `channelNodeWidthFor()` 不再只查 `pointByIndex`,改为用 `filteredAnchorIndexById` 补取被筛锚点,并通过按数据下标缓存的外框尺寸走同一条样式链;保留热力倍率,不叠临时状态样式。数据、样式链、隐藏集合或单点更新后清缓存。`setFilter` 隐藏一端或两端不再改变仍显示通道的宽度;节点真删除 / `visible: false` 才退回默认宽度。
|
|
298
|
-
- **核心文件**:`src/gis-view/engine.js`、`docs/demos/gis-view-demo/useGisViewDemo.js`、`docs/demos/gis-view-demo/panels/ViewPanels.vue`、`docs/manual/07` / `09` / `14`、`docs/steps/selftest-features.html`、`docs/steps/selftest-demos.html`、`docs/steps/README.md`。
|
|
299
|
-
- **验证**:`selftest-features` 621 → **625**、`selftest-demos` 309 → **314**、`selftest-docs` **130**,三页 0 失败;`node --check`、`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(252 个成员 / 249 个方法 / 248 个数据字段 / 94 个 options / 17 个功能开关 / 43 个事件 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过。公开 API 与文档计数未变。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-22-增量问题txt三条合并样式说明--级联高亮-demo--筛选后的通道宽度)。
|
|
300
|
-
|
|
301
|
-
### 2026-10-22 增量:预指定通道起点、导出范围、级联触发与筛选宽度
|
|
302
|
-
|
|
303
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:`beginAddChannel` 可直接指定起点;`exportImage` 支持视口 / 全部内容;完善方法与配置项参数文档;级联样式只作用于邻接项、直接选中仍走 select,并让框选 / 多选分别控制触发;继续修复筛选后的通道宽度。
|
|
304
|
-
|
|
305
|
-
- **交互与渲染**:`GisViewChannelDraftOptions.from` 支持 id / 下标 / 被筛锚点,草稿直接进 `from` 相位;`exportImage({ scope: 'all', padding })` 临时适应全部可见内容,PNG / SVG 出图后恢复相机与覆盖层;级联新增 `triggerOnClick` / `triggerOnMultiSelect` / `triggerOnBoxSelect`,直接选中项不再套级联样式,框选按整框邻接并集计算;通道锚点宽度改用中性的 `channelAnchorSpans`,筛选隐藏单端 / 双端及叠加选中样式时宽度与车道不跳。
|
|
306
|
-
- **核心文件**:`src/gis-view/engine.js`、`src/gis-view/create.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-features.html`、`docs/manual/03` / `07` / `10` / `15` / `16` / `17` / `18`、`docs/demos/api-index.js`(生成物)。
|
|
307
|
-
- **验证**:`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(252 个成员 / 249 个方法 / 248 个数据字段 / 94 个 options / 17 个功能开关 / 43 个事件 / 16 个分组)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过;`selftest-features` **646**、`selftest-demos` **314**、`selftest-docs` **130**,三页共 **1090** 条通过 / 0 失败。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-22-增量预指定通道起点导出范围级联触发与筛选宽度)。
|
|
308
|
-
|
|
309
|
-
### 2026-10-22 增量(「问题.txt」四条:筛选恢复 / focusOn 类型 / 程序化选中 / 线路跟随开关)
|
|
310
|
-
|
|
311
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的最新 `问题.txt`:① 通道被筛选后重新出现会错位,重新更新视图才正常;② `focusOn` 能否聚焦线路 / 通道,聚焦比例是否与节点一致,同 id 时如何指定类型;③ 如何通过方法选中通道、节点、线路、分组或拐点;④ 新增线路是否跟随节点的开关,默认开启,关闭后隐藏 / 删除 / 筛选只考虑节点。工作区未发现随附参考图片,第 ① 条按文字与真实 `new.json` 临时复现验证。
|
|
312
|
-
|
|
313
|
-
- **筛选恢复**:`engine.js` 在 `resolveLines` 完成后调用 `reflowChannelWidths(channels)`。此前 `resolveChannels` 先于线路解析,缺省切点内收读到的是上一轮(筛选期间可能缺成员)的线宽;筛选恢复后偏移不会自动刷新。现在按当前线宽再对一遍偏移与回线路径,未变化时只比较不动几何。除自测断言外,另用真实 `new.json` 做临时复现页 3/3 PASS,页面已删除。
|
|
314
|
-
- **focusOn 类型与缩放**:支持显式 `point` / `line` / `channel` / `group`。裸字符串仍先节点后线路;同 id 用 `type` 消歧;通道可写 `{ channelId }` 或显式 `type: 'channel'`;分组必须 `type: 'group'`,`groupId` 全局唯一时可省略 `channelId`。节点、线路、通道、分组统一走 `zoomToBounds`,没有类型专属放大倍率。
|
|
315
|
-
- **程序化选中**:`selectFeatures` 新增 `type: 'group'` 和全局唯一 `groupId` 解析;新增 `selectWaypoint()`,支持字符串 / 下标 + `pathIndex`、`{ lineIndex, pathIndex }`、`{ lineId, pathIndex }` 与 `null`。有效拐点同时选中所在线路,`mode` 决定线路如何并入当前选中集;清空只清拐点高亮,不动要素选中集。
|
|
316
|
-
- **线路跟随开关**:`lineFollowsNode?: boolean` 默认 `true`。关闭后引擎缓存被线路 / 通道绑定的节点最后坐标与解析尺寸:`visible: false`、`removePoints`、筛选退场时只影响节点,回线与通道继续按缓存几何绘制;节点仍存在时拖动仍会更新。筛选未显式 `cascade` 时默认级联从 `'binding'` 改为 `false`,显式值始终优先。`updateOptions({ lineFollowsNode })` 会重算当前筛选并刷新引擎缓存。
|
|
317
|
-
- **核心文件**:`src/gis-view/create.js`、`src/gis-view/engine.js`、`src/gis-view/filter.js`、`src/gis-view/filter-runner.js`、`src/gis-view/filter.worker.js`、`src/gis-view/types.d.ts`、`docs/steps/selftest-features.html`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-docs.html`、`docs/manual/03` / `08` / `09` / `14` / `16` / `17` / `18`、`docs/steps/README.md`、根 `README.md`、`src/gis-view/README.md` 与 `docs/demos/api-index.js`(生成物)。
|
|
318
|
-
- **验证**:`selftest-features.html` **662**、`selftest-demos.html` **314**、`selftest-docs.html` **130**,三页共 **1106** 条通过 / 0 失败;`npx tsc --noEmit`、`npm run check:docs`(253 个成员 / 250 个方法 / 249 个数据字段 / 95 个 options)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-22-增量问题txt四条筛选恢复--focuson-类型--程序化选中--线路跟随开关)。
|
|
319
|
-
|
|
320
|
-
### 2026-10-22 增量:接口能力 demo、API 细节与 fitSpacing 中心修正
|
|
321
|
-
|
|
322
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt` 六项:补 demo 中的级联触发开关、为组件缺口补接口演示、细化 API 入参与响应、补文档互跳、修正 `fitSpacing` 的放大中心,并继续优化性能。
|
|
323
|
-
|
|
324
|
-
- **接口演示**:新增 `ApiCoverageDemo.vue` 并注册 `api-coverage` 页签,演示总数变为 22;综合 demo 也补了 `triggerOnClick` / `triggerOnMultiSelect` / `triggerOnBoxSelect` 三个独立开关。静态审计后,253 个实例成员与 95 个 options 在全部 demo 中的直接引用缺口均为 0。
|
|
325
|
-
- **文档**:`docs/manual/17` 增加调用与响应口径并细化方法参数 / 返回值,`03` / `07` / `08` / `09` / `14` / `16` / `17` / `18` 之间补齐互跳;17 的口径说明改为四级标题,避免参数表被截断。
|
|
326
|
-
- **fitSpacing 与性能**:`measurePointSpacing()` 不再返回最近节点对中点,`fitSpacing` 只提高比例,相机中心沿用普通适应的包围盒中心;同时去掉并列距离的中点比较,单组通道增加宽度未变快路径。10 万点微基准由 34.933 ms 降至 27.572 ms,约提升 21%。
|
|
327
|
-
- **核心文件**:`src/gis-view/utils.js`、`src/gis-view/engine.js`、`docs/demos/ApiCoverageDemo.vue`、`docs/demos/demos.js`、`docs/demos/gis-view-demo/panels/ViewPanels.vue`、`docs/demos/gis-view-demo/useGisViewDemo.js`、`docs/manual/03` / `07` / `08` / `09` / `14` / `16` / `17` / `18`、`docs/steps/selftest-demos.html`、`docs/steps/selftest-scale.html`、`docs/steps/README.md` 与 `docs/demos/api-index.js`(生成物)。
|
|
328
|
-
- **验证**:`npx tsc --noEmit`、`npm run build`、`npm run check:docs`(253 个实例成员 / 95 个 options / 249 个数据字段)、`node docs/steps/gen-api-index.mjs --check` 与 `git diff --check` 全部通过;14 个自测页共 2225 条通过 / 0 失败,其中 `selftest-demos.html` 333 PASS、`selftest-scale.html` 109 PASS / 0 FAIL / 6 DIAG。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-22-增量接口能力-demoapi-细节与-fitspacing-中心修正)。
|
|
329
|
-
|
|
330
|
-
### 2026-10-23 增量(「修改.txt」四条:focusOn 缩放 / 四类搜索 / 筛选选中保留 / 参数说明)
|
|
331
|
-
|
|
332
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:核对 `focusOn` 对线路 / 通道是否额外放大、让 `search` 支持与 `focusOn` 对应的类型、排查筛选为何取消选中、补细方法与参数说明。
|
|
333
|
-
|
|
334
|
-
- **focusOn 缩放**:四类目标本来就统一解析成 `bounds` 后走 `zoomToBounds`,线路 / 通道 / 分组没有类型专属倍率;本轮不加功能代码,只补自测证明缺省比例与显式 `zoomToBounds` 完全一致。
|
|
335
|
-
- **四类搜索**:`scope` 新增 `groups`,并支持 `point` / `line` / `channel` / `group` 单数别名;`result.groups` 与 `hits` 带分组命中,分组项给出 `channelIndex` / `groupId` / `groupIndex` 和轻量 `item`,其 `bounds` 可直接用于 `focusOn`,也能交给 `selectFeatures` 选中整组回线。Worker 路径随分组请求接收当前轻量快照,异步与同步结果保持一致。
|
|
336
|
-
- **筛选只隐藏**:根因是 `isKeyAlive()` 用只含可见要素的 `pointByIndex` / `lineByIndex` 判断存活,筛选隐藏被当成删除并清理选中集;现在查原始 `points` / `lines`,被隐藏的选中项保留,清空条件后恢复,且不额外发选中变更。
|
|
337
|
-
- **文档与验证**:手册 `14` / `16` / `17` / `18` / `21`、根 `README.md`、`src/gis-view/README.md` 与类型注释同步四类 scope、分组命中、`focusOn` 缩放口径和筛选语义。`selftest-features.html` 662 → **666**、`selftest-demos.html` 333 → **334**、`selftest-docs.html` **130**,三页共 **1130** 条通过 / 0 失败;`npx tsc --noEmit`、`node --check`、`npm run check:docs`(253 个实例成员 / 95 个 options / 249 个数据字段)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量修改txt四条focuson-缩放--四类搜索--筛选选中保留--参数说明)。
|
|
338
|
-
|
|
339
|
-
### 2026-10-23 增量(「问题.txt」四条:SVG 描边 / 文档表格 / selectTrigger / 筛选删除)
|
|
340
|
-
|
|
341
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:SVG 导出节点图标只剩白色、文档参数表格渲染错误、选中支持单击 / 双击并可监听双击、筛选支持删除或隐藏。
|
|
342
|
-
|
|
343
|
-
- **SVG 描边**:`point.js` 在解析条目里补 `strokeColor`、在就地重解析时写回,SVG 符号的 `currentStrokeColor` 取节点实际描边色,不再回落白色。
|
|
344
|
-
- **文档表格**:`docs/index.html` 的表格拆列改为识别反引号代码段与 `\|`,代码里的联合类型不再被竖线拆成多列。
|
|
345
|
-
- **`selectTrigger`**:缺省 `'click'`;`'dblClick'` 第一下只发 `onClick`,第二下才应用选中 / 清空 / 取反并同时发 `onClick`(`double: true`)与 `onDblClick`。运行时切换清空双击序列;单击模式的 Ctrl / `multiSelect` 取反保持旧口径。
|
|
346
|
-
- **筛选 remove**:`filter.mode: 'hide' | 'remove'`。`remove` 先删线路再删节点、支持无 id 线路,抑制中间数据变更与 `onFilter`,只发一条 `filterRemove` 与最终一次 `onFilter`;载荷提供 `pointIndexes` / `removedPoints` / `removedLineItems` 等删除项。一次删除一步历史,撤销恢复数据但不会被仍生效的 remove 条件再次删除,重做不补发事件;同步初始删除先于 `ready`,Worker 初始筛选则等结果回来后再删。另修 `history.js` 多条删除一次撤销时的下标偏移。
|
|
347
|
-
- **文档与验证**:手册 `03` / `04` / `08` / `14` / `15` / `16` / `17` / `18` / `21`、根 `README.md`、`src/gis-view/README.md`、`docs/GisView.md` 与 `docs/steps/README.md` 同步选项、事件、删除语义、SVG 描边和计数。相关 7 个自测页共 **1518** 条通过 / 0 失败;`npx tsc --noEmit`、`node --check`、`npm run check:docs`(253 个实例成员 / 250 个方法 / 250 个数据字段 / 96 个 options)、`node docs/steps/gen-api-index.mjs --check`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量问题txt四条svg-描边--文档表格--selecttrigger--筛选删除)。
|
|
348
|
-
|
|
349
|
-
### 2026-10-23 增量(「修改.txt」四项:focusOn 缺省居中 / 文档互跳 / 扩展命令 / 性能优化)
|
|
350
|
-
|
|
351
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:检查节点 / 线路 / 通道的 `focusOn` 缩放差异并让缺省只居中、增加文档互跳并解决左栏滚动过慢、继续增加扩展能力并补 demo、优化组件交互与方法性能。
|
|
352
|
-
|
|
353
|
-
- **focusOn 缺省居中**:`focusOn(target, options)` 缺省只 `centerOn`,显式 `zoom: true` 才 `zoomToBounds`;`scale` 优先于 `zoom`,`center: true` 保留为显式居中。节点、线路、通道、分组与批量目标共用同一口径,demo 中原先依赖自动适配的定位改为显式 `zoom: true`。
|
|
354
|
-
- **文档互跳与左栏跳转**:`docs/api/index.html` 顶栏增加文档中心 / 实例方法 / 参数速查 / 逐方法示例深链,每个分组标题增加对应手册章节链接;左栏跳转改为 `scrollIntoView({ behavior: 'auto', block: 'start' })`,并暴露 `__gisApi.scrollToGroup()`,长页面不再平滑滚过整屏。
|
|
355
|
-
- **扩展能力与 demo**:新增 `registerCommand` / `executeCommand` / `listCommands`;命令按视图隔离,同名覆盖、注销幂等且旧卸载函数不会误删后注册的命令,`context` 冻结为 `{ view, name }`,异常走 `onError` 并以 `{ ok: false, reason }` 返回,`destroy()` 清空命令表。`ExtensionDemo` 现有插件、图元、条件运算符、导出格式、WebGL 自定义层与实例命令六类扩展点。
|
|
356
|
-
- **性能优化**:定向补丁只在改动可能影响筛选结果时重跑筛选,展示字段直接沿用原结果,`id` / 坐标 / `from` / `to` / `visible` 与函数 / 自定义运算符条件保守重跑;引擎新增按当前状态直接测量通道 / 分组范围的方法,`focusOn` 不再复制整页通道几何;事件总线在单订阅者时省掉快照数组。未做可信性能基准,不报告加速倍数。
|
|
357
|
-
- **核心文件**:`src/gis-view/create.js`、`engine.js`、`events.js`、`types.d.ts`、`docs/api/index.html`、`docs/demos/ExtensionDemo.vue`、`SearchFilterDemo.vue`、`ApiCoverageDemo.vue`、`gis-view-demo/useGisViewDemo.js`、`gis-view-demo/panels/OpsPanels.vue`、`gis-view-demo/GisViewDemoCardHeader.vue`、`demos.js`、`api-index.js`(生成物)、`README.md`、`src/gis-view/README.md`、`docs/GisView.md`、`docs/index.html`、`docs/manual/08` / `14` / `15` / `16` / `17` / `18` / `19`、`docs/steps/README.md`、`docs/steps/selftest-features.html` / `selftest-demos.html` / `selftest-docs.html` 与本轮 aimd。
|
|
358
|
-
- **验证**:`selftest-features.html` **672** 条、`selftest-demos.html` **337** 条、`selftest-docs.html` **134** 条,三页共 **1143** 条通过 / 0 失败;`node --check src/gis-view/create.js`、`npx tsc --noEmit`、`npm run build`、`node docs/steps/gen-api-index.mjs`、`npm run check:docs`(256 个实例成员 = 253 个方法 + 3 个属性 / 96 个 options / 16 个分组 / 250 个数据字段)与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量修改txt四项focuson-缺省居中--文档互跳--扩展命令--性能优化)。
|
|
359
|
-
|
|
360
|
-
### 2026-10-23 增量(「问题.txt」五项:鹰眼图回线居中 / 动态位置 / backgroundStyle / 主图样式 / 外部挂载)
|
|
361
|
-
|
|
362
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:取消通道回线后双回线应居中、支持动态移动鹰眼图、确认 `backgroundStyle` 生效、沿用主图后节点尺寸与图标一致、支持挂到外部 `div`。
|
|
363
|
-
|
|
364
|
-
- **回线居中**:`create.js` 的 `averageMinimapPaths()` 在当前可见成员间逐顶点平均,`channelCircuits: false` 只画一根居中代表线;双回线位于两线中间,三回线落在中间线,成员只剩一条时原样保留,路径结构不一致时保守回退第一条可见路径。
|
|
365
|
-
- **动态位置与外部挂载**:`minimap.offset` 使用统一的正向右 / 正向下位移,`updateOptions` 可即时移动;`minimap.container` 支持元素或选择器,`syncAttachment()` 只移动同一根节点;新增 `getMinimapElement()` 供宿主绑定整图拖动。宿主需要定位上下文,选择器失效时回落主视图根节点。
|
|
366
|
-
- **backgroundStyle 与主图样式**:显式 `backgroundStyle` 时画布不再铺不透明主图底色,保留图片 / GeoJSON;`inheritRules` 的节点尺寸与符号改为取主图最终 `getPointStyle()` 结果,圆形用 `CIRCLE_AREA_FACTOR` 还原,图片 / SVG / 自定义图元支持异步加载后补画。
|
|
367
|
-
- **文档与验证**:同步手册 `03` / `09` / `14` / `16` / `17` / `18` / `21`、`docs/internals/13-鹰眼图.md`、根 `README.md`、`src/gis-view/README.md`、`docs/GisView.md` 与文档索引;`selftest-full.html` 增加 5 条断言。`selftest-full.html` **85** 条、`selftest-docs.html` **134** 条、`selftest-demos.html` **337** 条,三页共 **556** 条通过 / 0 失败;`npx tsc --noEmit`、`node --check`(minimap / create / engine)、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(**257** 个实例成员 = **254** 个方法 + 3 个属性 / **96** 个 options / **250** 个数据字段 / **16** 个分组)、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量问题txt五项鹰眼图回线居中--动态位置--backgroundstyle--主图样式--外部挂载)。
|
|
368
|
-
|
|
369
|
-
### 2026-10-23 增量:鹰眼图缩放联动与新增通道示例节点
|
|
370
|
-
|
|
371
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt` 五项与 `问题.txt` 三项:沿用主图规则后节点按鹰眼图 / 主图比例缩放、`box` 拖拽不再依赖缩放、增加与手动缩放互斥的跟随主图模式、`commitAddChannel` 直接接收新增对象、草稿示例点居中且可配、`auto` 范围跟相机改为默认关闭、补鹰眼图拖拽 demo,以及继承节点按两边视口尺寸而不是主图放大倍数缩放。
|
|
372
|
-
|
|
373
|
-
- **鹰眼图**:`minimap.js` 的 `inheritedSizeFactor()` 改用两边 CSS 视口宽高的较小比例,`inheritSize` 节点不再跟主图相机倍数变化;`extentFollowCamera` 默认 `false`,`extent: 'auto'` 默认保持「数据 ∪ 底图」;`zoomable` 三态为 `false` / `true` / `'follow'`,`followZoomScale` 控制跟随指数,手动缩放与跟随互斥,跟随档不接受 `setMinimapZoom` / `zoomMinimapBy` 抢控制;`dragAction: 'box'` 在关闭缩放时也可用。
|
|
374
|
-
- **新增通道**:`commitAddChannel` 增加对象入参,直接给通道 / 线路或 `{ channel, line, lines, ... }` 均可;对象字段优先、缺省续用草稿,直接线路的业务字段与样式透传到 `lineProps`,直接通道支持 `lineIds` / `groups` / `lineProps` / `channelProps`。草稿示例点固定在真实节点中心,`dots` 支持显隐 / 分端样式 / 尺寸 / 圆方形状,`channelDraftStyle.layer` 可设 `'below-points'` 让示例线压在真实节点下面。
|
|
375
|
-
- **Demo 与文档**:`ConnectDemo` 展示指定起点、示例点样式与对象直传;`MinimapDemo` 展示三态缩放、跟随指数、范围开关与框选 / 平移拖拽。同步 `README.md`、`docs/manual/03` / `10` / `14` / `16` / `17` / `18` / `21`、`docs/internals/13-鹰眼图.md`、`docs/steps/README.md` 和 `docs/demos/api-index.js`。
|
|
376
|
-
- **验证**:`selftest-full.html` **86** 条、`selftest-features.html` **672** 条、`selftest-demos.html` **349** 条、`selftest-docs.html` **134** 条,四页共 **1241** 条通过 / 0 失败;`npx tsc --noEmit`、`node --check`(minimap / create / engine)、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(257 个实例成员 / 96 个 options / 250 个数据字段 / 43 个事件 / 17 个功能开关)、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量鹰眼图缩放联动与新增通道示例节点)。
|
|
377
|
-
|
|
378
|
-
### 2026-10-23 增量:鹰眼图继承要素尺寸与地图缩放解耦
|
|
379
|
-
|
|
380
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt` 三项:范围跟随相机默认关闭、补鹰眼图拖拽 demo、澄清继承节点 / 线路的尺寸语义。前两项已在当前工作树实现;本轮完成第三项,把继承尺寸与主图相机倍数彻底解耦。
|
|
381
|
-
|
|
382
|
-
- **继承线宽**:`resolveLineStyleInto()` 新增 `baseWidth`,`engine.getLineStyle(index)` 返回样式链原始线宽;`collectMinimapData()` 在未配自有 `lineRules` 时写入继承线宽并标记 `inheritWidth`,与节点的 `inheritSize` 一样乘两边 CSS 视口的较小比例。
|
|
383
|
-
- **缩放口径**:继承节点 = `pointSizeScale × 小图自身缩放指数 × 视口比例`,继承线路 = `lineWidthScale × 小图自身缩放指数 × 视口比例`;主图缩放不进入这两条公式,`pointMapZoomScale` / `lineMapZoomScale` 只作用于小图自有规则 / 样式。点 / 线路缓存键同步拆分这些系数,避免继承尺寸与主图倍数错误互相失效。
|
|
384
|
-
- **Demo 与文档**:`MinimapDemo` 默认沿用主图,提供节点 / 线路各自的整体倍数与小图缩放指数控件,保留框选 / 平移拖拽演示;主 demo 在沿用模式下禁用地图倍数联动。同步类型注释、根 `README.md`、`src/gis-view/README.md`、手册 `03` / `14`、内部文档 `13` 与生成的 `docs/demos/api-index.js`。
|
|
385
|
-
- **验证**:`selftest-full.html` **92** 条、`selftest-features.html` **672** 条、`selftest-demos.html` **351** 条、`selftest-docs.html` **134** 条,四页共 **1249** 条通过 / 0 失败;`npx tsc --noEmit`、`node --check`(minimap / create / engine / line)、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(257 个实例成员 / 96 个 options / 250 个数据字段 / 43 个事件 / 17 个功能开关)、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量鹰眼图继承要素尺寸与地图缩放解耦)。
|
|
386
|
-
|
|
387
|
-
### 2026-10-23 增量(「修改.txt」三项:commitAddChannel 文档 / 传参示例 / 线路半跳过)
|
|
388
|
-
|
|
389
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt` 三项:说明 `commitAddChannel` 的传参与写法、把方法用法和示例写详细、继续优化组件性能。
|
|
390
|
-
|
|
391
|
-
- **文档**:手册 `10` 补齐五种入参(无参 / 旧 resolution / 直接线路 / 直接通道 / 容器)、精确字段优先级与并组限制;明确草稿只认 `from`(没有 `to`)、直接通道 `id` 不是回线种子、`line` 与 `lines` 语义不同、空数组沿用草稿、容器不合并 `channel.lineProps`、方案读数只能取 `{ type, groupId, groupIndex, channelId }` 子集。`18` 增加逐项示例,`16` / `17` 与 `types.d.ts` 同步参数说明。
|
|
392
|
-
- **性能**:`engine.js` 新增线路半跳过;命中时复用上一轮线路解析结果与包围盒,跳过 `resolveLines` 及索引 / 虚线 / 层序 / 包围盒几趟。追加补线与增量改线维护线路半包围盒,`lineHalfOutOfSync` 负责失效兜底。20000 点 / 8000 线原样回灌中位 **14.3 → 6.3 ms**。
|
|
393
|
-
- **自测与文档**:`selftest-perf.html` 新增 3 条断言,锁住原样回灌、通道声明未变沿用派生折线、换骨架必须重推几何;性能页 **167** 条通过。性能记录同步到内部文档 `16-01` 的 16.37 与 `18` 的第十六轮。
|
|
394
|
-
- **验证**:五页自测 full **92** / features **672** / demos **351** / docs **134** / perf **167**,合计 **1416** 条通过 / 0 失败;`node --check`、`node docs/steps/gen-api-index.mjs`、`npm run check:docs`(257 个实例成员 / 96 个 options / 250 个数据字段 / 43 个事件 / 17 个功能开关)、`npx tsc --noEmit`、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量修改txt三项commitaddchannel-文档--传参示例--线路半跳过)。
|
|
395
|
-
|
|
396
|
-
### 2026-10-23 增量(「问题.txt」两项:鹰眼图范围锁定开关 / 整图拖动 demo)
|
|
397
|
-
|
|
398
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:外围内容消失不应让鹰眼图自动重算包围盒,该行为做成默认关闭的开关;另补整体拖拽鹰眼图的 demo。
|
|
399
|
-
|
|
400
|
-
- **范围锁定**:`minimap.extentFollowContent` 默认 `false`。`minimap.js` 用 `pinnedExtent` 锁住首次取得的动态数据 / 底图范围,内容筛选、显隐或增删只重画要素,小图范围与视口框保持不动;打开后跟随当前可见内容。显式改 `extent` 或切换开关会清锁并重新取范围,`extentFollowCamera` 的相机取舍使用锁定后的两份范围。
|
|
401
|
-
- **整图拖动**:`MinimapDemo.vue` 在 `getMinimapElement()` 根节点挂独立手柄,手势不进入小图框选 / 平移;累计位移写回 `offset`,窗口级事件收尾,并提供方向键微调、复位与读数。
|
|
402
|
-
- **自测与文档**:`selftest-full.html` 增加 2 条范围锁定断言,`selftest-demos.html` 增加 4 条开关 / 拖动 / 复位断言;同步手册 `03` / `14`、内部文档 `13`、两个 README、类型注释与生成的 `docs/demos/api-index.js`。
|
|
403
|
-
- **验证**:定向三页 full **94** / demos **355** / docs **134**,合计 **583** 条通过 / 0 失败;全量 14 页 **2295** 条通过 / 2 条失败,失败均为 `selftest-scale` 的筛选回调计数,与 minimap 改动无关。`node --check`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(257 个实例成员 / 96 个 options / 250 个数据字段 / 43 个事件 / 17 个功能开关)、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量问题txt两项鹰眼图范围锁定开关--整图拖动-demo)。
|
|
404
|
-
|
|
405
|
-
### 2026-10-23 增量(「修改.txt」两项:数据包围盒缓存与相机飞行)
|
|
406
|
-
|
|
407
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `修改.txt`:① 继续优化组件整体性能;② 补充后续可能需要的新功能、方法、属性与 demo。
|
|
408
|
-
|
|
409
|
-
- **包围盒缓存**:`engine.js` 把整份解析得到的范围接给 `getBounds()` 读数缓存,读数返回独立副本,缓存本身不与 `fusedDataBounds` 共享;`updatePoint` 改坐标、`updateLine` 改路径、拖拽、追加点 / 线、复制预览改坐标都会失效缓存。十万点 + 十万线实测连续读数 **5.2 ~ 6.6 ms / 次 → 0.00 ms / 次**,单点改动后重建约 **3.6 ms**。
|
|
410
|
-
- **相机飞行**:新增 `flyTo` / `stopCameraAnimation` / `getCameraAnimation` / `cameraAnimating`;时长缺省 450 ms,中心线性、比例对数插值,支持三种预设缓动与自定义函数。用户操作、程序化改相机、再次飞行和销毁都会取消;零时长或系统减少动态效果时立即落位。`SearchFilterDemo.vue` 增加飞向选中、停止飞行与进度读数。
|
|
411
|
-
- **自测与文档**:`selftest-perf.html` 增 3 条缓存断言,`selftest-demos.html` 增 5 条飞行 / demo 断言并更新成员清单;同步方法总表、参数速查、逐方法示例、性能手册、两个 README、类型声明与生成的 `docs/demos/api-index.js`。
|
|
412
|
-
- **验证**:`node --check`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(261 个实例成员 / 96 个 options / 250 个数据字段 / 43 个事件 / 17 个功能开关)、四页自测 full **94** / demos **360** / docs **134** / perf **170**(合计 **758** 条通过 / 0 失败)、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量修改txt两项数据包围盒缓存与相机飞行)。
|
|
413
|
-
|
|
414
|
-
### 2026-10-23 增量(「问题.txt」两项:线路样式窄路与新 API 能力)
|
|
415
|
-
|
|
416
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录的 `问题.txt`:① 继续深度优化组件整体性能;② 从长远角度补充可能需要的功能、方法、属性与 demo。
|
|
417
|
-
|
|
418
|
-
- **窄路**:`line.js` 抽出 `resolveLinePaintInto`;`engine.js` 用 `NARROW_LINE_STYLE_BUCKETS` / `lineStyleNarrowChange()` / `applyLineNarrowFast()` 认出只改线宽 / 颜色 / 透明度的补丁。命中时逐条重算 paint 并补实例槽位,规则、热力、线型 / 阴影 / 效果 / 方向存在时回退整份解析;逐线自身样式与状态样式仍优先。整份重解析、单线更新和窄路都会同步 `baseWidth`。
|
|
419
|
-
- **新 API**:`flyToCamera` 直接飞相机目标;`dataVersion` 只在数据变更时递增,`onDataChange` 载荷同步带出;`getLineStyle` 返回原始线宽 / RGBA / 透明度 / 层级快照,线宽不含状态样式、热力与缩放倍率。成员 264 = 259 方法 + 5 属性。
|
|
420
|
-
- **Demo 与文档**:`SearchFilterDemo.vue` 增加相机飞行、线路换色 / 加宽、改点与版本读数;自测覆盖 `flyToCamera`、`getLineStyle`、`dataVersion`、虚线保持与规则回退。同步 `docs/manual/04` / `14` / `16` / `17` / `18` / `19` / `20`、内部性能文档、两个 README、类型声明与生成的 `docs/demos/api-index.js`。
|
|
421
|
-
- **验证**:`node --check`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(264 个实例成员 / 96 个 options / 250 个数据字段 / 43 个事件 / 17 个功能开关)、四页自测 full **94** / demos **365** / docs **134** / perf **174**(合计 **767** 条通过 / 0 失败)、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量问题txt两项线路样式窄路与新-api-能力)。
|
|
422
|
-
|
|
423
|
-
### 2026-10-23 增量(「修改.txt」:继续深度优化 gis-view 整体性能)
|
|
424
|
-
|
|
425
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求来自仓库根目录的 `修改.txt`:继续深度优化组件整体性能,允许大改,只要确实有效。
|
|
426
|
-
|
|
427
|
-
- **聚合空转**:`flushPointClusterLayout()` 在聚合未启用且没有上一帧聚合结果时只清脏标记,不跑 `layoutScene()`;`notifyCameraChange()` 只在聚合启用且当前档可能变化、或确有旧聚合结果时因缩放标脏。纯相机缩放引起的成员变化在运动期沿用旧档,停稳后重算;配置 / 数据 / 选中 / 拖动 / 跨出 `maxZoom` 仍立即生效。
|
|
428
|
-
- **程序化相机快路径**:`zoomBy` / `setCamera` / `centerOn` / `flyToCamera` 的真实相机变化进入 160 ms 短窗口,运动帧走细线 `gl.LINES` 与非 MSAA 后备缓冲;同一位置重复 `setCamera` 不续期。停稳后补全质量帧、刷新通道宽度并恢复符号预烤。若聚合重排被推迟但这一轮没有轻量几何,计时器仍会补帧完成重算。
|
|
429
|
-
- **核心文件**:`src/gis-view/engine.js`、`docs/steps/selftest-perf.html`、`docs/manual/20-性能与大数据.md`、`docs/internals/16-03-优化与取舍-下.md`、`docs/internals/18-性能实测与WebGPU评估.md`、根 `README.md`、`src/gis-view/README.md`、`docs/AI对话汇总.md`。
|
|
430
|
-
- **实测**:无头 Chrome + ANGLE / AMD D3D11,1280×800,10 万点 / 5 万线,`quality: 'high'`;连续缩放 p50 **67.9 → 22.5 ms**、p95 **76.2 → 25.1 ms**、avg **60.77 → 20.57 ms**。平移 p50 17.1 → 17.2 ms(帧节拍波动),`refresh()` 56.2 → 53.7 ms;终态 `thinLines=false`、`noMsaa=false`。收益口径是消除整份重排 / 上传与运动期 MSAA 细线光栅化,不是把单帧渲染降到 1 ms。
|
|
431
|
-
- **验证**:`node --check`、`npx tsc --noEmit`、`node docs/steps/gen-api-index.mjs --check`、`npm run check:docs`(264 个实例成员 / 96 个 options / 250 个数据字段 / 43 个事件 / 17 个功能开关)、四页自测 `full 94` / `demos 365` / `docs 134` / `perf 181` 共 **774** 条通过 / 0 失败、`npm run build` 与 `git diff --check` 全部通过。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-23-增量修改txt继续深度优化-gis-view-整体性能)。
|
|
432
|
-
|
|
433
|
-
### 2026-10-26 增量(「修改.txt」:修复放大缩小与移动时的短暂模糊)
|
|
434
|
-
|
|
435
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录最新的 `修改.txt`:修改 gis-view 组件;修改之后放大缩小 / 移动会模糊一下。根因是上一轮运动帧按 rAF 间隔降到 0.65× / 0.5× 后线性放大贴回,本轮已移除。
|
|
436
|
-
|
|
437
|
-
- **撤回降采样**:`engine.js` 删除 `MOTION_RESOLUTION_STEPS` / `sampleMotionResolution()` 与 `drawWidth` / `drawHeight` / `framePixelRatio` 一套像素尺度,运动帧 viewport 始终是画布全尺寸;`shaders.js` 的 `u_offsetScale` / `u_uvOffset` / `u_uvScale` 和 `create.js` 的 `exportFrame` 配套标记同步撤回至 HEAD。交互、滚轮、程序化相机与尺寸倍率变化都保持全分辨率,停稳 160 ms 后恢复 MSAA 静态帧。
|
|
438
|
-
- **保留轻量窗口**:相机运动窗口、细线 `gl.LINES`、非 MSAA 后备缓冲不变;`scaleMotion` 仍只在尺寸倍率连续变化时暂停符号重烤与预烤,停手后对齐当前档,不改变分辨率。相机与尺寸窗口重叠时由最后停下的一方补质量帧。
|
|
439
|
-
- **回归与实测**:`selftest-perf.html` 新增 1 条断言,拉长运动帧间隔并连续改相机,所有 `gl.viewport` 仍必须等于画布全尺寸。无头 Chrome + ANGLE / AMD D3D11、1280×800、三次取中位:10 万点 / 5 万线缩放 p50 **23.2 ms** / p95 **28.6 ms**、平移 **16.7 / 18.2 ms**;10 万点 / 10 万线缩放 **42.6 / 46.3 ms**、平移 **16.7 / 24.5 ms**。
|
|
440
|
-
- **核心文件**:`src/gis-view/engine.js`、`docs/steps/selftest-perf.html`、`docs/steps/README.md`、`docs/manual/20-性能与大数据.md`、根 `README.md`、`src/gis-view/README.md` 与本轮 aimd。
|
|
441
|
-
- **验证**:`node --check`(engine / create / 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 失败(features / actions / data / decoration / select / labels / effects / docs / full)、`npm run build` 与 `git diff --check` 全部通过。`selftest-perf` **181 / 1**(共 182 条;新增相机全分辨率断言通过,标签布局读数在 HEAD 基线已复现);`selftest-scale` 117 / 2(onFilter 计数,筛选链路未改)。公开 API 计数未变。详细口径见 [AI 对话汇总的本轮增量](../AI对话汇总.md#2026-10-26-增量修改txt修复放大缩小与移动时的短暂模糊)。
|
|
442
|
-
### 2026-10-26 增量(「修改.txt」:线片段着色管线专用化)
|
|
443
|
-
|
|
444
|
-
本轮仍是现有会话的继续增量,没有独立会话归档,因此不改上表的 39 条统计。需求原话来自仓库根目录最新的 `修改.txt`:修改 gis-view 组件;这样修改之后性能提升了吗,感觉没提升多少。
|
|
445
|
-
|
|
446
|
-
- **判断**:CPU profile 约 **98.6% idle**、`render` 约 **0.1%**,说明上一轮主要省的是场景重排 / 上传 / 相机调度,剩余在 GPU 片元。用户感觉提升有限,还因为细线快路径的真实门槛是最大半宽 ≤ 0.6 设备像素且无虚线(dpr = 1 约 1.2px 线宽),2px 线不会命中 `gl.LINES`。
|
|
447
|
-
- **改动**:`shaders.js` 新增 `THIN_LINE_FRAGMENT_SHADER`(细线只输出颜色)与 `SOLID_LINE_FRAGMENT_SHADER`(全实线、非光晕四边形跳过虚线取模 / `smoothstep` / 光晕分支,保留非 MSAA 覆盖率);`engine.js` 的 `drawLineBatch` 按批切换,`refreshLineThinLedger` 同时提供是否全实线;两个程序属性槽位不一致时自动回退通用片元。端点圆头、全分辨率与停稳后的 MSAA 静态帧不变。
|
|
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
|
-
- **核心文件**:`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
|
-
- **验证**:`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」。
|
|
52
|
+
## 二、历史增量索引
|
|
53
|
+
|
|
54
|
+
> 从 2026-10-19 起,每一轮在仓库根 `修改.txt` / `问题.txt` 提出。下表只留一句主题,详细取舍、核心文件与验证结果在 [AI 对话汇总](../AI对话汇总.md) 的主题叙述、[实现原理逐轮记录](../internals/15-01-逐轮记录-新增与修复.md) 和对应自测页里。日期相同的轮次按原记录顺序保留。
|
|
55
|
+
|
|
56
|
+
| 日期 | 这一轮 |
|
|
57
|
+
| --- | --- |
|
|
58
|
+
| 2026-10-29 | 增量:通道性能文档补齐与节点直接连接查询 |
|
|
59
|
+
| 2026-10-29 | 增量:线路 / 通道端点框选与视口端点导出 |
|
|
60
|
+
| 2026-10-28 | 增量:(续):Demo 落地与新手路线 |
|
|
61
|
+
| 2026-10-28 | 增量:比例读写、空闲检测与首屏简写 |
|
|
62
|
+
| 2026-10-28 | 增量:(续):批量增删改、通道简略与合并解除参数化 |
|
|
63
|
+
| 2026-10-28 | 增量:(续):合并电压与自动解除合并 |
|
|
64
|
+
| 2026-10-27 | 增量:(「问题.txt」:新增线路拆分、单一通道策略与解除合并分线) |
|
|
65
|
+
| 2026-10-27 | 增量:(「修改.txt」:事件载荷去重与指针回调收口) |
|
|
66
|
+
| 2026-10-27 | 增量:(「修改.txt」:新增默认选中参数化、删除旧兼容与 addLine 增量) |
|
|
67
|
+
| 2026-10-27 | 增量:(「问题.txt」:节点 id 索引缓存复用与冗余方法收口) |
|
|
68
|
+
| 2026-10-27 | 增量:(「问题.txt」:中心点 API、选中线路抬层、标签层级与缩放字号、大数据标签收口) |
|
|
69
|
+
| 2026-10-26 | 增量:(「修改.txt」:选中 / 取消选中入口速查) |
|
|
70
|
+
| 2026-10-26 | 增量:(「修改.txt」:按坐标模拟单击选中 selectAt) |
|
|
71
|
+
| 2026-10-26 | 增量:(「修改.txt」:修复放大缩小与移动时的短暂模糊) |
|
|
72
|
+
| 2026-10-26 | 增量:(「修改.txt」:继续优化 gis-view,回答“感觉没提升多少”) |
|
|
73
|
+
| 2026-10-26 | 增量:(「修改.txt」:选中接口的回调口径) |
|
|
74
|
+
| 2026-10-26 | 增量:(「修改.txt」:选中载荷去重与通道索引缓存) |
|
|
75
|
+
| 2026-10-26 | 增量:(「修改.txt」:选中 items 去重与选中通道缓存) |
|
|
76
|
+
| 2026-10-26 | 增量:(「修改.txt」:统一选中回调与鼠标分组载荷) |
|
|
77
|
+
| 2026-10-26 | 增量:(「修改.txt」:选中事件分工、通道上下文与派发顺序) |
|
|
78
|
+
| 2026-10-23 | 增量:鹰眼图缩放联动与新增通道示例节点 |
|
|
79
|
+
| 2026-10-23 | 增量:鹰眼图继承要素尺寸与地图缩放解耦 |
|
|
80
|
+
| 2026-10-23 | 增量:(「问题.txt」五项:鹰眼图回线居中 / 动态位置 / backgroundStyle / 主图样式 / 外部挂载) |
|
|
81
|
+
| 2026-10-23 | 增量:(「问题.txt」四条:SVG 描边 / 文档表格 / selectTrigger / 筛选删除) |
|
|
82
|
+
| 2026-10-23 | 增量:(「修改.txt」四项:focusOn 缺省居中 / 文档互跳 / 扩展命令 / 性能优化) |
|
|
83
|
+
| 2026-10-23 | 增量:(「问题.txt」两项:线路样式窄路与新 API 能力) |
|
|
84
|
+
| 2026-10-23 | 增量:(「修改.txt」:继续深度优化 gis-view 整体性能) |
|
|
85
|
+
| 2026-10-23 | 增量:(「修改.txt」两项:数据包围盒缓存与相机飞行) |
|
|
86
|
+
| 2026-10-23 | 增量:(「修改.txt」三项:commitAddChannel 文档 / 传参示例 / 线路半跳过) |
|
|
87
|
+
| 2026-10-23 | 增量:(「问题.txt」两项:鹰眼图范围锁定开关 / 整图拖动 demo) |
|
|
88
|
+
| 2026-10-23 | 增量:(「修改.txt」四条:focusOn 缩放 / 四类搜索 / 筛选选中保留 / 参数说明) |
|
|
89
|
+
| 2026-10-22 | 增量:fitSpacing 居中修正与 GisViewDemo 拆分 |
|
|
90
|
+
| 2026-10-22 | 增量:fitSpacing 居中、级联高亮与 forward |
|
|
91
|
+
| 2026-10-22 | 增量:动效、热力图与鹰眼图显示优化 |
|
|
92
|
+
| 2026-10-22 | 增量:移除 zoomScaleAuto 并新增 fitSpacing |
|
|
93
|
+
| 2026-10-22 | 增量:预指定通道起点、导出范围、级联触发与筛选宽度 |
|
|
94
|
+
| 2026-10-22 | 增量:接口能力 demo、API 细节与 fitSpacing 中心修正 |
|
|
95
|
+
| 2026-10-22 | 增量:(「问题.txt」三条:合并样式说明 / 级联高亮 Demo / 筛选后的通道宽度) |
|
|
96
|
+
| 2026-10-22 | 增量:(「问题.txt」四条:筛选恢复 / focusOn 类型 / 程序化选中 / 线路跟随开关) |
|
|
97
|
+
| 2026-10-21 | 增量:标签 HTML 语义与渲染性能 |
|
|
98
|
+
| 2026-10-21 | 增量:高密度标签自动画布化 |
|
|
99
|
+
| 2026-10-21 | 增量:点聚合与大数据展示 |
|
|
100
|
+
| 2026-10-21 | 增量:大数据性能收口与 Canvas 标签模式 |
|
|
101
|
+
| 2026-10-21 | 增量:(「问题.txt」四条:要素显隐 / 节点拆分 / 标签逐条交互 / 通道变化对账) |
|
|
102
|
+
| 2026-10-21 | 增量:动效、热力图与鹰眼图性能 |
|
|
103
|
+
| 2026-10-21 | 增量:(「修改.txt」两条:Ctrl 加点高亮范围 / 分组拐点拖动模式) |
|
|
104
|
+
| 2026-10-21 | 增量:(「修改.txt」:channelDemo 线路分组弹框) |
|
|
105
|
+
| 2026-10-21 | 增量:(「修改.txt」三条:通道筛选 / 线路对账 / 继续优化) |
|
|
106
|
+
| 2026-10-20 | 增量:通道预览扩展、旧导出收口与 WebGL 自定义层 |
|
|
107
|
+
| 2026-10-20 | 增量:API 文档视觉、性能降级、箭头统一与导出收口 |
|
|
108
|
+
| 2026-10-20 | 增量:装饰位置来源与吸附关系解耦 |
|
|
109
|
+
| 2026-10-20 | 增量:装饰吸附分级与重复快捷方法收口 |
|
|
110
|
+
| 2026-10-20 | 增量:性能收口与重复实例入口合并 |
|
|
111
|
+
| 2026-10-20 | 增量:无通道连线与可视化连线构建器 |
|
|
112
|
+
| 2026-10-20 | 增量:(「修改.txt」三条:标签拖动晃动 / 清晰度 / 鹰眼图扩展) |
|
|
113
|
+
| 2026-10-20 | 增量:鹰眼图交互与页面展示 |
|
|
114
|
+
| 2026-10-19 | 增量:(「修改.txt」五条续) |
|
|
115
|
+
| 2026-10-19 | 增量:(「修改.txt」四条) |
|
|
116
|
+
| 2026-10-19 | 增量:(「修改.txt」继续优化与排查) |
|
|
117
|
+
| 2026-10-19 | 增量:(「修改.txt」五条) |
|
|
118
|
+
|
|
119
|
+
## 三、当前增量:AI 文档合并与阅读导航(2026-10-29)
|
|
120
|
+
|
|
121
|
+
- **需求来源**:根目录 `修改.txt`:① 修改 AI 文档页,精简合并;② 继续优化文档页面的呈现效果。
|
|
122
|
+
- **改动主题**:把原先 `ai/01` ~ `ai/05` 的来源、主题分类、精选问答和旁支记录压进主汇总,AI 文档入口从 7 个收敛为 2 个;`ai/06` 改为会话文件与历史增量的维护索引。文档中心新增面包屑、上一份 / 下一份导航和右栏小节计数,推荐阅读卡改成四列自适应布局。
|
|
123
|
+
- **核心文件**:`docs/AI对话汇总.md`、`docs/ai/06-会话索引与复查方法.md`、`docs/index.html`、`docs/steps/selftest-docs.html`、根 `README.md`;删除 `docs/ai/01` ~ `docs/ai/05`。
|
|
124
|
+
- **验证**:`npm run check:docs`、`npx tsc --noEmit`、`npm run build`、`git diff --check` 通过;`selftest-docs.html` 文档中心断言通过。完整条数与结果见主汇总的本轮记录。
|
|
125
|
+
|
|
126
|
+
## 四、怎么自己复查
|
|
127
|
+
|
|
128
|
+
### 1. 先看本次工作区改了什么
|
|
129
|
+
|
|
130
|
+
```powershell
|
|
131
|
+
git status --short
|
|
132
|
+
git diff --stat
|
|
133
|
+
git diff --check
|
|
134
|
+
```
|
|
495
135
|
|
|
496
|
-
|
|
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选中事件分工通道上下文与派发顺序)。
|
|
136
|
+
### 2. 文档与公开接口
|
|
502
137
|
|
|
503
|
-
|
|
138
|
+
```powershell
|
|
139
|
+
node docs/steps/gen-api-index.mjs --check
|
|
140
|
+
npm run check:docs
|
|
141
|
+
npx tsc --noEmit
|
|
142
|
+
npm run build
|
|
143
|
+
```
|
|
504
144
|
|
|
505
|
-
|
|
145
|
+
`check:docs` 会在四件事上失败:成员 / options / 字段与手册对不上、默认值与源码对不上、文档中心清单漏文件或链接断了、模块导出没在文档里点名。改过公开成员或 options 时,先重建 API 索引再查。
|
|
506
146
|
|
|
507
|
-
|
|
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选中载荷去重与通道索引缓存)。
|
|
147
|
+
### 3. 浏览器自测
|
|
512
148
|
|
|
513
|
-
|
|
149
|
+
先起开发服务器:
|
|
514
150
|
|
|
515
|
-
|
|
151
|
+
```powershell
|
|
152
|
+
npx vite --port 5199 --strictPort
|
|
153
|
+
```
|
|
516
154
|
|
|
517
|
-
|
|
518
|
-
import fs from 'node:fs'
|
|
519
|
-
import readline from 'node:readline'
|
|
155
|
+
另开一个终端:
|
|
520
156
|
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
}
|
|
157
|
+
```powershell
|
|
158
|
+
node scripts/run-selftests.mjs selftest-docs.html
|
|
159
|
+
node scripts/run-selftests.mjs selftest-demos.html
|
|
160
|
+
node scripts/run-selftests.mjs selftest-features.html
|
|
161
|
+
node scripts/run-selftests.mjs selftest-select.html
|
|
527
162
|
```
|
|
528
163
|
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
---
|
|
164
|
+
自测页通过 CDP 打开,标题变成 `PASS` 才算完成;`FAIL` 行会直接列出断言条件与读数。
|
|
532
165
|
|
|
533
|
-
|
|
166
|
+
### 4. 回看原始会话
|
|
534
167
|
|
|
535
|
-
|
|
168
|
+
会话文件是一行一条 JSON:`session_meta` 里的 `payload.cwd` 认项目,`payload.type === 'user_message'` 的 `payload.message` 是用户原话。先按日期定位到下表对应的会话,再看本页的增量主题,最后从实现原理的轮次记录核对代码路径。
|
|
536
169
|
|
|
537
|
-
|
|
170
|
+
- 组件本体:34 个会话
|
|
171
|
+
- 选型与立项:2 个会话
|
|
172
|
+
- 宿主旁支:3 个会话
|
|
173
|
+
- 时间跨度:2026-09-15 ~ 2026-10-29
|