/*
* tablesaw: A set of plugins for responsive tables
* minimap: a set of dots to show which columns are currently visible.
* Copyright (c) 2013 Filament Group, Inc.
* MIT License
*/
;(function( win, $, undefined ){
var MM = {
attr: {
init: 'data-tablesaw-minimap'
}
};
function createMiniMap( $table ){
var $btns = $( '
' ),
$dotNav = $( '
' ).appendTo( $btns ),
hideDot = 'tablesaw-advance-dots-hide',
$headerCells = $table.find( 'thead th' );
// populate dots
$headerCells.each(function(){
$dotNav.append( ' ' );
});
$btns.appendTo( $table.prev().filter( '.tablesaw-bar' ) );
function showMinimap( $table ) {
var mq = $table.attr( MM.attr.init );
return !mq || win.matchMedia && win.matchMedia( mq ).matches;
}
function showHideNav(){
if( !showMinimap( $table ) ) {
$btns.hide();
return;
}
$btns.show();
// show/hide dots
var dots = $dotNav.find( "li" ).removeClass( hideDot );
$table.find( "thead th" ).each(function(i){
if( $( this ).css( "display" ) === "none" ){
dots.eq( i ).addClass( hideDot );
}
});
}
// run on init and resize
showHideNav();
$( win ).on( "resize", showHideNav );
$table
.bind( "tablesawcolumns.minimap", function(){
showHideNav();
})
.bind( "tablesawdestroy.minimap", function(){
var $t = $( this );
$t.prev().filter( '.tablesaw-bar' ).find( '.tablesaw-advance' ).remove();
$( win ).off( "resize", showHideNav );
$t.unbind( ".minimap" );
});
}
// on tablecreate, init
$( document ).on( "tablesawcreate", function( e, Tablesaw ){
if( ( Tablesaw.mode === 'swipe' || Tablesaw.mode === 'columntoggle' ) && Tablesaw.$table.is( '[ ' + MM.attr.init + ']' ) ){
createMiniMap( Tablesaw.$table );
}
} );
}( this, jQuery ));