Browse Source

apply eslint format fixes

Olivier Massot 4 years ago
parent
commit
7cd5f3e733
100 changed files with 2183 additions and 2213 deletions
  1. 14 14
      components/Layout/Alert/Container.vue
  2. 41 41
      components/Layout/Alert/Content.vue
  3. 12 12
      components/Layout/Dialog.vue
  4. 46 46
      components/Layout/Header.vue
  5. 31 28
      components/Layout/Header/Menu.vue
  6. 23 21
      components/Layout/Header/Notification.vue
  7. 21 21
      components/Layout/Loading.vue
  8. 25 21
      components/Layout/Menu.vue
  9. 31 28
      components/Layout/SubHeader/ActivityYear.vue
  10. 36 36
      components/Layout/SubHeader/Breadcrumbs.vue
  11. 46 50
      components/Layout/SubHeader/DataTiming.vue
  12. 43 42
      components/Layout/SubHeader/DataTimingRange.vue
  13. 59 61
      components/Layout/SubHeader/PersonnalizedList.vue
  14. 13 14
      components/Layout/Subheader.vue
  15. 35 36
      components/Ui/Button/Delete.vue
  16. 35 34
      components/Ui/Card.vue
  17. 91 93
      components/Ui/DataTable.vue
  18. 24 22
      components/Ui/ExpansionPanel.vue
  19. 99 100
      components/Ui/Form.vue
  20. 62 64
      components/Ui/Input/Autocomplete.vue
  21. 73 75
      components/Ui/Input/AutocompleteWithAPI.vue
  22. 26 26
      components/Ui/Input/Checkbox.vue
  23. 66 68
      components/Ui/Input/DatePicker.vue
  24. 47 47
      components/Ui/Input/Enum.vue
  25. 51 52
      components/Ui/Input/Text.vue
  26. 64 65
      components/Ui/Map.vue
  27. 49 50
      components/Ui/SubList.vue
  28. 49 46
      components/Ui/Xeditable/Text.vue
  29. 1 1
      config/nuxtConfig/env.js
  30. 1 1
      config/nuxtConfig/plugins.js
  31. 1 1
      config/nuxtConfig/vuetify.js
  32. 1 1
      jest.config.js
  33. 56 56
      lang/enum/fr-FR.js
  34. 57 57
      lang/field/fr-FR.js
  35. 2 2
      lang/form/fr-FR.js
  36. 1 2
      lang/fr-FR.js
  37. 2 2
      lang/menuKey/fr-FR.js
  38. 2 2
      lang/rulesAndErrors/fr-FR.js
  39. 32 36
      layouts/default.vue
  40. 19 19
      layouts/error.vue
  41. 5 5
      layouts/login.vue
  42. 4 4
      models/Access/MyProfile.ts
  43. 2 2
      models/Access/PersonalizedList.ts
  44. 11 11
      models/Core/AddressPostal.ts
  45. 8 8
      models/Core/BankAccount.ts
  46. 11 11
      models/Core/ContactPoint.ts
  47. 2 2
      models/Core/Country.ts
  48. 37 37
      models/Organization/Organization.ts
  49. 4 4
      models/Organization/OrganizationAddressPostal.ts
  50. 6 6
      models/Organization/OrganizationLicence.ts
  51. 6 6
      models/Organization/OrganizationNetwork.ts
  52. 1 2
      nuxt.config.js
  53. 10 9
      pages/index.vue
  54. 9 10
      pages/login.vue
  55. 35 30
      pages/organization.vue
  56. 75 76
      pages/organization/address/_id.vue
  57. 79 79
      pages/organization/index.vue
  58. 3 2
      plugins/Data/axios.js
  59. 3 3
      plugins/Data/dataDeleter.ts
  60. 4 4
      plugins/Data/dataPersister.ts
  61. 4 4
      plugins/Data/dataProvider.ts
  62. 4 4
      plugins/Rights/ability.ts
  63. 4 4
      plugins/Rights/casl.js
  64. 2 2
      plugins/helpersInit.ts
  65. 6 6
      plugins/route.ts
  66. 22 27
      services/connection/connection.ts
  67. 16 20
      services/connection/constructUrl.ts
  68. 24 25
      services/dataDeleter/dataDeleter.ts
  69. 1 1
      services/dataDeleter/hook/_import.ts
  70. 3 3
      services/dataDeleter/hook/baseHook.ts
  71. 6 6
      services/dataDeleter/hook/hookExample.ts
  72. 32 32
      services/dataPersister/dataPersister.ts
  73. 1 1
      services/dataPersister/hook/_import.ts
  74. 3 3
      services/dataPersister/hook/baseHook.ts
  75. 6 6
      services/dataPersister/hook/hookExample.ts
  76. 6 4
      services/dataProvider/__mocks__/__dataProvider.ts
  77. 28 29
      services/dataProvider/dataProvider.ts
  78. 3 3
      services/dataProvider/provider/_import.ts
  79. 16 16
      services/dataProvider/provider/baseProvider.ts
  80. 10 10
      services/dataProvider/provider/defaultProvider.ts
  81. 19 21
      services/dataProvider/provider/enumProvider.ts
  82. 1 1
      services/dataProvider/provider/hook/_import.ts
  83. 4 4
      services/dataProvider/provider/hook/baseHook.ts
  84. 6 6
      services/dataProvider/provider/hook/hookExample.ts
  85. 13 14
      services/dataProvider/provider/modelProvider.ts
  86. 19 24
      services/profile/accessProfile.ts
  87. 27 29
      services/profile/organizationProfile.ts
  88. 47 47
      services/rights/abilitiesUtils.ts
  89. 29 30
      services/rights/roleUtils.ts
  90. 2 2
      services/serializer/denormalizer/_import.ts
  91. 3 3
      services/serializer/denormalizer/baseDenormalizer.ts
  92. 38 38
      services/serializer/denormalizer/hydra.ts
  93. 10 10
      services/serializer/denormalizer/yaml.ts
  94. 1 1
      services/serializer/normalizer/_import.ts
  95. 3 3
      services/serializer/normalizer/baseNormalizer.ts
  96. 10 12
      services/serializer/normalizer/model.ts
  97. 12 12
      services/serializer/serializer.ts
  98. 17 20
      services/store/query.ts
  99. 20 23
      services/store/repository.ts
  100. 3 3
      services/utils/apiError.ts

+ 14 - 14
components/Layout/Alert/Container.vue

@@ -1,31 +1,31 @@
 <template>
   <main class="alertContainer">
     <LayoutAlertContent
-      class="alertContent"
       v-for="(alert, key) in alerts"
       :key="key"
+      class="alertContent"
       :alert="alert"
     />
   </main>
 </template>
 
 <script lang="ts">
-  import {defineComponent, computed, ComputedRef} from "@vue/composition-api";
-  import {useContext} from "@nuxtjs/composition-api";
-  import {alert} from "~/types/interfaces"
+import { defineComponent, computed, ComputedRef } from '@vue/composition-api'
+import { useContext } from '@nuxtjs/composition-api'
+import { alert } from '~/types/interfaces'
 
-  export default defineComponent({
-    setup() {
-      const {store} = useContext()
+export default defineComponent({
+  setup () {
+    const { store } = useContext()
 
-      const alerts:ComputedRef<Array<alert>> = computed(() => {
-        return store.state.page.alerts
-      })
-      return {
-        alerts
-      }
+    const alerts:ComputedRef<Array<alert>> = computed(() => {
+      return store.state.page.alerts
+    })
+    return {
+      alerts
     }
-  })
+  }
+})
 </script>
 
 <style scoped>

+ 41 - 41
components/Layout/Alert/Content.vue

@@ -7,54 +7,54 @@
     width="400"
     dismissible
     transition="fade-transition"
-    v-on:mouseover="onMouseOver"
-    v-on:mouseout="onMouseOut"
+    @mouseover="onMouseOver"
+    @mouseout="onMouseOut"
   >
     {{ $t(alert.message) }}
   </v-alert>
 </template>
 
 <script lang="ts">
-  import {defineComponent, ref, Ref} from "@vue/composition-api";
-  import {alert} from "~/types/interfaces";
-  import {useContext} from "@nuxtjs/composition-api";
-
-  export default defineComponent({
-    props: {
-      alert: {
-        type: Object as () => alert,
-        required: true
-      }
-    },
-    setup() {
-      const {store} = useContext()
-      const show:Ref<boolean> = ref(true)
-      let timeout: any = null;
-
-      const clearAlert = (time:number = 2000) => {
-        timeout = setTimeout(() => {
-          show.value = false;
-          store.dispatch('page/removeSlowlyAlert')
-        }, time)
-      }
-
-      const onMouseOver = () => {
-        clearTimeout(timeout);
-      }
-
-      const onMouseOut = () => {
-        clearAlert(1000);
-      }
-
-      clearAlert()
-
-      return {
-        show,
-        onMouseOver,
-        onMouseOut
-      }
+import { defineComponent, ref, Ref } from '@vue/composition-api'
+import { useContext } from '@nuxtjs/composition-api'
+import { alert } from '~/types/interfaces'
+
+export default defineComponent({
+  props: {
+    alert: {
+      type: Object as () => alert,
+      required: true
     }
-  })
+  },
+  setup () {
+    const { store } = useContext()
+    const show:Ref<boolean> = ref(true)
+    let timeout: any = null
+
+    const clearAlert = (time:number = 2000) => {
+      timeout = setTimeout(() => {
+        show.value = false
+        store.dispatch('page/removeSlowlyAlert')
+      }, time)
+    }
+
+    const onMouseOver = () => {
+      clearTimeout(timeout)
+    }
+
+    const onMouseOut = () => {
+      clearAlert(1000)
+    }
+
+    clearAlert()
+
+    return {
+      show,
+      onMouseOver,
+      onMouseOut
+    }
+  }
+})
 </script>
 
 <style scoped>

+ 12 - 12
components/Layout/Dialog.vue

@@ -5,29 +5,29 @@
     max-width="800"
   >
     <v-card>
-      <slot name="dialogText"></slot>
+      <slot name="dialogText" />
 
-      <v-divider></v-divider>
+      <v-divider />
 
       <v-card-actions>
-        <v-spacer></v-spacer>
-          <slot name="dialogBtn"></slot>
+        <v-spacer />
+        <slot name="dialogBtn" />
       </v-card-actions>
     </v-card>
   </v-dialog>
 </template>
 
 <script lang="ts">
-  import {defineComponent} from "@vue/composition-api";
+import { defineComponent } from '@vue/composition-api'
 
-  export default defineComponent({
-    props: {
-      show : {
-        type: Boolean,
-        required: true
-      }
+export default defineComponent({
+  props: {
+    show: {
+      type: Boolean,
+      required: true
     }
-  })
+  }
+})
 </script>
 
 <style scoped>

+ 46 - 46
components/Layout/Header.vue

@@ -60,53 +60,53 @@
 </template>
 
 <script lang="ts">
-  import {defineComponent, reactive, useContext, computed, ComputedRef, Ref} from '@nuxtjs/composition-api'
-  import {$useMenu} from "~/use/layout/menu";
-  import {UnwrapRef} from "@vue/composition-api";
-  import {AnyJson} from "~/types/interfaces";
-
-  export default defineComponent({
-    setup(props, {emit}) {
-      const {store, $config} = useContext();
-
-      const properties:UnwrapRef<AnyJson> = reactive({
-        miniVariant: false,
-        homeUrl : $config.baseURL_adminLegacy
-      })
-
-      const displayedMiniVariant:ComputedRef<boolean> = computed(()=>store.state.profile.access.hasLateralMenu)
-      const hasConfigurationMenu:ComputedRef<boolean>  = computed(()=>store.state.profile.access.hasConfigurationMenu)
-      const hasAccessesMenu:ComputedRef<boolean>  = computed(()=>store.state.profile.access.hasAccessesMenu)
-      const hasFamilyMenu:ComputedRef<boolean>  = computed(()=>store.state.profile.access.hasFamilyMenu)
-      const title:ComputedRef<string>  = computed(()=>store.state.profile.organization.name)
-
-      const webSiteMenu:Ref<any> = $useMenu.setUpContext().useWebSiteMenuConstruct()
-      const myAccessesMenu:Ref<any> = $useMenu.setUpContext().useMyAccessesMenuConstruct()
-      const myFamilyMenu:Ref<any> = $useMenu.setUpContext().useMyFamilyMenuConstruct()
-      const configurationMenu:Ref<any> = $useMenu.setUpContext().useConfigurationMenuConstruct()
-      const accountMenu:Ref<any> = $useMenu.setUpContext().useAccountMenuConstruct()
-
-      const displayedMenu = () => {
-        properties.miniVariant = !properties.miniVariant
-        emit('handle-open-menu-click', properties.miniVariant)
-      }
-
-      return {
-        properties,
-        displayedMiniVariant,
-        hasConfigurationMenu,
-        hasAccessesMenu,
-        hasFamilyMenu,
-        title,
-        displayedMenu,
-        webSiteMenu,
-        myAccessesMenu,
-        myFamilyMenu,
-        configurationMenu,
-        accountMenu
-      }
+import {defineComponent, reactive, useContext, computed, ComputedRef, Ref} from '@nuxtjs/composition-api'
+import {$useMenu} from "~/use/layout/menu";
+import {UnwrapRef} from "@vue/composition-api";
+import {AnyJson} from "~/types/interfaces";
+
+export default defineComponent({
+  setup(props, {emit}) {
+    const {store, $config} = useContext();
+
+    const properties:UnwrapRef<AnyJson> = reactive({
+      miniVariant: false,
+      homeUrl : $config.baseURL_adminLegacy
+    })
+
+    const displayedMiniVariant:ComputedRef<boolean> = computed(()=>store.state.profile.access.hasLateralMenu)
+    const hasConfigurationMenu:ComputedRef<boolean>  = computed(()=>store.state.profile.access.hasConfigurationMenu)
+    const hasAccessesMenu:ComputedRef<boolean>  = computed(()=>store.state.profile.access.hasAccessesMenu)
+    const hasFamilyMenu:ComputedRef<boolean>  = computed(()=>store.state.profile.access.hasFamilyMenu)
+    const title:ComputedRef<string>  = computed(()=>store.state.profile.organization.name)
+
+    const webSiteMenu:Ref<any> = $useMenu.setUpContext().useWebSiteMenuConstruct()
+    const myAccessesMenu:Ref<any> = $useMenu.setUpContext().useMyAccessesMenuConstruct()
+    const myFamilyMenu:Ref<any> = $useMenu.setUpContext().useMyFamilyMenuConstruct()
+    const configurationMenu:Ref<any> = $useMenu.setUpContext().useConfigurationMenuConstruct()
+    const accountMenu:Ref<any> = $useMenu.setUpContext().useAccountMenuConstruct()
+
+    const displayedMenu = () => {
+      properties.miniVariant = !properties.miniVariant
+      emit('handle-open-menu-click', properties.miniVariant)
     }
-  })
+
+    return {
+      properties,
+      displayedMiniVariant,
+      hasConfigurationMenu,
+      hasAccessesMenu,
+      hasFamilyMenu,
+      title,
+      displayedMenu,
+      webSiteMenu,
+      myAccessesMenu,
+      myFamilyMenu,
+      configurationMenu,
+      accountMenu
+    }
+  }
+})
 </script>
 
 <style scoped>

+ 31 - 28
components/Layout/Header/Menu.vue

@@ -3,11 +3,12 @@
     <template v-slot:activator="{ on: { click }, attrs }">
       <v-tooltip bottom>
         <template v-slot:activator="{ on: on_tooltips , attrs: attrs_tooltips }">
-          <v-avatar v-if="avatar"
-                 size="30"
-                 v-bind="[attrs, attrs_tooltips]"
-                 v-on="on_tooltips"
-                 v-on:click="click"
+          <v-avatar
+            v-if="avatar"
+            size="30"
+            v-bind="[attrs, attrs_tooltips]"
+            v-on="on_tooltips"
+            @click="click"
           >
             <img
               src="https://cdn.vuetifyjs.com/images/john.jpg"
@@ -15,14 +16,17 @@
             >
           </v-avatar>
 
-          <v-btn v-else
-                 icon
-                 v-bind="[attrs, attrs_tooltips]"
-                 v-on="on_tooltips"
-                 v-on:click="click"
-                 color=""
+          <v-btn
+            v-else
+            icon
+            v-bind="[attrs, attrs_tooltips]"
+            color=""
+            v-on="on_tooltips"
+            @click="click"
           >
-            <v-icon class="ot_white--text" small>{{ menu.icon }}</v-icon>
+            <v-icon class="ot_white--text" small>
+              {{ menu.icon }}
+            </v-icon>
           </v-btn>
         </template>
         <span>{{ $t(menu.title) }}</span>
@@ -30,7 +34,7 @@
     </template>
     <v-list dense :subheader="true">
       <v-list-item dense class="ot_light_grey">
-        <v-list-item-title v-text="$t(menu.title)"></v-list-item-title>
+        <v-list-item-title v-text="$t(menu.title)" />
       </v-list-item>
       <template v-for="(item, index) in menu.children">
         <v-list-item
@@ -40,31 +44,30 @@
           router
           exact
         >
-          <v-list-item-title v-text="$t(item.title)"></v-list-item-title>
+          <v-list-item-title v-text="$t(item.title)" />
         </v-list-item>
         <v-divider
           v-if="index < menu.length - 1"
           :key="index"
-        ></v-divider>
+        />
       </template>
-
     </v-list>
   </v-menu>
 </template>
 
 <script lang="ts">
-  import {defineComponent} from '@nuxtjs/composition-api'
+import { defineComponent } from '@nuxtjs/composition-api'
 
-  export default defineComponent({
-    props: {
-      menu: {
-        type: Object,
-        required: true
-      },
-      avatar: {
-        type: Boolean,
-        required: false
-      }
+export default defineComponent({
+  props: {
+    menu: {
+      type: Object,
+      required: true
+    },
+    avatar: {
+      type: Boolean,
+      required: false
     }
-  })
+  }
+})
 </script>

+ 23 - 21
components/Layout/Header/Notification.vue

@@ -3,11 +3,14 @@
     <template v-slot:activator="{ on, attrs }">
       <v-tooltip bottom>
         <template v-slot:activator="{ on, attrs }">
-          <v-btn icon
-                 v-bind="attrs"
-                 v-on="on"
+          <v-btn
+            icon
+            v-bind="attrs"
+            v-on="on"
           >
-            <v-icon class="ot_white--text" small>fa-bell</v-icon>
+            <v-icon class="ot_white--text" small>
+              fa-bell
+            </v-icon>
           </v-btn>
         </template>
         <span>{{ $t('notification') }}</span>
@@ -16,37 +19,36 @@
     <v-list dense>
       <template v-for="(item, index) in properties.menu">
         <v-list-item :key="item.title">
-          <v-list-item-title v-text="$t(item.title)"></v-list-item-title>
+          <v-list-item-title v-text="$t(item.title)" />
         </v-list-item>
         <v-divider
           v-if="index < properties.menu.length - 1"
           :key="index"
-        ></v-divider>
+        />
       </template>
-
     </v-list>
   </v-menu>
 </template>
 
 <script lang="ts">
-  import {$useMenu} from '@/use/layout/menu'
-  import {defineComponent, reactive, Ref} from '@nuxtjs/composition-api'
-  import {AnyJson} from "~/types/interfaces";
-  import {UnwrapRef} from "@vue/composition-api";
+import { $useMenu } from '@/use/layout/menu'
+import { defineComponent, reactive, Ref } from '@nuxtjs/composition-api'
+import { UnwrapRef } from '@vue/composition-api'
+import { AnyJson } from '~/types/interfaces'
 
-  export default defineComponent({
-    setup() {
-      const menu:Ref<any> = $useMenu.setUpContext().useConfigurationMenuConstruct()
+export default defineComponent({
+  setup () {
+    const menu:Ref<any> = $useMenu.setUpContext().useConfigurationMenuConstruct()
 
-      const properties:UnwrapRef<AnyJson> = reactive({
-        menu: menu
-      })
+    const properties:UnwrapRef<AnyJson> = reactive({
+      menu
+    })
 
-      return {
-        properties
-      }
+    return {
+      properties
     }
-  })
+  }
+})
 </script>
 
 <style scoped>

+ 21 - 21
components/Layout/Loading.vue

@@ -3,35 +3,35 @@
     <v-progress-circular
       indeterminate
       size="64"
-    ></v-progress-circular>
+    />
   </v-overlay>
 </template>
 
 <script lang="ts">
-  import {defineComponent, ref, Ref} from '@nuxtjs/composition-api'
+import { defineComponent, ref, Ref } from '@nuxtjs/composition-api'
 
-  export default defineComponent({
-    setup() {
-      const loading:Ref<boolean> = ref(false)
+export default defineComponent({
+  setup () {
+    const loading:Ref<boolean> = ref(false)
 
-      const set = (num: number) => {
-        loading.value = true
-      }
-      const start = () => {
-        loading.value = true
-      }
-      const finish = () => {
-        loading.value = false
-      }
+    const set = (num: number) => {
+      loading.value = true
+    }
+    const start = () => {
+      loading.value = true
+    }
+    const finish = () => {
+      loading.value = false
+    }
 
-      return {
-        loading,
-        start,
-        finish,
-        set
-      }
+    return {
+      loading,
+      start,
+      finish,
+      set
     }
-  })
+  }
+})
 </script>
 
 <style scoped>

+ 25 - 21
components/Layout/Menu.vue

@@ -16,10 +16,12 @@
           exact
         >
           <v-list-item-action>
-            <v-icon class="ot_menu_color--text" small>{{ item.icon }}</v-icon>
+            <v-icon class="ot_menu_color--text" small>
+              {{ item.icon }}
+            </v-icon>
           </v-list-item-action>
           <v-list-item-content>
-            <v-list-item-title class="ot_menu_color--text" v-text="$t(item.title)"/>
+            <v-list-item-title class="ot_menu_color--text" v-text="$t(item.title)" />
           </v-list-item-content>
         </v-list-item>
 
@@ -30,10 +32,12 @@
         >
           <template v-slot:activator>
             <v-list-item-action>
-              <v-icon class="ot_menu_color--text" small>{{ item.icon }}</v-icon>
+              <v-icon class="ot_menu_color--text" small>
+                {{ item.icon }}
+              </v-icon>
             </v-list-item-action>
             <v-list-item-content>
-              <v-list-item-title class="ot_menu_color--text" v-text="$t(item.title)"/>
+              <v-list-item-title class="ot_menu_color--text" v-text="$t(item.title)" />
             </v-list-item-content>
           </template>
 
@@ -46,36 +50,36 @@
             exact
           >
             <v-list-item-action>
-              <v-icon class="ot_menu_color--text" small>{{ child.icon }}</v-icon>
+              <v-icon class="ot_menu_color--text" small>
+                {{ child.icon }}
+              </v-icon>
             </v-list-item-action>
             <v-list-item-content>
-              <v-list-item-title class="ot_menu_color--text" v-text="$t(child.title)"/>
+              <v-list-item-title class="ot_menu_color--text" v-text="$t(child.title)" />
             </v-list-item-content>
           </v-list-item>
         </v-list-group>
       </div>
-
     </v-list>
-
   </v-navigation-drawer>
 </template>
 
 <script lang="ts">
-  import {defineComponent} from '@nuxtjs/composition-api'
-  import {ItemsMenu} from "~/types/interfaces";
+import { defineComponent } from '@nuxtjs/composition-api'
+import { ItemsMenu } from '~/types/interfaces'
 
-  export default defineComponent({
-    props: {
-      menu: {
-        type: Array as () => ItemsMenu,
-        required: true
-      },
-      miniVariant: {
-        type: Boolean,
-        required: true
-      }
+export default defineComponent({
+  props: {
+    menu: {
+      type: Array as () => ItemsMenu,
+      required: true
+    },
+    miniVariant: {
+      type: Boolean,
+      required: true
     }
-  })
+  }
+})
 </script>
 
 <style scoped>

+ 31 - 28
components/Layout/SubHeader/ActivityYear.vue

@@ -5,47 +5,50 @@
       class="activity-year-input"
       type="number"
       :data="activityYear"
-      v-on:update="updateActivityYear">
+      @update="updateActivityYear"
+    >
       <template v-slot:xeditable.read="{inputValue}">
-        <v-icon aria-hidden="false" class="ot_green--text" x-small>fas fa-edit</v-icon>
-        <strong class="ot_green--text"> {{ inputValue}} <span v-if="yearPlusOne">/ {{ parseInt(inputValue) + 1 }}</span></strong>
+        <v-icon aria-hidden="false" class="ot_green--text" x-small>
+          fas fa-edit
+        </v-icon>
+        <strong class="ot_green--text"> {{ inputValue }} <span v-if="yearPlusOne">/ {{ parseInt(inputValue) + 1 }}</span></strong>
       </template>
     </UiXeditableText>
   </main>
 </template>
 
 <script lang="ts">
-  import {defineComponent, useContext} from '@nuxtjs/composition-api'
-  import {$useMyProfileUpdater} from "~/use/updater/useMyProfileUpdater";
-  import {$organizationProfile} from "~/services/profile/organizationProfile";
-  import {$useDirtyForm} from "~/use/form/useDirtyForm";
+import { defineComponent, useContext } from '@nuxtjs/composition-api'
+import { $useMyProfileUpdater } from '~/use/updater/useMyProfileUpdater'
+import { $organizationProfile } from '~/services/profile/organizationProfile'
+import { $useDirtyForm } from '~/use/form/useDirtyForm'
 
-  export default defineComponent({
-    setup() {
-      const {store, $dataPersister} = useContext()
-      const {updateMyProfile, setActivityYear, activityYear} = $useMyProfileUpdater(store, $dataPersister)
-      const {markFormAsNotDirty} = $useDirtyForm(store)
+export default defineComponent({
+  setup () {
+    const { store, $dataPersister } = useContext()
+    const { updateMyProfile, setActivityYear, activityYear } = $useMyProfileUpdater(store, $dataPersister)
+    const { markFormAsNotDirty } = $useDirtyForm(store)
 
-      const organizationProfile = $organizationProfile(store);
+    const organizationProfile = $organizationProfile(store)
 
-      let yearPlusOne:boolean = !organizationProfile.isManagerProduct()
-      const label:string = organizationProfile.isSchool() ? 'schooling_year' : organizationProfile.isArtist() ? 'season_year' : 'cotisation_year'
+    const yearPlusOne:boolean = !organizationProfile.isManagerProduct()
+    const label:string = organizationProfile.isSchool() ? 'schooling_year' : organizationProfile.isArtist() ? 'season_year' : 'cotisation_year'
 
-      const updateActivityYear = async (newDate:number) =>{
-        markFormAsNotDirty()
-        setActivityYear(newDate)
-        await updateMyProfile()
-        window.location.reload()
-      }
+    const updateActivityYear = async (newDate:number) => {
+      markFormAsNotDirty()
+      setActivityYear(newDate)
+      await updateMyProfile()
+      window.location.reload()
+    }
 
-      return {
-        activityYear,
-        label,
-        yearPlusOne,
-        updateActivityYear
-      }
+    return {
+      activityYear,
+      label,
+      yearPlusOne,
+      updateActivityYear
     }
-  })
+  }
+})
 </script>
 
 <style lang="scss">

+ 36 - 36
components/Layout/SubHeader/Breadcrumbs.vue

@@ -1,48 +1,48 @@
 <template>
   <v-breadcrumbs
-    :items="items">
-  </v-breadcrumbs>
+    :items="items"
+  />
 </template>
 
 <script lang="ts">
-  import {defineComponent, computed, useContext, useRouter, ComputedRef} from '@nuxtjs/composition-api'
-  import {AnyJson} from "~/types/interfaces";
+import { defineComponent, computed, useContext, useRouter, ComputedRef } from '@nuxtjs/composition-api'
+import { AnyJson } from '~/types/interfaces'
 
-  export default defineComponent({
-    setup() {
-      const {route, $config, app: {i18n}} = useContext()
-      const $router = useRouter()
-      const homeUrl:string = $config.baseURL_adminLegacy
+export default defineComponent({
+  setup () {
+    const { route, $config, app: { i18n } } = useContext()
+    const $router = useRouter()
+    const homeUrl:string = $config.baseURL_adminLegacy
 
-      const items:ComputedRef<Array<AnyJson>> = computed(()=>{
-        const crumbs:Array<AnyJson> = []
-        crumbs.push({
-          text: i18n.t('welcome'),
-          href: homeUrl
-        })
-
-        const fullPath:string = route.value.path
-        const params:Array<string> = fullPath.startsWith('/') ? fullPath.substring(1).split('/') : fullPath.split('/')
-        let path:string = ''
-        params.forEach((param) => {
-          path = `${path}/${param}`
-          const match = $router.match(path)
-          if (match.name !== null) {
-            crumbs.push({
-              text: !parseInt(param, 10) ? i18n.t(param + '_breadcrumbs') : i18n.t('item'),
-              nuxt: true,
-              'exact-path':true,
-              to: path
-            })
-          }
-        })
+    const items:ComputedRef<Array<AnyJson>> = computed(() => {
+      const crumbs:Array<AnyJson> = []
+      crumbs.push({
+        text: i18n.t('welcome'),
+        href: homeUrl
+      })
 
-        return crumbs
+      const fullPath:string = route.value.path
+      const params:Array<string> = fullPath.startsWith('/') ? fullPath.substring(1).split('/') : fullPath.split('/')
+      let path:string = ''
+      params.forEach((param) => {
+        path = `${path}/${param}`
+        const match = $router.match(path)
+        if (match.name !== null) {
+          crumbs.push({
+            text: !parseInt(param, 10) ? i18n.t(param + '_breadcrumbs') : i18n.t('item'),
+            nuxt: true,
+            'exact-path': true,
+            to: path
+          })
+        }
       })
 
-      return {
-        items
-      }
+      return crumbs
+    })
+
+    return {
+      items
     }
-  })
+  }
+})
 </script>

+ 46 - 50
components/Layout/SubHeader/DataTiming.vue

@@ -1,6 +1,5 @@
 <template>
   <main class="d-flex align-baseline">
-
     <span class="mr-2 ot_dark_grey--text font-weight-bold">{{ $t('display_data') }} : </span>
 
     <v-btn-toggle
@@ -21,73 +20,70 @@
       <v-btn max-height="25" class="font-weight-normal text-caption">
         {{ $t('future') }}
       </v-btn>
-
     </v-btn-toggle>
-
   </main>
 </template>
 
 <script lang="ts">
-  import {defineComponent, onUnmounted, ref, useContext, watch, Ref} from '@nuxtjs/composition-api'
-  import {$useDirtyForm} from "~/use/form/useDirtyForm";
-  import {$useMyProfileUpdater} from "~/use/updater/useMyProfileUpdater";
-  import {WatchStopHandle} from "@vue/composition-api";
-
-  export default defineComponent({
-    setup() {
-      const {store, $dataPersister} = useContext()
-      const {markFormAsNotDirty} = $useDirtyForm(store)
-      const {updateMyProfile, setHistorical, historical} = $useMyProfileUpdater(store, $dataPersister)
-
-      const historicalBtn:Ref<Array<number>> = initHistoricalBtn(historical.value)
-
-      const unwatch:WatchStopHandle = watch(historicalBtn, async (newValue) => {
-        const historicalChoice:Array<string> = initHistoricalChoice(newValue)
-
-        setHistorical(historicalChoice)
-        markFormAsNotDirty()
-        await updateMyProfile()
-        window.location.reload()
-      })
-
-      onUnmounted(()=>{
-        unwatch()
-      })
-
-      return {
-        historicalBtn
-      }
+import { defineComponent, onUnmounted, ref, useContext, watch, Ref } from '@nuxtjs/composition-api'
+import { WatchStopHandle } from '@vue/composition-api'
+import { $useDirtyForm } from '~/use/form/useDirtyForm'
+import { $useMyProfileUpdater } from '~/use/updater/useMyProfileUpdater'
+
+export default defineComponent({
+  setup () {
+    const { store, $dataPersister } = useContext()
+    const { markFormAsNotDirty } = $useDirtyForm(store)
+    const { updateMyProfile, setHistorical, historical } = $useMyProfileUpdater(store, $dataPersister)
+
+    const historicalBtn:Ref<Array<number>> = initHistoricalBtn(historical.value)
+
+    const unwatch:WatchStopHandle = watch(historicalBtn, async (newValue) => {
+      const historicalChoice:Array<string> = initHistoricalChoice(newValue)
+
+      setHistorical(historicalChoice)
+      markFormAsNotDirty()
+      await updateMyProfile()
+      window.location.reload()
+    })
+
+    onUnmounted(() => {
+      unwatch()
+    })
+
+    return {
+      historicalBtn
     }
-  })
+  }
+})
 
-  /**
+/**
    * Prépare le tableau de valeur numéraire devant être passé au component v-btn-toggle
    * @param historical
    */
-  function initHistoricalBtn(historical:Array<any>){
-    const timeChoice:Ref<Array<number>> = ref(Array<number>())
-    const historicalArray:Array<any> = ['past', 'present', 'future']
+function initHistoricalBtn (historical:Array<any>) {
+  const timeChoice:Ref<Array<number>> = ref(Array<number>())
+  const historicalArray:Array<any> = ['past', 'present', 'future']
 
-    for(const key in historicalArray){
-      if (historical[historicalArray[key]])
-        timeChoice.value.push(parseInt(key))
-    }
-    return timeChoice
+  for (const key in historicalArray) {
+    if (historical[historicalArray[key]]) { timeChoice.value.push(parseInt(key)) }
   }
+  return timeChoice
+}
 
-  /**
+/**
    * Transforme le résultat renvoyé par le component v-btn-toggle pour l'enregistrer coté AccessProfile
    * @param historical
    */
-  function initHistoricalChoice(historical:Array<any>){
-    const historicalArray:Array<any> = ['past', 'present', 'future']
+function initHistoricalChoice (historical:Array<any>) {
+  const historicalArray:Array<any> = ['past', 'present', 'future']
 
-    const historicalChoice:Array<string> = []
-    for(const key in historical){
-      historicalChoice.push(historicalArray[historical[key]])
-    }
-    return historicalChoice
+  const historicalChoice:Array<string> = []
+  for (const key in historical) {
+    historicalChoice.push(historicalArray[historical[key]])
   }
+  return historicalChoice
+}
 </script>
 
 <style scoped lang="scss">

+ 43 - 42
components/Layout/SubHeader/DataTimingRange.vue

@@ -1,6 +1,5 @@
 <template>
   <main class="d-flex align-baseline">
-
     <div v-if="show" class="d-flex align-baseline">
       <span class="mr-2 ot_dark_grey--text font-weight-bold">{{ $t('period_choose') }}</span>
       <UiInputDatePicker
@@ -9,8 +8,9 @@
         :data="datesRange"
         :range="true"
         :dense="true"
-        :singleLine="true"
-        v-on:update="updateDateTimeRange"/>
+        :single-line="true"
+        @update="updateDateTimeRange"
+      />
     </div>
 
     <v-tooltip bottom>
@@ -19,65 +19,66 @@
           class="time-btn"
           max-height="25"
           v-bind="attrs"
-          v-on="on"
-          @click="show=!show"
           elevation="0"
           max-width="10px"
           min-width="10px"
+          v-on="on"
+          @click="show=!show"
         >
-          <v-icon color="ot_grey" class="font-weight-normal" x-small>fas fa-history</v-icon>
+          <v-icon color="ot_grey" class="font-weight-normal" x-small>
+            fas fa-history
+          </v-icon>
         </v-btn>
       </template>
       <span>{{ $t('history_help') }}</span>
     </v-tooltip>
-
   </main>
 </template>
 
 <script lang="ts">
-  import {defineComponent, onUnmounted, ref, useContext, watch, computed, ComputedRef} from '@nuxtjs/composition-api'
-  import {$useMyProfileUpdater} from "~/use/updater/useMyProfileUpdater";
-  import {$useDirtyForm} from "~/use/form/useDirtyForm";
-  import {Ref, WatchStopHandle} from "@vue/composition-api";
+import { defineComponent, onUnmounted, ref, useContext, watch, computed, ComputedRef } from '@nuxtjs/composition-api'
+import { Ref, WatchStopHandle } from '@vue/composition-api'
+import { $useMyProfileUpdater } from '~/use/updater/useMyProfileUpdater'
+import { $useDirtyForm } from '~/use/form/useDirtyForm'
 
-  export default defineComponent({
-    setup(_, {emit}) {
-      const {store, $dataPersister} = useContext()
-      const {markFormAsNotDirty} = $useDirtyForm(store)
-      const {updateMyProfile, setHistoricalRange, historical} = $useMyProfileUpdater(store, $dataPersister)
+export default defineComponent({
+  setup (_, { emit }) {
+    const { store, $dataPersister } = useContext()
+    const { markFormAsNotDirty } = $useDirtyForm(store)
+    const { updateMyProfile, setHistoricalRange, historical } = $useMyProfileUpdater(store, $dataPersister)
 
-      const datesRange:ComputedRef<Array<string>> = computed(()=>{
-        return [historical.value.dateStart, historical.value.dateEnd]
-      })
+    const datesRange:ComputedRef<Array<string>> = computed(() => {
+      return [historical.value.dateStart, historical.value.dateEnd]
+    })
 
-      const show:Ref<boolean> = ref(false)
-      if(historical.value.dateStart || historical.value.dateEnd){
-        show.value = true
-        emit('showDateTimeRange', true)
-      }
+    const show:Ref<boolean> = ref(false)
+    if (historical.value.dateStart || historical.value.dateEnd) {
+      show.value = true
+      emit('showDateTimeRange', true)
+    }
 
-      const unwatch:WatchStopHandle = watch(show,  (newValue) => {
-        emit('showDateTimeRange', newValue)
-      })
+    const unwatch:WatchStopHandle = watch(show, (newValue) => {
+      emit('showDateTimeRange', newValue)
+    })
 
-      onUnmounted(()=>{
-        unwatch()
-      })
+    onUnmounted(() => {
+      unwatch()
+    })
 
-      const updateDateTimeRange = async (dates:Array<string>):Promise<any> =>{
-        setHistoricalRange(dates)
-        markFormAsNotDirty()
-        await updateMyProfile()
-        window.location.reload()
-      }
+    const updateDateTimeRange = async (dates:Array<string>):Promise<any> => {
+      setHistoricalRange(dates)
+      markFormAsNotDirty()
+      await updateMyProfile()
+      window.location.reload()
+    }
 
-      return {
-        show,
-        datesRange,
-        updateDateTimeRange
-      }
+    return {
+      show,
+      datesRange,
+      updateDateTimeRange
     }
-  })
+  }
+})
 </script>
 
 <style lang="scss">

+ 59 - 61
components/Layout/SubHeader/PersonnalizedList.vue

@@ -10,8 +10,8 @@
       <template v-slot:activator="{ on, attrs }">
         <span
           v-bind="attrs"
-          v-on="on"
           class="ot_green--text"
+          v-on="on"
         >
           {{ $t('my_list') }}
         </span>
@@ -21,13 +21,12 @@
           <v-list-item-title>
             <UiInputAutocomplete
               :label="$t('searchList')"
-              :isLoading="isLoading"
+              :is-loading="isLoading"
               :items="items"
-              :itemText="['label']"
-              v-on:update="goOn"
-              :returnObject="true"
-            >
-            </UiInputAutocomplete>
+              :item-text="['label']"
+              :return-object="true"
+              @update="goOn"
+            />
           </v-list-item-title>
         </v-list-item>
       </v-list>
@@ -36,83 +35,82 @@
 </template>
 
 <script lang="ts">
-  import {computed, defineComponent, useContext, useFetch, ref, Ref, ComputedRef} from '@nuxtjs/composition-api'
-  import {QUERY_TYPE} from "~/types/enums";
-  import {PersonalizedList} from "~/models/Access/PersonalizedList";
-  import {repositoryHelper} from "~/services/store/repository";
-  import {Collection} from "@vuex-orm/core";
-  import {AnyJson} from "~/types/interfaces";
-  import {$objectProperties} from "~/services/utils/objectProperties";
+import { computed, defineComponent, useContext, useFetch, ref, Ref, ComputedRef } from '@nuxtjs/composition-api'
+import { Collection } from '@vuex-orm/core'
+import { QUERY_TYPE } from '~/types/enums'
+import { PersonalizedList } from '~/models/Access/PersonalizedList'
+import { repositoryHelper } from '~/services/store/repository'
+import { AnyJson } from '~/types/interfaces'
+import { $objectProperties } from '~/services/utils/objectProperties'
 
-  export default defineComponent({
-    fetchOnServer: false,
-    setup() {
-      const {$dataProvider, $config} = useContext()
-      const isLoading:Ref<boolean> = ref(true)
-      const homeUrl:string = $config.baseURL_adminLegacy
+export default defineComponent({
+  fetchOnServer: false,
+  setup () {
+    const { $dataProvider, $config } = useContext()
+    const isLoading:Ref<boolean> = ref(true)
+    const homeUrl:string = $config.baseURL_adminLegacy
 
-      useFetch(async ()=>{
-        await $dataProvider.invoke({
-          type: QUERY_TYPE.MODEL,
-          model: PersonalizedList
-        })
-        isLoading.value = false
+    useFetch(async () => {
+      await $dataProvider.invoke({
+        type: QUERY_TYPE.MODEL,
+        model: PersonalizedList
       })
+      isLoading.value = false
+    })
 
-      const items:ComputedRef<Array<AnyJson>>  = computed(() => {
-        const lists = repositoryHelper.findCollectionFromModel(PersonalizedList) as Collection<PersonalizedList>
+    const items:ComputedRef<Array<AnyJson>> = computed(() => {
+      const lists = repositoryHelper.findCollectionFromModel(PersonalizedList) as Collection<PersonalizedList>
 
-        let listsGroupByKeyMenu:Array<AnyJson> = groupListByKey(lists)
+      let listsGroupByKeyMenu:Array<AnyJson> = groupListByKey(lists)
 
-        listsGroupByKeyMenu = $objectProperties.sortObjectByKey(listsGroupByKeyMenu)
+      listsGroupByKeyMenu = $objectProperties.sortObjectByKey(listsGroupByKeyMenu)
 
-        return constructAutoCompleteItems(listsGroupByKeyMenu)
-      })
+      return constructAutoCompleteItems(listsGroupByKeyMenu)
+    })
 
-      const goOn = (list:PersonalizedList) => {
-        window.location.href = `${homeUrl}/${list.entity}/list/${list.id}`
-      }
+    const goOn = (list:PersonalizedList) => {
+      window.location.href = `${homeUrl}/${list.entity}/list/${list.id}`
+    }
 
-      return {
-        items,
-        isLoading,
-        goOn
-      }
+    return {
+      items,
+      isLoading,
+      goOn
     }
-  })
+  }
+})
 
-  /**
+/**
    * On regroupe la list par clé afin de constituer les groups
    * @param lists
    */
-  function groupListByKey(lists:Collection<PersonalizedList>): Array<AnyJson>{
-    const {app:{i18n}} = useContext()
-    let listsGroupByKeyMenu:any = {}
-    for(const list of lists){
-      const key = i18n.t(list.menuKey) as string
-      listsGroupByKeyMenu[key] = listsGroupByKeyMenu[key] ?? []
-      listsGroupByKeyMenu[key].push(list)
-    }
-    return listsGroupByKeyMenu
+function groupListByKey (lists:Collection<PersonalizedList>): Array<AnyJson> {
+  const { app: { i18n } } = useContext()
+  const listsGroupByKeyMenu:any = {}
+  for (const list of lists) {
+    const key = i18n.t(list.menuKey) as string
+    listsGroupByKeyMenu[key] = listsGroupByKeyMenu[key] ?? []
+    listsGroupByKeyMenu[key].push(list)
   }
+  return listsGroupByKeyMenu
+}
 
-  /**
+/**
    * On construit la list d'Item, constituée de Header et d'Item "sélectionnable"
    * @param listsGroupByKeyMenu
    */
-  function constructAutoCompleteItems(listsGroupByKeyMenu:Array<any>){
-    const items: any = []
-    for(const key in listsGroupByKeyMenu){
-      items.push({ header: key })
-      for(const item of listsGroupByKeyMenu[key]){
-        items.push(item)
-      }
+function constructAutoCompleteItems (listsGroupByKeyMenu:Array<any>) {
+  const items: any = []
+  for (const key in listsGroupByKeyMenu) {
+    items.push({ header: key })
+    for (const item of listsGroupByKeyMenu[key]) {
+      items.push(item)
     }
-    return items
   }
+  return items
+}
 </script>
 
-
 <style scoped>
 
 </style>

+ 13 - 14
components/Layout/Subheader.vue

@@ -5,36 +5,35 @@
       flat
       tile
     >
-      <LayoutSubHeaderBreadcrumbs class="mr-auto"></LayoutSubHeaderBreadcrumbs>
+      <LayoutSubHeaderBreadcrumbs class="mr-auto" />
 
       <v-card
         class="d-md-flex ot_super_light_grey pt-2 mr-6  align-baseline"
         flat
         tile
       >
-        <LayoutSubHeaderActivityYear class="activity-year" v-if="!showDateTimeRange"></LayoutSubHeaderActivityYear>
-        <LayoutSubHeaderDataTiming v-if="!showDateTimeRange" class="data-timing ml-2"></LayoutSubHeaderDataTiming>
-        <LayoutSubHeaderDataTimingRange class="data-timing-range ml-n1" v-on:showDateTimeRange="showDateTimeRange=$event"></LayoutSubHeaderDataTimingRange>
-        <LayoutSubHeaderPersonnalizedList class="personalized-list ml-2"></LayoutSubHeaderPersonnalizedList>
+        <LayoutSubHeaderActivityYear v-if="!showDateTimeRange" class="activity-year" />
+        <LayoutSubHeaderDataTiming v-if="!showDateTimeRange" class="data-timing ml-2" />
+        <LayoutSubHeaderDataTimingRange class="data-timing-range ml-n1" @showDateTimeRange="showDateTimeRange=$event" />
+        <LayoutSubHeaderPersonnalizedList class="personalized-list ml-2" />
       </v-card>
     </v-card>
   </main>
 </template>
 
 <script lang="ts">
-  import {defineComponent, ref, Ref} from '@nuxtjs/composition-api'
+import { defineComponent, ref, Ref } from '@nuxtjs/composition-api'
 
-  export default defineComponent({
-    setup() {
-      const showDateTimeRange:Ref<boolean> = ref(false)
-      return {
-        showDateTimeRange
-      }
+export default defineComponent({
+  setup () {
+    const showDateTimeRange:Ref<boolean> = ref(false)
+    return {
+      showDateTimeRange
     }
-  })
+  }
+})
 </script>
 
-
 <style scoped>
 
 </style>

+ 35 - 36
components/Ui/Button/Delete.vue

@@ -29,48 +29,47 @@
 </template>
 
 <script lang="ts">
-  import {defineComponent, useContext, ref, Ref} from '@nuxtjs/composition-api'
-  import {DataDeleterArgs} from "~/types/interfaces";
-  import {TYPE_ALERT} from "~/types/enums";
-  import {alert} from "~/types/interfaces";
+import { defineComponent, useContext, ref, Ref } from '@nuxtjs/composition-api'
+import { DataDeleterArgs, alert } from '~/types/interfaces'
+import { TYPE_ALERT } from '~/types/enums'
 
-  export default defineComponent({
-    props: {
-      deleteArgs: {
-        type: Object as () => DataDeleterArgs,
-        required: true
-      }
-    },
-    setup(props){
-      const {$dataDeleter, store, app: {i18n}} = useContext()
-      const showDialog:Ref<boolean> = ref(false)
+export default defineComponent({
+  props: {
+    deleteArgs: {
+      type: Object as () => DataDeleterArgs,
+      required: true
+    }
+  },
+  setup (props) {
+    const { $dataDeleter, store, app: { i18n } } = useContext()
+    const showDialog:Ref<boolean> = ref(false)
 
-      const deleteItem = async () =>{
-        try{
-          await $dataDeleter.invoke(props.deleteArgs)
-          const alert:alert = {
-            type: TYPE_ALERT.SUCCESS,
-            message: i18n.t('deleteSuccess') as string
-          }
-          store.commit('page/setAlert', alert)
-        }catch (error) {
-          const alert:alert = {
-            type: TYPE_ALERT.ALERT,
-            message: error.message
-          }
-          store.commit('page/setAlert', alert)
+    const deleteItem = async () => {
+      try {
+        await $dataDeleter.invoke(props.deleteArgs)
+        const alert:alert = {
+          type: TYPE_ALERT.SUCCESS,
+          message: i18n.t('deleteSuccess') as string
+        }
+        store.commit('page/setAlert', alert)
+      } catch (error) {
+        const alert:alert = {
+          type: TYPE_ALERT.ALERT,
+          message: error.message
         }
-        showDialog.value = false
+        store.commit('page/setAlert', alert)
       }
+      showDialog.value = false
+    }
 
-      return {
-        alertDeleteItem : () => showDialog.value = true,
-        closeDialog : () => showDialog.value = false,
-        deleteItem,
-        showDialog
-      }
+    return {
+      alertDeleteItem: () => showDialog.value = true,
+      closeDialog: () => showDialog.value = false,
+      deleteItem,
+      showDialog
     }
-  })
+  }
+})
 </script>
 
 <style scoped>

+ 35 - 34
components/Ui/Card.vue

@@ -6,55 +6,56 @@
     min-height="200"
   >
     <v-card-title>
-      <slot name="card.title"></slot>
+      <slot name="card.title" />
     </v-card-title>
     <v-card-text>
-      <slot name="card.text"></slot>
+      <slot name="card.text" />
     </v-card-text>
     <v-card-actions>
-      <v-spacer></v-spacer>
+      <v-spacer />
       <v-btn icon>
-        <NuxtLink :to="link" class="no-decoration"><v-icon>mdi-pencil</v-icon></NuxtLink>
+        <NuxtLink :to="link" class="no-decoration">
+          <v-icon>mdi-pencil</v-icon>
+        </NuxtLink>
       </v-btn>
-      <UiButtonDelete :deleteArgs="args"></UiButtonDelete>
-      <slot name="card.action"></slot>
+      <UiButtonDelete :delete-args="args" />
+      <slot name="card.action" />
     </v-card-actions>
   </v-card>
 </template>
 
 <script lang="ts">
-  import {defineComponent} from '@nuxtjs/composition-api'
-  import {QUERY_TYPE} from "~/types/enums";
-  import {DataDeleterArgs} from "~/types/interfaces";
+import { defineComponent } from '@nuxtjs/composition-api'
+import { QUERY_TYPE } from '~/types/enums'
+import { DataDeleterArgs } from '~/types/interfaces'
 
-  export default defineComponent({
-    props: {
-      link:{
-        type: String,
-        required: true
-      },
-      model:{
-        type: Function,
-        required: true
-      },
-      id:{
-        type: Number,
-        required: true
-      }
+export default defineComponent({
+  props: {
+    link: {
+      type: String,
+      required: true
     },
-    setup(props) {
-      const args: DataDeleterArgs = {
-        type: QUERY_TYPE.MODEL,
-        model: props.model,
-        id: props.id
-      }
-      return {
-        args
-      }
+    model: {
+      type: Function,
+      required: true
+    },
+    id: {
+      type: Number,
+      required: true
+    }
+  },
+  setup (props) {
+    const args: DataDeleterArgs = {
+      type: QUERY_TYPE.MODEL,
+      model: props.model,
+      id: props.id
     }
-  })
+    return {
+      args
+    }
+  }
+})
 </script>
 
-
 <style scoped>
 </style>

+ 91 - 93
components/Ui/DataTable.vue

@@ -1,112 +1,110 @@
 <template>
-    <v-col
-      cols="12"
-      sm="12"
+  <v-col
+    cols="12"
+    sm="12"
+  >
+    <v-data-table
+      :headers="headersWithItem"
+      :items="entries"
+      :server-items-length="totalEntries"
+      :loading="$fetchState.pending"
+      class="elevation-1"
     >
-      <v-data-table
-        :headers="headersWithItem"
-        :items="entries"
-        :server-items-length="totalEntries"
-        :loading="$fetchState.pending"
-        class="elevation-1"
-      >
+      <template v-for="header in headersWithItem" v-slot:[header.item]="props">
+        <slot :name="header.item" v-bind="props">
+          {{ props.item[header.value] }}
+        </slot>
+      </template>
 
-        <template v-for="header in headersWithItem" v-slot:[header.item]="props">
-          <slot :name="header.item" v-bind="props">
-            {{ props.item[header.value] }}
-          </slot>
-        </template>
-
-        <template v-slot:item.actions="{ item }">
-          <v-icon
-            small
-            class="mr-2"
-            @click="editItem(item)"
-          >
-            mdi-pencil
-          </v-icon>
-          <v-icon
-            small
-            @click="deleteItem(item)"
-          >
-            mdi-delete
-          </v-icon>
-        </template>
-
-      </v-data-table>
-    </v-col>
+      <template v-slot:item.actions="{ item }">
+        <v-icon
+          small
+          class="mr-2"
+          @click="editItem(item)"
+        >
+          mdi-pencil
+        </v-icon>
+        <v-icon
+          small
+          @click="deleteItem(item)"
+        >
+          mdi-delete
+        </v-icon>
+      </template>
+    </v-data-table>
+  </v-col>
 </template>
 
 <script lang="ts">
-  import {defineComponent, ref, useContext, useFetch, computed, toRefs, Ref} from '@nuxtjs/composition-api'
-  import {Query} from "@vuex-orm/core";
-  import {AnyJson} from "~/types/interfaces";
-  import {queryHelper} from "~/services/store/query";
-  import {QUERY_TYPE} from "~/types/enums";
+import { defineComponent, ref, useContext, useFetch, computed, toRefs, Ref } from '@nuxtjs/composition-api'
+import { Query } from '@vuex-orm/core'
+import { AnyJson } from '~/types/interfaces'
+import { queryHelper } from '~/services/store/query'
+import { QUERY_TYPE } from '~/types/enums'
 
-  export default defineComponent({
-    props: {
-      rootModel:{
-        type: Function,
-        required: true
-      },
-      rootId:{
-        type: Number,
-        required: true
-      },
-      model:{
-        type: Function,
-        required: true
-      },
-      query:{
-        type: Object as () => Query,
-        required: true
-      },
-      headers:{
-        type: Array,
-        required: true
-      }
+export default defineComponent({
+  props: {
+    rootModel: {
+      type: Function,
+      required: true
+    },
+    rootId: {
+      type: Number,
+      required: true
+    },
+    model: {
+      type: Function,
+      required: true
     },
-    setup(props) {
-      const {rootModel, rootId, model, headers, query} = toRefs(props);
+    query: {
+      type: Object as () => Query,
+      required: true
+    },
+    headers: {
+      type: Array,
+      required: true
+    }
+  },
+  setup (props) {
+    const { rootModel, rootId, model, headers, query } = toRefs(props)
 
-      const headersWithItem = computed(()=>{
-        return headers.value.map((header:any)=>{
-          header['item'] = 'item.' + header.value
-          return header
-        })
+    const headersWithItem = computed(() => {
+      return headers.value.map((header:any) => {
+        header.item = 'item.' + header.value
+        return header
       })
+    })
 
-      const totalEntries:Ref<number> = ref(0)
-      const entries:Ref<Array<AnyJson>> = ref(Array<AnyJson>())
+    const totalEntries:Ref<number> = ref(0)
+    const entries:Ref<Array<AnyJson>> = ref(Array<AnyJson>())
 
-      const {$dataProvider} = useContext()
-      useFetch(async ()=>{
-        await $dataProvider.invoke({
-          type: QUERY_TYPE.MODEL,
-          model: model.value,
-          root_model: rootModel.value,
-          root_id: rootId.value
-        })
-        entries.value = queryHelper.getFlattenEntries(query.value);
-        totalEntries.value = entries.value.length
+    const { $dataProvider } = useContext()
+    useFetch(async () => {
+      await $dataProvider.invoke({
+        type: QUERY_TYPE.MODEL,
+        model: model.value,
+        root_model: rootModel.value,
+        root_id: rootId.value
       })
+      entries.value = queryHelper.getFlattenEntries(query.value)
+      totalEntries.value = entries.value.length
+    })
 
-      const itemId:Ref<number> = ref(0);
+    const itemId:Ref<number> = ref(0)
 
-      const editItem = (item: AnyJson) => {
-        itemId.value=item.id;
-      }
+    const editItem = (item: AnyJson) => {
+      itemId.value = item.id
+    }
 
-      // onUnmounted( useRepositoryHelper.cleanRepository(repository.value) )
+    // onUnmounted( useRepositoryHelper.cleanRepository(repository.value) )
 
-      return {
-        entries,
-        totalEntries,
-        headersWithItem,
-        editItem,
-        itemId
-      }
+    return {
+      entries,
+      totalEntries,
+      headersWithItem,
+      editItem,
+      itemId
     }
-  })
+  }
+})
 </script>

+ 24 - 22
components/Ui/ExpansionPanel.vue

@@ -1,28 +1,30 @@
 <template>
-     <v-expansion-panel :id="id" >
-       <v-expansion-panel-header class="ot_light_grey">
-         <v-icon class="ot_white--text ot_green icon">{{ icon }}</v-icon>
-         {{ $t(id) }}
-       </v-expansion-panel-header>
-       <v-expansion-panel-content>
-        <slot></slot>
-       </v-expansion-panel-content>
-     </v-expansion-panel>
- </template>
+  <v-expansion-panel :id="id">
+    <v-expansion-panel-header class="ot_light_grey">
+      <v-icon class="ot_white--text ot_green icon">
+        {{ icon }}
+      </v-icon>
+      {{ $t(id) }}
+    </v-expansion-panel-header>
+    <v-expansion-panel-content>
+      <slot />
+    </v-expansion-panel-content>
+  </v-expansion-panel>
+</template>
 
 <script lang="ts">
-    export default {
-      props: {
-        id:{
-          type: String,
-          required: true
-        },
-        icon:{
-          type: String,
-          required: false
-        }
-      }
+export default {
+  props: {
+    id: {
+      type: String,
+      required: true
+    },
+    icon: {
+      type: String,
+      required: false
     }
+  }
+}
 </script>
 
 <style scoped>
@@ -34,7 +36,7 @@
     flex: none;
   }
   .v-expansion-panel-header{
-    padding: 0px;
+    padding: 0;
   }
   .v-expansion-panel--active > .v-expansion-panel-header{
     min-height: 47px;

+ 99 - 100
components/Ui/Form.vue

@@ -9,7 +9,7 @@
       <v-container fluid class="container btnActions">
         <v-row>
           <v-col cols="12" sm="12">
-            <slot name="form.button"></slot>
+            <slot name="form.button" />
             <v-btn v-if="!readOnly" class="mr-4 ot_green ot_white--text" @click="submit">
               {{ $t('save') }}
             </v-btn>
@@ -17,12 +17,12 @@
         </v-row>
       </v-container>
 
-      <slot name="form.input" v-bind="{entry,updateRepository}"></slot>
+      <slot name="form.input" v-bind="{entry,updateRepository}" />
 
       <v-container fluid class="container btnActions">
         <v-row>
           <v-col cols="12" sm="12">
-            <slot name="form.button"></slot>
+            <slot name="form.button" />
             <v-btn v-if="!readOnly" class="mr-4 ot_green ot_white--text" @click="submit">
               {{ $t('save') }}
             </v-btn>
@@ -59,116 +59,115 @@
 </template>
 
 <script lang="ts">
-  import {computed, defineComponent, onBeforeMount, onBeforeUnmount, onUnmounted, reactive, toRefs, useContext, watch, ref, Ref, ComputedRef} from '@nuxtjs/composition-api'
-  import {repositoryHelper} from "~/services/store/repository";
-  import {queryHelper} from "~/services/store/query";
-  import {Query} from "@vuex-orm/core";
-  import {QUERY_TYPE, TYPE_ALERT} from "~/types/enums";
-  import {alert, AnyJson} from "~/types/interfaces";
-  import {$useDirtyForm} from "~/use/form/useDirtyForm";
-  import {ToRefs, UnwrapRef} from "@vue/composition-api";
-
-  export default defineComponent({
-    props: {
-      model: {
-        type: Function,
-        required: true
-      },
-      id: {
-        type: Number,
-        required: true
-      },
-      query: {
-        type: Object as () => Query,
-        required: true
-      },
+import { computed, defineComponent, onBeforeMount, onBeforeUnmount, onUnmounted, reactive, toRefs, useContext, watch, ref, Ref, ComputedRef } from '@nuxtjs/composition-api'
+import { Query } from '@vuex-orm/core'
+import { ToRefs, UnwrapRef } from '@vue/composition-api'
+import { repositoryHelper } from '~/services/store/repository'
+import { queryHelper } from '~/services/store/query'
+import { QUERY_TYPE, TYPE_ALERT } from '~/types/enums'
+import { alert, AnyJson } from '~/types/interfaces'
+import { $useDirtyForm } from '~/use/form/useDirtyForm'
+
+export default defineComponent({
+  props: {
+    model: {
+      type: Function,
+      required: true
     },
-    setup: function (props) {
-      const {$dataPersister, store, app: {router, i18n}} = useContext()
-      const {markFormAsDirty, markFormAsNotDirty} = $useDirtyForm(store)
-
-      const {id, query}:ToRefs = toRefs(props)
-      const properties:UnwrapRef<AnyJson> = reactive({
-        valid: false,
-        saveOk: false,
-        saveKo: false
-      })
-
-      const readOnly:Ref<boolean> = ref(false)
-
-      const entry:ComputedRef<AnyJson> = computed(() => {
-        return queryHelper.getFlattenEntry(query.value, id.value)
-      })
-
-      const updateRepository = (newValue: string, field: string) => {
-        markFormAsDirty()
-        repositoryHelper.updateStoreFromField(props.model, entry.value, newValue, field)
-      }
+    id: {
+      type: Number,
+      required: true
+    },
+    query: {
+      type: Object as () => Query,
+      required: true
+    }
+  },
+  setup (props) {
+    const { $dataPersister, store, app: { router, i18n } } = useContext()
+    const { markFormAsDirty, markFormAsNotDirty } = $useDirtyForm(store)
+
+    const { id, query }:ToRefs = toRefs(props)
+    const properties:UnwrapRef<AnyJson> = reactive({
+      valid: false,
+      saveOk: false,
+      saveKo: false
+    })
+
+    const readOnly:Ref<boolean> = ref(false)
+
+    const entry:ComputedRef<AnyJson> = computed(() => {
+      return queryHelper.getFlattenEntry(query.value, id.value)
+    })
+
+    const updateRepository = (newValue: string, field: string) => {
+      markFormAsDirty()
+      repositoryHelper.updateStoreFromField(props.model, entry.value, newValue, field)
+    }
 
-      const submit = async () => {
-        try {
-          markFormAsNotDirty()
-          await $dataPersister.invoke({
-            type: QUERY_TYPE.MODEL,
-            model: props.model,
-            id: id.value
-          })
-
-          const alert:alert = {
-            type: TYPE_ALERT.SUCCESS,
-            message: i18n.t('saveSuccess') as string
-          }
-          store.commit('page/setAlert', alert)
-
-        } catch (error) {
-          const alert:alert = {
-            type: TYPE_ALERT.ALERT,
-            message: error.message
-          }
-          store.commit('page/setAlert', alert)
+    const submit = async () => {
+      try {
+        markFormAsNotDirty()
+        await $dataPersister.invoke({
+          type: QUERY_TYPE.MODEL,
+          model: props.model,
+          id: id.value
+        })
+
+        const alert:alert = {
+          type: TYPE_ALERT.SUCCESS,
+          message: i18n.t('saveSuccess') as string
         }
+        store.commit('page/setAlert', alert)
+      } catch (error) {
+        const alert:alert = {
+          type: TYPE_ALERT.ALERT,
+          message: error.message
+        }
+        store.commit('page/setAlert', alert)
       }
+    }
 
-      const showDialog:ComputedRef<boolean> = computed(() => {
-        return store.state.form.showConfirmToLeave
-      })
-
-      const closeDialog = () => {
-        store.commit('form/setShowConfirmToLeave', false)
-      }
+    const showDialog:ComputedRef<boolean> = computed(() => {
+      return store.state.form.showConfirmToLeave
+    })
 
-      const saveAndQuit = async () => {
-        await submit()
-        goEvenUnsavedData()
-      }
+    const closeDialog = () => {
+      store.commit('form/setShowConfirmToLeave', false)
+    }
 
-      const goEvenUnsavedData = () => {
-        markFormAsNotDirty()
-        store.commit('form/setShowConfirmToLeave', false)
+    const saveAndQuit = async () => {
+      await submit()
+      goEvenUnsavedData()
+    }
 
-        const entryCopy = query.value.first()
-        if (entryCopy && entryCopy.$getAttributes()['originalState']) {
-          repositoryHelper.persist(props.model, entryCopy.$getAttributes()['originalState'])
-        }
+    const goEvenUnsavedData = () => {
+      markFormAsNotDirty()
+      store.commit('form/setShowConfirmToLeave', false)
 
-        if (router) {
-          router.push(store.state.form.goAfterLeave)
-        }
+      const entryCopy = query.value.first()
+      if (entryCopy && entryCopy.$getAttributes().originalState) {
+        repositoryHelper.persist(props.model, entryCopy.$getAttributes().originalState)
       }
 
-      return {
-        submit,
-        updateRepository,
-        properties,
-        readOnly,
-        showDialog,
-        entry,
-        goEvenUnsavedData,
-        closeDialog,
-        saveAndQuit
+      if (router) {
+        router.push(store.state.form.goAfterLeave)
       }
     }
-  })
+
+    return {
+      submit,
+      updateRepository,
+      properties,
+      readOnly,
+      showDialog,
+      entry,
+      goEvenUnsavedData,
+      closeDialog,
+      saveAndQuit
+    }
+  }
+})
 </script>
 
 <style scoped>

+ 62 - 64
components/Ui/Input/Autocomplete.vue

@@ -1,7 +1,6 @@
 <template>
   <main>
     <v-autocomplete
-      @change="$emit('update', $event, field)"
       :items="itemsToDisplayed"
       :label="$t(label)"
       item-text="textDisplay"
@@ -9,78 +8,77 @@
       :multiple="multiple"
       :loading="isLoading"
       :return-object="returnObject"
-    >
-    </v-autocomplete>
+      @change="$emit('update', $event, field)"
+    />
   </main>
 </template>
 
 <script lang="ts">
-  import {computed, defineComponent, ComputedRef} from '@nuxtjs/composition-api'
-  import {AnyJson} from "~/types/interfaces";
+import { computed, defineComponent, ComputedRef } from '@nuxtjs/composition-api'
+import { AnyJson } from '~/types/interfaces'
 
-  export default defineComponent({
-    props: {
-      label: {
-        type: String,
-        required: false
-      },
-      field: {
-        type: String,
-        required: false
-      },
-      data: {
-        type: String,
-        required: false
-      },
-      items: {
-        type: Array,
-        required: false,
-        default: []
-      },
-      readOnly: {
-        type: Boolean,
-        required: false
-      },
-      itemValue: {
-        type: String,
-        default: 'id'
-      },
-      itemText: {
-        type: Array,
-        required: true
-      },
-      returnObject: {
-        type: Boolean,
-        default: false
-      },
-      multiple: {
-        type: Boolean,
-        default: false
-      },
-      isLoading: {
-        type: Boolean,
-        default: false
-      }
+export default defineComponent({
+  props: {
+    label: {
+      type: String,
+      required: false
+    },
+    field: {
+      type: String,
+      required: false
+    },
+    data: {
+      type: String,
+      required: false
+    },
+    items: {
+      type: Array,
+      required: false,
+      default: []
+    },
+    readOnly: {
+      type: Boolean,
+      required: false
     },
-    setup(props) {
-      //On reconstruit les items à afficher car le text de l'Item doit être construit par rapport au itemText passé en props
-      const itemsToDisplayed: ComputedRef<Array<AnyJson>> = computed(() => {
-        return props.items.map((item: any) => {
-          const textDisplay: Array<string> = []
-          for (const text of props.itemText) {
-            textDisplay.push(item[text as string])
-          }
-          return Object.assign({}, item, {textDisplay: textDisplay.join(' ')})
-        })
+    itemValue: {
+      type: String,
+      default: 'id'
+    },
+    itemText: {
+      type: Array,
+      required: true
+    },
+    returnObject: {
+      type: Boolean,
+      default: false
+    },
+    multiple: {
+      type: Boolean,
+      default: false
+    },
+    isLoading: {
+      type: Boolean,
+      default: false
+    }
+  },
+  setup (props) {
+    // On reconstruit les items à afficher car le text de l'Item doit être construit par rapport au itemText passé en props
+    const itemsToDisplayed: ComputedRef<Array<AnyJson>> = computed(() => {
+      return props.items.map((item: any) => {
+        const textDisplay: Array<string> = []
+        for (const text of props.itemText) {
+          textDisplay.push(item[text as string])
+        }
+        return Object.assign({}, item, { textDisplay: textDisplay.join(' ') })
       })
+    })
 
-      return {
-        label_field: props.label ?? props.field,
-        itemsToDisplayed
-      }
-
+    return {
+      label_field: props.label ?? props.field,
+      itemsToDisplayed
     }
-  })
+  }
+})
 </script>
 
 <style scoped>

+ 73 - 75
components/Ui/Input/AutocompleteWithAPI.vue

@@ -14,97 +14,95 @@
       :placeholder="$t('start_your_research')"
       prepend-icon="mdi-magnify"
       :return-object="returnObject"
-    ></v-autocomplete>
-
+    />
   </main>
 </template>
 
 <script lang="ts">
-  import {defineComponent, computed, watch, ref, useContext, onUnmounted, Ref} from '@nuxtjs/composition-api'
-  import {QUERY_TYPE} from "~/types/enums";
-  import * as _ from "lodash";
+import { defineComponent, computed, watch, ref, useContext, onUnmounted, Ref } from '@nuxtjs/composition-api'
+import * as _ from 'lodash'
+import { QUERY_TYPE } from '~/types/enums'
 
-  export default defineComponent({
-    props: {
-      label:{
-        type: String,
-        required: false
-      },
-      field:{
-        type: String,
-        required: false
-      },
-      data: {
-        type: String,
-        required: false
-      },
-      readOnly: {
-        type: Boolean,
-        required: false
-      },
-      itemValue:{
-        type: String,
-        default: 'id'
-      },
-      itemText:{
-        type: Array,
-        required: true
-      },
-      returnObject:{
-        type: Boolean,
-        default: false
-      }
+export default defineComponent({
+  props: {
+    label: {
+      type: String,
+      required: false
+    },
+    field: {
+      type: String,
+      required: false
+    },
+    data: {
+      type: String,
+      required: false
+    },
+    readOnly: {
+      type: Boolean,
+      required: false
+    },
+    itemValue: {
+      type: String,
+      default: 'id'
     },
-    setup(props){
-      const {$dataProvider} = useContext();
+    itemText: {
+      type: Array,
+      required: true
+    },
+    returnObject: {
+      type: Boolean,
+      default: false
+    }
+  },
+  setup (props) {
+    const { $dataProvider } = useContext()
 
-      const search:Ref<string|null> = ref(null);
-      const model = ref(null);
-      const count = ref(0);
-      const entries = ref([]);
-      const isLoading = ref(false);
+    const search:Ref<string|null> = ref(null)
+    const model = ref(null)
+    const count = ref(0)
+    const entries = ref([])
+    const isLoading = ref(false)
 
-      const items = computed(() => {
-        return entries.value.map(entry => {
-          const textDisplay:Array<string> = []
-          for (const text of props.itemText){
-            textDisplay.push(entry[text as string])
-          }
-          return Object.assign({}, entry, { textDisplay: textDisplay.join(' ') })
-        })
+    const items = computed(() => {
+      return entries.value.map((entry) => {
+        const textDisplay:Array<string> = []
+        for (const text of props.itemText) {
+          textDisplay.push(entry[text as string])
+        }
+        return Object.assign({}, entry, { textDisplay: textDisplay.join(' ') })
       })
+    })
 
-      const unwatch = watch(search, _.debounce(async (research) => {
-        // Items have already been requested
-        if (isLoading.value) return
-
-        isLoading.value = true
+    const unwatch = watch(search, _.debounce(async (research) => {
+      // Items have already been requested
+      if (isLoading.value) { return }
 
-        let response = await $dataProvider.invoke({
-          type: QUERY_TYPE.DEFAULT,
-          url: `gps-coordinate-searching?city=${research}`
-        })
+      isLoading.value = true
 
-        count.value = response.length
-        entries.value = response
-        isLoading.value = false
-      }, 500))
-
-      onUnmounted(()=>{
-        unwatch()
+      const response = await $dataProvider.invoke({
+        type: QUERY_TYPE.DEFAULT,
+        url: `gps-coordinate-searching?city=${research}`
       })
 
-      return {
-        label_field : props.label ?? props.field,
-        count,
-        isLoading,
-        items,
-        search,
-        model
-      }
+      count.value = response.length
+      entries.value = response
+      isLoading.value = false
+    }, 500))
+
+    onUnmounted(() => {
+      unwatch()
+    })
 
+    return {
+      label_field: props.label ?? props.field,
+      count,
+      isLoading,
+      items,
+      search,
+      model
     }
-  })
+  }
+})
 </script>
 
 <style scoped>

+ 26 - 26
components/Ui/Input/Checkbox.vue

@@ -6,40 +6,40 @@
     <v-checkbox
       :value="data"
       :label="$t(label_field)"
-      @change="$emit('update', $event, field)"
       :disabled="readOnly"
-    ></v-checkbox>
+      @change="$emit('update', $event, field)"
+    />
   </v-container>
 </template>
 
 <script lang="ts">
-  import {defineComponent} from '@nuxtjs/composition-api'
+import { defineComponent } from '@nuxtjs/composition-api'
 
-  export default defineComponent({
-    props: {
-      field: {
-        type: String,
-        required: false
-      },
-      label: {
-        type: String,
-        required: false
-      },
-      data: {
-        type: Boolean,
-        required: false
-      },
-      readOnly: {
-        type: Boolean,
-        required: false
-      },
+export default defineComponent({
+  props: {
+    field: {
+      type: String,
+      required: false
+    },
+    label: {
+      type: String,
+      required: false
     },
-    setup(props){
-      return {
-        label_field : props.label ?? props.field,
-      }
+    data: {
+      type: Boolean,
+      required: false
+    },
+    readOnly: {
+      type: Boolean,
+      required: false
+    }
+  },
+  setup (props) {
+    return {
+      label_field: props.label ?? props.field
     }
-  })
+  }
+})
 </script>
 
 <style scoped>

+ 66 - 68
components/Ui/Input/DatePicker.vue

@@ -16,97 +16,95 @@
           prepend-icon="mdi-calendar"
           :disabled="readOnly"
           v-bind="attrs"
-          v-on="on"
           :dense="dense"
           :single-line="singleLine"
-        ></v-text-field>
+          v-on="on"
+        />
       </template>
       <v-date-picker
         v-model="datesParsed"
-        @input="dateOpen = range && datesParsed.length < 2"
         locale="fr"
         :range="range"
         color="ot_green lighten-1"
-      ></v-date-picker>
+        @input="dateOpen = range && datesParsed.length < 2"
+      />
     </v-menu>
   </main>
 </template>
 
-
 <script lang="ts">
-  import {defineComponent, watch, ref, useContext, onUnmounted, computed, Ref, ComputedRef} from '@nuxtjs/composition-api'
-  import DatesUtils from "~/services/utils/datesUtils";
-  import {WatchStopHandle} from "@vue/composition-api";
+import { defineComponent, watch, ref, useContext, onUnmounted, computed, Ref, ComputedRef } from '@nuxtjs/composition-api'
+import { WatchStopHandle } from '@vue/composition-api'
+import DatesUtils from '~/services/utils/datesUtils'
 
-  export default defineComponent({
-    props: {
-      field: {
-        type: String,
-        required: false
-      },
-      label: {
-        type: String,
-        required: false
-      },
-      data: {
-        type: [String, Array],
-        required: false
-      },
-      readOnly: {
-        type: Boolean,
-        required: false
-      },
-      range: {
-        type: Boolean,
-        required: false
-      },
-      dense: {
-        type: Boolean,
-        required: false
-      },
-      singleLine: {
-        type: Boolean,
-        required: false
-      }
+export default defineComponent({
+  props: {
+    field: {
+      type: String,
+      required: false
+    },
+    label: {
+      type: String,
+      required: false
     },
-    setup(props, {emit}){
-      const {data, field, range} = props
-      const {$moment} = useContext()
-      const dateUtils = new DatesUtils($moment)
+    data: {
+      type: [String, Array],
+      required: false
+    },
+    readOnly: {
+      type: Boolean,
+      required: false
+    },
+    range: {
+      type: Boolean,
+      required: false
+    },
+    dense: {
+      type: Boolean,
+      required: false
+    },
+    singleLine: {
+      type: Boolean,
+      required: false
+    }
+  },
+  setup (props, { emit }) {
+    const { data, field, range } = props
+    const { $moment } = useContext()
+    const dateUtils = new DatesUtils($moment)
 
-      const datesParsed:Ref<Array<string>|string> = range ? ref(Array<string>()) : ref('')
+    const datesParsed:Ref<Array<string>|string> = range ? ref(Array<string>()) : ref('')
 
-      if(datesParsed.value instanceof Array){
-        for(const date of data as Array<string>){
-          if(date)
-            datesParsed.value.push($moment(date).format('YYYY-MM-DD'))
-        }
-      }else{
-        datesParsed.value = $moment(data as string).format('YYYY-MM-DD')
+    if (Array.isArray(datesParsed.value)) {
+      for (const date of data as Array<string>) {
+        if (date) { datesParsed.value.push($moment(date).format('YYYY-MM-DD')) }
       }
+    } else {
+      datesParsed.value = $moment(data as string).format('YYYY-MM-DD')
+    }
 
-      const datesFormatted:ComputedRef<string> = computed(()=>{
-       return dateUtils.formattedDate(datesParsed.value, 'DD/MM/YYYY')
-      })
+    const datesFormatted:ComputedRef<string> = computed(() => {
+      return dateUtils.formattedDate(datesParsed.value, 'DD/MM/YYYY')
+    })
 
-      const unwatch:WatchStopHandle = watch(datesParsed, (newValue, oldValue) => {
-        if(newValue === oldValue) return
-        if(newValue instanceof Array && newValue.length < 2) return
-        emit('update', newValue instanceof Array ? dateUtils.sortDate(newValue) : newValue, field)
-      })
+    const unwatch:WatchStopHandle = watch(datesParsed, (newValue, oldValue) => {
+      if (newValue === oldValue) { return }
+      if (Array.isArray(newValue) && newValue.length < 2) { return }
+      emit('update', Array.isArray(newValue) ? dateUtils.sortDate(newValue) : newValue, field)
+    })
 
-      onUnmounted(()=>{
-        unwatch()
-      })
+    onUnmounted(() => {
+      unwatch()
+    })
 
-      return {
-        label_field : props.label ?? props.field,
-        datesParsed,
-        datesFormatted,
-        dateOpen: ref(false)
-      }
+    return {
+      label_field: props.label ?? props.field,
+      datesParsed,
+      datesFormatted,
+      dateOpen: ref(false)
     }
-  })
+  }
+})
 </script>
 
 <style scoped>

+ 47 - 47
components/Ui/Input/Enum.vue

@@ -4,7 +4,7 @@
       v-if="$fetchState.pending"
       type="list-item"
       loading
-    ></v-skeleton-loader>
+    />
 
     <v-select
       v-else
@@ -13,65 +13,65 @@
       :items="items"
       item-text="label"
       item-value="value"
-      @change="$emit('update', $event, field)"
       :rules="rules"
       :disabled="readOnly"
-    ></v-select>
+      @change="$emit('update', $event, field)"
+    />
   </main>
 </template>
 
 <script lang="ts">
-  import {defineComponent, ref, useContext, useFetch, Ref} from '@nuxtjs/composition-api'
-  import {EnumChoices} from "~/types/interfaces";
-  import {QUERY_TYPE} from "~/types/enums";
+import { defineComponent, ref, useContext, useFetch, Ref } from '@nuxtjs/composition-api'
+import { EnumChoices } from '~/types/interfaces'
+import { QUERY_TYPE } from '~/types/enums'
 
-  export default defineComponent({
-    props: {
-      enumType: {
-        type: String,
-        required: true
-      },
-      label:{
-        type: String,
-        required: false
-      },
-      field:{
-        type: String,
-        required: false
-      },
-      data: {
-        type: String,
-        required: false
-      },
-      readOnly: {
-        type: Boolean,
-        required: false
-      },
-      rules: {
-        type: Array,
-        required: false
-      }
+export default defineComponent({
+  props: {
+    enumType: {
+      type: String,
+      required: true
+    },
+    label: {
+      type: String,
+      required: false
+    },
+    field: {
+      type: String,
+      required: false
     },
-    setup(props){
-      const label_field = props.label ?? props.field
+    data: {
+      type: String,
+      required: false
+    },
+    readOnly: {
+      type: Boolean,
+      required: false
+    },
+    rules: {
+      type: Array,
+      required: false
+    }
+  },
+  setup (props) {
+    const label_field = props.label ?? props.field
 
-      const { enumType } = props
-      const {$dataProvider} = useContext()
+    const { enumType } = props
+    const { $dataProvider } = useContext()
 
-      const items: Ref<Array<EnumChoices>> = ref([])
-      useFetch(async () => {
-        items.value = await $dataProvider.invoke({
-          type: QUERY_TYPE.ENUM,
-          enumType: enumType
-        })
+    const items: Ref<Array<EnumChoices>> = ref([])
+    useFetch(async () => {
+      items.value = await $dataProvider.invoke({
+        type: QUERY_TYPE.ENUM,
+        enumType
       })
+    })
 
-      return {
-        items,
-        label_field
-      }
+    return {
+      items,
+      label_field
     }
-  })
+  }
+})
 </script>
 
 <style scoped>

+ 51 - 52
components/Ui/Input/Text.vue

@@ -1,62 +1,61 @@
 <template>
-    <v-text-field
-      autocomplete="off"
-      :value="data"
-      :label="$t(label_field)"
-      @change="$emit('update', $event, field)"
-      :rules="rules"
-      :disabled="readOnly"
-      :type="type"
-      :error="error"
-      :error-messages="errorMessage"
-    >
-    </v-text-field>
+  <v-text-field
+    autocomplete="off"
+    :value="data"
+    :label="$t(label_field)"
+    :rules="rules"
+    :disabled="readOnly"
+    :type="type"
+    :error="error"
+    :error-messages="errorMessage"
+    @change="$emit('update', $event, field)"
+  />
 </template>
 
 <script lang="ts">
-  import {defineComponent} from '@nuxtjs/composition-api'
+import { defineComponent } from '@nuxtjs/composition-api'
 
-  export default defineComponent({
-    props: {
-      label:{
-        type: String,
-        required: false
-      },
-      field:{
-        type: String,
-        required: false
-      },
-      type:{
-        type: String,
-        required: false
-      },
-      data: {
-        type: [String, Number],
-        required: false
-      },
-      readOnly: {
-        type: Boolean,
-        required: false
-      },
-      rules:{
-        type: Array,
-        required: false
-      },
-      error:{
-        type: Boolean,
-        required: false
-      },
-      errorMessage:{
-        type: String,
-        required: false
-      }
+export default defineComponent({
+  props: {
+    label: {
+      type: String,
+      required: false
     },
-    setup(props){
-      return {
-        label_field : props.label ?? props.field
-      }
+    field: {
+      type: String,
+      required: false
+    },
+    type: {
+      type: String,
+      required: false
+    },
+    data: {
+      type: [String, Number],
+      required: false
+    },
+    readOnly: {
+      type: Boolean,
+      required: false
+    },
+    rules: {
+      type: Array,
+      required: false
+    },
+    error: {
+      type: Boolean,
+      required: false
+    },
+    errorMessage: {
+      type: String,
+      required: false
     }
-  })
+  },
+  setup (props) {
+    return {
+      label_field: props.label ?? props.field
+    }
+  }
+})
 </script>
 
 <style>

+ 64 - 65
components/Ui/Map.vue

@@ -1,95 +1,94 @@
 <template>
   <div id="map-wrap">
     <client-only>
-      <l-map :zoom=zoom :center="center">
-        <l-tile-layer :url="layerUrl"></l-tile-layer>
+      <l-map :zoom="zoom" :center="center">
+        <l-tile-layer :url="layerUrl" />
         <l-marker
           :lat-lng="latLong"
           draggable
-          v-on:update:latLng="onMoveMarker"></l-marker>
+          @update:latLng="onMoveMarker"
+        />
       </l-map>
 
       <v-btn class="mr-4 ot_green ot_white--text" @click="updateMap">
         {{ $t('updateMap') }}
       </v-btn>
-
     </client-only>
   </div>
 </template>
 
 <script lang="ts">
-  import {defineComponent, computed,ref, toRefs, useContext, ComputedRef, Ref} from '@nuxtjs/composition-api'
-  import {QUERY_TYPE, TYPE_ALERT} from "~/types/enums";
-  import {AddressPostal} from "~/models/Core/AddressPostal";
-  import {AnyJson} from "~/types/interfaces";
-  import {alert} from "~/types/interfaces";
-  import {ToRefs} from "@vue/composition-api";
+import { defineComponent, computed, ref, toRefs, useContext, ComputedRef, Ref } from '@nuxtjs/composition-api'
+import { ToRefs } from '@vue/composition-api'
+import { QUERY_TYPE, TYPE_ALERT } from '~/types/enums'
+import { AddressPostal } from '~/models/Core/AddressPostal'
+import { AnyJson, alert } from '~/types/interfaces'
 
-  export default defineComponent({
-    props:{
-      address:{
-        type: Object as () => AddressPostal,
-        required: true
-      },
-      zoom:{
-        type: Number,
-        required: true
-      }
+export default defineComponent({
+  props: {
+    address: {
+      type: Object as () => AddressPostal,
+      required: true
     },
-    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)
+    zoom: {
+      type: Number,
+      required: true
+    }
+  },
+  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 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 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 () => {
-        let 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}`
-        })
-        if(response.length > 0){
-          latitude.value = response[0].latitude
-          longitude.value = response[0].longitude
+    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}`
+      })
+      if (response.length > 0) {
+        latitude.value = response[0].latitude
+        longitude.value = response[0].longitude
 
-          address.value.latitude = response[0].latitude
-          address.value.longitude = response[0].longitude
-          emit('updateAddress', address.value)
-        }else{
-          const alert:alert = {
-            type: TYPE_ALERT.ALERT,
-            message: 'no_coordinate_corresponding'
-          }
-          store.commit('page/setAlert', alert)
+        address.value.latitude = response[0].latitude
+        address.value.longitude = response[0].longitude
+        emit('updateAddress', address.value)
+      } else {
+        const alert:alert = {
+          type: TYPE_ALERT.ALERT,
+          message: 'no_coordinate_corresponding'
         }
+        store.commit('page/setAlert', alert)
       }
+    }
 
-      const onMoveMarker = async (event:AnyJson) => {
-        let 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
+    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)
-      }
+      emit('updateAddress', address.value)
+    }
 
-      return {
-        updateMap,
-        center,
-        latLong,
-        layerUrl,
-        onMoveMarker
-      }
+    return {
+      updateMap,
+      center,
+      latLong,
+      layerUrl,
+      onMoveMarker
     }
-  })
+  }
+})
 
 </script>
 

+ 49 - 50
components/Ui/SubList.vue

@@ -1,61 +1,60 @@
 <template>
-    <main>
-      <v-skeleton-loader
-        type="text"
-        v-if="$fetchState.pending"
-      ></v-skeleton-loader>
-      <div v-else>
-        <slot name="list.item" v-bind="{items}"></slot>
-      </div>
-      <slot>
-      </slot>
-    </main>
+  <main>
+    <v-skeleton-loader
+      v-if="$fetchState.pending"
+      type="text"
+    />
+    <div v-else>
+      <slot name="list.item" v-bind="{items}" />
+    </div>
+    <slot />
+  </main>
 </template>
 
 <script lang="ts">
-  import {defineComponent, ref, computed, useContext, useFetch, toRefs, onUnmounted, ToRefs, ComputedRef} from '@nuxtjs/composition-api'
-  import {Query} from "@vuex-orm/core";
-  import {queryHelper} from "~/services/store/query";
-  import {QUERY_TYPE} from "~/types/enums";
-  import {Collection} from "@vuex-orm/core/dist/src/data/Data";
+import { defineComponent, ref, computed, useContext, useFetch, toRefs, onUnmounted, ToRefs, ComputedRef } from '@nuxtjs/composition-api'
+import { Query } from '@vuex-orm/core'
+import { Collection } from '@vuex-orm/core/dist/src/data/Data'
+import { queryHelper } from '~/services/store/query'
+import { QUERY_TYPE } from '~/types/enums'
 
-  export default defineComponent({
-    props: {
-      rootModel:{
-        type: Function,
-        required: true
-      },
-      rootId:{
-        type: Number,
-        required: true
-      },
-      model:{
-        type: Function,
-        required: true
-      },
-      query:{
-        type: Object as () => Query,
-        required: true
-      }
+export default defineComponent({
+  props: {
+    rootModel: {
+      type: Function,
+      required: true
     },
-    setup(props) {
-      const {rootModel, rootId, model, query}:ToRefs = toRefs(props);
-      const {$dataProvider} = useContext()
-      useFetch(async ()=>{
-        await $dataProvider.invoke({
-          type: QUERY_TYPE.MODEL,
-          model: model.value,
-          root_model: rootModel.value,
-          root_id: rootId.value
-        })
+    rootId: {
+      type: Number,
+      required: true
+    },
+    model: {
+      type: Function,
+      required: true
+    },
+    query: {
+      type: Object as () => Query,
+      required: true
+    }
+  },
+  setup (props) {
+    const { rootModel, rootId, model, query }:ToRefs = toRefs(props)
+    const { $dataProvider } = useContext()
+    useFetch(async () => {
+      await $dataProvider.invoke({
+        type: QUERY_TYPE.MODEL,
+        model: model.value,
+        root_model: rootModel.value,
+        root_id: rootId.value
       })
+    })
 
-      const items:ComputedRef<Collection>  = computed(() => queryHelper.getCollection(query.value))
-      // onUnmounted( useRepositoryHelper.cleanRepository(repository.value) )
+    const items:ComputedRef<Collection> = computed(() => queryHelper.getCollection(query.value))
+    // onUnmounted( useRepositoryHelper.cleanRepository(repository.value) )
 
-      return {
-        items
-      }
+    return {
+      items
     }
-  })
+  }
+})
 </script>

+ 49 - 46
components/Ui/Xeditable/Text.vue

@@ -1,57 +1,60 @@
 <template>
-    <main>
-      <div v-if="edit" class="d-flex align-baseline x-editable-input mt-n1">
-        <UiInputText
-          class="mt-0 pt-0 mt-n1"
-            :type="type"
-            :data="inputValue"
-            v-on:update="inputValue=$event"
-        ></UiInputText>
-        <v-icon aria-hidden="false" class="valid icons ot_green--text" small @click="update">fas fa-check</v-icon>
-        <v-icon aria-hidden="false" class="cancel icons ot_grey--text" small @click="close">fas fa-times</v-icon>
-      </div>
-      <div v-else @click="edit=true" class="edit-link">
-        <slot name="xeditable.read" v-bind="{inputValue}"></slot>
-      </div>
-    </main>
+  <main>
+    <div v-if="edit" class="d-flex align-baseline x-editable-input mt-n1">
+      <UiInputText
+        class="mt-0 pt-0 mt-n1"
+        :type="type"
+        :data="inputValue"
+        @update="inputValue=$event"
+      />
+      <v-icon aria-hidden="false" class="valid icons ot_green--text" small @click="update">
+        fas fa-check
+      </v-icon>
+      <v-icon aria-hidden="false" class="cancel icons ot_grey--text" small @click="close">
+        fas fa-times
+      </v-icon>
+    </div>
+    <div v-else class="edit-link" @click="edit=true">
+      <slot name="xeditable.read" v-bind="{inputValue}" />
+    </div>
+  </main>
 </template>
 
 <script lang="ts">
-  import {defineComponent, ref, Ref} from '@nuxtjs/composition-api'
+import { defineComponent, ref, Ref } from '@nuxtjs/composition-api'
 
-  export default defineComponent({
-    props: {
-      type:{
-        type: String,
-        required: false
-      },
-      data: {
-        type: [String, Number],
-        required: false,
-        default:null
-      }
+export default defineComponent({
+  props: {
+    type: {
+      type: String,
+      required: false
     },
-    setup(props, {emit}){
-      const edit:Ref<boolean> = ref(false)
-      const inputValue:Ref<string|number|null> = ref(props.data)
+    data: {
+      type: [String, Number],
+      required: false,
+      default: null
+    }
+  },
+  setup (props, { emit }) {
+    const edit:Ref<boolean> = ref(false)
+    const inputValue:Ref<string|number|null> = ref(props.data)
 
-      const update = () =>{
-        edit.value = false
-        if(inputValue.value !== props.data)
-          emit('update', inputValue.value)
-      }
-      const close = () =>{
-        edit.value = false
-        inputValue.value = props.data
-      }
-      return {
-        inputValue,
-        edit,
-        update,
-        close
-      }
+    const update = () => {
+      edit.value = false
+      if (inputValue.value !== props.data) { emit('update', inputValue.value) }
+    }
+    const close = () => {
+      edit.value = false
+      inputValue.value = props.data
     }
-  })
+    return {
+      inputValue,
+      edit,
+      update,
+      close
+    }
+  }
+})
 </script>
 
 <style lang="scss">

+ 1 - 1
config/nuxtConfig/env.js

@@ -22,7 +22,7 @@ export default {
   },
   privateRuntimeConfig: {
     http: {
-      https:true,
+      https: true,
       baseURL: process.env.NODE_ENV !== 'production' ? 'http://nginx_new' : 'https://local.api.opentalent.fr'
     },
     axios: {

+ 1 - 1
config/nuxtConfig/plugins.js

@@ -8,6 +8,6 @@ export default {
     '~/plugins/Data/axios',
     '~/plugins/Data/dataPersister',
     '~/plugins/Data/dataProvider',
-    '~/plugins/Data/dataDeleter',
+    '~/plugins/Data/dataDeleter'
   ]
 }

+ 1 - 1
config/nuxtConfig/vuetify.js

@@ -4,7 +4,7 @@ export default {
   // Vuetify module configuration (https://go.nuxtjs.dev/config-vuetify)
   vuetify: {
     icons: {
-      iconfont: 'fa' || 'mdi',
+      iconfont: 'fa' || 'mdi'
     },
     customVariables: ['~/assets/css/variables.scss'],
     treeShake: true,

+ 1 - 1
jest.config.js

@@ -25,5 +25,5 @@ module.exports = {
     '<rootDir>/use/**/*.ts',
     '<rootDir>/pages/**/*.vue'
   ],
-  setupFiles: ["<rootDir>/tests/unit/index.ts"],
+  setupFiles: ['<rootDir>/tests/unit/index.ts']
 }

+ 56 - 56
lang/enum/fr-FR.js

@@ -3,63 +3,63 @@ export default (context, locale) => {
     LOCAL_AUTHORITY: 'Collectivité territoriale (Mairie, SIVOM, SIVU, EPIC, …)',
     ASSOCIATION_LAW_1901: 'Association loi 1901 ou assimilée (Droit local, ...)',
     COMMERCIAL_SOCIETY: 'Entreprise commerciale (SARL, SAS, EURL, Autoentrepreneur, …)',
-    ARTISTIC_EDUCATION_ONLY: "Enseignement artistique seul",
-    ARTISTIC_PRACTICE_EDUCATION: "Pratique et enseignement artistique",
-    ARTISTIC_PRACTICE_ONLY: "Pratique artistique seule",
-    DELEGATION: "Délégation",
-    DEPARTEMENTAL_FEDERATION: "Fédération départementale",
-    GROUPMENT: "Groupement",
-    LOCAL_FEDERATION: "Fédération locale",
-    MUSIC_OPENTALENT: "Opentalent",
-    NATIONAL_FEDERATION: "Fédération nationale",
-    REGIONAL_FEDERATION: "Fédération régionale",
+    ARTISTIC_EDUCATION_ONLY: 'Enseignement artistique seul',
+    ARTISTIC_PRACTICE_EDUCATION: 'Pratique et enseignement artistique',
+    ARTISTIC_PRACTICE_ONLY: 'Pratique artistique seule',
+    DELEGATION: 'Délégation',
+    DEPARTEMENTAL_FEDERATION: 'Fédération départementale',
+    GROUPMENT: 'Groupement',
+    LOCAL_FEDERATION: 'Fédération locale',
+    MUSIC_OPENTALENT: 'Opentalent',
+    NATIONAL_FEDERATION: 'Fédération nationale',
+    REGIONAL_FEDERATION: 'Fédération régionale',
     CESMD: "CESMD Centre d'études supérieures de musique et de danse",
-    CNSMD: "CNSMD Conservatoire national supérieur de musique",
-    CRC: "CRC Conservatoire à rayonnement communal",
-    CRD: "CRD Conservatoire à rayonnement départemental",
-    CRI: "CRI Conservatoire à rayonnement intercommunal",
-    CRR: "CRR Conservatoire à rayonnement régional",
+    CNSMD: 'CNSMD Conservatoire national supérieur de musique',
+    CRC: 'CRC Conservatoire à rayonnement communal',
+    CRD: 'CRD Conservatoire à rayonnement départemental',
+    CRI: 'CRI Conservatoire à rayonnement intercommunal',
+    CRR: 'CRR Conservatoire à rayonnement régional',
     EENC: "EENC Établissement d'enseignement artistique non classé",
-    EMP: "EMP Ecole de musique privée",
-    MULTIPLE: "Multiple",
-    UNIQUE: "Unique",
-    MAIN_BUILDING: "Etablissement principal",
-    SECONDARY_SCHOOL: "Etablissement secondaire",
-    ACTALIANS: "Actalians",
-    AFDAS: "Afdas",
-    AGEFOS: "Agefos",
-    AGEFOS_PME: "Agefos pme",
-    ANFA: "Anfa",
-    ANFH: "Anfh",
-    APCMA: "Apcma",
-    CNFPT: "Cnfpt",
-    CONSTRUCTYS: "Constructys",
-    FAF_TT: "Faf-tt",
-    FAFIEC: "Fafiec",
-    FAFIH: "Fafih",
-    FAFSEA: "Fafsea",
-    FIF_PL: "Fif pl",
-    FONGECIF: "Fongecif",
-    FORCO: "Forco",
-    INTERGROS: "Intergros",
-    OPCA3_PLUS: "Opca3+",
-    OPCAIM: "Opcaim",
-    OPCALIA: "Opcalia",
-    OPCALIM: "Opcalim",
-    OPCA_BAIA: "Opca baia",
-    OPCA_DEFI: "Opca defi",
-    OPCA_TRANSPORTS: "Opca transports",
-    UNIFAF: "Unifaf",
-    UNIFORMATION: "Uniformation",
-    VIVEA: "Vivea",
-    ADDRESS_PRACTICE: "Adresse de pratique",
-    ADDRESS_HEAD_OFFICE: "Adresse du siège social",
-    ADDRESS_CONTACT: "Adresse de contact",
-    ADDRESS_BILL: "Adresse de facturation",
-    ADDRESS_OTHER: "Autre adresse",
-    PRINCIPAL: "Contact principal",
-    BILL: "Contact de facturation",
-    OTHER: "Autre contact",
-    CONTACT: "Contact",
+    EMP: 'EMP Ecole de musique privée',
+    MULTIPLE: 'Multiple',
+    UNIQUE: 'Unique',
+    MAIN_BUILDING: 'Etablissement principal',
+    SECONDARY_SCHOOL: 'Etablissement secondaire',
+    ACTALIANS: 'Actalians',
+    AFDAS: 'Afdas',
+    AGEFOS: 'Agefos',
+    AGEFOS_PME: 'Agefos pme',
+    ANFA: 'Anfa',
+    ANFH: 'Anfh',
+    APCMA: 'Apcma',
+    CNFPT: 'Cnfpt',
+    CONSTRUCTYS: 'Constructys',
+    FAF_TT: 'Faf-tt',
+    FAFIEC: 'Fafiec',
+    FAFIH: 'Fafih',
+    FAFSEA: 'Fafsea',
+    FIF_PL: 'Fif pl',
+    FONGECIF: 'Fongecif',
+    FORCO: 'Forco',
+    INTERGROS: 'Intergros',
+    OPCA3_PLUS: 'Opca3+',
+    OPCAIM: 'Opcaim',
+    OPCALIA: 'Opcalia',
+    OPCALIM: 'Opcalim',
+    OPCA_BAIA: 'Opca baia',
+    OPCA_DEFI: 'Opca defi',
+    OPCA_TRANSPORTS: 'Opca transports',
+    UNIFAF: 'Unifaf',
+    UNIFORMATION: 'Uniformation',
+    VIVEA: 'Vivea',
+    ADDRESS_PRACTICE: 'Adresse de pratique',
+    ADDRESS_HEAD_OFFICE: 'Adresse du siège social',
+    ADDRESS_CONTACT: 'Adresse de contact',
+    ADDRESS_BILL: 'Adresse de facturation',
+    ADDRESS_OTHER: 'Autre adresse',
+    PRINCIPAL: 'Contact principal',
+    BILL: 'Contact de facturation',
+    OTHER: 'Autre contact',
+    CONTACT: 'Contact'
   })
 }

+ 57 - 57
lang/field/fr-FR.js

@@ -5,67 +5,67 @@ export default (context, locale) => {
     salary: 'Salariés',
     network: 'Informations réseau',
     communication: 'Communication',
-    legalStatus: "Statut juridique",
-    siretNumber: "N° SIRET",
-    apeNumber: "Code APE",
-    waldecNumber: "RNA (ancien Waldec)",
-    identifierCmf: "Matricule CMF",
-    identifierFfec: "Matricule FFEC",
-    ffecApproval: "N° agrément FFEC",
-    description: "Description",
-    typeOfPractices: "Type de pratiques",
-    otherPractice: "Autres ensembles (préciser)",
-    principalType: "Type principal",
-    contact_point: "Point de contact",
-    name: "Nom",
-    acronym: "Sigle",
-    creationDate: "Date de création",
-    prefectureName: "Préfecture ou sous-préfecture",
-    prefectureNumber: "Numéro de déclaration",
-    declarationDate: "Date de déclaration",
-    tvaNumber: "TVA Intracommunautaire",
+    legalStatus: 'Statut juridique',
+    siretNumber: 'N° SIRET',
+    apeNumber: 'Code APE',
+    waldecNumber: 'RNA (ancien Waldec)',
+    identifierCmf: 'Matricule CMF',
+    identifierFfec: 'Matricule FFEC',
+    ffecApproval: 'N° agrément FFEC',
+    description: 'Description',
+    typeOfPractices: 'Type de pratiques',
+    otherPractice: 'Autres ensembles (préciser)',
+    principalType: 'Type principal',
+    contact_point: 'Point de contact',
+    name: 'Nom',
+    acronym: 'Sigle',
+    creationDate: 'Date de création',
+    prefectureName: 'Préfecture ou sous-préfecture',
+    prefectureNumber: 'Numéro de déclaration',
+    declarationDate: 'Date de déclaration',
+    tvaNumber: 'TVA Intracommunautaire',
     schoolCategory: "Catégorie d'école",
     typeEstablishment: "Type d'établissement",
-    typeEstablishmentDetail: "Détails du type",
-    youngApproval: "Jeunesse-éducation populaire",
-    trainingApproval: "Organisme de formation",
-    otherApproval: "Si autre, lesquels",
-    collectiveAgreement: "Nom de la convention collective",
+    typeEstablishmentDetail: 'Détails du type',
+    youngApproval: 'Jeunesse-éducation populaire',
+    trainingApproval: 'Organisme de formation',
+    otherApproval: 'Si autre, lesquels',
+    collectiveAgreement: 'Nom de la convention collective',
     opca: "Nom de l'OPCA",
-    icomNumber: "N° ICOM",
-    urssafNumber: "N° URSSAF",
-    email: "E-mail",
-    emailInvalid: "E-mail invalide",
-    telphone: "Téléphone",
-    telphoneInvalid: "Téléphone invalide",
-    mobilPhone: "Portable",
-    mobilPhoneInvalid: "Portable invalide",
-    actions: "Actions",
-    twitter: "Lien Twitter",
-    facebook: "Lien Facebook",
-    instagram: "Lien Instagram",
-    image: "Image",
+    icomNumber: 'N° ICOM',
+    urssafNumber: 'N° URSSAF',
+    email: 'E-mail',
+    emailInvalid: 'E-mail invalide',
+    telphone: 'Téléphone',
+    telphoneInvalid: 'Téléphone invalide',
+    mobilPhone: 'Portable',
+    mobilPhoneInvalid: 'Portable invalide',
+    actions: 'Actions',
+    twitter: 'Lien Twitter',
+    facebook: 'Lien Facebook',
+    instagram: 'Lien Instagram',
+    image: 'Image',
     portailVisibility: "Répertorier la structure dans l'annuaire du portail Opentalent",
-    pedagogicBudget: "Budget pédagogique",
-    budget: "Montant du dernier budget réalisé",
+    pedagogicBudget: 'Budget pédagogique',
+    budget: 'Montant du dernier budget réalisé',
     isPedagogicIsPrincipalActivity: "L'activité principale de la stucture est « la pédagogie des arts du cirque »",
-    bank_account: "IBAN",
-    bankName: "Nom de la banque",
-    bic: "Code BIC",
-    iban: "IBAN",
-    holder: "Titulaire du compte",
-    debitAddress: "Domiciliation",
-    principal: "Principal",
-    address_postal: "Adresses postales",
-    address: "Adresse",
-    address_postal_type: "Nature",
-    addressOwner: "Chez",
-    streetAddress: "Adresses",
-    streetAddressSecond: "Adresses suite",
-    streetAddressThird: "Adresses suite 2",
-    postalCode: "Code postal",
-    addressCity: "Ville",
-    country: "Pays",
-    addresstype: "Nature",
+    bank_account: 'IBAN',
+    bankName: 'Nom de la banque',
+    bic: 'Code BIC',
+    iban: 'IBAN',
+    holder: 'Titulaire du compte',
+    debitAddress: 'Domiciliation',
+    principal: 'Principal',
+    address_postal: 'Adresses postales',
+    address: 'Adresse',
+    address_postal_type: 'Nature',
+    addressOwner: 'Chez',
+    streetAddress: 'Adresses',
+    streetAddressSecond: 'Adresses suite',
+    streetAddressThird: 'Adresses suite 2',
+    postalCode: 'Code postal',
+    addressCity: 'Ville',
+    country: 'Pays',
+    addresstype: 'Nature'
   })
 }

+ 2 - 2
lang/form/fr-FR.js

@@ -13,7 +13,7 @@ export default (context, locale) => {
     attention: 'Attention',
     updateMap: 'Mise à jour de la carte',
     start_your_research: 'Commencer à écrire pour rechercher...',
-    no_coordinate_corresponding: "Aucune coordonnées GPS ne correspondent à votre adresse",
-    quit_without_saving_warning: 'Vous souhaitez quitter ce formulaire sans avoir enregistré',
+    no_coordinate_corresponding: 'Aucune coordonnées GPS ne correspondent à votre adresse',
+    quit_without_saving_warning: 'Vous souhaitez quitter ce formulaire sans avoir enregistré'
   })
 }

+ 1 - 2
lang/fr-FR.js

@@ -7,7 +7,6 @@ import breadcrumbs from '@/lang/breadcrumbs/fr-FR'
 import menuKey from '@/lang/menuKey/fr-FR'
 
 export default (context, locale) => {
-
   return {
     ...layout(context, locale),
     ...enums(context, locale),
@@ -15,6 +14,6 @@ export default (context, locale) => {
     ...rulesAndErrors(context, locale),
     ...form(context, locale),
     ...breadcrumbs(context, locale),
-    ...menuKey(context, locale),
+    ...menuKey(context, locale)
   }
 }

+ 2 - 2
lang/menuKey/fr-FR.js

@@ -1,7 +1,7 @@
 export default (context, locale) => {
   return ({
     attendanceListMenuKey: 'Absences',
-    billAndBillCreditListMenuKey: "Facturation",
-    personRepertoryListMenuKey: "Répertoire",
+    billAndBillCreditListMenuKey: 'Facturation',
+    personRepertoryListMenuKey: 'Répertoire'
   })
 }

+ 2 - 2
lang/rulesAndErrors/fr-FR.js

@@ -1,7 +1,7 @@
 export default (context, locale) => {
   return ({
     required: 'Ce champs est obligatoire',
-    name_length_rule: "La taille du nom doit être de moins de 128 caractères",
-    siret_error: "N° de siret non valide",
+    name_length_rule: 'La taille du nom doit être de moins de 128 caractères',
+    siret_error: 'N° de siret non valide'
   })
 }

+ 32 - 36
layouts/default.vue

@@ -1,62 +1,58 @@
 <template>
   <main>
-    <client-only placeholder=" ">
-    </client-only>
+    <client-only placeholder=" " />
 
     <v-app dark>
+      <LayoutMenu v-if="displayedMenu" :menu="menu" :mini-variant="properties.miniVariant" />
 
-      <LayoutMenu  v-if="displayedMenu" :menu="menu" :miniVariant="properties.miniVariant"></LayoutMenu>
-
-      <LayoutHeader v-on:handle-open-menu-click="handleOpenMenu"></LayoutHeader>
+      <LayoutHeader @handle-open-menu-click="handleOpenMenu" />
 
       <v-main class="ot_content_color">
-        <LayoutSubheader v-if="displayedSubHeader"></LayoutSubheader>
-        <nuxt/>
+        <LayoutSubheader v-if="displayedSubHeader" />
+        <nuxt />
       </v-main>
 
-      <lazy-LayoutAlertContainer></lazy-LayoutAlertContainer>
+      <lazy-LayoutAlertContainer />
     </v-app>
   </main>
 </template>
 
 <script lang="ts">
-  import {computed, ComputedRef, defineComponent, reactive, useContext} from '@nuxtjs/composition-api'
-  import {$useMenu} from '@/use/layout/menu'
-
-  export default defineComponent({
-    name: 'defaultLayout',
-    setup() {
-      const {store} = useContext()
-      const menu = $useMenu.setUpContext().useLateralMenuConstruct()
+import { computed, ComputedRef, defineComponent, reactive, useContext } from '@nuxtjs/composition-api'
+import { $useMenu } from '@/use/layout/menu'
 
-      const properties = reactive({
-        clipped: false,
-        miniVariant: false
-      })
-      const displayedMenu:ComputedRef<boolean> = computed(()=>store.state.profile.access.hasLateralMenu)
+export default defineComponent({
+  name: 'defaultLayout',
+  setup () {
+    const { store } = useContext()
+    const menu = $useMenu.setUpContext().useLateralMenuConstruct()
 
-      const displayedSubHeader:ComputedRef<boolean> = computed(()=>store.state.profile.access.hasLateralMenu || store.state.profile.access.isTeacher)
+    const properties = reactive({
+      clipped: false,
+      miniVariant: false
+    })
+    const displayedMenu:ComputedRef<boolean> = computed(() => store.state.profile.access.hasLateralMenu)
 
-      const handleOpenMenu = (miniVariant:boolean) => {
-        properties.miniVariant = miniVariant
-      }
+    const displayedSubHeader:ComputedRef<boolean> = computed(() => store.state.profile.access.hasLateralMenu || store.state.profile.access.isTeacher)
 
-      return {
-        properties,
-        menu,
-        displayedMenu,
-        displayedSubHeader,
-        handleOpenMenu
-      }
-    },
+    const handleOpenMenu = (miniVariant:boolean) => {
+      properties.miniVariant = miniVariant
+    }
 
+    return {
+      properties,
+      menu,
+      displayedMenu,
+      displayedSubHeader,
+      handleOpenMenu
+    }
+  },
 
-    middleware: ['auth']
-  })
+  middleware: ['auth']
+})
 </script>
 
 <style scoped>
-
   .client-only-placeholder {
     height: 100%;
     width: 100%;

+ 19 - 19
layouts/error.vue

@@ -13,28 +13,28 @@
 </template>
 
 <script>
-  export default {
-    layout: 'empty',
-    props: {
-      error: {
-        type: Object,
-        default: null
-      }
-    },
-    data () {
-      return {
-        pageNotFound: '404 Not Found',
-        otherError: 'An error occurred'
-      }
-    },
-    head () {
-      const title =
+export default {
+  layout: 'empty',
+  props: {
+    error: {
+      type: Object,
+      default: null
+    }
+  },
+  data () {
+    return {
+      pageNotFound: '404 Not Found',
+      otherError: 'An error occurred'
+    }
+  },
+  head () {
+    const title =
         this.error.statusCode === 404 ? this.pageNotFound : this.otherError
-      return {
-        title
-      }
+    return {
+      title
     }
   }
+}
 </script>
 
 <style scoped>

+ 5 - 5
layouts/login.vue

@@ -9,12 +9,12 @@
 </template>
 
 <script>
-  export default {
-    name: 'loginLayout',
-    data () {
-      return {
+export default {
+  name: 'LoginLayout',
+  data () {
+    return {
 
-      }
     }
   }
+}
 </script>

+ 4 - 4
models/Access/MyProfile.ts

@@ -1,13 +1,13 @@
-import {Attr, Num, Model} from '@vuex-orm/core'
-import {Historical} from "~/types/interfaces";
+import { Attr, Num, Model } from '@vuex-orm/core'
+import { Historical } from '~/types/interfaces'
 
-export class MyProfile extends Model{
+export class MyProfile extends Model {
   static entity = 'accesses'
 
   @Attr(null)
   id!: number | null
 
-  @Num(0, {nullable: true})
+  @Num(0, { nullable: true })
   activityYear!: number
 
   @Attr({})

+ 2 - 2
models/Access/PersonalizedList.ts

@@ -1,6 +1,6 @@
-import {Attr, Model, Str} from '@vuex-orm/core'
+import { Attr, Model, Str } from '@vuex-orm/core'
 
-export class PersonalizedList extends Model{
+export class PersonalizedList extends Model {
   static entity = 'personalized_lists'
 
   @Attr(null)

+ 11 - 11
models/Core/AddressPostal.ts

@@ -1,7 +1,7 @@
-import {Attr, Str, HasOne, Num, Model} from '@vuex-orm/core'
-import {Country} from "~/models/Core/Country";
+import { Attr, Str, HasOne, Num, Model } from '@vuex-orm/core'
+import { Country } from '~/models/Core/Country'
 
-export class AddressPostal extends Model{
+export class AddressPostal extends Model {
   static entity = 'address_postals'
 
   @Attr(null)
@@ -10,27 +10,27 @@ export class AddressPostal extends Model{
   @HasOne(() => Country, 'id')
   addressCountry!: Country | null
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   addressCity!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   addressOwner!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   postalCode!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   streetAddress!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   streetAddressSecond!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   streetAddressThird!: string
 
-  @Num(0, {nullable: true})
+  @Num(0, { nullable: true })
   latitude!: number
 
-  @Num(0, {nullable: true})
+  @Num(0, { nullable: true })
   longitude!: number
 }

+ 8 - 8
models/Core/BankAccount.ts

@@ -1,26 +1,26 @@
-import {Attr, Str, Bool, Model} from '@vuex-orm/core'
+import { Attr, Str, Bool, Model } from '@vuex-orm/core'
 
-export class BankAccount extends Model{
+export class BankAccount extends Model {
   static entity = 'bank_accounts'
 
   @Attr(null)
   id!: number | null
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   bankName!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   bic!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   iban!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   debitAddress!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   holder!: string
 
-  @Bool(false, {nullable: false})
+  @Bool(false, { nullable: false })
   principal!: boolean
 }

+ 11 - 11
models/Core/ContactPoint.ts

@@ -1,35 +1,35 @@
-import {Attr, Str, Model} from '@vuex-orm/core'
+import { Attr, Str, Model } from '@vuex-orm/core'
 
-export class ContactPoint extends Model{
+export class ContactPoint extends Model {
   static entity = 'contact_points'
 
   @Attr(null)
   id!: number | null
 
-  @Str('PRINCIPAL', {nullable: false})
+  @Str('PRINCIPAL', { nullable: false })
   contactType!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   email!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   emailInvalid!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   telphone!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   telphoneInvalid!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   mobilPhone!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   mobilPhoneInvalid!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   faxNumber!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   faxNumberInvalid!: string
 }

+ 2 - 2
models/Core/Country.ts

@@ -1,6 +1,6 @@
-import {Attr, Str, Model} from '@vuex-orm/core'
+import { Attr, Str, Model } from '@vuex-orm/core'
 
-export class Country extends Model{
+export class Country extends Model {
   static entity = 'countries'
 
   @Attr(null)

+ 37 - 37
models/Organization/Organization.ts

@@ -1,6 +1,6 @@
-import {Attr, Str, Bool, Num, Model} from '@vuex-orm/core'
+import { Attr, Str, Bool, Num, Model } from '@vuex-orm/core'
 
-export class Organization extends Model{
+export class Organization extends Model {
   static entity = 'organizations'
 
   @Attr(null)
@@ -9,108 +9,108 @@ export class Organization extends Model{
   @Attr({})
   originalState!: object | null
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   name!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   acronym!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   siretNumber!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   apeNumber!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   waldecNumber!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   identifier!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   ffecApproval!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   description!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   otherPractice!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   legalStatus!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   principalType!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   youngApproval!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   trainingApproval!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   otherApproval!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   collectiveAgreement!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   opca!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   icomNumber!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   urssafNumber!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   twitter!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   facebook!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   instagram!: string
 
-  @Bool(true, {nullable: false})
+  @Bool(true, { nullable: false })
   portailVisibility!: boolean
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   image!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   creationDate!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   prefectureName!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   prefectureNumber!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   declarationDate!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   tvaNumber!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   schoolCategory!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   typeEstablishment!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   typeEstablishmentDetail!: string
 
-  @Bool(false, {nullable: false})
+  @Bool(false, { nullable: false })
   isPerformanceContractor!: boolean
 
-  @Num(0, {nullable: true})
+  @Num(0, { nullable: true })
   budget!: number
 
-  @Bool(false, {nullable: false})
+  @Bool(false, { nullable: false })
   isPedagogicIsPrincipalActivity!: boolean
 
-  @Num(0, {nullable: true})
+  @Num(0, { nullable: true })
   pedagogicBudget!: number
 }

+ 4 - 4
models/Organization/OrganizationAddressPostal.ts

@@ -1,7 +1,7 @@
-import {Attr, Str, HasOne, Model} from '@vuex-orm/core'
-import {AddressPostal} from "~/models/Core/AddressPostal";
+import { Attr, Str, HasOne, Model } from '@vuex-orm/core'
+import { AddressPostal } from '~/models/Core/AddressPostal'
 
-export class OrganizationAddressPostal extends Model{
+export class OrganizationAddressPostal extends Model {
   static entity = 'organization_address_postals'
 
   @Attr(null)
@@ -10,6 +10,6 @@ export class OrganizationAddressPostal extends Model{
   @HasOne(() => AddressPostal, 'id')
   addressPostal!: AddressPostal | null
 
-  @Str('PRINCIPAL', {nullable: false})
+  @Str('PRINCIPAL', { nullable: false })
   type!: string
 }

+ 6 - 6
models/Organization/OrganizationLicence.ts

@@ -1,20 +1,20 @@
-import {Attr, Str, Model} from '@vuex-orm/core'
+import { Attr, Str, Model } from '@vuex-orm/core'
 
-export class OrganizationLicence extends Model{
+export class OrganizationLicence extends Model {
   static entity = 'organization_licences'
 
   @Attr(null)
   id!: number | null
 
-  @Str('', {nullable: false})
+  @Str('', { nullable: false })
   licensee!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   licenceNumber!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   categorie!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   validityDate!: string
 }

+ 6 - 6
models/Organization/OrganizationNetwork.ts

@@ -1,20 +1,20 @@
-import {Attr, Str, Model} from '@vuex-orm/core'
+import { Attr, Str, Model } from '@vuex-orm/core'
 
-export class OrganizationLicence extends Model{
+export class OrganizationLicence extends Model {
   static entity = 'organization_licences'
 
   @Attr(null)
   id!: number | null
 
-  @Str('', {nullable: false})
+  @Str('', { nullable: false })
   licensee!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   licenceNumber!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   categorie!: string
 
-  @Str('', {nullable: true})
+  @Str('', { nullable: true })
   validityDate!: string
 }

+ 1 - 2
nuxt.config.js

@@ -15,6 +15,5 @@ export default {
   ...plugins,
   ...i18n,
   ...vuetify,
-  ...moment,
+  ...moment
 }
-

+ 10 - 9
pages/index.vue

@@ -2,22 +2,23 @@
   <v-row justify="center" align="center">
     <v-col cols="12" sm="12" md="12">
       <h3>Bienvenue !</h3>
-      <NuxtLink to="organization">Organization</NuxtLink>
+      <NuxtLink to="organization">
+        Organization
+      </NuxtLink>
     </v-col>
   </v-row>
 </template>
 
-
 <script lang="ts">
-  import {defineComponent} from '@nuxtjs/composition-api'
+import { defineComponent } from '@nuxtjs/composition-api'
 
-  export default defineComponent({
-    name: 'index',
-    setup() {
-      return {
+export default defineComponent({
+  name: 'index',
+  setup () {
+    return {
 
-      }
     }
-  })
+  }
+})
 
 </script>

+ 9 - 10
pages/login.vue

@@ -6,18 +6,17 @@
   </v-row>
 </template>
 
-
 <script lang="ts">
-  import {defineComponent, useContext} from '@nuxtjs/composition-api'
+import { defineComponent, useContext } from '@nuxtjs/composition-api'
 
-  export default defineComponent({
-    name: 'login',
-    setup() {
-      return {
+export default defineComponent({
+  name: 'login',
+  setup () {
+    return {
 
-      }
-    },
-    layout: 'login'
-  })
+    }
+  },
+  layout: 'login'
+})
 
 </script>

+ 35 - 30
pages/organization.vue

@@ -1,43 +1,48 @@
 <template>
   <LayoutContainer>
     <LayoutBannerTop>
-      <template v-slot:bloc1>{{entry.name}}</template>
-      <template v-slot:bloc2>N°Siret : {{entry.siretNumber}}</template>
-      <template v-slot:bloc3>{{entry.description}}</template>
+      <template v-slot:bloc1>
+        {{ entry.name }}
+      </template>
+      <template v-slot:bloc2>
+        N°Siret : {{ entry.siretNumber }}
+      </template>
+      <template v-slot:bloc3>
+        {{ entry.description }}
+      </template>
     </LayoutBannerTop>
     <NuxtChild />
   </LayoutContainer>
 </template>
 
-
 <script lang="ts">
-  import {computed, defineComponent, useContext, ComputedRef} from '@nuxtjs/composition-api'
-  import {QUERY_TYPE} from "~/types/enums";
-  import {Organization} from "~/models/Organization/Organization";
-  import {queryHelper} from "~/services/store/query";
-  import {repositoryHelper} from "~/services/store/repository";
-  import {Item, Query} from "@vuex-orm/core";
+import { computed, defineComponent, useContext, ComputedRef } from '@nuxtjs/composition-api'
+import { Item, Query } from '@vuex-orm/core'
+import { QUERY_TYPE } from '~/types/enums'
+import { Organization } from '~/models/Organization/Organization'
+import { queryHelper } from '~/services/store/query'
+import { repositoryHelper } from '~/services/store/repository'
 
-  export default defineComponent({
-    name: 'organization',
-    setup() {
-      const {store} = useContext()
-      const repository = repositoryHelper.getRepository(Organization)
-      const query:ComputedRef<Query> = computed(() => repository.query())
-      const entry:ComputedRef<Item> = computed(() => {
-        return queryHelper.getItem(query.value, store.state.profile.organization.id)
-      })
-      return {
-        entry
-      }
-    },
-    async asyncData({store, $dataProvider}) {
-      await $dataProvider.invoke({
-        type: QUERY_TYPE.MODEL,
-        model: Organization,
-        id: store.state.profile.organization.id
-      })
+export default defineComponent({
+  name: 'organization',
+  setup () {
+    const { store } = useContext()
+    const repository = repositoryHelper.getRepository(Organization)
+    const query:ComputedRef<Query> = computed(() => repository.query())
+    const entry:ComputedRef<Item> = computed(() => {
+      return queryHelper.getItem(query.value, store.state.profile.organization.id)
+    })
+    return {
+      entry
     }
-  })
+  },
+  async asyncData ({ store, $dataProvider }) {
+    await $dataProvider.invoke({
+      type: QUERY_TYPE.MODEL,
+      model: Organization,
+      id: store.state.profile.organization.id
+    })
+  }
+})
 
 </script>

+ 75 - 76
pages/organization/address/_id.vue

@@ -1,66 +1,67 @@
 <template>
   <main>
     <v-skeleton-loader
-      type="text"
       v-if="loading"
-    ></v-skeleton-loader>
+      type="text"
+    />
     <LayoutContainer v-else>
       <v-card class="margin-bottom-20">
         <v-toolbar flat class="ot_light_grey toolbarForm" dark dense rounded>
           <v-toolbar-title class="ot_dark_grey--text form_main_title">
-            <v-icon class="ot_white--text ot_green icon">fa-globe-europe</v-icon>
+            <v-icon class="ot_white--text ot_green icon">
+              fa-globe-europe
+            </v-icon>
             {{ $t('address_postal') }}
           </v-toolbar-title>
         </v-toolbar>
 
-        <UiForm :model="model" :id="id" :query="query()">
+        <UiForm :id="id" :model="model" :query="query()">
           <template v-slot:form.input="{entry, updateRepository}">
-
             <v-skeleton-loader
-              type="text"
               v-if="loading"
-            ></v-skeleton-loader>
+              type="text"
+            />
             <v-container v-else fluid class="container">
               <v-row>
                 <v-col cols="12" sm="12">
                   <UiInputAutocomplete
                     field="owner"
                     label="addressOwner"
-                    itemValue="@id"
-                    :itemText="['cp', 'city']"
-                    v-on:update="updateAddressFromOwner"/>
+                    item-value="@id"
+                    :item-text="['cp', 'city']"
+                    @update="updateAddressFromOwner"
+                  />
                 </v-col>
 
                 <v-col cols="12" sm="6">
-                  <UiInputEnum field="type" label="addresstype" :data="entry['type']"  enumType="address_postal_organization" v-on:update="updateRepository"/>
+                  <UiInputEnum field="type" label="addresstype" :data="entry['type']" enum-type="address_postal_organization" @update="updateRepository" />
                 </v-col>
 
                 <v-col cols="12" sm="6">
-                  <UiInputText field="addressPostal.streetAddress" label="streetAddress" :data="entry['addressPostal.streetAddress']" v-on:update="updateRepository"/>
+                  <UiInputText field="addressPostal.streetAddress" label="streetAddress" :data="entry['addressPostal.streetAddress']" @update="updateRepository" />
                 </v-col>
                 <v-col cols="12" sm="6">
-                  <UiInputText field="addressPostal.streetAddressSecond" label="streetAddressSecond" :data="entry['addressPostal.streetAddressSecond']" v-on:update="updateRepository"/>
+                  <UiInputText field="addressPostal.streetAddressSecond" label="streetAddressSecond" :data="entry['addressPostal.streetAddressSecond']" @update="updateRepository" />
                 </v-col>
                 <v-col cols="12" sm="6">
-                  <UiInputText field="addressPostal.streetAddressThird" label="streetAddressThird" :data="entry['addressPostal.streetAddressThird']" v-on:update="updateRepository"/>
+                  <UiInputText field="addressPostal.streetAddressThird" label="streetAddressThird" :data="entry['addressPostal.streetAddressThird']" @update="updateRepository" />
                 </v-col>
                 <v-col cols="12" sm="6">
-                  <UiInputText field="addressPostal.postalCode" label="postalCode" :data="entry['addressPostal.postalCode']" v-on:update="updateRepository"/>
+                  <UiInputText field="addressPostal.postalCode" label="postalCode" :data="entry['addressPostal.postalCode']" @update="updateRepository" />
                 </v-col>
                 <v-col cols="12" sm="6">
-                  <UiInputText field="addressPostal.addressCity" label="addressCity" :data="entry['addressPostal.addressCity']" v-on:update="updateRepository"/>
+                  <UiInputText field="addressPostal.addressCity" label="addressCity" :data="entry['addressPostal.addressCity']" @update="updateRepository" />
                 </v-col>
               </v-row>
             </v-container>
 
-            <UiMap :zoom=12 :address="addressItem" v-on:updateAddress="updateAddress"></UiMap>
-
+            <UiMap :zoom="12" :address="addressItem" @updateAddress="updateAddress" />
           </template>
 
           <template v-slot:form.button>
             <NuxtLink :to="{ path: '/organization', query: { accordion: 'address_postal' }}" class="no-decoration">
               <v-btn class="mr-4 ot_light_grey ot_grey--text">
-                {{$t('back')}}
+                {{ $t('back') }}
               </v-btn>
             </NuxtLink>
           </template>
@@ -70,69 +71,67 @@
   </main>
 </template>
 
-
 <script lang="ts">
-  import {defineComponent, useContext, useFetch, ref, computed, Ref, ComputedRef} from '@nuxtjs/composition-api'
-  import {OrganizationAddressPostal} from "~/models/Organization/OrganizationAddressPostal";
-  import {QUERY_TYPE} from "~/types/enums";
-  import {repositoryHelper} from "~/services/store/repository";
-  import {queryHelper} from "~/services/store/query";
-  import {AnyJson} from "~/types/interfaces";
-  import {AddressPostal} from "~/models/Core/AddressPostal";
-  import {Repository as VuexRepository} from "@vuex-orm/core/dist/src/repository/Repository";
-  import {Model, Query} from "@vuex-orm/core";
-
-  export default defineComponent({
-    name: 'organization_address',
-    setup() {
-      const {route, $dataProvider} = useContext()
-      const loading:Ref<boolean> = ref(true)
-      const id:number = parseInt(route.value.params.id)
-
-      const repository: VuexRepository<Model> = repositoryHelper.getRepository(OrganizationAddressPostal)
-      const query:Query = repository.with('addressPostal', (query) => {
-        query.with('addressCountry')
-      })
-
-      useFetch(async () => {
-        await $dataProvider.invoke({
-          type: QUERY_TYPE.MODEL,
-          model: OrganizationAddressPostal,
-          id: id
-        })
-        loading.value = false
-      })
-
-      const addressItem:ComputedRef<AddressPostal|null> = computed(() =>  {
-        const organizationAddressPostal = queryHelper.getFirstItem(query) as OrganizationAddressPostal
-        return organizationAddressPostal.addressPostal
-      })
-
-      const updateAddress = (address: AddressPostal) => {
-        const organizationAddressPostal = queryHelper.getFirstItem(query) as OrganizationAddressPostal
-        organizationAddressPostal.addressPostal = address
-        repositoryHelper.persist(OrganizationAddressPostal, organizationAddressPostal)
-      }
-
-      /** Computed proprieties needs to be return as function until nuxt3 : https://github.com/nuxt-community/composition-api/issues/207 **/
-      return {
+import { defineComponent, useContext, useFetch, ref, computed, Ref, ComputedRef } from '@nuxtjs/composition-api'
+import { Repository as VuexRepository } from '@vuex-orm/core/dist/src/repository/Repository'
+import { Model, Query } from '@vuex-orm/core'
+import { OrganizationAddressPostal } from '~/models/Organization/OrganizationAddressPostal'
+import { QUERY_TYPE } from '~/types/enums'
+import { repositoryHelper } from '~/services/store/repository'
+import { queryHelper } from '~/services/store/query'
+import { AddressPostal } from '~/models/Core/AddressPostal'
+
+export default defineComponent({
+  name: 'organization_address',
+  setup () {
+    const { route, $dataProvider } = useContext()
+    const loading:Ref<boolean> = ref(true)
+    const id:number = parseInt(route.value.params.id)
+
+    const repository: VuexRepository<Model> = repositoryHelper.getRepository(OrganizationAddressPostal)
+    const query:Query = repository.with('addressPostal', (query) => {
+      query.with('addressCountry')
+    })
+
+    useFetch(async () => {
+      await $dataProvider.invoke({
+        type: QUERY_TYPE.MODEL,
         model: OrganizationAddressPostal,
-        query: () => query,
-        id,
-        loading,
-        panel: 0,
-        addressItem,
-        updateAddress,
-        updateAddressFromOwner: (data:any) => {
-          console.log(data)
-        }
+        id
+      })
+      loading.value = false
+    })
+
+    const addressItem:ComputedRef<AddressPostal|null> = computed(() => {
+      const organizationAddressPostal = queryHelper.getFirstItem(query) as OrganizationAddressPostal
+      return organizationAddressPostal.addressPostal
+    })
+
+    const updateAddress = (address: AddressPostal) => {
+      const organizationAddressPostal = queryHelper.getFirstItem(query) as OrganizationAddressPostal
+      organizationAddressPostal.addressPostal = address
+      repositoryHelper.persist(OrganizationAddressPostal, organizationAddressPostal)
+    }
+
+    /** Computed proprieties needs to be return as function until nuxt3 : https://github.com/nuxt-community/composition-api/issues/207 **/
+    return {
+      model: OrganizationAddressPostal,
+      query: () => query,
+      id,
+      loading,
+      panel: 0,
+      addressItem,
+      updateAddress,
+      updateAddressFromOwner: (data:any) => {
+        console.log(data)
       }
-    },
-  })
+    }
+  }
+})
 </script>
 <style>
   .toolbarForm .v-toolbar__content{
-    padding-left: 0px !important;
+    padding-left: 0 !important;
   }
   .toolbarForm .v-toolbar__title .v-icon{
     height: 46px;

+ 79 - 79
pages/organization/index.vue

@@ -305,91 +305,91 @@
 </template>
 
 <script lang="ts">
-  import {defineComponent, useContext} from '@nuxtjs/composition-api'
-  import {$organizationProfile} from "~/services/profile/organizationProfile";
-  import {Organization} from '@/models/Organization/Organization'
-  import {OrganizationAddressPostal} from "~/models/Organization/OrganizationAddressPostal";
-  import {ContactPoint} from "~/models/Core/ContactPoint";
-  import {BankAccount} from "~/models/Core/BankAccount";
-  import {repositoryHelper} from "~/services/store/repository";
-  import UseChecker from "~/use/form/useChecker";
-  import {UseNavigationHelpers} from "~/use/form/useNavigationHelpers";
-
-  export default defineComponent({
-    name: 'organization_parent',
-    setup() {
-      const {store, app: {i18n}, $dataProvider} = useContext()
-      const organizationProfile = $organizationProfile(store)
-      const id:number = store.state.profile.organization.id;
-
-      const repositories = getRepositories()
-
-      const {siretError, siretErrorMessage, checkSiret} = UseChecker.useHandleSiret(i18n, $dataProvider)
-      const checkSiretHook = async (siret:string, field:string, updateRepository:any) => {
-        await checkSiret(siret)
-        if(!siretError.value)
-          updateRepository(siret, field);
-      }
-
-      const {panel} = UseNavigationHelpers.expansionPanels()
-
-      return {
-        repositories,
-        id,
-        organizationProfile,
-        models: {Organization, ContactPoint, BankAccount, OrganizationAddressPostal},
-        datatableHeaders: getDataTablesHeaders(i18n),
-        rules: getRules(i18n),
-        siretError,
-        siretErrorMessage,
-        checkSiretHook,
-        panel
-      }
-    },
-  })
-
-  function getRules(i18n: any) {
-    return {
-      nameRules: [
-        (nameValue: string) => !!nameValue || i18n.t('required'),
-        (nameValue: string) => (nameValue || '').length <= 128 || i18n.t('name_length_rule')
-      ],
-      siretRule: [
-        (siretValue: string) => /^([0-9]{9}|[0-9]{14})$/.test(siretValue) || i18n.t('siret_error')
-      ]
+import {defineComponent, useContext} from '@nuxtjs/composition-api'
+import {$organizationProfile} from "~/services/profile/organizationProfile";
+import {Organization} from '@/models/Organization/Organization'
+import {OrganizationAddressPostal} from "~/models/Organization/OrganizationAddressPostal";
+import {ContactPoint} from "~/models/Core/ContactPoint";
+import {BankAccount} from "~/models/Core/BankAccount";
+import {repositoryHelper} from "~/services/store/repository";
+import UseChecker from "~/use/form/useChecker";
+import {UseNavigationHelpers} from "~/use/form/useNavigationHelpers";
+
+export default defineComponent({
+  name: 'organization_parent',
+  setup() {
+    const {store, app: {i18n}, $dataProvider} = useContext()
+    const organizationProfile = $organizationProfile(store)
+    const id:number = store.state.profile.organization.id;
+
+    const repositories = getRepositories()
+
+    const {siretError, siretErrorMessage, checkSiret} = UseChecker.useHandleSiret(i18n, $dataProvider)
+    const checkSiretHook = async (siret:string, field:string, updateRepository:any) => {
+      await checkSiret(siret)
+      if(!siretError.value)
+        updateRepository(siret, field);
     }
-  }
 
-  function getDataTablesHeaders(i18n: any) {
-    return {
-      headersContactPoint: [
-        {text: i18n.t('email'), value: 'email'},
-        {text: i18n.t('telphone'), value: 'telphone'},
-        {text: i18n.t('mobilPhone'), value: 'mobilPhone'},
-        {text: i18n.t('actions'), value: 'actions', sortable: false},
-      ],
-      headersBankAccount: [
-        {text: i18n.t('bankName'), value: 'bankName'},
-        {text: i18n.t('iban'), value: 'iban'},
-        {text: i18n.t('bic'), value: 'bic'},
-        {text: i18n.t('actions'), value: 'actions', sortable: false},
-      ],
-      headersAddressPostal: [
-        {text: i18n.t('address_postal_type'), value: 'type'},
-        {text: i18n.t('address'), value: 'address'},
-        {text: i18n.t('actions'), value: 'actions', sortable: false},
-      ]
-    }
-  }
+    const {panel} = UseNavigationHelpers.expansionPanels()
 
-  function getRepositories() {
     return {
-      organizationRepository: repositoryHelper.getRepository(Organization),
-      contactPointRepository: repositoryHelper.getRepository(ContactPoint),
-      bankAccountRepository: repositoryHelper.getRepository(BankAccount),
-      addressRepository: repositoryHelper.getRepository(OrganizationAddressPostal)
+      repositories,
+      id,
+      organizationProfile,
+      models: {Organization, ContactPoint, BankAccount, OrganizationAddressPostal},
+      datatableHeaders: getDataTablesHeaders(i18n),
+      rules: getRules(i18n),
+      siretError,
+      siretErrorMessage,
+      checkSiretHook,
+      panel
     }
+  },
+})
+
+function getRules(i18n: any) {
+  return {
+    nameRules: [
+      (nameValue: string) => !!nameValue || i18n.t('required'),
+      (nameValue: string) => (nameValue || '').length <= 128 || i18n.t('name_length_rule')
+    ],
+    siretRule: [
+      (siretValue: string) => /^([0-9]{9}|[0-9]{14})$/.test(siretValue) || i18n.t('siret_error')
+    ]
+  }
+}
+
+function getDataTablesHeaders(i18n: any) {
+  return {
+    headersContactPoint: [
+      {text: i18n.t('email'), value: 'email'},
+      {text: i18n.t('telphone'), value: 'telphone'},
+      {text: i18n.t('mobilPhone'), value: 'mobilPhone'},
+      {text: i18n.t('actions'), value: 'actions', sortable: false},
+    ],
+    headersBankAccount: [
+      {text: i18n.t('bankName'), value: 'bankName'},
+      {text: i18n.t('iban'), value: 'iban'},
+      {text: i18n.t('bic'), value: 'bic'},
+      {text: i18n.t('actions'), value: 'actions', sortable: false},
+    ],
+    headersAddressPostal: [
+      {text: i18n.t('address_postal_type'), value: 'type'},
+      {text: i18n.t('address'), value: 'address'},
+      {text: i18n.t('actions'), value: 'actions', sortable: false},
+    ]
+  }
+}
+
+function getRepositories() {
+  return {
+    organizationRepository: repositoryHelper.getRepository(Organization),
+    contactPointRepository: repositoryHelper.getRepository(ContactPoint),
+    bankAccountRepository: repositoryHelper.getRepository(BankAccount),
+    addressRepository: repositoryHelper.getRepository(OrganizationAddressPostal)
   }
+}
 </script>
 
 <style scoped>

+ 3 - 2
plugins/Data/axios.js

@@ -2,8 +2,9 @@ export default function ({ $axios, redirect, store }) {
   $axios.onRequest(config => {
     $axios.setHeader('x-accessid', `${store.state.profile.access.id}`)
 
-    if(store.state.profile.access.switchId)
+    if (store.state.profile.access.switchId) {
       $axios.setHeader('x-switch-user', `${store.state.profile.access.switchId}`)
+    }
 
     $axios.setToken(`${store.state.profile.access.bearer}`, 'Bearer')
   })
@@ -17,7 +18,7 @@ export default function ({ $axios, redirect, store }) {
       redirect('/login')
     }
     if (error.statusCode === 403) {
-      console.debug('forbidden');
+      console.debug('forbidden')
     }
   })
 }

+ 3 - 3
plugins/Data/dataDeleter.ts

@@ -1,11 +1,11 @@
 import {Plugin} from '@nuxt/types'
-import DataDeleter from "~/services/dataDeleter/dataDeleter";
+import DataDeleter from '~/services/dataDeleter/dataDeleter'
 
 const dataDeleterPlugin: Plugin = (ctx) => {
-  const dataDeleter = new DataDeleter();
+  const dataDeleter = new DataDeleter()
   dataDeleter.initCtx(ctx)
 
-  //Déclare un nouvel accesseur de service via le context Nuxt
+  // Déclare un nouvel accesseur de service via le context Nuxt
   ctx.$dataDeleter = dataDeleter
 }
 

+ 4 - 4
plugins/Data/dataPersister.ts

@@ -1,11 +1,11 @@
-import {Plugin} from '@nuxt/types'
-import DataPersister from "~/services/dataPersister/dataPersister";
+import { Plugin } from '@nuxt/types'
+import DataPersister from '~/services/dataPersister/dataPersister'
 
 const dataPersisterPlugin: Plugin = (ctx) => {
-  const dataPersister = new DataPersister();
+  const dataPersister = new DataPersister()
   dataPersister.initCtx(ctx)
 
-  //Déclare un nouvel accesseur de service via le context Nuxt
+  // Déclare un nouvel accesseur de service via le context Nuxt
   ctx.$dataPersister = dataPersister
 }
 

+ 4 - 4
plugins/Data/dataProvider.ts

@@ -1,11 +1,11 @@
-import {Plugin} from '@nuxt/types'
-import DataProvider from "~/services/dataProvider/dataProvider";
+import { Plugin } from '@nuxt/types'
+import DataProvider from '~/services/dataProvider/dataProvider'
 
 const dataProviderPlugin: Plugin = (ctx) => {
-  const dataProvider = new DataProvider();
+  const dataProvider = new DataProvider()
   dataProvider.initCtx(ctx)
 
-  //Déclare un nouvel accesseur de service via le context Nuxt
+  // Déclare un nouvel accesseur de service via le context Nuxt
   ctx.$dataProvider = dataProvider
 }
 

+ 4 - 4
plugins/Rights/ability.ts

@@ -1,6 +1,6 @@
 import { Plugin } from '@nuxt/types'
-import {Ability} from "@casl/ability";
-import {$abilitiesUtils} from "~/services/rights/abilitiesUtils";
+import { Ability } from '@casl/ability'
+import { $abilitiesUtils } from '~/services/rights/abilitiesUtils'
 
 /**
  * Au moment de la phase D'init de Nuxt...
@@ -8,9 +8,9 @@ import {$abilitiesUtils} from "~/services/rights/abilitiesUtils";
  */
 const abilityPlugin: Plugin = (ctx) => {
   $abilitiesUtils(ctx.store, ability).setAbilities()
-  //Déclare un nouvel accesseur de service via le context Nuxt
+  // Déclare un nouvel accesseur de service via le context Nuxt
   ctx.$ability = ability
 }
 
 export default abilityPlugin
-export const ability = new Ability();
+export const ability = new Ability()

+ 4 - 4
plugins/Rights/casl.js

@@ -1,5 +1,5 @@
-import Vue from 'vue';
-import { abilitiesPlugin } from '@casl/vue';
-import { ability } from '@/plugins/Rights/ability';
+import Vue from 'vue'
+import { abilitiesPlugin } from '@casl/vue'
+import { ability } from '@/plugins/Rights/ability'
 
-Vue.use(abilitiesPlugin, ability);
+Vue.use(abilitiesPlugin, ability)

+ 2 - 2
plugins/helpersInit.ts

@@ -1,5 +1,5 @@
-import {Plugin} from '@nuxt/types'
-import {repositoryHelper} from "~/services/store/repository";
+import { Plugin } from '@nuxt/types'
+import { repositoryHelper } from '~/services/store/repository'
 
 const helpersInitPlugin: Plugin = (ctx) => {
   repositoryHelper.setStore(ctx.store)

+ 6 - 6
plugins/route.ts

@@ -1,17 +1,17 @@
-import {Plugin} from '@nuxt/types'
+import { Plugin } from '@nuxt/types'
 
 const routePlugin: Plugin = (ctx) => {
-  if(ctx.app.router){
-    ctx.app.router.beforeEach((to, from, next)=>{
-      if(ctx.store.state.form.dirty){
+  if (ctx.app.router) {
+    ctx.app.router.beforeEach((to, from, next) => {
+      if (ctx.store.state.form.dirty) {
         ctx.store.commit('form/setShowConfirmToLeave', true)
         ctx.store.commit('form/setGoAfterLeave', to)
-      }else{
+      } else {
         next()
       }
     })
 
-    ctx.app.router.afterEach(()=>{
+    ctx.app.router.afterEach(() => {
     })
   }
 }

+ 22 - 27
services/connection/connection.ts

@@ -1,21 +1,21 @@
-import {AnyJson, DataPersisterArgs, DataProviderArgs} from "~/types/interfaces";
-import {HTTP_METHOD} from "~/types/enums";
-import {NuxtAxiosInstance} from "@nuxtjs/axios";
-import {AxiosRequestConfig} from "axios";
+import { NuxtAxiosInstance } from '@nuxtjs/axios'
+import { AxiosRequestConfig } from 'axios'
+import { AnyJson, DataPersisterArgs, DataProviderArgs } from '~/types/interfaces'
+import { HTTP_METHOD } from '~/types/enums'
 
 /**
  * @category Services/connection
  * @class Connection
  * Classe Wrapper du connecteur de requete (Axios dans notre cas)
  */
-class Connection{
+class Connection {
   static connector:NuxtAxiosInstance;
 
   /**
    * Initialisation du connecteur (Axios dans notre cas)
    * @param {NuxtAxiosInstance} connector
    */
-  static initConnector(connector: NuxtAxiosInstance){
+  static initConnector (connector: NuxtAxiosInstance) {
     Connection.connector = connector
   }
 
@@ -26,22 +26,17 @@ class Connection{
    * @param {DataProviderArgs|DataPersisterArgs} args
    * @return {Promise<any>}
    */
-  invoke(method: HTTP_METHOD, url: string, args:DataProviderArgs|DataPersisterArgs): Promise<any>{
+  invoke (method: HTTP_METHOD, url: string, args:DataProviderArgs|DataPersisterArgs): Promise<any> {
     switch (method) {
       case HTTP_METHOD.GET:
-        if(args.id)
-          return this.getItem(url, args.id, args.progress)
-        else
-          return this.getCollection(url, args.progress)
+        if (args.id) { return this.getItem(url, args.id, args.progress) } else { return this.getCollection(url, args.progress) }
 
       case HTTP_METHOD.PUT:
-        if(this.isArgsIsDataPersisterArgs(args)){
-          if(!args.data)
-            throw new Error('data not found')
+        if (this.isArgsIsDataPersisterArgs(args)) {
+          if (!args.data) { throw new Error('data not found') }
 
           return this.put(url, args.id, args.data, args.progress)
-        }
-        else throw new Error('args not a dataPersisterArgs')
+        } else { throw new Error('args not a dataPersisterArgs') }
 
       case HTTP_METHOD.DELETE:
         return this.deleteItem(url, args.id, args.progress)
@@ -57,11 +52,11 @@ class Connection{
    * @param {boolean} progress
    * @return {Promise<any>}
    */
-  private getItem(url: string, id: number, progress: boolean = true): Promise<any>{
+  private getItem (url: string, id: number, progress: boolean = true): Promise<any> {
     const config:AxiosRequestConfig = {
       url: `${url}/${id}`,
       method: HTTP_METHOD.GET,
-      progress: progress
+      progress
     }
     return this.request(config)
   }
@@ -72,11 +67,11 @@ class Connection{
    * @param {boolean} progress
    * @return {Promise<any>}
    */
-  private getCollection(url: string, progress: boolean = true): Promise<any>{
+  private getCollection (url: string, progress: boolean = true): Promise<any> {
     const config:AxiosRequestConfig = {
       url: `${url}`,
       method: HTTP_METHOD.GET,
-      progress: progress
+      progress
     }
     return this.request(config)
   }
@@ -89,12 +84,12 @@ class Connection{
    * @param {boolean} progress
    * @return {Promise<any>}
    */
-  private put(url: string, id: number, data: AnyJson, progress: boolean = true): Promise<any>{
+  private put (url: string, id: number, data: AnyJson, progress: boolean = true): Promise<any> {
     const config:AxiosRequestConfig = {
       url: `${url}/${id}`,
       method: HTTP_METHOD.PUT,
-      data: data,
-      progress: progress
+      data,
+      progress
     }
     return this.request(config)
   }
@@ -106,11 +101,11 @@ class Connection{
    * @param {boolean} progress
    * @return {Promise<any>}
    */
-  private deleteItem(url: string, id: number, progress: boolean = true): Promise<any>{
+  private deleteItem (url: string, id: number, progress: boolean = true): Promise<any> {
     const config:AxiosRequestConfig = {
       url: `${url}/${id}`,
       method: HTTP_METHOD.DELETE,
-      progress: progress
+      progress
     }
     return this.request(config)
   }
@@ -120,7 +115,7 @@ class Connection{
    * @param {AxiosRequestConfig} config
    * @return {Promise<any>}
    */
-  private async request(config:AxiosRequestConfig): Promise<any>{
+  private async request (config:AxiosRequestConfig): Promise<any> {
     return await Connection.connector.$request(config)
   }
 
@@ -128,7 +123,7 @@ class Connection{
    * Test si l'argument est bien de type DataPersister
    * @param args
    */
-  private isArgsIsDataPersisterArgs(args:DataProviderArgs|DataPersisterArgs): args is DataPersisterArgs{
+  private isArgsIsDataPersisterArgs (args:DataProviderArgs|DataPersisterArgs): args is DataPersisterArgs {
     return (args as DataPersisterArgs).data !== undefined
   }
 }

+ 16 - 20
services/connection/constructUrl.ts

@@ -1,14 +1,14 @@
-import {UrlArgs} from "~/types/interfaces";
-import {QUERY_TYPE} from "~/types/enums";
-import {Model} from "@vuex-orm/core";
-import {repositoryHelper} from "~/services/store/repository";
+import { Model } from '@vuex-orm/core'
+import { UrlArgs } from '~/types/interfaces'
+import { QUERY_TYPE } from '~/types/enums'
+import { repositoryHelper } from '~/services/store/repository'
 
 /**
  * @category Services/connection
  * @class ConstructUrl
  * Classe permettant de construire une URL pour l'interrogation d'une API externe
  */
-class ConstructUrl{
+class ConstructUrl {
   static ROOT = '/api/'
 
   /**
@@ -16,7 +16,7 @@ class ConstructUrl{
    * @param {UrlArgs} args
    * @return {string}
    */
-  invoke(args:UrlArgs): string{
+  invoke (args:UrlArgs): string {
     switch (args.type) {
       case QUERY_TYPE.DEFAULT:
         return this.getDefaultUrl(args.url)
@@ -28,7 +28,7 @@ class ConstructUrl{
         return this.getModelUrl(args.model, args.root_model, args.root_id)
 
       default:
-        throw new Error('url, model or enum must be defined');
+        throw new Error('url, model or enum must be defined')
     }
   }
 
@@ -37,9 +37,8 @@ class ConstructUrl{
    * @param {string} url
    * @return {string}
    */
-  private getDefaultUrl(url?: string): string{
-    if(typeof url === 'undefined')
-      throw new Error('url must be defined');
+  private getDefaultUrl (url?: string): string {
+    if (typeof url === 'undefined') { throw new TypeError('url must be defined') }
     return String(ConstructUrl.ROOT + url).toString()
   }
 
@@ -48,9 +47,8 @@ class ConstructUrl{
    * @param {string} enumType
    * @return {string}
    */
-  private getEnumUrl(enumType?: string): string{
-    if(typeof enumType === 'undefined')
-      throw new Error('enumType must be defined');
+  private getEnumUrl (enumType?: string): string {
+    if (typeof enumType === 'undefined') { throw new TypeError('enumType must be defined') }
     return String(ConstructUrl.ROOT + 'enum/' + enumType).toString()
   }
 
@@ -63,21 +61,19 @@ class ConstructUrl{
    * @param {number} rootId roles à tester
    * @return {string}
    */
-  private getModelUrl(model?: typeof Model, rootModel?: typeof Model, rootId?: number): string{
-    if(typeof model === 'undefined')
-      throw new Error('model must be defined');
+  private getModelUrl (model?: typeof Model, rootModel?: typeof Model, rootId?: number): string {
+    if (typeof model === 'undefined') { throw new TypeError('model must be defined') }
 
     const entity = repositoryHelper.getEntity(model)
 
-    if(typeof rootModel !== 'undefined'){
-      if(typeof rootId === 'undefined')
-        throw new Error('Root ID must be defined');
+    if (typeof rootModel !== 'undefined') {
+      if (typeof rootId === 'undefined') { throw new TypeError('Root ID must be defined') }
 
       const rootUrl = this.getModelUrl(rootModel) as string
       return String(`${rootUrl}/${rootId}/${entity}`).toString()
     }
 
-    return String(ConstructUrl.ROOT  + entity).toString()
+    return String(ConstructUrl.ROOT + entity).toString()
   }
 }
 

+ 24 - 25
services/dataDeleter/dataDeleter.ts

@@ -1,60 +1,59 @@
-import {hooks} from "~/services/dataDeleter/hook/_import";
-import {DataDeleterArgs} from "~/types/interfaces";
-import {Context} from "@nuxt/types/app";
-import Connection from "~/services/connection/connection";
-import ApiError from "~/services/utils/apiError";
-import {HTTP_METHOD} from "~/types/enums";
-import ConstructUrl from "~/services/connection/constructUrl";
-import {repositoryHelper} from "~/services/store/repository";
+import { Context } from '@nuxt/types/app'
+import { hooks } from '~/services/dataDeleter/hook/_import'
+import { DataDeleterArgs } from '~/types/interfaces'
+import Connection from '~/services/connection/connection'
+import ApiError from '~/services/utils/apiError'
+import { HTTP_METHOD } from '~/types/enums'
+import ConstructUrl from '~/services/connection/constructUrl'
+import { repositoryHelper } from '~/services/store/repository'
 
-class DataDeleter{
+class DataDeleter {
   private ctx !: Context
   private arguments!: DataDeleterArgs
 
-  constructor() {
+  constructor () {
     this.sort()
   }
 
-  initCtx(ctx:Context){
+  initCtx (ctx:Context) {
     Connection.initConnector(ctx.$axios)
     this.ctx = ctx
   }
 
-  async invoke(args:DataDeleterArgs): Promise<any>{
+  async invoke (args:DataDeleterArgs): Promise<any> {
     this.arguments = args
-    try{
+    try {
       this.preHook()
 
       const url = this.constructUrl()
       const response = await this.connection(url)
 
-      if(this.arguments.model)
-        repositoryHelper.deleteItem(this.arguments.model, this.arguments.id)
-    }catch(error){
-     throw new ApiError(error.response.status, error.response.data.detail)
+      if (this.arguments.model) { repositoryHelper.deleteItem(this.arguments.model, this.arguments.id) }
+    } catch (error) {
+      throw new ApiError(error.response.status, error.response.data.detail)
     }
   }
 
-  async preHook(){
-    for(const hook of hooks){
-      if(hook.support(this.arguments)){
+  async preHook () {
+    for (const hook of hooks) {
+      if (hook.support(this.arguments)) {
         await new hook().invoke(this.arguments)
       }
     }
   }
 
-  constructUrl(): string{
+  constructUrl (): string {
     const constructUrl = new ConstructUrl()
     return constructUrl.invoke(this.arguments)
   }
 
-  connection(url: string): Promise<any>{
+  connection (url: string): Promise<any> {
     const connection = new Connection()
     return connection.invoke(HTTP_METHOD.DELETE, url, this.arguments)
   }
 
-  sort(){
-    hooks.sort(function(a, b) {
+  sort () {
+    hooks.sort(function (a, b) {
       if (a.priority > b.priority) {
         return 1
       }
@@ -62,7 +61,7 @@ class DataDeleter{
         return -1
       }
       return 0
-    });
+    })
   }
 }
 

+ 1 - 1
services/dataDeleter/hook/_import.ts

@@ -1,4 +1,4 @@
-import HookExample from "~/services/dataPersister/hook/hookExample";
+import HookExample from '~/services/dataPersister/hook/hookExample';
 
 export const hooks = [
   HookExample

+ 3 - 3
services/dataDeleter/hook/baseHook.ts

@@ -1,9 +1,9 @@
-import {DataDeleterArgs} from "~/types/interfaces";
+import { DataDeleterArgs } from '~/types/interfaces'
 
-class BaseHook{
+class BaseHook {
   static priority = 255
 
-  static support(args:DataDeleterArgs): boolean{
+  static support (args:DataDeleterArgs): boolean {
     throw new Error('Need to be implement into static method')
   }
 }

+ 6 - 6
services/dataDeleter/hook/hookExample.ts

@@ -1,17 +1,17 @@
-import {DataDeleterArgs, HookDeleter} from "~/types/interfaces";
-import BaseHook from "~/services/dataDeleter/hook/baseHook";
+import { DataDeleterArgs, HookDeleter } from '~/types/interfaces'
+import BaseHook from '~/services/dataDeleter/hook/baseHook'
 
-class HookExample extends BaseHook implements HookDeleter{
+class HookExample extends BaseHook implements HookDeleter {
   static priority = 10
 
-  constructor() {
+  constructor () {
     super()
   }
 
-  async invoke(args: DataDeleterArgs): Promise<any>{
+  async invoke (args: DataDeleterArgs): Promise<any> {
   }
 
-  static support(args:DataDeleterArgs): boolean{
+  static support (args:DataDeleterArgs): boolean {
     return false
   }
 }

+ 32 - 32
services/dataPersister/dataPersister.ts

@@ -1,36 +1,36 @@
-import {hooks} from "~/services/dataPersister/hook/_import";
-import {AnyJson, DataPersisterArgs, DataProviderArgs} from "~/types/interfaces";
-import {Context} from "@nuxt/types/app";
-import Connection from "~/services/connection/connection";
-import ConstructUrl from "~/services/connection/constructUrl";
-import {HTTP_METHOD, QUERY_TYPE} from "~/types/enums";
-import Serializer from "~/services/serializer/serializer";
-import ApiError from "~/services/utils/apiError";
-import DataProvider from "~/services/dataProvider/dataProvider";
-
-class DataPersister{
+import { Context } from '@nuxt/types/app'
+import { hooks } from '~/services/dataPersister/hook/_import'
+import { AnyJson, DataPersisterArgs, DataProviderArgs } from '~/types/interfaces'
+import Connection from '~/services/connection/connection'
+import ConstructUrl from '~/services/connection/constructUrl'
+import { HTTP_METHOD, QUERY_TYPE } from '~/types/enums'
+import Serializer from '~/services/serializer/serializer'
+import ApiError from '~/services/utils/apiError'
+import DataProvider from '~/services/dataProvider/dataProvider'
+
+class DataPersister {
   private ctx !: Context
   private defaultArguments: DataPersisterArgs
 
-  constructor() {
+  constructor () {
     this.sort()
     this.defaultArguments = {
       type: QUERY_TYPE.MODEL,
-      progress:true
+      progress: true
     }
   }
 
-  initCtx(ctx:Context){
+  initCtx (ctx:Context) {
     Connection.initConnector(ctx.$axios)
     this.ctx = ctx
   }
 
-  getArguments(args: DataPersisterArgs):DataPersisterArgs{
+  getArguments (args: DataPersisterArgs):DataPersisterArgs {
     return { ...this.defaultArguments, ...args }
   }
 
-  async invoke(args:DataPersisterArgs): Promise<any>{
-    try{
+  async invoke (args:DataPersisterArgs): Promise<any> {
+    try {
       const dpArgs = this.getArguments(args)
 
       this.startLoading(dpArgs)
@@ -44,42 +44,42 @@ class DataPersister{
       const response = await this.connection(url, dpArgs)
 
       this.provideResponse(response, dpArgs)
-    }catch(error){
-     throw new ApiError(error.response.status, error.response.data.detail)
+    } catch (error) {
+      throw new ApiError(error.response.status, error.response.data.detail)
     }
   }
 
-  startLoading(args: DataPersisterArgs){
-    if(args.progress){
-      const $nuxt = window['$nuxt']
+  startLoading (args: DataPersisterArgs) {
+    if (args.progress) {
+      const $nuxt = window.$nuxt
       $nuxt.$loading.start()
     }
   }
 
-  async preHook(args: DataPersisterArgs){
-    for(const hook of hooks){
-      if(hook.support(args)){
+  async preHook (args: DataPersisterArgs) {
+    for (const hook of hooks) {
+      if (hook.support(args)) {
         await new hook().invoke(args)
       }
     }
   }
 
-  serialization(args: DataPersisterArgs){
+  serialization (args: DataPersisterArgs) {
     const serializer = new Serializer()
     return serializer.normalize(args)
   }
 
-  constructUrl(args: DataPersisterArgs): string{
+  constructUrl (args: DataPersisterArgs): string {
     const constructUrl = new ConstructUrl()
     return constructUrl.invoke(args)
   }
 
-  connection(url: string, args: DataPersisterArgs): Promise<any>{
+  connection (url: string, args: DataPersisterArgs): Promise<any> {
     const connection = new Connection()
     return connection.invoke(args.id ? HTTP_METHOD.PUT : HTTP_METHOD.POST, url, args)
   }
 
-  async provideResponse(response: AnyJson, args: DataPersisterArgs){
+  async provideResponse (response: AnyJson, args: DataPersisterArgs) {
     const dataProvider = new DataProvider()
     const dataProviderArgs: DataProviderArgs = {
       type: args.type,
@@ -94,8 +94,8 @@ class DataPersister{
     return await dataProvider.provide(deserializeResponse, dataProviderArgs)
   }
 
-  sort(){
-    hooks.sort(function(a, b) {
+  sort () {
+    hooks.sort(function (a, b) {
       if (a.priority > b.priority) {
         return 1
       }
@@ -103,7 +103,7 @@ class DataPersister{
         return -1
       }
       return 0
-    });
+    })
   }
 }
 

+ 1 - 1
services/dataPersister/hook/_import.ts

@@ -1,4 +1,4 @@
-import HookExample from "~/services/dataPersister/hook/hookExample";
+import HookExample from '~/services/dataPersister/hook/hookExample'
 
 export const hooks = [
   HookExample

+ 3 - 3
services/dataPersister/hook/baseHook.ts

@@ -1,9 +1,9 @@
-import {DataPersisterArgs} from "~/types/interfaces";
+import { DataPersisterArgs } from '~/types/interfaces'
 
-class BaseHook{
+class BaseHook {
   static priority = 255
 
-  static support(args:DataPersisterArgs): boolean{
+  static support (args:DataPersisterArgs): boolean {
     throw new Error('Need to be implement into static method')
   }
 }

+ 6 - 6
services/dataPersister/hook/hookExample.ts

@@ -1,17 +1,17 @@
-import {DataPersisterArgs, HookPersister} from "~/types/interfaces";
-import BaseHook from "~/services/dataPersister/hook/baseHook";
+import { DataPersisterArgs, HookPersister } from '~/types/interfaces'
+import BaseHook from '~/services/dataPersister/hook/baseHook'
 
-class HookExample extends BaseHook implements HookPersister{
+class HookExample extends BaseHook implements HookPersister {
   static priority = 10
 
-  constructor() {
+  constructor () {
     super()
   }
 
-  async invoke(args: DataPersisterArgs): Promise<any>{
+  async invoke (args: DataPersisterArgs): Promise<any> {
   }
 
-  static support(args:DataPersisterArgs): boolean{
+  static support (args:DataPersisterArgs): boolean {
     return false
   }
 }

+ 6 - 4
services/dataProvider/__mocks__/__dataProvider.ts

@@ -4,8 +4,10 @@
  cette classe dans l'application...
  */
 const mock = jest.fn().mockImplementation(() => {
-  return {invoke: () => {
+  return {
+    invoke: () => {
       return true
-    }};
-});
-export default mock;
+    }
+  }
+})
+export default mock

+ 28 - 29
services/dataProvider/dataProvider.ts

@@ -1,35 +1,34 @@
-import {AnyJson, DataProviderArgs} from "~/types/interfaces";
-import {DENORMALIZER_TYPE, HTTP_METHOD, QUERY_TYPE} from "~/types/enums";
-import {providers} from "~/services/dataProvider/provider/_import";
-import ConstructUrl from "~/services/connection/constructUrl";
-import Connection from "~/services/connection/connection";
-import Serializer from "~/services/serializer/serializer";
-import {Context} from "@nuxt/types/app";
-import ApiError from "~/services/utils/apiError";
-
-class DataProvider{
+import { Context } from '@nuxt/types/app'
+import { AnyJson, DataProviderArgs } from '~/types/interfaces'
+import { DENORMALIZER_TYPE, HTTP_METHOD, QUERY_TYPE } from '~/types/enums'
+import { providers } from '~/services/dataProvider/provider/_import'
+import ConstructUrl from '~/services/connection/constructUrl'
+import Connection from '~/services/connection/connection'
+import Serializer from '~/services/serializer/serializer'
+import ApiError from '~/services/utils/apiError'
+
+class DataProvider {
   private ctx !: Context;
   private defaultArguments!: DataProviderArgs;
 
-  constructor() {
+  constructor () {
     this.defaultArguments = {
       type: QUERY_TYPE.MODEL,
-      progress:false
+      progress: false
     }
   }
 
-  initCtx(ctx:Context){
+  initCtx (ctx:Context) {
     Connection.initConnector(ctx.$axios)
     this.ctx = ctx
   }
 
-  getArguments(args: DataProviderArgs): DataProviderArgs{
+  getArguments (args: DataProviderArgs): DataProviderArgs {
     return { ...this.defaultArguments, ...args }
   }
 
-  async invoke(args:DataProviderArgs): Promise<any>{
-
-    try{
+  async invoke (args:DataProviderArgs): Promise<any> {
+    try {
       const dpArgs = this.getArguments(args)
 
       this.startLoading(dpArgs)
@@ -41,37 +40,37 @@ class DataProvider{
       const deserializeResponse = await this.deserialization(response)
 
       return await this.provide(deserializeResponse, dpArgs)
-    }catch(error){
+    } catch (error) {
       throw new ApiError(500, error)
     }
   }
 
-  startLoading(args: DataProviderArgs){
-    if(args.progress){
-      const $nuxt = window['$nuxt']
+  startLoading (args: DataProviderArgs) {
+    if (args.progress) {
+      const $nuxt = window.$nuxt
       $nuxt.$loading.start()
     }
   }
 
-  constructUrl(args: DataProviderArgs): string{
-    const constructUrl = new ConstructUrl();
+  constructUrl (args: DataProviderArgs): string {
+    const constructUrl = new ConstructUrl()
     return constructUrl.invoke(args)
   }
 
-  connection(url: string, args: DataProviderArgs): Promise<any>{
+  connection (url: string, args: DataProviderArgs): Promise<any> {
     const connection = new Connection()
     return connection.invoke(HTTP_METHOD.GET, url, args)
   }
 
-  provide(data: AnyJson, args: DataProviderArgs): any{
-    for(const provider of providers){
-      if(provider.support(args)){
-         return new provider(this.ctx, args).invoke(data);
+  provide (data: AnyJson, args: DataProviderArgs): any {
+    for (const provider of providers) {
+      if (provider.support(args)) {
+        return new provider(this.ctx, args).invoke(data)
       }
     }
   }
 
-  deserialization(data: AnyJson): AnyJson{
+  deserialization (data: AnyJson): AnyJson {
     const serializer = new Serializer()
     return serializer.denormalize(data, DENORMALIZER_TYPE.HYDRA)
   }

+ 3 - 3
services/dataProvider/provider/_import.ts

@@ -1,6 +1,6 @@
-import ModelProvider from "~/services/dataProvider/provider/modelProvider";
-import EnumProvider from "~/services/dataProvider/provider/enumProvider";
-import DefaultProvider from "~/services/dataProvider/provider/defaultProvider";
+import ModelProvider from '~/services/dataProvider/provider/modelProvider'
+import EnumProvider from '~/services/dataProvider/provider/enumProvider'
+import DefaultProvider from '~/services/dataProvider/provider/defaultProvider'
 
 export const providers = [
   DefaultProvider,

+ 16 - 16
services/dataProvider/provider/baseProvider.ts

@@ -1,39 +1,39 @@
-import {hooks} from "~/services/dataProvider/provider/hook/_import";
-import {DataProviderArgs} from "~/types/interfaces";
-import {Context} from "@nuxt/types/app";
+import { Context } from '@nuxt/types/app'
+import { hooks } from '~/services/dataProvider/provider/hook/_import'
+import { DataProviderArgs } from '~/types/interfaces'
 
-class BaseProvider{
+class BaseProvider {
   protected arguments!: DataProviderArgs;
   protected ctx!: Context;
 
-  constructor(ctx: Context, args: DataProviderArgs) {
+  constructor (ctx: Context, args: DataProviderArgs) {
     this.arguments = args
     this.ctx = ctx
     this.sortHook()
   }
 
-  static support(args:DataProviderArgs): boolean{
+  static support (args:DataProviderArgs): boolean {
     throw new Error('Need to be implement into static method')
   }
 
-  async postHook(){
-    for(const hook of hooks){
-      if(hook.support(this.arguments)){
-        await new hook().invoke(this.arguments);
+  async postHook () {
+    for (const hook of hooks) {
+      if (hook.support(this.arguments)) {
+        await new hook().invoke(this.arguments)
       }
     }
   }
 
-  sortHook(){
-    hooks.sort(function(a, b) {
+  sortHook () {
+    hooks.sort(function (a, b) {
       if (a.priority > b.priority) {
-        return 1;
+        return 1
       }
       if (a.priority < b.priority) {
-        return -1;
+        return -1
       }
-      return 0;
-    });
+      return 0
+    })
   }
 }
 

+ 10 - 10
services/dataProvider/provider/defaultProvider.ts

@@ -1,19 +1,19 @@
-import {AnyJson, DataProviderArgs, Provider} from "~/types/interfaces";
-import BaseProvider from "~/services/dataProvider/provider/baseProvider";
-import {QUERY_TYPE} from "~/types/enums";
-import {Context} from "@nuxt/types/app";
+import { Context } from '@nuxt/types/app'
+import { AnyJson, DataProviderArgs, Provider } from '~/types/interfaces'
+import BaseProvider from '~/services/dataProvider/provider/baseProvider'
+import { QUERY_TYPE } from '~/types/enums'
 
-class DefaultProvider extends BaseProvider implements Provider{
-  constructor(ctx: Context, args: DataProviderArgs) {
-    super(ctx, args);
+class DefaultProvider extends BaseProvider implements Provider {
+  constructor (ctx: Context, args: DataProviderArgs) {
+    super(ctx, args)
   }
 
-  async invoke(data: AnyJson): Promise<any>{
+  async invoke (data: AnyJson): Promise<any> {
     return data
   }
 
-  static support(args:DataProviderArgs): boolean{
-    return args.type ===  QUERY_TYPE.DEFAULT
+  static support (args:DataProviderArgs): boolean {
+    return args.type === QUERY_TYPE.DEFAULT
   }
 }
 

+ 19 - 21
services/dataProvider/provider/enumProvider.ts

@@ -1,38 +1,36 @@
-import {AnyJson, DataProviderArgs, EnumChoice, EnumChoices, Provider} from "~/types/interfaces";
-import BaseProvider from "~/services/dataProvider/provider/baseProvider";
-import {QUERY_TYPE} from "~/types/enums";
-import * as _ from "lodash";
-import {Context} from "@nuxt/types/app";
+import * as _ from 'lodash'
+import { Context } from '@nuxt/types/app'
+import { AnyJson, DataProviderArgs, EnumChoice, EnumChoices, Provider } from '~/types/interfaces'
+import BaseProvider from '~/services/dataProvider/provider/baseProvider'
+import { QUERY_TYPE } from '~/types/enums'
 
-class EnumProvider extends BaseProvider implements Provider{
-  constructor(ctx: Context, args: DataProviderArgs) {
-    super(ctx, args);
+class EnumProvider extends BaseProvider implements Provider {
+  constructor (ctx: Context, args: DataProviderArgs) {
+    super(ctx, args)
   }
 
-  async invoke(data: AnyJson): Promise<any>{
+  async invoke (data: AnyJson): Promise<any> {
     const enums:EnumChoices = []
-    _.each(data['items'], (item, key) =>{
+    _.each(data.items, (item, key) => {
       const entry:EnumChoice = {
         value: key,
         label: this.ctx.app.i18n.t(item) as string
-      };
+      }
       enums.push(entry)
     })
     return this.sortEnum(enums)
   }
 
-  private sortEnum(enums:EnumChoices){
-    return enums.sort( (a, b) => {
-      if (a.label > b.label)
-        return 1;
-      if (a.label < b.label)
-        return -1;
-      return 0;
-    });
+  private sortEnum (enums:EnumChoices) {
+    return enums.sort((a, b) => {
+      if (a.label > b.label) { return 1 }
+      if (a.label < b.label) { return -1 }
+      return 0
+    })
   }
 
-  static support(args:DataProviderArgs): boolean{
-    return args.type ===  QUERY_TYPE.ENUM
+  static support (args:DataProviderArgs): boolean {
+    return args.type === QUERY_TYPE.ENUM
   }
 }
 

+ 1 - 1
services/dataProvider/provider/hook/_import.ts

@@ -1,4 +1,4 @@
-import HookExample from "~/services/dataProvider/provider/hook/hookExample";
+import HookExample from '~/services/dataProvider/provider/hook/hookExample';
 
 export const hooks = [
   HookExample

+ 4 - 4
services/dataProvider/provider/hook/baseHook.ts

@@ -1,12 +1,12 @@
-import {DataProviderArgs} from "~/types/interfaces";
+import { DataProviderArgs } from '~/types/interfaces'
 
-class BaseHook{
+class BaseHook {
   static priority = 255
 
-  constructor() {
+  constructor () {
   }
 
-  static support(args:DataProviderArgs): boolean{
+  static support (args:DataProviderArgs): boolean {
     throw new Error('Need to be implement into static method')
   }
 }

+ 6 - 6
services/dataProvider/provider/hook/hookExample.ts

@@ -1,17 +1,17 @@
-import {DataProviderArgs, HookProvider} from "~/types/interfaces";
-import BaseHook from "~/services/dataProvider/provider/hook/baseHook";
+import { DataProviderArgs, HookProvider } from '~/types/interfaces'
+import BaseHook from '~/services/dataProvider/provider/hook/baseHook'
 
-class HookExample extends BaseHook implements HookProvider{
+class HookExample extends BaseHook implements HookProvider {
   static priority = 10
 
-  constructor() {
+  constructor () {
     super()
   }
 
-  async invoke(args: DataProviderArgs): Promise<any> {
+  async invoke (args: DataProviderArgs): Promise<any> {
   }
 
-  static support(args:DataProviderArgs): boolean{
+  static support (args:DataProviderArgs): boolean {
     return false
   }
 }

+ 13 - 14
services/dataProvider/provider/modelProvider.ts

@@ -1,26 +1,25 @@
-import {AnyJson, DataProviderArgs, Provider} from "~/types/interfaces";
-import BaseProvider from "~/services/dataProvider/provider/baseProvider";
-import {QUERY_TYPE} from "~/types/enums";
-import {Context} from "@nuxt/types/app";
-import * as _ from "lodash";
-import {repositoryHelper} from "~/services/store/repository";
+import { Context } from '@nuxt/types/app'
+import * as _ from 'lodash'
+import { AnyJson, DataProviderArgs, Provider } from '~/types/interfaces'
+import BaseProvider from '~/services/dataProvider/provider/baseProvider'
+import { QUERY_TYPE } from '~/types/enums'
+import { repositoryHelper } from '~/services/store/repository'
 
-class ModelProvider extends BaseProvider implements Provider{
-  constructor(ctx: Context, args: DataProviderArgs) {
-    super(ctx, args);
+class ModelProvider extends BaseProvider implements Provider {
+  constructor (ctx: Context, args: DataProviderArgs) {
+    super(ctx, args)
   }
 
-  async invoke(data: AnyJson): Promise<any>{
-    if(typeof this.arguments.model === 'undefined')
-      throw new Error('model must be defined');
+  async invoke (data: AnyJson): Promise<any> {
+    if (typeof this.arguments.model === 'undefined') { throw new TypeError('model must be defined') }
 
-    data['originalState'] = _.cloneDeep(data)
+    data.originalState = _.cloneDeep(data)
     await repositoryHelper.persist(this.arguments.model, data)
 
     await this.postHook()
   }
 
-  static support(args:DataProviderArgs): boolean{
+  static support (args:DataProviderArgs): boolean {
     return args.type === QUERY_TYPE.MODEL
   }
 }

+ 19 - 24
services/profile/accessProfile.ts

@@ -1,12 +1,12 @@
-import {AbilitiesType, accessState, AccessStore, AnyJson} from "~/types/interfaces";
-import {Ability} from "@casl/ability";
+import { Ability } from '@casl/ability'
+import { AbilitiesType, accessState, AccessStore, AnyJson } from '~/types/interfaces'
 
 /**
  * @category Services/profiles
  * @class AccessProfile
  * Classe répondant aux différentes questions que l'on peut se poser sur l'access connecté
  */
-class AccessProfile{
+class AccessProfile {
   private accessProfile: accessState
 
   private $ability:Ability = {} as Ability
@@ -16,7 +16,7 @@ class AccessProfile{
    * @param {AccessStore} store State Access du Store contenant les informations de l'utilisateur
    * @param {Ability} ability Plugin $ability
    */
-  constructor(store:AccessStore, ability:Ability) {
+  constructor (store:AccessStore, ability:Ability) {
     this.accessProfile = store.state.profile.access
     this.$ability = ability
   }
@@ -26,16 +26,14 @@ class AccessProfile{
    * @param {Array<string>} roles roles à tester
    * @return {boolean}
    */
-  hasRole(roles:Array<string>): boolean{
-    if (null === roles)
-      return true;
+  hasRole (roles:Array<string>): boolean {
+    if (roles === null) { return true }
 
-    let hasRole = false;
+    let hasRole = false
     roles.map((r) => {
-      if (this.accessProfile.roles.indexOf(r) > -1)
-        hasRole = true;
-    });
-    return hasRole;
+      if (this.accessProfile.roles.includes(r)) { hasRole = true }
+    })
+    return hasRole
   }
 
   /**
@@ -43,29 +41,26 @@ class AccessProfile{
    * @param {Array<AbilitiesType>} ability abilité à tester
    * @return {boolean}
    */
-  hasAbility(ability:Array<AbilitiesType>): boolean{
-    if(ability === null)
-      return true;
+  hasAbility (ability:Array<AbilitiesType>): boolean {
+    if (ability === null) { return true }
 
-    let hasAbility= false;
+    let hasAbility = false
     ability.map((ability) => {
-      if (this.$ability.can(ability.action, ability.subject))
-        hasAbility = true;
-    });
-    return hasAbility;
+      if (this.$ability.can(ability.action, ability.subject)) { hasAbility = true }
+    })
+    return hasAbility
   }
 
   /**
    * Factory
    * @return {AnyJson} retourne les fonction rendues publiques
    */
-  handler():AnyJson{
+  handler ():AnyJson {
     return {
       hasRole: this.hasRole.bind(this),
-      hasAbility: this.hasAbility.bind(this),
+      hasAbility: this.hasAbility.bind(this)
     }
   }
 }
 
-export const $accessProfile = (store:AccessStore, ability:Ability) => new AccessProfile(store, ability);
-
+export const $accessProfile = (store:AccessStore, ability:Ability) => new AccessProfile(store, ability)

+ 27 - 29
services/profile/organizationProfile.ts

@@ -1,18 +1,18 @@
-import {AnyJson, organizationState, OrganizationStore} from "~/types/interfaces";
+import { AnyJson, organizationState, OrganizationStore } from '~/types/interfaces'
 
 /**
  * @category Services/profiles
  * @class OrganizationProfile
  * Classe répondant aux différentes questions que l'on peut se poser sur l'organization de l'access connecté
  */
-class OrganizationProfile{
+class OrganizationProfile {
   private organizationProfile:organizationState
 
   /**
    * @constructor
    * @param {OrganizationStore} store State organization du store contenant les informations de l'organisation
    */
-  constructor(store:OrganizationStore) {
+  constructor (store:OrganizationStore) {
     this.organizationProfile = store.state.profile.organization
   }
 
@@ -21,12 +21,11 @@ class OrganizationProfile{
    * @param {Array<string>} modules Modules à tester
    * @return {boolean}
    */
-  hasModule(modules:Array<string>):boolean {
-    let hasModule = false;
+  hasModule (modules:Array<string>):boolean {
+    let hasModule = false
     modules.map((module) => {
-      if (this.organizationProfile.modules && this.organizationProfile.modules.indexOf(module) > -1)
-        hasModule = true
-    });
+      if (this.organizationProfile.modules && this.organizationProfile.modules.includes(module)) { hasModule = true }
+    })
     return hasModule
   }
 
@@ -34,7 +33,7 @@ class OrganizationProfile{
    * L'organization fait-elle partie d'un réseau ?
    * @return {boolean}
    */
-  isInsideNetwork(): boolean{
+  isInsideNetwork (): boolean {
     return this.isCmf() || this.isFfec()
   }
 
@@ -42,29 +41,29 @@ class OrganizationProfile{
    * L'organization fait-elle partie du réseau CMF ?
    * @return {boolean}
    */
-  isCmf():boolean {
-    const networks = this.organizationProfile.networks.filter( (network:string) => {
+  isCmf ():boolean {
+    const networks = this.organizationProfile.networks.filter((network:string) => {
       return network == process.env.cmf_network
-    });
-    return networks.length > 0;
+    })
+    return networks.length > 0
   }
 
   /**
    * L'organization fait-elle partie du réseau FFEC ?
    * @return {boolean}
    */
-  isFfec():boolean {
-    const networks = this.organizationProfile.networks.filter( (network:string) => {
+  isFfec ():boolean {
+    const networks = this.organizationProfile.networks.filter((network:string) => {
       return network == process.env.ffec_network
-    });
-    return networks.length > 0;
+    })
+    return networks.length > 0
   }
 
   /**
    * L'organization possède t'elle un produit school ou school premium
    * @return {boolean}
    */
-  isSchool():boolean {
+  isSchool ():boolean {
     return this.isSchoolProduct() || this.isSchoolPremiumProduct()
   }
 
@@ -72,7 +71,7 @@ class OrganizationProfile{
    * L'organization possède t'elle un produit artiste ou artiste premium
    * @return {boolean}
    */
-  isArtist():boolean {
+  isArtist ():boolean {
     return this.isArtistProduct() || this.isArtistPremiumProduct()
   }
 
@@ -80,7 +79,7 @@ class OrganizationProfile{
    * L'organization possède t'elle un produit school
    * @return {boolean}
    */
-  isSchoolProduct():boolean {
+  isSchoolProduct ():boolean {
     return this.organizationProfile.product === process.env.school_product
   }
 
@@ -88,7 +87,7 @@ class OrganizationProfile{
    * L'organization possède t'elle un produit school premium
    * @return {boolean}
    */
-  isSchoolPremiumProduct():boolean {
+  isSchoolPremiumProduct ():boolean {
     return this.organizationProfile.product === process.env.school_premium_product
   }
 
@@ -96,7 +95,7 @@ class OrganizationProfile{
    * L'organization possède t'elle un produit premium
    * @return {boolean}
    */
-  isArtistProduct():boolean {
+  isArtistProduct ():boolean {
     return this.organizationProfile.product === process.env.artist_product
   }
 
@@ -104,7 +103,7 @@ class OrganizationProfile{
    * L'organization possède t'elle un produit artiste premium
    * @return {boolean}
    */
-  isArtistPremiumProduct():boolean {
+  isArtistPremiumProduct ():boolean {
     return this.organizationProfile.product === process.env.artist_premium_product
   }
 
@@ -112,7 +111,7 @@ class OrganizationProfile{
    * L'organization possède t'elle un produit manager
    * @return {boolean}
    */
-  isManagerProduct():boolean {
+  isManagerProduct ():boolean {
     return this.organizationProfile.product === process.env.manager_product
   }
 
@@ -120,15 +119,15 @@ class OrganizationProfile{
    * L'organization possède t'elledes enfants
    * @return {boolean|null}
    */
-  isOrganizationWithChildren():any{
-    return this.organizationProfile.hasChildren;
+  isOrganizationWithChildren ():any {
+    return this.organizationProfile.hasChildren
   }
 
   /**
    * Factory
    * @return {AnyJson} retourne les fonction rendues publiques
    */
-  handler():AnyJson{
+  handler ():AnyJson {
     return {
       hasModule: this.hasModule.bind(this),
       isSchool: this.isSchool.bind(this),
@@ -140,5 +139,4 @@ class OrganizationProfile{
   }
 }
 
-export const $organizationProfile = (store:OrganizationStore) => new OrganizationProfile(store);
-
+export const $organizationProfile = (store:OrganizationStore) => new OrganizationProfile(store)

+ 47 - 47
services/rights/abilitiesUtils.ts

@@ -1,11 +1,11 @@
-import {$accessProfile} from "@/services/profile/accessProfile"
-import {$organizationProfile} from "@/services/profile/organizationProfile"
-import {$roleUtils} from "~/services/rights/roleUtils";
-import {AbilitiesType, AnyJson, AnyStore} from "~/types/interfaces";
-import {Ability} from "@casl/ability";
-import * as _ from "lodash";
-import Serializer from "~/services/serializer/serializer";
-import {DENORMALIZER_TYPE} from "~/types/enums";
+import { $accessProfile } from '@/services/profile/accessProfile'
+import { $organizationProfile } from '@/services/profile/organizationProfile'
+import { Ability } from '@casl/ability'
+import * as _ from 'lodash'
+import { $roleUtils } from '~/services/rights/roleUtils'
+import { AbilitiesType, AnyJson, AnyStore } from '~/types/interfaces'
+import Serializer from '~/services/serializer/serializer'
+import { DENORMALIZER_TYPE } from '~/types/enums'
 
 /**
  * @category Services/droits
@@ -20,7 +20,7 @@ class AbilitiesUtils {
   /**
    * @constructor
    */
-  constructor(store: AnyStore, ability: Ability) {
+  constructor (store: AnyStore, ability: Ability) {
     this.$store = store
     this.$ability = ability
   }
@@ -29,14 +29,14 @@ class AbilitiesUtils {
    * retourne la factory des services
    * @return {AnyJson} factory
    */
-  getFactory(){
+  getFactory () {
     return this.factory
   }
 
   /**
    * Initialise les services factories
    */
-  initFactory() {
+  initFactory () {
     this.factory = {
       access: $accessProfile(this.$store, this.$ability),
       organization: $organizationProfile(this.$store)
@@ -46,9 +46,9 @@ class AbilitiesUtils {
   /**
    * Set les abilities de l'utilisateur à chaque fois qu'on update son profile
    */
-  setAbilities(){
-    //Nécessaire pour que l'update des abilité soit correct après la phase SSR
-    this.$ability.update(this.$store.state.profile.access.abilities);
+  setAbilities () {
+    // Nécessaire pour que l'update des abilité soit correct après la phase SSR
+    this.$ability.update(this.$store.state.profile.access.abilities)
 
     /**
      * Au moment où l'on effectue un SetProfile via le store Organization, il faut aller récupérer
@@ -58,15 +58,15 @@ class AbilitiesUtils {
       after: (action, state) => {
         switch (action.type) {
           case 'profile/organization/setProfile':
-            //On récupère les abilités
-            const abilities = this.getAbilities();
+            // On récupère les abilités
+            const abilities = this.getAbilities()
 
-            //On les store puis on update le service ability pour le mettre à jour.
+            // On les store puis on update le service ability pour le mettre à jour.
             this.$store.commit('profile/access/setAbilities', abilities)
-            this.$ability.update(abilities);
-            //Unsubscribe pour éviter les memory leaks
+            this.$ability.update(abilities)
+            // Unsubscribe pour éviter les memory leaks
             unsubscribe()
-            break;
+            break
         }
       }
     })
@@ -76,10 +76,10 @@ class AbilitiesUtils {
    * Récupération de l'ensemble des abilities quelles soient par Roles ou par Config.
    * @return {Array<AbilitiesType>}
    */
-  getAbilities():Array<AbilitiesType> {
+  getAbilities ():Array<AbilitiesType> {
     const abilitiesByRoles = this.getAbilitiesByRoles(this.$store.state.profile.access.roles)
-    this.$ability.update(abilitiesByRoles);
-    this.initFactory();
+    this.$ability.update(abilitiesByRoles)
+    this.initFactory()
     return abilitiesByRoles.concat(this.getAbilitiesByConfig('./config/abilities/config.yaml'))
   }
 
@@ -88,9 +88,9 @@ class AbilitiesUtils {
    * @param {Array<string>} roles
    * @return {Array<AbilitiesType>}
    */
-  getAbilitiesByRoles(roles: Array<string>): Array<AbilitiesType> {
-    roles = $roleUtils.transformUnderscoreToHyphenBeforeCompleteMigration(roles);
-    return $roleUtils.transformRoleToAbilities(roles);
+  getAbilitiesByRoles (roles: Array<string>): Array<AbilitiesType> {
+    roles = $roleUtils.transformUnderscoreToHyphenBeforeCompleteMigration(roles)
+    return $roleUtils.transformRoleToAbilities(roles)
   }
 
   /**
@@ -100,18 +100,18 @@ class AbilitiesUtils {
    * @param {string} configPath
    * @return {Array<AbilitiesType>}
    */
-  getAbilitiesByConfig(configPath:string): Array<AbilitiesType> {
+  getAbilitiesByConfig (configPath:string): Array<AbilitiesType> {
     let abilitiesByConfig: Array<AbilitiesType> = []
-   try {
+    try {
       const serializer = new Serializer()
-      const doc = serializer.denormalize({path: configPath}, DENORMALIZER_TYPE.YAML);
-      const abilitiesAvailable = doc['abilities']
+      const doc = serializer.denormalize({ path: configPath }, DENORMALIZER_TYPE.YAML)
+      const abilitiesAvailable = doc.abilities
       const abilitiesFiltered = this.abilitiesAvailableFilter(abilitiesAvailable)
       abilitiesByConfig = this.transformAbilitiesConfigToAbility(abilitiesFiltered)
     } catch (e) {
       throw new Error(e.message)
     }
-    return abilitiesByConfig;
+    return abilitiesByConfig
   }
 
   /**
@@ -119,9 +119,9 @@ class AbilitiesUtils {
    * @param {AnyJson} abilitiesAvailable
    * @return {AnyJson}
    */
-  abilitiesAvailableFilter(abilitiesAvailable:AnyJson):AnyJson{
-    return _.pickBy(abilitiesAvailable, (ability:any) =>{
-      const services = ability['services']
+  abilitiesAvailableFilter (abilitiesAvailable:AnyJson):AnyJson {
+    return _.pickBy(abilitiesAvailable, (ability:any) => {
+      const services = ability.services
       return this.canHaveTheAbility(services)
     })
   }
@@ -131,16 +131,16 @@ class AbilitiesUtils {
    * @param {AnyJson} abilitiesAvailable
    * @return {Array<AbilitiesType>}
    */
-  transformAbilitiesConfigToAbility(abilitiesAvailable:AnyJson):Array<AbilitiesType>{
-    let abilitiesByConfig: Array<AbilitiesType> = []
+  transformAbilitiesConfigToAbility (abilitiesAvailable:AnyJson):Array<AbilitiesType> {
+    const abilitiesByConfig: Array<AbilitiesType> = []
     _.each(abilitiesAvailable, (ability, subject) => {
-      let myAbility: AbilitiesType = {
-        action: ability['action'],
-        subject: subject
+      const myAbility: AbilitiesType = {
+        action: ability.action,
+        subject
       }
       abilitiesByConfig.push(myAbility)
     })
-    return abilitiesByConfig;
+    return abilitiesByConfig
   }
 
   /**
@@ -148,23 +148,23 @@ class AbilitiesUtils {
    * @param {AnyJson} functionByservices
    * @return {boolean}
    */
-  canHaveTheAbility(functionByservices: AnyJson) {
-    let hasAbility = true;
+  canHaveTheAbility (functionByservices: AnyJson) {
+    let hasAbility = true
     _.each(functionByservices, (functions, service) => {
       if (hasAbility) {
         const nbFunctions = functions.length
         let cmpt = 0
         while (hasAbility && nbFunctions > cmpt) {
-          const f = functions[cmpt]['function'];
-          const parameters = functions[cmpt]['parameters'] ?? null;
-          const result = functions[cmpt]['result'] ?? null;
+          const f = functions[cmpt].function
+          const parameters = functions[cmpt].parameters ?? null
+          const result = functions[cmpt].result ?? null
           hasAbility = result !== null ? this.factory[service].handler()[f](parameters) == result : this.factory[service].handler()[f](parameters)
           cmpt++
         }
       }
     })
-    return hasAbility;
+    return hasAbility
   }
 }
 
-export const $abilitiesUtils = (store: AnyStore, ability:Ability) => new AbilitiesUtils(store, ability);
+export const $abilitiesUtils = (store: AnyStore, ability:Ability) => new AbilitiesUtils(store, ability)

+ 29 - 30
services/rights/roleUtils.ts

@@ -1,5 +1,5 @@
-import {AbilitiesType, AnyJson} from "~/types/interfaces";
-import * as _ from "lodash";
+import * as _ from 'lodash'
+import { AbilitiesType, AnyJson } from '~/types/interfaces'
 
 const roles_by_function:Array<string> = [
   'ROLE_SUPER_ADMIN',
@@ -21,7 +21,7 @@ const roles_by_function:Array<string> = [
   'ROLE_MEMBER_CORE',
   'ROLE_OTHER',
   'ROLE_OTHER_CORE'
-];
+]
 
 const roles_to_change:Array<string> = [
   'ROLE_GENERAL_CONFIG',
@@ -38,11 +38,11 @@ const roles_to_change:Array<string> = [
   'ROLE_BILLINGS_SEIZURE_VIEW',
   'ROLE_ONLINEREGISTRATION_ADMINISTRATION',
   'ROLE_ONLINEREGISTRATION_ADMINISTRATION_VIEW'
-];
+]
 
 const action_map: AnyJson = {
   '': 'manage',
-  '_VIEW': 'read'
+  _VIEW: 'read'
 }
 
 /**
@@ -51,15 +51,14 @@ const action_map: AnyJson = {
  * Classe permettant de mener des opérations sur les roles
  */
 class RoleUtils {
-
   /**
    * Test si une personne possède un profil suivant ses roles
    * @param {string} profil_name
    * @param {Array<string>} roles
    * @return {boolean}
    */
-  isA(profil_name:string, roles:Array<string>): boolean {
-    return roles.indexOf('ROLE_' + profil_name + '_CORE') >= 0
+  isA (profil_name:string, roles:Array<string>): boolean {
+    return roles.includes('ROLE_' + profil_name + '_CORE')
   }
 
   /**
@@ -67,9 +66,9 @@ class RoleUtils {
    * @param {Array<string>} roles
    * @return {Array<string>}
    */
-  filterFunctionRoles(roles:Array<string>):Array<string>{
-    return roles.filter(role => {
-      return roles_by_function.indexOf(role) < 0
+  filterFunctionRoles (roles:Array<string>):Array<string> {
+    return roles.filter((role) => {
+      return !roles_by_function.includes(role)
     })
   }
 
@@ -78,20 +77,20 @@ class RoleUtils {
    * @param {Array<string>} roles
    * @return {Array<string>}
    */
-  transformUnderscoreToHyphenBeforeCompleteMigration(roles: Array<string>): Array<string> {
-    const regex = /(ROLE\_)([A-Z]*\_[A-Z]*)([A-Z\_]*)*/i;
-    let match;
+  transformUnderscoreToHyphenBeforeCompleteMigration (roles: Array<string>): Array<string> {
+    const regex = /(ROLE_)([A-Z]*_[A-Z]*)([A-Z_]*)*/i
+    let match
     roles = roles.map((role) => {
-      if (roles_to_change.indexOf(role) >= 0) {
+      if (roles_to_change.includes(role)) {
         if ((match = regex.exec(role)) !== null) {
-          let role = match[1]
-          let subject = match[2].replace('_', '-')
-          let action = match[3]
-          return role + subject + (action ? action : '')
+          const role = match[1]
+          const subject = match[2].replace('_', '-')
+          const action = match[3]
+          return role + subject + (action || '')
         }
       }
-      return role;
-    });
+      return role
+    })
     return roles
   }
 
@@ -100,16 +99,16 @@ class RoleUtils {
    * @param {Array<string>} roles
    * @return {Array<AbilitiesType>}
    */
-  transformRoleToAbilities(roles: Array<string>): [] | Array<AbilitiesType> {
-    let abilities:Array<AbilitiesType> = [];
+  transformRoleToAbilities (roles: Array<string>): [] | Array<AbilitiesType> {
+    const abilities:Array<AbilitiesType> = []
 
-    const regex = /(ROLE\_)([A-Z\-]*)([\_A-Z]*)/i;
-    let match;
+    const regex = /(ROLE_)([A-Z-]*)([_A-Z]*)/i
+    let match
 
-    _.each(roles, role =>{
+    _.each(roles, (role) => {
       if ((match = regex.exec(role)) !== null) {
-        let subject = match[2]
-        let action = match[3]
+        const subject = match[2]
+        const action = match[3]
         abilities.push({
           action: action_map[action],
           subject: subject.toLowerCase()
@@ -117,8 +116,8 @@ class RoleUtils {
       }
     })
 
-    return abilities;
+    return abilities
   }
 }
 
-export const $roleUtils = new RoleUtils();
+export const $roleUtils = new RoleUtils()

+ 2 - 2
services/serializer/denormalizer/_import.ts

@@ -1,5 +1,5 @@
-import Hydra from "~/services/serializer/denormalizer/hydra";
-import Yaml from "~/services/serializer/denormalizer/yaml";
+import Hydra from '~/services/serializer/denormalizer/hydra'
+import Yaml from '~/services/serializer/denormalizer/yaml'
 
 export const denormalizers = [
   Yaml,

+ 3 - 3
services/serializer/denormalizer/baseDenormalizer.ts

@@ -1,7 +1,7 @@
-import {DENORMALIZER_TYPE} from "~/types/enums";
+import { DENORMALIZER_TYPE } from '~/types/enums'
 
-abstract class BaseDenormalizer{
-  static support(type: DENORMALIZER_TYPE): boolean {
+abstract class BaseDenormalizer {
+  static support (type: DENORMALIZER_TYPE): boolean {
     throw new Error('Need to be implement into static method')
   }
 }

+ 38 - 38
services/serializer/denormalizer/hydra.ts

@@ -1,14 +1,14 @@
-import {AnyJson, Denormalizer} from "~/types/interfaces";
-import BaseDenormalizer from "~/services/serializer/denormalizer/baseDenormalizer";
-import {DENORMALIZER_TYPE} from "~/types/enums";
+import { AnyJson, Denormalizer } from '~/types/interfaces'
+import BaseDenormalizer from '~/services/serializer/denormalizer/baseDenormalizer'
+import { DENORMALIZER_TYPE } from '~/types/enums'
 
 /**
  * @category Services/serializer/denormalizer
  * @class HydraParser
  * Classe permettant d'assurer la dénormalization d'un objet Hydra en JSON
  */
-class Hydra extends BaseDenormalizer implements Denormalizer{
-  static support(type: DENORMALIZER_TYPE): boolean {
+class Hydra extends BaseDenormalizer implements Denormalizer {
+  static support (type: DENORMALIZER_TYPE): boolean {
     return type === DENORMALIZER_TYPE.HYDRA
   }
 
@@ -17,12 +17,12 @@ class Hydra extends BaseDenormalizer implements Denormalizer{
    * @param {AnyJson} hydraData
    * @return {AnyJson} réponse parsée
    */
-  public denormalize(hydraData: AnyJson): AnyJson {
+  public denormalize (hydraData: AnyJson): AnyJson {
     if (hydraData['hydra:member']) {
-      hydraData.totalCount = hydraData['hydra:totalItems'];
-      return this.parseCollection(hydraData);
+      hydraData.totalCount = hydraData['hydra:totalItems']
+      return this.parseCollection(hydraData)
     } else {
-      return this.parseItem(hydraData);
+      return this.parseItem(hydraData)
     }
   }
 
@@ -30,71 +30,71 @@ class Hydra extends BaseDenormalizer implements Denormalizer{
    * Méthode de parsing appelé si on est dans un GET
    * @param {AnyJson} hydraData
    */
-  private parseItem(hydraData: AnyJson): AnyJson {
+  private parseItem (hydraData: AnyJson): AnyJson {
     if (hydraData['hydra:previous']) {
-      let iriParts = hydraData['hydra:previous'].split('/');
-      hydraData.previous = iriParts[iriParts.length - 1];
+      const iriParts = hydraData['hydra:previous'].split('/')
+      hydraData.previous = iriParts[iriParts.length - 1]
     }
     if (hydraData['hydra:next']) {
-      let iriParts = hydraData['hydra:next'].split('/');
-      hydraData.next = iriParts[iriParts.length - 1];
+      const iriParts = hydraData['hydra:next'].split('/')
+      hydraData.next = iriParts[iriParts.length - 1]
     }
     if (hydraData['hydra:totalItems']) {
-      hydraData.totalItems = hydraData['hydra:totalItems'];
+      hydraData.totalItems = hydraData['hydra:totalItems']
     }
     if (hydraData['hydra:itemPosition']) {
-      hydraData.itemPosition = hydraData['hydra:itemPosition'];
+      hydraData.itemPosition = hydraData['hydra:itemPosition']
     }
-    return hydraData;
+    return hydraData
   }
 
   /**
    * Méthode de parsing appelé si on est dans un GET Collection
    * @param {AnyJson} hydraData
    */
-  private parseCollection(hydraData: AnyJson): AnyJson {
-    let collectionResponse = hydraData['hydra:member'];
-    collectionResponse.metadata = {};
-    collectionResponse.order = {};
-    collectionResponse.search = {};
+  private parseCollection (hydraData: AnyJson): AnyJson {
+    const collectionResponse = hydraData['hydra:member']
+    collectionResponse.metadata = {}
+    collectionResponse.order = {}
+    collectionResponse.search = {}
 
     // Put metadata in a property of the collection
     for (const key in hydraData) {
-      const value = hydraData[key];
-      if ('hydra:member' !== key) {
-        collectionResponse.metadata[key] = value;
+      const value = hydraData[key]
+      if (key !== 'hydra:member') {
+        collectionResponse.metadata[key] = value
       }
     }
 
     // Populate href property for all elements of the collection
     for (const key in collectionResponse) {
-      const value = collectionResponse[key];
-      this.populateAllData(value);
+      const value = collectionResponse[key]
+      this.populateAllData(value)
     }
 
-    if ('undefined' !== typeof (hydraData['hydra:search'])) {
-      let collectionSearch = hydraData['hydra:search']['hydra:mapping'];
+    if (typeof (hydraData['hydra:search']) !== 'undefined') {
+      const collectionSearch = hydraData['hydra:search']['hydra:mapping']
       for (const key in collectionSearch) {
-        const value = collectionSearch[key];
-        if (value['variable'].indexOf("filter[order]") === 0) {
-          collectionResponse.order[value['property']] = value;
-        } else if (value['variable'].indexOf("filter[where]") === 0) {
-          collectionResponse.search[value['property']] = value;
+        const value = collectionSearch[key]
+        if (value.variable.indexOf('filter[order]') === 0) {
+          collectionResponse.order[value.property] = value
+        } else if (value.variable.indexOf('filter[where]') === 0) {
+          collectionResponse.search[value.property] = value
         }
       }
     }
-    return collectionResponse;
+    return collectionResponse
   }
 
   /**
    * Hydrate l'objet JSON de façon récursive (afin de gérer les objet nested)
    * @param {AnyJson} data
    */
-  private populateAllData(data: AnyJson):void {
+  private populateAllData (data: AnyJson):void {
     for (const key in data) {
-      const value = data[key];
+      const value = data[key]
       if (value instanceof Object) {
-        this.populateAllData(value);
+        this.populateAllData(value)
       }
     }
   }

+ 10 - 10
services/serializer/denormalizer/yaml.ts

@@ -1,16 +1,16 @@
-import {AnyJson, Denormalizer} from "~/types/interfaces";
-import { read } from 'yaml-import';
-import BaseDenormalizer from "~/services/serializer/denormalizer/baseDenormalizer";
-import {DENORMALIZER_TYPE} from "~/types/enums";
-const yaml = require('js-yaml');
+import { read } from 'yaml-import'
+import { AnyJson, Denormalizer } from '~/types/interfaces'
+import BaseDenormalizer from '~/services/serializer/denormalizer/baseDenormalizer'
+import { DENORMALIZER_TYPE } from '~/types/enums'
+const yaml = require('js-yaml')
 
 /**
  * @category Services/utils
  * @class YamlParser
  * Classe permettant d'assurer la dénormalization d'un fichier JSON en JSON
  */
-class Yaml extends BaseDenormalizer implements Denormalizer{
-  static support(type: DENORMALIZER_TYPE): boolean {
+class Yaml extends BaseDenormalizer implements Denormalizer {
+  static support (type: DENORMALIZER_TYPE): boolean {
     return type === DENORMALIZER_TYPE.YAML
   }
 
@@ -19,10 +19,10 @@ class Yaml extends BaseDenormalizer implements Denormalizer{
    * @param {AnyJson} data
    * @return {AnyJson}
    */
-  denormalize(data: AnyJson): AnyJson {
+  denormalize (data: AnyJson): AnyJson {
     try {
-      return yaml.load(yaml.dump(read(data.path)));
-    }catch (e) {
+      return yaml.load(yaml.dump(read(data.path)))
+    } catch (e) {
       throw new Error(e.message)
     }
   }

+ 1 - 1
services/serializer/normalizer/_import.ts

@@ -1,4 +1,4 @@
-import Model from "~/services/serializer/normalizer/model";
+import Model from '~/services/serializer/normalizer/model'
 
 export const normalizers = [
   Model

+ 3 - 3
services/serializer/normalizer/baseNormalizer.ts

@@ -1,7 +1,7 @@
-import {QUERY_TYPE} from "~/types/enums";
+import { QUERY_TYPE } from '~/types/enums'
 
-abstract class BaseNormalizer{
-  static support(type: QUERY_TYPE): boolean {
+abstract class BaseNormalizer {
+  static support (type: QUERY_TYPE): boolean {
     throw new Error('Need to be implement into static method')
   }
 }

+ 10 - 12
services/serializer/normalizer/model.ts

@@ -1,16 +1,16 @@
-import BaseNormalizer from "~/services/serializer/normalizer/baseNormalizer";
-import {DataPersisterArgs, Normalizer} from "~/types/interfaces";
-import {QUERY_TYPE} from "~/types/enums";
-import {repositoryHelper} from "~/services/store/repository";
-import * as _ from "lodash"
+import * as _ from 'lodash'
+import BaseNormalizer from '~/services/serializer/normalizer/baseNormalizer'
+import { DataPersisterArgs, Normalizer } from '~/types/interfaces'
+import { QUERY_TYPE } from '~/types/enums'
+import { repositoryHelper } from '~/services/store/repository'
 
 /**
  * @category Services/serializer/normalizer
  * @class Model
  * Classe assurant la normalization d'un Model vers un fichier JSON
  */
-class Model extends BaseNormalizer implements Normalizer{
-  static support(type: QUERY_TYPE): boolean {
+class Model extends BaseNormalizer implements Normalizer {
+  static support (type: QUERY_TYPE): boolean {
     return type === QUERY_TYPE.MODEL
   }
 
@@ -19,14 +19,12 @@ class Model extends BaseNormalizer implements Normalizer{
    * @param {DataPersisterArgs} args
    * @return {any} réponse
    */
-  normalize(args:DataPersisterArgs): any {
-    if(!args.model)
-      throw new Error('model must be present')
+  normalize (args:DataPersisterArgs): any {
+    if (!args.model) { throw new Error('model must be present') }
 
     const item = repositoryHelper.findItemFromModel(args.model, args.id)
 
-    if(!item || typeof item === "undefined")
-      throw new Error('Item not found')
+    if (!item || typeof item === 'undefined') { throw new Error('Item not found') }
 
     const data = item.$toJson()
     return _.omit(data, 'originalState')

+ 12 - 12
services/serializer/serializer.ts

@@ -1,21 +1,21 @@
-import {AnyJson, DataPersisterArgs} from "~/types/interfaces";
-import {denormalizers} from "~/services/serializer/denormalizer/_import";
-import {normalizers} from "~/services/serializer/normalizer/_import";
-import {DENORMALIZER_TYPE} from "~/types/enums";
+import { AnyJson, DataPersisterArgs } from '~/types/interfaces'
+import { denormalizers } from '~/services/serializer/denormalizer/_import'
+import { normalizers } from '~/services/serializer/normalizer/_import'
+import { DENORMALIZER_TYPE } from '~/types/enums'
 
 class Serializer {
-  public normalize(args:DataPersisterArgs){
-    for(const normalizer of normalizers){
-      if(normalizer.support(args.type)){
-        return new normalizer().normalize(args);
+  public normalize (args:DataPersisterArgs) {
+    for (const normalizer of normalizers) {
+      if (normalizer.support(args.type)) {
+        return new normalizer().normalize(args)
       }
     }
   }
 
-  public denormalize(data: AnyJson, type: DENORMALIZER_TYPE): any {
-    for(const denormalizer of denormalizers){
-      if(denormalizer.support(type)){
-        return new denormalizer().denormalize(data);
+  public denormalize (data: AnyJson, type: DENORMALIZER_TYPE): any {
+    for (const denormalizer of denormalizers) {
+      if (denormalizer.support(type)) {
+        return new denormalizer().denormalize(data)
       }
     }
   }

+ 17 - 20
services/store/query.ts

@@ -1,27 +1,25 @@
-import {Query as VuexQuery, Model} from "@vuex-orm/core";
-import {$objectProperties} from "~/services/utils/objectProperties";
-import {AnyJson} from "~/types/interfaces";
-import {Collection, Item} from "@vuex-orm/core/dist/src/data/Data";
+import { Query as VuexQuery, Model } from '@vuex-orm/core'
+import { Collection, Item } from '@vuex-orm/core/dist/src/data/Data'
+import { $objectProperties } from '~/services/utils/objectProperties'
+import { AnyJson } from '~/types/interfaces'
 
 /**
  * @category Services/store
  * @class Query
  * Classe Wrapper pour assurer les opérations les plus communes des Query de VuexORM
  */
-class Query{
-
+class Query {
   /**
    * Récupération de l'Item souhaité
    * @param {VuexQuery} query
    * @param {number} id
    * @return {Item} l'Item
    */
-  public getItem(query: VuexQuery, id:number): Item{
-    const item  =  query.find(id)
-    if(!item || typeof item === "undefined")
-      throw new Error('item not found')
+  public getItem (query: VuexQuery, id:number): Item {
+    const item = query.find(id)
+    if (!item || typeof item === 'undefined') { throw new Error('item not found') }
 
-    return item;
+    return item
   }
 
   /**
@@ -29,12 +27,11 @@ class Query{
    * @param {VuexQuery} query
    * @return {Item} l'Item
    */
-  public getFirstItem(query: VuexQuery): Item{
-    const item  =  query.first()
-    if(!item || typeof item === "undefined")
-      throw new Error('item not found')
+  public getFirstItem (query: VuexQuery): Item {
+    const item = query.first()
+    if (!item || typeof item === 'undefined') { throw new Error('item not found') }
 
-    return item;
+    return item
   }
 
   /**
@@ -42,7 +39,7 @@ class Query{
    * @param {VuexQuery} query
    * @return {Collection} Array d'Item
    */
-  public getCollection(query: VuexQuery):Collection{
+  public getCollection (query: VuexQuery):Collection {
     return query.get()
   }
 
@@ -52,8 +49,8 @@ class Query{
    * @param {number} id
    * @return {AnyJson} réponse
    */
-  public getFlattenEntry(query: VuexQuery, id:number): AnyJson{
-    return $objectProperties.cloneAndFlatten(this.getItem(query, id) as AnyJson);
+  public getFlattenEntry (query: VuexQuery, id:number): AnyJson {
+    return $objectProperties.cloneAndFlatten(this.getItem(query, id) as AnyJson)
   }
 
   /**
@@ -61,7 +58,7 @@ class Query{
    * @param {VuexQuery} query
    * @return {Array<AnyJson>} réponse
    */
-  public getFlattenEntries(query: VuexQuery): Array<AnyJson>{
+  public getFlattenEntries (query: VuexQuery): Array<AnyJson> {
     const entries = this.getCollection(query)
     return entries.map((entry:AnyJson) => {
       return $objectProperties.cloneAndFlatten(entry)

+ 20 - 23
services/store/repository.ts

@@ -1,22 +1,22 @@
-import {Collection, Item, Model, Repository as VuexRepository} from "@vuex-orm/core";
-import {$objectProperties} from "~/services/utils/objectProperties";
-import {AnyJson} from "~/types/interfaces";
-import {Store} from "vuex";
-import * as _ from "lodash";
+import { Collection, Item, Model, Repository as VuexRepository } from '@vuex-orm/core'
+import { Store } from 'vuex'
+import * as _ from 'lodash'
+import { $objectProperties } from '~/services/utils/objectProperties'
+import { AnyJson } from '~/types/interfaces'
 
 /**
  * @category Services/store
  * @class Repository
  * Classe Wrapper pour assurer les opérations les plus communes des Repository de VuexORM
  */
-class Repository{
+class Repository {
   private store !: Store<any>
 
   /**
    * Set le store
    * @param {Store<any>} store
    */
-  public setStore(store: Store<any>){
+  public setStore (store: Store<any>) {
     this.store = store
   }
 
@@ -25,11 +25,11 @@ class Repository{
    * @param {Model} model
    * @return {VuexRepository<Model>} le repository
    */
-  public getRepository(model: typeof Model): VuexRepository<Model>{
+  public getRepository (model: typeof Model): VuexRepository<Model> {
     return this.store.$repo(model)
   }
 
-  public createNewModelInstance(model: typeof Model):Model{
+  public createNewModelInstance (model: typeof Model):Model {
     return this.getRepository(model).make()
   }
 
@@ -38,7 +38,7 @@ class Repository{
    * @param {Model} model
    * @return {string} l'entité
    */
-  public getEntity(model: typeof Model): string{
+  public getEntity (model: typeof Model): string {
     return this.getRepository(model).getModel().$entity()
   }
 
@@ -47,9 +47,8 @@ class Repository{
    * @param {Model} model
    * @param {AnyJson} entry
    */
-  public persist(model: typeof Model, entry:AnyJson): void{
-    if(_.isEmpty(entry))
-      throw new Error('entry is empty')
+  public persist (model: typeof Model, entry:AnyJson): void {
+    if (_.isEmpty(entry)) { throw new Error('entry is empty') }
 
     this.getRepository(model).save(entry)
   }
@@ -61,9 +60,8 @@ class Repository{
    * @param {any} value
    * @param {string} field
    */
-  public updateStoreFromField(model: typeof Model, entry:AnyJson, value:any, field:string): void{
-    if(!_.has(entry, field))
-      throw new Error('field not found')
+  public updateStoreFromField (model: typeof Model, entry:AnyJson, value:any, field:string): void {
+    if (!_.has(entry, field)) { throw new Error('field not found') }
 
     entry[field] = value
     this.persist(model, $objectProperties.cloneAndNest(entry))
@@ -75,11 +73,10 @@ class Repository{
    * @param {number} id
    * @return {Item} l'Item
    */
-  public findItemFromModel(model: typeof Model, id:number): Item{
+  public findItemFromModel (model: typeof Model, id:number): Item {
     const repository = this.getRepository(model)
-    const item =  repository.find(id)
-    if(!item || typeof item === "undefined")
-      throw new Error('Item not found')
+    const item = repository.find(id)
+    if (!item || typeof item === 'undefined') { throw new Error('Item not found') }
 
     return item
   }
@@ -89,7 +86,7 @@ class Repository{
    * @param {Model} model
    * @return {Collection} la collection
    */
-  public findCollectionFromModel(model: typeof Model): Collection{
+  public findCollectionFromModel (model: typeof Model): Collection {
     const repository = this.getRepository(model)
     return repository.all()
   }
@@ -99,7 +96,7 @@ class Repository{
    * @param {Model} model
    * @param {number} id
    */
-  public deleteItem(model: typeof Model, id: number){
+  public deleteItem (model: typeof Model, id: number) {
     const repository = this.getRepository(model)
     repository.destroy(id)
   }
@@ -108,7 +105,7 @@ class Repository{
    * Supprime tous les Items du repository
    * @param {VuexRepository} repository
    */
-  public cleanRepository(repository: VuexRepository){
+  public cleanRepository (repository: VuexRepository) {
     repository.flush()
   }
 }

+ 3 - 3
services/utils/apiError.ts

@@ -1,12 +1,12 @@
-class ApiError extends Error{
+class ApiError extends Error {
   private status !: number
 
-  constructor(status:number, message:string) {
+  constructor (status:number, message:string) {
     super(message)
     this.status = status
   }
 
-  public getStatus(){
+  public getStatus () {
     return this.status
   }
 }

Some files were not shown because too many files changed in this diff