Get filter options based on previously selected filter
Get filter options based on previously selected filter
chriscmu
Posts: 1Questions: 1Answers: 0
I want to be able to get values for a 2nd filter, based on the rows returned from the 1st selected filter (not all rows prior to filtering). Can anybody help with this? Sorry I could not get the first part of code to indent:
$.fn.dataTableExt.oApi.fnGetColumnData = function(oSettings, iColumn, bUnique, bFiltered, bIgnoreEmpty) {
// check that we have a column id
if (typeof iColumn == "undefined") return new Array();
// by default we only want unique data
if (typeof bUnique == "undefined") bUnique = true;
// by default we do want to only look at filtered data
if (typeof bFiltered == "undefined") bFiltered = false;
// by default we do not want to include empty values
if (typeof bIgnoreEmpty == "undefined") bIgnoreEmpty = true;
// list of rows which we're going to loop through
var aiRows;
// use only filtered rows
if (bFiltered == true) aiRows = oSettings.aiDisplay;
// use all rows
else aiRows = oSettings.aiDisplayMaster; // all row numbers
// set up data array
var asResultData = new Array();
for (var i = 0, c = aiRows.length; i < c; i++) {
iRow = aiRows[i];
var aData = this.fnGetData(iRow);
var sValue = aData[iColumn];
if (sValue === undefined) continue;
// ignore empty values?
else if (bIgnoreEmpty == true && sValue.length == 0) continue;
// ignore unique values?
else if (bUnique == true && jQuery.inArray(sValue, asResultData) > -1) continue;
// else push the value onto the result data array
else asResultData.push(sValue);
}
return asResultData;
}
function fnCreateSelect(aData) {
var r = '<select><option value=""></option>', i, iLen = aData.length;
for (i = 0; i < iLen; i++) {
r += '<option value="' + aData[i] + '">' + aData[i] + '</option>';
}
return r + '</select>';
}
var oTable = $('#ActivityIndex').dataTable({
"sScrollY": calcDataTableHeight(),
"iDisplayLength": 10,
"bAutoWidth": true,
"bPaginate": false,
"bFilter": true,
"aaSorting": [[6, 'desc'], [7, 'asc']],
"aoColumns": [null, null, null, null, null, null, null, null, null, null, null, { "bSortable": false }, null],
"bSortClasses": false
});
$(window).resize(function() {
var oSettings = oTable.fnSettings();
oSettings.oScroll.sY = calcDataTableHeight();
oTable.fnDraw();
});
$($("tfoot")[1]).find("th").each(function(i) {
if ($(this).hasClass("filterable")) {
//sorting but ignoring upper or lowercases
this.innerHTML = fnCreateSelect(oTable.fnGetColumnData(i).sort(charOrdA));
$('select', this).change(function () {
oTable.fnFilter(($(this).val() == "" ? "" : "^" + $(this).val() + "$"), i, true);
});
}
});
function charOrdA(a, b) {
a = a.toLowerCase();
b = b.toLowerCase();
return (a > b) ? 1 : -1;
return 0;
}
This discussion has been closed.