|
|
@@ -0,0 +1,138 @@
|
|
|
+import {ref, useContext} from "@nuxtjs/composition-api";
|
|
|
+import {ItemMenu, ItemsMenu} from "~/types/types";
|
|
|
+import {getAccessMenu} from "~/use/layout/Menus/accessMenu";
|
|
|
+import {getAgendaMenu} from "~/use/layout/Menus/agendaMenu";
|
|
|
+import {getEquipmentMenu} from "~/use/layout/Menus/equipmentMenu";
|
|
|
+import {getEducationalMenu} from "~/use/layout/Menus/educationalMenu";
|
|
|
+import {getBillingMenu} from "~/use/layout/Menus/billingMenu";
|
|
|
+import {getCommunicationMenu} from "~/use/layout/Menus/communicationMenu";
|
|
|
+import {getDonorsMenu} from "~/use/layout/Menus/donorsMenu";
|
|
|
+import {getMedalsMenu} from "~/use/layout/Menus/medalsMenu";
|
|
|
+import {getStatsMenu} from "~/use/layout/Menus/statsMenu";
|
|
|
+import {getCotisationsMenu} from "~/use/layout/Menus/cotisationsMenu";
|
|
|
+import {getAdmin2iosMenu} from "~/use/layout/Menus/admin2iosMenu";
|
|
|
+import {getWebsiteMenu} from "~/use/layout/Menus/websiteMenu";
|
|
|
+import {getConfigurationMenu} from "~/use/layout/Menus/configurationMenu";
|
|
|
+import {getMyFamilyMenu} from "~/use/layout/Menus/myFamilyMenu";
|
|
|
+import {getMyAccessesMenu} from "~/use/layout/Menus/myAccessesMenu";
|
|
|
+import {getAccountMenu} from "~/use/layout/Menus/accountMenu";
|
|
|
+
|
|
|
+/**
|
|
|
+ * @category Use/template
|
|
|
+ * @class Menu
|
|
|
+ * Use Classe pour la construction du Menu
|
|
|
+ */
|
|
|
+class Menu{
|
|
|
+ private $ability:any;
|
|
|
+ private $config:any;
|
|
|
+ private $store:any;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @constructor
|
|
|
+ * Initialisation des services issues du context
|
|
|
+ */
|
|
|
+ constructor() {
|
|
|
+ }
|
|
|
+
|
|
|
+ setUpContext(){
|
|
|
+ const {$ability, $config, store} = useContext();
|
|
|
+ this.$ability = $ability;
|
|
|
+ this.$config = $config;
|
|
|
+ this.$store = store;
|
|
|
+ return this;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Construit le menu et mets à jour le state du profile d'access
|
|
|
+ */
|
|
|
+ useLateralMenuConstruct(){
|
|
|
+ let menu:ItemsMenu = []
|
|
|
+
|
|
|
+ const accessMenu = getAccessMenu(this.$config,this.$ability,this.$store)
|
|
|
+ if(accessMenu) menu.push(accessMenu)
|
|
|
+
|
|
|
+ const agendaMenu = getAgendaMenu(this.$config,this.$ability)
|
|
|
+ if(agendaMenu) menu.push(agendaMenu)
|
|
|
+
|
|
|
+ const equipmentMenu = getEquipmentMenu(this.$config,this.$ability)
|
|
|
+ if(equipmentMenu) menu.push(equipmentMenu)
|
|
|
+
|
|
|
+ const educationalMenu = getEducationalMenu(this.$config,this.$ability)
|
|
|
+ if(educationalMenu) menu.push(educationalMenu)
|
|
|
+
|
|
|
+ const billingMenu = getBillingMenu(this.$config,this.$ability)
|
|
|
+ if(billingMenu) menu.push(billingMenu)
|
|
|
+
|
|
|
+ const communicationMenu = getCommunicationMenu(this.$config,this.$ability)
|
|
|
+ if(communicationMenu) menu.push(communicationMenu)
|
|
|
+
|
|
|
+ const donorsMenu = getDonorsMenu(this.$config,this.$ability)
|
|
|
+ if(donorsMenu) menu.push(donorsMenu)
|
|
|
+
|
|
|
+ const medalsMenu = getMedalsMenu(this.$config,this.$ability)
|
|
|
+ if(medalsMenu) menu.push(medalsMenu)
|
|
|
+
|
|
|
+ const websiteMenu = getWebsiteMenu(this.$config,this.$ability,this.$store).getMenu()
|
|
|
+ if(websiteMenu) menu.push(websiteMenu)
|
|
|
+
|
|
|
+ const cotisationsMenu = getCotisationsMenu(this.$config,this.$ability)
|
|
|
+ if(cotisationsMenu) menu.push(cotisationsMenu)
|
|
|
+
|
|
|
+ const statsMenu = getStatsMenu(this.$config,this.$ability)
|
|
|
+ if(statsMenu) menu.push(statsMenu)
|
|
|
+
|
|
|
+ const admin2iosMenu = getAdmin2iosMenu(this.$config,this.$ability)
|
|
|
+ if(admin2iosMenu) menu.push(admin2iosMenu)
|
|
|
+
|
|
|
+ //Si l'utilisateur possède au moins un menu alors le menu latéral sera accessible
|
|
|
+ this.$store.commit('profile/access/setHasLateralMenu', menu.length > 0)
|
|
|
+
|
|
|
+ return ref(menu)
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Construit le menu configuration et mets à jour le state du profile d'access
|
|
|
+ */
|
|
|
+ useConfigurationMenuConstruct() {
|
|
|
+ const menu = getConfigurationMenu(this.$config,this.$ability,this.$store);
|
|
|
+ //Si l'utilisateur possède au moins un menu alors le menu configuration sera accessible
|
|
|
+ this.$store.commit('profile/access/setHasConfigurationMenu', menu != null)
|
|
|
+ return ref(menu)
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Construit le menu Mon Compte
|
|
|
+ */
|
|
|
+ useAccountMenuConstruct() {
|
|
|
+ return ref(getAccountMenu(this.$config,this.$ability,this.$store))
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Construit le menu Mes structure et mets à jour le state du profile d'access
|
|
|
+ */
|
|
|
+ useMyAccessesMenuConstruct() {
|
|
|
+ const menu = getMyAccessesMenu(this.$config,this.$ability,this.$store);
|
|
|
+ //Si l'utilisateur possède au moins un menu alors le menu mes structures sera accessible
|
|
|
+ this.$store.commit('profile/access/setHasAccessesMenu', menu != null)
|
|
|
+ return ref(menu)
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Construit le menu Changement d'utilisateur et mets à jour le state du profile d'access
|
|
|
+ */
|
|
|
+ useMyFamilyMenuConstruct() {
|
|
|
+ const menu = getMyFamilyMenu(this.$config,this.$ability,this.$store);
|
|
|
+ //Si l'utilisateur possède au moins un menu alors le menu changement d'utilisateur sera accessible
|
|
|
+ this.$store.commit('profile/access/setHasFamilyMenu', menu != null)
|
|
|
+ return ref(menu)
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Construit le menu site internet du header
|
|
|
+ */
|
|
|
+ useWebSiteMenuConstruct() {
|
|
|
+ return ref(getWebsiteMenu(this.$config,this.$ability,this.$store).getHeaderMenu())
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export const $useMenu = new Menu()
|