Detect unselect date of datepicker with selectionMode multiple (Primefaces)

Viewed 25

I am implementing the possibility to select several dates in a calendar and thus create recurring items on different dates. For this I show below the calendar a table with the selected dates, and this is why I need an event to detect when the selection of a date is removed (to update the lower table). I have tried with the onchange event but this is for inputs changes and it doesn't work because I need remove the selection from the calendar, and the onclick or dateSelect event doesn't detect it either.

    <p:datePicker id="multiselect" locale="es" 
selectionMode="multiple" value="#{altaSuceso.multi}" readonlyInput="true"  mode="inline" mindate="#{listado.getFechaAct()}"
disabledDates="#{altaSuceso.invalidDates}">
    <p:ajax event="dateSelect" listener="#{altaSuceso.onDateSelect}" update="formEdicion:fechasSuc"/>
</p:datePicker>


<p:dataTable id="fechasSuc" var="suc" value="#{altaSuceso.sucRecurrente}" >
    <p:column headerText="Fecha de Inicio">
        <h:outputText value="#{altaSuceso.getFechaFormateada(suc.fechaIniSuc)}" />
    </p:column>

    <p:column headerText="Fecha de Fin">
        <h:outputText value="#{altaSuceso.getFechaFormateada(suc.fechaFinSuc)}" />
    </p:column>
    
    <p:column id="idInfoVialidad" headerText=""
    styleClass="infoVialidad" style="width: 50px !important;"
    resizable="false">
            <p:commandButton id="moreInfoVialidad" icon="fa fa-fw fa-info" styleClass="btnGeneral btnGris"
            type="button" 
            onclick="mostrarDialogoInfoVialidadAlta(event,'#{altaSuceso.mostrarVialidadesToolTip(suc.vialidades)}','tabla');" 
                 onerror="onError();"/>
    </p:column>                                         
</p:dataTable>

AltaSuceso.java

public void onDateSelect(SelectEvent event) {
    
    @SuppressWarnings("unchecked")
    ArrayList<Date> f = (ArrayList<Date>) event.getObject();
    
    calcularFechasNuevasVialidades(f.get(f.size()-1));
}
public void calcularFechasNuevasVialidades (Date fSelec) {
    
    List<Date> listOfDatesIni = new ArrayList<Date>();
    List<Date> listOfDatesFin = new ArrayList<Date>();
    
     ArrayList<GrupoVialidades> listaNewVialidades = new ArrayList<>();
     
     if(listaVialidades != null && listaVialidades.size() > 0)
            for(GrupoVialidades v : listaVialidades) {
                GrupoVialidades vialidadEdicion = new GrupoVialidades(v.isObligada(), v.isNueva(), (v.isOriginalmenteActiva()? Valores.ACT: Valores.INA));
                BeanUtils.copyProperties(v, vialidadEdicion);
                // El copyProperties copia no crea objetos nuevos para el ArrayList<VialidadGrupo>
                // por lo que se llama a un método que genera los objetos nuevos
                vialidadEdicion.setVialidades(new ArrayList<>());
                vialidadEdicion.copyVialidades(v.getVialidades());
                
                Date f = getFechaCalculada(fSelec, v.getFechaIni());
                vialidadEdicion.setFechaIni(f);
                listOfDatesIni.add(f);
                
                if(v.getFechaFin() != null) {
                    Date f2 = getFechaCalculada(fSelec, v.getFechaFin());
                    vialidadEdicion.setFechaFin(f2);
                    if(f2 != null) listOfDatesFin.add(f2);
                }
                
                listaNewVialidades.add(vialidadEdicion);
            }
    
    Date fIniSuc = null;
    Date fFinSuc = null;
    
    
    if(listOfDatesIni != null && listOfDatesIni.size() > 0)
        fIniSuc = Collections.min(listOfDatesIni);
    if(listOfDatesFin != null && listOfDatesFin.size() > 0)
        fFinSuc = Collections.max(listOfDatesFin);
    
    
    SucesoRecurrente suc = new SucesoRecurrente();
    suc.setFechaIniSuc(fIniSuc);
    suc.setFechaFinSuc(fFinSuc);
    suc.setVialidades(listaNewVialidades);
    sucRecurrente.add(suc);
    log.debug("calcularFechasNuevasVialidades "+sucRecurrente.size() + " "+ sucRecurrenteOriginal.size());
    

    multi.add(fIniSuc);
}
0 Answers
Related