[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