Stories, photos, videos, podcasts and publications about the Buffalo Bills' 2021 season.
filter and sortfilter and sort
'+ table legend; } more { return '
Chance' + sum + 'z' + make + 'document.
Change the filters or adjust the season sliders to modify the results.
Click on a column heading to sort the table.
'+tableLegend;} } , fnFooterCallback: function ( nRow, aaData, iStart, iEnd, aiDisplay ) { // Can't get actual 2+ row footer to work below or otherwise, so just use
In footer result var api = this.api(); $('tr:eq(1) th:eq(3)', api.table().footer()).html((34)); $( 'tr:eq(1) th:eq(4)', api.table().footer()).html((53)); $('tr:eq(1) th:eq(5)', api.table().footer()).html((12)); // var second row = $(nRow).next()[0]; // var nCells = secondRow.getElementsByTagName('th') ; // nCells[1].innerHTML = 55; // nCells[2].innerHTML = 47.01; // console.log(nCells); }, // ============== =================================== = ========== // Automatic addition/averaging /etc functions. At the foot of each column // // each column's class attribute is marked with the type of subtotal to be calculated // = ========================== === ======================= ======= drawCallback: function () { //Sum of footer values var api = this. api(); variable ct=0; // index counter var rowCt=0; // count the number of rows in a column var seaCt=0; // number of visible seasons // count the number of rows in the first column and display it as # # Total api.columns('.tot', { page: 'current' }).every(function () { var sum = this.data () .reduce(function (a, b) { if (b!=' ') { ct++; } return ''; }, 0); seaCt = ct; ct=0; //console.log('= = '+ sum+'/'+ct+'/'+seaCt); // update Footer for first column if (seaCt>1 && !0) { //Season totals and averages $(this.footer()).html(seaCt+ "
" ); } else if (seaCt>1 ) { $(this.footer()).html(seaCt+" " ); }else{ $(this.footer()).html(seaCt+" " "); } } ); // ================================================ == = ========= // Calculate the average in a column that is already an average by taking data from other column totals // eg FG%, batting average, SLG, etc. // === ===================================================== == == // Called from each side, eg: // var colclass = '.3Ppct-calc' // var Fldnumber = '3Ptot:name' // var denomFld = '3PAtot:name' // var sigfig = 1 // var decPct = 100 // var strip0 = true // draw leading "0" from result 0.500 -> .500 // var numberVal = parseFloat(api.column(Fldnumber, {page:'current'} .data ( ).sum(0)) // var denomVal = parseFloat(api.column(denomFld, {page:'current'} ).data().sum(0)) // customFooterVal(); function customFooterVal ( ) { // Some columns can have null stats, so they cannot be included in the average. // This javascript technique iterates one column at a time // so counting the number of rows in _different_ columns to get the correct average becomes a problem // totals per match. // So we'll instead get the ratio of rows with/without zeros in the _current_ column // and then multiply the subtotal by that factor to get a best estimate. // Most of the time is correct, unless the number of matches varies by season. // varCtnumber = parseFloat(api.column(Fldnumber, {page:'current'}).data().filter(function (value, index) {returned value! ='' ?true: false; } ).count( )+0.00001); // Count non-null values var denomCt = parseFloat(api.column(denomFld, {page:'current'} ).data().filter( function (value, index) { return value !='' ? true : false } ).to count()); //numbers non=nulls var subave = ((denomCt / numberCt) * numberVal / (denomVal + 0.00001 ) * decPct ).toFixed(sigfig); // Create footer if (Ct number<1) { subave='-'; //No stats in column} else if (strip0) { subave=subave.replace(/^( 0\.)/,'.') ; //Remove the leading '0'. result from 0.500 -> .500 } if (seaCt>1 && !0) { subave = subave + '
' + subave } jQuery( api. table(). column(colclass). footer()). html((subave)); } // console. log('-------') // console .log ('1:'+ parseFloat(api.column('3Ptot:name', {page:'current'} ) .data().filter( // function ( value, index ) { returned value !='' ? true : false; } .count())) // console.log ('2:'+ parseFloat(api.column) ('3PAtot:name', {page:'current'}).data().filter ( // function (value, index) { return value!='' ?true: false; } .count()) ) // sigfig and "leading 0" are stored in the database, // also created by dynamic footer calculations Own class for javascript calculations // not currently used // ================ =========== // footer with sum and average // ============================ api.columns( '.sumave00', { page: 'current' }).every(function () { var strip0 = 0; var sigfig = 0; var sum = this .data() .reduce(function (a, b) { var x = parseFloat ( $('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ sri; } else{ prosj. = ''; // when taking the red drug, only 1 season per post} sum = parseInt(sum); $(this.footer()).html(sum + avg) ; }); api.columns('.sumve01', {page: 'current'}).every(function() { var strip0 = 0; var sigfig = 1; var sum = this .data() .reduce(function (a, b ). ) { var x = parseFloat($('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ sri; } else{ prosj. = ''; // when taking the red drug, only 1 season per post} sum = parseInt(sum); $(this.footer()).html(sum + avg) ; }); api.columns('.sumve02', { page: 'current'}).every(function() { var strip0 = 0; var sigfig = 2; var sum = this .data() .reduce(function (a, b ). ) { var x = parseFloat($('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ sri; } else{ prosj. = ''; // when taking the red drug, only 1 season per post} sum = parseInt(sum); $(this.footer()).html(sum + avg) ; }); api.columns('.sumve03', {page: 'current'}).every(function() { var strip0 = 0; var sigfig = 3; var sum = this .data() .reduce(function (a, b ). ) { var x = parseFloat($('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ sri; } else{ prosj. = ''; // when taking the red drug, only 1 season per post} sum = parseInt(sum); $(this.footer()).html(sum + avg) ; }); api.columns('.sumve11', {stranica:'current'}).every(function() { var strip0 =1; var sigfig=1; var sum = this .data() .reduce(function (a, b ). ) { var x = parseFloat($('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ sri; } else{ prosj. = ''; // when taking the red drug, only 1 season per post} sum = parseInt(sum); $(this.footer()).html(sum + avg) ; }); api.columns('.sumve12', {stranica:'current'}).every(function() { var strip0 =1; var sigfig=2; var sum = this .data() .reduce(function (a, b ). ) { var x = parseFloat($('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ sri; } else{ prosj. = ''; // when taking the red drug, only 1 season per post} sum = parseInt(sum); $(this.footer()).html(sum + avg) ; }); api.columns('.sumve13', {stranica:'current'}).every(function() { var strip0 =1; var sigfig=3; var sum = this .data() .reduce(function (a, b ). ) { var x = parseFloat($('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ marry; } else { avg. = ''; // don't show the second row when there is only 1 season } sum = parseInt(sum); $(this.footer()).html(sum + avg); }); // ==== ===================== // footer for both averages // ================== === ====== api.columns('.aveave00', { page: 'current'}).every(function () { var strip0 = 0; var sigfig = 0; var sum = this .data ( ).reduce (function (a, b) { var x = parseFloat($('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ marry; } else { avg. = ''; //Do not display the second row when there is only 1 season} $(this.footer()).html( sumAlt + ave); }); api.columns('.aveave01', { page: ' current' }).every(function () { var strip0 = 0; var sigfig = 1; var sum = this .data() .reduce(function (a, b ) { var x = parseFloat($('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ marry; } else { avg. = ''; //Do not display the second row when there is only 1 season} $(this.footer()).html( sumAlt + ave); }); api.columns('.aveave02', {page: ' current'}).every(function () { var strip0 = 0; var sigfig = 2; var sum = this .data() .reduce(function (a, b ) { var x = parseFloat($('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ marry; } else { avg. = ''; //Do not display the second row when there is only 1 season} $(this.footer()).html( sumAlt + ave); }); api.columns('.aveave03', { page: ' current' }).every(function () { var strip0 = 0; var sigfig = 3; var sum = this .data() .reduce(function (a, b ) { var x = parseFloat($('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ marry; } else { avg. = ''; //Do not display the second row when there is only 1 season} $(this.footer()).html( sumAlt + ave); }); api.columns('.aveave11', { page: ' current' }).every(function () { var strip0 =1; var sigfig =1; var sum = this .data() .reduce(function (a, b ) ) { var x = parseFloat($('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ marry; } else { avg. = ''; //Do not display the second row when there is only 1 season} $(this.footer()).html( sumAlt + ave); }); api.columns('.aveave12', {page: ' current'}).every(function () { var strip0 =1; var sigfig =2; var sum = this .data() .reduce(function (a, b ) { var x = parseFloat($('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ marry; } else { avg. = ''; //Do not display the second row when there is only 1 season} $(this.footer()).html( sumAlt + ave); }); api.columns('.aveave13', {page: ' current'}).every(function() { var strip0 =1; var sigfig =3; var sum = this .data() .reduce(function (a, b ) { var x = parseFloat($('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ marry; } else { avg. = ''; // don't show the second row when there is only 1 season } $(this.footer()).html( sumAlt + ave); }); // these two elements should be deprecated, but the Keep them here for legacy purposes api.columns('.aveave', { page: 'current' }).every(function () { var strip0 =1; var sigfig =1; var sum = this .data() .reduce(function (a, b) { var x = parseFloat($('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ marry; } else { avg. = ''; // don't show the second row when there is only 1 season } $(this.footer()).html( sumAlt + ave); }); // these two elements should be deprecated, but the Keep them here for legacy purposes api.columns('.sum', { page: 'current' }).every(function () { var strip0 =1; var sigfig =1; var sum = this .data() .reduce(function (a, b) { var x = parseFloat($('"+a+"').text()) || 0; // wrapping so html is always stripped var y = parseFloat($(''+b+'').text()) || 0; if (y!='') { ct++; } return x + y; }, 0); var rowCt = ct; ct=0; // update footer if (rowCt ==0) { sum='-'; sumAlt='-'; }else{ sum = parseFloat(sum).toFixed(4) sumAlt = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) if ( strip0==1){ sumAlt = sumAlt.replace(/^(0\ .)/,'.'); } } if (rowCt==0 && seaCt>1 && !0*1) { proj. = '
-'; }else if (seaCt>1 && !0*1) { ave = parseFloat(sum/(rowCt+.000001)).toFixed(sigfig) ; if (strip0==1){ item. = item. Replace (/^(0\.)/,'.'); } items. ='
'+ marry; } else { avg. = ''; // don't show second row when there is only 1 season } sum = parseInt(sum); $(this.footer()).html(sum + avg); }); // don't use them anymore , because the two lines of footer code above put the mean after the sum // other columns are automatically calculated from the mean or sum depending on the class tag // api.columns('.sumonly', { page: 'current' } ).each(function (rowIdx, tableLoop, rowLoop) { // var sum = this // .data() // .reduce(function (a, b) { // var x = parseFloat (a) || 0; // var y = parseFloat(b) || 0; // return x + y; // }, 0); // // console.log(sum); // // update footer // $( this .footer( ).html(parseFloat(sum).toFixed(0)); // }); // api.columns('.avg3', { page: 'current' }).every(function () { / / var sum = this // .data() // .reduce(function (a, b) { // var x = parseFloat(a) || 0; // var y = parseFloat(b) || 0; / / if (b!='') { // ct++; // } // return x + y ; // }, 0); // var rowCt = ct; // ct=0; // // console. log('=='+sum+'/'+ct+'/'+rowCt); // // update footer // $(this.footer()).html(parseFloat(sum/(rowCt+.000001)) .toFixed(3).replace('0.','.') ); // }); //api.fixedHeader.adjust(); }, button: [ // ========= ========================================== ======== ==== // View dropdown menu // ============================ == = ========= ==================//// ================================================= = ====== // Create DIVISIONS drop down menu // =================================== === ==================== // { // extension: 'collection', // text: "Splits", // fade: 0, // autoClose: true, // buttons: // [ // // ] // }, // ================= =========================================== // Column Visibility Dropdown // = ===================================================== == ======== == // checkbox in // https://infra.clarin.eu/content/libs/DataTables-1.10.4/extensions/ColVis/examples/text.html //{extend: 'colvis', fade: 0, className: 'btn-group-child pull-left', //collectionLayout: 'fixed two columns', columns: ":not(.notInMenu)", //': gt (0)', titleAttr: 'Hide/Show Columns', text: "Columns" }, // ============================= ================================= // Export/Share dropdown // ======== == ===================================================/ / { extend: "collection", text: "Share", fade: 0, titleAttr: 'Export the table to another location', className: 'btn-group-child', autoClose: true, buttons: [ { extend: 'Copy' , className: "pullLeft", messageTop: "RetroSeasons Data", messageBottom: "https://www.retroseasons.com/teams/buffalo-bills/2021/leaders/passing-td/", header: true, footer: Yes Text:"Copy/Paste", key: { key: 'c', ctrlKey: true, }, export options: { columns: ':visible' }, }, {ext: 'csv', className: 'pullLeft', title: " retroseasons-teams-buffalo-bills-2021-leaders-passing-td-export", messageBottom: "https://www.retroseasons.com/teams/buffalo-bills/2021/leaders/passing-td/", messageTop: "This data was exported from https://www.retroseasons.com", text: "获取", titleAttr: 'Dohvati statistiku', zaglavlje: true, podnožje: true, key: {key: 'x', ctrlKey: true, }, exportOptions: {columns: ':visible'}, }, // { / / text: "Facebook Share", // titleAttr: 'Share Page', // }, // { // text: "Share Page", // titleAttr: 'Share Page', // }, // { / / 测试:“Embedded Table", // titleAttr: 'Embedded Table', // }, ] }, // ================================ =============================== // Filter drop down menu // ============== ==================================================//{ extend: "collection", text: "Filter", autoClose: true, titleAttr: "Filter statistics display data subset", className: "btn-group-child", fade: 0, buttons: [ // = = = =================================================== = === // The FILTER parameter variable is set on each page according to the data // ===================================== ======================== ] }, // end of collection dropdown], }); // redraw header/footer on colviz change, Make it well formatted "+ column +" to "+ (state ? 'visible' : 'hidden')); table.fixedHeader.adjust(); }); jQuery('#mainTable').show(); / / =================================================== === ========== // draw table filter fields to allow range filtering // (this technique is then linked to the range slider) // ======= = ==== = ==================================================== = ===== = jQuery.fn.dataTable.ext.search.push( function( settings, data, dataIndex ) { var min = parseInt( jQuery('#slider-min').val(), 10 ) ; var max = parseInt( jQuery ( '#slider-max').val(), 10); var age = parseFloat( data[0] ) || 0; // use age column data if ( ( isNaN( min ) && isNaN( max ) ) | |( isNaN( min ) && age <= max ) || ( min <= age && isNaN( max ) ) || ( min <= age && age <= max ) ) { return true; } return false; }); // ============================================== ===== = ============== // Event listeners on both inputs to filter ranges to redraw the inputs. // I don't really need it anymore since it's hidden and // I trigger a repaint on the slider, but leave it here for older versions // ========= ==================================================== ====jQuery('# slider-min, #slider-max').change( function() { table.draw(); } ); // =============== =================================== = ============== // Avtandil mod: throttle slider change event // =========================================== ========================== var throttle_inst = null; var throttle = function(wait, function, options) { var context, arguments, result; var timeout = empty; previous var = 0; if(!options) options = {}; var later = function() { previous = options.leading === false? 0 : date.now(); timeout = zero; result = func.apply(context, arguments); if (!timeout) context = arguments = null; }; return function() { var now = Date.now(); if (!previous && options.leading === false) previous = now; var remaining = wait - ( now - previous ); context = this; arguments = arguments; if (remaining <= 0 || remaining > wait) { if (timeout) { clearTimeout(timeout); timeout = zero; previous = now; result = func.apply(context, args); if(!timeout) context = args = null; } else if (!timeout && options.trailing !== false) { timeout = setTimeout(later, remaining); } return result; }; } var throttle_model_update = function() { if (null === throttle_inst) { throttle_inst = throttle (500, function () { dem._handleSliderChange(); }); } gas_inst(); } // ===================================================== ============== // Avtandil End: Throttle Slider Change Event // ======================= = = = = ================================================ // = === ==================================================== ===== == ========= // Set configuration parameters for the range slider // http://ionden.com/a/plugins/ion.rangeSlider/demo_interactions.html // == ==================================================== ====== ==== == ======= var $range = jQuery("#slider range"); jQuery(function () { $range.ionRangeSlider({ type: 'double', step: 1, min: 1960, max: 2021, from: 2021, to: 2021, from_min: 2021, to_min: 2021, from_max: 2021, to_max: 2021, hide_min_max: false, keyboard: false, from_shadow: true, grid: false, skin: "round", // skin: "big", force_edges: true, drag_interval: true, prettify_enabled: false, onChange: function ( ) { update_model_throttle(); } }); }); $('div. dataTables_filter input').addClass('focus:border-blue-500 focus:border-2'); // <-- add this line $('div.dataTables_filter input').addClass('rounded rounded-lg border border -gray-400'); // <-- add this line $('div.dataTables_filter input').addClass('text-black'); // <-- add this line // ====== ===================================== =============== ======== // Change min/max values of input fields and redraw form when slider is changed // ===== ================ =================================================== $ range.on("change", function () { var $this = $(this), value = $this.prop("value").split("; ") ; //console.log(value[0 ] + " - " + value[1]); document.getElementById('slider-min').value=value[0]; document.getElementById('slider-max').value=value[1];table. draw();}); // fixes header.adjust(); // breaks wordpress.draw(); $('#crumbCell').html(''); });
blanket
that's right
looking for
0matches
FAQs
Buffalo Bills - 2021 Team Leaders? ›
Signed RB Isaiah Bowser, LB Travin Howard, TE Dalton Kincaid and DE Shane Ray. Signed RB Isaiah Bowser, LB Travin Howard and DE Shane Ray. Signed TE Dalton Kincaid to a rookie contract.
Who leads the Buffalo Bills in receptions 2021? ›1 | S. Diggs WR | 1,225 |
---|---|---|
2 | C. Beasley WR | 693 |
3 | E. Sanders WR | 626 |
4 | D. Knox TE | 587 |
5 | G. Davis WR | 549 |
NAME | SEASON | TD |
---|---|---|
Stefon Diggs | 2021 | 10 |
Dawson Knox | 2021 | 9 |
Devin Singletary | 2021 | 8 |
Josh Allen | 2021 | 6 |
Sacks | ||
---|---|---|
Player | Sacks | |
1. | Bruce SmithB. Smith, 1985-99 | 171.0 |
2. | Aaron SchobelA. Schobel, 2001-10 | 78.0 |
3. | Phil HansenP. Hansen, 1991-01 | 61.5 |
Rk | Player | Yds |
---|---|---|
1 | Andre Reed | 13095 |
2 | Eric Moulds | 9096 |
3 | Lee Evans | 5934 |
4 | Elbert Dubenion | 5294 |
Signed RB Isaiah Bowser, LB Travin Howard, TE Dalton Kincaid and DE Shane Ray. Signed RB Isaiah Bowser, LB Travin Howard and DE Shane Ray. Signed TE Dalton Kincaid to a rookie contract.
Who leads the NFL in most receptions? ›Player | ATT | YDS |
---|---|---|
James Cook | 17 | 52 |
Devin Singletary | 16 | 73 |
Josh Allen | 12 | 46 |
The Buffalo Bills player with the most rushing yards in franchise history is Thurman Thomas with 11,938 rushing yards.
What free agents did the Buffalo Bills get? ›
- Jordan Phillips, defensive tackle. Phillips agreed to a one-year deal. ...
- Shaq Lawson, defensive end. ...
- Damien Harris, running back. ...
- Dane Jackson, cornerback. ...
- Tyrel Dodson, linebacker.
Rank | Player | Team |
---|---|---|
1 | Haason Reddick | Philadelphia Eagles |
2 | Nick Bosa | San Francisco 49ers |
3 | Chris Jones | Kansas City Chiefs |
4 | Myles Garrett | Cleveland Browns |
Stefon Diggs got the most total touchdowns for the Bills in 2022, with 11 touchdowns.
Who is the best Buffalo Bills receivers all time? ›The Buffalo Bills player with the most receiving yards in franchise history is Andre Reed with 13,095 yards. This all-time receiving leader is followed by Eric Moulds and Lee Evans with 9,096 yards and 5,934 yards respectively.
Who is the Bills receiver four touchdowns? ›Every Gabriel Davis catch from his historic 4-touchdown game | Divisional Round. Watch every catch from Buffalo Bills wide receiver Gabriel Davis' historic 4-touchdown game against the Kansas City Chiefs in the Divisional Round of the 2021 NFL Playoffs.
Will the Bills keep Diggs? ›Diggs signed a lucrative four-year, $96 million contract extension before last season that runs through the 2027 season. Despite fans' worries that the receiver might want to play somewhere else, he's locked in with the Bills for at least the next few seasons.
What is the roster for the Bills? ›Taylor was the first professional football receiver ever to make 100 catches in a single season, accomplishing the feat in only 14 games (1961).
Who has the fastest to 500 receptions in the NFL? ›Former Ohio State wide receiver Michael Thomas set a new NFL record today, reaching the 500-catch milestone faster than any other player in league history. Thomas hauled in catch No. 500 in his 69th game. The elite pace shattered the previous mark of 500 catches in the 80th game held by Anquan Bolden and Julio Jones.
Who has the most touchdowns in NFL history? ›Who has the most passing yards in the NFL? ›
Player | Pass Yds | Att |
---|---|---|
Tom Brady | 5316 | 719 |
Justin Herbert | 5014 | 672 |
Matthew Stafford | 4886 | 601 |
Patrick Mahomes | 4839 | 658 |
In the NFL, Cam Newton is the all-time leader in rushing attempts (1,118) and rushing touchdowns (75) for a quarterback, while Michael Vick holds the record for most rushing yards (6,109).
Who is Buffalo's best running back? ›- Thurman Thomas (1988-1999) 5 of 5. B/R Recommends.
- O.J. Simpson (1969-1977) 4 of 5.
- Joe Cribbs (1980-1985) 3 of 5.
- Cookie Gilchrist (1962-1964) 2 of 5. Replay. Play/Pause. ...
- Travis Henry (2001-2004) 1 of 5.
Overview. The Buffalo Bills were ranked 9th overall in our team guide. The player respondents hold their staff in high regard. The complaints of some respondents center mostly around wanting to hire more staff to support the quality people that they already have there.
Who has the most interceptions on the Bills? ›Butch Byrd has made the most career interceptions for the Bills, with 40 interceptions.
Who is number 1 in rushing yards? ›Emmitt Smith is the all-time rushing leader of the National Football League (NFL) with 18,355 career rushing yards.
What Bills QB has the most rushing yards? ›Josh Allen has the most career rushing yards by a Bills quarterback, with 3,087 yards.
Who holds the most rushing yards? ›The hourlong discussion then turned to Bon Jovi's failed 2014 bid to purchase the Bills as the shock jock asked about a GQ report that said Trump was involved with a fan group's smear campaign that claimed Bon Jovi would move the NFL team to Toronto, Canada.
Who did Bills lose in free agency? ›
The loss of Singletary and Taiwan Jones also being a free agent means the Bills have just two running backs (James Cook and Nyheim Hines) on their roster, meaning an additional to the backfield, either in free agency or the NFL Draft, should be on the horizon.
What did Buffalo Bill want? ›Gumb wants to become a woman—or at least believes he does—but repeatedly fails to qualify for gender reassignment surgery. He kills women so he can skin them and create a "woman suit" for himself, completing his "transformation".
Which QB has been sacked the most? ›NAME | GP | SCK |
---|---|---|
Tom Brady | 335 | 565 |
Ben Roethlisberger | 249 | 554 |
Aaron Rodgers | 230 | 530 |
Brett Favre | 302 | 525 |
#1: San Francisco 49ers
There's no question about which team has the best defense in the NFL.
The Kansas City Chiefs are Super Bowl champions, grabbing the No. 1 spot in the 2023 NFL power rankings. With the 2022 NFL season over, we can now look ahead to the 2023 NFL season.
Who is the main QB for the Buffalo Bills? ›After being selected in the first round in 2017, Josh Allen has quickly established himself as Buffalo's starter moving forward and as one of the most exciting players in the league.
Who was the quarterback for Buffalo Bills in greatest comeback? ›Buffalo quarterback Frank Reich throws against the Houston Oilers in an NFL playoff game in Orchard Park, N.Y., Jan. 3, 1993. The Bills rallied past the Oilers 41-38 in overtime.
Who was the most famous Buffalo Bills player? ›1. Bruce Smith. Bruce Smith was born in Norfolk, VA, on June 18, 1963. He attended Virginia Tech and played college football, and from there, he was drafted into the Buffalo Bills in 1985, beginning his 15-season career on the team.
How many Buffalo Bills players are in the Hall of Fame? ›According to the Pro Football Hall of Fame, 10 of these men made the major part of their primary contribution to the Buffalo Bills. James Lofton spent a minor portion of his career with the Bills, and two others were assistant coaches. (12 straight seasons with three or more interceptions.
What is the longest touchdown pass in the Bills history? ›Here are five thing to know about the play: 1. Equals the 98-yard touchdown pass from Ryan Fitzpatrick to Terrell Owens against Jacksonville on Nov. 22, 2009, as the longest pass play in Bills' franchise history.
What receiver holds the most touchdowns in a season? ›
The record for receiving touchdowns in a season is 23, set by Randy Moss during the 2007 season; only one other player (Jerry Rice) has recorded 20 or more receiving touchdowns in a season.
Who has the most career touchdowns WR? ›Diggs might not strike NFL fans at large as a potential Hall of Fame inductee. But his statistical acceleration since joining the Bills is beginning to place him among the most accomplished players at his position in this generation, a common criteria for enshrinement.
Who did the Buffalo Bills trade? ›25 overall in 2023 NFL Draft. The Buffalo Bills moved up to the No.
How much is Diggs contract with the Buffalo Bills? ›Diggs signed a 4-year $104-million dollar extension this offseason. The Bills have restructured the contract of WR Stefon Diggs, converting base salary into a bonus and creating another $5.4M in cap space, per source.
Who had the most receptions in 2021? ›NAME | SEASON | REC |
---|---|---|
Cooper Kupp | 2021 | 145 |
Davante Adams | 2021 | 123 |
Tyreek Hill | 2021 | 111 |
Justin Jefferson | 2021 | 108 |
Year | Player | Receptions |
---|---|---|
2019 | Michael Thomas^ (2) | 149* |
2020 | Stefon Diggs^ | 127 |
2021 | Cooper Kupp^ | 145 |
2022 | Justin Jefferson^ | 128 |
Year | Player | Rec |
---|---|---|
2022 | Justin Jefferson (23) | 128 |
2021 | Cooper Kupp (28) | 145 |
2020 | Stefon Diggs (26) | 127 |
2019 | Michael Thomas (26) | 149 |
Included are player stats for the Buffalo Bills (NFL) from 1970-2023 and the Buffalo Bills (AFL) from 1960-1969. Only stats for Regular Season Games have been included. Stefon Diggs is the Buffalo Bills single season leader in receptions with 127.
Who is the fastest player to 500 receptions? ›The only wide receiver to tally 500 career receptions faster than Kupp was Michael Thomas of the New Orleans Saints. Thomas achieved the impressive feat in 69 career games, surpassing the previous record holders in Anquan Boldin and Julio Jones, who caught 500 passes in 80 games each.
Who has won the Triple Crown in football? ›
In 2021, Cooper Kupp became the first triple crown winner for sixteen years.
Who has the most 100 catch seasons in NFL history? ›Antonio Brown (USA) of the Pittsburgh Steelers has six 100-catch seasons, equaling the mark set by Brandon Marshall (USA) for the most in NFL history.
What is the longest catch in NFL history? ›Cruz made a spectacular move to elude the first defender, then sped by another one downfield en route to the score. Victor Cruz's #NFL record-tying 99-yard TD reception against the #Jets on Christmas Eve 2011.
What is the longest touchdown? ›Longest Rushing Touchdown (99 Yards)
Tony Dorsett was the first to pull it off, doing so during the Monday night game of the final week of the 1982 season.
The official record stands at 22.5 sacks by Michael Strahan in 2001, while Al Baker leads the unofficial record at 23.0 in 1978. Here are the current top five in terms of the single-season sack record.
Who has the most 50 yard touchdown receptions all time? ›Jerry Rice has scored the most career receiving touchdowns when gaining 50+ yards on receptions, with 197 touchdowns.
Who has the most receptions with no touchdowns? ›Gerald Riggs has the most career receptions when scoring exactly 0 receiving touchdowns, with 201 catches.