@abi-software/mapintegratedvuer 1.21.1 → 1.21.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 +23 -5
- package/assets/location-icon.html +33 -1
- package/assets/styleguide.css +18 -18
- package/cypress.config.js +7 -9
- package/dist/{ConnectivityGraph-CZMROk9r.js → ConnectivityGraph-DrSaFEDd.js} +3 -3
- package/dist/{ContentMixin-Vn34n5t2.js → ContentMixin-Xg0PjBqG.js} +2 -2
- package/dist/{DynamicMarkerMixin-BS6t7w_i.js → DynamicMarkerMixin-D5Ruu_hd.js} +1 -1
- package/dist/{Flatmap-BejxA0uz.js → Flatmap-CxN8TbnS.js} +4 -4
- package/dist/{Iframe-BWbhTjCR.js → Iframe-CkgbLfJt.js} +4 -4
- package/dist/{MultiFlatmap-nlmsH-Ib.js → MultiFlatmap-CkejvAJe.js} +4 -4
- package/dist/{Plot-ChbPsDZX.js → Plot-BfwoipSl.js} +2 -2
- package/dist/{Scaffold-C6f7c7Ha.js → Scaffold-DCqsTKpg.js} +4 -4
- package/dist/{Simulation-DcJScRYo.js → Simulation-BOtU3kTT.js} +2 -2
- package/dist/{connectivities-UXTqf7_0.js → connectivities-DyeS8w0c.js} +126 -95
- package/dist/index.html +9 -6
- package/dist/mapintegratedvuer.js +5489 -5578
- package/dist/mapintegratedvuer.umd.cjs +196 -196
- package/dist/style.css +1 -1
- package/eslint.config.js +39 -15
- package/package.json +11 -5
- package/public/index.html +9 -6
- package/src/App.vue +234 -249
- package/src/assets/_variables.scss +12 -10
- package/src/assets/header-icon.scss +8 -9
- package/src/assets/mapicon-species-style.css +10 -8
- package/src/assets/styles.scss +1 -1
- package/src/components/ContentBar.vue +98 -106
- package/src/components/ContentVuer.vue +36 -39
- package/src/components/ContextCard.vue +238 -199
- package/src/components/ContextHelp.vue +22 -26
- package/src/components/CustomSplitter.vue +32 -43
- package/src/components/DatasetHeader.vue +37 -41
- package/src/components/DialogToolbarContent.vue +292 -256
- package/src/components/FlatmapContextCard.vue +52 -57
- package/src/components/MapContent.vue +90 -86
- package/src/components/ResizeSensor.vue +8 -13
- package/src/components/SearchControls.vue +26 -35
- package/src/components/SimulatedData.js +196 -219
- package/src/components/SplitDialog.vue +139 -129
- package/src/components/SplitFlow.vue +421 -237
- package/src/components/index.js +1 -3
- package/src/components/scripts/simulation_data.js +393 -397
- package/src/components/scripts/utilities.js +108 -78
- package/src/components/viewers/CellDLViewer.vue +9 -9
- package/src/components/viewers/ConnectivityGraph.vue +9 -12
- package/src/components/viewers/Flatmap.vue +23 -25
- package/src/components/viewers/Iframe.vue +8 -10
- package/src/components/viewers/MultiFlatmap.vue +59 -69
- package/src/components/viewers/Plot.vue +6 -7
- package/src/components/viewers/Scaffold.vue +73 -63
- package/src/components/viewers/Simulation.vue +10 -15
- package/src/main.js +16 -21
- package/src/mixins/ContentMixin.js +208 -178
- package/src/mixins/DynamicMarkerMixin.js +14 -18
- package/src/mixins/RetrieveContextCardMixin.js +35 -30
- package/src/mixins/S3Bucket.vue +10 -13
- package/src/services/knowledgeMapping.js +53 -53
- package/src/services/tagging.js +4 -4
- package/src/stores/connectivities.js +46 -8
- package/src/stores/entries.js +7 -9
- package/src/stores/index.js +7 -7
- package/src/stores/settings.js +23 -31
- package/src/stores/splitFlow.js +364 -298
- package/vite.bundle-build.js +24 -26
- package/vite.config.js +22 -21
- package/vite.static-build.js +4 -4
- package/vitest.workspace.js +1 -3
- package/vuese-generator.js +47 -55
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
<div class="header">
|
|
3
3
|
<map-svg-sprite-color />
|
|
4
4
|
<search-controls
|
|
5
|
-
@search="$emit('local-search', {term: $event})
|
|
6
|
-
@fetch-suggestions="$emit('fetch-suggestions', {data: $event})
|
|
5
|
+
@search="$emit('local-search', { term: $event })"
|
|
6
|
+
@fetch-suggestions="$emit('fetch-suggestions', { data: $event })"
|
|
7
7
|
:failedSearch="failedSearch"
|
|
8
8
|
/>
|
|
9
9
|
|
|
@@ -19,62 +19,66 @@
|
|
|
19
19
|
:disabled="!mapLoaded"
|
|
20
20
|
placement="bottom-end"
|
|
21
21
|
>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
<el-icon class="el-icon--left" v-if="globalSettings.viewingMode === 'Annotation'">
|
|
30
|
-
<el-icon-edit-pen />
|
|
31
|
-
</el-icon>
|
|
32
|
-
{{ globalSettings.viewingMode }}
|
|
33
|
-
<template v-if="globalSettings.viewingMode === 'Neuron Connection'">
|
|
34
|
-
|
|
35
|
-
<small class="toolbar-dropdown-badge"><em>{{ globalSettings.connectionType }}</em></small>
|
|
36
|
-
</template>
|
|
37
|
-
<el-icon class="el-icon--right">
|
|
38
|
-
<el-icon-arrow-down />
|
|
39
|
-
</el-icon>
|
|
40
|
-
</span>
|
|
41
|
-
<template #dropdown>
|
|
42
|
-
<h4>Viewing Mode:</h4>
|
|
43
|
-
<el-dropdown-menu>
|
|
44
|
-
<el-dropdown-item v-for="(value, key, index) in viewingModes"
|
|
45
|
-
:key="key"
|
|
46
|
-
@click="updateViewingMode($event, key)"
|
|
47
|
-
:class="{'is-selected': globalSettings.viewingMode === key }"
|
|
22
|
+
<span class="el-dropdown-link">
|
|
23
|
+
<el-icon class="el-icon--left" v-if="globalSettings.viewingMode === 'Exploration'">
|
|
24
|
+
<el-icon-compass />
|
|
25
|
+
</el-icon>
|
|
26
|
+
<el-icon
|
|
27
|
+
class="el-icon--left"
|
|
28
|
+
v-if="globalSettings.viewingMode === 'Neuron Connection'"
|
|
48
29
|
>
|
|
49
|
-
<
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
</
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
30
|
+
<el-icon-share />
|
|
31
|
+
</el-icon>
|
|
32
|
+
<el-icon class="el-icon--left" v-if="globalSettings.viewingMode === 'Annotation'">
|
|
33
|
+
<el-icon-edit-pen />
|
|
34
|
+
</el-icon>
|
|
35
|
+
{{ globalSettings.viewingMode }}
|
|
36
|
+
<template v-if="globalSettings.viewingMode === 'Neuron Connection'">
|
|
37
|
+
|
|
38
|
+
<small class="toolbar-dropdown-badge">
|
|
39
|
+
<em>{{ globalSettings.connectionType }}</em>
|
|
40
|
+
</small>
|
|
41
|
+
</template>
|
|
42
|
+
<el-icon class="el-icon--right">
|
|
43
|
+
<el-icon-arrow-down />
|
|
44
|
+
</el-icon>
|
|
45
|
+
</span>
|
|
46
|
+
<template #dropdown>
|
|
47
|
+
<h4>Viewing Mode:</h4>
|
|
48
|
+
<el-dropdown-menu>
|
|
49
|
+
<el-dropdown-item
|
|
50
|
+
v-for="(value, key) in viewingModes"
|
|
51
|
+
:key="key"
|
|
52
|
+
@click="updateViewingMode($event, key)"
|
|
53
|
+
:class="{ 'is-selected': globalSettings.viewingMode === key }"
|
|
54
|
+
>
|
|
55
|
+
<h5>
|
|
56
|
+
<el-icon class="el-icon--left" v-if="key === 'Exploration'">
|
|
57
|
+
<el-icon-compass />
|
|
58
|
+
</el-icon>
|
|
59
|
+
<el-icon class="el-icon--left" v-if="key === 'Neuron Connection'">
|
|
60
|
+
<el-icon-share />
|
|
61
|
+
</el-icon>
|
|
62
|
+
<el-icon class="el-icon--left" v-if="key === 'Annotation'">
|
|
63
|
+
<el-icon-edit-pen />
|
|
64
|
+
</el-icon>
|
|
65
|
+
{{ key }}
|
|
66
|
+
</h5>
|
|
67
|
+
<small class="el-option__description">
|
|
68
|
+
<template v-if="key === 'Annotation'">
|
|
69
|
+
<template v-if="authorisedUser">
|
|
70
|
+
{{ value[1] }}
|
|
71
|
+
</template>
|
|
72
|
+
<template v-else>
|
|
73
|
+
{{ value[0] }}
|
|
74
|
+
</template>
|
|
75
|
+
<template v-if="offlineAnnotationEnabled">(Anonymous annotate)</template>
|
|
65
76
|
</template>
|
|
66
77
|
<template v-else>
|
|
67
|
-
{{ value
|
|
78
|
+
{{ value }}
|
|
68
79
|
</template>
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
</template>
|
|
72
|
-
</template>
|
|
73
|
-
<template v-else>
|
|
74
|
-
{{ value }}
|
|
75
|
-
</template>
|
|
76
|
-
</small>
|
|
77
|
-
<!-- <template v-if="key === 'Exploration'">
|
|
80
|
+
</small>
|
|
81
|
+
<!-- <template v-if="key === 'Exploration'">
|
|
78
82
|
<div class="setting-popover-block" v-if="'displayMarkers' in globalSettings">
|
|
79
83
|
<el-popover
|
|
80
84
|
class="tooltip"
|
|
@@ -97,36 +101,36 @@
|
|
|
97
101
|
</el-popover>
|
|
98
102
|
</div>
|
|
99
103
|
</template> -->
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
104
|
+
<template v-if="key === 'Neuron Connection'">
|
|
105
|
+
<div class="setting-popover-block" v-if="'connectionType' in globalSettings">
|
|
106
|
+
<el-radio-group
|
|
107
|
+
v-model="globalSettings.connectionType"
|
|
108
|
+
@change="updateGlobalSettings('connectionType')"
|
|
109
|
+
>
|
|
110
|
+
<el-radio-button value="Origin" size="small">Origin</el-radio-button>
|
|
111
|
+
<el-radio-button value="Via" size="small">Via</el-radio-button>
|
|
112
|
+
<el-radio-button value="Destination" size="small">
|
|
113
|
+
Destination
|
|
114
|
+
</el-radio-button>
|
|
115
|
+
<el-radio-button value="All" size="small">All</el-radio-button>
|
|
116
|
+
</el-radio-group>
|
|
117
|
+
<div class="el-radio__description">
|
|
118
|
+
<small v-if="globalSettings.connectionType === 'Origin'">
|
|
119
|
+
Neuron populations beginning at a location.
|
|
120
|
+
</small>
|
|
121
|
+
<small v-else-if="globalSettings.connectionType === 'Via'">
|
|
122
|
+
Neuron populations that run through a location.
|
|
123
|
+
</small>
|
|
124
|
+
<small v-else-if="globalSettings.connectionType === 'Destination'">
|
|
125
|
+
Neuron populations terminating at a location.
|
|
126
|
+
</small>
|
|
127
|
+
<small v-else>Neuron populations associated with a location.</small>
|
|
128
|
+
</div>
|
|
124
129
|
</div>
|
|
125
|
-
</
|
|
126
|
-
</
|
|
127
|
-
</el-dropdown-
|
|
128
|
-
</
|
|
129
|
-
</template>
|
|
130
|
+
</template>
|
|
131
|
+
</el-dropdown-item>
|
|
132
|
+
</el-dropdown-menu>
|
|
133
|
+
</template>
|
|
130
134
|
</el-dropdown>
|
|
131
135
|
</div>
|
|
132
136
|
|
|
@@ -136,60 +140,95 @@
|
|
|
136
140
|
ref="viewPopover"
|
|
137
141
|
placement="bottom"
|
|
138
142
|
width="133"
|
|
139
|
-
:teleported=false
|
|
143
|
+
:teleported="false"
|
|
140
144
|
trigger="click"
|
|
141
145
|
popper-class="view-icon-popover"
|
|
142
146
|
virtual-triggering
|
|
143
|
-
|
|
144
|
-
<el-row
|
|
147
|
+
>
|
|
148
|
+
<el-row
|
|
149
|
+
:gutter="20"
|
|
145
150
|
v-for="item in viewIcons"
|
|
146
151
|
:key="item.name"
|
|
147
|
-
:class="[
|
|
148
|
-
{
|
|
149
|
-
|
|
152
|
+
:class="[
|
|
153
|
+
{ active: item.icon == activeView },
|
|
154
|
+
{ disabled: item.min > numberOfEntries },
|
|
155
|
+
'view-icon-row',
|
|
156
|
+
]"
|
|
150
157
|
@click="viewClicked(item.icon)"
|
|
151
158
|
>
|
|
152
159
|
<el-col :span="4">
|
|
153
|
-
<map-svg-icon :icon="item.icon"
|
|
154
|
-
class="view-icon"/>
|
|
160
|
+
<map-svg-icon :icon="item.icon" class="view-icon" />
|
|
155
161
|
</el-col>
|
|
156
162
|
<el-col :offset="2" :span="18" class="view-text">
|
|
157
|
-
{{item.name}}
|
|
163
|
+
{{ item.name }}
|
|
158
164
|
</el-col>
|
|
159
165
|
</el-row>
|
|
160
166
|
</el-popover>
|
|
161
|
-
<el-popover
|
|
162
|
-
|
|
167
|
+
<el-popover
|
|
168
|
+
class="tooltip"
|
|
169
|
+
content="Split screen"
|
|
170
|
+
placement="bottom-end"
|
|
171
|
+
:show-after="helpDelay"
|
|
172
|
+
:teleported="false"
|
|
173
|
+
trigger="hover"
|
|
163
174
|
popper-class="header-popper"
|
|
164
175
|
>
|
|
165
176
|
<template #reference>
|
|
166
|
-
<map-svg-icon
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
'header-icon', 'splitscreen-icon']"
|
|
177
|
+
<map-svg-icon
|
|
178
|
+
:icon="activeView"
|
|
179
|
+
ref="activeViewRef"
|
|
180
|
+
:class="[{ disabled: 1 >= numberOfEntries }, 'header-icon', 'splitscreen-icon']"
|
|
170
181
|
/>
|
|
171
182
|
</template>
|
|
172
183
|
</el-popover>
|
|
173
184
|
|
|
174
|
-
<el-popover
|
|
175
|
-
|
|
185
|
+
<el-popover
|
|
186
|
+
class="tooltip"
|
|
187
|
+
content="Help"
|
|
188
|
+
placement="bottom-end"
|
|
189
|
+
:show-after="helpDelay"
|
|
190
|
+
:teleported="false"
|
|
191
|
+
trigger="hover"
|
|
192
|
+
popper-class="header-popper"
|
|
193
|
+
>
|
|
176
194
|
<template #reference>
|
|
177
|
-
<map-svg-icon icon="tooltips" class="header-icon" @click="startHelp()"/>
|
|
195
|
+
<map-svg-icon icon="tooltips" class="header-icon" @click="startHelp()" />
|
|
178
196
|
</template>
|
|
179
197
|
</el-popover>
|
|
180
|
-
<el-popover
|
|
181
|
-
|
|
182
|
-
|
|
198
|
+
<el-popover
|
|
199
|
+
class="tooltip"
|
|
200
|
+
content="Fullscreen"
|
|
201
|
+
placement="bottom-end"
|
|
202
|
+
:show-after="helpDelay"
|
|
203
|
+
:teleported="false"
|
|
204
|
+
trigger="hover"
|
|
205
|
+
popper-class="header-popper"
|
|
206
|
+
>
|
|
183
207
|
<template #reference>
|
|
184
|
-
<map-svg-icon
|
|
208
|
+
<map-svg-icon
|
|
209
|
+
v-show="!isFullscreen"
|
|
210
|
+
icon="fullScreen"
|
|
211
|
+
class="header-icon"
|
|
212
|
+
@click="onFullscreen"
|
|
213
|
+
/>
|
|
185
214
|
</template>
|
|
186
215
|
</el-popover>
|
|
187
|
-
<el-popover
|
|
188
|
-
|
|
189
|
-
|
|
216
|
+
<el-popover
|
|
217
|
+
class="tooltip"
|
|
218
|
+
content="Exit fullscreen"
|
|
219
|
+
placement="bottom-end"
|
|
220
|
+
:show-after="helpDelay"
|
|
221
|
+
:teleported="false"
|
|
222
|
+
trigger="hover"
|
|
223
|
+
popper-class="header-popper"
|
|
224
|
+
>
|
|
190
225
|
<template #reference>
|
|
191
|
-
<map-svg-icon
|
|
192
|
-
|
|
226
|
+
<map-svg-icon
|
|
227
|
+
v-show="isFullscreen"
|
|
228
|
+
icon="closeFullScreen"
|
|
229
|
+
class="header-icon"
|
|
230
|
+
@click="onFullscreen"
|
|
231
|
+
/>
|
|
193
232
|
</template>
|
|
194
233
|
</el-popover>
|
|
195
234
|
<el-popover
|
|
@@ -198,7 +237,7 @@
|
|
|
198
237
|
:virtual-ref="permalinkRef"
|
|
199
238
|
placement="bottom-end"
|
|
200
239
|
width="400"
|
|
201
|
-
:teleported=false
|
|
240
|
+
:teleported="false"
|
|
202
241
|
trigger="click"
|
|
203
242
|
popper-class="link-popover"
|
|
204
243
|
virtual-triggering
|
|
@@ -216,64 +255,77 @@
|
|
|
216
255
|
</el-button>
|
|
217
256
|
</el-col>
|
|
218
257
|
<el-col :span="10">
|
|
219
|
-
<el-popover
|
|
258
|
+
<el-popover
|
|
259
|
+
class="tooltip"
|
|
220
260
|
placement="bottom-end"
|
|
221
|
-
:show-after="helpDelay"
|
|
261
|
+
:show-after="helpDelay"
|
|
262
|
+
:teleported="false"
|
|
263
|
+
trigger="hover"
|
|
222
264
|
popper-class="header-popper"
|
|
223
265
|
>
|
|
224
266
|
<template #reference>
|
|
225
|
-
<el-checkbox
|
|
226
|
-
v-model="exportAnnotation"
|
|
227
|
-
size="small"
|
|
228
|
-
>
|
|
267
|
+
<el-checkbox v-model="exportAnnotation" size="small">
|
|
229
268
|
Export Annotations
|
|
230
269
|
</el-checkbox>
|
|
231
270
|
</template>
|
|
232
271
|
<template #default>
|
|
233
272
|
Create a permalink with anonymous annotations.
|
|
234
|
-
<br
|
|
273
|
+
<br />
|
|
235
274
|
NOTE: Annotations will only be stored for
|
|
236
|
-
<br
|
|
275
|
+
<br />
|
|
237
276
|
30 days on the server.
|
|
238
277
|
</template>
|
|
239
278
|
</el-popover>
|
|
240
279
|
</el-col>
|
|
241
|
-
|
|
280
|
+
</el-row>
|
|
242
281
|
</template>
|
|
243
282
|
<template v-else>
|
|
244
|
-
<el-row :gutter="20"
|
|
245
|
-
v-loading="loadingLink"
|
|
246
|
-
element-loading-text="Creating link...">
|
|
283
|
+
<el-row :gutter="20" v-loading="loadingLink" element-loading-text="Creating link...">
|
|
247
284
|
<el-col :span="20">
|
|
248
285
|
<el-input
|
|
249
286
|
class="link-input"
|
|
250
287
|
size="small"
|
|
251
288
|
placeholder="Permanant Link Here"
|
|
252
|
-
:readonly=true
|
|
289
|
+
:readonly="true"
|
|
253
290
|
v-model="shareLink"
|
|
254
|
-
ref="linkInput"
|
|
255
|
-
|
|
291
|
+
ref="linkInput"
|
|
292
|
+
></el-input>
|
|
256
293
|
</el-col>
|
|
257
294
|
<el-col :span="4">
|
|
258
|
-
<el-popover
|
|
259
|
-
|
|
260
|
-
|
|
295
|
+
<el-popover
|
|
296
|
+
class="tooltip"
|
|
297
|
+
content="Copy link"
|
|
298
|
+
placement="bottom-end"
|
|
299
|
+
:show-after="helpDelay"
|
|
300
|
+
:teleported="false"
|
|
301
|
+
trigger="hover"
|
|
302
|
+
popper-class="header-popper"
|
|
303
|
+
>
|
|
261
304
|
<template #reference>
|
|
262
|
-
<el-button
|
|
263
|
-
|
|
264
|
-
|
|
305
|
+
<el-button
|
|
306
|
+
class="copy-button"
|
|
307
|
+
:icon="ElIconCopyDocument"
|
|
308
|
+
size="small"
|
|
309
|
+
@click="copyShareLink"
|
|
310
|
+
></el-button>
|
|
265
311
|
</template>
|
|
266
312
|
</el-popover>
|
|
267
313
|
</el-col>
|
|
268
314
|
</el-row>
|
|
269
315
|
</template>
|
|
270
316
|
</el-popover>
|
|
271
|
-
<el-popover
|
|
272
|
-
|
|
317
|
+
<el-popover
|
|
318
|
+
class="tooltip"
|
|
319
|
+
content="Get permalink"
|
|
320
|
+
placement="bottom-end"
|
|
321
|
+
:show-after="helpDelay"
|
|
322
|
+
:teleported="false"
|
|
323
|
+
trigger="hover"
|
|
273
324
|
popper-class="header-popper"
|
|
274
|
-
|
|
325
|
+
>
|
|
275
326
|
<template #reference>
|
|
276
|
-
<map-svg-icon
|
|
327
|
+
<map-svg-icon
|
|
328
|
+
icon="permalink"
|
|
277
329
|
ref="permalinkRef"
|
|
278
330
|
class="header-icon"
|
|
279
331
|
@click="requestShareLink"
|
|
@@ -281,10 +333,17 @@
|
|
|
281
333
|
/>
|
|
282
334
|
</template>
|
|
283
335
|
</el-popover>
|
|
284
|
-
<el-popover
|
|
285
|
-
|
|
336
|
+
<el-popover
|
|
337
|
+
class="tooltip"
|
|
338
|
+
content="Close"
|
|
339
|
+
placement="bottom-end"
|
|
340
|
+
:show-after="helpDelay"
|
|
341
|
+
:teleported="false"
|
|
342
|
+
trigger="hover"
|
|
343
|
+
popper-class="header-popper"
|
|
344
|
+
>
|
|
286
345
|
<template #reference>
|
|
287
|
-
<map-svg-icon icon="close" class="header-icon" @click="close" v-show="showIcons"/>
|
|
346
|
+
<map-svg-icon icon="close" class="header-icon" @click="close" v-show="showIcons" />
|
|
288
347
|
</template>
|
|
289
348
|
</el-popover>
|
|
290
349
|
|
|
@@ -294,12 +353,12 @@
|
|
|
294
353
|
ref="settingPopover"
|
|
295
354
|
placement="bottom"
|
|
296
355
|
width="230"
|
|
297
|
-
:teleported=false
|
|
356
|
+
:teleported="false"
|
|
298
357
|
trigger="click"
|
|
299
358
|
popper-class="setting-popover"
|
|
300
359
|
virtual-triggering
|
|
301
360
|
:disabled="!mapLoaded"
|
|
302
|
-
|
|
361
|
+
>
|
|
303
362
|
<div class="setting-popover-inner">
|
|
304
363
|
<h4>Display options:</h4>
|
|
305
364
|
<!-- <div class="setting-popover-block" v-if="'displayMarkers' in globalSettings">
|
|
@@ -395,7 +454,7 @@
|
|
|
395
454
|
content="Global Settings"
|
|
396
455
|
placement="bottom-end"
|
|
397
456
|
:show-after="helpDelay"
|
|
398
|
-
:teleported=false
|
|
457
|
+
:teleported="false"
|
|
399
458
|
trigger="hover"
|
|
400
459
|
popper-class="header-popper"
|
|
401
460
|
:disabled="!mapLoaded"
|
|
@@ -405,20 +464,17 @@
|
|
|
405
464
|
ref="globalSettingRef"
|
|
406
465
|
:disabled="!mapLoaded"
|
|
407
466
|
class="header-icon"
|
|
408
|
-
:class="{
|
|
467
|
+
:class="{ disabled: !mapLoaded }"
|
|
409
468
|
>
|
|
410
469
|
<el-icon-more-filled />
|
|
411
470
|
</el-icon>
|
|
412
471
|
</template>
|
|
413
472
|
</el-popover>
|
|
414
|
-
|
|
415
473
|
</el-row>
|
|
416
474
|
</div>
|
|
417
475
|
</template>
|
|
418
476
|
|
|
419
|
-
|
|
420
477
|
<script>
|
|
421
|
-
/* eslint-disable no-alert, no-console */
|
|
422
478
|
import { shallowRef } from 'vue';
|
|
423
479
|
import EventBus from './EventBus';
|
|
424
480
|
import { mapStores } from 'pinia';
|
|
@@ -427,42 +483,18 @@ import { useSettingsStore } from '../stores/settings';
|
|
|
427
483
|
import { useSplitFlowStore } from '../stores/splitFlow';
|
|
428
484
|
import { MapSvgIcon, MapSvgSpriteColor } from '@abi-software/svg-sprite';
|
|
429
485
|
import SearchControls from './SearchControls.vue';
|
|
430
|
-
import {
|
|
431
|
-
CopyDocument as ElIconCopyDocument,
|
|
432
|
-
MoreFilled as ElIconMoreFilled,
|
|
433
|
-
} from '@element-plus/icons-vue';
|
|
434
|
-
import {
|
|
435
|
-
ElButton as Button,
|
|
436
|
-
ElCheckbox as Checkbox,
|
|
437
|
-
ElCol as Col,
|
|
438
|
-
ElIcon as Icon,
|
|
439
|
-
ElInput as Input,
|
|
440
|
-
ElPopover as Popover,
|
|
441
|
-
ElRadio as Radio,
|
|
442
|
-
ElRadioGroup as RadioGroup,
|
|
443
|
-
ElRow as Row,
|
|
444
|
-
} from "element-plus";
|
|
486
|
+
import { CopyDocument as ElIconCopyDocument } from '@element-plus/icons-vue';
|
|
445
487
|
import tagging from '../services/tagging';
|
|
446
488
|
|
|
447
489
|
/**
|
|
448
490
|
* Cmponent for the header of differnt vuers.
|
|
449
491
|
*/
|
|
450
492
|
export default {
|
|
451
|
-
name:
|
|
493
|
+
name: 'DialogToolbarContent',
|
|
452
494
|
components: {
|
|
453
|
-
Button,
|
|
454
|
-
Checkbox,
|
|
455
|
-
Col,
|
|
456
|
-
Icon,
|
|
457
|
-
Input,
|
|
458
|
-
Popover,
|
|
459
|
-
Radio,
|
|
460
|
-
RadioGroup,
|
|
461
|
-
Row,
|
|
462
495
|
MapSvgIcon,
|
|
463
496
|
MapSvgSpriteColor,
|
|
464
497
|
SearchControls,
|
|
465
|
-
ElIconCopyDocument,
|
|
466
498
|
},
|
|
467
499
|
props: {
|
|
468
500
|
/**
|
|
@@ -470,15 +502,14 @@ export default {
|
|
|
470
502
|
*/
|
|
471
503
|
numberOfEntries: {
|
|
472
504
|
type: Number,
|
|
473
|
-
default: 0
|
|
505
|
+
default: 0,
|
|
474
506
|
},
|
|
475
507
|
/**
|
|
476
508
|
* Display icons for docking, undocking and etc.
|
|
477
509
|
*/
|
|
478
510
|
showIcons: {
|
|
479
511
|
type: Boolean,
|
|
480
|
-
default: false
|
|
481
|
-
|
|
512
|
+
default: false,
|
|
482
513
|
},
|
|
483
514
|
},
|
|
484
515
|
inject: ['showGlobalSettings'],
|
|
@@ -501,11 +532,11 @@ export default {
|
|
|
501
532
|
},
|
|
502
533
|
},
|
|
503
534
|
watch: {
|
|
504
|
-
shareLink: function() {
|
|
535
|
+
shareLink: function () {
|
|
505
536
|
this.loadingLink = false;
|
|
506
537
|
},
|
|
507
538
|
},
|
|
508
|
-
data: function() {
|
|
539
|
+
data: function () {
|
|
509
540
|
return {
|
|
510
541
|
activeViewRef: undefined,
|
|
511
542
|
displayShareOptions: false,
|
|
@@ -518,19 +549,21 @@ export default {
|
|
|
518
549
|
loadingLink: true,
|
|
519
550
|
permalinkRef: undefined,
|
|
520
551
|
viewingModes: {
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
'
|
|
552
|
+
Exploration:
|
|
553
|
+
'Find relevant research and view detail of neural pathways by selecting a pathway to view its connections and data sources',
|
|
554
|
+
'Neuron Connection':
|
|
555
|
+
'Discover neuron connections by selecting a feature and viewing its associated network connections',
|
|
556
|
+
Annotation: ['View feature annotations', 'Add, comment on and view feature annotations'],
|
|
524
557
|
},
|
|
525
558
|
authorisedUser: false,
|
|
526
559
|
mapLoaded: false,
|
|
527
|
-
}
|
|
560
|
+
};
|
|
528
561
|
},
|
|
529
562
|
methods: {
|
|
530
563
|
loadGlobalSettings: function () {
|
|
531
564
|
this.globalSettings = {
|
|
532
565
|
...this.globalSettings,
|
|
533
|
-
...this.settingsStore.globalSettings
|
|
566
|
+
...this.settingsStore.globalSettings,
|
|
534
567
|
};
|
|
535
568
|
},
|
|
536
569
|
updateViewingMode: function (event, value) {
|
|
@@ -554,7 +587,7 @@ export default {
|
|
|
554
587
|
this.updateGlobalSettings('viewingMode');
|
|
555
588
|
}
|
|
556
589
|
},
|
|
557
|
-
updateGlobalSettings: function(changedKey) {
|
|
590
|
+
updateGlobalSettings: function (changedKey) {
|
|
558
591
|
const updatedSettings = this.settingsStore.getUpdatedGlobalSettingsKey(this.globalSettings);
|
|
559
592
|
this.settingsStore.updateGlobalSettings(this.globalSettings);
|
|
560
593
|
|
|
@@ -566,12 +599,14 @@ export default {
|
|
|
566
599
|
EventBus.emit('modeUpdate', this.globalSettings.interactiveMode);
|
|
567
600
|
}
|
|
568
601
|
// viewing mode update
|
|
569
|
-
if (
|
|
602
|
+
if (
|
|
603
|
+
updatedSettings.includes('viewingMode') ||
|
|
570
604
|
updatedSettings.includes('connectionType') ||
|
|
571
605
|
updatedSettings.includes('flightPathDisplay') ||
|
|
572
606
|
updatedSettings.includes('organsDisplay') ||
|
|
573
607
|
updatedSettings.includes('outlinesDisplay') ||
|
|
574
|
-
updatedSettings.includes('backgroundDisplay')
|
|
608
|
+
updatedSettings.includes('backgroundDisplay')
|
|
609
|
+
) {
|
|
575
610
|
EventBus.emit('globalViewerSettingsUpdate');
|
|
576
611
|
}
|
|
577
612
|
|
|
@@ -583,7 +618,7 @@ export default {
|
|
|
583
618
|
category = this.globalSettings.flightPathDisplay ? '3D' : '2D';
|
|
584
619
|
}
|
|
585
620
|
if (changedKey === 'organsDisplay') {
|
|
586
|
-
category = this.globalSettings.organsDisplay ? 'Color': 'Grayscale';
|
|
621
|
+
category = this.globalSettings.organsDisplay ? 'Color' : 'Grayscale';
|
|
587
622
|
}
|
|
588
623
|
if (changedKey === 'outlinesDisplay') {
|
|
589
624
|
category = this.globalSettings.outlinesDisplay ? 'Show' : 'Hide';
|
|
@@ -592,39 +627,39 @@ export default {
|
|
|
592
627
|
// Prevent viewing mode clicks on active item
|
|
593
628
|
if (updatedSettings.length) {
|
|
594
629
|
tagging.sendEvent({
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
630
|
+
event: 'interaction_event',
|
|
631
|
+
event_name: `portal_maps_settings_${changedKey}`,
|
|
632
|
+
category: category,
|
|
633
|
+
location: 'map_toolbar',
|
|
599
634
|
});
|
|
600
635
|
}
|
|
601
636
|
},
|
|
602
|
-
titleClicked: function(id) {
|
|
603
|
-
this.$emit(
|
|
637
|
+
titleClicked: function (id) {
|
|
638
|
+
this.$emit('titleClicked', id);
|
|
604
639
|
},
|
|
605
|
-
startHelp: function(){
|
|
606
|
-
EventBus.emit(
|
|
640
|
+
startHelp: function () {
|
|
641
|
+
EventBus.emit('startHelp');
|
|
607
642
|
|
|
608
643
|
// GA Tracking
|
|
609
644
|
tagging.sendEvent({
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
645
|
+
event: 'interaction_event',
|
|
646
|
+
event_name: `portal_maps_toolbar_help`,
|
|
647
|
+
category: 'help_mode_start',
|
|
648
|
+
location: 'map_toolbar',
|
|
614
649
|
});
|
|
615
650
|
},
|
|
616
|
-
onFullscreen: function() {
|
|
617
|
-
this.$emit(
|
|
651
|
+
onFullscreen: function () {
|
|
652
|
+
this.$emit('onFullscreen');
|
|
618
653
|
this.isFullscreen = !this.isFullscreen;
|
|
619
654
|
|
|
620
655
|
// GA Tracking
|
|
621
656
|
// only for fullscreen enter event to prevent duplicate events
|
|
622
657
|
if (this.isFullscreen) {
|
|
623
658
|
tagging.sendEvent({
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
659
|
+
event: 'interaction_event',
|
|
660
|
+
event_name: `portal_maps_toolbar_fullscreen`,
|
|
661
|
+
category: this.isFullscreen ? 'enter' : 'exit',
|
|
662
|
+
location: 'map_toolbar',
|
|
628
663
|
});
|
|
629
664
|
}
|
|
630
665
|
},
|
|
@@ -634,54 +669,54 @@ export default {
|
|
|
634
669
|
|
|
635
670
|
// GA Tracking
|
|
636
671
|
tagging.sendEvent({
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
672
|
+
event: 'interaction_event',
|
|
673
|
+
event_name: `portal_maps_toolbar_fullscreen`,
|
|
674
|
+
category: this.isFullscreen ? 'enter' : 'exit',
|
|
675
|
+
location: 'map_toolbar',
|
|
641
676
|
});
|
|
642
677
|
}
|
|
643
678
|
},
|
|
644
|
-
close: function() {
|
|
645
|
-
this.$emit(
|
|
679
|
+
close: function () {
|
|
680
|
+
this.$emit('close');
|
|
646
681
|
},
|
|
647
|
-
copyShareLink: function() {
|
|
682
|
+
copyShareLink: function () {
|
|
648
683
|
if (document) {
|
|
649
|
-
this.$refs.linkInput.$el.querySelector(
|
|
684
|
+
this.$refs.linkInput.$el.querySelector('input').select();
|
|
650
685
|
document.execCommand('copy');
|
|
651
686
|
|
|
652
687
|
// GA Tracking
|
|
653
688
|
tagging.sendEvent({
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
689
|
+
event: 'interaction_event',
|
|
690
|
+
event_name: 'portal_maps_permalink',
|
|
691
|
+
category: 'permalink_copy',
|
|
692
|
+
location: 'map_toolbar',
|
|
658
693
|
});
|
|
659
694
|
}
|
|
660
695
|
},
|
|
661
|
-
setFailedSearch: function(result) {
|
|
696
|
+
setFailedSearch: function (result) {
|
|
662
697
|
this.failedSearch = result;
|
|
663
698
|
},
|
|
664
|
-
requestShareLink: function() {
|
|
699
|
+
requestShareLink: function () {
|
|
665
700
|
if (sessionStorage.getItem('anonymous-annotation')) {
|
|
666
701
|
this.displayShareOptions = true;
|
|
667
702
|
} else {
|
|
668
703
|
this.getShareLink(false);
|
|
669
704
|
}
|
|
670
705
|
},
|
|
671
|
-
getShareLink: function(withAnnotation) {
|
|
706
|
+
getShareLink: function (withAnnotation) {
|
|
672
707
|
this.displayShareOptions = false;
|
|
673
708
|
this.loadingLink = true;
|
|
674
|
-
EventBus.emit(
|
|
709
|
+
EventBus.emit('updateShareLinkRequested', withAnnotation);
|
|
675
710
|
|
|
676
711
|
// GA Tracking
|
|
677
712
|
tagging.sendEvent({
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
713
|
+
event: 'interaction_event',
|
|
714
|
+
event_name: 'portal_maps_permalink',
|
|
715
|
+
category: 'permalink_generate',
|
|
716
|
+
location: 'map_toolbar',
|
|
682
717
|
});
|
|
683
718
|
},
|
|
684
|
-
viewClicked: function(view) {
|
|
719
|
+
viewClicked: function (view) {
|
|
685
720
|
const prevActiveView = this.activeView;
|
|
686
721
|
|
|
687
722
|
this.splitFlowStore.updateActiveView({
|
|
@@ -693,24 +728,24 @@ export default {
|
|
|
693
728
|
if (view !== prevActiveView) {
|
|
694
729
|
const viewCategory = this.viewIcons.find((item) => item.icon === view);
|
|
695
730
|
tagging.sendEvent({
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
731
|
+
event: 'interaction_event',
|
|
732
|
+
event_name: `portal_maps_toolbar_split_view`,
|
|
733
|
+
category: viewCategory?.name || '',
|
|
734
|
+
location: 'map_toolbar',
|
|
700
735
|
});
|
|
701
736
|
}
|
|
702
737
|
|
|
703
738
|
if (this.$refs.viewPopover) {
|
|
704
739
|
this.$refs.viewPopover.hide();
|
|
705
740
|
}
|
|
706
|
-
}
|
|
741
|
+
},
|
|
707
742
|
},
|
|
708
743
|
mounted: function () {
|
|
709
744
|
this.activeViewRef = shallowRef(this.$refs.activeViewRef);
|
|
710
745
|
this.permalinkRef = shallowRef(this.$refs.permalinkRef);
|
|
711
746
|
this.globalSettingRef = shallowRef(this.$refs.globalSettingRef);
|
|
712
747
|
|
|
713
|
-
EventBus.on(
|
|
748
|
+
EventBus.on('mapLoaded', () => {
|
|
714
749
|
this.mapLoaded = true;
|
|
715
750
|
});
|
|
716
751
|
|
|
@@ -726,11 +761,11 @@ export default {
|
|
|
726
761
|
|
|
727
762
|
<!-- Add "scoped" attribute to limit CSS to this component only -->
|
|
728
763
|
<style scoped lang="scss">
|
|
729
|
-
@use
|
|
764
|
+
@use '../assets/header-icon.scss';
|
|
730
765
|
|
|
731
766
|
.icon-group {
|
|
732
767
|
:deep(.el-button--text) {
|
|
733
|
-
color
|
|
768
|
+
color: #606266;
|
|
734
769
|
font-size: 1.5em;
|
|
735
770
|
&:hover {
|
|
736
771
|
color: $app-primary-color;
|
|
@@ -744,11 +779,11 @@ export default {
|
|
|
744
779
|
-o-transform: rotate(90deg);
|
|
745
780
|
-ms-transform: rotate(90deg);
|
|
746
781
|
transform: rotate(90deg);
|
|
747
|
-
padding:10px;
|
|
782
|
+
padding: 10px;
|
|
748
783
|
}
|
|
749
784
|
|
|
750
785
|
.header {
|
|
751
|
-
height:32px;
|
|
786
|
+
height: 32px;
|
|
752
787
|
}
|
|
753
788
|
|
|
754
789
|
.share-options.el-button {
|
|
@@ -764,7 +799,7 @@ export default {
|
|
|
764
799
|
|
|
765
800
|
:deep(.header-popper.el-popover.el-popper) {
|
|
766
801
|
padding: 6px 4px;
|
|
767
|
-
font-size:12px;
|
|
802
|
+
font-size: 12px;
|
|
768
803
|
color: rgb(48, 49, 51);
|
|
769
804
|
background-color: #f3ecf6;
|
|
770
805
|
border: 1px solid $app-primary-color;
|
|
@@ -793,20 +828,21 @@ export default {
|
|
|
793
828
|
}
|
|
794
829
|
|
|
795
830
|
.copy-button {
|
|
796
|
-
color
|
|
797
|
-
background-color
|
|
798
|
-
&:hover,
|
|
799
|
-
|
|
800
|
-
|
|
831
|
+
color: #ffffff;
|
|
832
|
+
background-color: $app-primary-color;
|
|
833
|
+
&:hover,
|
|
834
|
+
&:focus {
|
|
835
|
+
color: #ffffff;
|
|
836
|
+
background-color: $app-primary-color;
|
|
801
837
|
box-shadow: -3px 2px 4px #000000;
|
|
802
838
|
}
|
|
803
839
|
}
|
|
804
840
|
|
|
805
841
|
.link-input {
|
|
806
842
|
:deep(.el-input__inner) {
|
|
807
|
-
color
|
|
843
|
+
color: #303133;
|
|
808
844
|
&:focus {
|
|
809
|
-
border-color
|
|
845
|
+
border-color: $app-primary-color;
|
|
810
846
|
}
|
|
811
847
|
}
|
|
812
848
|
}
|
|
@@ -817,7 +853,7 @@ export default {
|
|
|
817
853
|
border-radius: 4px;
|
|
818
854
|
border: 1px solid rgb(151, 151, 151);
|
|
819
855
|
font-size: 14px;
|
|
820
|
-
margin:8px 0px 0px 0px!important;
|
|
856
|
+
margin: 8px 0px 0px 0px !important;
|
|
821
857
|
cursor: pointer;
|
|
822
858
|
|
|
823
859
|
&.active {
|
|
@@ -828,19 +864,19 @@ export default {
|
|
|
828
864
|
|
|
829
865
|
.view-icon {
|
|
830
866
|
font-size: 1.7em;
|
|
831
|
-
height: 24px!important;
|
|
832
|
-
width: 24px!important;
|
|
867
|
+
height: 24px !important;
|
|
868
|
+
width: 24px !important;
|
|
833
869
|
color: $app-primary-color;
|
|
834
|
-
padding-top:3px;
|
|
870
|
+
padding-top: 3px;
|
|
835
871
|
}
|
|
836
872
|
|
|
837
873
|
.view-text {
|
|
838
|
-
letter-spacing:0px;
|
|
839
|
-
font-size:11px;
|
|
840
|
-
line-height:14px;
|
|
841
|
-
font-family:'Asap', 'Avenir',
|
|
842
|
-
font-weight:550;
|
|
843
|
-
padding-top:7px;
|
|
874
|
+
letter-spacing: 0px;
|
|
875
|
+
font-size: 11px;
|
|
876
|
+
line-height: 14px;
|
|
877
|
+
font-family: 'Asap', 'Avenir', Arial, sans-serif;
|
|
878
|
+
font-weight: 550;
|
|
879
|
+
padding-top: 7px;
|
|
844
880
|
}
|
|
845
881
|
|
|
846
882
|
:deep(.view-icon-popover.el-popper),
|
|
@@ -848,10 +884,10 @@ export default {
|
|
|
848
884
|
border: 1px solid $app-primary-color;
|
|
849
885
|
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.06);
|
|
850
886
|
padding: 4px 8px 12px 8px;
|
|
851
|
-
min-width:unset!important;
|
|
852
|
-
width:unset!important;
|
|
887
|
+
min-width: unset !important;
|
|
888
|
+
width: unset !important;
|
|
853
889
|
background-color: #f3ecf6;
|
|
854
|
-
cursor:default;
|
|
890
|
+
cursor: default;
|
|
855
891
|
.el-popper__arrow {
|
|
856
892
|
&:before {
|
|
857
893
|
border-color: $app-primary-color;
|