mirror of
https://github.com/Mottie/tablesorter.git
synced 2024-11-15 23:54:22 +00:00
b85668819e
let me know if you'd like something different
131 lines
3.5 KiB
Plaintext
131 lines
3.5 KiB
Plaintext
/*! Widget: vertical-group (BETA) - updated 9/27/2017 (v2.29.0) */
|
|
/* Requires tablesorter and jQuery
|
|
* Originally by @aavmurphy (Andrew Murphy)
|
|
* Adapted for tablesorter by xxxxxx
|
|
*
|
|
* This widget is licensed under the same terms at mottie/tablesorter itself, i.e. free to use
|
|
*/
|
|
|
|
/*
|
|
|
|
$.tablesorter.addWidget( {
|
|
id: 'vertical_group',
|
|
priority:99,
|
|
format: vertically_group
|
|
} ) ;
|
|
|
|
vertical_group = function ( table, config, widget_options, init_flag )
|
|
{
|
|
// -------------------------------------------------------------------------------------------------
|
|
// loop thru the header row,
|
|
// - look for .vertical-group
|
|
//
|
|
// loop thru the rows
|
|
//
|
|
// set ALWAYS_SHOW = FALSE
|
|
//
|
|
// loop thru the 1st 4 columns
|
|
//
|
|
// if this cell does not exist, skip to next row
|
|
//
|
|
// if ALWAYS_SHOW, then this cell is SHOW
|
|
//
|
|
// else if this column does not have '.vertical-group', then this cell is SHOW
|
|
//
|
|
// else if this cell is NOT the same as the cell-above, then this cell is SHOW
|
|
//
|
|
// else this cell is HIDE
|
|
//
|
|
// if this cell is SHOW, set ALWAYS_SHOW
|
|
//
|
|
// if this cell is SHOW,
|
|
// then
|
|
// set the cell class to .vertical_group_show
|
|
// else
|
|
// set the cell class to vertical_group_show
|
|
//
|
|
// TO DO add/remove classes so as not to clobber other existing classes
|
|
//
|
|
//
|
|
// TO DO add classes
|
|
//
|
|
// .vertical-group-show { background-color: white !important; }
|
|
// .vertical-group-hide { visibility: hidden; border-top: white !important;background-color: white !important; }
|
|
//
|
|
// this is all because of stripped tables
|
|
// - background-colour show be the table's background colour (or the first row's)
|
|
// - the border-color needs to be the same
|
|
//
|
|
// ------------------------------------------------------------------------------------------------
|
|
|
|
//console.groupCollapsed( 'EVENT widget tablesorter : group rows vertically' );
|
|
|
|
var rows = table.tBodies[0].rows,
|
|
header = table.tHead.rows,
|
|
is_vertical_group_col = [],
|
|
last_row = [ 'xxx', 'xxx', 'xxx', 'xxx' ] ;
|
|
|
|
//console.info( 'vertical cols widget' );
|
|
//console.info( ' . rows: ' + rows.length );
|
|
|
|
if ( table.vertical_group_lock )
|
|
{
|
|
console.info( '. STOP lock found' );
|
|
return;
|
|
}
|
|
|
|
table.vertical_group_lock = true;
|
|
|
|
for (var k = 0 ; k < 4; k++ )
|
|
{
|
|
if ( header[0].cells[ k ] && header[0].cells[ k ].className && header[0].cells[ k ].className.match( /vertical-group/i ) )
|
|
{
|
|
is_vertical_group_col[ k ] = true;
|
|
}
|
|
else
|
|
{
|
|
is_vertical_group_col[ k ] = false ;
|
|
}
|
|
}
|
|
|
|
for (var i = 0; i < rows.length; i++)
|
|
{
|
|
var always_show_cell = false ;
|
|
|
|
for (var j = 0 ; j < 4; j++ )
|
|
{
|
|
if ( ! is_vertical_group_col[ j ] ) continue;
|
|
|
|
if ( ! rows[ i ].cells[ j ] ) continue; // check 1st 4 cols .. unless it doesnt have 4 cols
|
|
|
|
//console.info( '. . row: ' + i + ' = ' + region + ' from ' + rows[ i ].cells[ 0 ].className );
|
|
|
|
var cell_data = rows[ i ].cells[ j ].innerHTML,
|
|
cell_class = rows[ i ].cells[ j ].className ;
|
|
|
|
if ( ! always_show_cell && cell_data == last_row[j] )
|
|
{
|
|
if ( cell_class != 'vertical-group-hide' ) rows[ i ].cells[ j ].className = 'vertical-group-hide';
|
|
}
|
|
else
|
|
{
|
|
always_show_cell = true ; // show
|
|
|
|
if ( cell_class != 'vertical-group-show' ) rows[ i ].cells[ j ].className = 'vertical-group-show';
|
|
}
|
|
|
|
//console.info( '. . = ' + rows[ i ].cells[ 0 ].className );
|
|
|
|
last_row[j] = cell_data ;
|
|
}
|
|
}
|
|
|
|
//console.info( '. done' );
|
|
|
|
table.vertical_group_lock = false;
|
|
|
|
//console.groupEnd();
|
|
};
|
|
|
|
*/
|