| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- import {ref, useContext, Ref} from "@nuxtjs/composition-api";
- import {ItemMenu, ItemsMenu, OrganizationStore} from "~/types/interfaces";
- 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";
- import {Ability} from "@casl/ability";
- /**
- * @category Use/layout
- * @class Menu
- * Use Classe pour la construction du Menu
- */
- class Menu{
- private $ability!:Ability;
- private $config!:any;
- private $store!:OrganizationStore;
- /**
- * Initialise le context NUXT
- */
- 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():Ref{
- let menu:ItemsMenu = []
- const accessMenu:ItemMenu | null = getAccessMenu(this.$config,this.$ability,this.$store)
- if(accessMenu) menu.push(accessMenu)
- const agendaMenu:ItemMenu | null = getAgendaMenu(this.$config,this.$ability)
- if(agendaMenu) menu.push(agendaMenu)
- const equipmentMenu:ItemMenu | null = getEquipmentMenu(this.$config,this.$ability)
- if(equipmentMenu) menu.push(equipmentMenu)
- const educationalMenu:ItemMenu | null = getEducationalMenu(this.$config,this.$ability)
- if(educationalMenu) menu.push(educationalMenu)
- const billingMenu:ItemMenu | null = getBillingMenu(this.$config,this.$ability)
- if(billingMenu) menu.push(billingMenu)
- const communicationMenu:ItemMenu | null = getCommunicationMenu(this.$config,this.$ability)
- if(communicationMenu) menu.push(communicationMenu)
- const donorsMenu:ItemMenu | null = getDonorsMenu(this.$config,this.$ability)
- if(donorsMenu) menu.push(donorsMenu)
- const medalsMenu:ItemMenu | null = getMedalsMenu(this.$config,this.$ability)
- if(medalsMenu) menu.push(medalsMenu)
- const websiteMenu:ItemMenu | null = getWebsiteMenu(this.$config,this.$ability,this.$store).getMenu()
- if(websiteMenu) menu.push(websiteMenu)
- const cotisationsMenu:ItemMenu | null = getCotisationsMenu(this.$config,this.$ability)
- if(cotisationsMenu) menu.push(cotisationsMenu)
- const statsMenu:ItemMenu | null = getStatsMenu(this.$config,this.$ability)
- if(statsMenu) menu.push(statsMenu)
- const admin2iosMenu:ItemMenu | null = 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():Ref {
- const menu:ItemMenu | null = 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():Ref {
- return ref(getAccountMenu(this.$config,this.$ability,this.$store))
- }
- /**
- * Construit le menu Mes structure et mets à jour le state du profile d'access
- */
- useMyAccessesMenuConstruct():Ref {
- const menu:ItemMenu | null = 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():Ref {
- const menu:ItemMenu | null = 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():Ref {
- return ref(getWebsiteMenu(this.$config,this.$ability,this.$store).getHeaderMenu())
- }
- }
- export const $useMenu = new Menu()
|