@abi-software/mapintegratedvuer 1.9.0-externalise.0 → 1.9.0
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/dist/{ContentMixin-DZNBigKl.js → ContentMixin-DyVwSF4C.js} +255 -277
- package/dist/{Flatmap-Cpq4KUDR.js → Flatmap-DrfTTLeB.js} +11 -12
- package/dist/{Iframe-Bs8MdpYf.js → Iframe-DNML_G7u.js} +2 -2
- package/dist/{MultiFlatmap-D2F4ghpg.js → MultiFlatmap-Vp10mrjr.js} +10 -11
- package/dist/{Plot-DTUNGWFU.js → Plot-BnuX-0LW.js} +2 -2
- package/dist/{Scaffold-DBwjYgzS.js → Scaffold-CLNZHo3r.js} +10858 -11419
- package/dist/{Simulation-Bw7qeokB.js → Simulation-BEU8ep5d.js} +2 -2
- package/dist/{index-DPgI7wGR.js → index-CVfAy4kK.js} +19947 -19608
- package/dist/mapintegratedvuer.js +1 -1
- package/dist/mapintegratedvuer.umd.cjs +2787 -411
- package/dist/style-BM2XOQIb.js +104676 -0
- package/dist/style.css +1 -1
- package/package.json +7 -7
- package/src/components/ContentVuer.vue +3 -2
- package/src/components/DialogToolbarContent.vue +24 -35
- package/src/components/SplitDialog.vue +92 -2
- package/src/components/SplitFlow.vue +17 -11
- package/src/components/viewers/Flatmap.vue +1 -1
- package/src/components/viewers/MultiFlatmap.vue +1 -1
- package/src/components.d.ts +1 -0
- package/src/mixins/ContentMixin.js +81 -42
- package/src/stores/connectivities.js +21 -0
- package/src/stores/entries.js +8 -1
- package/src/stores/splitFlow.js +14 -7
- package/vite.bundle-build.js +1 -2
- package/dist/style-C-2wp5WK.js +0 -66
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@abi-software/mapintegratedvuer",
|
3
|
-
"version": "1.9.0
|
3
|
+
"version": "1.9.0",
|
4
4
|
"license": "Apache-2.0",
|
5
5
|
"scripts": {
|
6
6
|
"serve": "vite --host --force",
|
@@ -50,12 +50,12 @@
|
|
50
50
|
"*.js"
|
51
51
|
],
|
52
52
|
"dependencies": {
|
53
|
-
"@abi-software/flatmapvuer": "^1.9.0
|
54
|
-
"@abi-software/map-side-bar": "^2.
|
55
|
-
"@abi-software/map-utilities": "^1.5.0
|
56
|
-
"@abi-software/plotvuer": "
|
57
|
-
"@abi-software/scaffoldvuer": "^1.9.0
|
58
|
-
"@abi-software/simulationvuer": "1.0.
|
53
|
+
"@abi-software/flatmapvuer": "^1.9.0",
|
54
|
+
"@abi-software/map-side-bar": "^2.8.0",
|
55
|
+
"@abi-software/map-utilities": "^1.5.0",
|
56
|
+
"@abi-software/plotvuer": "1.0.4",
|
57
|
+
"@abi-software/scaffoldvuer": "^1.9.0",
|
58
|
+
"@abi-software/simulationvuer": "1.0.2",
|
59
59
|
"@abi-software/sparc-annotation": "0.3.2",
|
60
60
|
"@abi-software/svg-sprite": "^1.0.1",
|
61
61
|
"@element-plus/icons-vue": "^2.3.1",
|
@@ -28,7 +28,7 @@
|
|
28
28
|
:visible="visible"
|
29
29
|
:lazy="true"
|
30
30
|
ref="viewer"
|
31
|
-
@flatmap-provenance-ready="
|
31
|
+
@flatmap-provenance-ready="flatmapProvenanceReady"
|
32
32
|
@resource-selected="resourceSelected"
|
33
33
|
@species-changed="speciesChanged"
|
34
34
|
/>
|
@@ -78,8 +78,9 @@ export default {
|
|
78
78
|
Simulation,
|
79
79
|
},
|
80
80
|
methods: {
|
81
|
-
|
81
|
+
flatmapProvenanceReady: function(prov) {
|
82
82
|
this.$refs.contentBar?.setupFlatmapContextCard(prov);
|
83
|
+
this.entriesStore.updateMapForEntry(this.entry, prov);
|
83
84
|
},
|
84
85
|
/**
|
85
86
|
* Toggle sync mode on/off depending on species and current state
|
@@ -113,46 +113,32 @@
|
|
113
113
|
>
|
114
114
|
<template v-if="displayShareOptions">
|
115
115
|
<el-row>
|
116
|
-
<el-col :span="8">
|
117
|
-
<el-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
116
|
+
<el-col :offset="3" :span="8">
|
117
|
+
<el-button
|
118
|
+
type="primary"
|
119
|
+
size="small"
|
120
|
+
@click="getShareLink(exportAnnotation)"
|
121
|
+
class="share-options"
|
122
122
|
>
|
123
|
-
|
124
|
-
|
125
|
-
type="primary"
|
126
|
-
size="small"
|
127
|
-
@click="getShareLink(false)"
|
128
|
-
class="share-options"
|
129
|
-
>
|
130
|
-
Settings Only
|
131
|
-
</el-button>
|
132
|
-
</template>
|
133
|
-
</el-popover>
|
123
|
+
Create Permalink
|
124
|
+
</el-button>
|
134
125
|
</el-col>
|
135
|
-
<el-col :span="
|
126
|
+
<el-col :span="10">
|
136
127
|
<el-popover class="tooltip"
|
137
128
|
placement="bottom-end"
|
138
129
|
:show-after="helpDelay" :teleported=false trigger="hover"
|
139
130
|
popper-class="header-popper"
|
140
131
|
>
|
141
132
|
<template #reference>
|
142
|
-
<el-
|
143
|
-
|
133
|
+
<el-checkbox
|
134
|
+
v-model="exportAnnotation"
|
144
135
|
size="small"
|
145
|
-
@click="getShareLink(true)"
|
146
|
-
class="share-options"
|
147
136
|
>
|
148
|
-
|
149
|
-
|
150
|
-
</el-button>
|
137
|
+
Export Annotations
|
138
|
+
</el-checkbox>
|
151
139
|
</template>
|
152
140
|
<template #default>
|
153
|
-
Create a
|
154
|
-
<br>
|
155
|
-
and anonymous annotations.
|
141
|
+
Create a permalink with anonymous annotations.
|
156
142
|
<br>
|
157
143
|
NOTE: Annotations will only be stored for
|
158
144
|
<br>
|
@@ -286,6 +272,7 @@ import {
|
|
286
272
|
} from '@element-plus/icons-vue';
|
287
273
|
import {
|
288
274
|
ElButton as Button,
|
275
|
+
ElCheckbox as Checkbox,
|
289
276
|
ElCol as Col,
|
290
277
|
ElIcon as Icon,
|
291
278
|
ElInput as Input,
|
@@ -303,6 +290,7 @@ export default {
|
|
303
290
|
name: "DialogToolbarContent",
|
304
291
|
components: {
|
305
292
|
Button,
|
293
|
+
Checkbox,
|
306
294
|
Col,
|
307
295
|
Icon,
|
308
296
|
Input,
|
@@ -371,16 +359,17 @@ export default {
|
|
371
359
|
},
|
372
360
|
data: function() {
|
373
361
|
return {
|
374
|
-
isFullscreen: false,
|
375
|
-
loadingLink: true,
|
376
|
-
displayShareOptions: false,
|
377
|
-
independent: true,
|
378
|
-
failedSearch: undefined,
|
379
362
|
activeViewRef: undefined,
|
380
|
-
|
381
|
-
globalSettingRef: undefined,
|
363
|
+
displayShareOptions: false,
|
382
364
|
ElIconCopyDocument: shallowRef(ElIconCopyDocument),
|
365
|
+
exportAnnotation: false,
|
366
|
+
failedSearch: undefined,
|
383
367
|
globalSettings: {},
|
368
|
+
globalSettingRef: undefined,
|
369
|
+
independent: true,
|
370
|
+
isFullscreen: false,
|
371
|
+
loadingLink: true,
|
372
|
+
permalinkRef: undefined,
|
384
373
|
}
|
385
374
|
},
|
386
375
|
methods: {
|
@@ -30,6 +30,7 @@ import CustomSplitter from "./CustomSplitter.vue";
|
|
30
30
|
import EventBus from './EventBus';
|
31
31
|
import { mapStores } from 'pinia';
|
32
32
|
import { useSplitFlowStore } from '../stores/splitFlow';
|
33
|
+
import { useConnectivitiesStore } from '../stores/connectivities';
|
33
34
|
|
34
35
|
export default {
|
35
36
|
name: "SplitDialog",
|
@@ -157,13 +158,99 @@ export default {
|
|
157
158
|
});
|
158
159
|
}
|
159
160
|
this.__userResize__ = false;
|
160
|
-
}
|
161
|
+
},
|
162
|
+
onSpeciesLayoutConnectivityUpdate: function () {
|
163
|
+
let activePaneIDs = [];
|
164
|
+
let availablePaneIDs = [];
|
165
|
+
let combinedConnectivities = [];
|
166
|
+
let sckanVersion = '';
|
167
|
+
let uuid = '';
|
168
|
+
|
169
|
+
for (const key in this.customLayout) {
|
170
|
+
if (this.customLayout[key].id) {
|
171
|
+
availablePaneIDs.push(this.customLayout[key].id);
|
172
|
+
}
|
173
|
+
}
|
174
|
+
|
175
|
+
switch (this.activeView) {
|
176
|
+
case 'singlepanel': {
|
177
|
+
activePaneIDs = availablePaneIDs.slice(0, 1);
|
178
|
+
} break;
|
179
|
+
case '2horpanel':
|
180
|
+
case '2vertpanel': {
|
181
|
+
activePaneIDs = availablePaneIDs.slice(0, 2);
|
182
|
+
} break;
|
183
|
+
case '3panel': {
|
184
|
+
activePaneIDs = availablePaneIDs.slice(0, 3);
|
185
|
+
} break;
|
186
|
+
case '4panel': {
|
187
|
+
activePaneIDs = availablePaneIDs.slice(0, 4);
|
188
|
+
} break;
|
189
|
+
case '5panel': {
|
190
|
+
activePaneIDs = availablePaneIDs.slice(0, 5);
|
191
|
+
} break;
|
192
|
+
case '6panelVertical':
|
193
|
+
case '6panel': {
|
194
|
+
activePaneIDs = availablePaneIDs.slice(0, 6);
|
195
|
+
} break;
|
196
|
+
default:
|
197
|
+
break;
|
198
|
+
}
|
199
|
+
|
200
|
+
const uuids = Array.from(
|
201
|
+
new Set(
|
202
|
+
this.entries
|
203
|
+
.filter(entry => activePaneIDs.includes(entry.id) && entry.uuid)
|
204
|
+
.map(entry => entry.uuid)
|
205
|
+
)
|
206
|
+
);
|
207
|
+
|
208
|
+
this.entries.forEach((entry) => {
|
209
|
+
if (entry.sckanVersion in this.connectivitiesStore.globalConnectivities) {
|
210
|
+
sckanVersion = entry.sckanVersion;
|
211
|
+
}
|
212
|
+
});
|
213
|
+
|
214
|
+
// mix connectivites of available maps
|
215
|
+
if (uuids.length) {
|
216
|
+
uuids.forEach((_uuid) => {
|
217
|
+
if (_uuid in this.connectivitiesStore.globalConnectivities) {
|
218
|
+
const connectivity = this.connectivitiesStore.globalConnectivities[_uuid];
|
219
|
+
combinedConnectivities.push(...connectivity);
|
220
|
+
}
|
221
|
+
});
|
222
|
+
|
223
|
+
const uniqueConnectivities = Array.from(
|
224
|
+
new Map(combinedConnectivities.map((item) => [item.id, item])).values()
|
225
|
+
);
|
226
|
+
|
227
|
+
EventBus.emit("connectivity-knowledge", {
|
228
|
+
data: uniqueConnectivities
|
229
|
+
});
|
230
|
+
|
231
|
+
if (uuids.length === 1) {
|
232
|
+
this.connectivitiesStore.updateActiveConnectivityKey(uuid);
|
233
|
+
}
|
234
|
+
} else {
|
235
|
+
if (sckanVersion) {
|
236
|
+
EventBus.emit("connectivity-knowledge", {
|
237
|
+
data: this.connectivitiesStore.globalConnectivities[sckanVersion]
|
238
|
+
});
|
239
|
+
this.connectivitiesStore.updateActiveConnectivityKey(sckanVersion);
|
240
|
+
} else {
|
241
|
+
console.warn(`There has no connectivity to show!`);
|
242
|
+
}
|
243
|
+
}
|
244
|
+
},
|
161
245
|
},
|
162
246
|
computed: {
|
163
|
-
...mapStores(useSplitFlowStore),
|
247
|
+
...mapStores(useSplitFlowStore, useConnectivitiesStore),
|
164
248
|
activeView: function() {
|
165
249
|
return this.splitFlowStore.activeView;
|
166
250
|
},
|
251
|
+
customLayout: function() {
|
252
|
+
return this.splitFlowStore.customLayout;
|
253
|
+
},
|
167
254
|
horizontal() {
|
168
255
|
if (this.splitFlowStore.activeView === "2horpanel") {
|
169
256
|
return true;
|
@@ -209,6 +296,9 @@ export default {
|
|
209
296
|
EventBus.on("PaneUnmounted", payload => {
|
210
297
|
this.hidePane(payload.refName);
|
211
298
|
});
|
299
|
+
EventBus.on('species-layout-connectivity-update', () => {
|
300
|
+
this.onSpeciesLayoutConnectivityUpdate();
|
301
|
+
})
|
212
302
|
},
|
213
303
|
};
|
214
304
|
</script>
|
@@ -130,7 +130,7 @@ export default {
|
|
130
130
|
createData: {},
|
131
131
|
connectivityHighlight: [],
|
132
132
|
connectivityKnowledge: [],
|
133
|
-
connectivityExplorerClicked:
|
133
|
+
connectivityExplorerClicked: [], // to support multi views
|
134
134
|
}
|
135
135
|
},
|
136
136
|
watch: {
|
@@ -146,8 +146,7 @@ export default {
|
|
146
146
|
},
|
147
147
|
methods: {
|
148
148
|
onConnectivityExplorerClicked: function (payload) {
|
149
|
-
this.
|
150
|
-
this.onDisplaySearch({ term: payload.id }, false);
|
149
|
+
this.onDisplaySearch({ term: payload.id }, false, true);
|
151
150
|
},
|
152
151
|
/**
|
153
152
|
* Callback when an action is performed (open new dialogs).
|
@@ -249,13 +248,16 @@ export default {
|
|
249
248
|
'file_path': filePath,
|
250
249
|
});
|
251
250
|
},
|
252
|
-
onDisplaySearch: function (payload, tracking = true) {
|
251
|
+
onDisplaySearch: function (payload, tracking = true, connectivityExplorerClicked = false) {
|
253
252
|
let searchFound = false;
|
254
253
|
//Search all active viewers when global callback is on
|
255
254
|
let splitdialog = this.$refs.splitdialog;
|
256
255
|
if (splitdialog) {
|
257
256
|
const activeContents = splitdialog.getActiveContents();
|
258
257
|
activeContents.forEach(content => {
|
258
|
+
if (connectivityExplorerClicked) {
|
259
|
+
this.connectivityExplorerClicked.push(true);
|
260
|
+
}
|
259
261
|
if (content.search(payload.term)) {
|
260
262
|
searchFound = true;
|
261
263
|
}
|
@@ -314,7 +316,7 @@ export default {
|
|
314
316
|
EventBus.emit('connectivity-hovered', data);
|
315
317
|
},
|
316
318
|
onConnectivitySourceChange: function (data) {
|
317
|
-
this.connectivityExplorerClicked
|
319
|
+
this.connectivityExplorerClicked.push(true);
|
318
320
|
EventBus.emit('connectivity-source-change', data);
|
319
321
|
},
|
320
322
|
hoverChanged: function (data) {
|
@@ -511,8 +513,12 @@ export default {
|
|
511
513
|
speciesChanged: function (species) {
|
512
514
|
if (this.$refs.sideBar) {
|
513
515
|
// Use to update the connectivity when switch species
|
514
|
-
|
515
|
-
this.$
|
516
|
+
// Wait for provenance info with uuid update
|
517
|
+
this.$nextTick(() => {
|
518
|
+
// EventBus.emit("connectivity-query-filter");
|
519
|
+
EventBus.emit('species-layout-connectivity-update');
|
520
|
+
this.$refs.sideBar.close();
|
521
|
+
})
|
516
522
|
}
|
517
523
|
},
|
518
524
|
toggleSyncMode: function (payload) {
|
@@ -632,7 +638,7 @@ export default {
|
|
632
638
|
this.connectivityEntry = payload;
|
633
639
|
// click on the flatmap paths/features directly
|
634
640
|
// or onDisplaySearch is performed
|
635
|
-
if (!this.connectivityExplorerClicked) {
|
641
|
+
if (!this.connectivityExplorerClicked.length) {
|
636
642
|
this.connectivityKnowledge = payload.map((entry) => {
|
637
643
|
return { label: entry.title, id: entry.featureId[0], detailsReady: entry.ready }
|
638
644
|
});
|
@@ -645,11 +651,11 @@ export default {
|
|
645
651
|
this.$refs.sideBar.setDrawerOpen(true);
|
646
652
|
}
|
647
653
|
}
|
648
|
-
this.connectivityExplorerClicked
|
654
|
+
this.connectivityExplorerClicked.pop();
|
649
655
|
});
|
650
|
-
EventBus.on('connectivity-
|
656
|
+
EventBus.on('connectivity-error', payload => {
|
651
657
|
if (this.$refs.sideBar) {
|
652
|
-
this.$refs.sideBar.
|
658
|
+
this.$refs.sideBar.updateConnectivityError(payload.data);
|
653
659
|
}
|
654
660
|
});
|
655
661
|
EventBus.on("OpenNewMap", type => {
|
@@ -20,7 +20,7 @@
|
|
20
20
|
@annotation-close="onAnnotationClose"
|
21
21
|
:annotationSidebar="annotationSidebar"
|
22
22
|
@connectivity-info-open="onConnectivityInfoOpen"
|
23
|
-
@connectivity-
|
23
|
+
@connectivity-error="onConnectivityError"
|
24
24
|
:connectivityInfoSidebar="connectivityInfoSidebar"
|
25
25
|
:pathControls="true"
|
26
26
|
ref="flatmap"
|
@@ -19,7 +19,7 @@
|
|
19
19
|
@annotation-close="onAnnotationClose"
|
20
20
|
:annotationSidebar="annotationSidebar"
|
21
21
|
@connectivity-info-open="onConnectivityInfoOpen"
|
22
|
-
@connectivity-
|
22
|
+
@connectivity-error="onConnectivityError"
|
23
23
|
:connectivityInfoSidebar="connectivityInfoSidebar"
|
24
24
|
ref="multiflatmap"
|
25
25
|
:displayMinimap="true"
|
package/src/components.d.ts
CHANGED
@@ -16,6 +16,7 @@ declare module 'vue' {
|
|
16
16
|
DialogToolbarContent: typeof import('./components/DialogToolbarContent.vue')['default']
|
17
17
|
ElAutocomplete: typeof import('element-plus/es')['ElAutocomplete']
|
18
18
|
ElButton: typeof import('element-plus/es')['ElButton']
|
19
|
+
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
|
19
20
|
ElCol: typeof import('element-plus/es')['ElCol']
|
20
21
|
ElContainer: typeof import('element-plus/es')['ElContainer']
|
21
22
|
ElHeader: typeof import('element-plus/es')['ElHeader']
|
@@ -7,6 +7,7 @@ import EventBus from "../components/EventBus";
|
|
7
7
|
import { mapStores } from 'pinia';
|
8
8
|
import { useSettingsStore } from '../stores/settings';
|
9
9
|
import { useSplitFlowStore } from '../stores/splitFlow';
|
10
|
+
import { useConnectivitiesStore } from '../stores/connectivities';
|
10
11
|
import Tagging from '../services/tagging.js';
|
11
12
|
|
12
13
|
import { FlatmapQueries } from "@abi-software/flatmapvuer/src/services/flatmapQueries.js";
|
@@ -35,7 +36,7 @@ export default {
|
|
35
36
|
},
|
36
37
|
},
|
37
38
|
computed: {
|
38
|
-
...mapStores(useSettingsStore, useSplitFlowStore),
|
39
|
+
...mapStores(useSettingsStore, useSplitFlowStore, useConnectivitiesStore),
|
39
40
|
idNamePair() {
|
40
41
|
return this.splitFlowStore.idNamePair;
|
41
42
|
},
|
@@ -60,6 +61,7 @@ export default {
|
|
60
61
|
this.multiflatmapRef = this.$refs.multiflatmap;
|
61
62
|
this.flatmapRef = this.$refs.flatmap;
|
62
63
|
this.scaffoldRef = this.$refs.scaffold;
|
64
|
+
this.connectivityKnowledge = this.connectivitiesStore.globalConnectivities;
|
63
65
|
},
|
64
66
|
methods: {
|
65
67
|
toggleSyncMode: function () {
|
@@ -521,6 +523,18 @@ export default {
|
|
521
523
|
flatmap.zoomToFeatures(paths);
|
522
524
|
} catch (error) {
|
523
525
|
console.log(error)
|
526
|
+
// only for connectivity hover highlight
|
527
|
+
if (hoverConnectivity.length && flatmap.mapImp) {
|
528
|
+
const uuid = flatmap.mapImp.uuid;
|
529
|
+
const found = paths.every((path) =>
|
530
|
+
this.connectivityKnowledge[uuid].some((connectivity) =>
|
531
|
+
connectivity.id === path
|
532
|
+
)
|
533
|
+
);
|
534
|
+
if (!found) {
|
535
|
+
flatmap.mapImp.clearSearchResults();
|
536
|
+
}
|
537
|
+
}
|
524
538
|
}
|
525
539
|
});
|
526
540
|
} else if (this.scaffoldRef && scaffold) {
|
@@ -539,25 +553,46 @@ export default {
|
|
539
553
|
onConnectivityInfoOpen: function (connectivityInfoData) {
|
540
554
|
EventBus.emit('connectivity-info-open', connectivityInfoData);
|
541
555
|
},
|
542
|
-
|
543
|
-
EventBus.emit('connectivity-
|
556
|
+
onConnectivityError: function (errorInfo) {
|
557
|
+
EventBus.emit('connectivity-error', errorInfo);
|
544
558
|
},
|
545
|
-
loadConnectivityKnowledge: async function (
|
546
|
-
const sckanVersion = getKnowledgeSource(
|
559
|
+
loadConnectivityKnowledge: async function (flatmapImp) {
|
560
|
+
const sckanVersion = getKnowledgeSource(flatmapImp);
|
547
561
|
const flatmapQueries = markRaw(new FlatmapQueries());
|
548
562
|
flatmapQueries.initialise(this.flatmapAPI);
|
549
|
-
const knowledge = await loadAndStoreKnowledge(
|
550
|
-
const uuid =
|
551
|
-
const mapPathsData = await flatmapQueries.queryMapPaths(uuid);
|
552
|
-
const pathsFromMap = mapPathsData ? mapPathsData.paths : {};
|
563
|
+
const knowledge = await loadAndStoreKnowledge(flatmapImp, flatmapQueries);
|
564
|
+
const uuid = flatmapImp.uuid;
|
553
565
|
|
554
|
-
this.connectivityKnowledge[
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
566
|
+
if (!this.connectivityKnowledge[sckanVersion]) {
|
567
|
+
this.connectivityKnowledge[sckanVersion] = knowledge
|
568
|
+
.filter((item) => {
|
569
|
+
return (
|
570
|
+
item.source === sckanVersion &&
|
571
|
+
item.connectivity?.length
|
572
|
+
);
|
573
|
+
})
|
574
|
+
.sort((a, b) => a.label.localeCompare(b.label));
|
575
|
+
}
|
576
|
+
|
577
|
+
if (!this.connectivitiesStore.globalConnectivities[uuid]) {
|
578
|
+
const mapPathsData = await flatmapQueries.queryMapPaths(uuid);
|
579
|
+
const pathsFromMap = mapPathsData ? mapPathsData.paths : {};
|
580
|
+
|
581
|
+
this.connectivityKnowledge[uuid] = knowledge
|
582
|
+
.filter((item) => {
|
583
|
+
return (
|
584
|
+
item.source === sckanVersion &&
|
585
|
+
item.connectivity?.length &&
|
586
|
+
item.id in pathsFromMap
|
587
|
+
);
|
588
|
+
})
|
589
|
+
.sort((a, b) => a.label.localeCompare(b.label));
|
590
|
+
}
|
591
|
+
|
592
|
+
this.connectivitiesStore.updateGlobalConnectivities(this.connectivityKnowledge);
|
593
|
+
|
594
|
+
// EventBus.emit("connectivity-knowledge", { data: this.connectivityKnowledge[uuid] });
|
595
|
+
EventBus.emit('species-layout-connectivity-update');
|
561
596
|
},
|
562
597
|
getSearchedId: function (flatmap, term) {
|
563
598
|
let ids = [];
|
@@ -575,35 +610,39 @@ export default {
|
|
575
610
|
return ids;
|
576
611
|
},
|
577
612
|
connectivityQueryFilter: async function (flatmap, data) {
|
578
|
-
const uuid = flatmap.mapImp.uuid
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
613
|
+
const uuid = flatmap.mapImp.uuid;
|
614
|
+
// to search from sckan or uuid based on the maps showing on split screens
|
615
|
+
const activeConnectivityKey = this.connectivitiesStore.activeConnectivityKey || uuid;
|
616
|
+
// only for those flatmaps that are shown on the split screen
|
617
|
+
if (flatmap.$el.checkVisibility()) {
|
618
|
+
let payload = {
|
619
|
+
state: "default",
|
620
|
+
data: [...this.connectivityKnowledge[activeConnectivityKey]],
|
621
|
+
};
|
622
|
+
if (data) {
|
623
|
+
if (data.type === "query-update") {
|
624
|
+
if (this.query !== data.value) this.target = [];
|
625
|
+
this.query = data.value;
|
626
|
+
} else if (data.type === "filter-update") {
|
627
|
+
this.filter = data.value;
|
628
|
+
}
|
589
629
|
}
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
630
|
+
if (this.query) {
|
631
|
+
payload.state = "processed";
|
632
|
+
let prom1 = [], options = {};
|
633
|
+
const searchTerms = this.query.split(",").map((term) => term.trim());
|
634
|
+
for (let index = 0; index < searchTerms.length; index++) {
|
635
|
+
prom1.push(this.getSearchedId(flatmap, searchTerms[index]));
|
636
|
+
}
|
637
|
+
const nestedIds = await Promise.all(prom1);
|
638
|
+
const ids = [...new Set(nestedIds.flat())];
|
639
|
+
let paths = await flatmap.retrieveConnectedPaths(ids, options);
|
640
|
+
paths = [...ids, ...paths.filter((path) => !ids.includes(path))];
|
641
|
+
let results = this.connectivityKnowledge[activeConnectivityKey].filter((item) => paths.includes(item.id));
|
642
|
+
payload.data = results;
|
597
643
|
}
|
598
|
-
|
599
|
-
const ids = [...new Set(nestedIds.flat())];
|
600
|
-
let paths = await flatmap.retrieveConnectedPaths(ids, options);
|
601
|
-
paths = [...ids, ...paths.filter((path) => !ids.includes(path))];
|
602
|
-
let results = this.connectivityKnowledge[uuid].filter((item) => paths.includes(item.id));
|
603
|
-
results.sort((a, b) => paths.indexOf(a.id) - paths.indexOf(b.id));
|
604
|
-
payload.data = results;
|
644
|
+
EventBus.emit("connectivity-knowledge", payload);
|
605
645
|
}
|
606
|
-
EventBus.emit("connectivity-knowledge", payload);
|
607
646
|
}
|
608
647
|
},
|
609
648
|
data: function () {
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { defineStore } from 'pinia';
|
2
|
+
|
3
|
+
export const useConnectivitiesStore = defineStore('connectivities', {
|
4
|
+
state: () => {
|
5
|
+
return {
|
6
|
+
globalConnectivities: {},
|
7
|
+
activeConnectivityKey: '',
|
8
|
+
}
|
9
|
+
},
|
10
|
+
getters: {
|
11
|
+
|
12
|
+
},
|
13
|
+
actions: {
|
14
|
+
updateGlobalConnectivities(globalConnectivities) {
|
15
|
+
this.globalConnectivities = globalConnectivities;
|
16
|
+
},
|
17
|
+
updateActiveConnectivityKey(activeConnectivityKey) {
|
18
|
+
this.activeConnectivityKey = activeConnectivityKey;
|
19
|
+
},
|
20
|
+
}
|
21
|
+
});
|
package/src/stores/entries.js
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import { defineStore } from 'pinia';
|
2
2
|
import { initialDefaultState } from "../components/scripts/utilities";
|
3
|
+
import { getKnowledgeSourceFromProvenance } from '@abi-software/flatmapvuer/src/services/flatmapKnowledge.js';
|
3
4
|
|
4
5
|
/* eslint-disable no-alert, no-console */
|
5
6
|
|
@@ -35,6 +36,12 @@ export const useEntriesStore = defineStore('entries', {
|
|
35
36
|
const entry = this.entries.find(entry => entry.id === id);
|
36
37
|
entry.viewUrl = viewUrl;
|
37
38
|
},
|
38
|
-
|
39
|
+
updateMapForEntry(entry, prov) {
|
40
|
+
if (entry.id === prov.id) {
|
41
|
+
const sckanVersion = getKnowledgeSourceFromProvenance(prov.prov);
|
42
|
+
entry['uuid'] = prov.prov.uuid;
|
43
|
+
entry['sckanVersion'] = sckanVersion;
|
44
|
+
}
|
45
|
+
},
|
39
46
|
}
|
40
47
|
});
|