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.
- package/README.md +23 -7
- package/dist/gis-view.css +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +563 -61
- package/dist/index.js +1 -1
- package/docs/AI/345/257/271/350/257/235/346/261/207/346/200/273.md +182 -0
- package/docs/GisView.md +2 -2
- package/docs/ai/06-/344/274/232/350/257/235/347/264/242/345/274/225/344/270/216/345/244/215/346/237/245/346/226/271/346/263/225.md +165 -0
- package/docs/api/index.html +1 -1
- package/docs/demos/ApiCoverageDemo.vue +644 -0
- package/docs/demos/ChannelDemo.vue +580 -18
- package/docs/demos/ClusterDemo.vue +251 -0
- package/docs/demos/CopyMergeDemo.vue +60 -10
- package/docs/demos/EventDemo.vue +3 -3
- package/docs/demos/GisViewDemo.vue +64 -8809
- package/docs/demos/LabelDemo.vue +67 -11
- package/docs/demos/api-index.js +58 -41
- package/docs/demos/demos.js +33 -16
- package/docs/demos/gis-view-demo/GisViewDemoCardHeader.vue +28 -0
- package/docs/demos/gis-view-demo/GisViewDemoDialogs.vue +82 -0
- package/docs/demos/gis-view-demo/GisViewDemoFooter.vue +16 -0
- package/docs/demos/gis-view-demo/GisViewDemoHeading.vue +16 -0
- package/docs/demos/gis-view-demo/GisViewDemoPanelStack.vue +71 -0
- package/docs/demos/gis-view-demo/GisViewDemoStage.vue +219 -0
- package/docs/demos/gis-view-demo/demo.css +1230 -0
- package/docs/demos/gis-view-demo/demoContext.js +12 -0
- package/docs/demos/gis-view-demo/panels/DataPanels.vue +303 -0
- package/docs/demos/gis-view-demo/panels/OpsPanels.vue +174 -0
- package/docs/demos/gis-view-demo/panels/StylePanels.vue +561 -0
- package/docs/demos/gis-view-demo/panels/ViewPanels.vue +396 -0
- package/docs/demos/gis-view-demo/useGisViewDemo.js +6188 -0
- 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/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
- 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
- package/docs/manual/02-/345/235/220/346/240/207/344/270/216/346/225/260/346/215/256.md +10 -4
- package/docs/manual/03-/351/205/215/347/275/256/351/241/271.md +105 -16
- package/docs/manual/04-/344/272/213/344/273/266/344/270/216/345/233/236/350/260/203.md +8 -8
- package/docs/manual/06-/346/225/260/346/215/256/344/270/216/345/234/272/346/231/257/346/233/264/346/226/260.md +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 +78 -3
- package/docs/manual/08-/351/200/211/344/270/255/344/270/216/346/213/220/347/202/271.md +31 -5
- 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
- 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
- package/docs/manual/12-/346/240/207/347/255/276/344/270/216/350/243/205/351/245/260.md +54 -1
- package/docs/manual/13-/345/212/250/346/225/210/344/270/216/345/233/276/345/205/203.md +3 -0
- package/docs/manual/14-/350/247/206/345/233/276/344/270/216/347/255/233/351/200/211.md +35 -19
- package/docs/manual/15-/345/257/274/345/207/272/344/270/216/351/233/206/346/210/220.md +5 -0
- 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
- package/docs/manual/17-/345/217/202/346/225/260/351/200/237/346/237/245.md +47 -22
- package/docs/manual/18-/351/200/220/346/226/271/346/263/225/347/244/272/344/276/213.md +80 -13
- 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
- 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
- package/docs/steps/README.md +18 -10
- package/docs/steps/selftest-actions.html +3 -5
- package/docs/steps/selftest-demo.html +27 -18
- package/docs/steps/selftest-demos.html +578 -53
- package/docs/steps/selftest-docs.html +7 -6
- package/docs/steps/selftest-effects.html +200 -0
- package/docs/steps/selftest-features.html +725 -12
- package/docs/steps/selftest-labels.html +323 -4
- package/docs/steps/selftest-perf.html +293 -20
- package/docs/steps/selftest-scale.html +52 -29
- package/docs/steps/step-10-full.js +1 -1
- package/docs/steps/step-12-events.js +1 -1
- package/docs//346/216/245/345/217/243/345/215/217/350/256/256.md +17 -11
- package/package.json +2 -2
package/docs/demos/LabelDemo.vue
CHANGED
|
@@ -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']"
|