Configure Maven repository for unionflow-server-api dependency
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
||||
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
|
||||
xmlns:p="http://primefaces.org/ui">
|
||||
|
||||
<!--
|
||||
Composant card avec en-tête et actions - DRY/WOU
|
||||
Usage :
|
||||
<ui:decorate template="/templates/components/cards/card-header.xhtml">
|
||||
<ui:param name="title" value="Titre de la card"/>
|
||||
<ui:param name="subtitle" value="Sous-titre optionnel"/>
|
||||
<ui:param name="styleClass" value="mb-3"/>
|
||||
<ui:define name="actions">
|
||||
Boutons d'action ici
|
||||
</ui:define>
|
||||
<ui:define name="content">
|
||||
Contenu de la card ici
|
||||
</ui:define>
|
||||
</ui:decorate>
|
||||
-->
|
||||
|
||||
<div class="card #{styleClass}">
|
||||
<div class="flex justify-content-between align-items-center flex-column md:flex-row mb-3">
|
||||
<div class="mb-2 md:mb-0">
|
||||
<ui:fragment rendered="#{not empty title}">
|
||||
<h3 class="m-0">
|
||||
<h:outputText value="#{title}" />
|
||||
</h3>
|
||||
</ui:fragment>
|
||||
<ui:fragment rendered="#{not empty subtitle}">
|
||||
<span class="text-600">
|
||||
<h:outputText value="#{subtitle}" />
|
||||
</span>
|
||||
</ui:fragment>
|
||||
</div>
|
||||
<div class="flex gap-2">
|
||||
<ui:insert name="actions">
|
||||
<!-- Actions buttons go here -->
|
||||
</ui:insert>
|
||||
</div>
|
||||
</div>
|
||||
<ui:insert name="content">
|
||||
<!-- Card content goes here -->
|
||||
</ui:insert>
|
||||
</div>
|
||||
</ui:composition>
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
||||
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
|
||||
xmlns:p="http://primefaces.org/ui">
|
||||
|
||||
<!--
|
||||
Composant card simple avec titre optionnel - DRY/WOU
|
||||
Usage :
|
||||
<ui:decorate template="/templates/components/cards/card-simple.xhtml">
|
||||
<ui:param name="title" value="Titre de la card"/>
|
||||
<ui:param name="styleClass" value="mb-3"/>
|
||||
<ui:define name="content">
|
||||
Contenu de la card ici
|
||||
</ui:define>
|
||||
</ui:decorate>
|
||||
-->
|
||||
|
||||
<div class="card #{styleClass}">
|
||||
<ui:fragment rendered="#{not empty title}">
|
||||
<h5 class="mb-3">
|
||||
<h:outputText value="#{title}" />
|
||||
</h5>
|
||||
</ui:fragment>
|
||||
<ui:insert name="content">
|
||||
<!-- Card content goes here -->
|
||||
</ui:insert>
|
||||
</div>
|
||||
</ui:composition>
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<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">
|
||||
|
||||
<!--
|
||||
Composant barre de filtres et recherche réutilisable - DRY/WOU
|
||||
Usage :
|
||||
<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">
|
||||
Champs de filtres ici (recherche, dropdowns, etc.)
|
||||
</ui:define>
|
||||
<ui:define name="actions">
|
||||
Boutons d'action (réinitialiser, rafraîchir, etc.)
|
||||
</ui:define>
|
||||
</ui:decorate>
|
||||
-->
|
||||
|
||||
<div class="card #{styleClass}">
|
||||
<ui:fragment rendered="#{not empty title}">
|
||||
<h5 class="mb-3">
|
||||
<h:outputText value="#{title}" />
|
||||
</h5>
|
||||
</ui:fragment>
|
||||
<div class="grid">
|
||||
<ui:insert name="filters">
|
||||
<!-- Filter fields go here -->
|
||||
</ui:insert>
|
||||
<ui:insert name="actions">
|
||||
<!-- Action buttons go here -->
|
||||
</ui:insert>
|
||||
</div>
|
||||
</div>
|
||||
</ui:composition>
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:h="http://java.sun.com/jsf/html"
|
||||
xmlns:f="http://java.sun.com/jsf/core"
|
||||
xmlns:ui="http://java.sun.com/jsf/facelets"
|
||||
xmlns:p="http://primefaces.org/ui"
|
||||
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
|
||||
|
||||
<!--
|
||||
Composant réutilisable: Carte KPI (Indicateur de Performance)
|
||||
|
||||
Paramètres:
|
||||
- title: Titre du KPI (requis)
|
||||
- value: Valeur principale à afficher (requis)
|
||||
- icon: Classe d'icône PrimeIcons (requis, ex: pi-users)
|
||||
- iconColor: Couleur de l'icône (requis, ex: blue-600, green-600, purple-600, orange-600)
|
||||
- growthValue: Valeur de croissance (optionnel, ex: "12.5", "5", "+10")
|
||||
- growthLabel: Libellé de la croissance (optionnel, ex: "ce mois", "vs mois dernier")
|
||||
- growthType: Type de croissance - "percentage" (défaut) ou "number" ou "status"
|
||||
- showGrowth: Afficher la section croissance (défaut: true si growthValue fourni)
|
||||
- noDataLabel: Libellé si pas de données (optionnel, défaut: "Données non disponibles")
|
||||
- progressValue: Valeur pour la barre de progression 0-100 (optionnel)
|
||||
- showProgress: Afficher la barre de progression (défaut: true si progressValue fourni)
|
||||
- statusIcon: Icône de statut au lieu de croissance (optionnel, ex: "pi-check-circle")
|
||||
- statusLabel: Libellé de statut (optionnel, ex: "En ligne")
|
||||
- statusValue: Valeur de statut (optionnel, ex: "5 actifs")
|
||||
- colSize: Taille de colonne (optionnel, défaut: "col-12 md:col-6 lg:col-3")
|
||||
|
||||
Exemples d'utilisation:
|
||||
|
||||
1. KPI simple avec croissance en pourcentage:
|
||||
<ui:include src="/templates/components/cards/kpi-card.xhtml">
|
||||
<ui:param name="title" value="Membres Actifs" />
|
||||
<ui:param name="value" value="#{bean.totalMembres}" />
|
||||
<ui:param name="icon" value="pi-users" />
|
||||
<ui:param name="iconColor" value="blue-600" />
|
||||
<ui:param name="growthValue" value="#{bean.croissanceMembres}" />
|
||||
<ui:param name="growthLabel" value="ce mois" />
|
||||
<ui:param name="progressValue" value="#{bean.pourcentageMembres}" />
|
||||
</ui:include>
|
||||
|
||||
2. KPI avec croissance en nombre:
|
||||
<ui:include src="/templates/components/cards/kpi-card.xhtml">
|
||||
<ui:param name="title" value="Organisations" />
|
||||
<ui:param name="value" value="#{bean.totalEntites}" />
|
||||
<ui:param name="icon" value="pi-sitemap" />
|
||||
<ui:param name="iconColor" value="green-600" />
|
||||
<ui:param name="growthValue" value="#{bean.nouvellesEntites}" />
|
||||
<ui:param name="growthLabel" value="nouvelles" />
|
||||
<ui:param name="growthType" value="number" />
|
||||
<ui:param name="progressValue" value="#{bean.pourcentageOrganisations}" />
|
||||
</ui:include>
|
||||
|
||||
3. KPI avec statut au lieu de croissance:
|
||||
<ui:include src="/templates/components/cards/kpi-card.xhtml">
|
||||
<ui:param name="title" value="Activité du Jour" />
|
||||
<ui:param name="value" value="#{bean.activiteJournaliere}" />
|
||||
<ui:param name="icon" value="pi-chart-line" />
|
||||
<ui:param name="iconColor" value="orange-600" />
|
||||
<ui:param name="statusIcon" value="pi-check-circle" />
|
||||
<ui:param name="statusLabel" value="En ligne" />
|
||||
<ui:param name="statusValue" value="#{bean.utilisateursActifs} actifs" />
|
||||
<ui:param name="progressValue" value="#{bean.pourcentageActivite}" />
|
||||
</ui:include>
|
||||
|
||||
4. KPI sans croissance ni progression:
|
||||
<ui:include src="/templates/components/cards/kpi-card.xhtml">
|
||||
<ui:param name="title" value="Total" />
|
||||
<ui:param name="value" value="#{bean.total}" />
|
||||
<ui:param name="icon" value="pi-calendar" />
|
||||
<ui:param name="iconColor" value="purple-600" />
|
||||
<ui:param name="showGrowth" value="false" />
|
||||
<ui:param name="showProgress" value="false" />
|
||||
</ui:include>
|
||||
-->
|
||||
|
||||
<ui:param name="colSize" value="col-12 md:col-6 lg:col-3" />
|
||||
<ui:param name="showGrowth" value="#{not empty growthValue}" />
|
||||
<ui:param name="showProgress" value="#{not empty progressValue}" />
|
||||
<ui:param name="growthType" value="percentage" />
|
||||
<ui:param name="noDataLabel" value="Données non disponibles" />
|
||||
|
||||
<div class="field #{colSize}">
|
||||
<div class="card surface-0 hover:surface-100 border-round-lg transition-all transition-duration-200">
|
||||
<div class="p-4" style="min-height: 9rem;">
|
||||
<!-- Header: Titre et Icône -->
|
||||
<div class="flex align-items-center justify-content-between mb-3">
|
||||
<span class="block text-600 font-medium text-sm">#{title}</span>
|
||||
<div class="flex align-items-center justify-content-center surface-100 border-round-lg"
|
||||
style="width: 2.5rem; height: 2.5rem;">
|
||||
<i class="pi #{icon} text-#{iconColor} text-lg"></i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Valeur principale -->
|
||||
<div class="text-900 font-bold text-2xl mb-3">#{value}</div>
|
||||
|
||||
<!-- Section Croissance ou Statut -->
|
||||
<c:choose>
|
||||
<!-- Mode Statut (statusIcon fourni) -->
|
||||
<c:when test="#{not empty statusIcon}">
|
||||
<div class="flex align-items-center mb-2" rendered="#{not empty statusValue and statusValue != '0'}">
|
||||
<div class="bg-green-500 border-circle mr-2" style="width: 8px; height: 8px;"></div>
|
||||
<span class="text-green-600 font-semibold text-sm mr-2">#{statusLabel}</span>
|
||||
<span class="text-500 text-xs">#{statusValue}</span>
|
||||
</div>
|
||||
<div class="text-500 text-xs" rendered="#{empty statusValue or statusValue == '0'}">
|
||||
Aucun utilisateur actif
|
||||
</div>
|
||||
</c:when>
|
||||
<!-- Mode Croissance -->
|
||||
<c:otherwise>
|
||||
<c:choose>
|
||||
<!-- Croissance en nombre -->
|
||||
<c:when test="#{growthType == 'number'}">
|
||||
<div class="flex align-items-center mb-2" rendered="#{showGrowth and not empty growthValue and growthValue != '0' and growthValue != '0.0'}">
|
||||
<i class="pi pi-arrow-up text-green-500 text-sm mr-2"></i>
|
||||
<span class="text-green-600 font-semibold text-sm mr-2">+#{growthValue}</span>
|
||||
<span class="text-500 text-xs">#{growthLabel}</span>
|
||||
</div>
|
||||
<div class="text-500 text-xs" rendered="#{not showGrowth or empty growthValue or growthValue == '0' or growthValue == '0.0'}">
|
||||
#{noDataLabel}
|
||||
</div>
|
||||
</c:when>
|
||||
<!-- Croissance en pourcentage (défaut) -->
|
||||
<c:otherwise>
|
||||
<div class="flex align-items-center mb-2" rendered="#{showGrowth and not empty growthValue and growthValue != '0' and growthValue != '0.0'}">
|
||||
<i class="pi pi-arrow-up text-green-500 text-sm mr-2"></i>
|
||||
<span class="text-green-600 font-semibold text-sm mr-2">+#{growthValue}%</span>
|
||||
<span class="text-500 text-xs">#{growthLabel}</span>
|
||||
</div>
|
||||
<div class="text-500 text-xs" rendered="#{not showGrowth or empty growthValue or growthValue == '0' or growthValue == '0.0'}">
|
||||
#{noDataLabel}
|
||||
</div>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
<!-- Barre de progression -->
|
||||
<p:progressBar value="#{progressValue}"
|
||||
showValue="false"
|
||||
styleClass="surface-200"
|
||||
style="height: 0.5rem; width: 100%;"
|
||||
rendered="#{showProgress}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</ui:composition>
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
<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">
|
||||
|
||||
<!--
|
||||
Composant carte de statistique réutilisable (WOU/DRY)
|
||||
Usage: ui:include src="/templates/components/cards/stat-card.xhtml"
|
||||
ui:param name="value" value="EXPRESSION_EL_ICI"
|
||||
ui:param name="label" value="Label de la statistique"
|
||||
ui:param name="icon" value="pi pi-icon-name"
|
||||
ui:param name="bgColor" value="blue"
|
||||
bgColor: blue, green, orange, purple, etc.
|
||||
-->
|
||||
|
||||
<div class="col-12 md:col-3">
|
||||
<h:panelGroup layout="block"
|
||||
styleClass="card #{bgColor == 'blue' ? 'bg-blue-100 border-left-3 border-blue-500' : (bgColor == 'green' ? 'bg-green-100 border-left-3 border-green-500' : (bgColor == 'orange' ? 'bg-orange-100 border-left-3 border-orange-500' : 'bg-blue-100 border-left-3 border-blue-500'))}">
|
||||
<div class="flex justify-content-between">
|
||||
<div>
|
||||
<h:panelGroup layout="block"
|
||||
styleClass="font-bold text-xl #{bgColor == 'blue' ? 'text-blue-900' : (bgColor == 'green' ? 'text-green-900' : (bgColor == 'orange' ? 'text-orange-900' : 'text-blue-900'))}">
|
||||
<h:outputText value="#{value}" />
|
||||
</h:panelGroup>
|
||||
<h:panelGroup layout="block"
|
||||
styleClass="#{bgColor == 'blue' ? 'text-blue-700' : (bgColor == 'green' ? 'text-green-700' : (bgColor == 'orange' ? 'text-orange-700' : 'text-blue-700'))}">
|
||||
<h:outputText value="#{label}" />
|
||||
</h:panelGroup>
|
||||
</div>
|
||||
<h:panelGroup layout="block"
|
||||
styleClass="text-white border-round text-center #{bgColor == 'blue' ? 'bg-blue-500' : (bgColor == 'green' ? 'bg-green-500' : (bgColor == 'orange' ? 'bg-orange-500' : 'bg-blue-500'))}"
|
||||
style="width: 2.5rem; height: 2.5rem; line-height: 2.5rem;">
|
||||
<i class="#{icon} text-lg"></i>
|
||||
</h:panelGroup>
|
||||
</div>
|
||||
</h:panelGroup>
|
||||
</div>
|
||||
</ui:composition>
|
||||
|
||||
Reference in New Issue
Block a user