test.vue 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <template>
  2. <main>
  3. <div>
  4. <div v-if="pending">
  5. Pending...
  6. </div>
  7. <div v-else>
  8. <ul>
  9. <li v-for="access in accesses">
  10. Access {{ access.id }}
  11. </li>
  12. </ul>
  13. <div class="ma-3">{{ totalItems }} results</div>
  14. <a href="#" @click="onClick">Next page</a>
  15. </div>
  16. </div>
  17. </main>
  18. </template>
  19. <script setup lang="ts">
  20. import type {Ref} from "@vue/reactivity";
  21. import {computed, ref} from "@vue/reactivity";
  22. import {useAp2iRequestService} from "~/composables/data/useAp2iRequestService";
  23. import {useEntityFetch} from "~/composables/data/useEntityFetch";
  24. import Access from "~/models/Access/Access";
  25. import {useEntityManager} from "~/composables/data/useEntityManager";
  26. const { em } = useEntityManager()
  27. const { apiRequestService } = useAp2iRequestService()
  28. const page: Ref<number> = ref(1)
  29. const query = computed(() => {
  30. return { 'page': page.value }
  31. })
  32. // const totalItems: Ref<number> = ref(0)
  33. const { fetchCollection } = useEntityFetch()
  34. const { data: collection = [], pending, refresh } = fetchCollection(Access, null, query)
  35. const accesses = computed(() => {
  36. // @ts-ignore
  37. return collection.value ? collection.value.items : []
  38. })
  39. const totalItems = computed(() => {
  40. // @ts-ignore
  41. return collection.value ? collection.value.totalItems : 0
  42. })
  43. // @ts-ignore
  44. // const { data: accesses = [], pending, refresh } = useLazyAsyncData(
  45. // 'accesses',
  46. // async () => {
  47. // const collection = await em.fetchCollection(Access, null, query.value)
  48. // totalItems.value = collection.totalItems ?? 0
  49. // return collection.items
  50. // }
  51. // )
  52. const onClick = () => {
  53. page.value += 1
  54. refresh()
  55. }
  56. </script>