[richfaces-issues] [JBoss JIRA] (RF-13116) Using filters with paging / default filter value in extendeddatatable

John Strandmyr (JIRA) jira-events at lists.jboss.org
Tue Aug 13 07:27:26 EDT 2013


    [ https://issues.jboss.org/browse/RF-13116?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12796494#comment-12796494 ] 

John Strandmyr commented on RF-13116:
-------------------------------------

{code}
package no.hmskontoret.hmskontoret.hendelsesregister;

import org.joda.time.DateTime;
import org.richfaces.model.Filter;

import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;
import java.io.Serializable;
import java.util.Calendar;

@ManagedBean
@SessionScoped
public class TiltakFilter implements Serializable {


    private static final long serialVersionUID = 3891868950010001044L;
    /**
     *
     */


    private String fristFilter = "";

    private String tittelFilter = "";
    private String ansvarligFilter = "";
    private String lokasjonFilter = "";
    private String kategoriFilter = "";
    private String statusFilter = "";
    private String avdelingFilter = "";


    public Filter<?> getTittelImpl() {

        return new Filter<Object>() {
            @Override
            public boolean accept(Object i) {

                String s = getTittelFilter();

                Tiltak item = (Tiltak) i;

                if (s.length() == 0)
                    return true;

                if (item != null && item.getTittel() != null) {

                    if (item.getTittel().toLowerCase().indexOf(s.toLowerCase()) >= 0)
                        return true;
                    else
                        return false;
                }

                return false;
            }
        };
    }

    public Filter<?> getAnsvarligImpl() {
        return new Filter<Object>() {
            @Override
            public boolean accept(Object i) {

                String s = getAnsvarligFilter();

                Tiltak item = (Tiltak) i;

                if (s.length() == 0)
                    return true;

                if (item != null && item.getAnsvarlig() != null && item.getAnsvarlig().getNavn() != null) {
                    if (item.getAnsvarlig().getNavn().toLowerCase().indexOf(s.toLowerCase()) >= 0)
                        return true;
                    else
                        return false;
                }

                return false;
            }
        };
    }

    public Filter<?> getKategoriImpl() {
        return new Filter<Object>() {
            @Override
            public boolean accept(Object i) {

                String s = getKategoriFilter();

                Tiltak item = (Tiltak) i;

                if (s.length() == 0)
                    return true;

                if (item != null && item.getKategori() != null) {

                    if (item.getKategori().toLowerCase().indexOf(s.toLowerCase()) >= 0)
                        return true;
                    else
                        return false;
                }

                return false;
            }
        };
    }

    public Filter<?> getLokasjonImpl() {
        return new Filter<Object>() {
            @Override
            public boolean accept(Object i) {

                String s = getTittelFilter();

                Tiltak item = (Tiltak) i;

                if (s.length() == 0)
                    return true;

                if (item != null && item.getLokasjon() != null) {

                    if (item.getLokasjon().toLowerCase().indexOf(s.toLowerCase()) >= 0)
                        return true;
                    else
                        return false;
                }

                return false;
            }
        };
    }

    public Filter<?> getAvdelingImpl() {
        return new Filter<Object>() {
            @Override
            public boolean accept(Object i) {

                String s = getAvdelingFilter();
                Tiltak item = (Tiltak) i;

                if (s.length() == 0)
                    return true;


                if (item != null && item.getAvdeling() != null && item.getAvdeling().getNavn() != null) {

                    if (item.getAvdeling().getNavn().toLowerCase().indexOf(s.toLowerCase()) >= 0)
                        return true;
                    else
                        return false;
                }

                return false;
            }
        };
    }

    public Filter<?> getStatusImpl() {

        return new Filter<Object>() {
            @Override
            public boolean accept(Object i) {

                Integer s;
                if( getStatusFilter() == null || getStatusFilter().equals(""))
                    return true;
                else
                    s = Integer.valueOf(getStatusFilter());

                Tiltak item = (Tiltak) i;

                if (item != null && item.getStatus() != null && item.getStatus() != null) {
                    if (item.getStatus().equals(s))
                        return true;
                    else
                        return false;
                }

                return false;
            }
        };
    }

    public Filter<?> getFristImpl() {

        return new Filter<Object>() {
            @Override
            public boolean accept(Object i) {

                String s = getFristFilter();
                Tiltak item = (Tiltak) i;

                if (s.length() == 0)
                    return true;

                if (item.getFrist() != null) {
                    if (s.matches("^\\d{4,4}$")) {
                        Calendar calFrom = Calendar.getInstance();
                        calFrom.set(Integer.valueOf(s), 0, 1);

                        Calendar calTo = Calendar.getInstance();
                        calTo.set(Integer.valueOf(s), 11, 31);

                        Calendar cal = Calendar.getInstance();
                        cal.setTime(item.getFrist());

                        if ((cal.after(calFrom) || cal.equals(calFrom)) && (cal.before(calTo) || cal.equals(calTo))) {
                            return true;
                        }

                    } else if (s.equals("ingen")) {
                        if (item.getFrist() == null)
                            return true;
                    } else if (s.equals("12mnd")) {
                        Calendar cal = Calendar.getInstance();
                        cal.setTime(item.getFrist());

                        Calendar calFrom = Calendar.getInstance();
                        calFrom.set(Calendar.YEAR, calFrom.get(Calendar.YEAR) - 1);

                        Calendar calTo = Calendar.getInstance();

                        if ((cal.after(calFrom) || cal.equals(calFrom)) && (cal.before(calTo) || cal.equals(calTo))) {
                            return true;
                        }
                    } else if (s.substring(0, 9).equals("tidligere")) {

                        String strYear = s.substring(s.indexOf("_") + 1);
                        Calendar calTo = Calendar.getInstance();
                        calTo.set(Calendar.YEAR, Integer.valueOf(strYear));

                        Calendar cal = Calendar.getInstance();
                        cal.setTime(item.getFrist());


                        if (cal.before(calTo) || cal.equals(calTo))
                            return true;

                    }
                } else if (item.getFrist() == null && s.equals("ingen")) {
                    return true;
                }


                return false;
            }
        };
    }


    public String getFristFilter() {
        return fristFilter;
    }

    public void setFristFilter(String fristFilter) {
        this.fristFilter = fristFilter;
    }

    /**
     * @return the tittelFilter
     */
    public String getTittelFilter() {
        return this.tittelFilter;
    }

    /**
     * @param tittelFilter the tittelFilter to set
     */
    public void setTittelFilter(String tittelFilter) {
        this.tittelFilter = tittelFilter;
    }

    /**
     * @return the avdelingFilter
     */
    public String getAvdelingFilter() {
        return this.avdelingFilter;
    }

    /**
     * @param avdelingFilter the avdelingFilter to set
     */
    public void setAvdelingFilter(String avdelingFilter) {
        this.avdelingFilter = avdelingFilter;
    }

    /**
     * @return the lokasjonFilter
     */
    public String getLokasjonFilter() {
        return this.lokasjonFilter;
    }

    /**
     * @param lokasjonFilter the lokasjonFilter to set
     */
    public void setLokasjonFilter(String lokasjonFilter) {
        this.lokasjonFilter = lokasjonFilter;
    }

    /**
     * @return the ansvarligFilter
     */
    public String getAnsvarligFilter() {
        return this.ansvarligFilter;
    }

    /**
     * @param ansvarligFilter the ansvarligFilter to set
     */
    public void setAnsvarligFilter(String ansvarligFilter) {
        this.ansvarligFilter = ansvarligFilter;
    }

    /**
     * @return the kategoriFilter
     */
    public String getKategoriFilter() {
        return this.kategoriFilter;
    }

    /**
     * @param kategoriFilter the kategoriFilter to set
     */
    public void setKategoriFilter(String kategoriFilter) {
        this.kategoriFilter = kategoriFilter;
    }

    /**
     * @return the statusFilter
     */
    public String getStatusFilter() {
        return this.statusFilter;
    }

    /**
     * @param statusFilter the statusFilter to set
     */
    public void setStatusFilter(String statusFilter) {
        this.statusFilter = statusFilter;
    }


}
{code}
                
> Using filters with paging / default filter value in extendeddatatable
> ---------------------------------------------------------------------
>
>                 Key: RF-13116
>                 URL: https://issues.jboss.org/browse/RF-13116
>             Project: RichFaces
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>            Reporter: John Strandmyr
>            Priority: Critical
>              Labels: datascroller, extendedDataTable, filter, waiting_on_user
>
> I've got an extededdatatable from richfaces and if i add a default value to the filter, so that some rows are excluded on first rendering, and then change the filter to show the rows that were hidden, I don't get any calls to the actionlisteners on the rows that were hidden at first.
> It works fine on those rows that was shown in the first page load, but not on those hidden.
> The same issue appears when i use paging, and some rows are on page two. if i use the filter to show some rows from another page, the actionlistener isnt triggered. I can still click on those rows that was apparent on the first page, but not on the other pages.
> If I don't have a default filter, or a pager, i can add and remove filtering and everything is fine.
> {code}
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
>         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <html xmlns="http://www.w3.org/1999/xhtml"
>       xmlns:h="http://java.sun.com/jsf/html"
>       xmlns:f="http://java.sun.com/jsf/core"
>       xmlns:a4j="http://richfaces.org/a4j"
>       xmlns:rich="http://richfaces.org/rich">
> <h:head>
>     <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
>      <h:outputScript name="jsf.js" library="javax.faces"/>
> </h:head>
> <h:body>
>     <h:form>
>         <rich:extendedDataTable value="#{tiltakServer.tiltak}" var="tiltak" id="tiltakTable">
>             <rich:column filter="#{tiltakFilter.tittelImpl}">
>                 <f:facet name="header">
>                     <h:outputText value="Tittel" />
>                     <h:panelGroup styleClass="filter">
>                         <h:inputText value="#{tiltakFilter.tittelFilter}">
>                             <a4j:ajax event="keyup" render="tiltakTable at body" execute="@this"/>
>                         </h:inputText>
>                     </h:panelGroup>
>                 </f:facet>
>                 <h:outputText value="#{tiltak.tittel}"/>
>             </rich:column>
>             <rich:column>
>                 <f:facet name="header">
>                     Edit
>                 </f:facet>
>                 <h:commandLink value="Goto">
>                     <f:actionListener type="no.hmskontoret.hmskontoret.hendelsesregister.TiltakOnEditActionListener"/>
>                 </h:commandLink>
>             </rich:column>
>         </rich:extendedDataTable>
>     </h:form>
> </h:body>
> </html>
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the richfaces-issues mailing list