<p:schedule> con dialogos diferentes en el mismo evento

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>

Last updated