<p:schedule> con dialogos

<p:schedule> con diálogos

Proyecto de Referencia: transportes

Pagina: /pages/calendario/solicitud.xhtml

Controller: CalendarioSolicitudController

Cuando deseamos usar un <p:schedule> con dialogos debemos usar <p:commandButton>

y agregar un <b:growl> al dialogo, para que este no se cierre y se muestren los mensajes.

al dar clic en cualquier fecha

cuando se da clic en el botón editar y no hemos colocado los datos requeridos se muestra el growl con los mensajes.

Componente schedule

   <p:schedule id="schedule"                            
        value="#{calendarioSolicitudController.eventModel}" widgetVar="myschedule" timeZone="GMT-5" locale="es">

        <p:ajax  event="eventSelect"  listener="#{calendarioSolicitudController.onEventSelect}" update="eventDetails" oncomplete="PF('eventDialog').show();" />
                        <!--<p:ajax  event="dateSelect" listener="#{calendarioSolicitudController.onDateSelectCalendar}" update="newDetails" oncomplete="PF('newDialog').show();" />-->
      </p:schedule>

Controller Muestra los datos

 private ScheduleModel eventModel;
 private ScheduleModel lazyEventModel;
 private ScheduleEvent event = new DefaultScheduleEvent();


@PostConstruct
    public void init() {
        try {
          cargarSchedule();

        } catch (Exception e) {
            JsfUtil.errorMessage("init() " + e.getLocalizedMessage());
        }
    }

    public void onEventSelect(SelectEvent selectEvent) {
        try {
            // esnuevo = 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;
                    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);
                    }
                }else{
                    viajesSelected.setActivo("si");
                    viajesSelected.setFechahorainicioreserva(solicitud.getFechahorapartida());
                    viajesSelected.setFechahorafinreserva(solicitud.getFechahoraregreso());
                }
            }

        } catch (Exception e) {

            JsfUtil.errorMessage("onEventSelect() " + e.getLocalizedMessage());
        }
    }


public void cargarSchedule() {
        try {

            Document doc = new Document("tipovehiculo.idtipovehiculo", tipovehiculo.getIdtipovehiculo()).append("estatus.idestatus", estatus.getIdestatus()).append("activo", "si");
            solicitudList = solicitudRepository.findBy(doc, new Document("fecha", 1));
            eventModel = new DefaultScheduleModel();
            if (!solicitudList.isEmpty()) {
                solicitudList.forEach((a) -> {

                    eventModel.addEvent(
                            new DefaultScheduleEvent("# " + a.getIdsolicitud() + " Mision:" + a.getMision() + " Responsable: " + a.getUsuario().get(1).getNombre() + " " + a.getEstatus().getIdestatus(), a.getFechahorapartida(), a.getFechahoraregreso())
                    );
                });
            }

        } catch (Exception ex) {
            JsfUtil.errorMessage("cargarSchedule() " + ex.getLocalizedMessage());
        }
    }// </editor-fold>

Editar

 @Override
    public String edit() {
        try {
            if (esAprobado) {
                if (JsfUtil.fechaMayor(viajes.getFechahorainicioreserva(), solicitud.getFechahorapartida())) {

                    JsfUtil.warningDialog(rf.getAppMessage("warning.view"), rf.getMessage("warning.fechainicioreservamayorfechapartida"));
                    return "";
                }
                if (JsfUtil.fechaMenor(viajes.getFechahorafinreserva(), solicitud.getFechahoraregreso())) {

                    JsfUtil.warningDialog(rf.getAppMessage("warning.view"), rf.getMessage("warning.fechafinreservamenorfecharegreso"));
                    return "";
                }

                if(solicitud.getNumerodevehiculos() != vehiculoList.size()){
                    JsfUtil.warningDialog(rf.getAppMessage("warning.view"), rf.getMessage("warning.numerodevehiculosnoigualvehiculos"));
                    return "";
                }
                if(conductorList.size() != vehiculoList.size()){
                    JsfUtil.warningDialog(rf.getAppMessage("warning.view"), rf.getMessage("warning.conductoresnoigualvehiculos"));
                    return "";
                }



      viajes = viajesSelected;
                Integer idviaje = autoincrementableTransporteejbServices.getContador("viajes");
                viajes.setActivo("si");
                viajes.setIdviaje(idviaje);
                viajes.setConductor(conductorList);
                viajes.setVehiculo(vehiculoList);
                viajes.setSolicitud(solicitud);
                viajes.setNumerovehiculos(solicitud.getNumerodevehiculos());



                viajes.setUserInfo(userInfoServices.generateListUserinfo(loginController.getUsername(), "create"));
                if (viajesRepository.save(viajes)) {
                    revisionHistoryTransporteejbRepository.save(revisionHistoryServices.getRevisionHistory(viajes.getIdviaje().toString(), loginController.getUsername(),
                            "create", "viajes", viajesRepository.toDocument(viajes).toString()));
                    JsfUtil.successMessage(rf.getAppMessage("info.save"));

                } else {
                    JsfUtil.successMessage("save() " + viajesRepository.getException().toString());
                    return "";
                }
            }

            solicitud.setEstatus(estatusSelected);

            revisionHistoryTransporteejbRepository.save(revisionHistoryServices.getRevisionHistory(solicitud.getIdsolicitud().toString(), loginController.getUsername(),
                    "update", "solicitud", solicitudRepository.toDocument(solicitud).toString()));

            solicitudRepository.update(solicitud);

            JsfUtil.infoDialog(rf.getAppMessage("info.view"), rf.getAppMessage("info.update"));
        } catch (Exception e) {

            JsfUtil.errorMessage("edit()" + e.getLocalizedMessage());
        }
        return "";
    }

Usar <p:commandButton> agregar <b:growl>

 <p:dialog widgetVar="eventDialog" header="#{msg['dialogo.solicitud']}" 
                      width="650" height="450"
                      styleClass="customDialog"

                      responsive="true"

                      showEffect="clip" hideEffect="clip">
                <b:panelGrid id="eventDetails" colSpans="2,10" size="xs" > 

                    <p:outputLabel  value="#{msg['field.idsolicitud']}" />
                    <p:outputLabel  value="#{calendarioSolicitudController.solicitud.idsolicitud}" id="idsolicitud"   />



                    <p:outputLabel  value="#{msg['field.fechapartida']}" />
                    <p:fieldset >
                        <p:calendar  disabled="true"  size="8"                                  
                                     style="background-color: grey;"
                                     pattern="dd/MM/yyyy" value="#{calendarioSolicitudController.solicitud.fechahorapartida}"  />

                        <p:outputLabel  value="#{msg['field.horapartida']}" />        
                        <p:calendar  disabled="true"    
                                     size="8" 
                                     pattern="HH:mm:ss a" value="#{calendarioSolicitudController.solicitud.fechahorapartida}"  />


                    </p:fieldset>


                    <p:outputLabel  value="#{msg['field.lugarpartida']}" />

                    <p:outputLabel value="#{calendarioSolicitudController.solicitud.lugarpartida}" id="lugarpartida"   />



//AQUI AGREGAR LOS OTROS COMPONTES


     <b:commandButton value="#{app['button.close']}"
                                     iconAwesome="fa-close"
                                     oncomplete="PF('eventDialog').hide();"/>

                    <p:commandButton
                        rendered="#{applicationMenu.menuBarAdministracion}"
                        value="#{app['button.edit']}"
                        update="growl"
                        oncomplete="PF('myschedule').update(); "
                        actionListener="#{calendarioSolicitudController.edit}"                     

                        />

                    <b:growl id="growl"/>

                </b:panelGrid>
            </p:dialog>

Last updated