Configure Maven repository for unionflow-server-api dependency
This commit is contained in:
@@ -0,0 +1,588 @@
|
||||
<!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">Gestion des Événements - UnionFlow</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<div class="ui-fluid">
|
||||
<!-- En-tête principal avec disposition Freya stricte -->
|
||||
<div class="card">
|
||||
<div class="formgrid grid">
|
||||
<div class="field col-12 lg:col-8">
|
||||
<h2 class="text-primary font-bold mb-2">
|
||||
<i class="pi pi-calendar text-blue-500 mr-2"></i>
|
||||
Gestion des Événements
|
||||
</h2>
|
||||
<p class="text-600 mt-0">
|
||||
Planification et suivi des activités associatives •
|
||||
<span class="font-semibold">#{evenementsBean.statistiques.totalEvenements} événements</span> •
|
||||
<span class="font-semibold text-green-600">#{evenementsBean.statistiques.evenementsActifs} actifs</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="field col-12 lg:col-4 text-right">
|
||||
<h:form id="formActionsEntete">
|
||||
<p:commandButton icon="pi pi-plus"
|
||||
title="Nouvel événement"
|
||||
styleClass="ui-button-success ui-button-sm mr-3"
|
||||
onclick="PF('dlgNouvelEvenement').show();" />
|
||||
<p:commandButton icon="pi pi-calendar"
|
||||
title="Planning mensuel"
|
||||
styleClass="ui-button-info ui-button-outlined ui-button-sm mr-3"
|
||||
onclick="PF('dlgPlanningMensuel').show();" />
|
||||
<p:commandButton icon="pi pi-download"
|
||||
title="Exporter"
|
||||
styleClass="ui-button-secondary ui-button-outlined ui-button-sm"
|
||||
action="#{evenementsBean.exporterEvenements}" />
|
||||
</h:form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- KPIs avec grille Freya stricte -->
|
||||
<div class="formgrid grid">
|
||||
<!-- KPI 1: Total Événements -->
|
||||
<ui:include src="/templates/components/cards/kpi-card.xhtml">
|
||||
<ui:param name="title" value="Total Événements" />
|
||||
<ui:param name="value" value="#{evenementsBean.statistiques.totalEvenements}" />
|
||||
<ui:param name="icon" value="pi-calendar" />
|
||||
<ui:param name="iconColor" value="blue-600" />
|
||||
<ui:param name="growthValue" value="#{evenementsBean.statistiques.evenementsCeMois}" />
|
||||
<ui:param name="growthLabel" value="ce mois" />
|
||||
<ui:param name="growthType" value="number" />
|
||||
<ui:param name="showProgress" value="false" />
|
||||
</ui:include>
|
||||
|
||||
<!-- KPI 2: Événements Actifs -->
|
||||
<ui:include src="/templates/components/cards/kpi-card.xhtml">
|
||||
<ui:param name="title" value="Événements Actifs" />
|
||||
<ui:param name="value" value="#{evenementsBean.statistiques.evenementsActifs}" />
|
||||
<ui:param name="icon" value="pi-check" />
|
||||
<ui:param name="iconColor" value="green-600" />
|
||||
<ui:param name="progressValue" value="#{evenementsBean.statistiques.tauxParticipationMoyen}" />
|
||||
<ui:param name="noDataLabel" value="#{evenementsBean.statistiques.tauxParticipationMoyen}% de participation" />
|
||||
<ui:param name="showGrowth" value="false" />
|
||||
</ui:include>
|
||||
|
||||
<!-- KPI 3: Participants Inscrits -->
|
||||
<ui:include src="/templates/components/cards/kpi-card.xhtml">
|
||||
<ui:param name="title" value="Participants" />
|
||||
<ui:param name="value" value="#{evenementsBean.statistiques.participantsTotal}" />
|
||||
<ui:param name="icon" value="pi-users" />
|
||||
<ui:param name="iconColor" value="orange-600" />
|
||||
<ui:param name="statusIcon" value="pi-info-circle" />
|
||||
<ui:param name="statusLabel" value="Moyenne" />
|
||||
<ui:param name="statusValue" value="#{evenementsBean.statistiques.moyenneParticipants}/événement" />
|
||||
<ui:param name="showProgress" value="false" />
|
||||
</ui:include>
|
||||
|
||||
<!-- KPI 4: Budget Total -->
|
||||
<ui:include src="/templates/components/cards/kpi-card.xhtml">
|
||||
<ui:param name="title" value="Budget Total" />
|
||||
<ui:param name="value" value="#{evenementsBean.statistiques.budgetTotal}" />
|
||||
<ui:param name="icon" value="pi-dollar" />
|
||||
<ui:param name="iconColor" value="purple-600" />
|
||||
<ui:param name="statusIcon" value="pi-trending-up" />
|
||||
<ui:param name="statusLabel" value="Suivi budgétaire" />
|
||||
<ui:param name="statusValue" value="optimal" />
|
||||
<ui:param name="showProgress" value="false" />
|
||||
</ui:include>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Calendrier visuel des événements avec structure Freya -->
|
||||
<div class="card">
|
||||
<h5 class="mb-3">
|
||||
<i class="pi pi-calendar text-blue-500 mr-2"></i>
|
||||
Événements à Venir
|
||||
</h5>
|
||||
<div class="formgrid grid">
|
||||
<ui:repeat value="#{evenementsBean.evenementsProchains}" var="event" varStatus="status">
|
||||
<div class="field col-12 md:col-6 lg:col-4">
|
||||
<div class="surface-50 border-round-lg p-3 hover:surface-100 transition-colors transition-duration-150">
|
||||
<div class="flex align-items-start justify-content-between mb-3">
|
||||
<div class="flex align-items-center">
|
||||
<div class="flex align-items-center justify-content-center bg-primary-100 border-round-lg mr-3"
|
||||
style="width: 2.5rem; height: 2.5rem;">
|
||||
<i class="pi #{event.typeIcon} text-primary-600"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h6 class="text-900 font-medium m-0 mb-1">#{event.titre}</h6>
|
||||
<p:tag value="#{event.typeLibelle}"
|
||||
severity="#{event.typeSeverity}"
|
||||
styleClass="text-xs" />
|
||||
</div>
|
||||
</div>
|
||||
<span class="text-500 text-sm font-semibold">#{event.joursRestants}j</span>
|
||||
</div>
|
||||
|
||||
<div class="text-600 mb-3">
|
||||
<div class="flex align-items-center mb-2">
|
||||
<i class="pi pi-calendar text-blue-500 mr-2"></i>
|
||||
<span class="text-sm">#{event.dateDebutFormatee}</span>
|
||||
</div>
|
||||
<div class="flex align-items-center mb-2">
|
||||
<i class="pi pi-map-marker text-orange-500 mr-2"></i>
|
||||
<span class="text-sm">#{event.lieu}</span>
|
||||
</div>
|
||||
<div class="flex align-items-center">
|
||||
<i class="pi pi-users text-green-500 mr-2"></i>
|
||||
<span class="text-sm">#{event.participantsInscrits}/#{event.capaciteMax} participants</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-content-between align-items-center">
|
||||
<div class="flex-1 mr-3">
|
||||
<p:progressBar value="#{event.tauxInscription}"
|
||||
showValue="false"
|
||||
styleClass="surface-200"
|
||||
style="height: 0.5rem;" />
|
||||
<div class="text-500 text-xs mt-1">#{event.tauxInscription}% rempli</div>
|
||||
</div>
|
||||
<h:form>
|
||||
<p:commandButton icon="pi pi-eye"
|
||||
styleClass="ui-button-rounded ui-button-text ui-button-info ui-button-sm"
|
||||
title="Voir détails">
|
||||
<f:setPropertyActionListener target="#{evenementsBean.evenementSelectionne}" value="#{event}" />
|
||||
</p:commandButton>
|
||||
</h:form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:repeat>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Section Filtres avec structure Freya -->
|
||||
<div class="card">
|
||||
<h5 class="mb-3">
|
||||
<i class="pi pi-filter text-blue-500 mr-2"></i>
|
||||
Filtres et Recherche
|
||||
</h5>
|
||||
<h:form id="formFiltres">
|
||||
<div class="formgrid grid">
|
||||
<!-- Ligne 1: 4 champs principaux -->
|
||||
<div class="field col-12 md:col-6 lg:col-3">
|
||||
<label for="searchTitre" class="block text-900 font-medium mb-2">Titre de l'événement</label>
|
||||
<p:inputText id="searchTitre"
|
||||
value="#{evenementsBean.filtres.titre}"
|
||||
placeholder="Rechercher par titre..."
|
||||
styleClass="w-full">
|
||||
<p:ajax event="keyup" delay="300"
|
||||
update=":formTableEvenements:dtEvenements" />
|
||||
</p:inputText>
|
||||
</div>
|
||||
|
||||
<div class="field col-12 md:col-6 lg:col-3">
|
||||
<label for="filterType" class="block text-900 font-medium mb-2">Type d'événement</label>
|
||||
<p:selectOneMenu id="filterType"
|
||||
value="#{evenementsBean.filtres.type}"
|
||||
styleClass="w-full">
|
||||
<f:selectItem itemLabel="Tous les types" itemValue="" />
|
||||
<f:selectItem itemLabel="Réunion" itemValue="REUNION" />
|
||||
<f:selectItem itemLabel="Formation" itemValue="FORMATION" />
|
||||
<f:selectItem itemLabel="Action Sociale" itemValue="ACTION_SOCIALE" />
|
||||
<f:selectItem itemLabel="Assemblée Générale" itemValue="ASSEMBLEE_GENERALE" />
|
||||
<f:selectItem itemLabel="Événement Festif" itemValue="EVENEMENT_FESTIF" />
|
||||
<p:ajax update=":formTableEvenements:dtEvenements" />
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
|
||||
<div class="field col-12 md:col-6 lg:col-3">
|
||||
<label for="filterStatut" class="block text-900 font-medium mb-2">Statut</label>
|
||||
<p:selectOneMenu id="filterStatut"
|
||||
value="#{evenementsBean.filtres.statut}"
|
||||
styleClass="w-full">
|
||||
<f:selectItem itemLabel="Tous les statuts" itemValue="" />
|
||||
<f:selectItem itemLabel="Planifié" itemValue="PLANIFIE" />
|
||||
<f:selectItem itemLabel="En cours" itemValue="EN_COURS" />
|
||||
<f:selectItem itemLabel="Terminé" itemValue="TERMINE" />
|
||||
<f:selectItem itemLabel="Annulé" itemValue="ANNULE" />
|
||||
<p:ajax update=":formTableEvenements:dtEvenements" />
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
|
||||
<div class="field col-12 md:col-6 lg:col-3">
|
||||
<label for="filterPriorite" class="block text-900 font-medium mb-2">Priorité</label>
|
||||
<p:selectOneMenu id="filterPriorite"
|
||||
value="#{evenementsBean.filtres.priorite}"
|
||||
styleClass="w-full">
|
||||
<f:selectItem itemLabel="Toutes les priorités" itemValue="" />
|
||||
<f:selectItem itemLabel="Faible" itemValue="FAIBLE" />
|
||||
<f:selectItem itemLabel="Normale" itemValue="NORMALE" />
|
||||
<f:selectItem itemLabel="Élevée" itemValue="ELEVEE" />
|
||||
<f:selectItem itemLabel="Critique" itemValue="CRITIQUE" />
|
||||
<p:ajax update=":formTableEvenements:dtEvenements" />
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
|
||||
<!-- Ligne 2: Période et Organisateur -->
|
||||
<div class="field col-12 md:col-6 lg:col-4">
|
||||
<label for="filterDateDebut" class="block text-900 font-medium mb-2">Période</label>
|
||||
<div class="flex gap-2">
|
||||
<p:datePicker id="filterDateDebut"
|
||||
value="#{evenementsBean.filtres.dateDebut}"
|
||||
placeholder="Date début"
|
||||
styleClass="w-full">
|
||||
<p:ajax update=":formTableEvenements:dtEvenements" />
|
||||
</p:datePicker>
|
||||
<p:datePicker id="filterDateFin"
|
||||
value="#{evenementsBean.filtres.dateFin}"
|
||||
placeholder="Date fin"
|
||||
styleClass="w-full">
|
||||
<p:ajax update=":formTableEvenements:dtEvenements" />
|
||||
</p:datePicker>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field col-12 md:col-6 lg:col-4">
|
||||
<label for="filterOrganisateur" class="block text-900 font-medium mb-2">Organisateur</label>
|
||||
<p:inputText id="filterOrganisateur"
|
||||
value="#{evenementsBean.filtres.organisateur}"
|
||||
placeholder="Filtrer par organisateur..."
|
||||
styleClass="w-full">
|
||||
<p:ajax event="keyup" delay="300"
|
||||
update=":formTableEvenements:dtEvenements" />
|
||||
</p:inputText>
|
||||
</div>
|
||||
|
||||
<div class="field col-12 md:col-12 lg:col-4">
|
||||
<label class="block text-900 font-medium mb-2"> </label>
|
||||
<div class="flex justify-content-start">
|
||||
<p:commandButton value="Réinitialiser"
|
||||
icon="pi pi-refresh"
|
||||
styleClass="ui-button-outlined ui-button-secondary ui-button-sm"
|
||||
action="#{evenementsBean.reinitialiserFiltres}"
|
||||
update="@form :formTableEvenements:dtEvenements" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</h:form>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Table des Événements avec structure Freya -->
|
||||
<div class="card">
|
||||
<h:form id="formTableEvenements">
|
||||
<div class="flex align-items-center justify-content-between mb-3">
|
||||
<h5 class="m-0">
|
||||
<i class="pi pi-list text-primary mr-2"></i>
|
||||
Liste des Événements
|
||||
</h5>
|
||||
<div class="flex gap-3 align-items-center">
|
||||
<p:commandButton value="Actions groupées"
|
||||
icon="pi pi-bars"
|
||||
styleClass="ui-button-warning ui-button-sm"
|
||||
onclick="PF('dlgActionsGroupees').show();"
|
||||
disabled="#{empty evenementsBean.evenementsSelectionnes}" />
|
||||
<p:commandButton value="Export Excel"
|
||||
icon="pi pi-file-excel"
|
||||
styleClass="ui-button-success ui-button-outlined ui-button-sm"
|
||||
action="#{evenementsBean.exporterExcel}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p:dataTable id="dtEvenements"
|
||||
value="#{evenementsBean.evenementsFiltres}"
|
||||
var="evenement"
|
||||
selection="#{evenementsBean.evenementsSelectionnes}"
|
||||
rowKey="#{evenement.id}"
|
||||
paginator="true"
|
||||
rows="20"
|
||||
paginatorPosition="bottom"
|
||||
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
|
||||
rowsPerPageTemplate="10,20,50,100"
|
||||
currentPageReportTemplate="Affichage {startRecord}-{endRecord} sur {totalRecords} événements"
|
||||
styleClass="p-datatable-sm p-datatable-gridlines p-datatable-striped"
|
||||
emptyMessage="Aucun événement trouvé">
|
||||
|
||||
<p:column selectionMode="multiple" style="width:3rem" exportable="false"/>
|
||||
|
||||
<p:column headerText="Événement" sortBy="#{evenement.titre}" filterBy="#{evenement.titre}">
|
||||
<div class="flex align-items-center">
|
||||
<div class="flex align-items-center justify-content-center bg-primary-100 border-circle mr-2"
|
||||
style="width: 2rem; height: 2rem;">
|
||||
<i class="pi #{evenement.typeEvenementIcon} text-primary-600"></i>
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-900 font-medium">#{evenement.titre}</div>
|
||||
<div class="text-500 text-xs">#{evenement.description}</div>
|
||||
</div>
|
||||
</div>
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="Type" sortBy="#{evenement.typeEvenement}" filterBy="#{evenement.typeEvenement}" style="width:8rem">
|
||||
<p:tag value="#{evenement.typeEvenementLibelle}"
|
||||
severity="#{evenement.typeEvenementSeverity}"
|
||||
icon="pi #{evenement.typeEvenementIcon}"
|
||||
styleClass="text-xs" />
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="Date et Heure" sortBy="#{evenement.dateDebut}" style="width:10rem">
|
||||
<div>
|
||||
<div class="text-900 font-medium text-sm">#{evenement.dateDebutFormatee}</div>
|
||||
<div class="text-500 text-xs">#{evenement.heureDebutFormatee} - #{evenement.heureFinFormatee}</div>
|
||||
</div>
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="Lieu" style="width:10rem">
|
||||
<div>
|
||||
<div class="text-900 font-medium text-sm">#{evenement.lieu}</div>
|
||||
<div class="text-500 text-xs">#{evenement.adresse}</div>
|
||||
</div>
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="Organisateur">
|
||||
<div class="flex align-items-center" rendered="#{evenement.organisateur != null}">
|
||||
<div class="bg-300 border-circle mr-2" style="width: 1.5rem; height: 1.5rem;"></div>
|
||||
<div>
|
||||
<div class="text-900 text-sm">#{evenement.organisateur}</div>
|
||||
<div class="text-500 text-xs">#{evenement.organisateurEmail}</div>
|
||||
</div>
|
||||
</div>
|
||||
<span class="text-400 text-xs" rendered="#{evenement.organisateur == null}">
|
||||
Aucun organisateur
|
||||
</span>
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="Participants" sortBy="#{evenement.participantsInscrits}" style="width:8rem; text-align:center">
|
||||
<div class="text-center">
|
||||
<div class="text-900 font-bold">#{evenement.participantsInscrits}</div>
|
||||
<div class="text-500 text-xs mb-1">/#{evenement.capaciteMax} places</div>
|
||||
<p:progressBar value="#{evenement.tauxInscription}"
|
||||
showValue="false"
|
||||
styleClass="surface-200"
|
||||
style="height: 0.3rem;" />
|
||||
</div>
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="Budget" sortBy="#{evenement.budget}" style="width:8rem">
|
||||
<div class="text-900 font-bold text-right">#{evenement.budgetFormatte}</div>
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="Priorité" sortBy="#{evenement.priorite}" filterBy="#{evenement.priorite}" style="width:7rem">
|
||||
<p:tag value="#{evenement.priorite}"
|
||||
severity="#{evenement.prioriteSeverity}"
|
||||
styleClass="text-xs w-full" />
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="Statut" sortBy="#{evenement.statut}" filterBy="#{evenement.statut}" style="width:8rem">
|
||||
<p:tag value="#{evenement.statut}"
|
||||
severity="#{evenement.statutSeverity}"
|
||||
icon="pi #{evenement.statutIcon}"
|
||||
styleClass="text-xs w-full" />
|
||||
</p:column>
|
||||
|
||||
<p:column headerText="Actions" style="width:8rem" exportable="false">
|
||||
<h:form id="formActions#{evenement.id}">
|
||||
<div class="flex gap-1">
|
||||
<p:commandButton icon="pi pi-eye"
|
||||
styleClass="ui-button-rounded ui-button-text ui-button-info ui-button-sm"
|
||||
onclick="PF('dlgDetailsEvenement').show();"
|
||||
title="Voir détails">
|
||||
<f:setPropertyActionListener target="#{evenementsBean.evenementSelectionne}" value="#{evenement}" />
|
||||
</p:commandButton>
|
||||
<p:commandButton icon="pi pi-pencil"
|
||||
styleClass="ui-button-rounded ui-button-text ui-button-warning ui-button-sm"
|
||||
onclick="PF('dlgModifierEvenement').show();"
|
||||
title="Modifier">
|
||||
<f:setPropertyActionListener target="#{evenementsBean.evenementSelectionne}" value="#{evenement}" />
|
||||
</p:commandButton>
|
||||
<p:commandButton icon="pi pi-cog"
|
||||
styleClass="ui-button-rounded ui-button-text ui-button-secondary ui-button-sm"
|
||||
onclick="PF('dlgActionsEvenement').show();"
|
||||
title="Actions">
|
||||
<f:setPropertyActionListener target="#{evenementsBean.evenementSelectionne}" value="#{evenement}" />
|
||||
</p:commandButton>
|
||||
</div>
|
||||
</h:form>
|
||||
</p:column>
|
||||
</p:dataTable>
|
||||
</h:form>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- Dialogs avec structure Freya -->
|
||||
|
||||
<!-- Dialog Nouvel Événement -->
|
||||
<p:dialog header="Créer un Nouvel Événement"
|
||||
widgetVar="dlgNouvelEvenement"
|
||||
modal="true"
|
||||
width="800"
|
||||
height="auto"
|
||||
resizable="false">
|
||||
<h:form id="formNouvelEvenement">
|
||||
<div class="ui-fluid formgrid grid">
|
||||
<div class="field col-12 md:col-6">
|
||||
<label for="newTitre" class="block text-900 font-medium mb-2">Titre de l'événement *</label>
|
||||
<p:inputText id="newTitre"
|
||||
value="#{evenementsBean.nouvelEvenement.titre}"
|
||||
required="true"
|
||||
placeholder="Ex: Assemblée Générale 2024" />
|
||||
</div>
|
||||
|
||||
<div class="field col-12 md:col-6">
|
||||
<label for="newType" class="block text-900 font-medium mb-2">Type d'événement *</label>
|
||||
<p:selectOneMenu id="newType"
|
||||
value="#{evenementsBean.nouvelEvenement.typeEvenement}"
|
||||
required="true">
|
||||
<f:selectItem itemLabel="Sélectionner un type" itemValue="" />
|
||||
<f:selectItem itemLabel="Réunion" itemValue="REUNION" />
|
||||
<f:selectItem itemLabel="Formation" itemValue="FORMATION" />
|
||||
<f:selectItem itemLabel="Action Sociale" itemValue="ACTION_SOCIALE" />
|
||||
<f:selectItem itemLabel="Assemblée Générale" itemValue="ASSEMBLEE_GENERALE" />
|
||||
<f:selectItem itemLabel="Événement Festif" itemValue="EVENEMENT_FESTIF" />
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
|
||||
<div class="field col-12 md:col-6">
|
||||
<label for="newDateDebut" class="block text-900 font-medium mb-2">Date de début *</label>
|
||||
<p:datePicker id="newDateDebut"
|
||||
value="#{evenementsBean.nouvelEvenement.dateDebut}"
|
||||
required="true" />
|
||||
</div>
|
||||
|
||||
<div class="field col-12 md:col-6">
|
||||
<label for="newDateFin" class="block text-900 font-medium mb-2">Date de fin</label>
|
||||
<p:datePicker id="newDateFin"
|
||||
value="#{evenementsBean.nouvelEvenement.dateFin}" />
|
||||
</div>
|
||||
|
||||
<div class="field col-12 md:col-6">
|
||||
<label for="newLieu" class="block text-900 font-medium mb-2">Lieu *</label>
|
||||
<p:inputText id="newLieu"
|
||||
value="#{evenementsBean.nouvelEvenement.lieu}"
|
||||
required="true"
|
||||
placeholder="Ex: Salle de conférence" />
|
||||
</div>
|
||||
|
||||
<div class="field col-12 md:col-6">
|
||||
<label for="newCapacite" class="block text-900 font-medium mb-2">Capacité maximum</label>
|
||||
<p:inputNumber id="newCapacite"
|
||||
value="#{evenementsBean.nouvelEvenement.capaciteMax}"
|
||||
placeholder="100" />
|
||||
</div>
|
||||
|
||||
<div class="field col-12">
|
||||
<label for="newAdresse" class="block text-900 font-medium mb-2">Adresse complète</label>
|
||||
<p:inputTextarea id="newAdresse"
|
||||
value="#{evenementsBean.nouvelEvenement.adresse}"
|
||||
rows="2"
|
||||
placeholder="Adresse complète de l'événement..." />
|
||||
</div>
|
||||
|
||||
<div class="field col-12">
|
||||
<label for="newDescription" class="block text-900 font-medium mb-2">Description</label>
|
||||
<p:inputTextarea id="newDescription"
|
||||
value="#{evenementsBean.nouvelEvenement.description}"
|
||||
rows="3"
|
||||
placeholder="Description détaillée de l'événement..." />
|
||||
</div>
|
||||
|
||||
<div class="field col-12 md:col-4">
|
||||
<label for="newPriorite" class="block text-900 font-medium mb-2">Priorité</label>
|
||||
<p:selectOneMenu id="newPriorite"
|
||||
value="#{evenementsBean.nouvelEvenement.priorite}">
|
||||
<f:selectItem itemLabel="Normale" itemValue="NORMALE" />
|
||||
<f:selectItem itemLabel="Faible" itemValue="FAIBLE" />
|
||||
<f:selectItem itemLabel="Élevée" itemValue="ELEVEE" />
|
||||
<f:selectItem itemLabel="Critique" itemValue="CRITIQUE" />
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
|
||||
<div class="field col-12 md:col-4">
|
||||
<label for="newOrganisateur" class="block text-900 font-medium mb-2">Organisateur</label>
|
||||
<p:inputText id="newOrganisateur"
|
||||
value="#{evenementsBean.nouvelEvenement.organisateur}"
|
||||
placeholder="Nom de l'organisateur" />
|
||||
</div>
|
||||
|
||||
<div class="field col-12 md:col-4">
|
||||
<label for="newBudget" class="block text-900 font-medium mb-2">Budget estimé</label>
|
||||
<p:inputNumber id="newBudget"
|
||||
value="#{evenementsBean.nouvelEvenement.budget}"
|
||||
mode="currency"
|
||||
currency="XOF"
|
||||
locale="fr-CI"
|
||||
placeholder="50000" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex justify-content-end gap-2 mt-3">
|
||||
<p:commandButton value="Annuler"
|
||||
icon="pi pi-times"
|
||||
styleClass="ui-button-secondary ui-button-outlined ui-button-sm"
|
||||
onclick="PF('dlgNouvelEvenement').hide();"
|
||||
type="button" />
|
||||
<p:commandButton value="Créer l'événement"
|
||||
icon="pi pi-check"
|
||||
styleClass="ui-button-success ui-button-sm"
|
||||
action="#{evenementsBean.creerEvenement}"
|
||||
update="@form :formTableEvenements:dtEvenements"
|
||||
oncomplete="if(!args.validationFailed) PF('dlgNouvelEvenement').hide();" />
|
||||
</div>
|
||||
</h:form>
|
||||
</p:dialog>
|
||||
|
||||
|
||||
<!-- Dialog Actions Événement -->
|
||||
<p:dialog header="Actions sur l'Événement"
|
||||
widgetVar="dlgActionsEvenement"
|
||||
modal="true"
|
||||
width="400"
|
||||
height="auto"
|
||||
resizable="false">
|
||||
<h:form id="formActionsEvenement">
|
||||
<div class="surface-50 border-round-lg p-3 mb-3">
|
||||
<div class="text-500 text-sm mb-1">Événement sélectionné</div>
|
||||
<div class="text-900 font-bold">#{evenementsBean.evenementSelectionne.titre}</div>
|
||||
<div class="text-500 text-sm">#{evenementsBean.evenementSelectionne.dateDebutFormatee}</div>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-column gap-2">
|
||||
<p:commandButton value="Gérer les participants"
|
||||
icon="pi pi-users"
|
||||
styleClass="ui-button-info ui-button-outlined ui-button-sm w-full"
|
||||
action="#{evenementsBean.gererParticipants}" />
|
||||
|
||||
<p:commandButton value="Envoyer invitations"
|
||||
icon="pi pi-send"
|
||||
styleClass="ui-button-success ui-button-outlined ui-button-sm w-full"
|
||||
action="#{evenementsBean.envoyerInvitations}" />
|
||||
|
||||
<p:commandButton value="Rapports de participation"
|
||||
icon="pi pi-chart-bar"
|
||||
styleClass="ui-button-secondary ui-button-outlined ui-button-sm w-full"
|
||||
action="#{evenementsBean.voirRapports}" />
|
||||
|
||||
<p:commandButton value="Planning mensuel"
|
||||
icon="pi pi-calendar"
|
||||
styleClass="ui-button-warning ui-button-outlined ui-button-sm w-full"
|
||||
onclick="PF('dlgPlanningMensuel').show();" />
|
||||
|
||||
<p:commandButton value="Dupliquer l'événement"
|
||||
icon="pi pi-copy"
|
||||
styleClass="ui-button-info ui-button-outlined ui-button-sm w-full"
|
||||
action="#{evenementsBean.dupliquerEvenement}" />
|
||||
|
||||
<hr class="surface-border" />
|
||||
|
||||
<p:commandButton value="Annuler l'événement"
|
||||
icon="pi pi-ban"
|
||||
styleClass="ui-button-danger ui-button-sm w-full"
|
||||
onclick="return confirm('ATTENTION: Confirmer l\'annulation ?');"
|
||||
action="#{evenementsBean.annulerEvenement}"
|
||||
rendered="#{evenementsBean.evenementSelectionne.statut != 'ANNULE'}" />
|
||||
</div>
|
||||
</h:form>
|
||||
</p:dialog>
|
||||
</ui:define>
|
||||
|
||||
</ui:composition>
|
||||
Reference in New Issue
Block a user