@explorer-1/vue 0.2.36 → 0.2.38

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.38",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -63,6 +63,10 @@
63
63
  <script lang="ts">
64
64
  // @ts-nocheck
65
65
  import isEqual from 'lodash/isEqual.js'
66
+ import { mapStores } from 'pinia'
67
+ import { useThemeStore } from '../../store/theme'
68
+ import { lookupContentType } from './../../utils/lookupContentType'
69
+
66
70
  export default {
67
71
  name: 'SearchFilterGroup',
68
72
  props: {
@@ -97,6 +101,7 @@ export default {
97
101
  }
98
102
  },
99
103
  computed: {
104
+ ...mapStores(useThemeStore),
100
105
  // to sync both ways parent <--> child
101
106
  // ensures accurate filter visual state when using URL query strings
102
107
  filterByHandler: {
@@ -154,67 +159,11 @@ export default {
154
159
  }
155
160
  },
156
161
  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'
162
+ let name = lookupContentType(key, 'model', 'label')
163
+ if (this.themeStore.isEdu && name) {
164
+ name = name.replace('EDU ', '')
216
165
  }
217
- return key
166
+ return name ? name : key
218
167
  }
219
168
  }
220
169
  }
@@ -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,188 @@ 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: 'EDU Information Pages'
166
+ },
167
+ {
168
+ model: 'edu_news.EDUNewsIndexPage',
169
+ label: 'EDU News Index'
170
+ },
171
+ {
172
+ model: 'edu_events.EDUEventsIndexPage',
173
+ label: 'EDU Events Index'
174
+ },
175
+ {
176
+ model: 'edu_events.EDUEventPage',
177
+ label: 'EDU Events'
178
+ },
179
+ {
180
+ model: 'edu_news.EDUNewsPage',
181
+ label: 'EDU News'
182
+ },
183
+ {
184
+ model: 'edu_resources.EDUExplainerArticlePage',
185
+ label: 'EDU Explainer Articles'
186
+ },
187
+ {
188
+ model: 'edu_resources.EDUResourceLibraryIndexPage',
189
+ label: 'EDU Resource Library Index'
190
+ },
191
+ {
192
+ model: 'edu_resources.EDULessonPage',
193
+ label: 'EDU Lesson Plans'
194
+ },
195
+ {
196
+ model: 'edu_resources.EDUStudentProjectPage',
197
+ label: 'EDU Student Projects'
198
+ },
199
+ {
200
+ model: 'edu_resources.EDUTeachableMomentPage',
201
+ label: 'EDU Teachable Moments'
202
+ },
203
+ {
204
+ model: 'edu_resources.EDUCollectionsDetailPage',
205
+ label: 'EDU Collections'
206
+ },
207
+ {
208
+ model: 'edu_resources.EDUGalleryDetailPage',
209
+ label: 'EDU Galleries'
210
+ },
211
+ {
212
+ model: 'edu_resources.EDUImageDetailPage',
213
+ label: 'EDU Images'
214
+ },
215
+ {
216
+ model: 'edu_resources.EDUInfographicDetailPage',
217
+ label: 'EDU Infographics'
218
+ },
219
+ {
220
+ model: 'edu_resources.EDUDocumentDetailPage',
221
+ label: 'EDU Documents'
222
+ },
223
+ {
224
+ model: 'edu_resources.EDUVideoDetailPage',
225
+ label: 'EDU Videos'
226
+ }
227
+ ]
228
+
229
+ interface contentAliasObject extends contentTypeObject {
230
+ interface?: string
231
+ eskey?: string
232
+ }
233
+ const getContentAliases = (): contentAliasObject[] => {
234
+ const getInterface = (contentType: contentTypeObject) => {
235
+ const model = contentType.model
236
+ return model ? model.split('.').pop() : undefined
237
+ }
238
+ const getEskey = (contentType: contentTypeObject) => {
239
+ const model = contentType.model
240
+ return model ? model.toLowerCase().replace('.', '_') : undefined
241
+ }
242
+
243
+ let entries: contentAliasObject[] = []
244
+
245
+ contentTypes.forEach((contentType) => {
246
+ const entry: contentAliasObject = {
247
+ ...contentType,
248
+ interface: getInterface(contentType),
249
+ eskey: getEskey(contentType)
250
+ }
251
+ entries.push(entry)
252
+ })
253
+ return entries
254
+ }
255
+
256
+ 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
+ }