浏览代码

Menu Statistiques

Vincent GUFFON 4 年之前
父节点
当前提交
29d6bb33f3

+ 2 - 2
components/Layout/MenuComponent.vue

@@ -100,10 +100,10 @@
     font-size: 16px;
   }
   .v-list-item{
-    min-height: 10px;
+    min-height: 10px !important;
   }
   .v-list-item__action {
-    margin: 8px 0;
+    margin: 10px 0;
   }
   .v-list-item__content {
     padding: 8px 0;

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

@@ -2,7 +2,11 @@
     action: 'display'
     services:
       access:
-        - {function: hasAbility, parameters: [{action: 'read', subject: 'mails'},{action: 'read', subject: 'emails'},{action: 'read', subject: 'sms'}]}
+        - function: hasAbility
+          parameters:
+            - {action: 'read', subject: 'mails'}
+            - {action: 'read', subject: 'emails'}
+            - {action: 'read', subject: 'sms'}
       organization:
         - {function: hasModule, parameters: ['MessagesAdvanced']}
 
@@ -10,7 +14,11 @@
     action: 'display'
     services:
       access:
-        - {function: hasAbility, parameters: [{action: 'read', subject: 'mails'},{action: 'read', subject: 'emails'},{action: 'read', subject: 'sms'}]}
+        - function: hasAbility
+          parameters:
+            - {action: 'read', subject: 'mails'}
+            - {action: 'read', subject: 'emails'}
+            - {action: 'read', subject: 'sms'}
       organization:
         - {function: hasModule, parameters: ['MessagesAdvanced']}
 
@@ -18,6 +26,10 @@
     action: 'display'
     services:
       access:
-        - {function: hasAbility, parameters: [{action: 'manage', subject: 'mails'},{action: 'manage', subject: 'emails'},{action: 'manage', subject: 'sms'}]}
+        - function: hasAbility
+          parameters:
+            - {action: 'read', subject: 'mails'}
+            - {action: 'read', subject: 'emails'}
+            - {action: 'read', subject: 'sms'}
       organization:
         - {function: hasModule, parameters: ['MessagesAdvanced']}

+ 23 - 0
config/abilities/pages/stats.yaml

@@ -0,0 +1,23 @@
+  report_activity_page:
+    action: 'display'
+    services:
+      access:
+        - {function: hasAbility, parameters: [{action: 'read', subject: 'statistic'}]}
+      organization:
+        - {function: hasModule, parameters: ['Statistic']}
+
+  fede_stats_page:
+    action: 'display'
+    services:
+      access:
+        - {function: hasAbility, parameters: [{action: 'read', subject: 'statistic'}]}
+      organization:
+        - {function: hasModule, parameters: ['StatisticFederation']}
+
+  structure_stats_page:
+    action: 'display'
+    services:
+      access:
+        - {function: hasAbility, parameters: [{action: 'read', subject: 'statistic'}]}
+      organization:
+        - {function: hasModule, parameters: ['StatisticStructure']}

+ 4 - 0
lang/layout/fr-FR.js

@@ -33,5 +33,9 @@ export default (context, locale) => {
     communication: 'Communication',
     donors: 'Partenariats et dons',
     medals: 'Médailles',
+    stats: 'Statistiques',
+    report_activity: 'Rapport d\'activité',
+    fede_stats: 'Fédérations',
+    structure_stats: 'Structures',
   })
 }

+ 28 - 0
use/template/menu.ts

@@ -57,6 +57,9 @@ class Menu{
     const medalsMenu = this.medalsMenu()
     if(medalsMenu) menu.push(medalsMenu)
 
+    const statsMenu = this.statsMenu()
+    if(statsMenu) menu.push(statsMenu)
+
     return ref(menu)
   }
 
@@ -257,6 +260,31 @@ class Menu{
     return null;
   }
 
+  /**
+   * Construit le menu Statistique et Dons ou null si aucune page accessible
+   * @return {ItemMenu | null}
+   */
+  statsMenu():ItemMenu | null {
+    const children:ItemsMenu = [];
+
+    if (this.$ability().can('display', 'report_activity_page')) {
+      children.push(this.constructMenu('fa-chart-bar', 'report_activity', '/report_activity', true))
+    }
+
+    if (this.$ability().can('display', 'fede_stats_page')) {
+      children.push(this.constructMenu('fa-chart-bar', 'fede_stats', '/statistic/membersfedeonly', true))
+    }
+
+    if (this.$ability().can('display', 'structure_stats_page')) {
+      children.push(this.constructMenu('fa-chart-bar', 'structure_stats', '/statistic/membersfedeassos', true))
+    }
+
+    if(children.length === 1){
+      return children[0];
+    }
+    return children.length > 0 ? this.constructMenu('fa-chart-bar', 'stats', undefined, undefined, children) : null;
+  }
+
 
   /**
    * Construit un ItemMenu