@abi-software/map-side-bar 1.3.6 → 1.3.7

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-lock.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abi-software/map-side-bar",
3
- "version": "1.3.2",
3
+ "version": "1.3.6",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abi-software/map-side-bar",
3
- "version": "1.3.6",
3
+ "version": "1.3.7",
4
4
  "main": "./dist/map-side-bar.common.js",
5
5
  "files": [
6
6
  "dist/*",
@@ -1,9 +1,10 @@
1
1
  /* eslint-disable no-alert, no-console */
2
2
  import algoliasearch from 'algoliasearch'
3
+ import markerZoomLevels from './markerZoomLevels';
3
4
 
4
5
  // export `createAlgoliaClient` to use it in page components
5
6
  export class AlgoliaClient {
6
- constructor(algoliaId, algoliaKey, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {
7
+ constructor(algoliaId, algoliaKey, PENNSIEVE_API_LOCATION = 'https://api.pennsieve.io') {
7
8
  this.client = algoliasearch(
8
9
  algoliaId,
9
10
  algoliaKey
@@ -14,9 +15,9 @@ export class AlgoliaClient {
14
15
  this.index = this.client.initIndex(ALGOLIA_INDEX);
15
16
  }
16
17
 
17
- getAlgoliaFacets (propPathMapping) {
18
+ getAlgoliaFacets(propPathMapping) {
18
19
  const map = new Map(Object.entries(propPathMapping));
19
- const facetPropPaths = Array.from(map.keys() );
20
+ const facetPropPaths = Array.from(map.keys());
20
21
  let facetData = []
21
22
  let facetId = 0
22
23
  return this.index
@@ -28,7 +29,7 @@ export class AlgoliaClient {
28
29
  facetPropPaths.map((facetPropPath) => {
29
30
  var children = []
30
31
  const responseFacets = response.facets
31
- if (responseFacets === undefined) {return}
32
+ if (responseFacets === undefined) { return }
32
33
  const responseFacetChildren =
33
34
  responseFacets[facetPropPath] == undefined
34
35
  ? {}
@@ -52,18 +53,18 @@ export class AlgoliaClient {
52
53
  return facetData
53
54
  })
54
55
  }
55
-
56
+
56
57
  // Returns all DOIs of all versions for a given discover dataset
57
- _discoverAllDois (discoverId, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {
58
+ _discoverAllDois(discoverId, PENNSIEVE_API_LOCATION = 'https://api.pennsieve.io') {
58
59
  return new Promise(resolve => {
59
- fetch(`${PENNSIEVE_API_LOCATION}/discover/datasets/${discoverId}/versions`).then(r=>r.json()).then(dataset => {
60
+ fetch(`${PENNSIEVE_API_LOCATION}/discover/datasets/${discoverId}/versions`).then(r => r.json()).then(dataset => {
60
61
  resolve(dataset.map(version => version.doi))
61
62
  })
62
63
  })
63
64
  }
64
-
65
+
65
66
  // Get all dois given a list of discoverIds
66
- _expandDois (discoverIds, PENNSIEVE_API_LOCATION='https://api.pennsieve.io') {
67
+ _expandDois(discoverIds, PENNSIEVE_API_LOCATION = 'https://api.pennsieve.io') {
67
68
  return new Promise(resolve => {
68
69
  let promiseList = discoverIds.map(discoverId => this._discoverAllDois(discoverId, PENNSIEVE_API_LOCATION))
69
70
  Promise.all(promiseList).then((values) => {
@@ -76,7 +77,7 @@ export class AlgoliaClient {
76
77
  let newResults = []
77
78
  let newResult = {}
78
79
  for (let res of results) {
79
- newResult = {...res}
80
+ newResult = { ...res }
80
81
  newResult = {
81
82
  doi: res.item.curie.split(':')[1],
82
83
  name: res.item.name,
@@ -91,83 +92,93 @@ export class AlgoliaClient {
91
92
  return newResults
92
93
  }
93
94
 
94
- _processKeywords(hits){
95
+ _processKeywords(hits) {
95
96
  let foundKeyWords = []
96
97
  let uniqueKeywords = []
97
- hits.forEach(hit=>{
98
- if ( hit.item && hit.item.keywords) {
99
- hit.item.keywords.forEach(keywordObj=>{
98
+ hits.forEach(hit => {
99
+ if (hit.item && hit.item.keywords) {
100
+ hit.item.keywords.forEach(keywordObj => {
100
101
  let keyword = keywordObj.keyword
101
102
  if (keyword.includes('UBERON') || keyword.includes('ilxtr') || keyword.includes('ILX')) {
102
103
  foundKeyWords.push(this._processUberonURL(keyword))
103
- uniqueKeywords = [...new Set(foundKeyWords)]
104
104
  }
105
105
  })
106
106
  }
107
+ if (hit.anatomy && hit.anatomy.organ) {
108
+ hit.anatomy.organ.forEach(anatomy => {
109
+ markerZoomLevels.forEach(marker => {
110
+ if (anatomy.name.toLowerCase() === marker.name.toLowerCase()) {
111
+ foundKeyWords.push(marker.id)
112
+ }
113
+ })
114
+ })
115
+ }
107
116
  })
117
+ uniqueKeywords = [...new Set(foundKeyWords)]
108
118
  return uniqueKeywords
109
119
  }
110
120
 
111
- _processUberonURL(url){
121
+ _processUberonURL(url) {
112
122
  let ub = url.split('/').pop()
113
- return ub.replace('_',':')
123
+ return ub.replace('_', ':')
114
124
  }
115
-
125
+
116
126
  /**
117
127
  * Get Search results
118
128
  * This is using fetch from the Algolia API
119
129
  */
120
- search (filter, query='', hitsperPage=10, page=1) {
130
+ search(filter, query = '', hitsperPage = 10, page = 1) {
121
131
  return new Promise(resolve => {
122
132
  this.index
123
- .search(query, {
124
- facets:['*'],
125
- hitsPerPage: hitsperPage,
126
- page: page-1,
127
- filters: filter,
128
- attributesToHighlight: [],
129
- attributesToRetrieve: [
130
- 'pennsieve.publishDate',
131
- 'pennsieve.updatedAt',
132
- 'item.curie',
133
- 'item.name',
134
- 'item.description',
135
- 'objectID',
136
- ],
137
- })
138
- .then(response => {
139
- let searchData = {
140
- items: this._processResultsForCards(response.hits),
141
- total: response.nbHits,
142
- discoverIds: response.hits.map(r=>r.pennsieve.identifier),
143
- dois: response.hits.map(r=>r.item.curie.split(':')[1])
144
- }
145
- resolve(searchData)
146
- })
133
+ .search(query, {
134
+ facets: ['*'],
135
+ hitsPerPage: hitsperPage,
136
+ page: page - 1,
137
+ filters: filter,
138
+ attributesToHighlight: [],
139
+ attributesToRetrieve: [
140
+ 'pennsieve.publishDate',
141
+ 'pennsieve.updatedAt',
142
+ 'item.curie',
143
+ 'item.name',
144
+ 'item.description',
145
+ 'objectID',
146
+ ],
147
+ })
148
+ .then(response => {
149
+ let searchData = {
150
+ items: this._processResultsForCards(response.hits),
151
+ total: response.nbHits,
152
+ discoverIds: response.hits.map(r => r.pennsieve.identifier),
153
+ dois: response.hits.map(r => r.item.curie.split(':')[1])
154
+ }
155
+ resolve(searchData)
156
+ })
147
157
  })
148
158
  }
149
159
 
150
- /**
151
- * Get key words
152
- * This is used to return all keywords for a given search. Note that you often want the hits per page to be maxed out
153
- */
154
- keywordsInSearch (filter, query='', hitsperPage=999999, page=1) {
155
- return new Promise(resolve => {
156
- this.index
160
+ /**
161
+ * Get key words
162
+ * This is used to return all keywords for a given search. Note that you often want the hits per page to be maxed out
163
+ */
164
+ keywordsInSearch(filter, query = '', hitsperPage = 999999, page = 1) {
165
+ return new Promise(resolve => {
166
+ this.index
157
167
  .search(query, {
158
- facets:['*'],
168
+ facets: ['*'],
159
169
  hitsPerPage: hitsperPage,
160
- page: page-1,
170
+ page: page - 1,
161
171
  filters: filter,
162
172
  attributesToHighlight: [],
163
173
  attributesToRetrieve: [
164
174
  'item.keywords.keyword',
175
+ 'anatomy.organ.name',
165
176
  ],
166
177
  })
167
178
  .then(response => {
168
179
  let keywords = this._processKeywords(response.hits)
169
180
  resolve(keywords)
170
181
  })
171
- })
172
- }
182
+ })
183
+ }
173
184
  }
@@ -0,0 +1,213 @@
1
+ // Set zoom values for micro and mesoscopic
2
+ let microscopic = 7
3
+ let mesoscopic = 5
4
+
5
+ // Set what level each uberon shows at
6
+ export default [
7
+ {
8
+ "id": "UBERON:0000948",
9
+ "name": "heart",
10
+ "showAtZoom": 1,
11
+ },
12
+ {
13
+ "id": "UBERON:0001759",
14
+ "name": "vagus nerve",
15
+ "showAtZoom": 1
16
+ },
17
+ {
18
+ "id": "UBERON:0001155",
19
+ "name": "colon",
20
+ "showAtZoom": 1
21
+ },
22
+ {
23
+ "id": "UBERON:0000945",
24
+ "name": "stomach",
25
+ "showAtZoom": 1
26
+ },
27
+ {
28
+ "id": "UBERON:0001013",
29
+ "name": "adipose tissue",
30
+ "showAtZoom": 1
31
+ },
32
+ {
33
+ "id": "UBERON:0001255",
34
+ "name": "urinary bladder",
35
+ "showAtZoom": 1
36
+ },
37
+ {
38
+ "id": "UBERON:0001348",
39
+ "name": "brown adipose tissue",
40
+ "showAtZoom": 6
41
+ },
42
+ {
43
+ "id": "UBERON:0002008",
44
+ "name": "cardiac nerve plexus",
45
+ "showAtZoom": 1
46
+ },
47
+ {
48
+ "id": "UBERON:0002240",
49
+ "name": "spinal cord",
50
+ "showAtZoom": 1
51
+ },
52
+ {
53
+ "id": "UBERON:0002005",
54
+ "name": "Enteric Nervous System",
55
+ "showAtZoom": 4
56
+ },
57
+ {
58
+ "id": "UBERON:0013702",
59
+ "name": "body proper",
60
+ "showAtZoom": 1
61
+ },
62
+ {
63
+ "id": "UBERON:0002298",
64
+ "name": "brainstem",
65
+ "showAtZoom": 1
66
+ },
67
+ {
68
+ "id": "UBERON:0002439",
69
+ "name": "myenteric nerve plexus",
70
+ "showAtZoom": 6
71
+ },
72
+ {
73
+ "id": "UBERON:0000010",
74
+ "name": "peripheral nervous system",
75
+ "showAtZoom": 6
76
+ },
77
+ {
78
+ "id": "UBERON:0002048",
79
+ "name": "lung",
80
+ "showAtZoom": 1
81
+ },
82
+ {
83
+ "id": "UBERON:0002410",
84
+ "name": "autonomic nervous system",
85
+ "showAtZoom": 6
86
+ },
87
+ {
88
+ "id": "UBERON:0002441",
89
+ "name": "cervicothoracic ganglion",
90
+ "showAtZoom": 6
91
+ },
92
+ {
93
+ "id": "UBERON:0005363",
94
+ "name": "inferior vagus X ganglion",
95
+ "showAtZoom": 6
96
+ },
97
+ {
98
+ "id": "UBERON:0001264",
99
+ "name": "pancreas",
100
+ "showAtZoom": 1
101
+ },
102
+ {
103
+ "id": "UBERON:0001884",
104
+ "name": "phrenic nerve",
105
+ "showAtZoom": 6
106
+ },
107
+ {
108
+ "id": "UBERON:0002059",
109
+ "name": "submandibular ganglion",
110
+ "showAtZoom": 7
111
+ },
112
+ {
113
+ "id": "UBERON:0001347",
114
+ "name": "white adipose tissue",
115
+ "showAtZoom": 6
116
+ },
117
+ {
118
+ "id": "UBERON:0001556",
119
+ "name": "lower urinary tract",
120
+ "showAtZoom": 1
121
+ },
122
+ {
123
+ "id": "UBERON:0002262",
124
+ "name": "celiac ganglion",
125
+ "showAtZoom": 5
126
+ },
127
+ {
128
+ "id": "UBERON:0000955",
129
+ "name": "Brain",
130
+ "showAtZoom": 1
131
+ },
132
+ {
133
+ "id": "UBERON:0000160",
134
+ "name": "intestine",
135
+ "showAtZoom": 1
136
+ },
137
+ {
138
+ "id": "UBERON:0001322",
139
+ "name": "sciatic nerve",
140
+ "showAtZoom": 1
141
+ },
142
+ {
143
+ "id": "UBERON:0001649",
144
+ "name": "glossopharyngeal nerve",
145
+ "showAtZoom": 6
146
+ },
147
+ {
148
+ "id": "UBERON:0002063",
149
+ "name": "sinus venosus",
150
+ "showAtZoom": 6
151
+ },
152
+ {
153
+ "id": "UBERON:0002107",
154
+ "name": "liver",
155
+ "showAtZoom": 1
156
+ },
157
+ {
158
+ "id": "UBERON:0002113",
159
+ "name": "kidney",
160
+ "showAtZoom": 1
161
+ },
162
+ {
163
+ "id": "UBERON:0002481",
164
+ "name": "bone tissue",
165
+ "showAtZoom": 1
166
+ },
167
+ {
168
+ "id": "UBERON:0004907",
169
+ "name": "lower digestive tract",
170
+ "showAtZoom": 4
171
+ },
172
+ {
173
+ "id": "UBERON:0000044",
174
+ "name": "Dorsal root ganglion",
175
+ "showAtZoom": 5
176
+ },
177
+ // New levels from Keeran
178
+ {
179
+ "id": "UBERON:0001736",
180
+ "name": "Submandibular gland",
181
+ "showAtZoom": microscopic
182
+ },
183
+ {
184
+ "id": "UBERON:0001103",
185
+ "name": "Diaphragm",
186
+ "showAtZoom": mesoscopic
187
+ },
188
+ {
189
+ "id": "UBERON:0001160",
190
+ "name": "Fundus of stomach",
191
+ "showAtZoom": mesoscopic
192
+ },
193
+ {
194
+ "id": "UBERON:0000955",
195
+ "name": "Brain",
196
+ "showAtZoom": mesoscopic
197
+ },
198
+ {
199
+ "id": "UBERON:0003708",
200
+ "name": "Carotid sinus",
201
+ "showAtZoom": microscopic
202
+ },
203
+ {
204
+ "id": "UBERON:0002079",
205
+ "name": "Left cardiac atrium",
206
+ "showAtZoom": mesoscopic
207
+ },
208
+ {
209
+ "id": "ILX:0485722",
210
+ "name": "Nodose ganglion",
211
+ "showAtZoom": microscopic
212
+ },
213
+ ]