Skip to content

Instantly share code, notes, and snippets.

@ashaw
Created September 27, 2010 14:13
Show Gist options
  • Save ashaw/599095 to your computer and use it in GitHub Desktop.
Save ashaw/599095 to your computer and use it in GitHub Desktop.
function TableFilterer(table_data) {
this.full_table = table_data;
var facets = [
'office_id','state_postal','featured'
];
var createFilterer = function(facet) {
return TableFilterer['prototype']['filterTableBy' + facet] = function(entity) {
filtered_table_data = _.select(this.full_table,function(q) { return q[facet] === entity });
}
};
var i;
//create filterTableByoffice_id(), filterTableBystate_postal(), filterTableByfeatured()
for (i = 0; i < facets.length; i++) {
createFilterer(facets[i]);
}
return this;
};
TableFilterer.prototype.populateTable = function() {
window.template = _.template($("#elex_table_tmpl").html())
$("#elex_table_evaluated").html(template());
};
TableFilterer.prototype.addClickHandler = function(el,facet) {
tFinstance = this;
$(el).live('click',function() {
var entity = $(this).attr(facet);
tFinstance['filterTableBy' + facet](entity);
tFinstance.populateTable();
return false;
});
return this;
};
$(document).ready(function() {
$.getJSON('/' + 'all' + '.json',function(data) {
filterer = new TableFilterer(data);
filterer.filterTableByfeatured(true);
filterer.populateTable();
filterer.addClickHandler('a.state_nav','state_postal').addClickHandler('a.office_nav','office_id');
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment