gis-view-webgl2 0.1.1 → 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 +13 -1
- package/dist/gis-view.css +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +255 -3
- package/dist/index.js +1 -1
- package/docs/AI/345/257/271/350/257/235/346/261/207/346/200/273.md +65 -0
- package/docs/GisView.md +1 -1
- package/docs/ai/06-/344/274/232/350/257/235/347/264/242/345/274/225/344/270/216/345/244/215/346/237/245/346/226/271/346/263/225.md +58 -0
- package/docs/demos/ChannelDemo.vue +566 -6
- package/docs/demos/CopyMergeDemo.vue +57 -6
- package/docs/demos/LabelDemo.vue +67 -11
- package/docs/demos/api-index.js +13 -3
- 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 +4 -2
- package/docs/format/04-/351/200/232/351/201/223/344/270/216/346/240/207/347/255/276.md +5 -4
- package/docs/manual/02-/345/235/220/346/240/207/344/270/216/346/225/260/346/215/256.md +7 -2
- package/docs/manual/03-/351/205/215/347/275/256/351/241/271.md +21 -5
- 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 +100 -0
- 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 +38 -0
- package/docs/manual/08-/351/200/211/344/270/255/344/270/216/346/213/220/347/202/271.md +5 -5
- package/docs/manual/09-/351/200/232/351/201/223/344/270/216/345/244/232/345/233/236/347/272/277.md +58 -8
- 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 +27 -2
- package/docs/manual/12-/346/240/207/347/255/276/344/270/216/350/243/205/351/245/260.md +45 -1
- package/docs/manual/16-/345/256/236/344/276/213/346/226/271/346/263/225/346/200/273/350/241/250.md +7 -1
- package/docs/manual/17-/345/217/202/346/225/260/351/200/237/346/237/245.md +8 -0
- package/docs/manual/18-/351/200/220/346/226/271/346/263/225/347/244/272/344/276/213.md +28 -0
- package/docs/manual/20-/346/200/247/350/203/275/344/270/216/345/244/247/346/225/260/346/215/256.md +3 -0
- 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 +1 -1
- package/docs/steps/README.md +8 -6
- package/docs/steps/selftest-demos.html +194 -29
- package/docs/steps/selftest-docs.html +7 -6
- package/docs/steps/selftest-features.html +213 -1
- package/docs/steps/selftest-labels.html +249 -4
- package/docs//346/216/245/345/217/243/345/215/217/350/256/256.md +17 -11
- package/package.json +2 -2
|
@@ -148,3 +148,68 @@
|
|
|
148
148
|
- **页面展示**:`docs/api/index.html` 新增与文档中心共用 `gisDocs.reading` 的深色主题、左侧当前分组滚动高亮、深链 `scroll-margin-top`、卡片 / 示例头 / 按钮 / 焦点 / 滚动条 / 窄屏布局优化;快速开始里的成员数改为读取 `API_SUMMARY.members`,不再写死。
|
|
149
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
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
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
| [14 视图与筛选](manual/14-视图与筛选.md) | 筛选、搜索定位、初始视图与缩放范围、背景层、鹰眼图、近义入口 |
|
|
33
33
|
| [15 导出与集成](manual/15-导出与集成.md) | 导出图片 / 选中节点 / 数据、自定义导出格式,插件、自建界面与键盘交互 |
|
|
34
34
|
| [16 实例方法总表](manual/16-实例方法总表.md) | 按功能分组的实例方法主表(找方法从这一章开始) |
|
|
35
|
-
| [17 参数速查(逐个方法)](manual/17-参数速查.md) |
|
|
35
|
+
| [17 参数速查(逐个方法)](manual/17-参数速查.md) | 249 个成员逐个列全:参数、默认值与返回 |
|
|
36
36
|
| [18 逐方法示例(复制就能跑)](manual/18-逐方法示例.md) | 每个成员一段可复制的调用示例(API 速查页读的就是这一章) |
|
|
37
37
|
| [19 读数与拖拽预览](manual/19-读数与拖拽预览.md) | 自建界面常用的读数 / 定位方法;拖拽落点预览 |
|
|
38
38
|
| [20 性能与大数据](manual/20-性能与大数据.md) | 十万级数据的开关与实测、WebGPU 取舍、渲染后端开关 |
|
|
@@ -162,6 +162,64 @@
|
|
|
162
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
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
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
|
+
|
|
165
223
|
## 六、怎么自己复查
|
|
166
224
|
|
|
167
225
|
会话文件是逐行 JSON,不用整份读 —— 只挑两种行解析就够:`session_meta` 行里的 `payload.cwd` 认项目,`payload.type === 'user_message'` 行里的 `payload.message` 是用户原话:
|