Subdomains.vue 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <!-- Liste des sous-domaines -->
  2. <template>
  3. <main>
  4. <LayoutContainer>
  5. <v-container class="container">
  6. <div>
  7. <span>{{ $t('yourSubdomains') }} : </span>
  8. </div>
  9. <v-skeleton-loader
  10. v-if="fetchState.pending"
  11. type="image"
  12. />
  13. <div v-else>
  14. <v-simple-table class="my-2">
  15. <template v-slot:default>
  16. <tbody>
  17. <tr
  18. v-for="subdomain in subdomains"
  19. :key="subdomain.id"
  20. class="subdomainItem"
  21. @click="goToEditPage(subdomain.id)"
  22. >
  23. <td>{{ subdomain.subdomain }}</td>
  24. <td>
  25. <span v-if="subdomain.active">
  26. <v-icon class="ot_green--text icon">
  27. fa-solid fa-check
  28. </v-icon> {{ $t('active') }}
  29. </span>
  30. </td>
  31. </tr>
  32. </tbody>
  33. </template>
  34. </v-simple-table>
  35. <v-btn
  36. v-if="subdomains.length < 3"
  37. class="ot_white--text ot_green float-left"
  38. >
  39. <NuxtLink to="/parameters/subdomain/new" class="no-decoration">
  40. <v-icon class="mr-1">fa-plus-circle</v-icon>
  41. <span>{{$t('add')}}</span>
  42. </NuxtLink>
  43. </v-btn>
  44. </div>
  45. </v-container>
  46. </LayoutContainer>
  47. </main>
  48. </template>
  49. <script lang="ts">
  50. import {computed, ComputedRef, defineComponent, ref, Ref, useContext, useRouter} from '@nuxtjs/composition-api'
  51. import { Repository as VuexRepository } from '@vuex-orm/core/dist/src/repository/Repository'
  52. import {Model, Query} from '@vuex-orm/core'
  53. import { repositoryHelper } from '~/services/store/repository'
  54. import {Subdomain} from "~/models/Organization/Subdomain";
  55. import {useDataUtils} from "~/composables/data/useDataUtils";
  56. import {Collection} from "@vuex-orm/core/dist/src/data/Data";
  57. import {queryHelper} from "~/services/store/query";
  58. import {Organization} from "~/models/Organization/Organization";
  59. export default defineComponent({
  60. setup () {
  61. const { store, $dataProvider } = useContext()
  62. const { getCollection } = useDataUtils($dataProvider)
  63. const router = useRouter();
  64. const organizationId = store.state.profile.organization.id
  65. const { fetchState } = getCollection(Subdomain, Organization, organizationId)
  66. const repository: VuexRepository<Model> = repositoryHelper.getRepository(Subdomain)
  67. const query: ComputedRef<Query> = computed(() => repository.query())
  68. const subdomains: ComputedRef<Collection> = computed(() => queryHelper.getCollection(query.value))
  69. const goToEditPage = function(id: number) {
  70. router.push('/parameters/subdomain/' + id)
  71. }
  72. return {
  73. subdomains,
  74. fetchState,
  75. goToEditPage
  76. }
  77. },
  78. beforeDestroy() {
  79. repositoryHelper.cleanRepository(Subdomain)
  80. }
  81. })
  82. </script>
  83. <style scoped>
  84. .subdomainItem {
  85. cursor: pointer;
  86. }
  87. .subdomainItem .icon {
  88. font-size: 12px;
  89. }
  90. </style>