<p:schedule> con dialogos diferentes en el mismo evento
Last updated
Was this helpful?
Last updated
Was this helpful?
Muchas veces tenemos un <p:schedule> con elementos diferentes.
Al darle clic al viaje debe mostrar un dialogo con la información del viaje
Al darle clic a la misión debe mostrar un dialogo con la misión.
Tenemos un solo evento event="enventSelect" que muestra un dialogo oncomplete="PF('solicitudDialog').show();" al completar la ejecución del método.
<p:schedule id="schedule"
rightHeaderTemplate="month,agendaWeek,agendaDay,basicDay"
value="#{calendarioSolicitudViajesController.eventModel}" widgetVar="myschedule" timeZone="GMT-5" locale="es">
<p:ajax event="eventSelect" listener="#{calendarioSolicitudViajesController.onEventSelect}" update="eventDetails" oncomplete="PF('solicitudDialog').show();" />
<!--<p:ajax event="dateSelect" listener="#{calendarioSolicitudViajesController.onDateSelectCalendar}" update="newDetails" oncomplete="PF('newDialog').show();" />-->
</p:schedule>
En el dialogo
<p:dialog widgetVar="solicitudDialog" header="#{msg['dialogo.solicitudoviaje']}"
width="850" height="480"
styleClass="customDialog"
responsive="true"
showEffect="clip" hideEffect="clip">
<h:panelGroup id="eventDetails">
<b:panelGrid colSpans="2,4,2,4" size="xs" rendered="#{calendarioSolicitudViajesController.esSolicitud}" >
</b:panelGrid>
<b:panelGrid colSpans="2,4,2,4" size="xs" rendered="#{!calendarioSolicitudViajesController.esSolicitud}" >
<p:outputLabel value="#{msg['field.viajes']}" />
<p:outputLabel value="#{calendarioSolicitudViajesController.viajesSelected.idviaje}" />
</b:panelGrid>
</h:panelGroup>
</p:dialog>
En el Controller , validamos si es una solicitud o un viaje y colocamos en true o false el atributo esSolicitud que se renderiza o no un panelGrid dentro del <h:panelGroup> ubicado en el dialogo.
public void onEventSelect(SelectEvent selectEvent) {
try {
// esnuevo = false;
esSolicitud = true;
esAprobadoParaEditar = false;
viajesSelected = new Viajes();
esDocente = false;
event = (ScheduleEvent) selectEvent.getObject();
esAprobado = false;
String title = event.getTitle();
Integer i = title.indexOf("M");
Integer idsolicitud = 0;
if (i != -1) {
idsolicitud = Integer.parseInt(title.substring(1, i).trim());
solicitud.setIdsolicitud(idsolicitud);
Optional<Solicitud> optional = solicitudRepository.findById(solicitud);
if (optional.isPresent()) {
solicitud = optional.get();
solicita = solicitud.getUsuario().get(0);
responsable = solicitud.getUsuario().get(1);
facultadList = solicitud.getFacultad();
unidadList = solicitud.getUnidad();
carreraList = solicitud.getCarrera();
solicitudSelected = solicitud;
estatusSelected = solicitud.getEstatus();
esDocente = solicitud.getTiposolicitud().getIdtiposolicitud().equals("DOCENTE");
if (solicitud.getEstatus().getIdestatus().equals("APROBADO")) {
esAprobado = true;
esAprobadoParaEditar = true;
List<Viajes> list = new ArrayList<>();
list = viajesRepository.findBy(new Document("solicitud.idsolicitud", solicitud.getIdsolicitud()));
if (list.isEmpty()) {
JsfUtil.warningMessage(rf.getMessage("warning.notexitsviajeconesasolicitud"));
} else {
viajesSelected = list.get(0);
vehiculoSelected = viajesSelected.getVehiculo();
conductorSelected = viajesSelected.getConductor();
}
} else {
viajesSelected.setActivo("si");
viajesSelected.setFechahorainicioreserva(solicitud.getFechahorapartida());
viajesSelected.setFechahorafinreserva(solicitud.getFechahoraregreso());
}
}
} else {
//Viajes
i = title.indexOf("V");
Integer idviaje = 0;
if (i != -1) {
esSolicitud = false;
idviaje = Integer.parseInt(title.substring(1, i).trim());
viajesSelected.setIdviaje(idviaje);
Optional<Viajes> optional = viajesRepository.findById(viajesSelected);
if (optional.isPresent()) {
viajesSelected = optional.get();
}
}
}
} catch (Exception e) {
errorServices.errorMessage(nameOfClass(), nameOfMethod(), e.getLocalizedMessage());
}
} // </editor-fold>