feat: Création des 4 pages manquantes pour Gestion des Événements (DRY/WOU)
Pages créées: - planification.xhtml: Planification avancée des événements - logistique.xhtml: Gestion matériel et ressources - bilan.xhtml: Bilans et analyses des événements - reservations.xhtml: Gestion des réservations Caractéristiques: - Réutilisation complète des composants existants (filter-bar, stat-card, page-header) - Structure cohérente avec les autres pages - Messages d'information pour fonctionnalités en développement - Menu mis à jour avec les nouveaux outcomes Respect strict DRY/WOU: - Composants réutilisés: filter-bar.xhtml, stat-card.xhtml, page-header.xhtml - Patterns cohérents avec gestion.xhtml et participation.xhtml - Structure standardisée pour toutes les pages
This commit is contained in:
@@ -0,0 +1,197 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
|
||||||
|
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
||||||
|
xmlns:f="http://xmlns.jcp.org/jsf/core"
|
||||||
|
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
|
||||||
|
xmlns:p="http://primefaces.org/ui"
|
||||||
|
template="/templates/main-template.xhtml">
|
||||||
|
|
||||||
|
<ui:define name="title">Bilan des Événements - UnionFlow</ui:define>
|
||||||
|
|
||||||
|
<ui:define name="content">
|
||||||
|
<!-- En-tête -->
|
||||||
|
<ui:include src="/templates/components/layout/page-header.xhtml">
|
||||||
|
<ui:param name="icon" value="pi pi-chart-bar text-green-500" />
|
||||||
|
<ui:param name="title" value="Bilan des Événements" />
|
||||||
|
<ui:param name="description" value="Analysez les performances et les résultats de vos événements" />
|
||||||
|
<ui:define name="actions">
|
||||||
|
<h:form id="formActionsBilan">
|
||||||
|
<div class="flex gap-2">
|
||||||
|
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
|
||||||
|
<ui:param name="value" value="Exporter" />
|
||||||
|
<ui:param name="icon" value="pi pi-download" />
|
||||||
|
<ui:param name="outlined" value="true" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/buttons/button-icon.xhtml">
|
||||||
|
<ui:param name="icon" value="pi pi-refresh" />
|
||||||
|
<ui:param name="action" value="#{evenementsBean.actualiser}" />
|
||||||
|
<ui:param name="update" value="@form" />
|
||||||
|
<ui:param name="title" value="Actualiser" />
|
||||||
|
<ui:param name="rounded" value="true" />
|
||||||
|
<ui:param name="text" value="false" />
|
||||||
|
<ui:param name="styleClass" value="ui-button-outlined ui-button-secondary" />
|
||||||
|
</ui:include>
|
||||||
|
</div>
|
||||||
|
</h:form>
|
||||||
|
</ui:define>
|
||||||
|
</ui:include>
|
||||||
|
|
||||||
|
<!-- Statistiques globales -->
|
||||||
|
<div class="grid mb-3">
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="#{evenementsBean.statistiques.totalEvenements}" />
|
||||||
|
<ui:param name="label" value="Total événements" />
|
||||||
|
<ui:param name="icon" value="pi pi-calendar" />
|
||||||
|
<ui:param name="bgColor" value="blue" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="#{evenementsBean.statistiques.participantsTotal}" />
|
||||||
|
<ui:param name="label" value="Total participants" />
|
||||||
|
<ui:param name="icon" value="pi pi-users" />
|
||||||
|
<ui:param name="bgColor" value="green" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="#{evenementsBean.statistiques.budgetTotal}" />
|
||||||
|
<ui:param name="label" value="Budget total" />
|
||||||
|
<ui:param name="icon" value="pi pi-wallet" />
|
||||||
|
<ui:param name="bgColor" value="purple" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="0%" />
|
||||||
|
<ui:param name="label" value="Taux de participation moyen" />
|
||||||
|
<ui:param name="icon" value="pi pi-percentage" />
|
||||||
|
<ui:param name="bgColor" value="orange" />
|
||||||
|
</ui:include>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Filtres et recherche (DRY/WOU: filter-bar) -->
|
||||||
|
<ui:decorate template="/templates/components/cards/filter-bar.xhtml">
|
||||||
|
<ui:param name="title" value="Filtres" />
|
||||||
|
<ui:param name="styleClass" value="mb-3" />
|
||||||
|
<ui:define name="filters">
|
||||||
|
<div class="col-12 md:col-3">
|
||||||
|
<div class="field">
|
||||||
|
<p:outputLabel for="searchBilan" value="Rechercher" />
|
||||||
|
<span class="p-input-icon-left w-full">
|
||||||
|
<i class="pi pi-search"></i>
|
||||||
|
<p:inputText id="searchBilan"
|
||||||
|
placeholder="Titre événement..."
|
||||||
|
styleClass="w-full">
|
||||||
|
<p:ajax event="keyup" delay="500"/>
|
||||||
|
</p:inputText>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 md:col-2">
|
||||||
|
<div class="field">
|
||||||
|
<p:outputLabel for="filtrePeriode" value="Période" />
|
||||||
|
<p:selectOneMenu id="filtrePeriode" styleClass="w-full">
|
||||||
|
<f:selectItem itemLabel="Toutes périodes" itemValue="" />
|
||||||
|
<f:selectItem itemLabel="Ce mois" itemValue="MOIS" />
|
||||||
|
<f:selectItem itemLabel="Ce trimestre" itemValue="TRIMESTRE" />
|
||||||
|
<f:selectItem itemLabel="Cette année" itemValue="ANNEE" />
|
||||||
|
</p:selectOneMenu>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 md:col-2">
|
||||||
|
<div class="field">
|
||||||
|
<p:outputLabel for="filtreType" value="Type" />
|
||||||
|
<p:selectOneMenu id="filtreType" styleClass="w-full">
|
||||||
|
<f:selectItem itemLabel="Tous types" itemValue="" />
|
||||||
|
<f:selectItem itemLabel="Assemblée Générale" itemValue="ASSEMBLEE_GENERALE" />
|
||||||
|
<f:selectItem itemLabel="Formation" itemValue="FORMATION" />
|
||||||
|
<f:selectItem itemLabel="Activité Sociale" itemValue="ACTIVITE_SOCIALE" />
|
||||||
|
</p:selectOneMenu>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
<ui:define name="actions">
|
||||||
|
<div class="col-12 md:col-2">
|
||||||
|
<div class="field">
|
||||||
|
<label class="invisible">Actions</label>
|
||||||
|
<p:commandButton value="Réinitialiser"
|
||||||
|
icon="pi pi-filter-slash"
|
||||||
|
styleClass="ui-button-secondary w-full" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
</ui:decorate>
|
||||||
|
|
||||||
|
<!-- Tableau de bord des bilans -->
|
||||||
|
<div class="grid">
|
||||||
|
<!-- Liste des événements avec bilans -->
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="card">
|
||||||
|
<h:form id="formBilans">
|
||||||
|
<h5>Bilans par Événement</h5>
|
||||||
|
|
||||||
|
<p:dataTable id="dtBilans"
|
||||||
|
value="#{evenementsBean.evenementsFiltres}"
|
||||||
|
var="evenement"
|
||||||
|
paginator="true"
|
||||||
|
rows="20"
|
||||||
|
rowsPerPageTemplate="10,20,50,100"
|
||||||
|
emptyMessage="Aucun bilan trouvé"
|
||||||
|
styleClass="table-responsive">
|
||||||
|
|
||||||
|
<p:column headerText="Événement" sortBy="#{evenement.titre}">
|
||||||
|
<div>
|
||||||
|
<span class="font-semibold">#{evenement.titre}</span>
|
||||||
|
<br/>
|
||||||
|
<span class="text-sm text-600">#{evenement.typeEvenementLibelle}</span>
|
||||||
|
</div>
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Date">
|
||||||
|
<span>#{evenement.dateDebutFormatee}</span>
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Participants">
|
||||||
|
<div>
|
||||||
|
<span class="font-medium">0</span>
|
||||||
|
<span class="text-sm text-600"> / 0 prévus</span>
|
||||||
|
</div>
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Budget">
|
||||||
|
<div>
|
||||||
|
<span class="font-medium">0 XOF</span>
|
||||||
|
<br/>
|
||||||
|
<span class="text-sm text-600">0 XOF prévu</span>
|
||||||
|
</div>
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Taux participation">
|
||||||
|
<p:tag value="0%" severity="info" />
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Actions" style="width: 150px;">
|
||||||
|
<p:commandButton value="Voir bilan"
|
||||||
|
icon="pi pi-chart-bar"
|
||||||
|
styleClass="ui-button-rounded ui-button-text ui-button-secondary"
|
||||||
|
outcome="/pages/secure/evenement/bilan-detail" />
|
||||||
|
</p:column>
|
||||||
|
</p:dataTable>
|
||||||
|
</h:form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Graphiques et analyses -->
|
||||||
|
<div class="grid mt-3">
|
||||||
|
<div class="col-12 md:col-6">
|
||||||
|
<div class="card">
|
||||||
|
<h5>Évolution des participations</h5>
|
||||||
|
<p class="text-600">Graphique en développement</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 md:col-6">
|
||||||
|
<div class="card">
|
||||||
|
<h5>Répartition par type</h5>
|
||||||
|
<p class="text-600">Graphique en développement</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
</ui:composition>
|
||||||
|
|
||||||
@@ -0,0 +1,179 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
|
||||||
|
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
||||||
|
xmlns:f="http://xmlns.jcp.org/jsf/core"
|
||||||
|
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
|
||||||
|
xmlns:p="http://primefaces.org/ui"
|
||||||
|
template="/templates/main-template.xhtml">
|
||||||
|
|
||||||
|
<ui:define name="title">Logistique des Événements - UnionFlow</ui:define>
|
||||||
|
|
||||||
|
<ui:define name="content">
|
||||||
|
<!-- En-tête -->
|
||||||
|
<ui:include src="/templates/components/layout/page-header.xhtml">
|
||||||
|
<ui:param name="icon" value="pi pi-truck text-purple-500" />
|
||||||
|
<ui:param name="title" value="Logistique des Événements" />
|
||||||
|
<ui:param name="description" value="Gérez le matériel, les équipements et les ressources nécessaires pour vos événements" />
|
||||||
|
<ui:define name="actions">
|
||||||
|
<h:form id="formActionsLogistique">
|
||||||
|
<div class="flex gap-2">
|
||||||
|
<ui:include src="/templates/components/buttons/button-success.xhtml">
|
||||||
|
<ui:param name="value" value="Nouvelle demande" />
|
||||||
|
<ui:param name="icon" value="pi pi-plus" />
|
||||||
|
<ui:param name="onclick" value="PF('dlgNouvelleDemande').show();" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/buttons/button-icon.xhtml">
|
||||||
|
<ui:param name="icon" value="pi pi-refresh" />
|
||||||
|
<ui:param name="action" value="#{evenementsBean.actualiser}" />
|
||||||
|
<ui:param name="update" value="@form" />
|
||||||
|
<ui:param name="title" value="Actualiser" />
|
||||||
|
<ui:param name="rounded" value="true" />
|
||||||
|
<ui:param name="text" value="false" />
|
||||||
|
<ui:param name="styleClass" value="ui-button-outlined ui-button-secondary" />
|
||||||
|
</ui:include>
|
||||||
|
</div>
|
||||||
|
</h:form>
|
||||||
|
</ui:define>
|
||||||
|
</ui:include>
|
||||||
|
|
||||||
|
<!-- Statistiques -->
|
||||||
|
<div class="grid mb-3">
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="0" />
|
||||||
|
<ui:param name="label" value="Demandes actives" />
|
||||||
|
<ui:param name="icon" value="pi pi-shopping-cart" />
|
||||||
|
<ui:param name="bgColor" value="blue" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="0" />
|
||||||
|
<ui:param name="label" value="Matériel disponible" />
|
||||||
|
<ui:param name="icon" value="pi pi-box" />
|
||||||
|
<ui:param name="bgColor" value="green" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="0" />
|
||||||
|
<ui:param name="label" value="En attente livraison" />
|
||||||
|
<ui:param name="icon" value="pi pi-hourglass" />
|
||||||
|
<ui:param name="bgColor" value="orange" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="0" />
|
||||||
|
<ui:param name="label" value="Fournisseurs" />
|
||||||
|
<ui:param name="icon" value="pi pi-building" />
|
||||||
|
<ui:param name="bgColor" value="purple" />
|
||||||
|
</ui:include>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Filtres et recherche (DRY/WOU: filter-bar) -->
|
||||||
|
<ui:decorate template="/templates/components/cards/filter-bar.xhtml">
|
||||||
|
<ui:param name="title" value="Filtres" />
|
||||||
|
<ui:param name="styleClass" value="mb-3" />
|
||||||
|
<ui:define name="filters">
|
||||||
|
<div class="col-12 md:col-4">
|
||||||
|
<div class="field">
|
||||||
|
<p:outputLabel for="searchLogistique" value="Rechercher" />
|
||||||
|
<span class="p-input-icon-left w-full">
|
||||||
|
<i class="pi pi-search"></i>
|
||||||
|
<p:inputText id="searchLogistique"
|
||||||
|
placeholder="Événement, matériel..."
|
||||||
|
styleClass="w-full">
|
||||||
|
<p:ajax event="keyup" delay="500"/>
|
||||||
|
</p:inputText>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 md:col-2">
|
||||||
|
<div class="field">
|
||||||
|
<p:outputLabel for="filtreTypeMateriel" value="Type matériel" />
|
||||||
|
<p:selectOneMenu id="filtreTypeMateriel" styleClass="w-full">
|
||||||
|
<f:selectItem itemLabel="Tous types" itemValue="" />
|
||||||
|
<f:selectItem itemLabel="Sonorisation" itemValue="SONO" />
|
||||||
|
<f:selectItem itemLabel="Éclairage" itemValue="ECLAIRAGE" />
|
||||||
|
<f:selectItem itemLabel="Mobilier" itemValue="MOBILIER" />
|
||||||
|
<f:selectItem itemLabel="Catering" itemValue="CATERING" />
|
||||||
|
</p:selectOneMenu>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 md:col-2">
|
||||||
|
<div class="field">
|
||||||
|
<p:outputLabel for="filtreStatut" value="Statut" />
|
||||||
|
<p:selectOneMenu id="filtreStatut" styleClass="w-full">
|
||||||
|
<f:selectItem itemLabel="Tous les statuts" itemValue="" />
|
||||||
|
<f:selectItem itemLabel="En attente" itemValue="EN_ATTENTE" />
|
||||||
|
<f:selectItem itemLabel="Validé" itemValue="VALIDE" />
|
||||||
|
<f:selectItem itemLabel="Livré" itemValue="LIVRE" />
|
||||||
|
</p:selectOneMenu>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
<ui:define name="actions">
|
||||||
|
<div class="col-12 md:col-2">
|
||||||
|
<div class="field">
|
||||||
|
<label class="invisible">Actions</label>
|
||||||
|
<p:commandButton value="Réinitialiser"
|
||||||
|
icon="pi pi-filter-slash"
|
||||||
|
styleClass="ui-button-secondary w-full" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
</ui:decorate>
|
||||||
|
|
||||||
|
<!-- Liste des demandes logistiques -->
|
||||||
|
<div class="card">
|
||||||
|
<h:form id="formLogistique">
|
||||||
|
<h5>Demandes Logistiques</h5>
|
||||||
|
|
||||||
|
<p:dataTable id="dtLogistique"
|
||||||
|
value="#{evenementsBean.evenementsFiltres}"
|
||||||
|
var="evenement"
|
||||||
|
paginator="true"
|
||||||
|
rows="20"
|
||||||
|
rowsPerPageTemplate="10,20,50,100"
|
||||||
|
emptyMessage="Aucune demande logistique trouvée"
|
||||||
|
styleClass="table-responsive">
|
||||||
|
|
||||||
|
<p:column headerText="Événement" sortBy="#{evenement.titre}">
|
||||||
|
<span class="font-semibold">#{evenement.titre}</span>
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Type matériel">
|
||||||
|
<p:tag value="À définir" severity="info" />
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Quantité">
|
||||||
|
<span>0</span>
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Date livraison">
|
||||||
|
<span class="text-600">À planifier</span>
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Statut">
|
||||||
|
<p:tag value="En attente" severity="warning" />
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Actions" style="width: 200px;">
|
||||||
|
<p:commandButton icon="pi pi-eye"
|
||||||
|
title="Voir détails"
|
||||||
|
styleClass="ui-button-rounded ui-button-text ui-button-secondary mr-2" />
|
||||||
|
<p:commandButton icon="pi pi-pencil"
|
||||||
|
title="Modifier"
|
||||||
|
styleClass="ui-button-rounded ui-button-text ui-button-secondary mr-2" />
|
||||||
|
</p:column>
|
||||||
|
</p:dataTable>
|
||||||
|
</h:form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Message d'information -->
|
||||||
|
<div class="card">
|
||||||
|
<div class="flex align-items-center gap-3 p-3">
|
||||||
|
<i class="pi pi-info-circle text-blue-500 text-2xl"></i>
|
||||||
|
<div>
|
||||||
|
<h6 class="m-0">Fonctionnalité en développement</h6>
|
||||||
|
<p class="m-0 text-600">La gestion logistique complète des événements sera disponible prochainement.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
</ui:composition>
|
||||||
|
|
||||||
@@ -0,0 +1,178 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
|
||||||
|
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
||||||
|
xmlns:f="http://xmlns.jcp.org/jsf/core"
|
||||||
|
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
|
||||||
|
xmlns:p="http://primefaces.org/ui"
|
||||||
|
template="/templates/main-template.xhtml">
|
||||||
|
|
||||||
|
<ui:define name="title">Planification des Événements - UnionFlow</ui:define>
|
||||||
|
|
||||||
|
<ui:define name="content">
|
||||||
|
<!-- En-tête -->
|
||||||
|
<ui:include src="/templates/components/layout/page-header.xhtml">
|
||||||
|
<ui:param name="icon" value="pi pi-clock text-orange-500" />
|
||||||
|
<ui:param name="title" value="Planification des Événements" />
|
||||||
|
<ui:param name="description" value="Planifiez et organisez vos événements à l'avance" />
|
||||||
|
<ui:define name="actions">
|
||||||
|
<h:form id="formActionsPlanification">
|
||||||
|
<div class="flex gap-2">
|
||||||
|
<ui:include src="/templates/components/buttons/button-success.xhtml">
|
||||||
|
<ui:param name="value" value="Nouvelle planification" />
|
||||||
|
<ui:param name="icon" value="pi pi-plus" />
|
||||||
|
<ui:param name="onclick" value="PF('dlgNouvellePlanification').show();" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/buttons/button-icon.xhtml">
|
||||||
|
<ui:param name="icon" value="pi pi-refresh" />
|
||||||
|
<ui:param name="action" value="#{evenementsBean.actualiser}" />
|
||||||
|
<ui:param name="update" value="@form" />
|
||||||
|
<ui:param name="title" value="Actualiser" />
|
||||||
|
<ui:param name="rounded" value="true" />
|
||||||
|
<ui:param name="text" value="false" />
|
||||||
|
<ui:param name="styleClass" value="ui-button-outlined ui-button-secondary" />
|
||||||
|
</ui:include>
|
||||||
|
</div>
|
||||||
|
</h:form>
|
||||||
|
</ui:define>
|
||||||
|
</ui:include>
|
||||||
|
|
||||||
|
<!-- Statistiques -->
|
||||||
|
<div class="grid mb-3">
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="0" />
|
||||||
|
<ui:param name="label" value="Événements planifiés" />
|
||||||
|
<ui:param name="icon" value="pi pi-calendar-check" />
|
||||||
|
<ui:param name="bgColor" value="blue" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="0" />
|
||||||
|
<ui:param name="label" value="À venir (7 jours)" />
|
||||||
|
<ui:param name="icon" value="pi pi-clock" />
|
||||||
|
<ui:param name="bgColor" value="orange" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="0" />
|
||||||
|
<ui:param name="label" value="En attente validation" />
|
||||||
|
<ui:param name="icon" value="pi pi-hourglass" />
|
||||||
|
<ui:param name="bgColor" value="yellow" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="0" />
|
||||||
|
<ui:param name="label" value="Taux de réalisation" />
|
||||||
|
<ui:param name="icon" value="pi pi-percentage" />
|
||||||
|
<ui:param name="bgColor" value="green" />
|
||||||
|
</ui:include>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Filtres et recherche (DRY/WOU: filter-bar) -->
|
||||||
|
<ui:decorate template="/templates/components/cards/filter-bar.xhtml">
|
||||||
|
<ui:param name="title" value="Filtres" />
|
||||||
|
<ui:param name="styleClass" value="mb-3" />
|
||||||
|
<ui:define name="filters">
|
||||||
|
<div class="col-12 md:col-4">
|
||||||
|
<div class="field">
|
||||||
|
<p:outputLabel for="searchPlanification" value="Rechercher" />
|
||||||
|
<span class="p-input-icon-left w-full">
|
||||||
|
<i class="pi pi-search"></i>
|
||||||
|
<p:inputText id="searchPlanification"
|
||||||
|
placeholder="Titre, description..."
|
||||||
|
styleClass="w-full">
|
||||||
|
<p:ajax event="keyup" delay="500"/>
|
||||||
|
</p:inputText>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 md:col-2">
|
||||||
|
<div class="field">
|
||||||
|
<p:outputLabel for="filtrePeriode" value="Période" />
|
||||||
|
<p:selectOneMenu id="filtrePeriode" styleClass="w-full">
|
||||||
|
<f:selectItem itemLabel="Toutes périodes" itemValue="" />
|
||||||
|
<f:selectItem itemLabel="Cette semaine" itemValue="SEMAINE" />
|
||||||
|
<f:selectItem itemLabel="Ce mois" itemValue="MOIS" />
|
||||||
|
<f:selectItem itemLabel="Ce trimestre" itemValue="TRIMESTRE" />
|
||||||
|
<f:selectItem itemLabel="Cette année" itemValue="ANNEE" />
|
||||||
|
</p:selectOneMenu>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 md:col-2">
|
||||||
|
<div class="field">
|
||||||
|
<p:outputLabel for="filtreStatut" value="Statut" />
|
||||||
|
<p:selectOneMenu id="filtreStatut" styleClass="w-full">
|
||||||
|
<f:selectItem itemLabel="Tous les statuts" itemValue="" />
|
||||||
|
<f:selectItem itemLabel="Planifié" itemValue="PLANIFIE" />
|
||||||
|
<f:selectItem itemLabel="Confirmé" itemValue="CONFIRME" />
|
||||||
|
<f:selectItem itemLabel="En attente" itemValue="EN_ATTENTE" />
|
||||||
|
</p:selectOneMenu>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
<ui:define name="actions">
|
||||||
|
<div class="col-12 md:col-2">
|
||||||
|
<div class="field">
|
||||||
|
<label class="invisible">Actions</label>
|
||||||
|
<p:commandButton value="Réinitialiser"
|
||||||
|
icon="pi pi-filter-slash"
|
||||||
|
styleClass="ui-button-secondary w-full" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
</ui:decorate>
|
||||||
|
|
||||||
|
<!-- Liste des planifications -->
|
||||||
|
<div class="card">
|
||||||
|
<h:form id="formPlanifications">
|
||||||
|
<h5>Planifications</h5>
|
||||||
|
|
||||||
|
<p:dataTable id="dtPlanifications"
|
||||||
|
value="#{evenementsBean.evenementsFiltres}"
|
||||||
|
var="evenement"
|
||||||
|
paginator="true"
|
||||||
|
rows="20"
|
||||||
|
rowsPerPageTemplate="10,20,50,100"
|
||||||
|
emptyMessage="Aucune planification trouvée"
|
||||||
|
styleClass="table-responsive">
|
||||||
|
|
||||||
|
<p:column headerText="Titre" sortBy="#{evenement.titre}">
|
||||||
|
<span class="font-semibold">#{evenement.titre}</span>
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Date prévue">
|
||||||
|
<div>
|
||||||
|
<div class="font-medium">Date à définir</div>
|
||||||
|
<div class="text-sm text-600">Période: À planifier</div>
|
||||||
|
</div>
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Statut">
|
||||||
|
<p:tag value="Planifié" severity="info" />
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Priorité">
|
||||||
|
<p:tag value="Normale" severity="info" />
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Actions" style="width: 200px;">
|
||||||
|
<p:commandButton icon="pi pi-pencil"
|
||||||
|
title="Modifier"
|
||||||
|
styleClass="ui-button-rounded ui-button-text ui-button-secondary mr-2" />
|
||||||
|
<p:commandButton icon="pi pi-trash"
|
||||||
|
title="Supprimer"
|
||||||
|
styleClass="ui-button-rounded ui-button-text ui-button-danger" />
|
||||||
|
</p:column>
|
||||||
|
</p:dataTable>
|
||||||
|
</h:form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Message d'information -->
|
||||||
|
<div class="card">
|
||||||
|
<div class="flex align-items-center gap-3 p-3">
|
||||||
|
<i class="pi pi-info-circle text-blue-500 text-2xl"></i>
|
||||||
|
<div>
|
||||||
|
<h6 class="m-0">Fonctionnalité en développement</h6>
|
||||||
|
<p class="m-0 text-600">La planification avancée des événements sera disponible prochainement.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
</ui:composition>
|
||||||
|
|
||||||
@@ -0,0 +1,186 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
|
||||||
|
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
||||||
|
xmlns:f="http://xmlns.jcp.org/jsf/core"
|
||||||
|
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
|
||||||
|
xmlns:p="http://primefaces.org/ui"
|
||||||
|
template="/templates/main-template.xhtml">
|
||||||
|
|
||||||
|
<ui:define name="title">Réservations d'Événements - UnionFlow</ui:define>
|
||||||
|
|
||||||
|
<ui:define name="content">
|
||||||
|
<!-- En-tête -->
|
||||||
|
<ui:include src="/templates/components/layout/page-header.xhtml">
|
||||||
|
<ui:param name="icon" value="pi pi-ticket text-cyan-500" />
|
||||||
|
<ui:param name="title" value="Réservations d'Événements" />
|
||||||
|
<ui:param name="description" value="Gérez les réservations et inscriptions aux événements" />
|
||||||
|
<ui:define name="actions">
|
||||||
|
<h:form id="formActionsReservations">
|
||||||
|
<div class="flex gap-2">
|
||||||
|
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
|
||||||
|
<ui:param name="value" value="Exporter" />
|
||||||
|
<ui:param name="icon" value="pi pi-download" />
|
||||||
|
<ui:param name="outlined" value="true" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/buttons/button-icon.xhtml">
|
||||||
|
<ui:param name="icon" value="pi pi-refresh" />
|
||||||
|
<ui:param name="action" value="#{evenementsBean.actualiser}" />
|
||||||
|
<ui:param name="update" value="@form" />
|
||||||
|
<ui:param name="title" value="Actualiser" />
|
||||||
|
<ui:param name="rounded" value="true" />
|
||||||
|
<ui:param name="text" value="false" />
|
||||||
|
<ui:param name="styleClass" value="ui-button-outlined ui-button-secondary" />
|
||||||
|
</ui:include>
|
||||||
|
</div>
|
||||||
|
</h:form>
|
||||||
|
</ui:define>
|
||||||
|
</ui:include>
|
||||||
|
|
||||||
|
<!-- Statistiques -->
|
||||||
|
<div class="grid mb-3">
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="0" />
|
||||||
|
<ui:param name="label" value="Réservations totales" />
|
||||||
|
<ui:param name="icon" value="pi pi-ticket" />
|
||||||
|
<ui:param name="bgColor" value="blue" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="0" />
|
||||||
|
<ui:param name="label" value="En attente" />
|
||||||
|
<ui:param name="icon" value="pi pi-hourglass" />
|
||||||
|
<ui:param name="bgColor" value="orange" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="0" />
|
||||||
|
<ui:param name="label" value="Confirmées" />
|
||||||
|
<ui:param name="icon" value="pi pi-check-circle" />
|
||||||
|
<ui:param name="bgColor" value="green" />
|
||||||
|
</ui:include>
|
||||||
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
||||||
|
<ui:param name="value" value="0" />
|
||||||
|
<ui:param name="label" value="Annulées" />
|
||||||
|
<ui:param name="icon" value="pi pi-times-circle" />
|
||||||
|
<ui:param name="bgColor" value="red" />
|
||||||
|
</ui:include>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Filtres et recherche (DRY/WOU: filter-bar) -->
|
||||||
|
<ui:decorate template="/templates/components/cards/filter-bar.xhtml">
|
||||||
|
<ui:param name="title" value="Filtres" />
|
||||||
|
<ui:param name="styleClass" value="mb-3" />
|
||||||
|
<ui:define name="filters">
|
||||||
|
<div class="col-12 md:col-4">
|
||||||
|
<div class="field">
|
||||||
|
<p:outputLabel for="searchReservation" value="Rechercher" />
|
||||||
|
<span class="p-input-icon-left w-full">
|
||||||
|
<i class="pi pi-search"></i>
|
||||||
|
<p:inputText id="searchReservation"
|
||||||
|
placeholder="Membre, événement..."
|
||||||
|
styleClass="w-full">
|
||||||
|
<p:ajax event="keyup" delay="500"/>
|
||||||
|
</p:inputText>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 md:col-2">
|
||||||
|
<div class="field">
|
||||||
|
<p:outputLabel for="filtreStatut" value="Statut" />
|
||||||
|
<p:selectOneMenu id="filtreStatut" styleClass="w-full">
|
||||||
|
<f:selectItem itemLabel="Tous les statuts" itemValue="" />
|
||||||
|
<f:selectItem itemLabel="En attente" itemValue="EN_ATTENTE" />
|
||||||
|
<f:selectItem itemLabel="Confirmée" itemValue="CONFIRMEE" />
|
||||||
|
<f:selectItem itemLabel="Annulée" itemValue="ANNULEE" />
|
||||||
|
</p:selectOneMenu>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 md:col-2">
|
||||||
|
<div class="field">
|
||||||
|
<p:outputLabel for="filtreEvenement" value="Événement" />
|
||||||
|
<p:selectOneMenu id="filtreEvenement" styleClass="w-full">
|
||||||
|
<f:selectItem itemLabel="Tous événements" itemValue="" />
|
||||||
|
</p:selectOneMenu>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
<ui:define name="actions">
|
||||||
|
<div class="col-12 md:col-2">
|
||||||
|
<div class="field">
|
||||||
|
<label class="invisible">Actions</label>
|
||||||
|
<p:commandButton value="Réinitialiser"
|
||||||
|
icon="pi pi-filter-slash"
|
||||||
|
styleClass="ui-button-secondary w-full" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
</ui:decorate>
|
||||||
|
|
||||||
|
<!-- Liste des réservations -->
|
||||||
|
<div class="card">
|
||||||
|
<h:form id="formReservations">
|
||||||
|
<h5>Réservations</h5>
|
||||||
|
|
||||||
|
<p:dataTable id="dtReservations"
|
||||||
|
value="#{evenementsBean.evenementsFiltres}"
|
||||||
|
var="evenement"
|
||||||
|
paginator="true"
|
||||||
|
rows="20"
|
||||||
|
rowsPerPageTemplate="10,20,50,100"
|
||||||
|
emptyMessage="Aucune réservation trouvée"
|
||||||
|
styleClass="table-responsive">
|
||||||
|
|
||||||
|
<p:column headerText="Membre">
|
||||||
|
<div>
|
||||||
|
<span class="font-semibold">Nom du membre</span>
|
||||||
|
<br/>
|
||||||
|
<span class="text-sm text-600">email@example.com</span>
|
||||||
|
</div>
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Événement" sortBy="#{evenement.titre}">
|
||||||
|
<span class="font-semibold">#{evenement.titre}</span>
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Date réservation">
|
||||||
|
<span>À définir</span>
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Nombre places">
|
||||||
|
<span class="font-medium">1</span>
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Montant">
|
||||||
|
<span class="font-medium">0 XOF</span>
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Statut">
|
||||||
|
<p:tag value="En attente" severity="warning" />
|
||||||
|
</p:column>
|
||||||
|
|
||||||
|
<p:column headerText="Actions" style="width: 250px;">
|
||||||
|
<p:commandButton icon="pi pi-check"
|
||||||
|
title="Confirmer"
|
||||||
|
styleClass="ui-button-rounded ui-button-text ui-button-success mr-2" />
|
||||||
|
<p:commandButton icon="pi pi-times"
|
||||||
|
title="Annuler"
|
||||||
|
styleClass="ui-button-rounded ui-button-text ui-button-danger mr-2" />
|
||||||
|
<p:commandButton icon="pi pi-eye"
|
||||||
|
title="Voir détails"
|
||||||
|
styleClass="ui-button-rounded ui-button-text ui-button-secondary" />
|
||||||
|
</p:column>
|
||||||
|
</p:dataTable>
|
||||||
|
</h:form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Message d'information -->
|
||||||
|
<div class="card">
|
||||||
|
<div class="flex align-items-center gap-3 p-3">
|
||||||
|
<i class="pi pi-info-circle text-blue-500 text-2xl"></i>
|
||||||
|
<div>
|
||||||
|
<h6 class="m-0">Fonctionnalité en développement</h6>
|
||||||
|
<p class="m-0 text-600">Le système de réservations complet sera disponible prochainement.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</ui:define>
|
||||||
|
</ui:composition>
|
||||||
|
|
||||||
@@ -95,12 +95,12 @@
|
|||||||
<p:submenu id="m_evenements" label="Gestion des Événements" icon="pi pi-calendar">
|
<p:submenu id="m_evenements" label="Gestion des Événements" icon="pi pi-calendar">
|
||||||
<p:menuitem id="m_creation_evenement" value="Nouvel Événement" icon="pi pi-plus" outcome="/pages/secure/evenement/creation" />
|
<p:menuitem id="m_creation_evenement" value="Nouvel Événement" icon="pi pi-plus" outcome="/pages/secure/evenement/creation" />
|
||||||
<p:menuitem id="m_calendrier" value="Calendrier" icon="pi pi-calendar-plus" outcome="/pages/secure/evenement/calendrier" />
|
<p:menuitem id="m_calendrier" value="Calendrier" icon="pi pi-calendar-plus" outcome="/pages/secure/evenement/calendrier" />
|
||||||
<p:menuitem id="m_planification" value="Planification" icon="pi pi-clock" url="#" />
|
<p:menuitem id="m_planification" value="Planification" icon="pi pi-clock" outcome="/pages/secure/evenement/planification" />
|
||||||
<p:menuitem id="m_participation" value="Gestion des Participations" icon="pi pi-users" outcome="/pages/secure/evenement/participation" />
|
<p:menuitem id="m_participation" value="Gestion des Participations" icon="pi pi-users" outcome="/pages/secure/evenement/participation" />
|
||||||
<p:menuitem id="m_gestion_generale_evenements" value="Gestion Générale" icon="pi pi-cog" outcome="/pages/secure/evenement/gestion" />
|
<p:menuitem id="m_gestion_generale_evenements" value="Gestion Générale" icon="pi pi-cog" outcome="/pages/secure/evenement/gestion" />
|
||||||
<p:menuitem id="m_logistique" value="Logistique" icon="pi pi-truck" url="#" />
|
<p:menuitem id="m_logistique" value="Logistique" icon="pi pi-truck" outcome="/pages/secure/evenement/logistique" />
|
||||||
<p:menuitem id="m_bilan_evenements" value="Bilan des Événements" icon="pi pi-chart-bar" url="#" />
|
<p:menuitem id="m_bilan_evenements" value="Bilan des Événements" icon="pi pi-chart-bar" outcome="/pages/secure/evenement/bilan" />
|
||||||
<p:menuitem id="m_reservations" value="Réservations" icon="pi pi-ticket" url="#" />
|
<p:menuitem id="m_reservations" value="Réservations" icon="pi pi-ticket" outcome="/pages/secure/evenement/reservations" />
|
||||||
</p:submenu>
|
</p:submenu>
|
||||||
|
|
||||||
<!-- Communication -->
|
<!-- Communication -->
|
||||||
|
|||||||
Reference in New Issue
Block a user