Bläddra i källkod

sumdomains: new and edit forms ok

Olivier Massot 3 år sedan
förälder
incheckning
7f40ed878d

+ 9 - 4
components/Form/Parameters/Subdomains.vue

@@ -18,7 +18,7 @@
                   v-for="subdomain in subdomains"
                   :key="subdomain.id"
                   class="subdomainItem"
-                  @click="$router.push('/parameters/subdomain/' + subdomain.id)"
+                  @click="goToEditPage(subdomain.id)"
                 >
                     <td>{{ subdomain.subdomain }}</td>
                     <td>
@@ -48,7 +48,7 @@
 </template>
 
 <script lang="ts">
-import {computed, ComputedRef, defineComponent, ref, Ref, useContext} from '@nuxtjs/composition-api'
+import {computed, ComputedRef, defineComponent, ref, Ref, useContext, useRouter} from '@nuxtjs/composition-api'
 import { Repository as VuexRepository } from '@vuex-orm/core/dist/src/repository/Repository'
 import {Model, Query} from '@vuex-orm/core'
 import { repositoryHelper } from '~/services/store/repository'
@@ -67,8 +67,9 @@ export default defineComponent({
   },
   setup (props) {
     const parametersId: Ref<number> = ref(parseInt(props.parametersId as string))
-    const { $dataProvider, app: { $router } } = useContext()
+    const { $dataProvider } = useContext()
     const { getCollection } = useDataUtils($dataProvider)
+    const router = useRouter();
 
     const { fetchState } = getCollection(Subdomain, Parameters, parametersId.value)
 
@@ -76,10 +77,14 @@ export default defineComponent({
     const query: ComputedRef<Query> = computed(() => repository.query())
     const subdomains: ComputedRef<Collection> = computed(() => queryHelper.getCollection(query.value))
 
+    const goToEditPage = function(id: number) {
+      router.push('/parameters/subdomain/' + id)
+    }
+
     return {
       subdomains,
       fetchState,
-      $router
+      goToEditPage
     }
   },
   beforeDestroy() {

+ 12 - 11
pages/parameters/communication.vue

@@ -24,7 +24,7 @@
                   <v-btn
                     color="primary"
                     v-else
-                    @click="reactivateOpentalentSiteWeb(updateRepository)"
+                    @click="reactivateOpentalentSiteWeb()"
                   >{{ $t('reactivateOpentalentSiteWeb') }}</v-btn>
 
                   <lazy-LayoutDialog
@@ -45,7 +45,7 @@
                       </v-btn>
                       <v-btn
                         color="primary"
-                        @click="showSiteWebConfirmationDialog=false;desactivateOpentalentSiteWeb(updateRepository)"
+                        @click="showSiteWebConfirmationDialog=false;desactivateOpentalentSiteWeb()"
                       >
                         {{ $t('yes') }}
                       </v-btn>
@@ -119,6 +119,8 @@ import {repositoryHelper} from "~/services/store/repository";
 import {Query} from "@vuex-orm/core";
 import UrlBuilder from "~/services/connection/urlBuilder";
 import {Subdomain} from "~/models/Organization/Subdomain";
+import {AnyJson} from "~/types/interfaces";
+import {queryHelper} from "~/services/store/query";
 
 export default defineComponent({
   name: 'communication',
@@ -137,8 +139,9 @@ export default defineComponent({
     const repository = repositoryHelper.getRepository(Parameters)
     const query: ComputedRef<Query> = computed(() => repository.query())
 
-    const subdomainsRepository = repositoryHelper.getRepository(Subdomain)
-    const subdomainsQuery = computed(() => subdomainsRepository.query())
+    const entry: ComputedRef<AnyJson> = computed(() => {
+      return queryHelper.getFlattenEntry(query.value, id)
+    })
 
     /**
      * Build the URL of the current website of the organization
@@ -168,11 +171,11 @@ export default defineComponent({
     const confirmWebsiteDeactivation = function () {
       showSiteWebConfirmationDialog.value = true
     }
-    const desactivateOpentalentSiteWeb = function(updateRepository: ((newValue: string, field: string) => void)) {
-      updateRepository('1', 'desactivateOpentalentSiteWeb')
+    const desactivateOpentalentSiteWeb = function() {
+      repositoryHelper.updateStoreFromField(Parameters, entry.value, '1', 'desactivateOpentalentSiteWeb')
     }
-    const reactivateOpentalentSiteWeb = function(updateRepository: ((newValue: string, field: string) => void)) {
-      updateRepository('0', 'desactivateOpentalentSiteWeb')
+    const reactivateOpentalentSiteWeb = function() {
+      repositoryHelper.updateStoreFromField(Parameters, entry.value, '0', 'desactivateOpentalentSiteWeb')
     }
 
     return {
@@ -188,9 +191,7 @@ export default defineComponent({
       desactivateOpentalentSiteWeb,
       showSiteWebConfirmationDialog,
       reactivateOpentalentSiteWeb,
-      UrlBuilder,
-      Subdomain,
-      subdomainsQuery: () => subdomainsQuery.value
+      UrlBuilder
     }
   }
 })

+ 25 - 9
pages/parameters/subdomain/_id.vue

@@ -36,7 +36,7 @@
                 <div class="mt-6 d-flex flex-row">
                   <v-btn to="/parameters/communication" class="mr-12">{{ $t('back') }}</v-btn>
                   <div v-if="!entry.active">
-                    <v-btn color="primary" @click="activateAndQuit">{{ $t('activate') }}</v-btn>
+                    <v-btn color="primary" @click="activateAndQuit(entry)">{{ $t('activate') }}</v-btn>
                   </div>
                 </div>
 
@@ -50,7 +50,7 @@
 </template>
 
 <script lang="ts">
-import {computed, ComputedRef, defineComponent, useContext} from '@nuxtjs/composition-api'
+import {computed, ComputedRef, defineComponent, useContext, useRouter} from '@nuxtjs/composition-api'
 import {useDataUtils} from "~/composables/data/useDataUtils";
 import {Subdomain} from "~/models/Organization/Subdomain";
 import {Repository as VuexRepository} from "@vuex-orm/core/dist/src/repository/Repository";
@@ -58,32 +58,48 @@ import {Model, Query} from "@vuex-orm/core";
 import {repositoryHelper} from "~/services/store/repository";
 import {AnyJson} from "~/types/interfaces";
 import {queryHelper} from "~/services/store/query";
+import {QUERY_TYPE} from "~/types/enums";
 
 export default defineComponent({
   name: 'EditFormParametersSubdomain',
   setup () {
-    const {$dataProvider, route, app: { $router }} = useContext()
+    const {$dataProvider, $dataPersister, route} = useContext()
     const {getItemToEdit} = useDataUtils($dataProvider)
     const id = parseInt(route.value.params.id)
     const {fetchState} = getItemToEdit(id, Subdomain)
+    const router = useRouter();
 
     const repository: VuexRepository<Model> = repositoryHelper.getRepository(Subdomain)
-    const query: Query = repository.query()
+    const query: ComputedRef<Query> = computed(() => repository.query())
     const entry: ComputedRef<AnyJson> = computed(() => {
-      return queryHelper.getFlattenEntry(query, id)
+      return queryHelper.getFlattenEntry(query.value, id)
     })
 
-    const activateAndQuit = function() {
-      repositoryHelper.updateStoreFromField(Subdomain, entry.value, '1', 'active')
-      $router.push('/parameters/communication')
+    const submit = async (next: string|null = null) => {
+      await $dataPersister.invoke({
+        type: QUERY_TYPE.MODEL,
+        model: Subdomain,
+        id: id,
+        idTemp: null,
+        query: query.value
+      })
+    }
+
+    const activateAndQuit = async function() {
+      repositoryHelper.updateStoreFromField(Subdomain, entry.value, true, 'active')
+      await submit()
+      router.push('/parameters/communication')
     }
 
     return {
       id,
       fetchState,
       entry,
-      activateAndQuit: () => activateAndQuit()
+      activateAndQuit
     }
+  },
+  beforeDestroy() {
+    repositoryHelper.cleanRepository(Subdomain)
   }
 })
 </script>

+ 4 - 0
pages/parameters/subdomain/new.vue

@@ -16,6 +16,7 @@ import {defineComponent, useContext} from '@nuxtjs/composition-api'
 import {useDataUtils} from "~/composables/data/useDataUtils";
 import {ResidenceArea} from "~/models/Billing/ResidenceArea";
 import {Subdomain} from "~/models/Organization/Subdomain";
+import {repositoryHelper} from "~/services/store/repository";
 
 export default defineComponent({
   name: 'NewFormParametersSubdomain',
@@ -33,6 +34,9 @@ export default defineComponent({
       loading,
       item
     }
+  },
+  beforeDestroy() {
+    repositoryHelper.cleanRepository(Subdomain)
   }
 })
 </script>