Vincent GUFFON 4 سال پیش
والد
کامیت
fd0727e1dc

+ 3 - 3
components/Layout/Header/Notification.vue

@@ -13,8 +13,8 @@
             <v-badge
               color="orange"
               offset-y="10"
-              :value="unreadNotification.length > 0"
-              :content="unreadNotification.length"
+              :value="unreadNotification().length > 0"
+              :content="unreadNotification().length"
             >
               <v-icon class="ot_white--text" small>
                 fa-bell
@@ -237,7 +237,7 @@ export default defineComponent({
       loading,
       notifications,
       update,
-      unreadNotification,
+      unreadNotification: () => unreadNotification,
       isOpen,
       download
     }

+ 0 - 2
components/Ui/DataTable.vue

@@ -102,8 +102,6 @@ export default defineComponent({
       itemId.value = item.id
     }
 
-    // onUnmounted( useRepositoryHelper.cleanRepository(repository.value) )
-
     return {
       entries,
       totalEntries,

+ 2 - 1
components/Ui/Form.vue

@@ -118,7 +118,8 @@ export default defineComponent({
         await $dataPersister.invoke({
           type: QUERY_TYPE.MODEL,
           model: props.model,
-          id: id.value
+          id: id.value,
+          query: props.query
         })
 
         const alert:alert = {

+ 68 - 0
components/Ui/ItemFromUri.vue

@@ -0,0 +1,68 @@
+<!--
+Espace permettant de récupérer un item via une uri et de gérer son affichage via un slot
+-->
+
+<template>
+  <main>
+    <v-skeleton-loader
+      v-if="$fetchState.pending"
+      :type="loaderType"
+    />
+    <div v-else>
+      <slot name="item.text" v-bind="{item}" />
+    </div>
+    <slot />
+  </main>
+</template>
+
+<script lang="ts">
+import { defineComponent, useFetch, useContext, ComputedRef, computed } from '@nuxtjs/composition-api'
+import {QUERY_TYPE} from "~/types/enums";
+import { Query } from '@vuex-orm/core'
+import { Item } from '@vuex-orm/core/dist/src/data/Data'
+import ModelsUtils from "~/services/utils/modelsUtils";
+import {queryHelper} from "~/services/store/query";
+
+export default defineComponent({
+  props: {
+    uri: {
+      type: String,
+      required: false,
+      default: null
+    },
+    model: {
+      type: Function,
+      required: true
+    },
+    query: {
+      type: Object as () => Query,
+      required: true
+    },
+    loaderType: {
+      type: String,
+      required: false,
+      default: 'text'
+    }
+  },
+  setup (props) {
+    const { $dataProvider } = useContext()
+    const getIdFromUri = (uri: string) => {
+      return ModelsUtils.extractIdFromUri(uri)
+    }
+    const id = getIdFromUri(props.uri)
+
+    useFetch(async () => {
+      await $dataProvider.invoke({
+        type: QUERY_TYPE.MODEL,
+        model: props.model,
+        id: id
+      })
+    })
+    const item: ComputedRef<Item> = computed(() => queryHelper.getItem(props.query, id))
+
+    return {
+      item
+    }
+  }
+})
+</script>

+ 16 - 20
components/Ui/Map.vue

@@ -16,7 +16,7 @@ Leaflet map
         />
       </l-map>
 
-      <v-btn class="mr-4 ot_green ot_white--text" @click="updateMap">
+      <v-btn class="mr-4 mt-2 mb-2 ot_green ot_white--text" @click="updateMap">
         {{ $t('updateMap') }}
       </v-btn>
     </client-only>
@@ -45,24 +45,26 @@ export default defineComponent({
   setup (props, { emit }) {
     const { $dataProvider, store } = useContext()
     const { address }: ToRefs = toRefs(props)
-    const latitude: Ref<number> = ref(address.value.latitude)
-    const longitude: Ref<number> = ref(address.value.longitude)
+    const latitude: Ref<number> = ref(address.value.latitude ?? 0.0)
+    const longitude: Ref<number> = ref(address.value.longitude ?? 0.0)
 
     const center: ComputedRef<Array<number>> = computed(() => [latitude.value, longitude.value])
     const latLong: ComputedRef<Array<number>> = computed(() => [latitude.value, longitude.value])
+
     const layerUrl: string = 'https://{s}.tile.osm.org/{z}/{x}/{y}.png'
 
     const updateMap = async () => {
       const response = await $dataProvider.invoke({
         type: QUERY_TYPE.DEFAULT,
-        url: `gps-coordinate-searching?street=${address.value.streetAddress} ${address.value.streetAddressSecond} ${address.value.streetAddressThird}&cp=${address.value.postalCode}&city=${address.value.addressCity}`
+        url: `/api/gps-coordinate-searching?street=${address.value.streetAddress} ${address.value.streetAddressSecond} ${address.value.streetAddressThird}&cp=${address.value.postalCode}&city=${address.value.addressCity}`
       })
-      if (response.length > 0) {
-        latitude.value = response[0].latitude
-        longitude.value = response[0].longitude
+      const data = response.data
+      if (data.length > 0) {
+        latitude.value = data[0].latitude
+        longitude.value = data[0].longitude
 
-        address.value.latitude = response[0].latitude
-        address.value.longitude = response[0].longitude
+        address.value.latitude = data[0].latitude
+        address.value.longitude = data[0].longitude
         emit('updateAddress', address.value)
       } else {
         const alert: alert = {
@@ -74,17 +76,11 @@ export default defineComponent({
     }
 
     const onMoveMarker = async (event: AnyJson) => {
-      const response = await $dataProvider.invoke({
-        type: QUERY_TYPE.DEFAULT,
-        url: `gps-coordinate-reverse/${event.lat}/${event.lng}`
-      })
-      address.value.streetAddress = response.streetAddress
-      address.value.streetAddressSecond = response.streetAddressSecond
-      address.value.streetAddressThird = response.streetAddressThird
-      address.value.postalCode = response.cp
-      address.value.addressCity = response.city
-
-      emit('updateAddress', address.value)
+      if(event){
+        address.value.latitude = event.lat
+        address.value.longitude = event.lng
+        emit('updateAddress', address.value)
+      }
     }
 
     return {

+ 7 - 3
components/Ui/SubList.vue

@@ -4,7 +4,7 @@
   <main>
     <v-skeleton-loader
       v-if="$fetchState.pending"
-      type="text"
+      :type="loaderType"
     />
     <div v-else>
       <slot name="list.item" v-bind="{items}" />
@@ -39,7 +39,12 @@ export default defineComponent({
     query: {
       type: Object as () => Query,
       required: true
-    }
+    },
+    loaderType: {
+      type: String,
+      required: false,
+      default: 'text'
+    },
   },
   setup (props) {
     const { rootModel, rootId, model, query }: ToRefs = toRefs(props)
@@ -54,7 +59,6 @@ export default defineComponent({
     })
 
     const items: ComputedRef<Collection> = computed(() => queryHelper.getCollection(query.value))
-    // onUnmounted( useRepositoryHelper.cleanRepository(repository.value) )
 
     return {
       items

+ 3 - 3
config/abilities/pages/communication.yaml

@@ -6,7 +6,7 @@
           parameters:
             - {action: 'read', subject: 'mails'}
             - {action: 'read', subject: 'emails'}
-            - {action: 'read', subject: 'sms'}
+            - {action: 'read', subject: 'texto'}
       organization:
         - {function: hasModule, parameters: ['MessagesAdvanced']}
 
@@ -18,7 +18,7 @@
           parameters:
             - {action: 'read', subject: 'mails'}
             - {action: 'read', subject: 'emails'}
-            - {action: 'read', subject: 'sms'}
+            - {action: 'read', subject: 'texto'}
       organization:
         - {function: hasModule, parameters: ['MessagesAdvanced']}
 
@@ -30,6 +30,6 @@
           parameters:
             - {action: 'read', subject: 'mails'}
             - {action: 'read', subject: 'emails'}
-            - {action: 'read', subject: 'sms'}
+            - {action: 'read', subject: 'texto'}
       organization:
         - {function: hasModule, parameters: ['MessagesAdvanced']}

+ 2 - 1
config/nuxtConfig/env.js

@@ -6,7 +6,8 @@ export default {
     artist_premium_product: 'artist-premium',
     manager_product: 'manager',
     cmf_network: 'CMF',
-    ffec_network: 'FFEC'
+    ffec_network: 'FFEC',
+    OPENTALENT_MANAGER_ID: 93931
   },
   publicRuntimeConfig: {
     http: {

+ 2 - 2
pages/subscription.vue

@@ -354,7 +354,7 @@ export default defineComponent({
       try {
         const reponse:ApiResponse = await $dataProvider.invoke({
           type: QUERY_TYPE.DEFAULT,
-          url: 'dolibarr/account/' + id
+          url: '/api/dolibarr/account/' + id
         })
         dolibarrAccount.value = reponse.data as DolibarrAccount
       } catch (Error) {
@@ -368,7 +368,7 @@ export default defineComponent({
       try {
         const reponse:ApiResponse = await $dataProvider.invoke({
           type: QUERY_TYPE.DEFAULT,
-          url: 'mobyt/status/' + id
+          url: '/api/mobyt/status/' + id
         })
         mobytStatus.value = reponse.data as MobytUserStatus
       } catch (Error) {

+ 0 - 3
services/rights/abilitiesUtils.ts

@@ -60,9 +60,6 @@ class AbilitiesUtils {
     // les différentes habilitées que l'utilisateur peut effectuer. (Tout cela se passe en SSR)
     const unsubscribe = this.$store.subscribeAction({
       after: (action, _state) => {
-        // On récupère les habilités
-        const abilities = this.getAbilities()
-
         switch (action.type) {
           case 'profile/organization/setProfile':
             //On récupère les abilités

+ 3 - 2
services/store/repository.ts

@@ -125,9 +125,10 @@ class Repository {
   /**
    * Supprime tous les Items du repository
    *
-   * @param {VuexRepository} repository
+   * @param {Model} model
    */
-  public cleanRepository (repository: VuexRepository) {
+  public cleanRepository (model: typeof Model) {
+    const repository = this.getRepository(model)
     repository.flush()
   }
 }

+ 1 - 1
services/utils/i18n.ts

@@ -1,6 +1,6 @@
 import { parsePhoneNumber } from 'libphonenumber-js'
 
-export default class I18N {
+export default class UseI18N {
   static formatPhoneNumber (number: string): string {
     const parsed = parsePhoneNumber(number)
     return parsed ? parsed.formatNational() : ''