1(function($) { 2 /* 3 * Function: fnGetColumnData 4 * Purpose: Return an array of table values from a particular column. 5 * Returns: array string: 1d data array 6 * Inputs: object:oSettings - dataTable settings object. This is always the last argument past to the function 7 * int:iColumn - the id of the column to extract the data from 8 * bool:bUnique - optional - if set to false duplicated values are not filtered out 9 * bool:bFiltered - optional - if set to false all the table data is used (not only the filtered) 10 * bool:bIgnoreEmpty - optional - if set to false empty values are not filtered from the result array 11 * Author: Benedikt Forchhammer <b.forchhammer /AT\ mind2.de> 12 */ 13 $.fn.dataTableExt.oApi.fnGetColumnData = function ( oSettings, iColumn, bUnique, bFiltered, bIgnoreEmpty, bRemoveTags ) { 14 // check that we have a column id 15 if ( typeof iColumn == "undefined" ) return new Array(); 16 17 // by default we only want unique data 18 if ( typeof bUnique == "undefined" ) bUnique = true; 19 20 // by default we do want to only look at filtered data 21 if ( typeof bFiltered == "undefined" ) bFiltered = true; 22 23 // by default we do not want to include empty values 24 if ( typeof bIgnoreEmpty == "undefined" ) bIgnoreEmpty = true; 25 26 // remove HTML tags 27 if ( typeof bRemoveTags == "undefined" ) bRemoveTags = true; 28 29 // list of rows which we're going to loop through 30 var aiRows; 31 32 // use only filtered rows 33 if (bFiltered == true) aiRows = oSettings.aiDisplay; 34 // use all rows 35 else aiRows = oSettings.aiDisplayMaster; // all row numbers 36 37 // set up data array 38 var asResultData = new Array(); 39 40 for (var i=0,c=aiRows.length; i<c; i++) { 41 iRow = aiRows[i]; 42 var aData = this.fnGetData(iRow); 43 var sValue = aData[iColumn]; 44 45 // strip HTML tags 46 if (bRemoveTags == true && sValue.length > 0) { 47 sValue = jtQuery('<span>'+sValue+'<span>').text(); 48 } 49 50 // ignore empty values? 51 if (bIgnoreEmpty == true && sValue.length == 0) continue; 52 53 // ignore unique values? 54 else if (bUnique == true && jtQuery.inArray(sValue, asResultData) > -1) continue; 55 56 // else push the value onto the result data array 57 else asResultData.push(sValue); 58 } 59 60 return asResultData; 61 }}(jtQuery)); 62 63function sortNumerically(a,b) { 64 a = parseInt(a); 65 b = parseInt(b); 66 return a - b; 67} 68 69function fnCreateSelect( aData, tabulizer_datatable_id, column_id, prompt_label ) 70{ 71 if ( typeof prompt_label == "undefined" ) prompt_label = ""; 72 73 var split_arr, si, split_delimiter = false, replace_pattern; 74 if (split_delimiter) { 75 replace_pattern = new RegExp("["+split_delimiter+"]","g"); 76 } 77 78 if (aData) { 79 var i,sValue,sData = []; 80 for (i=0;i<aData.length;i++) { 81 sValue = jtQuery('<span>'+aData[i]+'<span>').text(); 82 sValue = sValue.trim(); 83 if ((sValue != '')&&(split_delimiter)) { 84 split_arr = sValue.split(split_delimiter); 85 for (si = 0;si<split_arr.length;si++) { 86 sValue = split_arr[si].trim(); 87 sValue = sValue.replace(replace_pattern, ''); 88 if (sValue != '') { 89 if (sData.indexOf(sValue)<0) { 90 sData[sData.length] = sValue; 91 } 92 } 93 } 94 } else { 95 if (sData.indexOf(sValue)<0) { 96 sData[sData.length] = sValue; 97 } 98 } 99 } 100 101 // sort numerically, when possible 102 var columnIsSorted = false; 103 var isNumericData = true; 104 105 for (i=0;i<sData.length;i++) { 106 if (isNaN(sData[i])) { 107 isNumericData = false; 108 break; 109 } 110 } 111 112 if (isNumericData) { 113 sData.sort(sortNumerically); 114 columnIsSorted = true; 115 } 116 117 if (!columnIsSorted) { 118 sData.sort(); 119 } 120 121 aData = sData; 122 } 123 124 var r='<select name="tab_search_col_'+tabulizer_datatable_id+'_'+column_id+'"><option value="">'+prompt_label+'</option>', i, iLen=aData.length; 125 for ( i=0 ; i<iLen ; i++ ) 126 { 127 r += '<option value="'+aData[i]+'">'+aData[i]+'</option>'; 128 } 129 return r+'</select>'; 130} 131 132function fnCreateSelectRange( aData, tabulizer_datatable_id, column_id, prompt_label ) 133{ 134 if ( typeof prompt_label == "undefined" ) prompt_label = ""; 135 var range_separator = '&'; 136 137 if (aData) { 138 aData.sort(function(x, y){ 139 var xl = x.rkey.indexOf('<'); 140 var yl = y.rkey.indexOf('<'); 141 var xm = x.rkey.indexOf('>'); 142 var ym = y.rkey.indexOf('>'); 143 if (xl>=0) return -1; else if (xm>=0) return 1; 144 else if (yl>=0) return 1; else if (ym>=0) return -1; 145 else { 146 var rkeyx, rkeyy; 147 xl = x.rkey.indexOf(range_separator); 148 if (xl>=0) rkeyx = x.rkey.substring(0, xl-1); else rkeyx = x.rkey; 149 yl = y.rkey.indexOf(range_separator); 150 if (yl>=0) rkeyy = y.rkey.substring(0, yl-1); else rkeyy = y.rkey; 151 rkeyx = parseInt(rkeyx); 152 rkeyy = parseInt(rkeyy); 153 return (rkeyx > rkeyy); 154 } 155 }); 156 } 157 158 var r='<select name="tab_search_col_'+tabulizer_datatable_id+'_'+column_id+'"><option value="">'+prompt_label+'</option>', i, iLen=aData.length; 159 for ( i=0 ; i<iLen ; i++ ) 160 { 161 r += '<option value="'+aData[i]['rkey']+'">'+aData[i]['rlabel']+'</option>'; 162 } 163 return r+'</select>'; 164} 165 166function clearColumnFilters (datatable_id, column_id) { 167 168 if (typeof datatable_id == 'undefined') datatable_id = -1; 169 if (typeof column_id == 'undefined') column_id = -1; 170 171 var input, match, dt_id, col_id, clear_filter; 172 var datatable_ids = []; 173 174 jtQuery('div.reset_filter_wrapper table thead select').each( 175 function(index){ 176 input = jtQuery(this); 177 match = /tab_search_col_(\d+)_(\d+)/i.exec(input.attr('name')); 178 dt_id = parseInt(match[1]); 179 col_id = parseInt(match[2]); 180 181 clear_filter = true; 182 if (datatable_id>=0) { 183 if (dt_id != datatable_id) { 184 clear_filter = false; 185 } 186 } 187 if (column_id>=0) { 188 if (col_id != column_id) { 189 clear_filter = false; 190 } 191 } 192 193 if (clear_filter) { 194 input.val( '' ); 195 input.trigger('change'); 196 } 197 } 198 ); 199 200 jtQuery('div.reset_filter_wrapper table thead input').each( 201 function(index){ 202 input = jtQuery(this); 203 match = /tab_search_col_(\d+)_(\d+)/i.exec(input.attr('name')); 204 dt_id = parseInt(match[1]); 205 col_id = parseInt(match[2]); 206 207 clear_filter = true; 208 if (datatable_id>=0) { 209 if (dt_id != datatable_id) { 210 clear_filter = false; 211 } 212 } 213 if (column_id>=0) { 214 if (col_id != column_id) { 215 clear_filter = false; 216 } 217 } 218 219 if (clear_filter) { 220 input.val( '' ); 221 } 222 } 223 ); 224 225} 226
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.