gis-view-webgl2 0.1.1 → 0.1.3

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.
Files changed (66) hide show
  1. package/README.md +23 -7
  2. package/dist/gis-view.css +1 -1
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.d.ts +563 -61
  5. package/dist/index.js +1 -1
  6. package/docs/AI/345/257/271/350/257/235/346/261/207/346/200/273.md +182 -0
  7. package/docs/GisView.md +2 -2
  8. 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 +165 -0
  9. package/docs/api/index.html +1 -1
  10. package/docs/demos/ApiCoverageDemo.vue +644 -0
  11. package/docs/demos/ChannelDemo.vue +580 -18
  12. package/docs/demos/ClusterDemo.vue +251 -0
  13. package/docs/demos/CopyMergeDemo.vue +60 -10
  14. package/docs/demos/EventDemo.vue +3 -3
  15. package/docs/demos/GisViewDemo.vue +64 -8809
  16. package/docs/demos/LabelDemo.vue +67 -11
  17. package/docs/demos/api-index.js +58 -41
  18. package/docs/demos/demos.js +33 -16
  19. package/docs/demos/gis-view-demo/GisViewDemoCardHeader.vue +28 -0
  20. package/docs/demos/gis-view-demo/GisViewDemoDialogs.vue +82 -0
  21. package/docs/demos/gis-view-demo/GisViewDemoFooter.vue +16 -0
  22. package/docs/demos/gis-view-demo/GisViewDemoHeading.vue +16 -0
  23. package/docs/demos/gis-view-demo/GisViewDemoPanelStack.vue +71 -0
  24. package/docs/demos/gis-view-demo/GisViewDemoStage.vue +219 -0
  25. package/docs/demos/gis-view-demo/demo.css +1230 -0
  26. package/docs/demos/gis-view-demo/demoContext.js +12 -0
  27. package/docs/demos/gis-view-demo/panels/DataPanels.vue +303 -0
  28. package/docs/demos/gis-view-demo/panels/OpsPanels.vue +174 -0
  29. package/docs/demos/gis-view-demo/panels/StylePanels.vue +561 -0
  30. package/docs/demos/gis-view-demo/panels/ViewPanels.vue +396 -0
  31. package/docs/demos/gis-view-demo/useGisViewDemo.js +6188 -0
  32. 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
  33. package/docs/format/04-/351/200/232/351/201/223/344/270/216/346/240/207/347/255/276.md +5 -4
  34. 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 +3 -2
  35. package/docs/internals/16-03-/344/274/230/345/214/226/344/270/216/345/217/226/350/210/215-/344/270/213.md +1 -1
  36. package/docs/manual/02-/345/235/220/346/240/207/344/270/216/346/225/260/346/215/256.md +10 -4
  37. package/docs/manual/03-/351/205/215/347/275/256/351/241/271.md +105 -16
  38. package/docs/manual/04-/344/272/213/344/273/266/344/270/216/345/233/236/350/260/203.md +8 -8
  39. 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
  40. 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 +78 -3
  41. package/docs/manual/08-/351/200/211/344/270/255/344/270/216/346/213/220/347/202/271.md +31 -5
  42. package/docs/manual/09-/351/200/232/351/201/223/344/270/216/345/244/232/345/233/236/347/272/277.md +64 -10
  43. 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 +65 -8
  44. package/docs/manual/12-/346/240/207/347/255/276/344/270/216/350/243/205/351/245/260.md +54 -1
  45. package/docs/manual/13-/345/212/250/346/225/210/344/270/216/345/233/276/345/205/203.md +3 -0
  46. package/docs/manual/14-/350/247/206/345/233/276/344/270/216/347/255/233/351/200/211.md +35 -19
  47. package/docs/manual/15-/345/257/274/345/207/272/344/270/216/351/233/206/346/210/220.md +5 -0
  48. package/docs/manual/16-/345/256/236/344/276/213/346/226/271/346/263/225/346/200/273/350/241/250.md +18 -6
  49. package/docs/manual/17-/345/217/202/346/225/260/351/200/237/346/237/245.md +47 -22
  50. package/docs/manual/18-/351/200/220/346/226/271/346/263/225/347/244/272/344/276/213.md +80 -13
  51. package/docs/manual/20-/346/200/247/350/203/275/344/270/216/345/244/247/346/225/260/346/215/256.md +27 -0
  52. 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 +5 -5
  53. package/docs/steps/README.md +18 -10
  54. package/docs/steps/selftest-actions.html +3 -5
  55. package/docs/steps/selftest-demo.html +27 -18
  56. package/docs/steps/selftest-demos.html +578 -53
  57. package/docs/steps/selftest-docs.html +7 -6
  58. package/docs/steps/selftest-effects.html +200 -0
  59. package/docs/steps/selftest-features.html +725 -12
  60. package/docs/steps/selftest-labels.html +323 -4
  61. package/docs/steps/selftest-perf.html +293 -20
  62. package/docs/steps/selftest-scale.html +52 -29
  63. package/docs/steps/step-10-full.js +1 -1
  64. package/docs/steps/step-12-events.js +1 -1
  65. package/docs//346/216/245/345/217/243/345/215/217/350/256/256.md +17 -11
  66. package/package.json +2 -2
@@ -101,8 +101,35 @@ const syncFormFromHit = () => {
101
101
  nextTick(() => contentInput.value?.focus())
102
102
  }
103
103
 
104
- const buildOptions = () => ({
105
- points: dataset.points,
104
+ const buildOptions = () => ({
105
+ points: dataset.points.map((point, index) => index === 0
106
+ ? {
107
+ ...point,
108
+ labels: [
109
+ { id: 'default', hidden: true },
110
+ {
111
+ id: 'per-item-draggable',
112
+ content: '逐条 A · 可拖 / 可编辑',
113
+ position: 'top',
114
+ gap: 24,
115
+ draggable: true,
116
+ editable: true,
117
+ avoidOverlap: false,
118
+ style: { color: '#8ff0c4', fontSize: '12px' }
119
+ },
120
+ {
121
+ id: 'per-item-locked',
122
+ content: '逐条 B · 只读',
123
+ position: 'bottom',
124
+ gap: 24,
125
+ draggable: false,
126
+ editable: false,
127
+ avoidOverlap: false,
128
+ style: { color: '#ffb4c8', fontSize: '12px' }
129
+ }
130
+ ]
131
+ }
132
+ : point),
106
133
  lines: dataset.lines,
107
134
  channels: dataset.channels,
108
135
  channelWidth: 2.4,
@@ -134,10 +161,16 @@ const buildOptions = () => ({
134
161
  editable: true,
135
162
  style: { color: '#ffe08a', fontSize: '11px' }
136
163
  },
137
- onReady: () => {
138
- emit('notice', `${dataset.points.length} 个节点 / ${dataset.channels.length} 条通道,标签可点可拖可右键`)
139
- pushLog('ready', '视图就绪:点一下标签试试(右键还有菜单)')
140
- },
164
+ onReady: () => {
165
+ emit('notice', `${dataset.points.length} 个节点 / ${dataset.channels.length} 条通道,标签可点可拖可右键`)
166
+ pushLog('ready', '视图就绪:点一下标签试试(右键还有菜单)')
167
+ const first = dataset.points[0]
168
+ const labels = view?.getLabels('point', first.id) ?? []
169
+ const perItem = labels.filter(label => label.id === 'per-item-draggable' || label.id === 'per-item-locked')
170
+ if (perItem.length) {
171
+ perItemText.value = `第一个节点有 ${perItem.length} 条逐条配置:${perItem.map(label => `${label.id}(${String(label.content)})`).join(' · ')};A 可拖可点,B 只读`
172
+ }
173
+ },
141
174
  onSelect: () => syncSelection()
142
175
  })
143
176
  /* ---- 三条添加路径:统一 API 的三种 refs 写法 ---- */
@@ -164,7 +197,7 @@ const syncSelection = () => {
164
197
  }
165
198
 
166
199
  /** 面板上的「选中一个」:不用在画布上瞄,点一下就把第一条节点 / 线路交给选中集 */
167
- const selectFirst = (kind) => {
200
+ const selectFirst = (kind) => {
168
201
  const item = kind === 'line' ? view?.getData().lines?.[0] : view?.getData().points?.[0]
169
202
  if (!item) {
170
203
  return
@@ -173,8 +206,21 @@ const selectFirst = (kind) => {
173
206
  labelKind.value = 'line'
174
207
  }
175
208
  view.selectFeatures([item.id])
176
- pushLog('select', `用接口选中 ${item.id}`)
177
- }
209
+ pushLog('select', `用接口选中 ${item.id}`)
210
+ }
211
+
212
+ /** 逐条交互示例:选中第一个节点并复读两条 labels 的定义来源 */
213
+ const focusPerItemLabels = () => {
214
+ const first = dataset.points[0]
215
+ if (!view || !first) return
216
+ view.selectFeatures([first.id])
217
+ const labels = view.getLabels('point', first.id) ?? []
218
+ const perItem = labels.filter(label => label.id === 'per-item-draggable' || label.id === 'per-item-locked')
219
+ perItemText.value = perItem.length
220
+ ? `第一个节点 ${String(first.id)}:${perItem.map(label => `${label.id}(${String(label.content)})`).join(' · ')};A 可拖可点,B 只读`
221
+ : '逐条交互示例没有读出来'
222
+ pushLog('逐条标签', perItemText.value)
223
+ }
178
224
 
179
225
  /** 记住这一批加出来的 labelId:批量改 / 批量删就动这一批(addOnce 每次写 备注1 / 备注2…) */
180
226
  const rememberBatch = (result) => {
@@ -405,7 +451,8 @@ const describeChange = (payload) => {
405
451
  * 标签覆盖读数(getLabelStates):一次列出「哪些标签被改过 / 拖过 / 隐藏过、哪些是运行时加的」,
406
452
  * 不用自己拿 getLabels 逐条比对。labelChange 一响就刷新一次(批量加减改都在这一条路上)。
407
453
  */
408
- const labelStatesText = ref('—')
454
+ const labelStatesText = ref('—')
455
+ const perItemText = ref('第一个节点有两条标签:A 可拖 / 可编辑,B 只读(不可拖 / 不可点)')
409
456
  const syncLabelStates = () => {
410
457
  const states = view?.getLabelStates() ?? []
411
458
  if (!states.length) {
@@ -479,9 +526,18 @@ onBeforeUnmount(() => {
479
526
  <p class="dv-hint">overlapMode: 'shift'(默认)撞上别的标签时先换落点;'hide' 撞上就直接不显示。两者都只在 labelOptimize: true 且 avoidOverlap 没关时生效。</p>
480
527
  </div>
481
528
 
529
+ <div class="dv-group">
530
+ <h3>逐条配置可拖 / 可编辑</h3>
531
+ <div class="dv-row">
532
+ <button type="button" class="dv-button dv-button--primary" data-demo="label-per-item-focus" @click="focusPerItemLabels">选中第一个节点并查看两条标签</button>
533
+ </div>
534
+ <p class="dv-readout" data-demo="label-per-item-readout">{{ perItemText }}</p>
535
+ <p class="dv-hint">第一个节点的数据 labels 里写了两条:A 单条 draggable / editable 为 true,B 单条写 false。逐条配置覆盖全局 label 开关;直接拖 A、点 B 就能看出差别。</p>
536
+ </div>
537
+
482
538
  <div class="dv-group">
483
539
  <h3>
484
- 加标签(统一 API)
540
+ 加标签(统一 API)
485
541
  <span class="dv-chips">
486
542
  <button
487
543
  v-for="item in ['point', 'line']"