Filter Data"

From Documentation
Line 17: Line 17:
  
  
<source lang='java'>
+
<source lang='java' high='12,13, 18,20,26,28,34,36,43,44'>
 
public class AutoFilterComposer extends SelectorComposer<Component> {
 
public class AutoFilterComposer extends SelectorComposer<Component> {
  
Line 29: Line 29:
 
public void toggle() {
 
public void toggle() {
 
Range selection = Ranges.range(ss.getSelectedSheet(), ss.getSelection());
 
Range selection = Ranges.range(ss.getSelectedSheet(), ss.getSelection());
Range filterRange = selection.findAutoFilterRange();
+
Range filteringRange = selection.findAutoFilterRange();
if(!selection.isAutoFilterEnabled() &&  filterRange == null) {  
+
if(!selection.isAutoFilterEnabled() &&  filteringRange == null) {  
 
Messagebox.show("nothing to filter");
 
Messagebox.show("nothing to filter");
 
return;
 
return;
Line 36: Line 36:
 
 
 
selection.enableAutoFilter(!selection.isAutoFilterEnabled());
 
selection.enableAutoFilter(!selection.isAutoFilterEnabled());
 +
 +
// SheetOperationUtil.toggleAutoFilter(selection);
 
}
 
}
 
 
 
@Listen("onClick = button[label='Clear Filter']")
 
@Listen("onClick = button[label='Clear Filter']")
 
public void clear() {
 
public void clear() {
Range selection = Ranges.range(ss.getSelectedSheet(), ss.getSelection());
+
Range sheetRange = Ranges.range(ss.getSelectedSheet());
selection.resetAutoFilter();
+
sheetRange.resetAutoFilter();
 +
 +
// SheetOperationUtil.resetAutoFilter(selection);
 
}
 
}
 
 
 
@Listen("onClick = button[label='Reapply Filter']")
 
@Listen("onClick = button[label='Reapply Filter']")
 
public void reapply() {
 
public void reapply() {
Range selection = Ranges.range(ss.getSelectedSheet(), ss.getSelection());
+
Range sheetRange = Ranges.range(ss.getSelectedSheet());
selection.applyAutoFilter();
+
sheetRange.applyAutoFilter();
 +
 +
// SheetOperationUtil.applyAutoFilter(selection);
 
}
 
}
 
 
 
@Listen("onClick = button[label='Apply']")
 
@Listen("onClick = button[label='Apply']")
 
public void apply() {
 
public void apply() {
Range currentSheet = Ranges.range(ss.getSelectedSheet());
+
Range sheetRange = Ranges.range(ss.getSelectedSheet());
if (currentSheet.isAutoFilterEnabled()){
+
if (sheetRange.isAutoFilterEnabled()){
 
String[] criteria = {typeBox.getValue()};
 
String[] criteria = {typeBox.getValue()};
currentSheet.enableAutoFilter(1, AutoFilterOperation.VALUES, criteria, null, true);
+
sheetRange.enableAutoFilter(1, AutoFilterOperation.VALUES, criteria, null,
 +
true);
 
}
 
}
 
}
 
}
 
}
 
}
 
</source>
 
</source>

Revision as of 06:58, 8 October 2013


Filter is a useful feature, when you want to focus on a subset of data. It can get rid of those data you don't want. Spreadsheet can allow you to enable / disable filter and apply / reset criteria via API.

We'll use a simple application to demonstrate filter API. The screenshot is below:

Zss-essentials-filter-example.png

In this application, we can toggle, clear, and reapply filter and filter by type column.


public class AutoFilterComposer extends SelectorComposer<Component> {

	@Wire
	private Spreadsheet ss;

	@Wire
	private Combobox typeBox;
	
	@Listen("onClick = button[label='Toogle Filter']")
	public void toggle() {
		Range selection = Ranges.range(ss.getSelectedSheet(), ss.getSelection());
		Range filteringRange = selection.findAutoFilterRange();
		if(!selection.isAutoFilterEnabled() &&  filteringRange == null) { 
			Messagebox.show("nothing to filter");
			return;
		}
		
		selection.enableAutoFilter(!selection.isAutoFilterEnabled());
		
//		SheetOperationUtil.toggleAutoFilter(selection);
	}
	
	@Listen("onClick = button[label='Clear Filter']")
	public void clear() {
		Range sheetRange = Ranges.range(ss.getSelectedSheet());
		sheetRange.resetAutoFilter();
		
//		SheetOperationUtil.resetAutoFilter(selection);
	}
	
	@Listen("onClick = button[label='Reapply Filter']")
	public void reapply() {
		Range sheetRange = Ranges.range(ss.getSelectedSheet());
		sheetRange.applyAutoFilter();
		
//		SheetOperationUtil.applyAutoFilter(selection);
	}
	
	@Listen("onClick = button[label='Apply']")
	public void apply() {
		Range sheetRange = Ranges.range(ss.getSelectedSheet());
		if (sheetRange.isAutoFilterEnabled()){
			String[] criteria = {typeBox.getValue()};
			sheetRange.enableAutoFilter(1, AutoFilterOperation.VALUES, criteria, null,
					true);
		}
	}
}