menu.ts 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. import {ref, useContext} from "@nuxtjs/composition-api";
  2. import {ItemMenu, ItemsMenu} from "~/types/types";
  3. import {getAccessMenu} from "~/use/layout/Menus/accessMenu";
  4. import {getAgendaMenu} from "~/use/layout/Menus/agendaMenu";
  5. import {getEquipmentMenu} from "~/use/layout/Menus/equipmentMenu";
  6. import {getEducationalMenu} from "~/use/layout/Menus/educationalMenu";
  7. import {getBillingMenu} from "~/use/layout/Menus/billingMenu";
  8. import {getCommunicationMenu} from "~/use/layout/Menus/communicationMenu";
  9. import {getDonorsMenu} from "~/use/layout/Menus/donorsMenu";
  10. import {getMedalsMenu} from "~/use/layout/Menus/medalsMenu";
  11. import {getStatsMenu} from "~/use/layout/Menus/statsMenu";
  12. import {getCotisationsMenu} from "~/use/layout/Menus/cotisationsMenu";
  13. import {getAdmin2iosMenu} from "~/use/layout/Menus/admin2iosMenu";
  14. import {getWebsiteMenu} from "~/use/layout/Menus/websiteMenu";
  15. import {getConfigurationMenu} from "~/use/layout/Menus/configurationMenu";
  16. import {getMyFamilyMenu} from "~/use/layout/Menus/myFamilyMenu";
  17. import {getMyAccessesMenu} from "~/use/layout/Menus/myAccessesMenu";
  18. import {getAccountMenu} from "~/use/layout/Menus/accountMenu";
  19. /**
  20. * @category Use/template
  21. * @class Menu
  22. * Use Classe pour la construction du Menu
  23. */
  24. class Menu{
  25. private $ability:any;
  26. private $config:any;
  27. private $store:any;
  28. /**
  29. * @constructor
  30. * Initialisation des services issues du context
  31. */
  32. constructor() {
  33. }
  34. setUpContext(){
  35. const {$ability, $config, store} = useContext();
  36. this.$ability = $ability;
  37. this.$config = $config;
  38. this.$store = store;
  39. return this;
  40. }
  41. /**
  42. * Construit le menu et mets à jour le state du profile d'access
  43. */
  44. useLateralMenuConstruct(){
  45. let menu:ItemsMenu = []
  46. const accessMenu = getAccessMenu(this.$config,this.$ability,this.$store)
  47. if(accessMenu) menu.push(accessMenu)
  48. const agendaMenu = getAgendaMenu(this.$config,this.$ability)
  49. if(agendaMenu) menu.push(agendaMenu)
  50. const equipmentMenu = getEquipmentMenu(this.$config,this.$ability)
  51. if(equipmentMenu) menu.push(equipmentMenu)
  52. const educationalMenu = getEducationalMenu(this.$config,this.$ability)
  53. if(educationalMenu) menu.push(educationalMenu)
  54. const billingMenu = getBillingMenu(this.$config,this.$ability)
  55. if(billingMenu) menu.push(billingMenu)
  56. const communicationMenu = getCommunicationMenu(this.$config,this.$ability)
  57. if(communicationMenu) menu.push(communicationMenu)
  58. const donorsMenu = getDonorsMenu(this.$config,this.$ability)
  59. if(donorsMenu) menu.push(donorsMenu)
  60. const medalsMenu = getMedalsMenu(this.$config,this.$ability)
  61. if(medalsMenu) menu.push(medalsMenu)
  62. const websiteMenu = getWebsiteMenu(this.$config,this.$ability,this.$store).getMenu()
  63. if(websiteMenu) menu.push(websiteMenu)
  64. const cotisationsMenu = getCotisationsMenu(this.$config,this.$ability)
  65. if(cotisationsMenu) menu.push(cotisationsMenu)
  66. const statsMenu = getStatsMenu(this.$config,this.$ability)
  67. if(statsMenu) menu.push(statsMenu)
  68. const admin2iosMenu = getAdmin2iosMenu(this.$config,this.$ability)
  69. if(admin2iosMenu) menu.push(admin2iosMenu)
  70. //Si l'utilisateur possède au moins un menu alors le menu latéral sera accessible
  71. this.$store.commit('profile/access/setHasLateralMenu', menu.length > 0)
  72. return ref(menu)
  73. }
  74. /**
  75. * Construit le menu configuration et mets à jour le state du profile d'access
  76. */
  77. useConfigurationMenuConstruct() {
  78. const menu = getConfigurationMenu(this.$config,this.$ability,this.$store);
  79. //Si l'utilisateur possède au moins un menu alors le menu configuration sera accessible
  80. this.$store.commit('profile/access/setHasConfigurationMenu', menu != null)
  81. return ref(menu)
  82. }
  83. /**
  84. * Construit le menu Mon Compte
  85. */
  86. useAccountMenuConstruct() {
  87. return ref(getAccountMenu(this.$config,this.$ability,this.$store))
  88. }
  89. /**
  90. * Construit le menu Mes structure et mets à jour le state du profile d'access
  91. */
  92. useMyAccessesMenuConstruct() {
  93. const menu = getMyAccessesMenu(this.$config,this.$ability,this.$store);
  94. //Si l'utilisateur possède au moins un menu alors le menu mes structures sera accessible
  95. this.$store.commit('profile/access/setHasAccessesMenu', menu != null)
  96. return ref(menu)
  97. }
  98. /**
  99. * Construit le menu Changement d'utilisateur et mets à jour le state du profile d'access
  100. */
  101. useMyFamilyMenuConstruct() {
  102. const menu = getMyFamilyMenu(this.$config,this.$ability,this.$store);
  103. //Si l'utilisateur possède au moins un menu alors le menu changement d'utilisateur sera accessible
  104. this.$store.commit('profile/access/setHasFamilyMenu', menu != null)
  105. return ref(menu)
  106. }
  107. /**
  108. * Construit le menu site internet du header
  109. */
  110. useWebSiteMenuConstruct() {
  111. return ref(getWebsiteMenu(this.$config,this.$ability,this.$store).getHeaderMenu())
  112. }
  113. }
  114. export const $useMenu = new Menu()