@explorer-1/vue 0.2.36 → 0.2.37

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": "@explorer-1/vue",
3
- "version": "0.2.36",
3
+ "version": "0.2.37",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -63,6 +63,8 @@
63
63
  <script lang="ts">
64
64
  // @ts-nocheck
65
65
  import isEqual from 'lodash/isEqual.js'
66
+ import { lookupContentType } from './../../utils/lookupContentType'
67
+
66
68
  export default {
67
69
  name: 'SearchFilterGroup',
68
70
  props: {
@@ -154,67 +156,8 @@ export default {
154
156
  }
155
157
  },
156
158
  prettyFilterNames(key) {
157
- if (key === 'news.News') {
158
- return 'News & Features'
159
- }
160
- if (key === 'home.HomePage') {
161
- return 'Homepage'
162
- }
163
- if (key === 'missions.Mission') {
164
- return 'Missions'
165
- }
166
- if (key === 'events.EventPage') {
167
- return 'Events'
168
- }
169
- if (key === 'image_detail.ImageDetailPage') {
170
- return 'Images'
171
- }
172
- if (key === 'audio_detail.AudioIndexPage') {
173
- return 'Audio Index'
174
- }
175
- if (key === 'audio_detail.AudioDetailPage') {
176
- return 'Audio'
177
- }
178
- if (key === 'infographics.InfographicsDetailPage') {
179
- return 'Infographics'
180
- }
181
- if (key === 'image_detail.CuratedGalleryPage') {
182
- return 'Curated Gallery'
183
- }
184
- if (key === 'topics.TopicPage') {
185
- return 'Topics'
186
- }
187
- if (key === 'asteroid_watch.AsteroidWatchIndexPage') {
188
- return 'Asteroid Watch Index'
189
- }
190
- if (key === 'asteroid_watch.AsteroidWatchContentPage') {
191
- return 'Asteroid Watch'
192
- }
193
- if (key === 'missions.MissionsIndexPage') {
194
- return 'Missions Index'
195
- }
196
- if (key === 'information_pages.ContentPage') {
197
- return 'Information pages'
198
- }
199
- if (key === 'robotics.RobotPage') {
200
- return 'Robots'
201
- }
202
- if (key === 'video_detail.VideoDetailPage') {
203
- return 'Video'
204
- }
205
- if (key === 'podcasts.PodcastPage') {
206
- return 'Podcasts'
207
- }
208
- if (key === 'go_pages.GoHomePage') {
209
- return 'Go Sites'
210
- }
211
- if (key === 'press_kits.PressKitHomePage') {
212
- return 'Press Kits'
213
- }
214
- if (key === 'profiles.ProfilePage') {
215
- return 'People'
216
- }
217
- return key
159
+ const name = lookupContentType(key, 'model', 'label')
160
+ return name ? name : key
218
161
  }
219
162
  }
220
163
  }
@@ -6,9 +6,7 @@
6
6
  size="lg"
7
7
  :data="{
8
8
  page: {
9
- __typename: pageContentType
10
- ? (searchContentTypeToPageType[pageContentType] as string)
11
- : undefined,
9
+ __typename: pageContentType ? getInterfaceFromEskey(pageContentType) : undefined,
12
10
  url,
13
11
  type,
14
12
  label: topic,
@@ -221,7 +219,7 @@ import BaseImage from './../BaseImage/BaseImage.vue'
221
219
  import BaseImagePlaceholder from './../BaseImagePlaceholder/BaseImagePlaceholder.vue'
222
220
  import EventCard from './../EventCard/EventCard.vue'
223
221
  import BlockLinkCard from './../BlockLinkCard/BlockLinkCard.vue'
224
- import { searchContentTypeToPageType } from './../../constants'
222
+ import { lookupContentType } from '../../utils/lookupContentType'
225
223
  import type { HeadingLevel } from './../BaseHeading/BaseHeading.vue'
226
224
 
227
225
  export default defineComponent({
@@ -343,9 +341,11 @@ export default defineComponent({
343
341
  }
344
342
  },
345
343
  computed: {
346
- ...mapStores(useThemeStore),
347
- searchContentTypeToPageType() {
348
- return searchContentTypeToPageType
344
+ ...mapStores(useThemeStore)
345
+ },
346
+ methods: {
347
+ getInterfaceFromEskey(key: string) {
348
+ return lookupContentType(key, 'eskey', 'interface')
349
349
  }
350
350
  }
351
351
  })
@@ -98,7 +98,7 @@ import BaseImagePlaceholder from './../BaseImagePlaceholder/BaseImagePlaceholder
98
98
  import BlockLinkCard from './../BlockLinkCard/BlockLinkCard.vue'
99
99
  import BlockLinkTile from './../BlockLinkTile/BlockLinkTile.vue'
100
100
  import CalendarChip from './../CalendarChip/CalendarChip.vue'
101
- import { searchContentTypeToPageType } from './../../constants'
101
+ import { lookupContentType } from '../../utils/lookupContentType'
102
102
  import type { HeadingLevel } from './../BaseHeading/BaseHeading.vue'
103
103
 
104
104
  export default defineComponent({
@@ -177,12 +177,9 @@ export default defineComponent({
177
177
  },
178
178
  computed: {
179
179
  ...mapStores(useThemeStore),
180
- searchContentTypeToPageType() {
181
- return searchContentTypeToPageType
182
- },
183
180
  typename() {
184
181
  return this.pageContentType
185
- ? (this.searchContentTypeToPageType[this.pageContentType] as string)
182
+ ? lookupContentType(this.pageContentType, 'eskey', 'interface')
186
183
  : undefined
187
184
  }
188
185
  }
package/src/constants.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { DictionaryInterface, PillDictionaryInterface } from './interfaces'
1
+ import type { PillDictionaryInterface } from './interfaces'
2
2
 
3
3
  export const eduMetadataDictionary: PillDictionaryInterface = {
4
4
  EDUEventPage: {
@@ -69,14 +69,184 @@ export const eduMetadataDictionary: PillDictionaryInterface = {
69
69
  }
70
70
  }
71
71
 
72
- // TODO: finish this
73
- export const searchContentTypeToPageType: DictionaryInterface = {
74
- news_news: 'News',
75
- events_eventpage: 'EventPage',
76
- missions_mission: 'Mission',
77
- edu_events_edueventpage: 'EDUEventPage',
78
- edu_resources_educollectionsdetailpage: 'EDUCollectionsDetailPage',
79
- edu_resources_eduexplainerarticlepage: 'EDUExplainerArticlePage',
80
- edu_resources_edulessonpage: 'EDULessonPage',
81
- edu_resources_eduteachablemomentpage: 'EDUTeachableMomentPage'
72
+ interface contentTypeObject {
73
+ model: string
74
+ label: string
82
75
  }
76
+
77
+ export const contentTypes: contentTypeObject[] = [
78
+ {
79
+ model: 'news.News',
80
+ label: 'News & Features'
81
+ },
82
+ {
83
+ model: 'home.HomePage',
84
+ label: 'Homepage'
85
+ },
86
+ {
87
+ model: 'missions.Mission',
88
+ label: 'Missions'
89
+ },
90
+ {
91
+ model: 'events.EventPage',
92
+ label: 'Events'
93
+ },
94
+ {
95
+ model: 'image_detail.ImageDetailPage',
96
+ label: 'Images'
97
+ },
98
+ {
99
+ model: 'audio_detail.AudioIndexPage',
100
+ label: 'Audio Index'
101
+ },
102
+ {
103
+ model: 'audio_detail.AudioDetailPage',
104
+ label: 'Audio'
105
+ },
106
+ {
107
+ model: 'infographics.InfographicsDetailPage',
108
+ label: 'Infographics'
109
+ },
110
+ {
111
+ model: 'image_detail.CuratedGalleryPage',
112
+ label: 'Curated Gallery'
113
+ },
114
+ {
115
+ model: 'topics.TopicPage',
116
+ label: 'Topics'
117
+ },
118
+ {
119
+ model: 'asteroid_watch.AsteroidWatchIndexPage',
120
+ label: 'Asteroid Watch Index'
121
+ },
122
+ {
123
+ model: 'asteroid_watch.AsteroidWatchContentPage',
124
+ label: 'Asteroid Watch'
125
+ },
126
+ {
127
+ model: 'missions.MissionsIndexPage',
128
+ label: 'Missions Index'
129
+ },
130
+ {
131
+ model: 'information_pages.ContentPage',
132
+ label: 'Information pages'
133
+ },
134
+ {
135
+ model: 'robotics.RobotPage',
136
+ label: 'Robots'
137
+ },
138
+ {
139
+ model: 'video_detail.VideoDetailPage',
140
+ label: 'Video'
141
+ },
142
+ {
143
+ model: 'podcasts.PodcastPage',
144
+ label: 'Podcasts'
145
+ },
146
+ {
147
+ model: 'go_pages.GoHomePage',
148
+ label: 'Go Sites'
149
+ },
150
+ {
151
+ model: 'press_kits.PressKitHomePage',
152
+ label: 'Press Kits'
153
+ },
154
+ {
155
+ model: 'profiles.ProfilePage',
156
+ label: 'People'
157
+ },
158
+ // EDU content types
159
+ {
160
+ model: 'edu_home.EDUHomePage',
161
+ label: 'Education Homepage'
162
+ },
163
+ {
164
+ model: 'edu_information_pages.EDUContentPage',
165
+ label: 'Information Pages'
166
+ },
167
+ {
168
+ model: 'edu_news.EDUNewsIndexPage',
169
+ label: 'News Index'
170
+ },
171
+ {
172
+ model: 'edu_events.EDUEventsIndexPage',
173
+ label: 'Events Index'
174
+ },
175
+ {
176
+ model: 'edu_events.EDUEventPage',
177
+ label: 'Events'
178
+ },
179
+ {
180
+ model: 'edu_news.EDUNewsPage',
181
+ label: 'News'
182
+ },
183
+ {
184
+ model: 'edu_resources.EDUExplainerArticlePage',
185
+ label: 'Explainer Articles'
186
+ },
187
+ {
188
+ model: 'edu_resources.EDUResourceLibraryIndexPage',
189
+ label: 'Resource Library Index'
190
+ },
191
+ {
192
+ model: 'edu_resources.EDULessonPage',
193
+ label: 'Lesson Plans'
194
+ },
195
+ {
196
+ model: 'edu_resources.EDUTeachableMomentPage',
197
+ label: 'Teachable Moments'
198
+ },
199
+ {
200
+ model: 'edu_resources.EDUCollectionsDetailPage',
201
+ label: 'Collections'
202
+ },
203
+ {
204
+ model: 'edu_resources.EDUGalleryDetailPage',
205
+ label: 'Galleries'
206
+ },
207
+ {
208
+ model: 'edu_resources.EDUImageDetailPage',
209
+ label: 'Images'
210
+ },
211
+ {
212
+ model: 'edu_resources.EDUInfographicDetailPage',
213
+ label: 'Infographics'
214
+ },
215
+ {
216
+ model: 'edu_resources.EDUDocumentDetailPage',
217
+ label: 'Documents'
218
+ },
219
+ {
220
+ model: 'edu_resources.EDUVideoDetailPage',
221
+ label: 'Videos'
222
+ }
223
+ ]
224
+
225
+ interface contentAliasObject extends contentTypeObject {
226
+ interface?: string
227
+ eskey?: string
228
+ }
229
+ const getContentAliases = (): contentAliasObject[] => {
230
+ const getInterface = (contentType: contentTypeObject) => {
231
+ const model = contentType.model
232
+ return model ? model.split('.').pop() : undefined
233
+ }
234
+ const getEskey = (contentType: contentTypeObject) => {
235
+ const model = contentType.model
236
+ return model ? model.toLowerCase().replace('.', '_') : undefined
237
+ }
238
+
239
+ let entries: contentAliasObject[] = []
240
+
241
+ contentTypes.forEach((contentType) => {
242
+ const entry: contentAliasObject = {
243
+ ...contentType,
244
+ interface: getInterface(contentType),
245
+ eskey: getEskey(contentType)
246
+ }
247
+ entries.push(entry)
248
+ })
249
+ return entries
250
+ }
251
+
252
+ export const contentAliases = getContentAliases()
@@ -0,0 +1,22 @@
1
+ import { contentAliases } from './../constants'
2
+
3
+ export const getInterfaceFromEskey = (eskey: string) => {
4
+ let match = undefined
5
+ contentAliases.forEach((alias) => (alias.eskey === eskey ? (match = alias.interface) : undefined))
6
+ return match
7
+ }
8
+
9
+ export const getEskeyFromInterface = (interfaceName: string) => {
10
+ let match = undefined
11
+ contentAliases.forEach((alias) =>
12
+ alias.interface === interfaceName ? (match = alias.eskey) : undefined
13
+ )
14
+ return match
15
+ }
16
+
17
+ export const lookupContentType = (key: string, source: string, target: string) => {
18
+ let match = undefined
19
+ // @ts-expect-error
20
+ contentAliases.forEach((entry) => (entry[source] === key ? (match = entry[target]) : undefined))
21
+ return match
22
+ }