Subdomains.vue 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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="$router.push('/parameters/subdomain/' + 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} 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 { Parameters } from '~/models/Organization/Parameters';
  59. export default defineComponent({
  60. props: {
  61. parametersId: {
  62. type: [Number, String],
  63. required: true
  64. }
  65. },
  66. setup (props) {
  67. const parametersId: Ref<number> = ref(parseInt(props.parametersId as string))
  68. const { $dataProvider, app: { $router } } = useContext()
  69. const { getCollection } = useDataUtils($dataProvider)
  70. const { fetchState } = getCollection(Subdomain, Parameters, parametersId.value)
  71. const repository: VuexRepository<Model> = repositoryHelper.getRepository(Subdomain)
  72. const query: ComputedRef<Query> = computed(() => repository.query())
  73. const subdomains: ComputedRef<Collection> = computed(() => queryHelper.getCollection(query.value))
  74. return {
  75. subdomains,
  76. fetchState,
  77. $router
  78. }
  79. },
  80. beforeDestroy() {
  81. repositoryHelper.cleanRepository(Subdomain)
  82. }
  83. })
  84. </script>
  85. <style scoped>
  86. .subdomainItem {
  87. cursor: pointer;
  88. }
  89. .subdomainItem .icon {
  90. font-size: 12px;
  91. }
  92. </style>