feat: example

master
guilherme 2025-06-26 10:14:37 -03:00
parent 9ab8b32ad6
commit 121a3e1cd4
115 changed files with 716 additions and 222 deletions

View File

@ -0,0 +1,109 @@
package br.com.agapesistemas.agtemplate.agtemplate.view;
import jakarta.annotation.PostConstruct;
import jakarta.faces.view.ViewScoped;
import jakarta.inject.Named;
import java.io.Serializable;
import org.primefaces.model.chart.Axis;
import org.primefaces.model.chart.AxisType;
import org.primefaces.model.chart.BarChartModel;
import org.primefaces.model.chart.ChartSeries;
@ViewScoped
@Named("agtemplateDashboardBean")
public class DashboardBean implements Serializable {
private BarChartModel folhaModel;
private BarChartModel previdenciaModel;
private String filtro = "exemplo";
@PostConstruct
public void init() {
createFolhaModel();
createPrevidenciaModel();
}
private void createFolhaModel() {
folhaModel = new BarChartModel();
ChartSeries serie1 = new ChartSeries();
serie1.setLabel("Referência 1");
serie1.set("Jan", 120);
serie1.set("Feb", 200);
serie1.set("Mar", 160);
serie1.set("Apr", 90);
serie1.set("May", 140);
serie1.set("Jun", 150);
ChartSeries serie2 = new ChartSeries();
serie2.setLabel("Referência 2");
serie2.set("Jan", 60);
serie2.set("Feb", 160);
serie2.set("Mar", 90);
serie2.set("Apr", 140);
serie2.set("May", 100);
serie2.set("Jun", 120);
folhaModel.addSeries(serie1);
folhaModel.addSeries(serie2);
folhaModel.setTitle("Demonstrativo da folha");
folhaModel.setLegendPosition("ne");
Axis xAxis = folhaModel.getAxis(AxisType.X);
xAxis.setLabel("Mês");
Axis yAxis = folhaModel.getAxis(AxisType.Y);
yAxis.setLabel("Valor");
yAxis.setMin(0);
yAxis.setMax(250);
}
private void createPrevidenciaModel() {
previdenciaModel = new BarChartModel();
ChartSeries serie1 = new ChartSeries();
serie1.setLabel("Referência 1");
serie1.set("Jan", 110);
serie1.set("Feb", 210);
serie1.set("Mar", 170);
serie1.set("Apr", 95);
serie1.set("May", 135);
ChartSeries serie2 = new ChartSeries();
serie2.setLabel("Referência 2");
serie2.set("Jan", 50);
serie2.set("Feb", 140);
serie2.set("Mar", 70);
serie2.set("Apr", 130);
serie2.set("May", 100);
previdenciaModel.addSeries(serie1);
previdenciaModel.addSeries(serie2);
previdenciaModel.setTitle("Demonstrativo de previdência");
previdenciaModel.setLegendPosition("ne");
Axis xAxis = previdenciaModel.getAxis(AxisType.X);
xAxis.setLabel("Mês");
Axis yAxis = previdenciaModel.getAxis(AxisType.Y);
yAxis.setLabel("Valor");
yAxis.setMin(0);
yAxis.setMax(250);
}
public BarChartModel getFolhaModel() {
return folhaModel;
}
public BarChartModel getPrevidenciaModel() {
return previdenciaModel;
}
public String getFiltro() {
return filtro;
}
public void setFiltro(String filtro) {
this.filtro = filtro;
}
}

View File

@ -7,17 +7,12 @@ import org.primefaces.model.FilterMeta;
import org.primefaces.model.SortMeta; import org.primefaces.model.SortMeta;
import org.primefaces.model.SortOrder; import org.primefaces.model.SortOrder;
import java.util.Collection; import java.util.Collection;
import java.io.IOException;
import br.com.agapesistemas.agtemplate.agtemplate.view.base.BaseBean; import br.com.agapesistemas.agtemplate.agtemplate.view.base.BaseBean;
import br.com.agapesistemas.agtemplate.agtemplate.model.to.Tb_template; import br.com.agapesistemas.agtemplate.agtemplate.model.to.Tb_template;
import br.com.agapesistemas.agtemplate.agtemplate.filtro.Tb_templateFiltro; import br.com.agapesistemas.agtemplate.agtemplate.filtro.Tb_templateFiltro;
import br.com.agapesistemas.agtemplate.agtemplate.controller.Tb_templateController; import br.com.agapesistemas.agtemplate.agtemplate.controller.Tb_templateController;
import br.com.agapesistemas.agtemplate.agtemplate.api.service.Tb_templateService;
import br.com.agapesistemas.agtemplate.agtemplate.exception.Tb_templateException;
import java.util.List; import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import jakarta.faces.event.ActionEvent; import jakarta.faces.event.ActionEvent;
import jakarta.inject.Named; import jakarta.inject.Named;
import jakarta.faces.view.ViewScoped; import jakarta.faces.view.ViewScoped;

View File

@ -53,7 +53,7 @@
<url-pattern>*.xhtml</url-pattern> <url-pattern>*.xhtml</url-pattern>
</servlet-mapping> </servlet-mapping>
<welcome-file-list> <welcome-file-list>
<welcome-file>index.xhtml</welcome-file> <welcome-file>./agtemplate/dashboard.xhtml</welcome-file>
</welcome-file-list> </welcome-file-list>
<mime-mapping> <mime-mapping>
<extension>otf</extension> <extension>otf</extension>

View File

@ -1,44 +1,104 @@
<?xml version='1.0' encoding='UTF-8' ?> <?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html> <!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml" <ui:composition
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html"
xmlns:jsf="http://xmlns.jcp.org/jsf" xmlns:p="http://primefaces.org/ui"
template="../template/template.xhtml" > xmlns:jsf="http://xmlns.jcp.org/jsf"
<ui:define name="HEAD_TITULO_PAGINA">tb_template</ui:define> template="../template/template.xhtml"
<ui:define name="TITULO_PAGINA"><p:menuitem value="tb_template" url="#" /></ui:define> >
<ui:define name="SISTEMA_PAGINA">Agtemplate</ui:define> <ui:define name="HEAD_TITULO_PAGINA">tb_template</ui:define>
<ui:define name="CAMINHO_PAGINA">tb_template</ui:define> <ui:define name="TITULO_PAGINA"
<ui:define name="MENU_BOTOES"> ><p:menuitem value="tb_template" url="#"
<p:commandButton value="Novo" icon="pi pi-plus" update="@([id$=modalAgtemplateTb_templateCU])" action="#{agtemplateTb_templateBean.clickNovo()}" oncomplete="PF('wvModalAgtemplateTb_templateCU').show();" /></ui:define>
styleClass="ui-button-success" style="margin-right: .5rem" process="@this" > <ui:define name="SISTEMA_PAGINA">agTemplate</ui:define>
<p:resetInput target="modalAgtemplateTb_templateCU"/> <ui:define name="CAMINHO_PAGINA">Dashboard</ui:define>
</p:commandButton>
<p:commandButton process="@this" id="deleteAgtemplateTb_templateButton" value="#{agtemplateTb_templateBean.deleteButtonMessage}" icon="pi pi-trash" actionListener="#{agtemplateTb_templateBean.deleteSelectedTb_template}" <ui:define name="HEADER_PAGINA">
styleClass="ui-button-danger" disabled="#{!agtemplateTb_templateBean.hasSelectedTb_template()}" update="@this,panel_formulario,panelAlerta"> <div class="headerContainer">
<p:confirm header="Confirmação" message="Remover o(s) tb_template(s) selecionado(s)?" icon="pi pi-exclamation-triangle" /> <h1 class="headerTitle">Dashboard</h1>
</p:commandButton> <p>Visualização dos dados parametrizados.</p>
</ui:define> </div>
<ui:define name="MENU_FILTRO"> <h:panelGroup id="optionsPesquisa" layout="block" > </ui:define>
<span class="filter-container ui-input-icon-left">
<i class="pi pi-search"></i> <ui:define name="MENU_BOTOES">
<p:inputText onkeypress="if (event.keyCode == 13) {jQuery('#btPesquisa').trigger('click'); return false;}" style="margin-right:10px" id="pesquisa" title="Informar parametros de pesquisa" styleClass="pesquisa" value="#{agtemplateTb_templateBean.pesquisa}" > <p:commandButton
<p:hotkey bind="return" handler="btPesquisa.click();"/> value="Novo"
</p:inputText> icon="pi pi-plus"
</span> update="@([id$=modalAgtemplateTb_templateCU])"
<p:commandButton title="Pesquisar" icon="pi pi-search" id="btPesquisa" update="form_formulario,messages" styleClass="bt_pesquisa m-2" action="#{agtemplateTb_templateBean.clickPesquisar()}" process="optionsPesquisa"/> action="#{agtemplateTb_templateBean.clickNovo()}"
<p:commandButton title="Filtrar" icon="pi pi-filter" styleClass="bt_pesquisa_filtro" process="@this" oncomplete="PF('wvModalAgtemplateTb_templateFiltro').show();" /> oncomplete="PF('wvModalAgtemplateTb_templateCU').show();"
</h:panelGroup> styleClass="ui-button-success"
</ui:define> style="margin-right: 0.5rem"
<ui:define name="FORMULARIO"> process="@this"
<ui:include src="./forms/crud/Tb_template/Tb_templateConsultLazy.xhtml" /> >
</ui:define> <p:resetInput target="modalAgtemplateTb_templateCU" />
<ui:define name="LIVRE"> </p:commandButton>
<ui:include src="./forms/modal/Tb_template/Tb_templateR.xhtml" /> <p:commandButton
<ui:include src="./forms/modal/Tb_template/Tb_templateD.xhtml" /> process="@this"
<ui:include src="./forms/modal/Tb_template/Tb_templateCU.xhtml" /> id="deleteAgtemplateTb_templateButton"
<ui:include src="./forms/modal/Tb_template/Tb_templateFiltro.xhtml" /> value="#{agtemplateTb_templateBean.deleteButtonMessage}"
</ui:define> icon="pi pi-trash"
actionListener="#{agtemplateTb_templateBean.deleteSelectedTb_template}"
styleClass="ui-button-danger"
disabled="#{!agtemplateTb_templateBean.hasSelectedTb_template()}"
update="@this,panel_formulario,panelAlerta"
>
<p:confirm
header="Confirmação"
message="Remover o(s) tb_template(s) selecionado(s)?"
icon="pi pi-exclamation-triangle"
/>
</p:commandButton>
</ui:define>
<ui:define name="MENU_FILTRO">
<h:panelGroup id="optionsPesquisa" layout="block">
<span class="filter-container ui-input-icon-left">
<i class="pi pi-search"></i>
<p:inputText
onkeypress="if (event.keyCode == 13) {
jQuery('#btPesquisa').trigger('click');
return false;
}"
style="margin-right: 10px"
id="pesquisa"
title="Informar parametros de pesquisa"
styleClass="pesquisa"
value="#{agtemplateTb_templateBean.pesquisa}"
>
<p:hotkey bind="return" handler="btPesquisa.click();" />
</p:inputText>
</span>
<p:commandButton
title="Pesquisar"
icon="pi pi-search"
id="btPesquisa"
update="form_formulario,messages"
styleClass="bt_pesquisa m-2"
action="#{agtemplateTb_templateBean.clickPesquisar()}"
process="optionsPesquisa"
/>
<p:commandButton
title="Filtrar"
icon="pi pi-filter"
styleClass="bt_pesquisa_filtro"
process="@this"
oncomplete="PF('wvModalAgtemplateTb_templateFiltro').show();"
/>
</h:panelGroup>
</ui:define>
<ui:define name="FORMULARIO">
<ui:include src="./forms/crud/Tb_template/Tb_templateConsultLazy.xhtml" />
</ui:define>
<ui:define name="LIVRE">
<ui:include src="./forms/modal/Tb_template/Tb_templateR.xhtml" />
<ui:include src="./forms/modal/Tb_template/Tb_templateD.xhtml" />
<ui:include src="./forms/modal/Tb_template/Tb_templateCU.xhtml" />
<ui:include src="./forms/modal/Tb_template/Tb_templateFiltro.xhtml" />
</ui:define>
</ui:composition> </ui:composition>

View File

@ -1,44 +1,180 @@
<?xml version='1.0' encoding='UTF-8' ?> <?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html> <!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml" <ui:composition
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html"
xmlns:jsf="http://xmlns.jcp.org/jsf" xmlns:p="http://primefaces.org/ui"
template="../template/template.xhtml" > xmlns:jsf="http://xmlns.jcp.org/jsf"
<ui:define name="HEAD_TITULO_PAGINA">tb_template</ui:define> template="../template/template.xhtml"
<ui:define name="TITULO_PAGINA"><p:menuitem value="tb_template" url="#" /></ui:define> >
<ui:define name="SISTEMA_PAGINA">Agtemplate</ui:define> <ui:define name="HEAD_TITULO_PAGINA">tb_template</ui:define>
<ui:define name="CAMINHO_PAGINA">tb_template</ui:define> <ui:define name="TITULO_PAGINA"
<ui:define name="MENU_BOTOES"> ><p:menuitem value="tb_template" url="#"
<p:commandButton value="Novo" icon="pi pi-plus" update="@([id$=modalAgtemplateTb_templateCU])" action="#{agtemplateTb_templateBean.clickNovo()}" oncomplete="PF('wvModalAgtemplateTb_templateCU').show();" /></ui:define>
styleClass="ui-button-success" style="margin-right: .5rem" process="@this" > <ui:define name="SISTEMA_PAGINA">agTemplate</ui:define>
<p:resetInput target="modalAgtemplateTb_templateCU"/> <ui:define name="CAMINHO_PAGINA">Dashboard</ui:define>
</p:commandButton>
<p:commandButton process="@this" id="deleteAgtemplateTb_templateButton" value="#{agtemplateTb_templateBean.deleteButtonMessage}" icon="pi pi-trash" actionListener="#{agtemplateTb_templateBean.deleteSelectedTb_template}" <ui:define name="HEADER_PAGINA">
styleClass="ui-button-danger" disabled="#{!agtemplateTb_templateBean.hasSelectedTb_template()}" update="@this,panel_formulario,panelAlerta"> <div class="headerContainer">
<p:confirm header="Confirmação" message="Remover o(s) tb_template(s) selecionado(s)?" icon="pi pi-exclamation-triangle" /> <h1 class="headerTitle">Dashboard Folha e Previdência</h1>
</p:commandButton> <p>Visão consolidada dos dados financeiros e previdenciários</p>
</ui:define> </div>
<ui:define name="MENU_FILTRO"> <h:panelGroup id="optionsPesquisa" layout="block" > </ui:define>
<span class="filter-container ui-input-icon-left">
<i class="pi pi-search"></i> <ui:define name="FORMULARIO">
<p:inputText onkeypress="if (event.keyCode == 13) {jQuery('#btPesquisa').trigger('click'); return false;}" style="margin-right:10px" id="pesquisa" title="Informar parametros de pesquisa" styleClass="pesquisa" value="#{agtemplateTb_templateBean.pesquisa}" > <div style="display: flex; flex-wrap: wrap; gap: 24px; margin: 24px 0;">
<p:hotkey bind="return" handler="btPesquisa.click();"/> <!-- Card 1: Folha de Pagamento -->
</p:inputText> <div style="flex: 1 1 300px; min-width: 300px; padding: 24px; border-radius: 12px; background: white; box-shadow: 0 2px 10px rgba(0,0,0,0.05); border: 1px solid #e0e0e0;">
</span> <div style="display: flex; align-items: center; margin-bottom: 16px;">
<p:commandButton title="Pesquisar" icon="pi pi-search" id="btPesquisa" update="form_formulario,messages" styleClass="bt_pesquisa m-2" action="#{agtemplateTb_templateBean.clickPesquisar()}" process="optionsPesquisa"/> <div style="background: #2E7D32; width: 40px; height: 40px; border-radius: 8px; display: flex; align-items: center; justify-content: center; margin-right: 12px;">
<p:commandButton title="Filtrar" icon="pi pi-filter" styleClass="bt_pesquisa_filtro" process="@this" oncomplete="PF('wvModalAgtemplateTb_templateFiltro').show();" /> <i class="pi pi-money-bill" style="color: white; font-size: 18px;"></i>
</h:panelGroup> </div>
</ui:define> <div>
<ui:define name="FORMULARIO"> <h4 style="margin: 0; font-weight: 600; color: #333; font-size: 18px;">Folha de Pagamento</h4>
<ui:include src="./forms/crud/Tb_template/Tb_templateConsultLazy.xhtml" /> <p style="color: #666; margin: 4px 0 0; font-size: 13px;">Comparativo entre valores líquidos e brutos</p>
</ui:define> </div>
<ui:define name="LIVRE"> </div>
<ui:include src="./forms/modal/Tb_template/Tb_templateR.xhtml" />
<ui:include src="./forms/modal/Tb_template/Tb_templateD.xhtml" /> <div style="display: flex; gap: 16px; align-items: flex-end; height: 200px; margin-bottom: 24px; justify-content: center;">
<ui:include src="./forms/modal/Tb_template/Tb_templateCU.xhtml" /> <div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<ui:include src="./forms/modal/Tb_template/Tb_templateFiltro.xhtml" /> <div style="height: 40px; width: 100%; background: #388E3C; border-radius: 6px 6px 0 0;"></div>
</ui:define> <div style="height: 50px; width: 100%; background: #66BB6A; border-radius: 0 0 6px 6px;"></div>
</ui:composition> <div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Jan</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="height: 60px; width: 100%; background: #388E3C; border-radius: 6px 6px 0 0;"></div>
<div style="height: 90px; width: 100%; background: #66BB6A; border-radius: 0 0 6px 6px;"></div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Fev</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="height: 40px; width: 100%; background: #388E3C; border-radius: 6px 6px 0 0;"></div>
<div style="height: 70px; width: 100%; background: #66BB6A; border-radius: 0 0 6px 6px;"></div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Mar</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="height: 35px; width: 100%; background: #388E3C; border-radius: 6px 6px 0 0;"></div>
<div style="height: 40px; width: 100%; background: #66BB6A; border-radius: 0 0 6px 6px;"></div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Abr</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="height: 45px; width: 100%; background: #388E3C; border-radius: 6px 6px 0 0;"></div>
<div style="height: 60px; width: 100%; background: #66BB6A; border-radius: 0 0 6px 6px;"></div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Mai</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="height: 40px; width: 100%; background: #388E3C; border-radius: 6px 6px 0 0;"></div>
<div style="height: 65px; width: 100%; background: #66BB6A; border-radius: 0 0 6px 6px;"></div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Jun</div>
</div>
</div>
<div style="display: flex; gap: 24px; font-size: 13px; color: #444; margin-bottom: 12px; justify-content: center;">
<div style="display: flex; align-items: center;"><span style="display:inline-block;width:14px;height:14px;background:#66BB6A;border-radius:3px;margin-right:8px;"></span>Valor Líquido</div>
<div style="display: flex; align-items: center;"><span style="display:inline-block;width:14px;height:14px;background:#388E3C;border-radius:3px;margin-right:8px;"></span>Valor Bruto</div>
</div>
</div>
<!-- Card 2: Contribuições Previdenciárias -->
<div style="flex: 1 1 300px; min-width: 300px; padding: 24px; border-radius: 12px; background: white; box-shadow: 0 2px 10px rgba(0,0,0,0.05); border: 1px solid #e0e0e0;">
<div style="display: flex; align-items: center; margin-bottom: 16px;">
<div style="background: #2E7D32; width: 40px; height: 40px; border-radius: 8px; display: flex; align-items: center; justify-content: center; margin-right: 12px;">
<i class="pi pi-shield" style="color: white; font-size: 18px;"></i>
</div>
<div>
<h4 style="margin: 0; font-weight: 600; color: #333; font-size: 18px;">Contribuições Previdenciárias</h4>
<p style="color: #666; margin: 4px 0 0; font-size: 13px;">Desembolsos mensais para INSS</p>
</div>
</div>
<div style="display: flex; justify-content: flex-end; margin-bottom: 16px;">
<p:selectOneMenu value="#{agtemplateDashboardBean.filtro}" style="width: 180px;" effect="fade">
<f:selectItem itemLabel="Últimos 6 meses" itemValue="6meses" />
<f:selectItem itemLabel="Últimos 12 meses" itemValue="12meses" />
<f:selectItem itemLabel="Ano atual" itemValue="anoatual" />
</p:selectOneMenu>
</div>
<div style="display: flex; gap: 16px; align-items: flex-end; height: 200px; margin-bottom: 16px; justify-content: center;">
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="background: linear-gradient(to top, #4CAF50, #81C784); height: 80px; width: 100%; border-radius: 6px 6px 0 0; position: relative; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; top: -28px; left: 50%; transform: translateX(-50%); font-size: 11px; background: #2E7D32; color: white; padding: 4px 8px; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">R$ 186k</span>
</div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Jan</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="background: linear-gradient(to top, #4CAF50, #81C784); height: 130px; width: 100%; border-radius: 6px 6px 0 0; position: relative; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; top: -28px; left: 50%; transform: translateX(-50%); font-size: 11px; background: #2E7D32; color: white; padding: 4px 8px; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">R$ 305k</span>
</div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Fev</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="background: linear-gradient(to top, #4CAF50, #81C784); height: 100px; width: 100%; border-radius: 6px 6px 0 0; position: relative; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; top: -28px; left: 50%; transform: translateX(-50%); font-size: 11px; background: #2E7D32; color: white; padding: 4px 8px; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">R$ 237k</span>
</div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Mar</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="background: linear-gradient(to top, #4CAF50, #81C784); height: 30px; width: 100%; border-radius: 6px 6px 0 0; position: relative; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; top: -28px; left: 50%; transform: translateX(-50%); font-size: 11px; background: #2E7D32; color: white; padding: 4px 8px; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">R$ 73k</span>
</div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Abr</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="background: linear-gradient(to top, #4CAF50, #81C784); height: 90px; width: 100%; border-radius: 6px 6px 0 0; position: relative; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; top: -28px; left: 50%; transform: translateX(-50%); font-size: 11px; background: #2E7D32; color: white; padding: 4px 8px; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">R$ 209k</span>
</div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Mai</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="background: linear-gradient(to top, #4CAF50, #81C784); height: 95px; width: 100%; border-radius: 6px 6px 0 0; position: relative; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; top: -28px; left: 50%; transform: translateX(-50%); font-size: 11px; background: #2E7D32; color: white; padding: 4px 8px; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">R$ 214k</span>
</div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Jun</div>
</div>
</div>
</div>
<!-- Card 3: Despesas por Departamento -->
<div style="flex: 1 1 300px; min-width: 300px; padding: 24px; border-radius: 12px; background: white; box-shadow: 0 2px 10px rgba(0,0,0,0.05); border: 1px solid #e0e0e0;">
<div style="display: flex; align-items: center; margin-bottom: 16px;">
<div style="background: #2E7D32; width: 40px; height: 40px; border-radius: 8px; display: flex; align-items: center; justify-content: center; margin-right: 12px;">
<i class="pi pi-sitemap" style="color: white; font-size: 18px;"></i>
</div>
<div>
<h4 style="margin: 0; font-weight: 600; color: #333; font-size: 18px;">Despesas por Departamento</h4>
<p style="color: #666; margin: 4px 0 0; font-size: 13px;">Distribuição dos custos de pessoal</p>
</div>
</div>
<div style="margin-bottom: 16px;">
<div style="background: linear-gradient(to right, #43A047, #66BB6A); height: 32px; width: 60%; border-radius: 16px; margin-bottom: 12px; position: relative; min-width: 186px; max-width: 100%; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; left: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">TI</span>
<span style="position: absolute; right: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">R$ 186k</span>
</div>
<div style="background: linear-gradient(to right, #43A047, #66BB6A); height: 32px; width: 85%; border-radius: 16px; margin-bottom: 12px; position: relative; min-width: 305px; max-width: 100%; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; left: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">Administrativo</span>
<span style="position: absolute; right: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">R$ 305k</span>
</div>
<div style="background: linear-gradient(to right, #43A047, #66BB6A); height: 32px; width: 70%; border-radius: 16px; margin-bottom: 12px; position: relative; min-width: 237px; max-width: 100%; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; left: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">Vendas</span>
<span style="position: absolute; right: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">R$ 237k</span>
</div>
<div style="background: linear-gradient(to right, #43A047, #66BB6A); height: 32px; width: 25%; border-radius: 16px; margin-bottom: 12px; position: relative; min-width: 73px; max-width: 100%; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; left: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">RH</span>
<span style="position: absolute; right: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">R$ 73k</span>
</div>
<div style="background: linear-gradient(to right, #43A047, #66BB6A); height: 32px; width: 65%; border-radius: 16px; margin-bottom: 12px; position: relative; min-width: 209px; max-width: 100%; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; left: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">Produção</span>
<span style="position: absolute; right: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">R$ 209k</span>
</div>
<div style="background: linear-gradient(to right, #43A047, #66BB6A); height: 32px; width: 67%; border-radius: 16px; position: relative; min-width: 214px; max-width: 100%; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; left: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">Marketing</span>
<span style="position: absolute; right: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">R$ 214k</span>
</div>
</div>
</div>
</div>
</ui:define>
</ui:composition>

View File

@ -10,8 +10,7 @@ template="../template/template.xhtml" >
<ui:define name="HEAD_TITULO_PAGINA">HOME</ui:define> <ui:define name="HEAD_TITULO_PAGINA">HOME</ui:define>
<ui:define name="TITULO_PAGINA"><p:menuitem value="agtemplate" url="#" /></ui:define> <ui:define name="TITULO_PAGINA"><p:menuitem value="agtemplate" url="#" /></ui:define>
<ui:define name="CAMINHO_PAGINA">agtemplate</ui:define> <ui:define name="CAMINHO_PAGINA">agtemplate</ui:define>
<ui:define name="MENU_PAGINA"> <ui:define name="MENU_PAGINA"></ui:define>
</ui:define>
<ui:define name="FORMULARIO"></ui:define> <ui:define name="FORMULARIO"></ui:define>
<ui:define name="LIVRE"> <ui:define name="LIVRE">
</ui:define> </ui:define>

View File

@ -114,6 +114,17 @@
src: url("#{resource['poseidon-layout:fonts/din-next-black-italic.otf']}") src: url("#{resource['poseidon-layout:fonts/din-next-black-italic.otf']}")
format('opentype'); format('opentype');
} }
.headerContainer {
padding: 12px 32px;
}
.headerContainer .headerTitle {
margin: 0;
font-size: 28px;
font-weight: 500;
}
h1, h1,
h2, h2,
h3, h3,
@ -3806,6 +3817,7 @@ p:last-child {
.menu-wrapper .layout-menu-container { .menu-wrapper .layout-menu-container {
overflow: auto; overflow: auto;
height: 100%; height: 100%;
padding: 12px 32px;
} }
.menu-wrapper .layout-menu-container .layout-menu { .menu-wrapper .layout-menu-container .layout-menu {
list-style-type: none; list-style-type: none;
@ -4175,7 +4187,6 @@ p:last-child {
.layout-menu-container .layout-menu-container
.layout-menu { .layout-menu {
list-style-type: none; list-style-type: none;
margin: 0px 16px;
padding-bottom: 0px; padding-bottom: 0px;
display: -ms-flexbox; display: -ms-flexbox;
display: flex; display: flex;

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -103,21 +103,23 @@
<div class="layout-main"> <div class="layout-main">
<ui:include src="./breadcrumb.xhtml" /> <ui:include src="./breadcrumb.xhtml" />
<ui:insert name="HEADER_PAGINA" />
<div class="layout-content"> <div class="layout-content">
<h:form prependId="false"> <h:form prependId="false">
<div class="grid crud-demo"> <div class="grid crud-demo">
<div class="col-12"> <div class="col-12">
<div class="card"> <div>
<p:growl id="panelAlerta" showDetail="true" /> <p:growl id="panelAlerta" showDetail="true" />
<!-- <p:toolbar>
<p:toolbar styleClass="mb-4">
<p:toolbarGroup> <p:toolbarGroup>
<ui:insert name="MENU_BOTOES"> </ui:insert> <ui:insert name="MENU_BOTOES"></ui:insert>
</p:toolbarGroup> </p:toolbarGroup>
<p:toolbarGroup> <p:toolbarGroup>
<ui:insert name="MENU_FILTRO"> </ui:insert> <ui:insert name="MENU_FILTRO"></ui:insert>
</p:toolbarGroup> </p:toolbarGroup>
</p:toolbar> </p:toolbar>-->
<!-- TABELA --> <!-- TABELA -->
<h:panelGroup layout="block" id="form_formulario"> <h:panelGroup layout="block" id="form_formulario">

Binary file not shown.

View File

@ -53,7 +53,7 @@
<url-pattern>*.xhtml</url-pattern> <url-pattern>*.xhtml</url-pattern>
</servlet-mapping> </servlet-mapping>
<welcome-file-list> <welcome-file-list>
<welcome-file>index.xhtml</welcome-file> <welcome-file>./agtemplate/dashboard.xhtml</welcome-file>
</welcome-file-list> </welcome-file-list>
<mime-mapping> <mime-mapping>
<extension>otf</extension> <extension>otf</extension>

View File

@ -1,44 +1,104 @@
<?xml version='1.0' encoding='UTF-8' ?> <?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html> <!DOCTYPE html>
<ui:composition xmlns="http://www.w3.org/1999/xhtml" <ui:composition
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui" xmlns:h="http://java.sun.com/jsf/html"
xmlns:jsf="http://xmlns.jcp.org/jsf" xmlns:p="http://primefaces.org/ui"
template="../template/template.xhtml" > xmlns:jsf="http://xmlns.jcp.org/jsf"
<ui:define name="HEAD_TITULO_PAGINA">tb_template</ui:define> template="../template/template.xhtml"
<ui:define name="TITULO_PAGINA"><p:menuitem value="tb_template" url="#" /></ui:define> >
<ui:define name="SISTEMA_PAGINA">Agtemplate</ui:define> <ui:define name="HEAD_TITULO_PAGINA">tb_template</ui:define>
<ui:define name="CAMINHO_PAGINA">tb_template</ui:define> <ui:define name="TITULO_PAGINA"
<ui:define name="MENU_BOTOES"> ><p:menuitem value="tb_template" url="#"
<p:commandButton value="Novo" icon="pi pi-plus" update="@([id$=modalAgtemplateTb_templateCU])" action="#{agtemplateTb_templateBean.clickNovo()}" oncomplete="PF('wvModalAgtemplateTb_templateCU').show();" /></ui:define>
styleClass="ui-button-success" style="margin-right: .5rem" process="@this" > <ui:define name="SISTEMA_PAGINA">agTemplate</ui:define>
<p:resetInput target="modalAgtemplateTb_templateCU"/> <ui:define name="CAMINHO_PAGINA">Dashboard</ui:define>
</p:commandButton>
<p:commandButton process="@this" id="deleteAgtemplateTb_templateButton" value="#{agtemplateTb_templateBean.deleteButtonMessage}" icon="pi pi-trash" actionListener="#{agtemplateTb_templateBean.deleteSelectedTb_template}" <ui:define name="HEADER_PAGINA">
styleClass="ui-button-danger" disabled="#{!agtemplateTb_templateBean.hasSelectedTb_template()}" update="@this,panel_formulario,panelAlerta"> <div class="headerContainer">
<p:confirm header="Confirmação" message="Remover o(s) tb_template(s) selecionado(s)?" icon="pi pi-exclamation-triangle" /> <h1 class="headerTitle">Dashboard</h1>
</p:commandButton> <p>Visualização dos dados parametrizados.</p>
</ui:define> </div>
<ui:define name="MENU_FILTRO"> <h:panelGroup id="optionsPesquisa" layout="block" > </ui:define>
<span class="filter-container ui-input-icon-left">
<i class="pi pi-search"></i> <ui:define name="MENU_BOTOES">
<p:inputText onkeypress="if (event.keyCode == 13) {jQuery('#btPesquisa').trigger('click'); return false;}" style="margin-right:10px" id="pesquisa" title="Informar parametros de pesquisa" styleClass="pesquisa" value="#{agtemplateTb_templateBean.pesquisa}" > <p:commandButton
<p:hotkey bind="return" handler="btPesquisa.click();"/> value="Novo"
</p:inputText> icon="pi pi-plus"
</span> update="@([id$=modalAgtemplateTb_templateCU])"
<p:commandButton title="Pesquisar" icon="pi pi-search" id="btPesquisa" update="form_formulario,messages" styleClass="bt_pesquisa m-2" action="#{agtemplateTb_templateBean.clickPesquisar()}" process="optionsPesquisa"/> action="#{agtemplateTb_templateBean.clickNovo()}"
<p:commandButton title="Filtrar" icon="pi pi-filter" styleClass="bt_pesquisa_filtro" process="@this" oncomplete="PF('wvModalAgtemplateTb_templateFiltro').show();" /> oncomplete="PF('wvModalAgtemplateTb_templateCU').show();"
</h:panelGroup> styleClass="ui-button-success"
</ui:define> style="margin-right: 0.5rem"
<ui:define name="FORMULARIO"> process="@this"
<ui:include src="./forms/crud/Tb_template/Tb_templateConsultLazy.xhtml" /> >
</ui:define> <p:resetInput target="modalAgtemplateTb_templateCU" />
<ui:define name="LIVRE"> </p:commandButton>
<ui:include src="./forms/modal/Tb_template/Tb_templateR.xhtml" /> <p:commandButton
<ui:include src="./forms/modal/Tb_template/Tb_templateD.xhtml" /> process="@this"
<ui:include src="./forms/modal/Tb_template/Tb_templateCU.xhtml" /> id="deleteAgtemplateTb_templateButton"
<ui:include src="./forms/modal/Tb_template/Tb_templateFiltro.xhtml" /> value="#{agtemplateTb_templateBean.deleteButtonMessage}"
</ui:define> icon="pi pi-trash"
actionListener="#{agtemplateTb_templateBean.deleteSelectedTb_template}"
styleClass="ui-button-danger"
disabled="#{!agtemplateTb_templateBean.hasSelectedTb_template()}"
update="@this,panel_formulario,panelAlerta"
>
<p:confirm
header="Confirmação"
message="Remover o(s) tb_template(s) selecionado(s)?"
icon="pi pi-exclamation-triangle"
/>
</p:commandButton>
</ui:define>
<ui:define name="MENU_FILTRO">
<h:panelGroup id="optionsPesquisa" layout="block">
<span class="filter-container ui-input-icon-left">
<i class="pi pi-search"></i>
<p:inputText
onkeypress="if (event.keyCode == 13) {
jQuery('#btPesquisa').trigger('click');
return false;
}"
style="margin-right: 10px"
id="pesquisa"
title="Informar parametros de pesquisa"
styleClass="pesquisa"
value="#{agtemplateTb_templateBean.pesquisa}"
>
<p:hotkey bind="return" handler="btPesquisa.click();" />
</p:inputText>
</span>
<p:commandButton
title="Pesquisar"
icon="pi pi-search"
id="btPesquisa"
update="form_formulario,messages"
styleClass="bt_pesquisa m-2"
action="#{agtemplateTb_templateBean.clickPesquisar()}"
process="optionsPesquisa"
/>
<p:commandButton
title="Filtrar"
icon="pi pi-filter"
styleClass="bt_pesquisa_filtro"
process="@this"
oncomplete="PF('wvModalAgtemplateTb_templateFiltro').show();"
/>
</h:panelGroup>
</ui:define>
<ui:define name="FORMULARIO">
<ui:include src="./forms/crud/Tb_template/Tb_templateConsultLazy.xhtml" />
</ui:define>
<ui:define name="LIVRE">
<ui:include src="./forms/modal/Tb_template/Tb_templateR.xhtml" />
<ui:include src="./forms/modal/Tb_template/Tb_templateD.xhtml" />
<ui:include src="./forms/modal/Tb_template/Tb_templateCU.xhtml" />
<ui:include src="./forms/modal/Tb_template/Tb_templateFiltro.xhtml" />
</ui:define>
</ui:composition> </ui:composition>

View File

@ -0,0 +1,180 @@
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html>
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:jsf="http://xmlns.jcp.org/jsf"
template="../template/template.xhtml"
>
<ui:define name="HEAD_TITULO_PAGINA">tb_template</ui:define>
<ui:define name="TITULO_PAGINA"
><p:menuitem value="tb_template" url="#"
/></ui:define>
<ui:define name="SISTEMA_PAGINA">agTemplate</ui:define>
<ui:define name="CAMINHO_PAGINA">Dashboard</ui:define>
<ui:define name="HEADER_PAGINA">
<div class="headerContainer">
<h1 class="headerTitle">Dashboard Folha e Previdência</h1>
<p>Visão consolidada dos dados financeiros e previdenciários</p>
</div>
</ui:define>
<ui:define name="FORMULARIO">
<div style="display: flex; flex-wrap: wrap; gap: 24px; margin: 24px 0;">
<!-- Card 1: Folha de Pagamento -->
<div style="flex: 1 1 300px; min-width: 300px; padding: 24px; border-radius: 12px; background: white; box-shadow: 0 2px 10px rgba(0,0,0,0.05); border: 1px solid #e0e0e0;">
<div style="display: flex; align-items: center; margin-bottom: 16px;">
<div style="background: #2E7D32; width: 40px; height: 40px; border-radius: 8px; display: flex; align-items: center; justify-content: center; margin-right: 12px;">
<i class="pi pi-money-bill" style="color: white; font-size: 18px;"></i>
</div>
<div>
<h4 style="margin: 0; font-weight: 600; color: #333; font-size: 18px;">Folha de Pagamento</h4>
<p style="color: #666; margin: 4px 0 0; font-size: 13px;">Comparativo entre valores líquidos e brutos</p>
</div>
</div>
<div style="display: flex; gap: 16px; align-items: flex-end; height: 200px; margin-bottom: 24px; justify-content: center;">
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="height: 40px; width: 100%; background: #388E3C; border-radius: 6px 6px 0 0;"></div>
<div style="height: 50px; width: 100%; background: #66BB6A; border-radius: 0 0 6px 6px;"></div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Jan</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="height: 60px; width: 100%; background: #388E3C; border-radius: 6px 6px 0 0;"></div>
<div style="height: 90px; width: 100%; background: #66BB6A; border-radius: 0 0 6px 6px;"></div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Fev</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="height: 40px; width: 100%; background: #388E3C; border-radius: 6px 6px 0 0;"></div>
<div style="height: 70px; width: 100%; background: #66BB6A; border-radius: 0 0 6px 6px;"></div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Mar</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="height: 35px; width: 100%; background: #388E3C; border-radius: 6px 6px 0 0;"></div>
<div style="height: 40px; width: 100%; background: #66BB6A; border-radius: 0 0 6px 6px;"></div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Abr</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="height: 45px; width: 100%; background: #388E3C; border-radius: 6px 6px 0 0;"></div>
<div style="height: 60px; width: 100%; background: #66BB6A; border-radius: 0 0 6px 6px;"></div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Mai</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="height: 40px; width: 100%; background: #388E3C; border-radius: 6px 6px 0 0;"></div>
<div style="height: 65px; width: 100%; background: #66BB6A; border-radius: 0 0 6px 6px;"></div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Jun</div>
</div>
</div>
<div style="display: flex; gap: 24px; font-size: 13px; color: #444; margin-bottom: 12px; justify-content: center;">
<div style="display: flex; align-items: center;"><span style="display:inline-block;width:14px;height:14px;background:#66BB6A;border-radius:3px;margin-right:8px;"></span>Valor Líquido</div>
<div style="display: flex; align-items: center;"><span style="display:inline-block;width:14px;height:14px;background:#388E3C;border-radius:3px;margin-right:8px;"></span>Valor Bruto</div>
</div>
</div>
<!-- Card 2: Contribuições Previdenciárias -->
<div style="flex: 1 1 300px; min-width: 300px; padding: 24px; border-radius: 12px; background: white; box-shadow: 0 2px 10px rgba(0,0,0,0.05); border: 1px solid #e0e0e0;">
<div style="display: flex; align-items: center; margin-bottom: 16px;">
<div style="background: #2E7D32; width: 40px; height: 40px; border-radius: 8px; display: flex; align-items: center; justify-content: center; margin-right: 12px;">
<i class="pi pi-shield" style="color: white; font-size: 18px;"></i>
</div>
<div>
<h4 style="margin: 0; font-weight: 600; color: #333; font-size: 18px;">Contribuições Previdenciárias</h4>
<p style="color: #666; margin: 4px 0 0; font-size: 13px;">Desembolsos mensais para INSS</p>
</div>
</div>
<div style="display: flex; justify-content: flex-end; margin-bottom: 16px;">
<p:selectOneMenu value="#{agtemplateDashboardBean.filtro}" style="width: 180px;" effect="fade">
<f:selectItem itemLabel="Últimos 6 meses" itemValue="6meses" />
<f:selectItem itemLabel="Últimos 12 meses" itemValue="12meses" />
<f:selectItem itemLabel="Ano atual" itemValue="anoatual" />
</p:selectOneMenu>
</div>
<div style="display: flex; gap: 16px; align-items: flex-end; height: 200px; margin-bottom: 16px; justify-content: center;">
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="background: linear-gradient(to top, #4CAF50, #81C784); height: 80px; width: 100%; border-radius: 6px 6px 0 0; position: relative; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; top: -28px; left: 50%; transform: translateX(-50%); font-size: 11px; background: #2E7D32; color: white; padding: 4px 8px; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">R$ 186k</span>
</div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Jan</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="background: linear-gradient(to top, #4CAF50, #81C784); height: 130px; width: 100%; border-radius: 6px 6px 0 0; position: relative; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; top: -28px; left: 50%; transform: translateX(-50%); font-size: 11px; background: #2E7D32; color: white; padding: 4px 8px; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">R$ 305k</span>
</div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Fev</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="background: linear-gradient(to top, #4CAF50, #81C784); height: 100px; width: 100%; border-radius: 6px 6px 0 0; position: relative; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; top: -28px; left: 50%; transform: translateX(-50%); font-size: 11px; background: #2E7D32; color: white; padding: 4px 8px; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">R$ 237k</span>
</div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Mar</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="background: linear-gradient(to top, #4CAF50, #81C784); height: 30px; width: 100%; border-radius: 6px 6px 0 0; position: relative; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; top: -28px; left: 50%; transform: translateX(-50%); font-size: 11px; background: #2E7D32; color: white; padding: 4px 8px; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">R$ 73k</span>
</div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Abr</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="background: linear-gradient(to top, #4CAF50, #81C784); height: 90px; width: 100%; border-radius: 6px 6px 0 0; position: relative; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; top: -28px; left: 50%; transform: translateX(-50%); font-size: 11px; background: #2E7D32; color: white; padding: 4px 8px; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">R$ 209k</span>
</div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Mai</div>
</div>
<div style="width: 12%; max-width: 48px; display: flex; flex-direction: column; align-items: center;">
<div style="background: linear-gradient(to top, #4CAF50, #81C784); height: 95px; width: 100%; border-radius: 6px 6px 0 0; position: relative; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; top: -28px; left: 50%; transform: translateX(-50%); font-size: 11px; background: #2E7D32; color: white; padding: 4px 8px; border-radius: 12px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">R$ 214k</span>
</div>
<div style="font-size: 12px; margin-top: 8px; color: #555; font-weight: 500;">Jun</div>
</div>
</div>
</div>
<!-- Card 3: Despesas por Departamento -->
<div style="flex: 1 1 300px; min-width: 300px; padding: 24px; border-radius: 12px; background: white; box-shadow: 0 2px 10px rgba(0,0,0,0.05); border: 1px solid #e0e0e0;">
<div style="display: flex; align-items: center; margin-bottom: 16px;">
<div style="background: #2E7D32; width: 40px; height: 40px; border-radius: 8px; display: flex; align-items: center; justify-content: center; margin-right: 12px;">
<i class="pi pi-sitemap" style="color: white; font-size: 18px;"></i>
</div>
<div>
<h4 style="margin: 0; font-weight: 600; color: #333; font-size: 18px;">Despesas por Departamento</h4>
<p style="color: #666; margin: 4px 0 0; font-size: 13px;">Distribuição dos custos de pessoal</p>
</div>
</div>
<div style="margin-bottom: 16px;">
<div style="background: linear-gradient(to right, #43A047, #66BB6A); height: 32px; width: 60%; border-radius: 16px; margin-bottom: 12px; position: relative; min-width: 186px; max-width: 100%; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; left: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">TI</span>
<span style="position: absolute; right: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">R$ 186k</span>
</div>
<div style="background: linear-gradient(to right, #43A047, #66BB6A); height: 32px; width: 85%; border-radius: 16px; margin-bottom: 12px; position: relative; min-width: 305px; max-width: 100%; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; left: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">Administrativo</span>
<span style="position: absolute; right: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">R$ 305k</span>
</div>
<div style="background: linear-gradient(to right, #43A047, #66BB6A); height: 32px; width: 70%; border-radius: 16px; margin-bottom: 12px; position: relative; min-width: 237px; max-width: 100%; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; left: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">Vendas</span>
<span style="position: absolute; right: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">R$ 237k</span>
</div>
<div style="background: linear-gradient(to right, #43A047, #66BB6A); height: 32px; width: 25%; border-radius: 16px; margin-bottom: 12px; position: relative; min-width: 73px; max-width: 100%; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; left: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">RH</span>
<span style="position: absolute; right: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">R$ 73k</span>
</div>
<div style="background: linear-gradient(to right, #43A047, #66BB6A); height: 32px; width: 65%; border-radius: 16px; margin-bottom: 12px; position: relative; min-width: 209px; max-width: 100%; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; left: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">Produção</span>
<span style="position: absolute; right: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">R$ 209k</span>
</div>
<div style="background: linear-gradient(to right, #43A047, #66BB6A); height: 32px; width: 67%; border-radius: 16px; position: relative; min-width: 214px; max-width: 100%; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
<span style="position: absolute; left: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">Marketing</span>
<span style="position: absolute; right: 16px; top: 6px; color: white; font-size: 12px; font-weight: 500;">R$ 214k</span>
</div>
</div>
</div>
</div>
</ui:define>
</ui:composition>

View File

@ -10,8 +10,7 @@ template="../template/template.xhtml" >
<ui:define name="HEAD_TITULO_PAGINA">HOME</ui:define> <ui:define name="HEAD_TITULO_PAGINA">HOME</ui:define>
<ui:define name="TITULO_PAGINA"><p:menuitem value="agtemplate" url="#" /></ui:define> <ui:define name="TITULO_PAGINA"><p:menuitem value="agtemplate" url="#" /></ui:define>
<ui:define name="CAMINHO_PAGINA">agtemplate</ui:define> <ui:define name="CAMINHO_PAGINA">agtemplate</ui:define>
<ui:define name="MENU_PAGINA"> <ui:define name="MENU_PAGINA"></ui:define>
</ui:define>
<ui:define name="FORMULARIO"></ui:define> <ui:define name="FORMULARIO"></ui:define>
<ui:define name="LIVRE"> <ui:define name="LIVRE">
</ui:define> </ui:define>

View File

@ -114,6 +114,17 @@
src: url("#{resource['poseidon-layout:fonts/din-next-black-italic.otf']}") src: url("#{resource['poseidon-layout:fonts/din-next-black-italic.otf']}")
format('opentype'); format('opentype');
} }
.headerContainer {
padding: 12px 32px;
}
.headerContainer .headerTitle {
margin: 0;
font-size: 28px;
font-weight: 500;
}
h1, h1,
h2, h2,
h3, h3,
@ -3806,6 +3817,7 @@ p:last-child {
.menu-wrapper .layout-menu-container { .menu-wrapper .layout-menu-container {
overflow: auto; overflow: auto;
height: 100%; height: 100%;
padding: 12px 32px;
} }
.menu-wrapper .layout-menu-container .layout-menu { .menu-wrapper .layout-menu-container .layout-menu {
list-style-type: none; list-style-type: none;
@ -4175,7 +4187,6 @@ p:last-child {
.layout-menu-container .layout-menu-container
.layout-menu { .layout-menu {
list-style-type: none; list-style-type: none;
margin: 0px 16px;
padding-bottom: 0px; padding-bottom: 0px;
display: -ms-flexbox; display: -ms-flexbox;
display: flex; display: flex;

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -8697,11 +8697,8 @@ body .ui-tabs .ui-tabs-navscroller .ui-tabs-navscroller-btn.ui-state-hover {
} }
body .ui-toolbar { body .ui-toolbar {
border: 1px solid #e4e5e5;
background: #f6f9fe;
color: #515c66; color: #515c66;
padding: 1rem; padding: 1rem;
border-radius: 3px;
} }
body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title { body .ui-wizard .ui-wizard-step-titles .ui-wizard-step-title {

View File

@ -103,21 +103,23 @@
<div class="layout-main"> <div class="layout-main">
<ui:include src="./breadcrumb.xhtml" /> <ui:include src="./breadcrumb.xhtml" />
<ui:insert name="HEADER_PAGINA" />
<div class="layout-content"> <div class="layout-content">
<h:form prependId="false"> <h:form prependId="false">
<div class="grid crud-demo"> <div class="grid crud-demo">
<div class="col-12"> <div class="col-12">
<div class="card"> <div>
<p:growl id="panelAlerta" showDetail="true" /> <p:growl id="panelAlerta" showDetail="true" />
<!-- <p:toolbar>
<p:toolbar styleClass="mb-4">
<p:toolbarGroup> <p:toolbarGroup>
<ui:insert name="MENU_BOTOES"> </ui:insert> <ui:insert name="MENU_BOTOES"></ui:insert>
</p:toolbarGroup> </p:toolbarGroup>
<p:toolbarGroup> <p:toolbarGroup>
<ui:insert name="MENU_FILTRO"> </ui:insert> <ui:insert name="MENU_FILTRO"></ui:insert>
</p:toolbarGroup> </p:toolbarGroup>
</p:toolbar> </p:toolbar>-->
<!-- TABELA --> <!-- TABELA -->
<h:panelGroup layout="block" id="form_formulario"> <h:panelGroup layout="block" id="form_formulario">

Some files were not shown because too many files have changed in this diff Show More