EducationTimings.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <template>
  2. <LayoutContainer>
  3. <UiLoadingPanel v-if="pending" />
  4. <div v-else>
  5. <ul>
  6. <li v-for="timing in allTimings" :key="timing.id">
  7. {{ timing.timing }}
  8. <UiButtonDelete :model="EducationTiming" :entity="timing" />
  9. <span class="edit-icon" @click="goToEditPage(timing.id)">✏️</span>
  10. </li>
  11. </ul>
  12. </div>
  13. <button @click="goToCreatePage">Nouveau</button>
  14. </LayoutContainer>
  15. </template>
  16. <script setup lang="ts">
  17. import { useEntityFetch } from '~/composables/data/useEntityFetch'
  18. import EducationTiming from '~/models/Education/EducationTiming'
  19. import { useRepo } from 'pinia-orm'
  20. import EducationTimingsRepository from '~/stores/repositories/EducationTimingsRepository'
  21. const { fetchCollection } = useEntityFetch()
  22. const { data: educationTimings, pending } = fetchCollection(EducationTiming)
  23. const educationTimingRepo = useRepo(EducationTimingsRepository)
  24. /**
  25. * On récupère les timings via le store
  26. * (sans ça, les mises à jour SSE ne seront pas prises en compte)
  27. */
  28. const allTimings: ComputedRef<Array<EducationTiming>> = computed(() => {
  29. return educationTimingRepo.getEducationTimings()
  30. })
  31. const goToEditPage = (id: number) => {
  32. navigateTo(`/parameters/education_timings/${id}`)
  33. }
  34. const goToCreatePage = () => {
  35. navigateTo(`/parameters/education_timings/new`)
  36. }
  37. </script>