Migration du frontend React/Next.js vers Quarkus + PrimeFaces Freya 5.0.0 Dashboard: - Extension de BtpXpressApiClient avec tous les endpoints dashboard - Création de DashboardService pour récupérer les données API - Refactorisation DashboardView : uniquement données réelles de l'API - Restructuration dashboard.xhtml avec tous les aspects métiers BTP - Suppression complète de toutes les données fictives Topbar: - Amélioration du menu profil utilisateur avec header professionnel - Ajout UserSessionBean pour gérer les informations utilisateur - Styles CSS personnalisés pour une disposition raffinée - Badges de notifications conditionnels Configuration: - Intégration du thème Freya 5.0.0-jakarta - Configuration OIDC pour Keycloak (security.lions.dev) - Gestion des erreurs HTTP 431 (headers size) - Support du format Fcfa avec séparateurs d'espaces Converters: - Création de FcfaConverter pour formater les montants en Fcfa avec espaces (x xxx xxx format) Code Quality: - Code entièrement documenté en français avec Javadoc exemplaire - Respect du principe Java 'Write once, use many times' - Logging complet pour le débogage - Gestion d'erreurs robuste
90 lines
5.1 KiB
HTML
90 lines
5.1 KiB
HTML
<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"
|
|
template="/WEB-INF/template.xhtml">
|
|
|
|
<ui:define name="title">Détails du chantier - BTP Xpress</ui:define>
|
|
|
|
<f:metadata>
|
|
<f:viewParam name="id" value="#{chantiersView.chantierId}"/>
|
|
<f:event type="preRenderView" listener="#{chantiersView.loadChantierById()}"/>
|
|
</f:metadata>
|
|
|
|
<ui:define name="content">
|
|
<div class="layout-dashboard">
|
|
<div class="grid">
|
|
<div class="col-12">
|
|
<div class="card">
|
|
<div class="flex align-items-center justify-content-between mb-3">
|
|
<h1>Détails du chantier</h1>
|
|
<p:commandButton value="Retour" icon="pi pi-arrow-left"
|
|
outcome="/chantiers"
|
|
styleClass="ui-button-secondary"/>
|
|
</div>
|
|
|
|
<h:form id="detailsChantierForm">
|
|
<div class="grid" rendered="#{not empty chantiersView.selectedItem}">
|
|
<div class="col-12">
|
|
<p:panel header="Informations générales">
|
|
<div class="grid">
|
|
<div class="col-12 md:col-6">
|
|
<p><strong>Nom :</strong> #{chantiersView.selectedItem.nom}</p>
|
|
</div>
|
|
<div class="col-12 md:col-6">
|
|
<p><strong>Client :</strong> #{chantiersView.selectedItem.client}</p>
|
|
</div>
|
|
<div class="col-12">
|
|
<p><strong>Adresse :</strong> #{chantiersView.selectedItem.adresse}</p>
|
|
</div>
|
|
</div>
|
|
</p:panel>
|
|
</div>
|
|
|
|
<div class="col-12 md:col-6">
|
|
<p:panel header="Dates">
|
|
<p><strong>Date de début :</strong>
|
|
<h:outputText value="#{chantiersView.selectedItem.dateDebut}">
|
|
<f:convertDateTime pattern="dd/MM/yyyy"/>
|
|
</h:outputText>
|
|
</p>
|
|
<p><strong>Date de fin prévue :</strong>
|
|
<h:outputText value="#{chantiersView.selectedItem.dateFinPrevue}">
|
|
<f:convertDateTime pattern="dd/MM/yyyy"/>
|
|
</h:outputText>
|
|
</p>
|
|
</p:panel>
|
|
</div>
|
|
|
|
<div class="col-12 md:col-6">
|
|
<p:panel header="Statut et avancement">
|
|
<p><strong>Statut :</strong>
|
|
<p:tag value="#{chantiersView.selectedItem.statut}"
|
|
severity="#{chantiersView.selectedItem.statut == 'TERMINE' ? 'success' : (chantiersView.selectedItem.statut == 'EN_COURS' ? 'info' : 'warning')}"/>
|
|
</p>
|
|
<p><strong>Avancement :</strong>
|
|
<p:progressBar value="#{chantiersView.selectedItem.avancement}"
|
|
showValue="true"
|
|
styleClass="ui-progressbar-success"/>
|
|
</p>
|
|
<p><strong>Budget :</strong>
|
|
<h:outputText value="#{chantiersView.selectedItem.budget}">
|
|
<f:converter converterId="fcfaConverter"/>
|
|
</h:outputText>
|
|
<h:outputText value=" Fcfa"/>
|
|
</p>
|
|
</p:panel>
|
|
</div>
|
|
</div>
|
|
<p:message rendered="#{empty chantiersView.selectedItem}" severity="warn"
|
|
summary="Chantier introuvable"/>
|
|
</h:form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</ui:define>
|
|
</ui:composition>
|
|
|