<p:scheduler> con paginacion
Last updated
Was this helpful?
Last updated
Was this helpful?
Scheduler
El scheduler es un componente muy útil para desplegar la información mediante intervalos de fechas.
<p:schedule id="schedule"
showHeader="true"
rightHeaderTemplate="month,agendaWeek,agendaDay,basicDay"
value="#{scheduleBoletasJefeUnidadController.lazyEventModel}"
widgetVar="myschedule" timeZone="GMT-5" locale="es">
</p:schedule>
En el ejemplo usamos microservicios con jsonQuery
init
Inicializamos e invocamos los métodos.
en el método loadScheduler, observe que lazyEventModel = new LazyScheduleModel() {
@Override
public void loadEvents(LocalDateTime start, LocalDateTime end) {
nos genera una fecha de inicio y fin para vez que nos desplazamos en el Scheduler de un mes a otro. En este método invocamos al método para filtrar los documentos.
Método para hacer el filtro
Código completo
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.avbravo.asistencia.controller.jefeunidad;
import com.avbravo.asistencia.interfaces.IBoletas;
import com.avbravo.asistenciaclient.entity.Boletas;
import com.avbravo.asistenciaclient.services.BoletasServices;
import com.avbravo.autentificacionclient.entity.Profile;
import com.avbravo.autentificacionclient.entity.User;
import com.avbravo.autentificacionclient.services.DepartamentServices;
import com.avbravo.autentificacionclient.services.UserServices;
import com.avbravo.jmoordb.configuration.JmoordbContext;
import com.avbravo.jmoordb.util.JmoordbDocument;
import com.avbravo.jmoordbutils.DateUtil;
import com.avbravo.jmoordbutils.JmoordbResourcesFiles;
import com.avbravo.jmoordbutils.JsfUtil;
import com.avbravo.jmoordbutils.paginator.IPaginator;
import static com.mongodb.client.model.Filters.and;
import static com.mongodb.client.model.Filters.eq;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.inject.Named;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Provider;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.eclipse.microprofile.config.Config;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import org.primefaces.model.DefaultScheduleEvent;
import org.primefaces.model.LazyScheduleModel;
import org.primefaces.model.ScheduleEvent;
import org.primefaces.model.ScheduleModel;
/**
*
* @author avbravo
*/
@Named
@ViewScoped
public class ScheduleBoletasJefeUnidadController implements Serializable, IPaginator, IBoletas {
// <editor-fold defaultstate="collapsed" desc="fields">
private static final long serialVersionUID = 1L;
private ScheduleModel lazyEventModel;
List<Boletas> boletasList = new ArrayList<>();
User user = new User();
Profile profile = new Profile();
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc=" inject">
@Inject
JmoordbResourcesFiles rf;
@Inject
BoletasServices boletasServices;
@Inject
UserServices userServices;
@Inject
DepartamentServices departamentServices;
private String estadounidad;
private String estadoautoridad;
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="Microprofile Config">
@Inject
private Config config;
//otp
@Inject
@ConfigProperty(name = "hoursForExpired", defaultValue = "0")
private Provider<Integer> hoursForExpired;
@Inject
@ConfigProperty(name = "minutesForExpired", defaultValue = "0")
private Provider<Integer> minutesForExpired;
@Inject
@ConfigProperty(name = "secondsForExpired", defaultValue = "0")
private Provider<Integer> secondsForExpired;
@Inject
@ConfigProperty(name = "minimumNumberOfCharactersOfThePassword", defaultValue = "9")
private Provider<Integer> minimumNumberOfCharactersOfThePassword;
//Applicative
@Inject
@ConfigProperty(name = "applicativeId", defaultValue = "0")
private Provider<Integer> applicativeId;
@Inject
@ConfigProperty(name = "applicativeName", defaultValue = " ")
private Provider<String> applicativeName;
@Inject
@ConfigProperty(name = "applicativePath", defaultValue = " ")
private Provider<String> applicativePath;
//Row
@Inject
@ConfigProperty(name = "rowPage", defaultValue = "0")
private Provider<Integer> rowPage;
//Redireccionar Captar boletas
@Inject
@ConfigProperty(name = "rolRedireccionarCapartarBoletas", defaultValue = "0")
private Provider<List<Integer>> rolRedireccionarCapartarBoletas;
//RolColaborador
@Inject
@ConfigProperty(name = "rolColaborador", defaultValue = "0")
private Provider<Integer> rolColaborador;
//RolCaptador
@Inject
@ConfigProperty(name = "rolCaptador", defaultValue = "0")
private Provider<Integer> rolCaptador;
//#--Path Images
@Inject
@ConfigProperty(name = "pathBaseLinuxAddUserHome", defaultValue = "true")
private Provider<Boolean> pathBaseLinuxAddUserHome;
@Inject
@ConfigProperty(name = "pathLinux", defaultValue = " ")
private Provider<String> pathLinux;
@Inject
@ConfigProperty(name = "pathWindows", defaultValue = " ")
private Provider<String> pathWindows; //Debug
@Inject
@ConfigProperty(name = "debugmode", defaultValue = "false")
private Provider<Boolean> debugmode;
@Inject
@ConfigProperty(name = "sendemail", defaultValue = "false")
private Provider<Boolean> sendemail;
String directoryImagenes = "";
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc=" set/get()">
public ScheduleModel getLazyEventModel() {
return lazyEventModel;
}
public void setLazyEventModel(ScheduleModel lazyEventModel) {
this.lazyEventModel = lazyEventModel;
}
public String getEstadounidad() {
return estadounidad;
}
public void setEstadounidad(String estadounidad) {
this.estadounidad = estadounidad;
}
public String getEstadoautoridad() {
return estadoautoridad;
}
public void setEstadoautoridad(String estadoautoridad) {
this.estadoautoridad = estadoautoridad;
}
public DepartamentServices getDepartamentServices() {
return departamentServices;
}
public void setDepartamentServices(DepartamentServices departamentServices) {
this.departamentServices = departamentServices;
}
public JmoordbResourcesFiles getRf() {
return rf;
}
public void setRf(JmoordbResourcesFiles rf) {
this.rf = rf;
}
public UserServices getUserServices() {
return userServices;
}
public void setUserServices(UserServices userServices) {
this.userServices = userServices;
}
public List<Boletas> getBoletasList() {
return boletasList;
}
public void setBoletasList(List<Boletas> boletasList) {
this.boletasList = boletasList;
}
public BoletasServices getBoletasServices() {
return boletasServices;
}
public void setBoletasServices(BoletasServices boletasServices) {
this.boletasServices = boletasServices;
}
// </editor-fold>
/**
* Creates a new instance of AprobacionBoletaController
*/
public ScheduleBoletasJefeUnidadController() {
}
// <editor-fold defaultstate="collapsed" desc="init">
@PostConstruct
public void init() {
try {
user = (User) JmoordbContext.get("jmoordb_user");
profile = (Profile) JmoordbContext.get("jmoordb_profile");
loadSchedule();
} catch (Exception e) {
JsfUtil.errorDialog(JsfUtil.nameOfMethod(), e.getLocalizedMessage());
}
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="void loadSchedule()">
public void loadSchedule() {
try {
lazyEventModel = new LazyScheduleModel() {
@Override
public void loadEvents(LocalDateTime start, LocalDateTime end) {
filterBoletas(DateUtil.convertLocalDateTimeToJavaDate(start), DateUtil.convertLocalDateTimeToJavaDate(end));
if (boletasList == null || boletasList.isEmpty()) {
JsfUtil.successMessage(rf.getMessage("warning.nohayboletas"));
} else {
boletasList.forEach((a) -> {
DefaultScheduleEvent event = DefaultScheduleEvent.builder()
.title("(" + a.getIdboleta() + ") " + a.getUser().getName() + " " + a.getTipoboleta() + " " + a.getObservacion())
.startDate(DateUtil.convertToLocalDateTimeViaInstant(a.getFechainicial()))
.endDate(DateUtil.convertToLocalDateTimeViaInstant(a.getFechafinal()))
.description(a.getObservacion() + "(" + a.getEstadounidad().substring(0, 1) + ") (" + a.getEstadoautoridad().substring(0, 1) + ")")
.build();
addEvent(event);
});
}
}
};
} catch (Exception e) {
System.out.println("loadSchedule " + e.getLocalizedMessage());
JsfUtil.errorDialog(JsfUtil.nameOfMethod(), e.getLocalizedMessage());
}
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="String filterBoletas() ">
public String filterBoletas(Date start, Date end) {
try {
boletasList = new ArrayList<>();
Bson filter0
= JmoordbDocument.createBsonBetweenDateWithoutHours(
"fechainicial", start, "fechafinal", end);
Bson filter = and(filter0, eq("departament.iddepartament", profile.getDepartament().getIddepartament()));
Document sort = new Document("idboleta", -1);
Document d = JmoordbDocument.jsonToDocument(JmoordbDocument.bsonToJson(filter));
System.out.println("Query " + d.toJson());
boletasList
= boletasServices.jsonQueryWithoutPagination(
JmoordbDocument.documentToJson(JmoordbDocument.jsonToDocument(JmoordbDocument.bsonToJson(filter))),
JmoordbDocument.documentToJson(sort));
} catch (Exception e) {
JsfUtil.errorDialog(JsfUtil.nameOfMethod(), e.getLocalizedMessage());
}
return "";
}
// </editor-fold>
}