@abi-software/map-side-bar 1.3.19 → 1.3.23

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/map-side-bar",
3
- "version": "1.3.19",
3
+ "version": "1.3.23",
4
4
  "main": "./dist/map-side-bar.common.js",
5
5
  "files": [
6
6
  "dist/*",
package/src/App.vue CHANGED
@@ -114,7 +114,7 @@ export default {
114
114
  this.$refs.sideBar.addFilter({facet: 'Heart', term:'Anatomical structure', facetPropPath: 'anatomy.organ.name', AND: true})
115
115
  },
116
116
  addStomach: function(){
117
- this.$refs.sideBar.addFilter({facet: 'Stomach', term:'Anatomical structure', facetPropPath: 'anatomy.organ.name', AND: true})
117
+ this.$refs.sideBar.addFilter({facet: 'Stomach', term:'Anatomical structure', facetPropPath: 'anatomy.organ.name', AND: false})
118
118
  },
119
119
  addInvalidTerm: function(){
120
120
  this.$refs.sideBar.addFilter({facet: 'Invalid', term:'Anatomical structure', facetPropPath: 'anatomy.organ.name', AND: true})
@@ -34,7 +34,7 @@
34
34
  </div>
35
35
  </span>
36
36
  <div v-bind:key="i+'_4'" v-if="sampleDetails[i]" v-html="sample.description"/>
37
- <a v-bind:key="i+'_5'" v-if="sampleDetails[i]" :href="generateFileLink(sample.path)" target="_blank">View Source</a>
37
+ <a v-bind:key="i+'_5'" v-if="sampleDetails[i] && sample.path" :href="generateFileLink(sample)" target="_blank">View Source</a>
38
38
  <div v-bind:key="i+'_2'" class="padding"/>
39
39
  </template>
40
40
  </template>
@@ -48,7 +48,7 @@
48
48
  <div class="view-description">{{view.description}}<i class="el-icon-warning-outline info"></i> </div>
49
49
  </span>
50
50
  <div v-if="sampleDetails[i]" v-html="samplesMatching(view.id).description" :key="i+'_2'"/>
51
- <a v-bind:key="i+'_5'" v-if="sampleDetails[i]" :href="generateFileLink(samplesMatching(view.id))" target="_blank">View Source</a>
51
+ <a v-bind:key="i+'_5'" v-if="sampleDetails[i] && samplesMatching(view.id).path" :href="generateFileLink(samplesMatching(view.id))" target="_blank">View Source</a>
52
52
  <div :key="i" class="padding"/>
53
53
 
54
54
  <!-- Extra padding if sample details is open -->
@@ -242,7 +242,7 @@ export default {
242
242
  return url.split('https://doi.org/').pop()
243
243
  },
244
244
  generateFileLink(sample){
245
- return `https://sparc.science/file/${sample.discoverId}/${sample.version}?path=${this.processPathForUrl(sample.path)}`
245
+ return `${this.envVars.ROOT_URL}/file/${sample.discoverId}/${sample.version}?path=${this.processPathForUrl(sample.path)}`
246
246
 
247
247
  },
248
248
  openViewFile: function(view){
@@ -216,7 +216,7 @@ export default {
216
216
  createScaffoldItems: function () {
217
217
  if (this.entry.scaffolds) {
218
218
  let index = 0;
219
- this.entry.scaffolds.forEach((scaffold) => {
219
+ this.entry.scaffolds.forEach((scaffold, i) => {
220
220
  const filePath = scaffold.dataset.path;
221
221
  const id = scaffold.identifier;
222
222
  const thumbnail = this.getThumbnailForScaffold(
@@ -236,6 +236,8 @@ export default {
236
236
  });
237
237
  mimetype = thumbnail.mimetype.name;
238
238
  }
239
+ // The line below checks if there is a context file for each scaffold. If there is not, we use the first context card for each scaffold.
240
+ let contextIndex = this.entry.contextualInformation.length == this.entry.scaffolds.length ? i : 0
239
241
  let action = {
240
242
  label: capitalise(this.label),
241
243
  resource: `${this.envVars.API_LOCATION}s3-resource/${this.datasetId}/${this.datasetVersion}/files/${filePath}`,
@@ -245,7 +247,7 @@ export default {
245
247
  apiLocation: this.envVars.API_LOCATION,
246
248
  version: this.datasetVersion,
247
249
  banner: this.datasetThumbnail,
248
- contextCardUrl: this.entry.contextualInformation ? `${this.envVars.API_LOCATION}s3-resource/${this.datasetId}/${this.datasetVersion}/files/${this.entry.contextualInformation}` : undefined,
250
+ contextCardUrl: this.entry.contextualInformation[contextIndex] ? `${this.envVars.API_LOCATION}s3-resource/${this.datasetId}/${this.datasetVersion}/files/${this.entry.contextualInformation[contextIndex]}` : undefined,
249
251
  };
250
252
  this.items['Scaffolds'].push({
251
253
  id,
@@ -447,6 +447,7 @@ export default {
447
447
  this.checkShowAllBoxes();
448
448
  this.setCascader(this.entry.filterFacets);
449
449
  this.makeCascadeLabelsClickable();
450
+ this.$emit("cascaderReady");
450
451
  });
451
452
  },
452
453
  };
@@ -20,6 +20,7 @@
20
20
  @filterResults="filterUpdate"
21
21
  @numberPerPage="numberPerPageUpdate"
22
22
  @loading="filtersLoading"
23
+ @cascaderReady="cascaderReady"
23
24
  ></SearchFilters>
24
25
  <div class="content scrollbar" v-loading="loadingCards" ref="content">
25
26
  <div
@@ -125,10 +126,6 @@ export default {
125
126
  type: Object,
126
127
  default: () => {}
127
128
  },
128
- firstSearch: {
129
- type: String,
130
- default: ""
131
- }
132
129
  },
133
130
  data: function() {
134
131
  return {
@@ -137,7 +134,8 @@ export default {
137
134
  flex: "1 1 auto",
138
135
  "flex-flow": "column",
139
136
  display: "flex"
140
- }
137
+ },
138
+ cascaderIsReady: false,
141
139
  };
142
140
  },
143
141
  computed: {
@@ -163,26 +161,48 @@ export default {
163
161
  openSearch: function(filter, search='') {
164
162
  this.searchInput = search;
165
163
  this.resetPageNavigation();
166
- this.filter = this.$refs.filtersRef.getValidatedFilters(filter);
167
- //Facets provided but cannot find at least one valid
168
- //facet. Tell the users the search is invalid and reset
169
- //facets check boxes.
170
- if ((filter && filter.length > 0) &&
171
- (this.filter && this.filter.length === 0)) {
172
- this.$refs.filtersRef.checkShowAllBoxes();
173
- this.resetSearch();
174
- } else if (this.filter) {
175
- this.searchAlgolia(this.filter, search);
176
- this.$refs.filtersRef.setCascader(this.filter);
164
+ //Proceed normally if cascader is ready
165
+ if (this.cascaderIsReady) {
166
+ this.filter = this.$refs.filtersRef.getValidatedFilters(filter);
167
+ //Facets provided but cannot find at least one valid
168
+ //facet. Tell the users the search is invalid and reset
169
+ //facets check boxes.
170
+ if ((filter && filter.length > 0) &&
171
+ (this.filter && this.filter.length === 0)) {
172
+ this.$refs.filtersRef.checkShowAllBoxes();
173
+ this.resetSearch();
174
+ } else if (this.filter) {
175
+ this.searchAlgolia(this.filter, search);
176
+ this.$refs.filtersRef.setCascader(this.filter);
177
+ }
178
+ } else {
179
+ //cascader is not ready, perform search if no filter is set,
180
+ //otherwise waith for cascader to be ready
181
+ this.filter = filter;
182
+ if (!filter || filter.length == 0) {
183
+ this.searchAlgolia(this.filter, search);
184
+ }
177
185
  }
178
186
  },
179
187
  addFilter: function(filter) {
180
- this.resetPageNavigation();
181
- if (filter) {
182
- if (this.$refs.filtersRef.addFilter(filter))
183
- this.$refs.filtersRef.initiateSearch();
188
+ if (this.cascaderIsReady) {
189
+ this.resetPageNavigation();
190
+ if (filter) {
191
+ if (this.$refs.filtersRef.addFilter(filter))
192
+ this.$refs.filtersRef.initiateSearch();
193
+ }
194
+ } else {
195
+ if (Array.isArray(this.filter)) {
196
+ this.filter.push(filter);
197
+ } else {
198
+ this.filter = [filter];
199
+ }
184
200
  }
185
201
  },
202
+ cascaderReady: function() {
203
+ this.cascaderIsReady = true;
204
+ this.openSearch(this.filter, this.searchInput);
205
+ },
186
206
  clearSearchClicked: function() {
187
207
  this.searchInput = "";
188
208
  this.resetPageNavigation();
@@ -360,13 +380,7 @@ export default {
360
380
  // initialise algolia
361
381
  this.algoliaClient = new AlgoliaClient(this.envVars.ALGOLIA_ID, this.envVars.ALGOLIA_KEY, this.envVars.PENNSIEVE_API_LOCATION);
362
382
  this.algoliaClient.initIndex(this.envVars.ALGOLIA_INDEX);
363
-
364
- // temporarily disable flatmap search since there are no datasets
365
- if (this.firstSearch === "Flatmap" || this.firstSearch === "flatmap") {
366
- this.openSearch(undefined, '')
367
- } else {
368
- this.openSearch(undefined, '');
369
- }
383
+ this.openSearch(undefined, '');
370
384
  },
371
385
  created: function() {
372
386
  //Create non-reactive local variables