@abi-software/flatmapvuer 1.4.0 → 1.4.1-beta.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abi-software/flatmapvuer",
3
- "version": "1.4.0",
3
+ "version": "1.4.1-beta.1",
4
4
  "license": "Apache-2.0",
5
5
  "files": [
6
6
  "dist/*",
@@ -43,8 +43,8 @@
43
43
  "./src/*": "./src/*"
44
44
  },
45
45
  "dependencies": {
46
- "@abi-software/flatmap-viewer": "2.9.5",
47
- "@abi-software/map-utilities": "1.1.0",
46
+ "@abi-software/flatmap-viewer": "3.1.4",
47
+ "@abi-software/map-utilities": "^1.1.0-beta.2",
48
48
  "@abi-software/sparc-annotation": "0.3.1",
49
49
  "@abi-software/svg-sprite": "1.0.0",
50
50
  "@element-plus/icons-vue": "^2.3.1",
@@ -59,7 +59,7 @@
59
59
  "@cypress/webpack-dev-server": "^3.6.1",
60
60
  "@vitejs/plugin-vue": "^4.6.2",
61
61
  "@vuese/markdown-render": "^2.11.3",
62
- "@vuese/parser": "^2.10.3",
62
+ "@vuese/parser": "^2.9.1",
63
63
  "auto-changelog": "^2.4.0",
64
64
  "babel-eslint": "^10.1.0",
65
65
  "chokidar": "^3.6.0",
@@ -92,5 +92,8 @@
92
92
  "browserslist": [
93
93
  "> 1%",
94
94
  "last 2 versions"
95
- ]
95
+ ],
96
+ "optionalDependencies": {
97
+ "@rollup/rollup-linux-x64-gnu": "^4.21.1"
98
+ }
96
99
  }
package/src/App.vue CHANGED
@@ -77,6 +77,7 @@
77
77
  :displayMinimap="true"
78
78
  :enableOpenMapUI="true"
79
79
  :flatmapAPI="flatmapAPI"
80
+ :sparcAPI="sparcAPI"
80
81
  :disableUI="disableUI"
81
82
  @open-pubmed-url="onOpenPubmedUrl"
82
83
  @pathway-selection-changed="onPathwaySelectionChanged"
@@ -109,6 +110,9 @@ import './icons/mapicon-species-style.css'
109
110
  import MultiFlatmapVuer from './components/MultiFlatmapVuer.vue'
110
111
  import { HelpModeDialog } from '@abi-software/map-utilities'
111
112
  import '@abi-software/map-utilities/dist/style.css'
113
+ import { mapStores } from 'pinia';
114
+ import { useSettingsStore } from './stores/settings';
115
+ import { getOrganCuries } from './services/scicrunchQueries'
112
116
 
113
117
  export default {
114
118
  name: 'app',
@@ -145,6 +149,7 @@ export default {
145
149
  if (this.consoleOn) console.log(component)
146
150
  let taxon = component.mapImp.describes
147
151
  let id = component.mapImp.addMarker('UBERON:0000948')
152
+
148
153
  window.flatmapImp = component.mapImp
149
154
  component.enablePanZoomEvents(true)
150
155
  //component.showPathwaysDrawer(false);
@@ -261,6 +266,10 @@ export default {
261
266
  iconClass: 'mapicon-icon_cat',
262
267
  displayWarning: true,
263
268
  },
269
+ Vagus: {
270
+ taxo: 'UBERON:1759',
271
+ displayWarning: true,
272
+ },
264
273
  Sample: { taxo: 'NCBITaxon:1', displayWarning: true },
265
274
  'Functional Connectivity': {
266
275
  taxo: 'FunctionalConnectivity',
@@ -281,18 +290,24 @@ export default {
281
290
  useHelpModeDialog: true,
282
291
  multiflatmapRef: null,
283
292
  mapSettings: [],
293
+ sparcAPI: import.meta.env.VITE_SPARC_API,
284
294
  //flatmapAPI: "https://mapcore-demo.org/current/flatmap/v2/"
285
295
  //flatmapAPI: "https://mapcore-demo.org/devel/flatmap/v3/"
286
- //flatmapAPI: "https://mapcoe-demo.org/current/flatmap/v3/",
287
- flatmapAPI: 'https://mapcore-demo.org/devel/flatmap/v4/',
296
+ flatmapAPI: "https://mapcore-demo.org/current/flatmap/v3/",
297
+ //flatmapAPI: 'https://mapcore-demo.org/devel/flatmap/v4/',
298
+ //flatmapAPI: 'https://mapcore-demo.org/curation/flatmap/',
288
299
  //flatmapAPI: "https://mapcore-demo.org/fccb/flatmap/"
289
300
  //flatmapAPI: "https://mapcore-demo.org/staging/flatmap/v1/"
290
301
  // flatmapAPI: "https://mapcore-demo.org/devel/flatmap/v1/",
291
- ElIconSetting: shallowRef(ElIconSetting)
302
+ ElIconSetting: shallowRef(ElIconSetting),
292
303
  }
293
304
  },
294
305
  mounted: function () {
295
306
  this.multiflatmapRef = this.$refs.multi;
307
+ getOrganCuries(this.sparcAPI).then((organCuries) => this.settingsStore.updateOrganCuries(organCuries))
308
+ },
309
+ computed: {
310
+ ...mapStores(useSettingsStore),
296
311
  },
297
312
  watch: {
298
313
  helpMode: function (newVal) {
@@ -245,7 +245,7 @@ Please use `const` to assign meaningful names to them...
245
245
  <div
246
246
  class="pathway-location"
247
247
  :class="{ open: drawerOpen, close: !drawerOpen }"
248
- v-show="!disableUI"
248
+ v-show="!(disableUI || isCentreLine)"
249
249
  >
250
250
  <div
251
251
  class="pathway-container"
@@ -377,7 +377,7 @@ Please use `const` to assign meaningful names to them...
377
377
  key="taxonSelection"
378
378
  />
379
379
  <selections-group
380
- v-if="!isFC && centreLines && centreLines.length > 0"
380
+ v-if="!(isCentreLine || isFC) && centreLines && centreLines.length > 0"
381
381
  title="Nerves"
382
382
  labelKey="label"
383
383
  identifierKey="key"
@@ -426,7 +426,7 @@ Please use `const` to assign meaningful names to them...
426
426
  ref="backgroundPopover"
427
427
  :virtual-ref="backgroundIconRef"
428
428
  placement="top-start"
429
- width="320"
429
+ width="330"
430
430
  :teleported="false"
431
431
  trigger="click"
432
432
  popper-class="background-popper h-auto"
@@ -453,13 +453,14 @@ Please use `const` to assign meaningful names to them...
453
453
  </el-row>
454
454
  </el-row>
455
455
  <template v-if="viewingMode === 'Annotation' && userInformation">
456
+ <el-row class="backgroundSpacer"></el-row>
456
457
  <el-row class="backgroundText">Drawn By*</el-row>
457
458
  <el-row class="backgroundControl">
458
459
  <el-select
459
460
  :teleported="false"
460
461
  v-model="drawnType"
461
462
  placeholder="Select"
462
- class="select-box"
463
+ class="select-box annotationSelector"
463
464
  popper-class="flatmap_dropdown"
464
465
  @change="setDrawnType"
465
466
  >
@@ -475,13 +476,14 @@ Please use `const` to assign meaningful names to them...
475
476
  </el-option>
476
477
  </el-select>
477
478
  </el-row>
479
+ <el-row class="backgroundSpacer"></el-row>
478
480
  <el-row class="backgroundText">Annotated By*</el-row>
479
481
  <el-row class="backgroundControl">
480
482
  <el-select
481
483
  :teleported="false"
482
484
  v-model="annotatedType"
483
485
  placeholder="Select"
484
- class="select-box"
486
+ class="select-box annotationSelector"
485
487
  popper-class="flatmap_dropdown"
486
488
  @change="setAnnotatedType"
487
489
  >
@@ -498,6 +500,41 @@ Please use `const` to assign meaningful names to them...
498
500
  </el-select>
499
501
  </el-row>
500
502
  </template>
503
+ <el-row class="backgroundSpacer" v-if="viewingMode === 'Exploration' && !isFC"></el-row>
504
+ <el-row class="backgroundText" v-if="viewingMode === 'Exploration' && !isFC">Markers display</el-row>
505
+ <el-row class="backgroundControl" v-if="viewingMode === 'Exploration' && !isFC">
506
+ <el-col :span="14">
507
+ <el-radio-group
508
+ v-model="imageRadio"
509
+ class="flatmap-radio"
510
+ @change="setImage"
511
+ >
512
+ <el-radio :label="false">Standard</el-radio>
513
+ <el-radio :label="true">Image</el-radio>
514
+ </el-radio-group>
515
+ </el-col>
516
+ <el-col :span="10" v-if="imageRadio">
517
+ <el-select
518
+ :teleported="false"
519
+ v-model="imageType"
520
+ placeholder="Select"
521
+ class="select-box imageSelector"
522
+ popper-class="flatmap_dropdown"
523
+ @change="setImageType"
524
+ >
525
+ <el-option
526
+ v-for="item in imageTypes"
527
+ :key="item"
528
+ :label="item"
529
+ :value="item"
530
+ >
531
+ <el-row>
532
+ <el-col :span="12">{{ item }}</el-col>
533
+ </el-row>
534
+ </el-option>
535
+ </el-select>
536
+ </el-col>
537
+ </el-row>
501
538
  <el-row class="backgroundSpacer" v-if="displayFlightPathOption"></el-row>
502
539
  <el-row class="backgroundText" v-if="displayFlightPathOption">Flight path display</el-row>
503
540
  <el-row class="backgroundControl" v-if="displayFlightPathOption">
@@ -602,9 +639,10 @@ Please use `const` to assign meaningful names to them...
602
639
  ref="tooltip"
603
640
  class="tooltip"
604
641
  v-show="tooltipDisplay"
642
+ :tooltipType="tooltipType"
643
+ :provenanceEntry="provenanceEntry"
605
644
  :annotationEntry="annotationEntry"
606
- :tooltipEntry="tooltipEntry"
607
- :annotationDisplay="viewingMode === 'Annotation'"
645
+ :imageEntry="imageEntry"
608
646
  @annotation="commitAnnotationEvent"
609
647
  />
610
648
  </div>
@@ -643,10 +681,18 @@ import yellowstar from '../icons/yellowstar'
643
681
  import ResizeSensor from 'css-element-queries/src/ResizeSensor'
644
682
  import * as flatmap from '@abi-software/flatmap-viewer'
645
683
  import { AnnotationService } from '@abi-software/sparc-annotation'
646
- import { mapState } from 'pinia'
647
- import { useMainStore } from '@/store/index'
684
+ import { mapState, mapStores } from 'pinia'
685
+ import { useMainStore } from '@/stores/index'
686
+ import { useSettingsStore } from '@/stores/settings'
648
687
  import { DrawToolbar, Tooltip, TreeControls } from '@abi-software/map-utilities'
649
688
  import '@abi-software/map-utilities/dist/style.css'
689
+ import {
690
+ getBiolucidaThumbnails,
691
+ getSegmentationThumbnails,
692
+ getScaffoldThumbnails,
693
+ getPlotThumbnails
694
+ } from '../services/scicrunchQueries'
695
+ import imageMixin from '../mixins/imageMixin'
650
696
 
651
697
  const centroid = (geometry) => {
652
698
  let featureGeometry = { lng: 0, lat: 0, }
@@ -735,6 +781,7 @@ const createUnfilledTooltipData = function () {
735
781
  */
736
782
  export default {
737
783
  name: 'FlatmapVuer',
784
+ mixins:[imageMixin],
738
785
  components: {
739
786
  Button,
740
787
  Col,
@@ -767,6 +814,68 @@ export default {
767
814
  return { annotator }
768
815
  },
769
816
  methods: {
817
+ /**
818
+ * @vuese
819
+ * Function to add image thumbnails to the map.
820
+ */
821
+ populateImageThumbnails: async function (type) {
822
+ if (this.mapImp) {
823
+ this.closeTooltip()
824
+ this.mapImp.clearMarkers();
825
+ const identifiers = this.mapImp.anatomicalIdentifiers
826
+ const imageThumbnails = this.settingsStore.getImageThumbnails(type, identifiers)
827
+ this.populateMapWithImages(this.mapImp, imageThumbnails, type)
828
+ }
829
+ },
830
+ /**
831
+ * @vuese
832
+ * Function to fetching image thumbnails.
833
+ */
834
+ fetchImageThumbnails: async function (type) {
835
+ let thumbnails = {}
836
+ const organCuries = this.settingsStore.organCuries
837
+ if (type === 'Image') {
838
+ thumbnails = await getBiolucidaThumbnails(this.sparcAPI, organCuries, type)
839
+ } else if (type === 'Segmentation') {
840
+ thumbnails = await getSegmentationThumbnails(this.sparcAPI, organCuries, type)
841
+ } else if (type === 'Scaffold') {
842
+ thumbnails = await getScaffoldThumbnails(this.sparcAPI, organCuries, type)
843
+ } else if (type === 'Plot') {
844
+ thumbnails = await getPlotThumbnails(this.sparcAPI, organCuries, type)
845
+ }
846
+ this.settingsStore.updateImageThumbnails(type, thumbnails)
847
+ },
848
+ /**
849
+ * @vuese
850
+ * Function to switch the type of displayed image.
851
+ * @arg type
852
+ */
853
+ setImageType: async function (type) {
854
+ this.imageType = type
855
+ if (this.mapImp) {
856
+ if (!this.settingsStore.imageTypeCached(type)) {
857
+ this.loading = true
858
+ await this.fetchImageThumbnails(type)
859
+ this.loading = false
860
+ }
861
+ this.populateImageThumbnails(type)
862
+ }
863
+ },
864
+ /**
865
+ * @vuese
866
+ * Function to switch show or hide images.
867
+ * @arg flag
868
+ */
869
+ setImage: function (flag) {
870
+ this.imageRadio = flag
871
+ if (this.mapImp) {
872
+ if (flag) {
873
+ this.setImageType(this.imageType)
874
+ } else {
875
+ this.mapImp.clearMarkers();
876
+ }
877
+ }
878
+ },
770
879
  /**
771
880
  * @vuese
772
881
  * Function to initialise drawing.
@@ -1669,7 +1778,6 @@ export default {
1669
1778
  }
1670
1779
  if (
1671
1780
  data &&
1672
- data.type !== 'marker' &&
1673
1781
  eventType === 'click' &&
1674
1782
  !(this.viewingMode === 'Neuron Connection') &&
1675
1783
  // Disable popup when drawing
@@ -1703,6 +1811,12 @@ export default {
1703
1811
  * @arg data
1704
1812
  */
1705
1813
  checkAndCreatePopups: async function (data) {
1814
+ if (data.feature.type === 'marker' && this.imageRadio) {
1815
+ this.tooltipType = 'image'
1816
+ const imageThumbnails = this.settingsStore.getImageThumbnails(this.imageType, [data.resource[0]])
1817
+ this.imageEntry = markRaw(imageThumbnails[data.resource[0]])
1818
+ this.displayTooltip(data.feature.models)
1819
+ } else {
1706
1820
  // Call flatmap database to get the connection data
1707
1821
  if (this.viewingMode === 'Annotation') {
1708
1822
  if (data.feature) {
@@ -1710,6 +1824,7 @@ export default {
1710
1824
  ...data.feature,
1711
1825
  resourceId: this.serverURL,
1712
1826
  }
1827
+ this.tooltipType = 'annotation'
1713
1828
  if (data.feature.featureId && data.feature.models) {
1714
1829
  this.displayTooltip(data.feature.models)
1715
1830
  } else if (data.feature.feature) {
@@ -1743,9 +1858,11 @@ export default {
1743
1858
  results[1] ||
1744
1859
  (data.feature.hyperlinks && data.feature.hyperlinks.length > 0)
1745
1860
  ) {
1861
+ this.tooltipType = 'provenance'
1746
1862
  this.resourceForTooltip = data.resource[0]
1747
1863
  data.resourceForTooltip = this.resourceForTooltip
1748
1864
  this.createTooltipFromNeuronCuration(data)
1865
+ }
1749
1866
  }
1750
1867
  }
1751
1868
  },
@@ -1784,7 +1901,7 @@ export default {
1784
1901
  * @arg data
1785
1902
  */
1786
1903
  createTooltipFromNeuronCuration: async function (data) {
1787
- this.tooltipEntry = await this.flatmapQueries.createTooltipData(data)
1904
+ this.provenanceEntry = await this.flatmapQueries.createTooltipData(data)
1788
1905
  this.displayTooltip(data.resource[0])
1789
1906
  },
1790
1907
  /**
@@ -1997,9 +2114,12 @@ export default {
1997
2114
  // const featureIds = [feature];
1998
2115
  // this.moveMap(featureIds);
1999
2116
  if (this.featuresAlert) {
2000
- this.tooltipEntry['featuresAlert'] = this.featuresAlert;
2117
+ this.provenanceEntry['featuresAlert'] = this.featuresAlert;
2001
2118
  }
2002
- this.$emit('connectivity-info-open', this.tooltipEntry);
2119
+ this.$emit('connectivity-info-open', this.provenanceEntry);
2120
+ }
2121
+ if (this.imageThumbnailSidebar && this.imageEntry.length && this.viewingMode === 'Exploration') {
2122
+ this.$emit('image-thumbnail-open', this.imageEntry)
2003
2123
  }
2004
2124
  // If UI is not disabled,
2005
2125
  // And connectivityInfoSidebar is not set (default) or set to `false`
@@ -2010,8 +2130,10 @@ export default {
2010
2130
  this.viewingMode === 'Annotation' ||
2011
2131
  (
2012
2132
  this.viewingMode === 'Exploration' &&
2013
- !this.connectivityInfoSidebar &&
2014
- this.hasTooltipEntry()
2133
+ (
2134
+ (!this.connectivityInfoSidebar && this.hasTooltipEntry()) ||
2135
+ (!this.imageThumbnailSidebar && this.imageEntry.length)
2136
+ )
2015
2137
  )
2016
2138
  )
2017
2139
  ) {
@@ -2030,7 +2152,7 @@ export default {
2030
2152
  origins,
2031
2153
  provenanceTaxonomy,
2032
2154
  provenanceTaxonomyLabel
2033
- } = this.tooltipEntry;
2155
+ } = this.provenanceEntry;
2034
2156
 
2035
2157
  return Boolean(
2036
2158
  components?.length ||
@@ -2314,13 +2436,18 @@ export default {
2314
2436
  onFlatmapReady: function () {
2315
2437
  // onFlatmapReady is used for functions that need to run immediately after the flatmap is loaded
2316
2438
  this.sensor = markRaw(new ResizeSensor(this.$refs.display, this.mapResize))
2317
- if (this.mapImp.options && this.mapImp.options.style === 'functional') {
2439
+ console.log(this.mapImp.options)
2440
+ if (this.mapImp.options?.style === 'functional') {
2318
2441
  this.isFC = true
2442
+ } else if (this.mapImp.options?.style === 'centreline') {
2443
+ this.isCentreLine = true
2319
2444
  }
2320
2445
  this.mapImp.setBackgroundOpacity(1)
2321
2446
  this.backgroundChangeCallback(this.currentBackground)
2322
2447
  this.pathways = this.mapImp.pathTypes()
2323
- this.mapImp.enableCentrelines(false)
2448
+ if (!this.isCentreLine) {
2449
+ this.mapImp.enableCentrelines(false)
2450
+ }
2324
2451
  //Disable layers for now
2325
2452
  //this.layers = this.mapImp.getLayers();
2326
2453
  this.processSystems(this.mapImp.getSystems())
@@ -2329,9 +2456,9 @@ export default {
2329
2456
  this.addResizeButtonToMinimap()
2330
2457
  this.loading = false
2331
2458
  this.computePathControlsMaximumHeight()
2332
- this.drawerOpen = true
2459
+ this.drawerOpen = !this.isCentreLine
2333
2460
  this.mapResize()
2334
- this.handleMapClick();
2461
+ this.handleMapClick()
2335
2462
  /**
2336
2463
  * This is ``onFlatmapReady`` event.
2337
2464
  * @arg ``this`` (Component Vue Instance)
@@ -2348,7 +2475,7 @@ export default {
2348
2475
 
2349
2476
  if (_map) {
2350
2477
  _map.on('click', (e) => {
2351
- if (this.tooltipEntry.featureId) {
2478
+ if (this.provenanceEntry.featureId) {
2352
2479
  this.$emit('connectivity-info-close');
2353
2480
  }
2354
2481
  });
@@ -2595,12 +2722,12 @@ export default {
2595
2722
  */
2596
2723
  sparcAPI: {
2597
2724
  type: String,
2598
- default: 'https://api.sparc.science/',
2725
+ default: 'https://api.sparc.science',
2599
2726
  },
2600
2727
  /**
2601
2728
  * Flag to disable UIs on Map
2602
2729
  */
2603
- disableUI: {
2730
+ disableUI: {
2604
2731
  type: Boolean,
2605
2732
  default: false,
2606
2733
  },
@@ -2611,11 +2738,17 @@ export default {
2611
2738
  type: Boolean,
2612
2739
  default: false,
2613
2740
  },
2741
+ /**
2742
+ * The option to show image thumbnail in sidebar
2743
+ */
2744
+ imageThumbnailSidebar: {
2745
+ type: Boolean,
2746
+ default: false,
2747
+ },
2614
2748
  },
2615
2749
  provide() {
2616
2750
  return {
2617
2751
  flatmapAPI: this.flatmapAPI,
2618
- sparcAPI: this.sparcAPI,
2619
2752
  $annotator: this.annotator,
2620
2753
  getFeaturesAlert: () => this.featuresAlert,
2621
2754
  userApiKey: this.userToken,
@@ -2634,6 +2767,8 @@ export default {
2634
2767
  serverURL: undefined,
2635
2768
  layers: [],
2636
2769
  pathways: [],
2770
+ imageEntry: markRaw([]),
2771
+ tooltipType: 'provenance',
2637
2772
  sckanDisplay: [
2638
2773
  {
2639
2774
  label: 'Display Path with SCKAN',
@@ -2672,12 +2807,13 @@ export default {
2672
2807
  helpModeActiveIndex: this.helpModeInitialIndex,
2673
2808
  yellowstar: yellowstar,
2674
2809
  isFC: false,
2810
+ isCentreLine: false,
2675
2811
  inHelp: false,
2676
2812
  currentBackground: 'white',
2677
2813
  availableBackground: ['white', 'lightskyblue', 'black'],
2678
2814
  loading: false,
2679
2815
  flatmapMarker: flatmapMarker,
2680
- tooltipEntry: createUnfilledTooltipData(),
2816
+ provenanceEntry: createUnfilledTooltipData(),
2681
2817
  connectivityTooltipVisible: false,
2682
2818
  drawerOpen: false,
2683
2819
  featuresAlert: undefined,
@@ -2700,6 +2836,9 @@ export default {
2700
2836
  drawnTypes: ['All tools', 'Point', 'LineString', 'Polygon', 'None'],
2701
2837
  annotatedType: 'Anyone',
2702
2838
  annotatedTypes: ['Anyone', 'Me', 'Others'],
2839
+ imageRadio: false,
2840
+ imageType: 'Image',
2841
+ imageTypes: ['Image', 'Segmentation', 'Scaffold', 'Plot'],
2703
2842
  openMapRef: undefined,
2704
2843
  backgroundIconRef: undefined,
2705
2844
  toolbarOptions: [
@@ -2737,11 +2876,12 @@ export default {
2737
2876
  with: true,
2738
2877
  without: true,
2739
2878
  }
2740
- })
2879
+ }),
2741
2880
  }
2742
2881
  },
2743
2882
  computed: {
2744
2883
  ...mapState(useMainStore, ['userToken']),
2884
+ ...mapStores(useSettingsStore),
2745
2885
  isValidDrawnCreated: function () {
2746
2886
  return Object.keys(this.drawnCreatedEvent).length > 0
2747
2887
  },
@@ -3579,7 +3719,12 @@ export default {
3579
3719
  background-color: var(--white);
3580
3720
  font-weight: 500;
3581
3721
  color: rgb(48, 49, 51);
3582
- width: 150px!important;
3722
+ &.annotationSelector {
3723
+ width: 150px!important;
3724
+ }
3725
+ &.imageSelector {
3726
+ width: 125px!important;
3727
+ }
3583
3728
  }
3584
3729
 
3585
3730
  :deep(.flatmap_dropdown) {
@@ -81,6 +81,8 @@
81
81
  style="height: 100%"
82
82
  :flatmapAPI="flatmapAPI"
83
83
  :sparcAPI="sparcAPI"
84
+ :imageThumbnailSidebar="imageThumbnailSidebar"
85
+ @image-thumbnail-open="onImageThumbnailOpen"
84
86
  />
85
87
  </div>
86
88
  </template>
@@ -264,6 +266,9 @@ export default {
264
266
  onConnectivityInfoOpen: function (entryData) {
265
267
  this.$emit('connectivity-info-open', entryData);
266
268
  },
269
+ onImageThumbnailOpen: function (payload) {
270
+ this.$emit('image-thumbnail-open', payload);
271
+ },
267
272
  onSelectionsDataChanged: function (data) {
268
273
  this.$emit('pathway-selection-changed', data);
269
274
  },
@@ -700,7 +705,7 @@ export default {
700
705
  */
701
706
  sparcAPI: {
702
707
  type: String,
703
- default: 'https://api.sparc.science/',
708
+ default: 'https://api.sparc.science',
704
709
  },
705
710
  /**
706
711
  * Flag to disable UIs on Map
@@ -716,6 +721,13 @@ export default {
716
721
  type: Boolean,
717
722
  default: false,
718
723
  },
724
+ /**
725
+ * The option to show image thumbnail in sidebar
726
+ */
727
+ imageThumbnailSidebar: {
728
+ type: Boolean,
729
+ default: false,
730
+ },
719
731
  },
720
732
  data: function () {
721
733
  return {
@@ -0,0 +1 @@
1
+ export default '<img style="height: auto;width: 50px;margin-right: 80px;" src="data:image/png;base64,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" />'