chore(frontend): Lazy and autoexpand
This commit is contained in:
		
							parent
							
								
									90050a2d87
								
							
						
					
					
						commit
						ad1e5a30ae
					
				
					 2 changed files with 22 additions and 33 deletions
				
			
		|  | @ -1,44 +1,27 @@ | |||
| <script setup lang="ts"> | ||||
|     import type { LearningObject } from "@/data-objects/learning-objects/learning-object"; | ||||
|     import type { LearningPath } from "@/data-objects/learning-paths/learning-path"; | ||||
|     import { useLearningObjectListForPathQuery } from "@/queries/learning-objects"; | ||||
|     import { useRoute } from "vue-router"; | ||||
|     import UsingQueryResult from "@/components/UsingQueryResult.vue"; | ||||
|     import { ref, watchEffect } from "vue"; | ||||
| import type { LearningObject } from '@/data-objects/learning-objects/learning-object'; | ||||
| import type { LearningPath } from '@/data-objects/learning-paths/learning-path'; | ||||
| import { useLearningObjectListForPathQuery } from '@/queries/learning-objects'; | ||||
| import { useRoute } from 'vue-router'; | ||||
| import UsingQueryResult from '@/components/UsingQueryResult.vue'; | ||||
| 
 | ||||
|     const route = useRoute(); | ||||
| const route = useRoute(); | ||||
| 
 | ||||
|     const props = defineProps<{ | ||||
|         path: LearningPath; | ||||
|         activeObjectId: string; | ||||
|     }>(); | ||||
| const props = defineProps<{ | ||||
|     path: LearningPath; | ||||
|     activeObjectId: string; | ||||
| }>(); | ||||
| 
 | ||||
|     const currentPath = ref(props.path); | ||||
| 
 | ||||
|     const learningObjectListQueryResult = useLearningObjectListForPathQuery(currentPath); | ||||
| 
 | ||||
|     const dropdownEnabled = ref<boolean>(false); | ||||
| 
 | ||||
|     watchEffect(() => { | ||||
|         const objects = learningObjectListQueryResult.data.value; | ||||
| 
 | ||||
|         if (objects) { | ||||
|             const objectInThisPath = objects.some((obj) => obj.key === props.activeObjectId); | ||||
|             if (objectInThisPath) { | ||||
|                 dropdownEnabled.value = true; | ||||
|             } | ||||
|         } | ||||
|     }); | ||||
| </script> | ||||
| 
 | ||||
| <template> | ||||
|     <v-expansion-panel> | ||||
|     <v-expansion-panel :value="props.path.hruid"> | ||||
|         <v-expansion-panel-title> | ||||
|             {{ path.title }} | ||||
|         </v-expansion-panel-title> | ||||
|         <v-expansion-panel-text> | ||||
|             <using-query-result | ||||
|                 :query-result="learningObjectListQueryResult" | ||||
|                 :query-result="useLearningObjectListForPathQuery(props.path)" | ||||
|                 v-slot="learningObjects: { data: LearningObject[] }" | ||||
|             > | ||||
|                 <template | ||||
|  | @ -48,9 +31,9 @@ | |||
|                     <v-list-item | ||||
|                         link | ||||
|                         :to="{ | ||||
|                             path: `/discussion-reload/${currentPath.hruid}/${node.language}/${node.key}`, | ||||
|                             query: route.query, | ||||
|                         }" | ||||
|                         path: `/discussion-reload/${props.path.hruid}/${node.language}/${node.key}`, | ||||
|                         query: route.query, | ||||
|                     }" | ||||
|                         :title="node.title" | ||||
|                         :active="node.key === props.activeObjectId" | ||||
|                     > | ||||
|  |  | |||
|  | @ -5,17 +5,21 @@ | |||
|     import { useI18n } from "vue-i18n"; | ||||
|     import { useGetAllLearningPaths } from "@/queries/learning-paths.ts"; | ||||
|     import { ref, watch } from "vue"; | ||||
|     import { useRoute } from 'vue-router'; | ||||
| 
 | ||||
|     const { t, locale } = useI18n(); | ||||
|     const route = useRoute(); | ||||
| 
 | ||||
|     const navigationDrawerShown = ref(true); | ||||
|     const currentLocale = ref(locale.value); | ||||
|     const expanded = ref([route.params.hruid]) | ||||
| 
 | ||||
|     watch(locale, (newLocale) => { | ||||
|         currentLocale.value = newLocale; | ||||
|     }); | ||||
| 
 | ||||
|     const allLearningPathsResult = useGetAllLearningPaths(() => currentLocale.value); | ||||
| 
 | ||||
| </script> | ||||
| 
 | ||||
| <template> | ||||
|  | @ -31,7 +35,9 @@ | |||
|                 </template> | ||||
|             </v-list-item> | ||||
|             <v-divider></v-divider> | ||||
|             <v-expansion-panels> | ||||
|             <v-expansion-panels | ||||
|                 v-model="expanded" | ||||
|             > | ||||
|                 <using-query-result | ||||
|                     :query-result="allLearningPathsResult" | ||||
|                     v-slot="learningPaths: { data: LearningPath[] }" | ||||
|  |  | |||
		Reference in a new issue