feat(frontend): Skelet voor de implementatie van views & services voor leerpaden aangemaakt.
This commit is contained in:
		
							parent
							
								
									30ec73a88d
								
							
						
					
					
						commit
						8b0fc4263f
					
				
					 7 changed files with 290 additions and 7 deletions
				
			
		|  | @ -1,7 +0,0 @@ | ||||||
| <script setup lang="ts"></script> |  | ||||||
| 
 |  | ||||||
| <template> |  | ||||||
|     <main></main> |  | ||||||
| </template> |  | ||||||
| 
 |  | ||||||
| <style scoped></style> |  | ||||||
|  | @ -13,6 +13,7 @@ import UserDiscussions from "@/views/discussions/UserDiscussions.vue"; | ||||||
| import UserClasses from "@/views/classes/UserClasses.vue"; | import UserClasses from "@/views/classes/UserClasses.vue"; | ||||||
| import UserAssignments from "@/views/classes/UserAssignments.vue"; | import UserAssignments from "@/views/classes/UserAssignments.vue"; | ||||||
| import authState from "@/services/auth/auth-service.ts"; | import authState from "@/services/auth/auth-service.ts"; | ||||||
|  | import LearningPathPage from "@/views/learning-paths/LearningPathPage.vue"; | ||||||
| 
 | 
 | ||||||
| const router = createRouter({ | const router = createRouter({ | ||||||
|     history: createWebHistory(import.meta.env.BASE_URL), |     history: createWebHistory(import.meta.env.BASE_URL), | ||||||
|  | @ -99,6 +100,12 @@ const router = createRouter({ | ||||||
|             component: SingleDiscussion, |             component: SingleDiscussion, | ||||||
|             meta: { requiresAuth: true }, |             meta: { requiresAuth: true }, | ||||||
|         }, |         }, | ||||||
|  |         { | ||||||
|  |             path: "/learningPath/:hruid/:language", | ||||||
|  |             name: "LearningPath", | ||||||
|  |             component: LearningPathPage, | ||||||
|  |             meta: { requiresAuth: false } | ||||||
|  |         }, | ||||||
|         { |         { | ||||||
|             path: "/:catchAll(.*)", |             path: "/:catchAll(.*)", | ||||||
|             name: "NotFound", |             name: "NotFound", | ||||||
|  |  | ||||||
							
								
								
									
										186
									
								
								frontend/src/services/learning-paths/language.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								frontend/src/services/learning-paths/language.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,186 @@ | ||||||
|  | export enum Language { | ||||||
|  |     Afar = 'aa', | ||||||
|  |     Abkhazian = 'ab', | ||||||
|  |     Afrikaans = 'af', | ||||||
|  |     Akan = 'ak', | ||||||
|  |     Albanian = 'sq', | ||||||
|  |     Amharic = 'am', | ||||||
|  |     Arabic = 'ar', | ||||||
|  |     Aragonese = 'an', | ||||||
|  |     Armenian = 'hy', | ||||||
|  |     Assamese = 'as', | ||||||
|  |     Avaric = 'av', | ||||||
|  |     Avestan = 'ae', | ||||||
|  |     Aymara = 'ay', | ||||||
|  |     Azerbaijani = 'az', | ||||||
|  |     Bashkir = 'ba', | ||||||
|  |     Bambara = 'bm', | ||||||
|  |     Basque = 'eu', | ||||||
|  |     Belarusian = 'be', | ||||||
|  |     Bengali = 'bn', | ||||||
|  |     Bihari = 'bh', | ||||||
|  |     Bislama = 'bi', | ||||||
|  |     Bosnian = 'bs', | ||||||
|  |     Breton = 'br', | ||||||
|  |     Bulgarian = 'bg', | ||||||
|  |     Burmese = 'my', | ||||||
|  |     Catalan = 'ca', | ||||||
|  |     Chamorro = 'ch', | ||||||
|  |     Chechen = 'ce', | ||||||
|  |     Chinese = 'zh', | ||||||
|  |     ChurchSlavic = 'cu', | ||||||
|  |     Chuvash = 'cv', | ||||||
|  |     Cornish = 'kw', | ||||||
|  |     Corsican = 'co', | ||||||
|  |     Cree = 'cr', | ||||||
|  |     Czech = 'cs', | ||||||
|  |     Danish = 'da', | ||||||
|  |     Divehi = 'dv', | ||||||
|  |     Dutch = 'nl', | ||||||
|  |     Dzongkha = 'dz', | ||||||
|  |     English = 'en', | ||||||
|  |     Esperanto = 'eo', | ||||||
|  |     Estonian = 'et', | ||||||
|  |     Ewe = 'ee', | ||||||
|  |     Faroese = 'fo', | ||||||
|  |     Fijian = 'fj', | ||||||
|  |     Finnish = 'fi', | ||||||
|  |     French = 'fr', | ||||||
|  |     Frisian = 'fy', | ||||||
|  |     Fulah = 'ff', | ||||||
|  |     Georgian = 'ka', | ||||||
|  |     German = 'de', | ||||||
|  |     Gaelic = 'gd', | ||||||
|  |     Irish = 'ga', | ||||||
|  |     Galician = 'gl', | ||||||
|  |     Manx = 'gv', | ||||||
|  |     Greek = 'el', | ||||||
|  |     Guarani = 'gn', | ||||||
|  |     Gujarati = 'gu', | ||||||
|  |     Haitian = 'ht', | ||||||
|  |     Hausa = 'ha', | ||||||
|  |     Hebrew = 'he', | ||||||
|  |     Herero = 'hz', | ||||||
|  |     Hindi = 'hi', | ||||||
|  |     HiriMotu = 'ho', | ||||||
|  |     Croatian = 'hr', | ||||||
|  |     Hungarian = 'hu', | ||||||
|  |     Igbo = 'ig', | ||||||
|  |     Icelandic = 'is', | ||||||
|  |     Ido = 'io', | ||||||
|  |     SichuanYi = 'ii', | ||||||
|  |     Inuktitut = 'iu', | ||||||
|  |     Interlingue = 'ie', | ||||||
|  |     Interlingua = 'ia', | ||||||
|  |     Indonesian = 'id', | ||||||
|  |     Inupiaq = 'ik', | ||||||
|  |     Italian = 'it', | ||||||
|  |     Javanese = 'jv', | ||||||
|  |     Japanese = 'ja', | ||||||
|  |     Kalaallisut = 'kl', | ||||||
|  |     Kannada = 'kn', | ||||||
|  |     Kashmiri = 'ks', | ||||||
|  |     Kanuri = 'kr', | ||||||
|  |     Kazakh = 'kk', | ||||||
|  |     Khmer = 'km', | ||||||
|  |     Kikuyu = 'ki', | ||||||
|  |     Kinyarwanda = 'rw', | ||||||
|  |     Kirghiz = 'ky', | ||||||
|  |     Komi = 'kv', | ||||||
|  |     Kongo = 'kg', | ||||||
|  |     Korean = 'ko', | ||||||
|  |     Kuanyama = 'kj', | ||||||
|  |     Kurdish = 'ku', | ||||||
|  |     Lao = 'lo', | ||||||
|  |     Latin = 'la', | ||||||
|  |     Latvian = 'lv', | ||||||
|  |     Limburgan = 'li', | ||||||
|  |     Lingala = 'ln', | ||||||
|  |     Lithuanian = 'lt', | ||||||
|  |     Luxembourgish = 'lb', | ||||||
|  |     LubaKatanga = 'lu', | ||||||
|  |     Ganda = 'lg', | ||||||
|  |     Macedonian = 'mk', | ||||||
|  |     Marshallese = 'mh', | ||||||
|  |     Malayalam = 'ml', | ||||||
|  |     Maori = 'mi', | ||||||
|  |     Marathi = 'mr', | ||||||
|  |     Malay = 'ms', | ||||||
|  |     Malagasy = 'mg', | ||||||
|  |     Maltese = 'mt', | ||||||
|  |     Mongolian = 'mn', | ||||||
|  |     Nauru = 'na', | ||||||
|  |     Navajo = 'nv', | ||||||
|  |     SouthNdebele = 'nr', | ||||||
|  |     NorthNdebele = 'nd', | ||||||
|  |     Ndonga = 'ng', | ||||||
|  |     Nepali = 'ne', | ||||||
|  |     NorwegianNynorsk = 'nn', | ||||||
|  |     NorwegianBokmal = 'nb', | ||||||
|  |     Norwegian = 'no', | ||||||
|  |     Chichewa = 'ny', | ||||||
|  |     Occitan = 'oc', | ||||||
|  |     Ojibwa = 'oj', | ||||||
|  |     Oriya = 'or', | ||||||
|  |     Oromo = 'om', | ||||||
|  |     Ossetian = 'os', | ||||||
|  |     Punjabi = 'pa', | ||||||
|  |     Persian = 'fa', | ||||||
|  |     Pali = 'pi', | ||||||
|  |     Polish = 'pl', | ||||||
|  |     Portuguese = 'pt', | ||||||
|  |     Pashto = 'ps', | ||||||
|  |     Quechua = 'qu', | ||||||
|  |     Romansh = 'rm', | ||||||
|  |     Romanian = 'ro', | ||||||
|  |     Rundi = 'rn', | ||||||
|  |     Russian = 'ru', | ||||||
|  |     Sango = 'sg', | ||||||
|  |     Sanskrit = 'sa', | ||||||
|  |     Sinhala = 'si', | ||||||
|  |     Slovak = 'sk', | ||||||
|  |     Slovenian = 'sl', | ||||||
|  |     NorthernSami = 'se', | ||||||
|  |     Samoan = 'sm', | ||||||
|  |     Shona = 'sn', | ||||||
|  |     Sindhi = 'sd', | ||||||
|  |     Somali = 'so', | ||||||
|  |     Sotho = 'st', | ||||||
|  |     Spanish = 'es', | ||||||
|  |     Sardinian = 'sc', | ||||||
|  |     Serbian = 'sr', | ||||||
|  |     Swati = 'ss', | ||||||
|  |     Sundanese = 'su', | ||||||
|  |     Swahili = 'sw', | ||||||
|  |     Swedish = 'sv', | ||||||
|  |     Tahitian = 'ty', | ||||||
|  |     Tamil = 'ta', | ||||||
|  |     Tatar = 'tt', | ||||||
|  |     Telugu = 'te', | ||||||
|  |     Tajik = 'tg', | ||||||
|  |     Tagalog = 'tl', | ||||||
|  |     Thai = 'th', | ||||||
|  |     Tibetan = 'bo', | ||||||
|  |     Tigrinya = 'ti', | ||||||
|  |     Tonga = 'to', | ||||||
|  |     Tswana = 'tn', | ||||||
|  |     Tsonga = 'ts', | ||||||
|  |     Turkmen = 'tk', | ||||||
|  |     Turkish = 'tr', | ||||||
|  |     Twi = 'tw', | ||||||
|  |     Uighur = 'ug', | ||||||
|  |     Ukrainian = 'uk', | ||||||
|  |     Urdu = 'ur', | ||||||
|  |     Uzbek = 'uz', | ||||||
|  |     Venda = 've', | ||||||
|  |     Vietnamese = 'vi', | ||||||
|  |     Volapuk = 'vo', | ||||||
|  |     Welsh = 'cy', | ||||||
|  |     Walloon = 'wa', | ||||||
|  |     Wolof = 'wo', | ||||||
|  |     Xhosa = 'xh', | ||||||
|  |     Yiddish = 'yi', | ||||||
|  |     Yoruba = 'yo', | ||||||
|  |     Zhuang = 'za', | ||||||
|  |     Zulu = 'zu', | ||||||
|  | } | ||||||
							
								
								
									
										37
									
								
								frontend/src/services/learning-paths/learning-object.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								frontend/src/services/learning-paths/learning-object.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,37 @@ | ||||||
|  | import type {Language} from "@/services/learning-paths/language.ts"; | ||||||
|  | 
 | ||||||
|  | export interface LearningPathIdentifier { | ||||||
|  |     hruid: string; | ||||||
|  |     language: Language; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export interface EducationalGoal { | ||||||
|  |     source: string; | ||||||
|  |     id: string; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export interface ReturnValue { | ||||||
|  |     callback_url: string; | ||||||
|  |     callback_schema: Record<string, any>; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export interface LearningObjectMetadata { | ||||||
|  |     _id: string; | ||||||
|  |     uuid: string; | ||||||
|  |     hruid: string; | ||||||
|  |     version: number; | ||||||
|  |     language: Language; | ||||||
|  |     title: string; | ||||||
|  |     description: string; | ||||||
|  |     difficulty: number; | ||||||
|  |     estimated_time: number; | ||||||
|  |     available: boolean; | ||||||
|  |     teacher_exclusive: boolean; | ||||||
|  |     educational_goals: EducationalGoal[]; | ||||||
|  |     keywords: string[]; | ||||||
|  |     target_ages: number[]; | ||||||
|  |     content_type: string; // Markdown, image, etc.
 | ||||||
|  |     content_location?: string; | ||||||
|  |     skos_concepts?: string[]; | ||||||
|  |     return_value?: ReturnValue; | ||||||
|  | } | ||||||
							
								
								
									
										40
									
								
								frontend/src/services/learning-paths/learning-path.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/src/services/learning-paths/learning-path.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,40 @@ | ||||||
|  | import type {Language} from "@/services/learning-paths/language.ts"; | ||||||
|  | 
 | ||||||
|  | export interface LearningPath { | ||||||
|  |     language: string; | ||||||
|  |     hruid: string; | ||||||
|  |     title: string; | ||||||
|  |     description: string; | ||||||
|  |     image?: string; // Image might be missing, so it's optional
 | ||||||
|  |     num_nodes: number; | ||||||
|  |     num_nodes_left: number; | ||||||
|  |     nodes: LearningObjectNode[]; | ||||||
|  |     keywords: string; | ||||||
|  |     target_ages: number[]; | ||||||
|  |     min_age: number; | ||||||
|  |     max_age: number; | ||||||
|  |     __order: number; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export interface LearningObjectNode { | ||||||
|  |     _id: string; | ||||||
|  |     learningobject_hruid: string; | ||||||
|  |     version: number; | ||||||
|  |     language: Language; | ||||||
|  |     start_node?: boolean; | ||||||
|  |     transitions: Transition[]; | ||||||
|  |     created_at: string; | ||||||
|  |     updatedAt: string; | ||||||
|  |     done?: boolean; // True if a submission exists for this node by the user for whom the learning path is customized.
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export interface Transition { | ||||||
|  |     default: boolean; | ||||||
|  |     _id: string; | ||||||
|  |     next: { | ||||||
|  |         _id: string; | ||||||
|  |         hruid: string; | ||||||
|  |         version: number; | ||||||
|  |         language: string; | ||||||
|  |     }; | ||||||
|  | } | ||||||
							
								
								
									
										20
									
								
								frontend/src/views/learning-paths/LearningPathPage.vue
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								frontend/src/views/learning-paths/LearningPathPage.vue
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,20 @@ | ||||||
|  | <script setup lang="ts"> | ||||||
|  |     import {ref} from "vue"; | ||||||
|  |     const learningObjects = ref([ | ||||||
|  | 
 | ||||||
|  |     ]) | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <template> | ||||||
|  |     <v-navigation-drawer> | ||||||
|  |         <v-list-item title="My Application" subtitle="Vuetify"></v-list-item> | ||||||
|  |         <v-divider></v-divider> | ||||||
|  |         <v-list-item link title="List Item 1"></v-list-item> | ||||||
|  |         <v-list-item link title="List Item 2"></v-list-item> | ||||||
|  |         <v-list-item link title="List Item 3"></v-list-item> | ||||||
|  |     </v-navigation-drawer> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <style scoped> | ||||||
|  | 
 | ||||||
|  | </style> | ||||||
		Reference in a new issue
	
	 Gerald Schmittinger
						Gerald Schmittinger