Filter Data

From Documentation
Revision as of 06:40, 8 October 2013 by Hawk (talk | contribs)


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 filterRange = selection.findAutoFilterRange();
		if(!selection.isAutoFilterEnabled() &&  filterRange == null) { 
			Messagebox.show("nothing to filter");
			return;
		}
		
		selection.enableAutoFilter(!selection.isAutoFilterEnabled());
	}
	
	@Listen("onClick = button[label='Clear Filter']")
	public void clear() {
		Range selection = Ranges.range(ss.getSelectedSheet(), ss.getSelection());
		selection.resetAutoFilter();
	}
	
	@Listen("onClick = button[label='Reapply Filter']")
	public void reapply() {
		Range selection = Ranges.range(ss.getSelectedSheet(), ss.getSelection());
		selection.applyAutoFilter();
	}
	
	@Listen("onClick = button[label='Apply']")
	public void apply() {
		Range currentSheet = Ranges.range(ss.getSelectedSheet());
		if (currentSheet.isAutoFilterEnabled()){
			String[] criteria = {typeBox.getValue()};
			currentSheet.enableAutoFilter(1, AutoFilterOperation.VALUES, criteria, null, true);
		}
	}
}