feat: Migration complète vers Quarkus PrimeFaces Freya
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
This commit is contained in:
18
target/classes/META-INF/faces-config.xml
Normal file
18
target/classes/META-INF/faces-config.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<faces-config version="4.0"
|
||||
xmlns="https://jakarta.ee/xml/ns/jakartaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
|
||||
https://jakarta.ee/xml/ns/jakartaee/web-facesconfig_4_0.xsd">
|
||||
|
||||
<name>btpxpress_freya</name>
|
||||
|
||||
<application>
|
||||
<locale-config>
|
||||
<default-locale>fr</default-locale>
|
||||
<supported-locale>fr</supported-locale>
|
||||
<supported-locale>en</supported-locale>
|
||||
</locale-config>
|
||||
</application>
|
||||
|
||||
</faces-config>
|
||||
@@ -0,0 +1,33 @@
|
||||
<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">
|
||||
|
||||
<ui:param name="formId" value="filtresForm"/>
|
||||
<ui:param name="viewBean" value=""/>
|
||||
<ui:param name="tableId" value=""/>
|
||||
|
||||
<div class="card">
|
||||
<h5>Recherche et filtres</h5>
|
||||
<h:form id="#{formId}">
|
||||
<ui:insert name="filter-fields">
|
||||
<!-- Les champs de filtre spécifiques à chaque page -->
|
||||
</ui:insert>
|
||||
<div class="col-12">
|
||||
<p:commandButton value="Rechercher"
|
||||
icon="pi pi-search"
|
||||
action="#{viewBean.search()}"
|
||||
update="#{tableId}"
|
||||
styleClass="ui-button-primary"/>
|
||||
<p:commandButton value="Réinitialiser"
|
||||
icon="pi pi-refresh"
|
||||
action="#{viewBean.resetFilters()}"
|
||||
update="#{tableId} #{formId}"
|
||||
styleClass="ui-button-secondary"/>
|
||||
</div>
|
||||
</h:form>
|
||||
</div>
|
||||
|
||||
</ui:composition>
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
<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">
|
||||
|
||||
<div class="card">
|
||||
<div class="flex align-items-center justify-content-between mb-3">
|
||||
<h5>#{title}</h5>
|
||||
<p:commandButton value="Nouveau"
|
||||
icon="pi pi-plus"
|
||||
action="#{viewBean.createNew()}"
|
||||
styleClass="ui-button-primary"
|
||||
rendered="#{not empty createPath}"/>
|
||||
</div>
|
||||
<h:form id="#{formId}">
|
||||
<p:dataTable id="#{tableId}"
|
||||
value="#{viewBean.items}"
|
||||
var="#{var}"
|
||||
paginator="true"
|
||||
rows="10"
|
||||
rowsPerPageTemplate="10,20,50"
|
||||
emptyMessage="Aucun résultat trouvé"
|
||||
loading="#{viewBean.loading}"
|
||||
selection="#{viewBean.selectedItem}"
|
||||
selectionMode="single">
|
||||
<f:facet name="header">
|
||||
<div class="flex align-items-center justify-content-between">
|
||||
<span>Total : #{viewBean.items.size()} élément(s)</span>
|
||||
<p:commandButton icon="pi pi-trash"
|
||||
title="Supprimer"
|
||||
disabled="#{empty viewBean.selectedItem}"
|
||||
action="#{viewBean.delete()}"
|
||||
update="#{tableId}"
|
||||
styleClass="ui-button-danger ui-button-text"/>
|
||||
</div>
|
||||
</f:facet>
|
||||
<ui:insert name="columns"/>
|
||||
</p:dataTable>
|
||||
</h:form>
|
||||
</div>
|
||||
|
||||
</ui:composition>
|
||||
94
target/classes/META-INF/resources/WEB-INF/config.xhtml
Normal file
94
target/classes/META-INF/resources/WEB-INF/config.xhtml
Normal file
@@ -0,0 +1,94 @@
|
||||
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:f="http://java.sun.com/jsf/core"
|
||||
xmlns:h="http://java.sun.com/jsf/html"
|
||||
xmlns:ui="http://java.sun.com/jsf/facelets"
|
||||
xmlns:p="http://primefaces.org/ui">
|
||||
|
||||
<a href="#" id="layout-config-button" class="layout-config-button">
|
||||
<i class="pi pi-cog"/>
|
||||
</a>
|
||||
|
||||
<div id="layout-config" class="layout-config">
|
||||
<h:form id="config-form" styleClass="layout-config-form">
|
||||
<h5 style="margin-top: 0">Type de Menu</h5>
|
||||
<p:selectOneRadio value="#{guestPreferences.menuMode}" layout="pageDirection"
|
||||
onchange="PrimeFaces.FreyaConfigurator.changeMenuMode(event.target.value)" >
|
||||
<f:selectItem itemLabel="Horizontal" itemValue="layout-horizontal" />
|
||||
<f:selectItem itemLabel="Sidebar" itemValue="layout-sidebar" />
|
||||
<f:selectItem itemLabel="Slim" itemValue="layout-slim" />
|
||||
<p:ajax listener="#{guestPreferences.onMenuTypeChange}" update="config-form" />
|
||||
</p:selectOneRadio>
|
||||
|
||||
<hr/>
|
||||
|
||||
<h5>Schéma de Couleurs</h5>
|
||||
<p:selectOneRadio value="#{guestPreferences.darkMode}" layout="pageDirection"
|
||||
onchange="PrimeFaces.FreyaConfigurator.changeLayout('#{guestPreferences.componentTheme}', event.target.value)" >
|
||||
<f:selectItem itemLabel="Clair" itemValue="light" />
|
||||
<f:selectItem itemLabel="Sombre" itemValue="dark" />
|
||||
<p:ajax onstart="PrimeFaces.FreyaConfigurator.beforeResourceChange()" update="config-form logolink"/>
|
||||
</p:selectOneRadio>
|
||||
|
||||
<p:outputPanel rendered="#{guestPreferences.menuMode eq 'layout-horizontal'}">
|
||||
<hr/>
|
||||
<h5>Mode Topbar et Menu</h5>
|
||||
<p:selectOneRadio value="#{guestPreferences.topbarTheme}" layout="pageDirection"
|
||||
onchange="PrimeFaces.FreyaConfigurator.changeSectionTheme(event.target.value , 'layout-topbar');PrimeFaces.FreyaConfigurator.changeSectionTheme(event.target.value , 'layout-menu')" >
|
||||
<f:selectItem itemLabel="Clair" itemValue="light" itemDisabled="#{guestPreferences.darkMode != 'light'}" />
|
||||
<f:selectItem itemLabel="Sombre" itemValue="dark" itemDisabled="#{guestPreferences.darkMode != 'light'}"/>
|
||||
<p:ajax update="logolink config-form"/>
|
||||
</p:selectOneRadio>
|
||||
</p:outputPanel>
|
||||
|
||||
<p:outputPanel rendered="#{guestPreferences.menuMode != 'layout-horizontal'}">
|
||||
<hr/>
|
||||
<h5>Mode Topbar</h5>
|
||||
<p:selectOneRadio value="#{guestPreferences.topbarTheme}" layout="pageDirection"
|
||||
onchange="PrimeFaces.FreyaConfigurator.changeSectionTheme(event.target.value , 'layout-topbar')" >
|
||||
<f:selectItem itemLabel="Clair" itemValue="light" itemDisabled="#{guestPreferences.darkMode != 'light'}" />
|
||||
<f:selectItem itemLabel="Sombre" itemValue="dark" itemDisabled="#{guestPreferences.darkMode != 'light'}"/>
|
||||
<p:ajax update="logolink config-form"/>
|
||||
</p:selectOneRadio>
|
||||
</p:outputPanel>
|
||||
|
||||
<p:outputPanel rendered="#{guestPreferences.menuMode != 'layout-horizontal'}">
|
||||
<hr/>
|
||||
<h5>Mode Menu</h5>
|
||||
<p:selectOneRadio value="#{guestPreferences.menuTheme}" layout="pageDirection"
|
||||
onchange="PrimeFaces.FreyaConfigurator.changeSectionTheme(event.target.value , 'layout-menu')" >
|
||||
<f:selectItem itemLabel="Clair" itemValue="light" itemDisabled="#{guestPreferences.darkMode != 'light'}" />
|
||||
<f:selectItem itemLabel="Sombre" itemValue="dark" itemDisabled="#{guestPreferences.darkMode != 'light'}"/>
|
||||
<p:ajax update="logolink config-form"/>
|
||||
</p:selectOneRadio>
|
||||
</p:outputPanel>
|
||||
|
||||
<hr/>
|
||||
|
||||
<h5>Style d'Input</h5>
|
||||
<p:selectOneRadio value="#{guestPreferences.inputStyle}" layout="pageDirection"
|
||||
onchange="PrimeFaces.FreyaConfigurator.updateInputStyle(event.target.value)">
|
||||
<f:selectItem itemLabel="Outlined" itemValue="outlined" />
|
||||
<f:selectItem itemLabel="Filled" itemValue="filled" />
|
||||
<p:ajax />
|
||||
</p:selectOneRadio>
|
||||
|
||||
<hr/>
|
||||
|
||||
<h5>Couleurs du Thème</h5>
|
||||
<div class="layout-themes">
|
||||
<ui:repeat value="#{guestPreferences.componentThemes}" var="componentTheme">
|
||||
<div>
|
||||
<p:commandLink actionListener="#{guestPreferences.setComponentTheme(componentTheme.file)}"
|
||||
style="background-color: #{componentTheme.color};" title="#{componentTheme.name}"
|
||||
process="@this"
|
||||
update="config-form"
|
||||
onstart="PrimeFaces.FreyaConfigurator.beforeResourceChange()"
|
||||
oncomplete="PrimeFaces.FreyaConfigurator.changeComponentsTheme('#{componentTheme.file}', '#{guestPreferences.darkMode}')">
|
||||
</p:commandLink>
|
||||
</div>
|
||||
</ui:repeat>
|
||||
</div>
|
||||
</h:form>
|
||||
</div>
|
||||
</ui:composition>
|
||||
|
||||
58
target/classes/META-INF/resources/WEB-INF/footer.xhtml
Normal file
58
target/classes/META-INF/resources/WEB-INF/footer.xhtml
Normal file
@@ -0,0 +1,58 @@
|
||||
<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">
|
||||
|
||||
<div class="layout-footer">
|
||||
<div class="grid">
|
||||
<div class="col-12 lg:col-4">
|
||||
<div class="grid">
|
||||
<div class="col-6">
|
||||
<span class="footer-menutitle">PLAN DU SITE</span>
|
||||
<ul>
|
||||
<li><a href="dashboard.xhtml">Tableau de bord</a></li>
|
||||
<li><a href="chantiers.xhtml">Chantiers</a></li>
|
||||
<li><a href="clients.xhtml">Clients</a></li>
|
||||
<li><a href="devis.xhtml">Devis</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<span class="footer-menutitle"></span>
|
||||
<ul>
|
||||
<li><a href="factures.xhtml">Factures</a></li>
|
||||
<li><a href="materiels.xhtml">Matériels</a></li>
|
||||
<li><a href="employes.xhtml">Employés</a></li>
|
||||
<li><a href="rapports.xhtml">Rapports</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 md:col-6 lg:col-4">
|
||||
<span class="footer-menutitle">NOUS CONTACTER</span>
|
||||
<ul>
|
||||
<li>Email : contact@btpxpress.com</li>
|
||||
<li>Support : support@btpxpress.com</li>
|
||||
<li>Téléphone : +33 (0)1 XX XX XX XX</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-12 md:col-6 lg:col-4">
|
||||
<span class="footer-menutitle">NEWSLETTER</span>
|
||||
<span class="footer-subtitle">Inscrivez-vous à notre newsletter pour recevoir les dernières nouveautés.</span>
|
||||
<h:form>
|
||||
<div class="newsletter-input">
|
||||
<p:inputText placeholder="Votre adresse email" />
|
||||
<p:commandButton value="S'inscrire" styleClass="ui-button-secondary"/>
|
||||
</div>
|
||||
</h:form>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="footer-bottom">
|
||||
<h4>BTP Xpress</h4>
|
||||
<h6>Copyright © 2025 - Tous droits réservés</h6>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:composition>
|
||||
|
||||
124
target/classes/META-INF/resources/WEB-INF/menu.xhtml
Normal file
124
target/classes/META-INF/resources/WEB-INF/menu.xhtml
Normal file
@@ -0,0 +1,124 @@
|
||||
<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:fr="http://primefaces.org/freya">
|
||||
|
||||
<div class="menu-wrapper">
|
||||
<div class="sidebar-logo">
|
||||
<a href="dashboard.xhtml">
|
||||
<p:graphicImage name="images/logo-freya-single.svg" library="freya-layout" />
|
||||
</a>
|
||||
<a href="#" class="sidebar-pin" title="Toggle Menu">
|
||||
<span class="pin"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="layout-menu-container">
|
||||
<h:form id="menuform">
|
||||
<fr:menu widgetVar="FreyaMenuWidget">
|
||||
<p:menuitem id="m_dashboard" value="Dashboard" icon="pi pi-home" outcome="/dashboard" />
|
||||
|
||||
<p:submenu id="m_chantiers" label="Chantiers" icon="pi pi-building">
|
||||
<p:menuitem id="m_chantiers_liste" value="List" icon="pi pi-list" outcome="/chantiers" />
|
||||
<p:menuitem id="m_chantiers_nouveau" value="New" icon="pi pi-plus-circle" outcome="/chantiers/nouveau" />
|
||||
<p:menuitem id="m_chantiers_en_cours" value="In Progress" icon="pi pi-spin pi-spinner" outcome="/chantiers/en-cours" />
|
||||
<p:menuitem id="m_chantiers_termines" value="Completed" icon="pi pi-check-circle" outcome="/chantiers/termines" />
|
||||
<p:menuitem id="m_chantiers_planifies" value="Scheduled" icon="pi pi-calendar" outcome="/chantiers/planifies" />
|
||||
</p:submenu>
|
||||
|
||||
<p:submenu id="m_clients" label="Clients" icon="pi pi-users">
|
||||
<p:menuitem id="m_clients_liste" value="List" icon="pi pi-list" outcome="/clients" />
|
||||
<p:menuitem id="m_clients_nouveau" value="New" icon="pi pi-user-plus" outcome="/clients/nouveau" />
|
||||
<p:menuitem id="m_clients_recherche" value="Search" icon="pi pi-search" outcome="/clients/recherche" />
|
||||
</p:submenu>
|
||||
|
||||
<p:submenu id="m_devis" label="Devis" icon="pi pi-file-edit">
|
||||
<p:menuitem id="m_devis_liste" value="List" icon="pi pi-list" outcome="/devis" />
|
||||
<p:menuitem id="m_devis_nouveau" value="New" icon="pi pi-plus" outcome="/devis/nouveau" />
|
||||
<p:menuitem id="m_devis_attente" value="Pending" icon="pi pi-clock" outcome="/devis/attente" />
|
||||
<p:menuitem id="m_devis_acceptes" value="Accepted" icon="pi pi-check" outcome="/devis/acceptes" />
|
||||
<p:menuitem id="m_devis_expires" value="Expired" icon="pi pi-exclamation-triangle" outcome="/devis/expires" />
|
||||
</p:submenu>
|
||||
|
||||
<p:submenu id="m_factures" label="Factures" icon="pi pi-dollar">
|
||||
<p:menuitem id="m_factures_liste" value="List" icon="pi pi-list" outcome="/factures" />
|
||||
<p:menuitem id="m_factures_nouvelle" value="New" icon="pi pi-plus" outcome="/factures/nouvelle" />
|
||||
<p:menuitem id="m_factures_payees" value="Paid" icon="pi pi-check-circle" outcome="/factures/payees" />
|
||||
<p:menuitem id="m_factures_impayees" value="Unpaid" icon="pi pi-exclamation-circle" outcome="/factures/impayees" />
|
||||
<p:menuitem id="m_factures_retard" value="Overdue" icon="pi pi-clock" outcome="/factures/retard" />
|
||||
</p:submenu>
|
||||
|
||||
<p:submenu id="m_materiels" label="Matériels" icon="pi pi-wrench">
|
||||
<p:menuitem id="m_materiels_liste" value="Inventory" icon="pi pi-list" outcome="/materiels" />
|
||||
<p:menuitem id="m_materiels_nouveau" value="New" icon="pi pi-plus" outcome="/materiels/nouveau" />
|
||||
<p:menuitem id="m_materiels_disponibles" value="Available" icon="pi pi-check" outcome="/materiels/disponibles" />
|
||||
<p:menuitem id="m_materiels_maintenance" value="Maintenance" icon="pi pi-cog" outcome="/materiels/maintenance-prevue" />
|
||||
</p:submenu>
|
||||
|
||||
<p:submenu id="m_stock" label="Stock" icon="pi pi-box">
|
||||
<p:menuitem id="m_stock_liste" value="Management" icon="pi pi-list" outcome="/stock" />
|
||||
<p:menuitem id="m_stock_inventaire" value="Inventory" icon="pi pi-check-square" outcome="/stock/inventaire" />
|
||||
<p:menuitem id="m_stock_commandes" value="Orders" icon="pi pi-shopping-cart" outcome="/stock/commandes" />
|
||||
<p:menuitem id="m_stock_sorties" value="Outgoing" icon="pi pi-sign-out" outcome="/stock/sorties" />
|
||||
</p:submenu>
|
||||
|
||||
<p:submenu id="m_employes" label="Employés" icon="pi pi-id-card">
|
||||
<p:menuitem id="m_employes_liste" value="List" icon="pi pi-list" outcome="/employes" />
|
||||
<p:menuitem id="m_employes_nouveau" value="New" icon="pi pi-user-plus" outcome="/employes/nouveau" />
|
||||
<p:menuitem id="m_employes_actifs" value="Active" icon="pi pi-check-circle" outcome="/employes/actifs" />
|
||||
<p:menuitem id="m_employes_disponibles" value="Available" icon="pi pi-users" outcome="/employes/disponibles" />
|
||||
</p:submenu>
|
||||
|
||||
<p:submenu id="m_equipes" label="Équipes" icon="pi pi-users">
|
||||
<p:menuitem id="m_equipes_liste" value="List" icon="pi pi-list" outcome="/equipes" />
|
||||
<p:menuitem id="m_equipes_nouvelle" value="New" icon="pi pi-plus" outcome="/equipes/nouvelle" />
|
||||
<p:menuitem id="m_equipes_disponibles" value="Available" icon="pi pi-check" outcome="/equipes/disponibles" />
|
||||
<p:menuitem id="m_equipes_specialites" value="Specialties" icon="pi pi-tags" outcome="/equipes/specialites" />
|
||||
</p:submenu>
|
||||
|
||||
<p:submenu id="m_planning" label="Planning" icon="pi pi-calendar">
|
||||
<p:menuitem id="m_planning_calendrier" value="Calendar" icon="pi pi-calendar" outcome="/planning/calendrier" />
|
||||
<p:menuitem id="m_planning_materiel" value="Equipment" icon="pi pi-wrench" outcome="/planning/materiel" />
|
||||
<p:menuitem id="m_planning_equipes" value="Teams" icon="pi pi-users" outcome="/planning/equipes" />
|
||||
</p:submenu>
|
||||
|
||||
<p:submenu id="m_maintenance" label="Maintenance" icon="pi pi-cog">
|
||||
<p:menuitem id="m_maintenance_liste" value="List" icon="pi pi-list" outcome="/maintenance" />
|
||||
<p:menuitem id="m_maintenance_nouvelle" value="New" icon="pi pi-plus" outcome="/maintenance/nouveau" />
|
||||
<p:menuitem id="m_maintenance_preventive" value="Preventive" icon="pi pi-shield" outcome="/maintenance/preventive" />
|
||||
<p:menuitem id="m_maintenance_corrective" value="Corrective" icon="pi pi-exclamation-triangle" outcome="/maintenance/corrective" />
|
||||
<p:menuitem id="m_maintenance_urgente" value="Urgent" icon="pi pi-bolt" outcome="/maintenance/urgente" />
|
||||
</p:submenu>
|
||||
|
||||
<p:submenu id="m_rapports" label="Rapports" icon="pi pi-chart-bar">
|
||||
<p:menuitem id="m_rapports_liste" value="List" icon="pi pi-list" outcome="/rapports" />
|
||||
<p:menuitem id="m_rapports_ca" value="Revenue" icon="pi pi-dollar" outcome="/rapports/ca" />
|
||||
<p:menuitem id="m_rapports_rentabilite" value="Profitability" icon="pi pi-chart-line" outcome="/rapports/rentabilite" />
|
||||
<p:menuitem id="m_rapports_clients" value="By Client" icon="pi pi-users" outcome="/rapports/clients" />
|
||||
<p:menuitem id="m_rapports_equipes" value="By Team" icon="pi pi-id-card" outcome="/rapports/equipes" />
|
||||
</p:submenu>
|
||||
|
||||
<p:submenu id="m_notifications" label="Notifications" icon="pi pi-bell">
|
||||
<p:menuitem id="m_notifications_liste" value="All" icon="pi pi-list" outcome="/notifications" />
|
||||
<p:menuitem id="m_notifications_recentes" value="Recent" icon="pi pi-clock" outcome="/notifications/recentes" />
|
||||
<p:menuitem id="m_notifications_non_lues" value="Unread" icon="pi pi-envelope" outcome="/notifications/non-lues" />
|
||||
<p:menuitem id="m_notifications_statistiques" value="Statistics" icon="pi pi-chart-pie" outcome="/notifications/statistiques" />
|
||||
</p:submenu>
|
||||
|
||||
<p:submenu id="m_messages" label="Messages" icon="pi pi-comments">
|
||||
<p:menuitem id="m_messages_liste" value="Inbox" icon="pi pi-inbox" outcome="/messages" />
|
||||
<p:menuitem id="m_messages_nouveau" value="New" icon="pi pi-plus" outcome="/messages/nouveau" />
|
||||
<p:menuitem id="m_messages_envoyes" value="Sent" icon="pi pi-send" outcome="/messages/envoyes" />
|
||||
<p:menuitem id="m_messages_archives" value="Archived" icon="pi pi-archive" outcome="/messages/archives" />
|
||||
</p:submenu>
|
||||
|
||||
<p:menuitem id="m_profile" value="Profile" icon="pi pi-user" outcome="/profile" />
|
||||
<p:menuitem id="m_documentation" value="Documentation" icon="pi pi-book" outcome="/documentation" />
|
||||
</fr:menu>
|
||||
</h:form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</ui:composition>
|
||||
|
||||
65
target/classes/META-INF/resources/WEB-INF/rightpanel.xhtml
Normal file
65
target/classes/META-INF/resources/WEB-INF/rightpanel.xhtml
Normal file
@@ -0,0 +1,65 @@
|
||||
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:f="http://java.sun.com/jsf/core"
|
||||
xmlns:h="http://java.sun.com/jsf/html"
|
||||
xmlns:ui="http://java.sun.com/jsf/facelets"
|
||||
xmlns:p="http://primefaces.org/ui">
|
||||
|
||||
<div class="layout-rightpanel">
|
||||
<div class="rightpanel-wrapper">
|
||||
<div class="rightpanel-section tasks-section">
|
||||
<div class="section-header">
|
||||
<h6>Mes Tâches</h6>
|
||||
<h:form>
|
||||
<p:commandButton type="button" icon="pi pi-plus" styleClass="ui-button-secondary ui-button-flat rounded-button" />
|
||||
</h:form>
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="task-info">
|
||||
<h6>Réviser le devis pour le chantier A</h6>
|
||||
<span>-Validation budgétaire</span>
|
||||
<span>-Vérification matériaux</span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="task-info">
|
||||
<h6>Planifier la maintenance préventive</h6>
|
||||
<span>Matériel : Pelleteuse BX-2024</span>
|
||||
</div>
|
||||
</li>
|
||||
<li class="done">
|
||||
<div class="task-info">
|
||||
<h6>Finaliser le rapport hebdomadaire</h6>
|
||||
</div>
|
||||
<i class="pi pi-check"></i>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="rightpanel-section favorites-section">
|
||||
<div class="section-header">
|
||||
<h6>Favoris</h6>
|
||||
</div>
|
||||
<div class="favorite-items">
|
||||
<a href="dashboard.xhtml" class="favorite-item">
|
||||
<i class="pi pi-home" style="font-size: 1.5rem;"></i>
|
||||
</a>
|
||||
<a href="chantiers.xhtml" class="favorite-item">
|
||||
<i class="pi pi-building" style="font-size: 1.5rem;"></i>
|
||||
</a>
|
||||
<a href="clients.xhtml" class="favorite-item">
|
||||
<i class="pi pi-users" style="font-size: 1.5rem;"></i>
|
||||
</a>
|
||||
<a href="rapports.xhtml" class="favorite-item">
|
||||
<i class="pi pi-chart-bar" style="font-size: 1.5rem;"></i>
|
||||
</a>
|
||||
<a href="#" class="add-item">
|
||||
<i class="pi pi-plus"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</ui:composition>
|
||||
|
||||
59
target/classes/META-INF/resources/WEB-INF/template.xhtml
Normal file
59
target/classes/META-INF/resources/WEB-INF/template.xhtml
Normal file
@@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html>
|
||||
<html 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"
|
||||
lang="fr">
|
||||
|
||||
<h:head>
|
||||
<f:facet name="first">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<link rel="icon" href="#{request.contextPath}/resources/freya-layout/images/favicon.ico" type="image/x-icon"></link>
|
||||
</f:facet>
|
||||
<title><ui:insert name="title">BTP Xpress - Gestion de Projets BTP</ui:insert></title>
|
||||
|
||||
<h:outputStylesheet name="theme.css" library="primefaces-freya-#{guestPreferences.componentTheme}-#{guestPreferences.darkMode}"/>
|
||||
|
||||
<h:outputStylesheet name="css/primeicons.css" library="freya-layout" />
|
||||
<h:outputStylesheet name="css/primeflex.min.css" library="freya-layout" />
|
||||
<h:outputStylesheet name="css/#{guestPreferences.layout}.css" library="freya-layout" />
|
||||
<h:outputStylesheet name="css/custom-topbar.css" />
|
||||
|
||||
<h:outputScript name="js/layout.js" library="freya-layout" />
|
||||
<h:outputScript name="js/prism.js" library="freya-layout"/>
|
||||
<ui:insert name="head"/>
|
||||
</h:head>
|
||||
|
||||
<h:body styleClass="#{guestPreferences.inputStyleClass}">
|
||||
<div class="layout-wrapper layout-topbar-#{guestPreferences.topbarTheme} layout-menu-#{guestPreferences.menuTheme} #{guestPreferences.menuMode}" >
|
||||
<ui:include src="./topbar.xhtml"/>
|
||||
|
||||
<ui:include src="./rightpanel.xhtml"/>
|
||||
<ui:include src="./config.xhtml" />
|
||||
|
||||
<div class="layout-main">
|
||||
<div class="layout-content">
|
||||
<ui:insert name="content"/>
|
||||
</div>
|
||||
<ui:include src="./footer.xhtml"/>
|
||||
</div>
|
||||
|
||||
<p:ajaxStatus style="width:32px;height:32px;position:fixed;right:7px;bottom:7px">
|
||||
<f:facet name="start">
|
||||
<i class="pi pi-spin pi-spinner ajax-loader" aria-hidden="true"/>
|
||||
</f:facet>
|
||||
|
||||
<f:facet name="complete">
|
||||
<h:outputText value="" />
|
||||
</f:facet>
|
||||
</p:ajaxStatus>
|
||||
<div class="layout-mask modal-in"></div>
|
||||
</div>
|
||||
</h:body>
|
||||
|
||||
</html>
|
||||
|
||||
129
target/classes/META-INF/resources/WEB-INF/topbar.xhtml
Normal file
129
target/classes/META-INF/resources/WEB-INF/topbar.xhtml
Normal file
@@ -0,0 +1,129 @@
|
||||
<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:po="http://primefaces.org/freya">
|
||||
|
||||
<div class="layout-topbar">
|
||||
<div class="layout-topbar-wrapper">
|
||||
<div class="layout-topbar-left">
|
||||
<a href="#" class="menu-button">
|
||||
<i class="pi pi-bars"/>
|
||||
</a>
|
||||
<h:link id="logolink" outcome="/dashboard" styleClass="layout-topbar-logo">
|
||||
<p:graphicImage name="images/#{ guestPreferences.lightLogo ? 'logo-freya-white.svg' : 'logo-freya.svg'}" library="freya-layout" />
|
||||
</h:link>
|
||||
</div>
|
||||
|
||||
<ui:include src="./menu.xhtml" />
|
||||
|
||||
<div class="layout-topbar-right">
|
||||
<ul class="layout-topbar-actions">
|
||||
<li class="topbar-item search-item">
|
||||
<a href="#">
|
||||
<i class="topbar-icon pi pi-search"/>
|
||||
</a>
|
||||
<h:form>
|
||||
<h:panelGroup styleClass="search-input-wrapper">
|
||||
<p:inputText placeholder="Search..." />
|
||||
<i class="pi pi-search"/>
|
||||
</h:panelGroup>
|
||||
</h:form>
|
||||
<ul>
|
||||
<h:form onsubmit="return false;">
|
||||
<h:panelGroup styleClass="search-input-wrapper">
|
||||
<p:inputText placeholder="Search..." />
|
||||
<i class="pi pi-search"/>
|
||||
</h:panelGroup>
|
||||
</h:form>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="topbar-item notifications-item">
|
||||
<a href="/notifications">
|
||||
<i class="topbar-icon pi pi-bell"/>
|
||||
<p:outputPanel rendered="#{userSession.nombreNotificationsNonLues > 0}">
|
||||
<span class="ui-badge">#{userSession.nombreNotificationsNonLues}</span>
|
||||
</p:outputPanel>
|
||||
</a>
|
||||
</li>
|
||||
<li class="topbar-item messages-item">
|
||||
<a href="/messages">
|
||||
<i class="topbar-icon pi pi-envelope"/>
|
||||
<p:outputPanel rendered="#{userSession.nombreMessagesNonLus > 0}">
|
||||
<span class="ui-badge">#{userSession.nombreMessagesNonLus}</span>
|
||||
</p:outputPanel>
|
||||
</a>
|
||||
</li>
|
||||
<li class="topbar-item user-profile">
|
||||
<a href="#">
|
||||
<p:graphicImage name="images/avatar-profilemenu.png" library="freya-layout" />
|
||||
</a>
|
||||
<ul>
|
||||
<li class="user-profile-header">
|
||||
<div class="user-info">
|
||||
<p:graphicImage name="images/avatar-profilemenu.png" library="freya-layout" styleClass="profile-avatar-small" />
|
||||
<div class="user-details">
|
||||
<span class="user-name">#{userSession.nomComplet}</span>
|
||||
<span class="user-role">#{userSession.role}</span>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li class="user-profile-divider">
|
||||
<hr/>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/profile">
|
||||
<i class="pi pi-user"></i>
|
||||
<span>Profile</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#">
|
||||
<i class="pi pi-cog"></i>
|
||||
<span>Settings</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/messages">
|
||||
<i class="pi pi-envelope"></i>
|
||||
<span>Messages</span>
|
||||
<p:outputPanel rendered="#{userSession.nombreMessagesNonLus > 0}">
|
||||
<span class="ui-badge">#{userSession.nombreMessagesNonLus}</span>
|
||||
</p:outputPanel>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/notifications">
|
||||
<i class="pi pi-bell"></i>
|
||||
<span>Notifications</span>
|
||||
<p:outputPanel rendered="#{userSession.nombreNotificationsNonLues > 0}">
|
||||
<span class="ui-badge">#{userSession.nombreNotificationsNonLues}</span>
|
||||
</p:outputPanel>
|
||||
</a>
|
||||
</li>
|
||||
<li class="user-profile-divider">
|
||||
<hr/>
|
||||
</li>
|
||||
<li>
|
||||
<h:form>
|
||||
<h:commandLink action="#{userSession.deconnecter()}" styleClass="logout-link">
|
||||
<i class="pi pi-sign-out"></i>
|
||||
<span>Logout</span>
|
||||
</h:commandLink>
|
||||
</h:form>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<a href="#" class="layout-rightpanel-button">
|
||||
<i class="pi pi-arrow-left"/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</ui:composition>
|
||||
|
||||
103
target/classes/META-INF/resources/chantiers.xhtml
Normal file
103
target/classes/META-INF/resources/chantiers.xhtml
Normal file
@@ -0,0 +1,103 @@
|
||||
<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">Chantiers - BTP Xpress</ui:define>
|
||||
|
||||
<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>Gestion des Chantiers</h1>
|
||||
<p:commandButton value="Nouveau chantier" icon="pi pi-plus"
|
||||
action="#{chantiersView.createNew()}"
|
||||
styleClass="ui-button-primary"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<ui:include src="/WEB-INF/components/liste-filters.xhtml">
|
||||
<ui:param name="formId" value="filtresForm"/>
|
||||
<ui:param name="viewBean" value="#{chantiersView}"/>
|
||||
<ui:param name="tableId" value="chantiersTable"/>
|
||||
<ui:define name="filter-fields">
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-4">
|
||||
<h:outputLabel for="filtreNom" value="Nom du chantier"/>
|
||||
<p:inputText id="filtreNom" value="#{chantiersView.filtreNom}"
|
||||
placeholder="Rechercher par nom..." style="width: 100%;"/>
|
||||
</div>
|
||||
<div class="col-12 md:col-4">
|
||||
<h:outputLabel for="filtreClient" value="Client"/>
|
||||
<p:inputText id="filtreClient" value="#{chantiersView.filtreClient}"
|
||||
placeholder="Rechercher par client..." style="width: 100%;"/>
|
||||
</div>
|
||||
<div class="col-12 md:col-4">
|
||||
<h:outputLabel for="filtreStatut" value="Statut"/>
|
||||
<p:selectOneMenu id="filtreStatut" value="#{chantiersView.filtreStatut}" style="width: 100%;">
|
||||
<f:selectItem itemLabel="Tous" itemValue="TOUS"/>
|
||||
<f:selectItem itemLabel="En cours" itemValue="EN_COURS"/>
|
||||
<f:selectItem itemLabel="Terminés" itemValue="TERMINE"/>
|
||||
<f:selectItem itemLabel="Planifiés" itemValue="PLANIFIE"/>
|
||||
</p:selectOneMenu>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:include>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<ui:include src="/WEB-INF/components/liste-table.xhtml">
|
||||
<ui:param name="formId" value="chantiersForm"/>
|
||||
<ui:param name="tableId" value="chantiersTable"/>
|
||||
<ui:param name="viewBean" value="#{chantiersView}"/>
|
||||
<ui:param name="var" value="chantier"/>
|
||||
<ui:param name="title" value="Liste des chantiers"/>
|
||||
<ui:param name="createPath" value="/chantiers/nouveau"/>
|
||||
<ui:define name="columns">
|
||||
<p:column headerText="Nom" sortBy="#{chantier.nom}">
|
||||
<h:outputText value="#{chantier.nom}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Client" sortBy="#{chantier.client}">
|
||||
<h:outputText value="#{chantier.client}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Adresse">
|
||||
<h:outputText value="#{chantier.adresse}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Date début" sortBy="#{chantier.dateDebut}">
|
||||
<h:outputText value="#{chantier.dateDebut}">
|
||||
<f:convertDateTime pattern="dd/MM/yyyy"/>
|
||||
</h:outputText>
|
||||
</p:column>
|
||||
<p:column headerText="Statut" sortBy="#{chantier.statut}">
|
||||
<p:tag value="#{chantier.statut}"
|
||||
severity="#{chantier.statut == 'TERMINE' ? 'success' : (chantier.statut == 'EN_COURS' ? 'info' : 'warning')}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Avancement">
|
||||
<p:progressBar value="#{chantier.avancement}" showValue="true"
|
||||
styleClass="ui-progressbar-success"/>
|
||||
</p:column>
|
||||
<p:column headerText="Budget">
|
||||
<h:outputText value="#{chantier.budget}">
|
||||
<f:converter converterId="fcfaConverter"/>
|
||||
</h:outputText>
|
||||
<h:outputText value=" Fcfa" style="margin-left: 4px;"/>
|
||||
</p:column>
|
||||
<p:column headerText="Actions" style="width: 150px;">
|
||||
<p:commandButton icon="pi pi-eye" title="Voir les détails"
|
||||
styleClass="ui-button-text"
|
||||
action="#{chantiersView.viewDetails(chantier.id)}"/>
|
||||
</p:column>
|
||||
</ui:define>
|
||||
</ui:include>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
89
target/classes/META-INF/resources/chantiers/details.xhtml
Normal file
89
target/classes/META-INF/resources/chantiers/details.xhtml
Normal file
@@ -0,0 +1,89 @@
|
||||
<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>
|
||||
|
||||
97
target/classes/META-INF/resources/chantiers/en-cours.xhtml
Normal file
97
target/classes/META-INF/resources/chantiers/en-cours.xhtml
Normal file
@@ -0,0 +1,97 @@
|
||||
<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">Chantiers en cours - BTP Xpress</ui:define>
|
||||
|
||||
<f:metadata>
|
||||
<f:event type="preRenderView" listener="#{chantiersView.setFiltreStatut('EN_COURS')}"/>
|
||||
<f:event type="preRenderView" listener="#{chantiersView.init()}"/>
|
||||
</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>Chantiers en cours</h1>
|
||||
<p:commandButton value="Nouveau chantier" icon="pi pi-plus"
|
||||
action="#{chantiersView.createNew()}"
|
||||
styleClass="ui-button-primary"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<ui:include src="/WEB-INF/components/liste-filters.xhtml">
|
||||
<ui:param name="formId" value="filtresForm"/>
|
||||
<ui:param name="viewBean" value="#{chantiersView}"/>
|
||||
<ui:param name="tableId" value="chantiersTable"/>
|
||||
<ui:define name="filter-fields">
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-6">
|
||||
<h:outputLabel for="filtreNom" value="Nom du chantier"/>
|
||||
<p:inputText id="filtreNom" value="#{chantiersView.filtreNom}"
|
||||
placeholder="Rechercher par nom..." style="width: 100%;"/>
|
||||
</div>
|
||||
<div class="col-12 md:col-6">
|
||||
<h:outputLabel for="filtreClient" value="Client"/>
|
||||
<p:inputText id="filtreClient" value="#{chantiersView.filtreClient}"
|
||||
placeholder="Rechercher par client..." style="width: 100%;"/>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:include>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<ui:include src="/WEB-INF/components/liste-table.xhtml">
|
||||
<ui:param name="formId" value="chantiersForm"/>
|
||||
<ui:param name="tableId" value="chantiersTable"/>
|
||||
<ui:param name="viewBean" value="#{chantiersView}"/>
|
||||
<ui:param name="var" value="chantier"/>
|
||||
<ui:param name="title" value="Liste des chantiers en cours"/>
|
||||
<ui:param name="createPath" value="/chantiers/nouveau"/>
|
||||
<ui:define name="columns">
|
||||
<p:column headerText="Nom" sortBy="#{chantier.nom}">
|
||||
<h:outputText value="#{chantier.nom}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Client" sortBy="#{chantier.client}">
|
||||
<h:outputText value="#{chantier.client}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Adresse">
|
||||
<h:outputText value="#{chantier.adresse}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Date début" sortBy="#{chantier.dateDebut}">
|
||||
<h:outputText value="#{chantier.dateDebut}">
|
||||
<f:convertDateTime pattern="dd/MM/yyyy"/>
|
||||
</h:outputText>
|
||||
</p:column>
|
||||
<p:column headerText="Avancement">
|
||||
<p:progressBar value="#{chantier.avancement}"
|
||||
showValue="true"
|
||||
styleClass="ui-progressbar-success"/>
|
||||
</p:column>
|
||||
<p:column headerText="Budget">
|
||||
<h:outputText value="#{chantier.budget}">
|
||||
<f:converter converterId="fcfaConverter"/>
|
||||
</h:outputText>
|
||||
<h:outputText value=" Fcfa"/>
|
||||
</p:column>
|
||||
<p:column headerText="Actions" style="width: 150px;">
|
||||
<p:commandButton icon="pi pi-eye" title="Voir les détails"
|
||||
styleClass="ui-button-text"
|
||||
action="#{chantiersView.viewDetails(chantier.id)}"/>
|
||||
</p:column>
|
||||
</ui:define>
|
||||
</ui:include>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
85
target/classes/META-INF/resources/chantiers/nouveau.xhtml
Normal file
85
target/classes/META-INF/resources/chantiers/nouveau.xhtml
Normal file
@@ -0,0 +1,85 @@
|
||||
<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">Nouveau chantier - BTP Xpress</ui:define>
|
||||
|
||||
<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>Créer un nouveau chantier</h1>
|
||||
<p:commandButton value="Retour" icon="pi pi-arrow-left"
|
||||
outcome="/chantiers"
|
||||
styleClass="ui-button-secondary"/>
|
||||
</div>
|
||||
|
||||
<h:form id="nouveauChantierForm">
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-6">
|
||||
<h:outputLabel for="nom" value="Nom du chantier *"/>
|
||||
<p:inputText id="nom" value="#{chantiersView.selectedItem.nom}"
|
||||
required="true" requiredMessage="Le nom est obligatoire"
|
||||
style="width: 100%;"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-6">
|
||||
<h:outputLabel for="client" value="Client *"/>
|
||||
<p:inputText id="client" value="#{chantiersView.selectedItem.client}"
|
||||
required="true" requiredMessage="Le client est obligatoire"
|
||||
style="width: 100%;"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<h:outputLabel for="adresse" value="Adresse"/>
|
||||
<p:inputTextarea id="adresse" value="#{chantiersView.selectedItem.adresse}"
|
||||
rows="3" style="width: 100%;"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-4">
|
||||
<h:outputLabel for="dateDebut" value="Date de début"/>
|
||||
<p:calendar id="dateDebut" value="#{chantiersView.selectedItem.dateDebut}"
|
||||
pattern="dd/MM/yyyy" locale="fr"
|
||||
showOn="button" style="width: 100%;"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-4">
|
||||
<h:outputLabel for="dateFinPrevue" value="Date de fin prévue"/>
|
||||
<p:calendar id="dateFinPrevue" value="#{chantiersView.selectedItem.dateFinPrevue}"
|
||||
pattern="dd/MM/yyyy" locale="fr"
|
||||
showOn="button" style="width: 100%;"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-4">
|
||||
<h:outputLabel for="budget" value="Budget (Fcfa)"/>
|
||||
<p:inputNumber id="budget" value="#{chantiersView.selectedItem.budget}"
|
||||
decimalPlaces="0"
|
||||
prefix="Fcfa "
|
||||
style="width: 100%;"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<div class="flex justify-content-end gap-2 mt-3">
|
||||
<p:commandButton value="Annuler" icon="pi pi-times"
|
||||
outcome="/chantiers"
|
||||
styleClass="ui-button-secondary"/>
|
||||
<p:commandButton value="Enregistrer" icon="pi pi-check"
|
||||
action="#{chantiersView.saveNew()}"
|
||||
update="@form"
|
||||
styleClass="ui-button-primary"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</h:form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
94
target/classes/META-INF/resources/chantiers/planifies.xhtml
Normal file
94
target/classes/META-INF/resources/chantiers/planifies.xhtml
Normal file
@@ -0,0 +1,94 @@
|
||||
<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">Chantiers planifiés - BTP Xpress</ui:define>
|
||||
|
||||
<f:metadata>
|
||||
<f:event type="preRenderView" listener="#{chantiersView.setFiltreStatut('PLANIFIE')}"/>
|
||||
<f:event type="preRenderView" listener="#{chantiersView.init()}"/>
|
||||
</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>Chantiers planifiés</h1>
|
||||
<p:commandButton value="Nouveau chantier" icon="pi pi-plus"
|
||||
action="#{chantiersView.createNew()}"
|
||||
styleClass="ui-button-primary"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<ui:include src="/WEB-INF/components/liste-filters.xhtml">
|
||||
<ui:param name="formId" value="filtresForm"/>
|
||||
<ui:param name="viewBean" value="#{chantiersView}"/>
|
||||
<ui:param name="tableId" value="chantiersTable"/>
|
||||
<ui:define name="filter-fields">
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-6">
|
||||
<h:outputLabel for="filtreNom" value="Nom du chantier"/>
|
||||
<p:inputText id="filtreNom" value="#{chantiersView.filtreNom}"
|
||||
placeholder="Rechercher par nom..." style="width: 100%;"/>
|
||||
</div>
|
||||
<div class="col-12 md:col-6">
|
||||
<h:outputLabel for="filtreClient" value="Client"/>
|
||||
<p:inputText id="filtreClient" value="#{chantiersView.filtreClient}"
|
||||
placeholder="Rechercher par client..." style="width: 100%;"/>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:include>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<ui:include src="/WEB-INF/components/liste-table.xhtml">
|
||||
<ui:param name="formId" value="chantiersForm"/>
|
||||
<ui:param name="tableId" value="chantiersTable"/>
|
||||
<ui:param name="viewBean" value="#{chantiersView}"/>
|
||||
<ui:param name="var" value="chantier"/>
|
||||
<ui:param name="title" value="Liste des chantiers planifiés"/>
|
||||
<ui:param name="createPath" value="/chantiers/nouveau"/>
|
||||
<ui:define name="columns">
|
||||
<p:column headerText="Nom" sortBy="#{chantier.nom}">
|
||||
<h:outputText value="#{chantier.nom}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Client" sortBy="#{chantier.client}">
|
||||
<h:outputText value="#{chantier.client}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Date début prévue" sortBy="#{chantier.dateDebut}">
|
||||
<h:outputText value="#{chantier.dateDebut}">
|
||||
<f:convertDateTime pattern="dd/MM/yyyy"/>
|
||||
</h:outputText>
|
||||
</p:column>
|
||||
<p:column headerText="Date fin prévue" sortBy="#{chantier.dateFinPrevue}">
|
||||
<h:outputText value="#{chantier.dateFinPrevue}">
|
||||
<f:convertDateTime pattern="dd/MM/yyyy"/>
|
||||
</h:outputText>
|
||||
</p:column>
|
||||
<p:column headerText="Budget">
|
||||
<h:outputText value="#{chantier.budget}">
|
||||
<f:converter converterId="fcfaConverter"/>
|
||||
</h:outputText>
|
||||
<h:outputText value=" Fcfa"/>
|
||||
</p:column>
|
||||
<p:column headerText="Actions" style="width: 150px;">
|
||||
<p:commandButton icon="pi pi-eye" title="Voir les détails"
|
||||
styleClass="ui-button-text"
|
||||
action="#{chantiersView.viewDetails(chantier.id)}"/>
|
||||
</p:column>
|
||||
</ui:define>
|
||||
</ui:include>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
94
target/classes/META-INF/resources/chantiers/termines.xhtml
Normal file
94
target/classes/META-INF/resources/chantiers/termines.xhtml
Normal file
@@ -0,0 +1,94 @@
|
||||
<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">Chantiers terminés - BTP Xpress</ui:define>
|
||||
|
||||
<f:metadata>
|
||||
<f:event type="preRenderView" listener="#{chantiersView.setFiltreStatut('TERMINE')}"/>
|
||||
<f:event type="preRenderView" listener="#{chantiersView.init()}"/>
|
||||
</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>Chantiers terminés</h1>
|
||||
<p:commandButton value="Nouveau chantier" icon="pi pi-plus"
|
||||
action="#{chantiersView.createNew()}"
|
||||
styleClass="ui-button-primary"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<ui:include src="/WEB-INF/components/liste-filters.xhtml">
|
||||
<ui:param name="formId" value="filtresForm"/>
|
||||
<ui:param name="viewBean" value="#{chantiersView}"/>
|
||||
<ui:param name="tableId" value="chantiersTable"/>
|
||||
<ui:define name="filter-fields">
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-6">
|
||||
<h:outputLabel for="filtreNom" value="Nom du chantier"/>
|
||||
<p:inputText id="filtreNom" value="#{chantiersView.filtreNom}"
|
||||
placeholder="Rechercher par nom..." style="width: 100%;"/>
|
||||
</div>
|
||||
<div class="col-12 md:col-6">
|
||||
<h:outputLabel for="filtreClient" value="Client"/>
|
||||
<p:inputText id="filtreClient" value="#{chantiersView.filtreClient}"
|
||||
placeholder="Rechercher par client..." style="width: 100%;"/>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:include>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<ui:include src="/WEB-INF/components/liste-table.xhtml">
|
||||
<ui:param name="formId" value="chantiersForm"/>
|
||||
<ui:param name="tableId" value="chantiersTable"/>
|
||||
<ui:param name="viewBean" value="#{chantiersView}"/>
|
||||
<ui:param name="var" value="chantier"/>
|
||||
<ui:param name="title" value="Liste des chantiers terminés"/>
|
||||
<ui:param name="createPath" value="/chantiers/nouveau"/>
|
||||
<ui:define name="columns">
|
||||
<p:column headerText="Nom" sortBy="#{chantier.nom}">
|
||||
<h:outputText value="#{chantier.nom}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Client" sortBy="#{chantier.client}">
|
||||
<h:outputText value="#{chantier.client}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Date début" sortBy="#{chantier.dateDebut}">
|
||||
<h:outputText value="#{chantier.dateDebut}">
|
||||
<f:convertDateTime pattern="dd/MM/yyyy"/>
|
||||
</h:outputText>
|
||||
</p:column>
|
||||
<p:column headerText="Date fin prévue" sortBy="#{chantier.dateFinPrevue}">
|
||||
<h:outputText value="#{chantier.dateFinPrevue}">
|
||||
<f:convertDateTime pattern="dd/MM/yyyy"/>
|
||||
</h:outputText>
|
||||
</p:column>
|
||||
<p:column headerText="Budget">
|
||||
<h:outputText value="#{chantier.budget}">
|
||||
<f:converter converterId="fcfaConverter"/>
|
||||
</h:outputText>
|
||||
<h:outputText value=" Fcfa"/>
|
||||
</p:column>
|
||||
<p:column headerText="Actions" style="width: 150px;">
|
||||
<p:commandButton icon="pi pi-eye" title="Voir les détails"
|
||||
styleClass="ui-button-text"
|
||||
action="#{chantiersView.viewDetails(chantier.id)}"/>
|
||||
</p:column>
|
||||
</ui:define>
|
||||
</ui:include>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
95
target/classes/META-INF/resources/clients.xhtml
Normal file
95
target/classes/META-INF/resources/clients.xhtml
Normal file
@@ -0,0 +1,95 @@
|
||||
<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">Clients - BTP Xpress</ui:define>
|
||||
|
||||
<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>Gestion des Clients</h1>
|
||||
<p:commandButton value="Nouveau client" icon="pi pi-user-plus"
|
||||
action="#{clientsView.createNew()}"
|
||||
styleClass="ui-button-primary"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<ui:include src="/WEB-INF/components/liste-filters.xhtml">
|
||||
<ui:param name="formId" value="filtresForm"/>
|
||||
<ui:param name="viewBean" value="#{clientsView}"/>
|
||||
<ui:param name="tableId" value="clientsTable"/>
|
||||
<ui:define name="filter-fields">
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-4">
|
||||
<h:outputLabel for="filtreNom" value="Nom / Raison sociale"/>
|
||||
<p:inputText id="filtreNom" value="#{clientsView.filtreNom}"
|
||||
placeholder="Rechercher par nom..." style="width: 100%;"/>
|
||||
</div>
|
||||
<div class="col-12 md:col-4">
|
||||
<h:outputLabel for="filtreEmail" value="Email"/>
|
||||
<p:inputText id="filtreEmail" value="#{clientsView.filtreEmail}"
|
||||
placeholder="Rechercher par email..." style="width: 100%;"/>
|
||||
</div>
|
||||
<div class="col-12 md:col-4">
|
||||
<h:outputLabel for="filtreVille" value="Ville"/>
|
||||
<p:inputText id="filtreVille" value="#{clientsView.filtreVille}"
|
||||
placeholder="Rechercher par ville..." style="width: 100%;"/>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:include>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<ui:include src="/WEB-INF/components/liste-table.xhtml">
|
||||
<ui:param name="formId" value="clientsForm"/>
|
||||
<ui:param name="tableId" value="clientsTable"/>
|
||||
<ui:param name="viewBean" value="#{clientsView}"/>
|
||||
<ui:param name="var" value="client"/>
|
||||
<ui:param name="title" value="Liste des clients"/>
|
||||
<ui:param name="createPath" value="/clients/nouveau"/>
|
||||
<ui:define name="columns">
|
||||
<p:column headerText="Raison sociale" sortBy="#{client.raisonSociale}">
|
||||
<h:outputText value="#{client.raisonSociale}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Contact" sortBy="#{client.nomContact}">
|
||||
<h:outputText value="#{client.nomContact}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Email" sortBy="#{client.email}">
|
||||
<h:outputText value="#{client.email}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Téléphone">
|
||||
<h:outputText value="#{client.telephone}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Ville" sortBy="#{client.ville}">
|
||||
<h:outputText value="#{client.ville}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Chantiers">
|
||||
<p:tag value="#{client.nombreChantiers}" severity="info"/>
|
||||
</p:column>
|
||||
<p:column headerText="Chiffre d'affaires">
|
||||
<h:outputText value="#{client.chiffreAffairesTotal}">
|
||||
<f:converter converterId="fcfaConverter"/>
|
||||
</h:outputText>
|
||||
<h:outputText value=" Fcfa"/>
|
||||
</p:column>
|
||||
<p:column headerText="Actions" style="width: 150px;">
|
||||
<p:commandButton icon="pi pi-eye" title="Voir les détails"
|
||||
styleClass="ui-button-text"
|
||||
action="#{clientsView.viewDetails(client.id)}"/>
|
||||
</p:column>
|
||||
</ui:define>
|
||||
</ui:include>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
85
target/classes/META-INF/resources/clients/details.xhtml
Normal file
85
target/classes/META-INF/resources/clients/details.xhtml
Normal file
@@ -0,0 +1,85 @@
|
||||
<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 client - BTP Xpress</ui:define>
|
||||
|
||||
<f:metadata>
|
||||
<f:viewParam name="id" value="#{clientsView.clientId}"/>
|
||||
<f:event type="preRenderView" listener="#{clientsView.loadClientById()}"/>
|
||||
</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 client</h1>
|
||||
<p:commandButton value="Retour" icon="pi pi-arrow-left"
|
||||
outcome="/clients"
|
||||
styleClass="ui-button-secondary"/>
|
||||
</div>
|
||||
|
||||
<h:form id="detailsClientForm">
|
||||
<div class="grid" rendered="#{not empty clientsView.selectedItem}">
|
||||
<div class="col-12">
|
||||
<p:panel header="Informations générales">
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-6">
|
||||
<p><strong>Raison sociale :</strong> #{clientsView.selectedItem.raisonSociale}</p>
|
||||
</div>
|
||||
<div class="col-12 md:col-6">
|
||||
<p><strong>Nom du contact :</strong> #{clientsView.selectedItem.nomContact}</p>
|
||||
</div>
|
||||
<div class="col-12 md:col-6">
|
||||
<p><strong>Email :</strong> #{clientsView.selectedItem.email}</p>
|
||||
</div>
|
||||
<div class="col-12 md:col-6">
|
||||
<p><strong>Téléphone :</strong> #{clientsView.selectedItem.telephone}</p>
|
||||
</div>
|
||||
</div>
|
||||
</p:panel>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-6">
|
||||
<p:panel header="Adresse">
|
||||
<p><strong>Adresse :</strong> #{clientsView.selectedItem.adresse}</p>
|
||||
<p><strong>Ville :</strong> #{clientsView.selectedItem.ville}</p>
|
||||
<p><strong>Code postal :</strong> #{clientsView.selectedItem.codePostal}</p>
|
||||
<p><strong>Pays :</strong> #{clientsView.selectedItem.pays}</p>
|
||||
</p:panel>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-6">
|
||||
<p:panel header="Statistiques">
|
||||
<p><strong>Nombre de chantiers :</strong>
|
||||
<p:tag value="#{clientsView.selectedItem.nombreChantiers}" severity="info"/>
|
||||
</p>
|
||||
<p><strong>Chiffre d'affaires total :</strong>
|
||||
<h:outputText value="#{clientsView.selectedItem.chiffreAffairesTotal}">
|
||||
<f:converter converterId="fcfaConverter"/>
|
||||
</h:outputText>
|
||||
<h:outputText value=" Fcfa"/>
|
||||
</p>
|
||||
<p><strong>Date de création :</strong>
|
||||
<h:outputText value="#{clientsView.selectedItem.dateCreation}">
|
||||
<f:convertDateTime pattern="dd/MM/yyyy HH:mm"/>
|
||||
</h:outputText>
|
||||
</p>
|
||||
</p:panel>
|
||||
</div>
|
||||
</div>
|
||||
<p:message rendered="#{empty clientsView.selectedItem}" severity="warn"
|
||||
summary="Client introuvable"/>
|
||||
</h:form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
95
target/classes/META-INF/resources/clients/nouveau.xhtml
Normal file
95
target/classes/META-INF/resources/clients/nouveau.xhtml
Normal file
@@ -0,0 +1,95 @@
|
||||
<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">Nouveau client - BTP Xpress</ui:define>
|
||||
|
||||
<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>Créer un nouveau client</h1>
|
||||
<p:commandButton value="Retour" icon="pi pi-arrow-left"
|
||||
outcome="/clients"
|
||||
styleClass="ui-button-secondary"/>
|
||||
</div>
|
||||
|
||||
<h:form id="nouveauClientForm">
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-6">
|
||||
<h:outputLabel for="raisonSociale" value="Raison sociale *"/>
|
||||
<p:inputText id="raisonSociale" value="#{clientsView.selectedItem.raisonSociale}"
|
||||
required="true" requiredMessage="La raison sociale est obligatoire"
|
||||
style="width: 100%;"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-6">
|
||||
<h:outputLabel for="nomContact" value="Nom du contact *"/>
|
||||
<p:inputText id="nomContact" value="#{clientsView.selectedItem.nomContact}"
|
||||
required="true" requiredMessage="Le nom du contact est obligatoire"
|
||||
style="width: 100%;"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-6">
|
||||
<h:outputLabel for="email" value="Email *"/>
|
||||
<p:inputText id="email" value="#{clientsView.selectedItem.email}"
|
||||
required="true" requiredMessage="L'email est obligatoire"
|
||||
style="width: 100%;"/>
|
||||
<p:message for="email"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-6">
|
||||
<h:outputLabel for="telephone" value="Téléphone"/>
|
||||
<p:inputText id="telephone" value="#{clientsView.selectedItem.telephone}"
|
||||
style="width: 100%;"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<h:outputLabel for="adresse" value="Adresse"/>
|
||||
<p:inputTextarea id="adresse" value="#{clientsView.selectedItem.adresse}"
|
||||
rows="3" style="width: 100%;"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-4">
|
||||
<h:outputLabel for="ville" value="Ville"/>
|
||||
<p:inputText id="ville" value="#{clientsView.selectedItem.ville}"
|
||||
style="width: 100%;"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-4">
|
||||
<h:outputLabel for="codePostal" value="Code postal"/>
|
||||
<p:inputText id="codePostal" value="#{clientsView.selectedItem.codePostal}"
|
||||
style="width: 100%;"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12 md:col-4">
|
||||
<h:outputLabel for="pays" value="Pays"/>
|
||||
<p:inputText id="pays" value="#{clientsView.selectedItem.pays}"
|
||||
value="France" style="width: 100%;"/>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<div class="flex justify-content-end gap-2 mt-3">
|
||||
<p:commandButton value="Annuler" icon="pi pi-times"
|
||||
outcome="/clients"
|
||||
styleClass="ui-button-secondary"/>
|
||||
<p:commandButton value="Enregistrer" icon="pi pi-check"
|
||||
action="#{clientsView.saveNew()}"
|
||||
update="@form"
|
||||
styleClass="ui-button-primary"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</h:form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
96
target/classes/META-INF/resources/clients/recherche.xhtml
Normal file
96
target/classes/META-INF/resources/clients/recherche.xhtml
Normal file
@@ -0,0 +1,96 @@
|
||||
<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">Recherche de clients - BTP Xpress</ui:define>
|
||||
|
||||
<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>Recherche avancée de clients</h1>
|
||||
<p:commandButton value="Retour" icon="pi pi-arrow-left"
|
||||
outcome="/clients"
|
||||
styleClass="ui-button-secondary"/>
|
||||
</div>
|
||||
|
||||
<h:form id="rechercheClientForm">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<p:panel header="Critères de recherche">
|
||||
<div class="grid">
|
||||
<div class="col-12 md:col-4">
|
||||
<h:outputLabel for="rechercheNom" value="Nom / Raison sociale"/>
|
||||
<p:inputText id="rechercheNom" value="#{clientsView.filtreNom}"
|
||||
placeholder="Rechercher..." style="width: 100%;"/>
|
||||
</div>
|
||||
<div class="col-12 md:col-4">
|
||||
<h:outputLabel for="rechercheEmail" value="Email"/>
|
||||
<p:inputText id="rechercheEmail" value="#{clientsView.filtreEmail}"
|
||||
placeholder="Rechercher..." style="width: 100%;"/>
|
||||
</div>
|
||||
<div class="col-12 md:col-4">
|
||||
<h:outputLabel for="rechercheVille" value="Ville"/>
|
||||
<p:inputText id="rechercheVille" value="#{clientsView.filtreVille}"
|
||||
placeholder="Rechercher..." style="width: 100%;"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex justify-content-end gap-2 mt-3">
|
||||
<p:commandButton value="Réinitialiser" icon="pi pi-refresh"
|
||||
action="#{clientsView.resetFilters()}"
|
||||
update="@form"
|
||||
styleClass="ui-button-secondary"/>
|
||||
<p:commandButton value="Rechercher" icon="pi pi-search"
|
||||
action="#{clientsView.search()}"
|
||||
update="@form,clientsTable"
|
||||
styleClass="ui-button-primary"/>
|
||||
</div>
|
||||
</p:panel>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<ui:include src="/WEB-INF/components/liste-table.xhtml">
|
||||
<ui:param name="formId" value="clientsForm"/>
|
||||
<ui:param name="tableId" value="clientsTable"/>
|
||||
<ui:param name="viewBean" value="#{clientsView}"/>
|
||||
<ui:param name="var" value="client"/>
|
||||
<ui:param name="title" value="Résultats de recherche"/>
|
||||
<ui:param name="createPath" value=""/>
|
||||
<ui:define name="columns">
|
||||
<p:column headerText="Raison sociale" sortBy="#{client.raisonSociale}">
|
||||
<h:outputText value="#{client.raisonSociale}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Contact" sortBy="#{client.nomContact}">
|
||||
<h:outputText value="#{client.nomContact}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Email" sortBy="#{client.email}">
|
||||
<h:outputText value="#{client.email}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Téléphone">
|
||||
<h:outputText value="#{client.telephone}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Ville" sortBy="#{client.ville}">
|
||||
<h:outputText value="#{client.ville}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Actions" style="width: 150px;">
|
||||
<p:commandButton icon="pi pi-eye" title="Voir les détails"
|
||||
styleClass="ui-button-text"
|
||||
action="#{clientsView.viewDetails(client.id)}"/>
|
||||
</p:column>
|
||||
</ui:define>
|
||||
</ui:include>
|
||||
</div>
|
||||
</div>
|
||||
</h:form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
330
target/classes/META-INF/resources/dashboard.xhtml
Normal file
330
target/classes/META-INF/resources/dashboard.xhtml
Normal file
@@ -0,0 +1,330 @@
|
||||
<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">Tableau de bord - BTP Xpress</ui:define>
|
||||
|
||||
<ui:define name="head">
|
||||
<h:outputScript name="chartjs/chart.js" library="demo" />
|
||||
<script>
|
||||
//<![CDATA[
|
||||
$(function(){
|
||||
var ctx1 = document.getElementById("chartChantiers");
|
||||
if (ctx1) {
|
||||
var chartChantiers = new Chart(ctx1.getContext('2d'), {
|
||||
type: 'line',
|
||||
data: {
|
||||
labels: ['Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Juin'],
|
||||
datasets: [{
|
||||
label: 'Chantiers',
|
||||
data: [12, 19, 15, 25, 22, 28],
|
||||
borderColor: '#464DF2',
|
||||
borderWidth: 3,
|
||||
fill: true,
|
||||
backgroundColor: 'rgba(70, 77, 242, 0.1)',
|
||||
tension: 0.4
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
maintainAspectRatio: false,
|
||||
plugins: { legend: { display: false } },
|
||||
scales: { y: { beginAtZero: true } }
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
//]]>
|
||||
</script>
|
||||
</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<div class="layout-dashboard">
|
||||
<div class="grid">
|
||||
|
||||
<!-- KPI Cards - Vue d'ensemble -->
|
||||
<div class="col-12">
|
||||
<div class="grid" style="margin: -1rem;">
|
||||
<div class="col-12 md:col-3">
|
||||
<div class="card overview-box white">
|
||||
<div class="overview-info">
|
||||
<h6>Chantiers actifs</h6>
|
||||
<h1>#{dashboardView.chantiersActifs}</h1>
|
||||
<p class="subtitle">Sur #{dashboardView.nombreChantiers} au total</p>
|
||||
</div>
|
||||
<i class="pi pi-building"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 md:col-3">
|
||||
<div class="card overview-box blue">
|
||||
<div class="overview-info">
|
||||
<h6>Clients</h6>
|
||||
<h1>#{dashboardView.nombreClients}</h1>
|
||||
<p class="subtitle">Actifs</p>
|
||||
</div>
|
||||
<i class="pi pi-users"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 md:col-3">
|
||||
<div class="card overview-box orange">
|
||||
<div class="overview-info">
|
||||
<h6>Devis en attente</h6>
|
||||
<h1>#{dashboardView.nombreDevis}</h1>
|
||||
<p class="subtitle">À traiter</p>
|
||||
</div>
|
||||
<i class="pi pi-file-edit"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 md:col-3">
|
||||
<div class="card overview-box red">
|
||||
<div class="overview-info">
|
||||
<h6>Factures impayées</h6>
|
||||
<h1>#{dashboardView.facturesImpayees}</h1>
|
||||
<p class="subtitle">Attention requise</p>
|
||||
</div>
|
||||
<i class="pi pi-exclamation-triangle"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Alertes critiques -->
|
||||
<p:outputPanel rendered="#{dashboardView.alerteCritique}" styleClass="col-12">
|
||||
<div class="card" style="background: #fff3cd; border-left: 4px solid #ffc107;">
|
||||
<div class="grid align-items-center">
|
||||
<div class="col">
|
||||
<h5 style="margin: 0; color: #856404;">
|
||||
<i class="pi pi-exclamation-triangle"></i>
|
||||
Alertes critiques : #{dashboardView.totalAlertes}
|
||||
</h5>
|
||||
<p style="margin: 0.5rem 0 0 0; color: #856404;">
|
||||
Des actions nécessitent votre attention immédiate
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<p:commandButton value="Voir les alertes" icon="pi pi-bell"
|
||||
outcome="/dashboard/alertes"
|
||||
styleClass="ui-button-warning"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</p:outputPanel>
|
||||
|
||||
<!-- Graphiques et métriques financières -->
|
||||
<div class="col-12 lg:col-8">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h6>Évolution des chantiers</h6>
|
||||
<p class="subtitle">Sur 6 mois</p>
|
||||
</div>
|
||||
</div>
|
||||
<canvas id="chartChantiers" style="max-height: 300px;"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 lg:col-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h6>Chiffre d'affaires</h6>
|
||||
<p class="subtitle">Ce mois</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="statistic-item">
|
||||
<h1 style="margin: 0;">
|
||||
<h:outputText value="#{dashboardView.chiffreAffairesMois}">
|
||||
<f:converter converterId="fcfaConverter"/>
|
||||
</h:outputText>
|
||||
<h:outputText value=" Fcfa"/>
|
||||
</h1>
|
||||
<p style="color: var(--text-color-secondary); margin-top: 0.5rem;">
|
||||
<i class="pi pi-info-circle"></i>
|
||||
Données réelles de l'API
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card" style="margin-top: 1rem;">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h6>Budget consommé</h6>
|
||||
<p class="subtitle">Sur #{dashboardView.budgetTotal} Fcfa</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="statistic-item">
|
||||
<p:progressBar value="#{dashboardView.tauxConsommationBudget}"
|
||||
showValue="true"
|
||||
styleClass="ui-progressbar-#{dashboardView.tauxConsommationBudget > 80 ? 'warn' : 'success'}"/>
|
||||
<p style="color: var(--text-color-secondary); margin-top: 0.5rem;">
|
||||
<h:outputText value="#{dashboardView.budgetConsomme}">
|
||||
<f:converter converterId="fcfaConverter"/>
|
||||
</h:outputText>
|
||||
<h:outputText value=" Fcfa consommés"/>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Ressources : Employés, Équipes, Matériel -->
|
||||
<div class="col-12 lg:col-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h6>Ressources humaines</h6>
|
||||
<p class="subtitle">Employés et équipes</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid" style="gap: 1rem;">
|
||||
<div class="col-12">
|
||||
<div class="flex align-items-center justify-content-between">
|
||||
<span><i class="pi pi-users"></i> Employés</span>
|
||||
<strong>#{dashboardView.nombreEmployes}</strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="flex align-items-center justify-content-between">
|
||||
<span><i class="pi pi-users"></i> Équipes</span>
|
||||
<strong>#{dashboardView.nombreEquipes}</strong>
|
||||
</div>
|
||||
<p:progressBar value="#{dashboardView.nombreEquipes > 0 ? (dashboardView.equipesDisponibles * 100 / dashboardView.nombreEquipes) : 0}"
|
||||
showValue="true"
|
||||
styleClass="ui-progressbar-info"/>
|
||||
<small style="color: var(--text-color-secondary);">
|
||||
#{dashboardView.equipesDisponibles} disponibles
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 lg:col-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h6>Matériel</h6>
|
||||
<p class="subtitle">Équipements disponibles</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid" style="gap: 1rem;">
|
||||
<div class="col-12">
|
||||
<div class="flex align-items-center justify-content-between">
|
||||
<span><i class="pi pi-wrench"></i> Total matériel</span>
|
||||
<strong>#{dashboardView.nombreMateriel}</strong>
|
||||
</div>
|
||||
<p:progressBar value="#{dashboardView.nombreMateriel > 0 ? (dashboardView.materielDisponible * 100 / dashboardView.nombreMateriel) : 0}"
|
||||
showValue="true"
|
||||
styleClass="ui-progressbar-success"/>
|
||||
<small style="color: var(--text-color-secondary);">
|
||||
#{dashboardView.materielDisponible} disponibles
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 lg:col-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h6>Maintenance</h6>
|
||||
<p class="subtitle">État des maintenances</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="grid" style="gap: 1rem;">
|
||||
<div class="col-12">
|
||||
<div class="flex align-items-center justify-content-between">
|
||||
<span><i class="pi pi-exclamation-circle" style="color: red;"></i> En retard</span>
|
||||
<strong style="color: red;">#{dashboardView.maintenancesEnRetard}</strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="flex align-items-center justify-content-between">
|
||||
<span><i class="pi pi-calendar"></i> Planifiées</span>
|
||||
<strong>#{dashboardView.maintenancesPlanifiees}</strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<p:commandButton value="Voir les maintenances" icon="pi pi-cog"
|
||||
outcome="/maintenance"
|
||||
styleClass="ui-button-text" style="width: 100%;"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Chantiers récents -->
|
||||
<div class="col-12 lg:col-8">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h6>Chantiers récents</h6>
|
||||
<p class="subtitle">Derniers chantiers actifs</p>
|
||||
</div>
|
||||
<p:commandButton value="Voir tout" icon="pi pi-arrow-right"
|
||||
outcome="/chantiers"
|
||||
styleClass="ui-button-text"/>
|
||||
</div>
|
||||
<p:dataTable value="#{dashboardView.chantiersRecents}" var="chantier"
|
||||
emptyMessage="Aucun chantier récent">
|
||||
<p:column headerText="Nom">
|
||||
<h:outputText value="#{chantier.nom}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Client">
|
||||
<h:outputText value="#{chantier.client}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Date de début">
|
||||
<h:outputText value="#{chantier.dateDebutFormatee}"/>
|
||||
</p:column>
|
||||
<p:column headerText="Avancement">
|
||||
<p:progressBar value="#{chantier.avancement}"
|
||||
showValue="true"
|
||||
styleClass="ui-progressbar-success"/>
|
||||
</p:column>
|
||||
<p:column headerText="Actions">
|
||||
<p:commandButton icon="pi pi-eye" title="Voir les détails"
|
||||
styleClass="ui-button-text"
|
||||
outcome="/chantiers/details?id=#{chantier.id}"/>
|
||||
</p:column>
|
||||
</p:dataTable>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Chantiers en retard -->
|
||||
<div class="col-12 lg:col-4">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<div class="card-title">
|
||||
<h6>Chantiers en retard</h6>
|
||||
<p class="subtitle">Attention requise</p>
|
||||
</div>
|
||||
</div>
|
||||
<p:dataList value="#{dashboardView.chantiersEnRetard}" var="chantier"
|
||||
emptyMessage="Aucun chantier en retard">
|
||||
<div class="flex align-items-center justify-content-between" style="padding: 0.75rem; border-bottom: 1px solid var(--surface-border);">
|
||||
<div>
|
||||
<strong>#{chantier.nom}</strong>
|
||||
<br/>
|
||||
<small style="color: var(--text-color-secondary);">
|
||||
#{chantier.dateFinPrevueFormatee}
|
||||
</small>
|
||||
</div>
|
||||
<p:tag value="+#{chantier.joursRetard}j" severity="danger"/>
|
||||
</div>
|
||||
</p:dataList>
|
||||
<p:outputPanel rendered="#{empty dashboardView.chantiersEnRetard}">
|
||||
<p style="text-align: center; padding: 1rem; color: var(--text-color-secondary);">
|
||||
<i class="pi pi-check-circle" style="color: green;"></i>
|
||||
Aucun chantier en retard
|
||||
</p>
|
||||
</p:outputPanel>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
23
target/classes/META-INF/resources/devis.xhtml
Normal file
23
target/classes/META-INF/resources/devis.xhtml
Normal file
@@ -0,0 +1,23 @@
|
||||
<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">Devis - BTP Xpress</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<div class="layout-dashboard">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h1>Gestion des Devis</h1>
|
||||
<p>Module en cours de développement...</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
1
target/classes/META-INF/resources/devis/acceptes.xhtml
Normal file
1
target/classes/META-INF/resources/devis/acceptes.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">Acceptes - DEVIS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Acceptes</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/devis" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/devis/attente.xhtml
Normal file
1
target/classes/META-INF/resources/devis/attente.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">Attente - DEVIS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Attente</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/devis" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/devis/expires.xhtml
Normal file
1
target/classes/META-INF/resources/devis/expires.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">Expires - DEVIS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Expires</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/devis" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/devis/liste.xhtml
Normal file
1
target/classes/META-INF/resources/devis/liste.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">DEVIS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>DEVIS</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/devis/nouveau.xhtml
Normal file
1
target/classes/META-INF/resources/devis/nouveau.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">DEVIS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>DEVIS</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
24
target/classes/META-INF/resources/documentation.xhtml
Normal file
24
target/classes/META-INF/resources/documentation.xhtml
Normal file
@@ -0,0 +1,24 @@
|
||||
<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">Documentation - BTP Xpress</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<div class="layout-dashboard">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h1>Documentation</h1>
|
||||
<p>Documentation de l'application BTP Xpress</p>
|
||||
<p>Module en cours de développement...</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
23
target/classes/META-INF/resources/employes.xhtml
Normal file
23
target/classes/META-INF/resources/employes.xhtml
Normal file
@@ -0,0 +1,23 @@
|
||||
<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">Employés - BTP Xpress</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<div class="layout-dashboard">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h1>Gestion des Employés</h1>
|
||||
<p>Module en cours de développement...</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
1
target/classes/META-INF/resources/employes/actifs.xhtml
Normal file
1
target/classes/META-INF/resources/employes/actifs.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">Actifs - EMPLOYES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Actifs</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/employes" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1 @@
|
||||
<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">Disponibles - EMPLOYES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Disponibles</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/employes" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/employes/liste.xhtml
Normal file
1
target/classes/META-INF/resources/employes/liste.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">EMPLOYES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>EMPLOYES</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/employes/nouveau.xhtml
Normal file
1
target/classes/META-INF/resources/employes/nouveau.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">EMPLOYES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>EMPLOYES</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
23
target/classes/META-INF/resources/equipes.xhtml
Normal file
23
target/classes/META-INF/resources/equipes.xhtml
Normal file
@@ -0,0 +1,23 @@
|
||||
<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">Équipes - BTP Xpress</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<div class="layout-dashboard">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h1>Gestion des Équipes</h1>
|
||||
<p>Module en cours de développement...</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<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">Disponibles - EQUIPES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Disponibles</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/equipes" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/equipes/liste.xhtml
Normal file
1
target/classes/META-INF/resources/equipes/liste.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">EQUIPES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>EQUIPES</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/equipes/nouveau.xhtml
Normal file
1
target/classes/META-INF/resources/equipes/nouveau.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">EQUIPES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>EQUIPES</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/equipes/nouvelle.xhtml
Normal file
1
target/classes/META-INF/resources/equipes/nouvelle.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">Nouvelle - EQUIPES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Nouvelle</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/equipes" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1 @@
|
||||
<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">Specialites - EQUIPES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Specialites</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/equipes" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
23
target/classes/META-INF/resources/factures.xhtml
Normal file
23
target/classes/META-INF/resources/factures.xhtml
Normal file
@@ -0,0 +1,23 @@
|
||||
<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">Factures - BTP Xpress</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<div class="layout-dashboard">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h1>Gestion des Factures</h1>
|
||||
<p>Module en cours de développement...</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<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">Impayees - FACTURES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Impayees</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/factures" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/factures/liste.xhtml
Normal file
1
target/classes/META-INF/resources/factures/liste.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">FACTURES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>FACTURES</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/factures/nouveau.xhtml
Normal file
1
target/classes/META-INF/resources/factures/nouveau.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">FACTURES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>FACTURES</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1 @@
|
||||
<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">Nouvelle - FACTURES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Nouvelle</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/factures" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/factures/payees.xhtml
Normal file
1
target/classes/META-INF/resources/factures/payees.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">Payees - FACTURES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Payees</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/factures" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/factures/retard.xhtml
Normal file
1
target/classes/META-INF/resources/factures/retard.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">Retard - FACTURES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Retard</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/factures" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
13
target/classes/META-INF/resources/index.xhtml
Normal file
13
target/classes/META-INF/resources/index.xhtml
Normal file
@@ -0,0 +1,13 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:h="http://java.sun.com/jsf/html"
|
||||
xmlns:f="http://java.sun.com/jsf/core">
|
||||
<h:head>
|
||||
<meta http-equiv="refresh" content="0;url=dashboard.xhtml" />
|
||||
<title>BTP Xpress - Redirection</title>
|
||||
</h:head>
|
||||
<h:body>
|
||||
<h:outputText value="Redirection en cours..." />
|
||||
</h:body>
|
||||
</html>
|
||||
|
||||
85
target/classes/META-INF/resources/login.xhtml
Normal file
85
target/classes/META-INF/resources/login.xhtml
Normal file
@@ -0,0 +1,85 @@
|
||||
<!DOCTYPE html>
|
||||
<html 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"
|
||||
lang="fr">
|
||||
|
||||
<h:head>
|
||||
<f:facet name="first">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
|
||||
<link rel="icon" href="#{request.contextPath}/resources/freya-layout/images/favicon.ico" type="image/x-icon"/>
|
||||
</f:facet>
|
||||
<title>Connexion - BTP Xpress</title>
|
||||
<h:outputStylesheet name="css/primeicons.css" library="freya-layout" />
|
||||
<h:outputStylesheet name="css/primeflex.min.css" library="freya-layout" />
|
||||
<h:outputStylesheet name="css/layout-light.css" library="freya-layout" />
|
||||
<h:outputStylesheet name="css/freya-purple-light.css" library="freya-layout" />
|
||||
</h:head>
|
||||
|
||||
<h:body class="login-body">
|
||||
<div class="login-wrapper">
|
||||
<div class="login-container">
|
||||
<div class="login-left">
|
||||
<div class="login-content">
|
||||
<h1>BTP Xpress</h1>
|
||||
<p class="subtitle">Votre plateforme de gestion BTP</p>
|
||||
<p>Gérez vos projets, clients, matériels et équipes en toute simplicité.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="login-right">
|
||||
<div class="login-box">
|
||||
<h2>Connexion</h2>
|
||||
<p class="login-subtitle">Connectez-vous à votre compte</p>
|
||||
|
||||
<h:form id="loginForm">
|
||||
<div class="login-input-group">
|
||||
<label for="username">Nom d'utilisateur ou email</label>
|
||||
<p:inputText id="username"
|
||||
value="#{loginView.username}"
|
||||
placeholder="Votre nom d'utilisateur"
|
||||
required="true"
|
||||
requiredMessage="Le nom d'utilisateur est requis"
|
||||
styleClass="ui-input-filled"
|
||||
style="width: 100%;"/>
|
||||
</div>
|
||||
|
||||
<div class="login-input-group">
|
||||
<label for="password">Mot de passe</label>
|
||||
<p:password id="password"
|
||||
value="#{loginView.password}"
|
||||
placeholder="Votre mot de passe"
|
||||
required="true"
|
||||
requiredMessage="Le mot de passe est requis"
|
||||
feedback="false"
|
||||
toggleMask="true"
|
||||
styleClass="ui-input-filled"
|
||||
style="width: 100%;"/>
|
||||
</div>
|
||||
|
||||
<div class="login-options">
|
||||
<p:selectBooleanCheckbox id="rememberMe"
|
||||
value="#{loginView.rememberMe}"
|
||||
label="Se souvenir de moi"/>
|
||||
<a href="#" style="text-decoration: none; color: var(--primary-color);">Mot de passe oublié ?</a>
|
||||
</div>
|
||||
|
||||
<p:commandButton value="Se connecter"
|
||||
icon="pi pi-sign-in"
|
||||
action="#{loginView.login()}"
|
||||
style="width: 100%; margin-top: 1rem;"
|
||||
update="@form"
|
||||
process="@form"/>
|
||||
|
||||
<p:messages id="messages" showDetail="true" closable="true"/>
|
||||
</h:form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</h:body>
|
||||
</html>
|
||||
|
||||
23
target/classes/META-INF/resources/maintenance.xhtml
Normal file
23
target/classes/META-INF/resources/maintenance.xhtml
Normal file
@@ -0,0 +1,23 @@
|
||||
<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">Maintenance - BTP Xpress</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<div class="layout-dashboard">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h1>Gestion de la Maintenance</h1>
|
||||
<p>Module en cours de développement...</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<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">Corrective - MAINTENANCE - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Corrective</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/maintenance" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1 @@
|
||||
<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">MAINTENANCE - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>MAINTENANCE</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1 @@
|
||||
<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">MAINTENANCE - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>MAINTENANCE</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1 @@
|
||||
<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">Preventive - MAINTENANCE - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Preventive</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/maintenance" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1 @@
|
||||
<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">Urgente - MAINTENANCE - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Urgente</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/maintenance" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
23
target/classes/META-INF/resources/materiels.xhtml
Normal file
23
target/classes/META-INF/resources/materiels.xhtml
Normal file
@@ -0,0 +1,23 @@
|
||||
<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">Matériels - BTP Xpress</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<div class="layout-dashboard">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h1>Inventaire des Matériels</h1>
|
||||
<p>Module en cours de développement...</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<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">Disponibles - MATERIELS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Disponibles</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/materiels" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/materiels/liste.xhtml
Normal file
1
target/classes/META-INF/resources/materiels/liste.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">MATERIELS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>MATERIELS</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1 @@
|
||||
<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">Maintenance Prevue - MATERIELS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Maintenance Prevue</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/materiels" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1 @@
|
||||
<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">MATERIELS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>MATERIELS</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
23
target/classes/META-INF/resources/messages.xhtml
Normal file
23
target/classes/META-INF/resources/messages.xhtml
Normal file
@@ -0,0 +1,23 @@
|
||||
<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">Messages - BTP Xpress</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<div class="layout-dashboard">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h1>Messages</h1>
|
||||
<p>Module en cours de développement...</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<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">Archives - MESSAGES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Archives</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/messages" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/messages/envoyes.xhtml
Normal file
1
target/classes/META-INF/resources/messages/envoyes.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">Envoyes - MESSAGES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Envoyes</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/messages" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/messages/liste.xhtml
Normal file
1
target/classes/META-INF/resources/messages/liste.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">MESSAGES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>MESSAGES</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/messages/nouveau.xhtml
Normal file
1
target/classes/META-INF/resources/messages/nouveau.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">MESSAGES - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>MESSAGES</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
23
target/classes/META-INF/resources/notifications.xhtml
Normal file
23
target/classes/META-INF/resources/notifications.xhtml
Normal file
@@ -0,0 +1,23 @@
|
||||
<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">Notifications - BTP Xpress</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<div class="layout-dashboard">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h1>Notifications</h1>
|
||||
<p>Module en cours de développement...</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<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">NOTIFICATIONS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>NOTIFICATIONS</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1 @@
|
||||
<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">Non Lues - NOTIFICATIONS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Non Lues</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/notifications" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1 @@
|
||||
<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">NOTIFICATIONS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>NOTIFICATIONS</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1 @@
|
||||
<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">Recentes - NOTIFICATIONS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Recentes</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/notifications" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1 @@
|
||||
<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">Statistiques - NOTIFICATIONS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Statistiques</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/notifications" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
23
target/classes/META-INF/resources/planning.xhtml
Normal file
23
target/classes/META-INF/resources/planning.xhtml
Normal file
@@ -0,0 +1,23 @@
|
||||
<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">Planning - BTP Xpress</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<div class="layout-dashboard">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h1>Planning</h1>
|
||||
<p>Module en cours de développement...</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<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">Calendrier - PLANNING - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Calendrier</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/planning" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/planning/equipes.xhtml
Normal file
1
target/classes/META-INF/resources/planning/equipes.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">Equipes - PLANNING - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Equipes</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/planning" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/planning/liste.xhtml
Normal file
1
target/classes/META-INF/resources/planning/liste.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">PLANNING - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>PLANNING</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1 @@
|
||||
<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">Materiel - PLANNING - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Materiel</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/planning" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/planning/nouveau.xhtml
Normal file
1
target/classes/META-INF/resources/planning/nouveau.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">PLANNING - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>PLANNING</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
23
target/classes/META-INF/resources/profile.xhtml
Normal file
23
target/classes/META-INF/resources/profile.xhtml
Normal file
@@ -0,0 +1,23 @@
|
||||
<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">Mon Profil - BTP Xpress</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<div class="layout-dashboard">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h1>Mon Profil</h1>
|
||||
<p>Module en cours de développement...</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
23
target/classes/META-INF/resources/rapports.xhtml
Normal file
23
target/classes/META-INF/resources/rapports.xhtml
Normal file
@@ -0,0 +1,23 @@
|
||||
<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">Rapports - BTP Xpress</ui:define>
|
||||
|
||||
<ui:define name="content">
|
||||
<div class="layout-dashboard">
|
||||
<div class="grid">
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<h1>Rapports</h1>
|
||||
<p>Module en cours de développement...</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
</ui:composition>
|
||||
|
||||
1
target/classes/META-INF/resources/rapports/ca.xhtml
Normal file
1
target/classes/META-INF/resources/rapports/ca.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">Ca - RAPPORTS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Ca</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/rapports" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/rapports/clients.xhtml
Normal file
1
target/classes/META-INF/resources/rapports/clients.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">Clients - RAPPORTS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Clients</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/rapports" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/rapports/equipes.xhtml
Normal file
1
target/classes/META-INF/resources/rapports/equipes.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">Equipes - RAPPORTS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Equipes</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/rapports" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/rapports/liste.xhtml
Normal file
1
target/classes/META-INF/resources/rapports/liste.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">RAPPORTS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>RAPPORTS</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
1
target/classes/META-INF/resources/rapports/nouveau.xhtml
Normal file
1
target/classes/META-INF/resources/rapports/nouveau.xhtml
Normal file
@@ -0,0 +1 @@
|
||||
<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">RAPPORTS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>RAPPORTS</h1><p>Module en cours de développement...</p></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1 @@
|
||||
<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">Rentabilite - RAPPORTS - BTP Xpress</ui:define><ui:define name="content"><div class="layout-dashboard"><div class="grid"><div class="col-12"><div class="card"><h1>Rentabilite</h1><p>Module en cours de développement...</p><p:commandButton value="Retour" icon="pi pi-arrow-left" outcome="/rapports" styleClass="ui-button-secondary"/></div></div></div></div></ui:define></ui:composition>
|
||||
@@ -0,0 +1,185 @@
|
||||
/**
|
||||
* Styles personnalisés pour le topbar et le menu profil utilisateur.
|
||||
*
|
||||
* Améliore l'apparence professionnelle du menu dropdown utilisateur
|
||||
* avec un header élégant affichant les informations de l'utilisateur connecté.
|
||||
*/
|
||||
|
||||
/* Header du profil utilisateur dans le menu dropdown */
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li.user-profile-header {
|
||||
padding: 16px;
|
||||
background: var(--surface-ground, #f8f9fa);
|
||||
border-bottom: 1px solid var(--surface-border, #dee2e6);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li.user-profile-header:hover {
|
||||
background: var(--surface-ground, #f8f9fa);
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li.user-profile-header .user-info {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li.user-profile-header .profile-avatar-small {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
border-radius: 50%;
|
||||
object-fit: cover;
|
||||
border: 2px solid var(--primary-color, #464DF2);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li.user-profile-header .user-details {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
min-width: 0;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li.user-profile-header .user-name {
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
color: var(--text-color, #3E4754);
|
||||
line-height: 1.4;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li.user-profile-header .user-role {
|
||||
font-size: 12px;
|
||||
color: var(--text-color-secondary, #6C757D);
|
||||
line-height: 1.4;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
/* Séparateurs dans le menu profil */
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li.user-profile-divider {
|
||||
padding: 0;
|
||||
margin: 4px 0;
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li.user-profile-divider hr {
|
||||
margin: 0;
|
||||
border: none;
|
||||
border-top: 1px solid var(--surface-border, #dee2e6);
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
/* Icônes dans le menu profil avec espacement */
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li > a,
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li > .ui-commandlink {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li > a i,
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li > .ui-commandlink i {
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 14px;
|
||||
color: var(--text-color-secondary, #6C757D);
|
||||
border-radius: 4px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li > a:hover i,
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li > .ui-commandlink:hover i {
|
||||
background: var(--surface-hover, #e9ecef);
|
||||
color: var(--primary-color, #464DF2);
|
||||
}
|
||||
|
||||
/* Badges dans le menu profil */
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li > a .ui-badge {
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
/* Style pour l'option Logout */
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li:last-child a,
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li:last-child .ui-commandlink,
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li:last-child form a {
|
||||
color: var(--red-500, #ef4444);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li:last-child a:hover,
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li:last-child .ui-commandlink:hover,
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li:last-child form a:hover {
|
||||
background: var(--red-50, #fef2f2);
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li:last-child a i,
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li:last-child .ui-commandlink i,
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li:last-child form a i {
|
||||
color: var(--red-500, #ef4444);
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li:last-child a:hover i,
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li:last-child .ui-commandlink:hover i,
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li:last-child form a:hover i {
|
||||
background: var(--red-100, #fee2e2);
|
||||
color: var(--red-600, #dc2626);
|
||||
}
|
||||
|
||||
/* Amélioration de l'avatar dans le bouton principal */
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > a > img {
|
||||
border-radius: 50%;
|
||||
border: 2px solid transparent;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > a:hover > img {
|
||||
border-color: var(--primary-color, #464DF2);
|
||||
box-shadow: 0 0 0 2px rgba(70, 77, 242, 0.1);
|
||||
}
|
||||
|
||||
/* Badges de notification dans le topbar */
|
||||
.layout-topbar .layout-topbar-actions > li.topbar-item .ui-badge {
|
||||
position: absolute;
|
||||
top: -4px;
|
||||
right: -4px;
|
||||
background: var(--red-500, #ef4444);
|
||||
color: white;
|
||||
font-size: 10px;
|
||||
font-weight: 600;
|
||||
min-width: 18px;
|
||||
height: 18px;
|
||||
line-height: 18px;
|
||||
padding: 0 5px;
|
||||
border-radius: 9px;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
/* Responsive pour petits écrans */
|
||||
@media (max-width: 768px) {
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li.user-profile-header {
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li.user-profile-header .profile-avatar-small {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li.user-profile-header .user-name {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.layout-topbar .layout-topbar-actions > li.user-profile > ul > li.user-profile-header .user-role {
|
||||
font-size: 11px;
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,5 @@
|
||||
$primaryColor:lighten(#2170E7, 5%);
|
||||
$primaryTextColor:#ffffff;
|
||||
|
||||
@import '../../sass/variables/layout/_layout_dark';
|
||||
@import '../../sass/layout/_layout';
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,5 @@
|
||||
$primaryColor:#2170E7;
|
||||
$primaryTextColor:#ffffff;
|
||||
|
||||
@import '../../sass/variables/layout/_layout_light';
|
||||
@import '../../sass/layout/_layout';
|
||||
1
target/classes/META-INF/resources/resources/freya-layout/css/primeflex-v2.min.css
vendored
Normal file
1
target/classes/META-INF/resources/resources/freya-layout/css/primeflex-v2.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
target/classes/META-INF/resources/resources/freya-layout/css/primeflex.min.css
vendored
Normal file
1
target/classes/META-INF/resources/resources/freya-layout/css/primeflex.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 265 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,9 @@
|
||||
<svg width="17" height="20" viewBox="0 0 17 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0 0H6.00019V3.82345L17 1.66667V6.66667L6.00019 8.82345V10.4901L17 8.33333V13.3333L6.00019 15.4901V20H0V0Z" fill="url(#paint0_linear)"/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear" x1="3.33335" y1="3.08442e-08" x2="8.49995" y2="20" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#297FFF"/>
|
||||
<stop offset="1" stop-color="#7A0EE7"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 469 B |
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="209px" height="60px" viewBox="0 0 209 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>logo-freya-white</title>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="logo-freya-white" fill="#FFFFFF" fill-rule="nonzero">
|
||||
<polygon id="Path" points="0 0 15.8827941 0 15.8827941 10.1321425 45 4.41666667 45 17.6666667 15.8827941 23.3821425 15.8827941 27.7988092 45 22.0833333 45 35.3333333 15.8827941 41.0488092 15.8827941 53 0 53"></polygon>
|
||||
<path d="M84,20.8302387 L77.2821159,20.8302387 L77.2821159,18.9204244 C77.2821159,17.4350133 78.1284635,16.5862069 79.6095718,16.5862069 L83.9471033,16.5862069 L83.9471033,9 L77.070529,9 C71.0403023,9 67.8664987,12.3421751 67.8664987,18.1246684 L67.8664987,20.8302387 L63,20.8302387 L63.0528967,28.5755968 L67.7607053,28.5755968 L67.7607053,49 L77.5994962,49 L77.5994962,28.5755968 L84,28.5755968 L84,20.8302387 Z" id="Path"></path>
|
||||
<path d="M105.301136,21 C101.846591,21 99.3636364,21.9630996 97.3125,24.3173432 L95.7471591,21.1070111 L89,21.1070111 L89,50 L99.0397727,50 L99.0397727,35.3394834 C99.0397727,31.6476015 100.551136,30.095941 104.059659,30.095941 L108,30.095941 L108,21 L105.301136,21 Z" id="Path"></path>
|
||||
<path d="M141,35.2034783 C141,26.6852174 134.662692,20 125.473595,20 C116.495741,20 110,26.5773913 110,35.4730435 C110,44.3686957 116.548552,51 125.473595,51 C132.603066,51 138.412266,46.8486957 140.41908,40.2173913 L130.596252,40.2173913 C129.698467,41.9426087 127.744463,42.9669565 125.473595,42.9669565 C122.357751,42.9669565 120.298126,41.2417391 119.664395,37.8991304 L140.841567,37.8991304 C140.947189,36.9826087 141,36.12 141,35.2034783 Z M125.473595,27.8713043 C128.431005,27.8713043 130.49063,29.4347826 131.335605,32.346087 L119.822828,32.346087 C120.614991,29.4347826 122.621806,27.8713043 125.473595,27.8713043 Z" id="Shape"></path>
|
||||
<path d="M165.423077,21 L159.764423,36.6842105 L153.682692,21 L143,21 L154.793269,47.1052632 C153.471154,50.6315789 152.360577,51.6315789 148.605769,51.6315789 L145.855769,51.6315789 L145.855769,60 L149.240385,60 C156.644231,60 160.134615,56.8947368 163.995192,48.1578947 L176,21 L165.423077,21 Z" id="Path"></path>
|
||||
<path d="M201.660066,20.8641115 L200.656766,23.1324042 C198.333333,21.1341463 195.323432,20 191.943894,20 C183.231023,20 177,26.4268293 177,35.445993 C177,44.5191638 183.231023,51 191.943894,51 C195.270627,51 198.227723,49.9198606 200.551155,47.9756098 L201.39604,50.0278746 L209,50.0278746 L209,20.8641115 L201.660066,20.8641115 Z M193.264026,42.1428571 C189.567657,42.1428571 186.874587,39.2804878 186.874587,35.445993 C186.874587,31.6655052 189.567657,28.8571429 193.264026,28.8571429 C196.960396,28.8571429 199.653465,31.6655052 199.653465,35.445993 C199.653465,39.2804878 196.960396,42.1428571 193.264026,42.1428571 Z" id="Shape"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
@@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="446px" height="129px" viewBox="0 0 446 129" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>logo-freya</title>
|
||||
<defs>
|
||||
<linearGradient x1="28.4476672%" y1="1.54220833e-07%" x2="49.999861%" y2="100%" id="linearGradient-1">
|
||||
<stop stop-color="#297FFF" offset="0%"></stop>
|
||||
<stop stop-color="#7A0EE7" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient x1="75.0238871%" y1="-21.5732317%" x2="40.5406822%" y2="100.001105%" id="linearGradient-2">
|
||||
<stop stop-color="#297FFF" offset="0%"></stop>
|
||||
<stop stop-color="#7616E8" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient x1="37.9032258%" y1="-69.125861%" x2="-21.2207927%" y2="100.001538%" id="linearGradient-3">
|
||||
<stop stop-color="#297FFF" offset="0%"></stop>
|
||||
<stop stop-color="#7616E8" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient x1="-55.9426462%" y1="-59.1651756%" x2="-141.121522%" y2="95.4614408%" id="linearGradient-4">
|
||||
<stop stop-color="#297FFF" offset="0%"></stop>
|
||||
<stop stop-color="#7616E8" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient x1="-89.5003908%" y1="-50.8316014%" x2="-145.407143%" y2="72.8756185%" id="linearGradient-5">
|
||||
<stop stop-color="#297FFF" offset="0%"></stop>
|
||||
<stop stop-color="#7616E8" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<linearGradient x1="-319.994499%" y1="-50.1302194%" x2="-402.50275%" y2="91.589373%" id="linearGradient-6">
|
||||
<stop stop-color="#297FFF" offset="0%"></stop>
|
||||
<stop stop-color="#7616E8" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="logo-freya" fill-rule="nonzero">
|
||||
<polygon id="Path" fill="url(#linearGradient-1)" points="0 0 33.8832941 0 33.8832941 21.793665 96 9.5 96 38 33.8832941 50.293665 33.8832941 59.793665 96 47.5 96 76 33.8832941 88.293665 33.8832941 114 0 114"></polygon>
|
||||
<path d="M181,45.4350133 L166.604534,45.4350133 L166.604534,41.3289125 C166.604534,38.1352785 168.418136,36.3103448 171.59194,36.3103448 L180.88665,36.3103448 L180.88665,20 L166.151134,20 C153.229219,20 146.428212,27.1856764 146.428212,39.6180371 L146.428212,45.4350133 L136,45.4350133 L136.11335,62.0875332 L146.201511,62.0875332 L146.201511,106 L167.284635,106 L167.284635,62.0875332 L181,62.0875332 L181,45.4350133 Z" id="Path" fill="url(#linearGradient-2)"></path>
|
||||
<path d="M225.318182,44 C218.045455,44 212.818182,46.0590406 208.5,51.0922509 L205.204545,44.2287823 L191,44.2287823 L191,106 L212.136364,106 L212.136364,74.6568266 C212.136364,66.7638376 215.318182,63.4464945 222.704545,63.4464945 L231,63.4464945 L231,44 L225.318182,44 Z" id="Path" fill="url(#linearGradient-3)"></path>
|
||||
<path d="M304,73.8782609 C304,56.0173913 290.507666,42 270.943782,42 C251.829642,42 238,55.7913043 238,74.4434783 C238,93.0956522 251.942078,107 270.943782,107 C286.122658,107 298.49063,98.2956522 302.763203,84.3913043 L281.850085,84.3913043 C279.938671,88.0086957 275.778535,90.1565217 270.943782,90.1565217 C264.310051,90.1565217 259.925043,86.5391304 258.575809,79.5304348 L303.662692,79.5304348 C303.887564,77.6086957 304,75.8 304,73.8782609 Z M270.943782,58.5043478 C277.240204,58.5043478 281.625213,61.7826087 283.424191,67.8869565 L258.913118,67.8869565 C260.599659,61.7826087 264.872232,58.5043478 270.943782,58.5043478 Z" id="Shape" fill="url(#linearGradient-4)"></path>
|
||||
<path d="M353.24359,44 L341.06891,78.1835358 L327.983974,44 L305,44 L330.373397,100.896086 C327.528846,108.581646 325.139423,110.761134 317.060897,110.761134 L311.144231,110.761134 L311.144231,129 L318.426282,129 C334.355769,129 341.865385,122.232119 350.171474,103.190283 L376,44 L353.24359,44 Z" id="Path" fill="url(#linearGradient-5)"></path>
|
||||
<path d="M430.173267,43.8118467 L428.009901,48.5679443 C423,44.3780488 416.509901,42 409.222772,42 C390.435644,42 377,55.4756098 377,74.3867596 C377,93.4111498 390.435644,107 409.222772,107 C416.39604,107 422.772277,104.735192 427.782178,100.658537 L429.60396,104.961672 L446,104.961672 L446,43.8118467 L430.173267,43.8118467 Z M412.069307,88.4285714 C404.09901,88.4285714 398.292079,82.4268293 398.292079,74.3867596 C398.292079,66.4599303 404.09901,60.5714286 412.069307,60.5714286 C420.039604,60.5714286 425.846535,66.4599303 425.846535,74.3867596 C425.846535,82.4268293 420.039604,88.4285714 412.069307,88.4285714 Z" id="Shape" fill="url(#linearGradient-6)"></path>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.6 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user