att
@@ -0,0 +1,23 @@
|
||||
application.type=layout
|
||||
application.code=helloLayout
|
||||
application.title=helloLayout
|
||||
application.description=helloLayout
|
||||
application.fluig.version=null
|
||||
application.category=SYSTEM
|
||||
application.renderer=freemarker
|
||||
developer.code=andrey.cunha
|
||||
developer.name=andrey.cunha
|
||||
developer.url=http://www.fluig.com
|
||||
layout.defaultSlot=SlotA
|
||||
layout.file=layout.ftl
|
||||
locale.file.base.name=helloLayout
|
||||
slot.SlotGlobalAlert=alertpopover
|
||||
slot.SlotInstantSearch=suggestsearch
|
||||
slot.SlotLogin=sociallogin
|
||||
slot.SlotMenu=menu
|
||||
slot.SlotUsePolicy=usepolicy
|
||||
application.icon=icon.png
|
||||
application.resource.css.1=/portal/resources/css/wcm_responsive_layout.css
|
||||
application.responsiveLayout=true
|
||||
application.newBuilder=true
|
||||
hash=4a16315e9e66fa7d797b3f6b1fb365b69f9a4ce2
|
||||
@@ -0,0 +1 @@
|
||||
application.title=applicationTitle
|
||||
@@ -0,0 +1 @@
|
||||
application.title=applicationTitle
|
||||
@@ -0,0 +1 @@
|
||||
application.title=applicationTitle
|
||||
@@ -0,0 +1 @@
|
||||
application.title=applicationTitle
|
||||
@@ -0,0 +1,41 @@
|
||||
<#import "/wcm.ftl" as wcm />
|
||||
|
||||
<#-- Variaveis globais para os layouts -->
|
||||
<#import "/layout-globals.ftl" as globals />
|
||||
|
||||
<!-- layout ECM-DEFAULT-DASHBOARD -->
|
||||
|
||||
<#if pageRender.isPreviewMode() = true>
|
||||
<@wcm.previewPageAlert />
|
||||
<@wcm.deviceTogglePreview />
|
||||
</#if>
|
||||
|
||||
<div class="wcm-wrapper-content ${wcmLayoutEditClass!""} ${pageAuthTypeClass!""}">
|
||||
|
||||
<#if pageRender.isEditMode() != true>
|
||||
<@wcm.header />
|
||||
<@wcm.menu />
|
||||
</#if>
|
||||
|
||||
<div class="wcm-all-content">
|
||||
|
||||
<div id="wcm-content" class="clearfix wcm-background">
|
||||
|
||||
<#if pageRender.isEditMode() = true>
|
||||
<@wcm.editHeader />
|
||||
<@wcm.widgetsList />
|
||||
</#if>
|
||||
|
||||
<div id="${divMasterId!""}" class="clearfix">
|
||||
|
||||
<!-- Conteúdo aqui -->
|
||||
|
||||
|
||||
<#if fluigThemeCode != "responsive_theme">
|
||||
<@wcm.footer layoutuserlabel="wcm.layoutdefaultecmdashboard.user" />
|
||||
</#if>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<jboss-web>
|
||||
<context-root>/helloLayout</context-root>
|
||||
<disable-cross-context>false</disable-cross-context>
|
||||
</jboss-web>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||
version="3.0">
|
||||
<session-config>
|
||||
<session-timeout>
|
||||
30
|
||||
</session-timeout>
|
||||
</session-config>
|
||||
</web-app>
|
||||
@@ -0,0 +1 @@
|
||||
/*insira aqui seu código CSS*/
|
||||
|
After Width: | Height: | Size: 587 B |
@@ -0,0 +1,2 @@
|
||||
// Insira aqui seu codigo JavaScript
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
application.type=widget
|
||||
application.code=dashconforme
|
||||
application.title=dashconforme
|
||||
application.description=dashconforme
|
||||
application.fluig.version=null
|
||||
application.category=SYSTEM
|
||||
application.renderer=freemarker
|
||||
developer.code=andrey.cunha
|
||||
developer.name=andrey.cunha
|
||||
developer.url=http://www.fluig.com
|
||||
application.uiwidget=true
|
||||
application.mobileapp=false
|
||||
application.version=${build.version}-${build.revision}
|
||||
view.file=view.ftl
|
||||
edit.file=edit.ftl
|
||||
locale.file.base.name=dashconforme
|
||||
application.resource.js.1=/resources/js/dashconforme.js
|
||||
application.resource.css.2=/resources/css/dashconforme.css
|
||||
hash=4a16315e9e66fa7d797b3f6b1fb365b69f9a4ce2
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
<div id="MyWidget_${instanceId}" class="super-widget wcm-widget-class fluig-style-guide" data-params="MyWidget.instance()">
|
||||
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<div id="dashConforme_${instanceId}" class="super-widget wcm-widget-class fluig-style-guide" data-params="DashConforme.instance()">
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Top Inconformidades</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<canvas id="graficoConforme_${instanceId}" height="120"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<jboss-web>
|
||||
<context-root>/dashconforme</context-root>
|
||||
<disable-cross-context>false</disable-cross-context>
|
||||
</jboss-web>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||
version="3.0">
|
||||
<session-config>
|
||||
<session-timeout>
|
||||
30
|
||||
</session-timeout>
|
||||
</session-config>
|
||||
</web-app>
|
||||
@@ -0,0 +1,3 @@
|
||||
div[id^="dashConforme_"] canvas {
|
||||
max-height: 420px;
|
||||
}
|
||||
|
After Width: | Height: | Size: 7.7 KiB |
@@ -0,0 +1,149 @@
|
||||
var DashConforme = SuperWidget.extend({
|
||||
|
||||
chart:null,
|
||||
|
||||
init:function(){
|
||||
|
||||
var self=this;
|
||||
this.renderAmostra();
|
||||
|
||||
window.addEventListener("dashboardData",function(e){
|
||||
|
||||
self.render(e.detail || []);
|
||||
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
render:function(dados){
|
||||
|
||||
var mapa = {};
|
||||
|
||||
dados.forEach(function(item){
|
||||
var lista = String(item.listaNaoConforme || "").trim();
|
||||
if(!lista){
|
||||
return;
|
||||
}
|
||||
|
||||
lista.split("|").forEach(function(indicador){
|
||||
var chave = String(indicador || "").trim();
|
||||
if(!chave){
|
||||
return;
|
||||
}
|
||||
if(!mapa[chave]){
|
||||
mapa[chave] = 0;
|
||||
}
|
||||
mapa[chave] += 1;
|
||||
});
|
||||
});
|
||||
|
||||
var pares = Object.keys(mapa).map(function(k){
|
||||
return {nome:k,valor:mapa[k]};
|
||||
});
|
||||
|
||||
pares.sort(function(a,b){
|
||||
return b.valor - a.valor;
|
||||
});
|
||||
|
||||
pares = pares.slice(0,10);
|
||||
|
||||
var labels = pares.map(function(p){ return p.nome; });
|
||||
var valores = pares.map(function(p){ return p.valor; });
|
||||
|
||||
if(!labels.length){
|
||||
labels = ["Aguardando filtro"];
|
||||
valores = [0];
|
||||
}
|
||||
|
||||
var ctx = document.getElementById("graficoConforme_"+this.instanceId);
|
||||
if(!ctx){
|
||||
return;
|
||||
}
|
||||
|
||||
if(this.chart){
|
||||
this.chart.destroy();
|
||||
}
|
||||
|
||||
this.chart = new Chart(ctx,{
|
||||
type:"bar",
|
||||
data:{
|
||||
labels:labels,
|
||||
datasets:[{
|
||||
label:"Ocorrências",
|
||||
data:valores,
|
||||
backgroundColor:"#f39c12"
|
||||
}]
|
||||
},
|
||||
options:{
|
||||
responsive:true,
|
||||
maintainAspectRatio:false,
|
||||
indexAxis:"x",
|
||||
plugins:{
|
||||
legend:{display:false},
|
||||
tooltip:{
|
||||
callbacks:{
|
||||
title:function(items){
|
||||
if(labels.length === 1 && labels[0] === "Aguardando filtro"){
|
||||
return "Aguardando filtro";
|
||||
}
|
||||
return items && items.length ? labels[items[0].dataIndex] : "";
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
scales:{
|
||||
x:{
|
||||
ticks:{
|
||||
autoSkip:false,
|
||||
maxRotation:35,
|
||||
minRotation:0,
|
||||
callback:function(value,index){
|
||||
var txt = labels[index] || "";
|
||||
return txt.length > 38 ? txt.substring(0,38) + "..." : txt;
|
||||
}
|
||||
}
|
||||
},
|
||||
y:{
|
||||
beginAtZero:true,
|
||||
precision:0
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
renderAmostra:function(){
|
||||
var ctx = document.getElementById("graficoConforme_"+this.instanceId);
|
||||
if(!ctx){
|
||||
return;
|
||||
}
|
||||
|
||||
if(this.chart){
|
||||
this.chart.destroy();
|
||||
}
|
||||
|
||||
this.chart = new Chart(ctx,{
|
||||
type:"bar",
|
||||
data:{
|
||||
labels:["Aguardando filtro"],
|
||||
datasets:[{
|
||||
label:"Ocorrências",
|
||||
data:[0],
|
||||
backgroundColor:"#cfd8dc"
|
||||
}]
|
||||
},
|
||||
options:{
|
||||
responsive:true,
|
||||
maintainAspectRatio:false,
|
||||
plugins:{legend:{display:false}},
|
||||
scales:{
|
||||
x:{ticks:{autoSkip:false,maxRotation:0,minRotation:0}},
|
||||
y:{beginAtZero:true,precision:0}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
@@ -0,0 +1,19 @@
|
||||
application.type=widget
|
||||
application.code=dashdata
|
||||
application.title=dashdata
|
||||
application.description=dashdata
|
||||
application.fluig.version=null
|
||||
application.category=SYSTEM
|
||||
application.renderer=freemarker
|
||||
developer.code=andrey.cunha
|
||||
developer.name=andrey.cunha
|
||||
developer.url=http://www.fluig.com
|
||||
application.uiwidget=true
|
||||
application.mobileapp=false
|
||||
application.version=${build.version}-${build.revision}
|
||||
view.file=view.ftl
|
||||
edit.file=edit.ftl
|
||||
locale.file.base.name=dashdata
|
||||
application.resource.js.1=/resources/js/dashdata.js
|
||||
application.resource.css.2=/resources/css/dashdata.css
|
||||
hash=4a16315e9e66fa7d797b3f6b1fb365b69f9a4ce2
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
<div id="MyWidget_${instanceId}" class="super-widget wcm-widget-class fluig-style-guide" data-params="MyWidget.instance()">
|
||||
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
<div id="dashdata_${instanceId}"
|
||||
class="super-widget wcm-widget-class"
|
||||
data-params="DashData.instance()">
|
||||
</div>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<jboss-web>
|
||||
<context-root>/dashdata</context-root>
|
||||
<disable-cross-context>false</disable-cross-context>
|
||||
</jboss-web>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||
version="3.0">
|
||||
<session-config>
|
||||
<session-timeout>
|
||||
30
|
||||
</session-timeout>
|
||||
</session-config>
|
||||
</web-app>
|
||||
@@ -0,0 +1 @@
|
||||
/* Coloque aqui seu codigo CSS */
|
||||
|
After Width: | Height: | Size: 7.7 KiB |
@@ -0,0 +1,123 @@
|
||||
var DashData = SuperWidget.extend({
|
||||
|
||||
init:function(){
|
||||
|
||||
console.log("DashData carregado");
|
||||
|
||||
var self=this;
|
||||
|
||||
window.addEventListener("dashboardFiltro",function(e){
|
||||
|
||||
console.log("DashData recebeu filtros:",e.detail);
|
||||
|
||||
self.carregar(e.detail);
|
||||
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
carregar:function(filtros){
|
||||
|
||||
console.log("Consultando dataset...", filtros);
|
||||
|
||||
var self=this;
|
||||
|
||||
$.ajax({
|
||||
|
||||
url:"/api/public/ecm/dataset/search",
|
||||
type:"POST",
|
||||
contentType:"application/json",
|
||||
|
||||
data:JSON.stringify({
|
||||
datasetId:"ds_dashboard_checklist"
|
||||
}),
|
||||
|
||||
success:function(res){
|
||||
|
||||
console.log("Resposta dataset:",res);
|
||||
|
||||
var dados=res.content || [];
|
||||
|
||||
console.log("Quantidade registros:", dados.length);
|
||||
|
||||
// FILTRO POR LOJA
|
||||
if(filtros.loja){
|
||||
|
||||
dados = dados.filter(function(item){
|
||||
|
||||
return normalizaTexto(item.loja) === normalizaTexto(filtros.loja);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
// FILTRO POR DATA
|
||||
if(filtros.dataInicio || filtros.dataFim){
|
||||
|
||||
dados = dados.filter(function(item){
|
||||
|
||||
var dataInicioAuditoria = normalizaData(item.dataAuditoria);
|
||||
var dataLimite = normalizaData(item.dataLimite);
|
||||
var inicioFiltro = normalizaData(filtros.dataInicio);
|
||||
var fimFiltro = normalizaData(filtros.dataFim);
|
||||
|
||||
// Mantem quando data de auditoria OU data limite estiver na faixa filtrada
|
||||
return dataNaFaixa(dataInicioAuditoria, inicioFiltro, fimFiltro) ||
|
||||
dataNaFaixa(dataLimite, inicioFiltro, fimFiltro);
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
// Mantem somente auditorias com status final (evita divergencia entre total e KPIs)
|
||||
var antesStatus = dados.length;
|
||||
dados = dados.filter(function(item){
|
||||
var st = normalizaTexto(item.saidaAnalise || item.status || "");
|
||||
return st === "CONFORME" || st === "NAO_CONFORME";
|
||||
});
|
||||
console.log("Registros com status final:", dados.length, "de", antesStatus);
|
||||
|
||||
// Ordena por data de auditoria mais recente
|
||||
dados.sort(function(a,b){
|
||||
var da = normalizaData(a.dataAuditoria);
|
||||
var db = normalizaData(b.dataAuditoria);
|
||||
if(da < db) return 1;
|
||||
if(da > db) return -1;
|
||||
return 0;
|
||||
});
|
||||
|
||||
console.log("Registros filtrados:", dados);
|
||||
|
||||
window.dispatchEvent(
|
||||
new CustomEvent("dashboardData",{detail:dados})
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function normalizaTexto(valor){
|
||||
return String(valor || "").trim().toUpperCase();
|
||||
}
|
||||
|
||||
function normalizaData(valor){
|
||||
var v = String(valor || "").trim();
|
||||
return v;
|
||||
}
|
||||
|
||||
function dataNaFaixa(data, inicio, fim){
|
||||
if(!data){
|
||||
return false;
|
||||
}
|
||||
if(inicio && data < inicio){
|
||||
return false;
|
||||
}
|
||||
if(fim && data > fim){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
application.type=widget
|
||||
application.code=dashgrafico
|
||||
application.title=dashgrafico
|
||||
application.description=dashgrafico
|
||||
application.fluig.version=null
|
||||
application.category=SYSTEM
|
||||
application.renderer=freemarker
|
||||
developer.code=G-ALES1NT-TEC09
|
||||
developer.name=andrey.cunha
|
||||
developer.url=http://www.fluig.com
|
||||
application.uiwidget=true
|
||||
application.mobileapp=false
|
||||
application.version=${build.version}-${build.revision}
|
||||
view.file=view.ftl
|
||||
edit.file=edit.ftl
|
||||
locale.file.base.name=dashgrafico
|
||||
application.resource.js.1=/resources/js/dashgrafico.js
|
||||
application.resource.css.2=/resources/css/dashgrafico.css
|
||||
hash=4a16315e9e66fa7d797b3f6b1fb365b69f9a4ce2
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
<div id="MyWidget_${instanceId}" class="super-widget wcm-widget-class fluig-style-guide" data-params="MyWidget.instance()">
|
||||
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
<div id="dashGrafico_${instanceId}"
|
||||
class="super-widget wcm-widget-class fluig-style-guide"
|
||||
data-params="DashGrafico.instance()">
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||
|
||||
<div style="height:260px; max-width:360px; margin:0 auto;">
|
||||
<canvas id="grafico_${instanceId}"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<jboss-web>
|
||||
<context-root>/dashgrafico</context-root>
|
||||
<disable-cross-context>false</disable-cross-context>
|
||||
</jboss-web>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||
version="3.0">
|
||||
<session-config>
|
||||
<session-timeout>
|
||||
30
|
||||
</session-timeout>
|
||||
</session-config>
|
||||
</web-app>
|
||||
@@ -0,0 +1 @@
|
||||
/* Coloque aqui seu codigo CSS */
|
||||
|
After Width: | Height: | Size: 7.7 KiB |
@@ -0,0 +1,91 @@
|
||||
var DashGrafico = SuperWidget.extend({
|
||||
|
||||
chart:null,
|
||||
|
||||
init:function(){
|
||||
|
||||
var self=this;
|
||||
this.renderAmostra();
|
||||
|
||||
window.addEventListener("dashboardData",function(e){
|
||||
|
||||
self.render(e.detail);
|
||||
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
render:function(dados){
|
||||
|
||||
var conforme=dados.filter(function(i){
|
||||
return normalizaStatus(i)=="CONFORME";
|
||||
}).length;
|
||||
|
||||
var nao=dados.filter(function(i){
|
||||
return normalizaStatus(i)=="NAO_CONFORME";
|
||||
}).length;
|
||||
|
||||
var ctx=document.getElementById("grafico_"+this.instanceId);
|
||||
|
||||
if(this.chart){
|
||||
this.chart.destroy();
|
||||
}
|
||||
|
||||
this.chart=new Chart(ctx,{
|
||||
|
||||
type:'doughnut',
|
||||
|
||||
data:{
|
||||
labels:["Conforme ("+conforme+")","Não Conforme ("+nao+")"],
|
||||
datasets:[{
|
||||
data:[conforme,nao],
|
||||
backgroundColor:["#2ecc71","#e74c3c"]
|
||||
}]
|
||||
},
|
||||
options:{
|
||||
responsive:true,
|
||||
maintainAspectRatio:false,
|
||||
cutout:"48%"
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function normalizaStatus(item){
|
||||
var raw = item.saidaAnalise || item.status || "";
|
||||
return String(raw).trim().toUpperCase();
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
renderAmostra:function(){
|
||||
var ctx=document.getElementById("grafico_"+this.instanceId);
|
||||
if(!ctx){
|
||||
return;
|
||||
}
|
||||
|
||||
if(this.chart){
|
||||
this.chart.destroy();
|
||||
}
|
||||
|
||||
this.chart=new Chart(ctx,{
|
||||
type:'doughnut',
|
||||
data:{
|
||||
labels:["Conforme (0)","Não Conforme (0)"],
|
||||
datasets:[{
|
||||
data:[1,0],
|
||||
backgroundColor:["#cfd8dc","#eceff1"]
|
||||
}]
|
||||
},
|
||||
options:{
|
||||
responsive:true,
|
||||
maintainAspectRatio:false,
|
||||
cutout:"48%",
|
||||
plugins:{
|
||||
tooltip:{enabled:false}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
@@ -0,0 +1,19 @@
|
||||
application.type=widget
|
||||
application.code=dashkpi
|
||||
application.title=dashkpi
|
||||
application.description=dashkpi
|
||||
application.fluig.version=null
|
||||
application.category=SYSTEM
|
||||
application.renderer=freemarker
|
||||
developer.code=andrey.cunha
|
||||
developer.name=andrey.cunha
|
||||
developer.url=http://www.fluig.com
|
||||
application.uiwidget=true
|
||||
application.mobileapp=false
|
||||
application.version=${build.version}-${build.revision}
|
||||
view.file=view.ftl
|
||||
edit.file=edit.ftl
|
||||
locale.file.base.name=dashkpi
|
||||
application.resource.js.1=/resources/js/dashkpi.js
|
||||
application.resource.css.2=/resources/css/dashkpi.css
|
||||
hash=4a16315e9e66fa7d797b3f6b1fb365b69f9a4ce2
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
<div id="MyWidget_${instanceId}" class="super-widget wcm-widget-class fluig-style-guide" data-params="MyWidget.instance()">
|
||||
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
<div id="dashKPI_${instanceId}"
|
||||
class="super-widget wcm-widget-class fluig-style-guide"
|
||||
data-params="DashKPI.instance()">
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<h4>Total Auditorias</h4>
|
||||
<h2 id="kpi_total_${instanceId}">0</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="panel panel-success">
|
||||
<div class="panel-body">
|
||||
<h4>Conformes</h4>
|
||||
<h2 id="kpi_ok_${instanceId}">0</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="panel panel-danger">
|
||||
<div class="panel-body">
|
||||
<h4>Não Conformes</h4>
|
||||
<h2 id="kpi_nok_${instanceId}">0</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<div class="panel panel-info">
|
||||
<div class="panel-body">
|
||||
<h4>% Conformidade</h4>
|
||||
<h2 id="kpi_pct_${instanceId}">0%</h2>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<jboss-web>
|
||||
<context-root>/dashkpi</context-root>
|
||||
<disable-cross-context>false</disable-cross-context>
|
||||
</jboss-web>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||
version="3.0">
|
||||
<session-config>
|
||||
<session-timeout>
|
||||
30
|
||||
</session-timeout>
|
||||
</session-config>
|
||||
</web-app>
|
||||
@@ -0,0 +1 @@
|
||||
/* Coloque aqui seu codigo CSS */
|
||||
|
After Width: | Height: | Size: 7.7 KiB |
@@ -0,0 +1,41 @@
|
||||
var DashKPI = SuperWidget.extend({
|
||||
|
||||
init:function(){
|
||||
|
||||
var self=this;
|
||||
|
||||
window.addEventListener("dashboardData",function(e){
|
||||
|
||||
self.calcular(e.detail);
|
||||
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
calcular:function(dados){
|
||||
|
||||
var total=dados.length;
|
||||
|
||||
var conformes=dados.filter(function(i){
|
||||
return normalizaStatus(i)=="CONFORME";
|
||||
}).length;
|
||||
|
||||
var nao=dados.filter(function(i){
|
||||
return normalizaStatus(i)=="NAO_CONFORME";
|
||||
}).length;
|
||||
|
||||
var pct= total ? Math.round((conformes/total)*100) : 0;
|
||||
|
||||
$("#kpi_total_"+this.instanceId).text(total);
|
||||
$("#kpi_ok_"+this.instanceId).text(conformes);
|
||||
$("#kpi_nok_"+this.instanceId).text(nao);
|
||||
$("#kpi_pct_"+this.instanceId).text(pct+"%");
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function normalizaStatus(item){
|
||||
var raw = item.saidaAnalise || item.status || "";
|
||||
return String(raw).trim().toUpperCase();
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
application.type=widget
|
||||
application.code=dashregional
|
||||
application.title=dashregional
|
||||
application.description=dashregional
|
||||
application.fluig.version=null
|
||||
application.category=SYSTEM
|
||||
application.renderer=freemarker
|
||||
developer.code=andrey.cunha
|
||||
developer.name=andrey.cunha
|
||||
developer.url=http://www.fluig.com
|
||||
application.uiwidget=true
|
||||
application.mobileapp=false
|
||||
application.version=${build.version}-${build.revision}
|
||||
view.file=view.ftl
|
||||
edit.file=edit.ftl
|
||||
locale.file.base.name=dashregional
|
||||
application.resource.js.1=/resources/js/dashregional.js
|
||||
application.resource.css.2=/resources/css/dashregional.css
|
||||
hash=4a16315e9e66fa7d797b3f6b1fb365b69f9a4ce2
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
<div id="MyWidget_${instanceId}" class="super-widget wcm-widget-class fluig-style-guide" data-params="MyWidget.instance()">
|
||||
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
<div id="dashRegional_${instanceId}"
|
||||
class="super-widget wcm-widget-class fluig-style-guide"
|
||||
data-params="DashRegional.instance()">
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">Não Conformes por Regional</h3>
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
|
||||
<canvas id="graficoRegional_${instanceId}" height="120"></canvas>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<jboss-web>
|
||||
<context-root>/dashregional</context-root>
|
||||
<disable-cross-context>false</disable-cross-context>
|
||||
</jboss-web>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||
version="3.0">
|
||||
<session-config>
|
||||
<session-timeout>
|
||||
30
|
||||
</session-timeout>
|
||||
</session-config>
|
||||
</web-app>
|
||||
@@ -0,0 +1,12 @@
|
||||
div[id^="dashRegional_"] {
|
||||
position: relative !important;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
div[id^="dashRegional_"] .panel {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
div[id^="dashRegional_"] canvas {
|
||||
max-height: 260px;
|
||||
}
|
||||
|
After Width: | Height: | Size: 7.7 KiB |
@@ -0,0 +1,102 @@
|
||||
var DashRegional = SuperWidget.extend({
|
||||
|
||||
chart:null,
|
||||
|
||||
init:function(){
|
||||
|
||||
var self=this;
|
||||
this.renderAmostra();
|
||||
|
||||
window.addEventListener("dashboardData",function(e){
|
||||
|
||||
self.render(e.detail);
|
||||
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
render:function(dados){
|
||||
|
||||
var mapa={};
|
||||
|
||||
// soma nao conformes por regional
|
||||
dados.forEach(function(i){
|
||||
|
||||
var regional=i.regional || "Sem regional";
|
||||
|
||||
if(!mapa[regional]) mapa[regional]=0;
|
||||
|
||||
mapa[regional]+=parseInt(i.qtdNaoConforme||0,10) || 0;
|
||||
|
||||
});
|
||||
|
||||
// transformar em arrays
|
||||
var labels=Object.keys(mapa);
|
||||
var valores=Object.values(mapa);
|
||||
|
||||
if(!labels.length){
|
||||
labels=["Aguardando filtro"];
|
||||
valores=[0];
|
||||
}
|
||||
|
||||
// canvas
|
||||
var ctx=document.getElementById("graficoRegional_"+this.instanceId);
|
||||
|
||||
if(this.chart){
|
||||
this.chart.destroy();
|
||||
}
|
||||
|
||||
// criar gráfico
|
||||
this.chart=new Chart(ctx,{
|
||||
|
||||
type:'bar',
|
||||
|
||||
data:{
|
||||
labels:labels,
|
||||
datasets:[{
|
||||
label:"Não conformes",
|
||||
data:valores,
|
||||
backgroundColor:"#e74c3c"
|
||||
}]
|
||||
},
|
||||
|
||||
options:{
|
||||
responsive:true,
|
||||
plugins:{
|
||||
legend:{display:false}
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
renderAmostra:function(){
|
||||
var ctx=document.getElementById("graficoRegional_"+this.instanceId);
|
||||
if(!ctx){
|
||||
return;
|
||||
}
|
||||
|
||||
if(this.chart){
|
||||
this.chart.destroy();
|
||||
}
|
||||
|
||||
this.chart=new Chart(ctx,{
|
||||
type:'bar',
|
||||
data:{
|
||||
labels:["Aguardando filtro"],
|
||||
datasets:[{
|
||||
label:"Não conformes",
|
||||
data:[0],
|
||||
backgroundColor:"#cfd8dc"
|
||||
}]
|
||||
},
|
||||
options:{
|
||||
responsive:true,
|
||||
plugins:{legend:{display:false}}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
@@ -0,0 +1,19 @@
|
||||
application.type=widget
|
||||
application.code=dashtabela
|
||||
application.title=dashtabela
|
||||
application.description=dashtabela
|
||||
application.fluig.version=null
|
||||
application.category=SYSTEM
|
||||
application.renderer=freemarker
|
||||
developer.code=andrey.cunha
|
||||
developer.name=andrey.cunha
|
||||
developer.url=http://www.fluig.com
|
||||
application.uiwidget=true
|
||||
application.mobileapp=false
|
||||
application.version=${build.version}-${build.revision}
|
||||
view.file=view.ftl
|
||||
edit.file=edit.ftl
|
||||
locale.file.base.name=dashtabela
|
||||
application.resource.js.1=/resources/js/dashtabela.js
|
||||
application.resource.css.2=/resources/css/dashtabela.css
|
||||
hash=4a16315e9e66fa7d797b3f6b1fb365b69f9a4ce2
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
<div id="MyWidget_${instanceId}" class="super-widget wcm-widget-class fluig-style-guide" data-params="MyWidget.instance()">
|
||||
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
<div id="dashTabela_${instanceId}"
|
||||
class="super-widget wcm-widget-class fluig-style-guide"
|
||||
data-params="DashTabela.instance()">
|
||||
|
||||
<table class="table table-hover">
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Data Início</th>
|
||||
<th>Data Limite</th>
|
||||
<th>Ciclo</th>
|
||||
<th>Auditor</th>
|
||||
<th>Responsável Loja</th>
|
||||
<th>Loja</th>
|
||||
<th>Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody id="lista_${instanceId}">
|
||||
<tr>
|
||||
<td colspan="7" class="text-center">Aguardando filtro...</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
||||
<div class="dash-table-footer">
|
||||
<div class="dash-page-size">
|
||||
<label for="page_size_${instanceId}">Itens por página</label>
|
||||
<select id="page_size_${instanceId}" class="form-control input-sm">
|
||||
<option value="5" selected>5</option>
|
||||
<option value="10">10</option>
|
||||
<option value="20">20</option>
|
||||
<option value="50">50</option>
|
||||
</select>
|
||||
</div>
|
||||
<div id="page_info_${instanceId}" class="dash-page-info">Aguardando filtro</div>
|
||||
<div class="dash-page-actions">
|
||||
<button id="page_prev_${instanceId}" type="button" class="btn btn-default btn-sm">Anterior</button>
|
||||
<button id="page_next_${instanceId}" type="button" class="btn btn-default btn-sm">Próxima</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<jboss-web>
|
||||
<context-root>/dashtabela</context-root>
|
||||
<disable-cross-context>false</disable-cross-context>
|
||||
</jboss-web>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||
version="3.0">
|
||||
<session-config>
|
||||
<session-timeout>
|
||||
30
|
||||
</session-timeout>
|
||||
</session-config>
|
||||
</web-app>
|
||||
@@ -0,0 +1,53 @@
|
||||
div[id^="dashTabela_"] table th,
|
||||
div[id^="dashTabela_"] table td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
div[id^="dashTabela_"] table th:nth-child(1),
|
||||
div[id^="dashTabela_"] table td:nth-child(1),
|
||||
div[id^="dashTabela_"] table th:nth-child(2),
|
||||
div[id^="dashTabela_"] table td:nth-child(2),
|
||||
div[id^="dashTabela_"] table th:nth-child(3),
|
||||
div[id^="dashTabela_"] table td:nth-child(3) {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
div[id^="dashTabela_"] table th:nth-child(6),
|
||||
div[id^="dashTabela_"] table td:nth-child(6) {
|
||||
min-width: 220px;
|
||||
}
|
||||
|
||||
div[id^="dashTabela_"] .dash-table-footer {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 10px;
|
||||
padding-top: 8px;
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
|
||||
div[id^="dashTabela_"] .dash-page-size {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
div[id^="dashTabela_"] .dash-page-size label {
|
||||
margin: 0;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
div[id^="dashTabela_"] .dash-page-size select {
|
||||
width: 72px;
|
||||
}
|
||||
|
||||
div[id^="dashTabela_"] .dash-page-info {
|
||||
font-size: 12px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
div[id^="dashTabela_"] .dash-page-actions {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
}
|
||||
|
After Width: | Height: | Size: 7.7 KiB |
@@ -0,0 +1,122 @@
|
||||
var DashTabela = SuperWidget.extend({
|
||||
|
||||
dados:[],
|
||||
paginaAtual:1,
|
||||
itensPorPagina:5,
|
||||
|
||||
init:function(){
|
||||
|
||||
var self=this;
|
||||
|
||||
$("#page_prev_"+this.instanceId).on("click",function(){
|
||||
if(self.paginaAtual>1){
|
||||
self.paginaAtual--;
|
||||
self.renderPage();
|
||||
}
|
||||
});
|
||||
|
||||
$("#page_next_"+this.instanceId).on("click",function(){
|
||||
var totalPaginas = self.getTotalPaginas();
|
||||
if(self.paginaAtual<totalPaginas){
|
||||
self.paginaAtual++;
|
||||
self.renderPage();
|
||||
}
|
||||
});
|
||||
|
||||
$("#page_size_"+this.instanceId).on("change",function(){
|
||||
self.itensPorPagina = parseInt($(this).val(),10) || 5;
|
||||
self.paginaAtual = 1;
|
||||
self.renderPage();
|
||||
});
|
||||
|
||||
window.addEventListener("dashboardData",function(e){
|
||||
|
||||
self.render(e.detail || []);
|
||||
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
render:function(dados){
|
||||
|
||||
this.dados = dados;
|
||||
this.paginaAtual = 1;
|
||||
this.renderPage();
|
||||
|
||||
},
|
||||
|
||||
renderPage:function(){
|
||||
|
||||
var html="";
|
||||
var totalPaginas = this.getTotalPaginas();
|
||||
|
||||
if(this.paginaAtual > totalPaginas){
|
||||
this.paginaAtual = totalPaginas;
|
||||
}
|
||||
|
||||
var inicio = (this.paginaAtual - 1) * this.itensPorPagina;
|
||||
var fim = inicio + this.itensPorPagina;
|
||||
var paginaDados = this.dados.slice(inicio,fim);
|
||||
|
||||
paginaDados.forEach(function(item){
|
||||
|
||||
html+="<tr>";
|
||||
html+="<td>"+esc(formataData(item.dataAuditoria))+"</td>";
|
||||
html+="<td>"+esc(formataData(item.dataLimite))+"</td>";
|
||||
html+="<td>"+esc(item.ciclo || "")+"</td>";
|
||||
html+="<td>"+esc(item.auditor || item.usuarioRetorno)+"</td>";
|
||||
html+="<td>"+esc(item.responsavelLoja)+"</td>";
|
||||
html+="<td>"+esc(item.loja)+"</td>";
|
||||
html+="<td>"+esc(statusResumido(item))+"</td>";
|
||||
html+="</tr>";
|
||||
|
||||
});
|
||||
|
||||
if(!html){
|
||||
html+="<tr><td colspan='7' class='text-center'>Sem dados para o filtro selecionado</td></tr>";
|
||||
}
|
||||
|
||||
$("#lista_"+this.instanceId).html(html);
|
||||
$("#page_info_"+this.instanceId).text("Página " + this.paginaAtual + " de " + totalPaginas + " (" + this.dados.length + " registros)");
|
||||
$("#page_prev_"+this.instanceId).prop("disabled", this.paginaAtual <= 1);
|
||||
$("#page_next_"+this.instanceId).prop("disabled", this.paginaAtual >= totalPaginas);
|
||||
|
||||
},
|
||||
|
||||
getTotalPaginas:function(){
|
||||
if(!this.dados.length){
|
||||
return 1;
|
||||
}
|
||||
return Math.ceil(this.dados.length / this.itensPorPagina);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function esc(v){
|
||||
return String(v == null ? "" : v)
|
||||
.replace(/&/g,"&")
|
||||
.replace(/</g,"<")
|
||||
.replace(/>/g,">")
|
||||
.replace(/\"/g,""")
|
||||
.replace(/'/g,"'");
|
||||
}
|
||||
|
||||
function formataData(v){
|
||||
var s = String(v || "").trim();
|
||||
if(!s){
|
||||
return "";
|
||||
}
|
||||
if(/^\d{4}-\d{2}-\d{2}$/.test(s)){
|
||||
var p = s.split("-");
|
||||
return p[2] + "/" + p[1] + "/" + p[0];
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
function statusResumido(item){
|
||||
var s = String(item.saidaAnalise || item.status || "").trim().toUpperCase();
|
||||
if(s === "CONFORME"){
|
||||
return "CONFORME";
|
||||
}
|
||||
return "NAO_CONFORME";
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
application.type=widget
|
||||
application.code=filtrosDash
|
||||
application.title=filtrosDash
|
||||
application.description=filtrosDash
|
||||
application.fluig.version=null
|
||||
application.category=SYSTEM
|
||||
application.renderer=freemarker
|
||||
developer.code=andrey.cunha
|
||||
developer.name=andrey.cunha
|
||||
developer.url=http://www.fluig.com
|
||||
application.uiwidget=true
|
||||
application.mobileapp=false
|
||||
application.version=${build.version}-${build.revision}
|
||||
view.file=view.ftl
|
||||
edit.file=edit.ftl
|
||||
locale.file.base.name=filtrosDash
|
||||
application.resource.js.1=/resources/js/filtrosDash.js
|
||||
application.resource.css.2=/resources/css/filtrosDash.css
|
||||
hash=4a16315e9e66fa7d797b3f6b1fb365b69f9a4ce2
|
||||
@@ -0,0 +1,4 @@
|
||||
<div id="MyWidget_${instanceId}" class="super-widget wcm-widget-class fluig-style-guide" data-params="MyWidget.instance()">
|
||||
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
<div id="filtroDash_${instanceId}"
|
||||
class="super-widget wcm-widget-class fluig-style-guide"
|
||||
data-params="FiltroDash.instance()">
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-3">
|
||||
<label>Data início</label>
|
||||
<input type="date" class="form-control" id="dtInicio_${instanceId}">
|
||||
</div>
|
||||
|
||||
<div class="col-md-3">
|
||||
<label>Data fim</label>
|
||||
<input type="date" class="form-control" id="dtFim_${instanceId}">
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<label>Filial</label>
|
||||
<input class="form-control" id="filial_${instanceId}" list="filial_list_${instanceId}" placeholder="Todas">
|
||||
<datalist id="filial_list_${instanceId}">
|
||||
<option value="Todas"></option>
|
||||
</datalist>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<label> </label>
|
||||
<button type="button" class="btn btn-primary btn-block" data-filtrar>
|
||||
Filtrar
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<jboss-web>
|
||||
<context-root>/filtrosDash</context-root>
|
||||
<disable-cross-context>false</disable-cross-context>
|
||||
</jboss-web>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||
version="3.0">
|
||||
<session-config>
|
||||
<session-timeout>
|
||||
30
|
||||
</session-timeout>
|
||||
</session-config>
|
||||
</web-app>
|
||||
@@ -0,0 +1,7 @@
|
||||
div[id^="filtroDash_"] input[list] {
|
||||
padding-right: 30px;
|
||||
}
|
||||
|
||||
div[id^="filtroDash_"] .btn[data-filtrar] {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
After Width: | Height: | Size: 7.7 KiB |