var collegiatelink = collegiatelink || {}; collegiatelink.DataGrid = function (element, callback) { this.grid = element; this.container = null; }; collegiatelink.DataGrid.prototype.init = function() { this.validate(); this.initializeSearch(); this.initializePagination(); this.initializeSort(); this.initializeMoreFilters(); this.getContainer().data('datagrid', this); }; collegiatelink.DataGrid.prototype.validate = function () { //var container = this.getContainer(); //if (typeof (container) === 'undefined' || container.length == 0) // console.error('no grid defined'); //var pagination = container.find('.pagination'); //if (typeof (pagination) === 'undefined' || pagination.length == 0) // console.error('no pagination defined'); //var pagerResults = container.hasClass('pagerResult') ? container : container.find('.pagerResult:first'); //if (pagerResults.length != 1) // console.error('no pagerResult defined.'); }; collegiatelink.DataGrid.prototype.getContainer = function() { if (this.container !== null) return this.container; var container = this.grid; if (container.parents('.SearchableGrid').length > 0) { container = this.grid.parents(".SearchableGrid:first"); } else { container = this.grid.parent(); } this.container = container; return container; }; collegiatelink.DataGrid.prototype.initializeSearch = function () { var that = this; var container = this.getContainer(); container.on('focus', '.searchBoxValue', function () { $(this).parents('.searchBoxContainer').addClass('focus'); }); container.on('focus', '.searchBoxValue', function () { $(this).parents('.searchBoxContainer').removeClass('focus'); }); container.on('submit', '.searchBoxForm', function(evt) { evt.preventDefault(); $.ajax({ url: $(this).attr('action'), data : $(this).serialize(), beforeSend: function () { core.blocker.block(container); }, complete: function () { core.blocker.unblock(); }, success: function (html) { that.renderResults(html); } }); }); container.on('click', '.searchClear', function (evt) { evt.preventDefault(); container.find('.searchBoxValue:first').val(''); container.find('form.searchBoxForm:first').submit(); }); }; collegiatelink.DataGrid.prototype.initializeSort = function() { var that = this; var container = this.getContainer(); container.on('click', 'thead a', function (evt) { evt.preventDefault(); $.ajax({ url: $(this).attr('href'), beforeSend: function() { core.blocker.block(container); }, complete: function() { core.blocker.unblock(); }, success: function (result) { that.renderResults(result); } }); }); }; collegiatelink.DataGrid.prototype.initializePagination = function() { var that = this; var container = this.getContainer(); container.on('click', '.pagination a', function(evt) { evt.preventDefault(); var url = $(this).attr('href'); $.ajax({ url: url, beforeSend: function() { core.blocker.block(container); }, complete: function() { core.blocker.unblock(); }, success: function(html) { that.renderResults(html); } }); }); }; collegiatelink.DataGrid.prototype.initializeMoreFilters = function() { var container = this.getContainer(); container.on('change', '.searchBoxForm select[data-gridfilter]', function() { container.find('form.searchBoxForm:first').submit(); }); }; collegiatelink.DataGrid.prototype.renderResults = function(html) { var container = this.getContainer(); var grid = container.hasClass('pagerResult') ? container : container.find('.pagerResult:first'); grid.html(html); container.find('.radioButtons').buttonset(); var search = container.find('.searchBoxValue:first'); var clearBtn = container.find('.searchClear'); if (search.length == 0 || clearBtn.length == 0) return; if (search.val().length > 0) { clearBtn.show(); } else { clearBtn.hide(); } };