Вход Регистрация
Файл: CLOUDME-HTML-RTL-SUPPORT/js/vendor/tablesaw.stackonly.js
Строк: 1224
<?php
/*! Tablesaw - v2.0.2 - 2015-10-28
* https://github.com/filamentgroup/tablesaw
* Copyright (c) 2015 Filament Group; Licensed  */
/*
* tablesaw: A set of plugins for responsive tables
* Stack and Column Toggle tables
* Copyright (c) 2013 Filament Group, Inc.
* MIT License
*/

if( typeof Tablesaw === "undefined" ) {
    
Tablesaw = {
        
i18n: {
            
modes: [ 'Stack''Swipe''Toggle' ],
            
columns'Col<span class="a11y-sm">umn</span>s',
            
columnBtnText'Columns',
            
columnsDialogError'No eligible columns.',
            
sort'Sort'
        
},
        
// cut the mustard
        
mustard'querySelector' in document &&
            ( !
window.blackberry || window.WebKitPoint ) &&
            !
window.operamini
    
};
}
if( !
Tablesaw.config ) {
    
Tablesaw.config = {};
}
if( 
Tablesaw.mustard ) {
    
jQuerydocument.documentElement ).addClass'tablesaw-enhanced' );
}

;(function( $ ) {
    var 
pluginName "table",
        
classes = {
            
toolbar"tablesaw-bar"
        
},
        
events = {
            
create"tablesawcreate",
            
destroy"tablesawdestroy",
            
refresh"tablesawrefresh"
        
},
        
defaultMode "stack",
        
initSelector "table[data-tablesaw-mode],table[data-tablesaw-sortable]";

    var 
Table = function( element ) {
        if( !
element ) {
            throw new 
Error"Tablesaw requires an element." );
        }

        
this.table element;
        
this.$table = $( element );

        
this.mode this.$table.attr"data-tablesaw-mode" ) || defaultMode;

        
this.init();
    };

    
Table.prototype.init = function() {
        
// assign an id if there is none
        
if ( !this.$table.attr"id" ) ) {
            
this.$table.attr"id"pluginName "-" Math.roundMath.random() * 10000 ) );
        }

        
this.createToolbar();

        var 
colstart this._initCells();

        
this.$table.triggerevents.create, [ thiscolstart ] );
    };

    
Table.prototype._initCells = function() {
        var 
colstart,
            
thrs this.table.querySelectorAll"thead tr" ),
            
self this;

        $( 
thrs ).each( function(){
            var 
coltally 0;

            $( 
this ).children().each( function(){
                var 
span parseIntthis.getAttribute"colspan" ), 10 ),
                    
sel ":nth-child(" + ( coltally ) + ")";

                
colstart coltally 1;

                if( 
span ){
                    for( var 
0span 1k++ ){
                        
coltally++;
                        
sel += ", :nth-child(" + ( coltally ) + ")";
                    }
                }

                
// Store "cells" data on header as a reference to all cells in the same column as this TH
                
this.cells self.$table.find("tr").notthrs[0] ).notthis ).children().filtersel );
                
coltally++;
            });
        });

        return 
colstart;
    };

    
Table.prototype.refresh = function() {
        
this._initCells();

        
this.$table.triggerevents.refresh );
    };

    
Table.prototype.createToolbar = function() {
        
// Insert the toolbar
        // TODO move this into a separate component
        
var $toolbar this.$table.prev().filter'.' classes.toolbar );
        if( !
$toolbar.length ) {
            
$toolbar = $( '<div>' )
                .
addClassclasses.toolbar )
                .
insertBeforethis.$table );
        }
        
this.$toolbar $toolbar;

        if( 
this.mode ) {
            
this.$toolbar.addClass'mode-' this.mode );
        }
    };

    
Table.prototype.destroy = function() {
        
// Don’t remove the toolbar. Some of the table features are not yet destroy-friendly.
        
this.$table.prev().filter'.' classes.toolbar ).each(function() {
            
this.className this.className.replace( /bmode-w*b/gi'' );
        });

        var 
tableId this.$table.attr'id' );
        $( 
document ).unbind"." tableId );
        $( 
window ).unbind"." tableId );

        
// other plugins
        
this.$table.triggerevents.destroy, [ this ] );

        
this.$table.removeAttr'data-tablesaw-mode' );

        
this.$table.removeDatapluginName );
    };

    
// Collection method.
    
$.fn[ pluginName ] = function() {
        return 
this.each( function() {
            var 
$t = $( this );

            if( 
$t.datapluginName ) ){
                return;
            }

            var 
table = new Tablethis );
            
$t.datapluginNametable );
        });
    };

    $( 
document ).on"enhance.tablesaw", function( ) {
        
// Cut the mustard
        
if( Tablesaw.mustard ) {
            $( 
e.target ).findinitSelector )[ pluginName ]();
        }
    });

}( 
jQuery ));

;(function( 
win, $, undefined ){

    var 
classes = {
        
stackTable'tablesaw-stack',
        
cellLabels'tablesaw-cell-label',
        
cellContentLabels'tablesaw-cell-content'
    
};

    var 
data = {
        
obj'tablesaw-stack'
    
};

    var 
attrs = {
        
labelless'data-tablesaw-no-labels',
        
hideempty'data-tablesaw-hide-empty'
    
};

    var 
Stack = function( element ) {

        
this.$table = $( element );

        
this.labelless this.$table.is'[' attrs.labelless ']' );
        
this.hideempty this.$table.is'[' attrs.hideempty ']' );

        if( !
this.labelless ) {
            
// allHeaders references headers, plus all THs in the thead, which may include several rows, or not
            
this.allHeaders this.$table.find"th" );
        }

        
this.$table.datadata.objthis );
    };

    
Stack.prototype.init = function( colstart ) {
        
this.$table.addClassclasses.stackTable );

        if( 
this.labelless ) {
            return;
        }

        
// get headers in reverse order so that top-level headers are appended last
        
var reverseHeaders = $( this.allHeaders );
        var 
hideempty this.hideempty;

        
// create the hide/show toggles
        
reverseHeaders.each(function(){
            var 
$t = $( this ),
                
$cells = $( this.cells ).filter(function() {
                    return !$( 
this ).parent().is"[" attrs.labelless "]" ) && ( !hideempty || !$( this ).is":empty" ) );
                }),
                
hierarchyClass $cells.notthis ).filter"thead th" ).length && " tablesaw-cell-label-top",
                
// TODO reduce coupling with sortable
                
$sortableButton $t.find".tablesaw-sortable-btn" ),
                
html $sortableButton.length $sortableButton.html() : $t.html();

            if( 
html !== "" ){
                if( 
hierarchyClass ){
                    var 
iteration parseInt( $( this ).attr"colspan" ), 10 ),
                        
filter "";

                    if( 
iteration ){
                        
filter "td:nth-child("iteration +"n + " + ( colstart ) +")";
                    }
                    
$cells.filterfilter ).prepend"<b class='" classes.cellLabels hierarchyClass "'>" html "</b>"  );
                } else {
                    
$cells.wrapInner"<span class='" classes.cellContentLabels "'></span>" );
                    
$cells.prepend"<b class='" classes.cellLabels "'>" html "</b>"  );
                }
            }
        });
    };

    
Stack.prototype.destroy = function() {
        
this.$table.removeClassclasses.stackTable );
        
this.$table.find'.' classes.cellLabels ).remove();
        
this.$table.find'.' classes.cellContentLabels ).each(function() {
            $( 
this ).replaceWiththis.childNodes );
        });
    };

    
// on tablecreate, init
    
$( document ).on"tablesawcreate", function( eTablesawcolstart ){
        if( 
Tablesaw.mode === 'stack' ){
            var 
table = new StackTablesaw.table );
            
table.initcolstart );
        }

    } );

    $( 
document ).on"tablesawdestroy", function( eTablesaw ){

        if( 
Tablesaw.mode === 'stack' ){
            $( 
Tablesaw.table ).datadata.obj ).destroy();
        }

    } );

}( 
thisjQuery ));
;(function( $ ) {
    var 
pluginName "tablesawbtn",
        
methods = {
            
_create: function(){
                return $( 
this ).each(function() {
                    $( 
this )
                        .
trigger"beforecreate." pluginName )
                        [ 
pluginName ]( "_init" )
                        .
trigger"create." pluginName );
                });
            },
            
_init: function(){
                var 
oEl = $( this ),
                    
sel this.getElementsByTagName"select" )[ ];

                if( 
sel ) {
                    $( 
this )
                        .
addClass"btn-select" )
                        [ 
pluginName ]( "_select"sel );
                }
                return 
oEl;
            },
            
_select: function( sel ) {
                var 
update = function( oElsel ) {
                    var 
opts = $( sel ).find"option" ),
                        
labelelchildren;

                    
opts.each(function() {
                        var 
opt this;
                        if( 
opt.selected ) {
                            
label document.createTextNodeopt.text );
                        }
                    });

                    
children oEl.childNodes;
                    if( 
opts.length ){
                        for( var 
0children.lengthli++ ) {
                            
el children];

                            if( 
el && el.nodeType === ) {
                                
oEl.replaceChildlabelel );
                            }
                        }
                    }
                };

                
updatethissel );
                $( 
this ).bind"change refresh", function() {
                    
updatethissel );
                });
            }
        };

    
// Collection method.
    
$.fn[ pluginName ] = function( arrgab) {
        return 
this.each(function() {

        
// if it's a method
        
if( arrg && typeofarrg ) === "string" ){
            return $.fn[ 
pluginName ].prototypearrg ].callthisab);
        }

        
// don't re-init
        
if( $( this ).datapluginName "active" ) ){
            return $( 
this );
        }

        
// otherwise, init

        
$( this ).datapluginName "active"true );
            $.fn[ 
pluginName ].prototype._create.callthis );
        });
    };

    
// add methods
    
$.extend( $.fn[ pluginName ].prototypemethods );

}( 
jQuery ));
;(function( 
win, $, undefined ){

    var 
ColumnToggle = function( element ) {

        
this.$table = $( element );

        
this.classes = {
            
columnToggleTable'tablesaw-columntoggle',
            
columnBtnContain'tablesaw-columntoggle-btnwrap tablesaw-advance',
            
columnBtn'tablesaw-columntoggle-btn tablesaw-nav-btn down',
            
popup'tablesaw-columntoggle-popup',
            
priorityPrefix'tablesaw-priority-',
            
// TODO duplicate class, also in tables.js
            
toolbar'tablesaw-bar'
        
};

        
// Expose headers and allHeaders properties on the widget
        // headers references the THs within the first TR in the table
        
this.headers this.$table.find'tr:first > th' );

        
this.$table.data'tablesaw-coltoggle'this );
    };

    
ColumnToggle.prototype.init = function() {

        var 
tableId,
            
id,
            
$menuButton,
            
$popup,
            
$menu,
            
$btnContain,
            
self this;

        
this.$table.addClassthis.classes.columnToggleTable );

        
tableId this.$table.attr"id" );
        
id tableId "-popup";
        
$btnContain = $( "<div class='" this.classes.columnBtnContain "'></div>" );
        
$menuButton = $( "<a href='#" id "' class='btn btn-micro " this.classes.columnBtn +"' data-popup-link>" +
                                        
"<span>" Tablesaw.i18n.columnBtnText "</span></a>" );
        
$popup = $( "<div class='dialog-table-coltoggle " this.classes.popup "' id='" id "'></div>" );
        
$menu = $( "<div class='btn-group'></div>" );

        var 
hasNonPersistentHeaders false;
        $( 
this.headers ).not"td" ).each( function() {
            var 
$this = $( this ),
                
priority $this.attr("data-tablesaw-priority"),
                
$cells self.$getCellsthis );

            if( 
priority && priority !== "persist" ) {
                
$cells.addClassself.classes.priorityPrefix priority );

                $(
"<label><input type='checkbox' checked>" $this.text() + "</label>" )
                    .
appendTo$menu )
                    .
children)
                    .
data"tablesaw-header"this );

                
hasNonPersistentHeaders true;
            }
        });

        if( !
hasNonPersistentHeaders ) {
            
$menu.append'<label>' Tablesaw.i18n.columnsDialogError '</label>' );
        }

        
$menu.appendTo$popup );

        
// bind change event listeners to inputs - TODO: move to a private method?
        
$menu.find'input[type="checkbox"]' ).on"change", function(e) {
            var 
checked e.target.checked;

            
self.$getCellsFromCheckboxe.target )
                .
toggleClass"tablesaw-cell-hidden", !checked )
                .
toggleClass"tablesaw-cell-visible"checked );

            
self.$table.trigger'tablesawcolumns' );
        });

        
$menuButton.appendTo$btnContain );
        
$btnContain.appendTothis.$table.prev().filter'.' this.classes.toolbar ) );

        var 
closeTimeout;
        function 
openPopup() {
            
$btnContain.addClass'visible' );
            
$menuButton.removeClass'down' ).addClass'up' );

            $( 
document ).unbind'click.' tableIdclosePopup );

            
window.clearTimeoutcloseTimeout );
            
closeTimeout window.setTimeout(function() {
                $( 
document ).one'click.' tableIdclosePopup );
            }, 
15 );
        }

        function 
closePopupevent ) {
            
// Click came from inside the popup, ignore.
            
if( event && $( event.target ).closest"." self.classes.popup ).length ) {
                return;
            }

            $( 
document ).unbind'click.' tableId );
            
$menuButton.removeClass'up' ).addClass'down' );
            
$btnContain.removeClass'visible' );
        }

        
$menuButton.on"click.tablesaw", function( event ) {
            
event.preventDefault();

            if( !
$btnContain.is".visible" ) ) {
                
openPopup();
            } else {
                
closePopup();
            }
        });

        
$popup.appendTo$btnContain );

        
this.$menu $menu;

        $(
window).on"resize." tableId, function(){
            
self.refreshToggle();
        });

        
this.refreshToggle();
    };

    
ColumnToggle.prototype.$getCells = function( th ) {
        return $( 
th ).addth.cells );
    };

    
ColumnToggle.prototype.$getCellsFromCheckbox = function( checkbox ) {
        var 
th = $( checkbox ).data"tablesaw-header" );
        return 
this.$getCellsth );
    };

    
ColumnToggle.prototype.refreshToggle = function() {
        var 
self this;
        
this.$menu.find"input" ).each( function() {
            
this.checked self.$getCellsFromCheckboxthis ).eq).css"display" ) === "table-cell";
        });
    };

    
ColumnToggle.prototype.refreshPriority = function(){
        var 
self this;
        $(
this.headers).not"td" ).each( function() {
            var 
$this = $( this ),
                
priority $this.attr("data-tablesaw-priority"),
                
$cells $this.addthis.cells );

            if( 
priority && priority !== "persist" ) {
                
$cells.addClassself.classes.priorityPrefix priority );
            }
        });
    };

    
ColumnToggle.prototype.destroy = function() {
        
// table toolbars, document and window .tableId events
        // removed in parent tables.js destroy method

        
this.$table.removeClassthis.classes.columnToggleTable );
        
this.$table.find'th, td' ).each(function() {
            var 
$cell = $( this );
            
$cell.removeClass'tablesaw-cell-hidden' )
                .
removeClass'tablesaw-cell-visible' );

            
this.className this.className.replace( /bui-table-priority-db/g'' );
        });
    };

    
// on tablecreate, init
    
$( document ).on"tablesawcreate", function( eTablesaw ){

        if( 
Tablesaw.mode === 'columntoggle' ){
            var 
table = new ColumnToggleTablesaw.table );
            
table.init();
        }

    } );

    $( 
document ).on"tablesawdestroy", function( eTablesaw ){
        if( 
Tablesaw.mode === 'columntoggle' ){
            $( 
Tablesaw.table ).data'tablesaw-coltoggle' ).destroy();
        }
    } );

}( 
thisjQuery ));
;(function( 
win, $, undefined ){

    $.
extendTablesaw.config, {
        
swipe: {
            
horizontalThreshold15,
            
verticalThreshold30
        
}
    });

    function 
isIE8() {
        var 
div document.createElement('div'),
            
all div.getElementsByTagName('i');

        
div.innerHTML '<!--[if lte IE 8]><i></i><![endif]-->';

        return !!
all.length;
    }

    function 
createSwipeTable$table ){

        var 
$btns = $( "<div class='tablesaw-advance'></div>" ),
            
$prevBtn = $( "<a href='#' class='tablesaw-nav-btn btn btn-micro left' title='Previous Column'></a>" ).appendTo$btns ),
            
$nextBtn = $( "<a href='#' class='tablesaw-nav-btn btn btn-micro right' title='Next Column'></a>" ).appendTo$btns ),
            
hideBtn 'disabled',
            
persistWidths 'tablesaw-fix-persist',
            
$headerCells $table.find"thead th" ),
            
$headerCellsNoPersist $headerCells.not'[data-tablesaw-priority="persist"]' ),
            
headerWidths = [],
            
$head = $( document.head || 'head' ),
            
tableId $table.attr'id' ),
            
// TODO switch this to an nth-child feature test
            
supportsNthChild = !isIE8();

        if( !
$headerCells.length ) {
            throw new 
Error"tablesaw swipe: no header cells found. Are you using <th> inside of <thead>?" );
        }

        
// Calculate initial widths
        
$table.css('width''auto');
        
$headerCells.each(function() {
            
headerWidths.push( $( this ).outerWidth() );
        });
        
$table.css'width''' );

        
$btns.appendTo$table.prev().filter'.tablesaw-bar' ) );

        
$table.addClass"tablesaw-swipe" );

        if( !
tableId ) {
            
tableId 'tableswipe-' Math.roundMath.random() * 10000 );
            
$table.attr'id'tableId );
        }

        function 
$getCellsheaderCell ) {
            return $( 
headerCell.cells ).addheaderCell );
        }

        function 
showColumnheaderCell ) {
            
$getCellsheaderCell ).removeClass'tablesaw-cell-hidden' );
        }

        function 
hideColumnheaderCell ) {
            
$getCellsheaderCell ).addClass'tablesaw-cell-hidden' );
        }

        function 
persistColumnheaderCell ) {
            
$getCellsheaderCell ).addClass'tablesaw-cell-persist' );
        }

        function 
isPersistentheaderCell ) {
            return $( 
headerCell ).is'[data-tablesaw-priority="persist"]' );
        }

        function 
unmaintainWidths() {
            
$table.removeClasspersistWidths );
            $( 
'#' tableId '-persist' ).remove();
        }

        function 
maintainWidths() {
            var 
prefix '#' tableId '.tablesaw-swipe ',
                
styles = [],
                
tableWidth $table.width(),
                
hash = [],
                
newHash;

            
$headerCells.each(function( index ) {
                var 
width;
                if( 
isPersistentthis ) ) {
                    
width = $( this ).outerWidth();

                    
// Only save width on non-greedy columns (take up less than 75% of table width)
                    
if( width tableWidth 0.75 ) {
                        
hash.pushindex '-' width );
                        
styles.pushprefix ' .tablesaw-cell-persist:nth-child(' + ( index ) + ') { width: ' width 'px; }' );
                    }
                }
            });
            
newHash hash.join'_' );

            
$table.addClasspersistWidths );

            var 
$style = $( '#' tableId '-persist' );
            
// If style element not yet added OR if the widths have changed
            
if( !$style.length || $style.data'hash' ) !== newHash ) {
                
// Remove existing
                
$style.remove();

                if( 
styles.length ) {
                    $( 
'<style>' styles.join"n" ) + '</style>' )
                        .
attr'id'tableId '-persist' )
                        .
data'hash'newHash )
                        .
appendTo$head );
                }
            }
        }

        function 
getNext(){
            var 
next = [],
                
checkFound;

            
$headerCellsNoPersist.each(function( ) {
                var 
$t = $( this ),
                    
isHidden $t.css"display" ) === "none" || $t.is".tablesaw-cell-hidden" );

                if( !
isHidden && !checkFound ) {
                    
checkFound true;
                    
next] = i;
                } else if( 
isHidden && checkFound ) {
                    
next] = i;

                    return 
false;
                }
            });

            return 
next;
        }

        function 
getPrev(){
            var 
next getNext();
            return [ 
next] - next] - ];
        }

        function 
nextpairfwd ){
            return 
fwd getNext() : getPrev();
        }

        function 
canAdvancepair ){
            return 
pair] > -&& pair] < $headerCellsNoPersist.length;
        }

        function 
matchesMedia() {
            var 
matchMedia $table.attr"data-tablesaw-swipe-media" );
            return !
matchMedia || ( "matchMedia" in win ) && win.matchMediamatchMedia ).matches;
        }

        function 
fakeBreakpoints() {
            if( !
matchesMedia() ) {
                return;
            }

            var 
extraPaddingPixels 20,
                
containerWidth $table.parent().width(),
                
persist = [],
                
sum 0,
                
sums = [],
                
visibleNonPersistantCount $headerCells.length;

            
$headerCells.each(function( index ) {
                var 
$t = $( this ),
                    
isPersist $t.is'[data-tablesaw-priority="persist"]' );

                
persist.pushisPersist );

                
sum += headerWidthsindex ] + ( isPersist extraPaddingPixels );
                
sums.pushsum );

                
// is persistent or is hidden
                
if( isPersist || sum containerWidth ) {
                    
visibleNonPersistantCount--;
                }
            });

            var 
needsNonPersistentColumn visibleNonPersistantCount === 0;

            
$headerCells.each(function( index ) {
                if( 
persistindex ] ) {

                    
// for visual box-shadow
                    
persistColumnthis );
                    return;
                }

                if( 
sumsindex ] <= containerWidth || needsNonPersistentColumn ) {
                    
needsNonPersistentColumn false;
                    
showColumnthis );
                } else {
                    
hideColumnthis );
                }
            });

            if( 
supportsNthChild ) {
                
unmaintainWidths();
            }
            
$table.trigger'tablesawcolumns' );
        }

        function 
advancefwd ){
            var 
pair nextpairfwd );
            if( 
canAdvancepair ) ){
                if( 
isNaNpair] ) ){
                    if( 
fwd ){
                        
pair[0] = 0;
                    }
                    else {
                        
pair[0] = $headerCellsNoPersist.length 1;
                    }
                }

                if( 
supportsNthChild ) {
                    
maintainWidths();
                }

                
hideColumn$headerCellsNoPersist.getpair] ) );
                
showColumn$headerCellsNoPersist.getpair] ) );

                
$table.trigger'tablesawcolumns' );
            }
        }

        
$prevBtn.add$nextBtn ).click(function( ){
            
advance( !!$( e.target ).closest$nextBtn ).length );
            
e.preventDefault();
        });

        function 
getCoordeventkey ) {
            return ( 
event.touches || event.originalEvent.touches )[ ][ key ];
        }

        
$table
            
.bind"touchstart.swipetoggle", function( ){
                var 
originX getCoorde'pageX' ),
                    
originY getCoorde'pageY' ),
                    
x,
                    
y;

                $( 
win ).off"resize"fakeBreakpoints );

                $( 
this )
                    .
bind"touchmove", function( ){
                        
getCoorde'pageX' );
                        
getCoorde'pageY' );
                        var 
cfg Tablesaw.config.swipe;
                        if( 
Math.absoriginX ) > cfg.horizontalThreshold && Math.absoriginY ) < cfg.verticalThreshold ) {
                            
e.preventDefault();
                        }
                    })
                    .
bind"touchend.swipetoggle", function(){
                        var 
cfg Tablesaw.config.swipe;
                        if( 
Math.absoriginY ) < cfg.verticalThreshold ) {
                            if( 
originX < -cfg.horizontalThreshold ){
                                
advancetrue );
                            }
                            if( 
originX cfg.horizontalThreshold ){
                                
advancefalse );
                            }
                        }

                        
window.setTimeout(function() {
                            $( 
win ).on"resize"fakeBreakpoints );
                        }, 
300);
                        $( 
this ).unbind"touchmove touchend" );
                    });

            })
            .
bind"tablesawcolumns.swipetoggle", function(){
                
$prevBtncanAdvancegetPrev() ) ? "removeClass" "addClass" ]( hideBtn );
                
$nextBtncanAdvancegetNext() ) ? "removeClass" "addClass" ]( hideBtn );
            })
            .
bind"tablesawnext.swipetoggle", function(){
                
advancetrue );
            } )
            .
bind"tablesawprev.swipetoggle", function(){
                
advancefalse );
            } )
            .
bind"tablesawdestroy.swipetoggle", function(){
                var 
$t = $( this );

                
$t.removeClass'tablesaw-swipe' );
                
$t.prev().filter'.tablesaw-bar' ).find'.tablesaw-advance' ).remove();
                $( 
win ).off"resize"fakeBreakpoints );

                
$t.unbind".swipetoggle" );
            });

        
fakeBreakpoints();
        $( 
win ).on"resize"fakeBreakpoints );
    }



    
// on tablecreate, init
    
$( document ).on"tablesawcreate", function( eTablesaw ){

        if( 
Tablesaw.mode === 'swipe' ){
            
createSwipeTableTablesaw.$table );
        }

    } );

}( 
thisjQuery ));

;(function( $ ) {
    function 
getSortValuecell ) {
        return $.
mapcell.childNodes, function( el ) {
                var 
$el = $( el );
                if( 
$el.is'input, select' ) ) {
                    return 
$el.val();
                } else if( 
$el.hasClass'tablesaw-cell-label' ) ) {
                    return;
                }
                return $.
trim$el.text() );
            }).
join'' );
    }

    var 
pluginName "tablesaw-sortable",
        
initSelector "table[data-" pluginName "]",
        
sortableSwitchSelector "[data-" pluginName "-switch]",
        
attrs = {
            
defaultCol"data-tablesaw-sortable-default-col",
            
numericCol"data-tablesaw-sortable-numeric"
        
},
        
classes = {
            
headpluginName "-head",
            
ascendpluginName "-ascending",
            
descendpluginName "-descending",
            
switcherpluginName "-switch",
            
tableToolbar'tablesaw-toolbar',
            
sortButtonpluginName "-btn"
        
},
        
methods = {
            
_create: function( ){
                return $( 
this ).each(function() {
                    var 
init = $( this ).data"init" pluginName );
                    if( 
init ) {
                        return 
false;
                    }
                    $( 
this )
                        .
data"init"pluginNametrue )
                        .
trigger"beforecreate." pluginName )
                        [ 
pluginName ]( "_init" )
                        .
trigger"create." pluginName );
                });
            },
            
_init: function(){
                var 
el = $( this ),
                    
heads,
                    
$switcher;

                var 
addClassToTable = function(){
                        
el.addClasspluginName );
                    },
                    
addClassToHeads = function( ){
                        $.
each, function( ){
                            $( 
).addClassclasses.head );
                        });
                    },
                    
makeHeadsActionable = function( , fn ){
                        $.
each, function( ){
                            var 
= $( "<button class='" classes.sortButton "'/>" );
                            
b.bind"click" , { col} , fn );
                            $( 
).wrapInner);
                        });
                    },
                    
clearOthers = function( sibs ){
                        $.
eachsibs , function( ){
                            var 
col = $( );
                            
col.removeAttrattrs.defaultCol );
                            
col.removeClassclasses.ascend );
                            
col.removeClassclasses.descend );
                        });
                    },
                    
headsOnAction = function( ){
                        if( $( 
e.target ).is'a[href]' ) ) {
                            return;
                        }

                        
e.stopPropagation();
                        var 
head = $( this ).parent(),
                            
e.data.col,
                            
newSortValue heads.indexhead );

                        
clearOthershead.siblings() );
                        if( 
head.hasClassclasses.descend ) ){
                            
elpluginName ]( "sortBy" true);
                            
newSortValue += '_asc';
                        } else {
                            
elpluginName ]( "sortBy" );
                            
newSortValue += '_desc';
                        }
                        if( 
$switcher ) {
                            
$switcher.find'select' ).valnewSortValue ).trigger'refresh' );
                        }

                        
e.preventDefault();
                    },
                    
handleDefault = function( heads ){
                        $.
eachheads , function( idx el ){
                            var 
$el = $( el );
                            if( 
$el.is"[" attrs.defaultCol "]" ) ){
                                if( !
$el.hasClassclasses.descend ) ) {
                                    
$el.addClassclasses.ascend );
                                }
                            }
                        });
                    },
                    
addSwitcher = function( heads ){
                        
$switcher = $( '<div>' ).addClassclasses.switcher ).addClassclasses.tableToolbar ).html(function() {
                            var 
html = [ '<label>' Tablesaw.i18n.sort ':' ];

                            
html.push'<span class="btn btn-small">&#160;<select>' );
                            
heads.each(function( ) {
                                var 
$t = $( this );
                                var 
isDefaultCol $t.is"[" attrs.defaultCol "]" );
                                var 
isDescending $t.hasClassclasses.descend );

                                var 
hasNumericAttribute $t.is'[data-sortable-numeric]' );
                                var 
numericCount 0;
                                
// Check only the first four rows to see if the column is numbers.
                                
var numericCountMax 5;

                                $( 
this.cells ).slice0numericCountMax ).each(function() {
                                    if( !
isNaNparseIntgetSortValuethis ), 10 ) ) ) {
                                        
numericCount++;
                                    }
                                });
                                var 
isNumeric numericCount === numericCountMax;
                                if( !
hasNumericAttribute ) {
                                    
$t.attr"data-sortable-numeric"isNumeric "" "false" );
                                }

                                
html.push'<option' + ( isDefaultCol && !isDescending ' selected' '' ) + ' value="' '_asc">' $t.text() + ' ' + ( isNumeric '&#x2191;' '(A-Z)' ) + '</option>' );
                                
html.push'<option' + ( isDefaultCol && isDescending ' selected' '' ) + ' value="' '_desc">' $t.text() + ' ' + ( isNumeric '&#x2193;' '(Z-A)' ) + '</option>' );
                            });
                            
html.push'</select></span></label>' );

                            return 
html.join('');
                        });

                        var 
$toolbar el.prev().filter'.tablesaw-bar' ),
                            
$firstChild $toolbar.children().eq);

                        if( 
$firstChild.length ) {
                            
$switcher.insertBefore$firstChild );
                        } else {
                            
$switcher.appendTo$toolbar );
                        }
                        
$switcher.find'.btn' ).tablesawbtn();
                        
$switcher.find'select' ).on'change', function() {
                            var 
val = $( this ).val().split'_' ),
                                
head heads.eqval] );

                            
clearOthershead.siblings() );
                            
elpluginName ]( 'sortBy'head.get), val] === 'asc' );
                        });
                    };

                    
addClassToTable();
                    
heads el.find"thead th[data-" pluginName "-col]" );
                    
addClassToHeadsheads );
                    
makeHeadsActionableheads headsOnAction );
                    
handleDefaultheads );

                    if( 
el.issortableSwitchSelector ) ) {
                        
addSwitcherheadsel.find('tbody tr:nth-child(-n+3)') );
                    }
            },
            
getColumnNumber: function( col ){
                return $( 
col ).prevAll().length;
            },
            
getTableRows: function(){
                return $( 
this ).find"tbody tr" );
            },
            
sortRows: function( rows colNum ascendingcol ){
                var 
cells, fn, sorted;
                var 
getCells = function( rows ){
                        var 
cells = [];
                        $.
eachrows , function( ){
                            var 
element = $( ).children().getcolNum );
                            
cells.push({
                                
elementelement,
                                
cellgetSortValueelement ),
                                
rowNumi
                            
});
                        });
                        return 
cells;
                    },
                    
getSortFxn = function( ascendingforceNumeric ){
                        var fn,
                            
regex = /[^-+d.]/g;
                        if( 
ascending ){
                            fn = function( 
){
                                if( 
forceNumeric ) {
                                    return 
parseFloata.cell.replaceregex'' ) ) - parseFloatb.cell.replaceregex'' ) );
                                } else {
                                    return 
a.cell.toLowerCase() > b.cell.toLowerCase() ? : -1;
                                }
                            };
                        } else {
                            fn = function( 
){
                                if( 
forceNumeric ) {
                                    return 
parseFloatb.cell.replaceregex'' ) ) - parseFloata.cell.replaceregex'' ) );
                                } else {
                                    return 
a.cell.toLowerCase() < b.cell.toLowerCase() ? : -1;
                                }
                            };
                        }
                        return fn;
                    },
                    
applyToRows = function( sorted rows ){
                        var 
newRows = [], ilcur;
                        for( 
0sorted.length i++ ){
                            
cur sorted].rowNum;
                            
newRows.pushrows[cur] );
                        }
                        return 
newRows;
                    };

                
cells getCellsrows );
                var 
customFn = $( col ).data'tablesaw-sort' );
                fn = ( 
customFn && typeof customFn === "function" customFnascending ) : false ) ||
                    
getSortFxnascending, $( col ).is'[data-sortable-numeric]' ) && !$( col ).is'[data-sortable-numeric="false"]' ) );
                
sorted cells.sort( fn );
                
rows applyToRowssorted rows );
                return 
rows;
            },
            
replaceTableRows: function( rows ){
                var 
el = $( this ),
                    
body el.find"tbody" );
                
body.htmlrows );
            },
            
makeColDefault: function( col ){
                var 
= $( col );
                
c.attrattrs.defaultCol "true" );
                if( 
){
                    
c.removeClassclasses.descend );
                    
c.addClassclasses.ascend );
                } else {
                    
c.removeClassclasses.ascend );
                    
c.addClassclasses.descend );
                }
            },
            
sortBy: function( col ascending ){
                var 
el = $( this ), colNumrows;

                
colNum elpluginName ]( "getColumnNumber" col );
                
rows elpluginName ]( "getTableRows" );
                
rows elpluginName ]( "sortRows" rows colNum ascendingcol );
                
elpluginName ]( "replaceTableRows" rows );
                
elpluginName ]( "makeColDefault" col ascending );
            }
        };

    
// Collection method.
    
$.fn[ pluginName ] = function( arrg ) {
        var 
args = Array.prototype.slice.callarguments 1),
            
returnVal;

        
// if it's a method
        
if( arrg && typeofarrg ) === "string" ){
            
returnVal = $.fn[ pluginName ].prototypearrg ].applythis[0], args );
            return (
typeof returnVal !== "undefined")? returnVal:$(this);
        }
        
// check init
        
if( !$( this ).datapluginName "data" ) ){
            $( 
this ).datapluginName "active"true );
            $.fn[ 
pluginName ].prototype._create.callthis arrg );
        }
        return $(
this);
    };
    
// add methods
    
$.extend( $.fn[ pluginName ].prototypemethods );

    $( 
document ).on"tablesawcreate", function( eTablesaw ) {
        if( 
Tablesaw.$table.isinitSelector ) ) {
            
Tablesaw.$tablepluginName ]();
        }
    });

}( 
jQuery ));

;(function( 
win, $, undefined ){

    var 
MM = {
        
attr: {
            
init'data-tablesaw-minimap'
        
}
    };

    function 
createMiniMap$table ){

        var 
$btns = $( '<div class="tablesaw-advance minimap">' ),
            
$dotNav = $( '<ul class="tablesaw-advance-dots">' ).appendTo$btns ),
            
hideDot 'tablesaw-advance-dots-hide',
            
$headerCells $table.find'thead th' );

        
// populate dots
        
$headerCells.each(function(){
            
$dotNav.append'<li><i></i></li>' );
        });

        
$btns.appendTo$table.prev().filter'.tablesaw-bar' ) );

        function 
showMinimap$table ) {
            var 
mq $table.attrMM.attr.init );
            return !
mq || win.matchMedia && win.matchMediamq ).matches;
        }

        function 
showHideNav(){
            if( !
showMinimap$table ) ) {
                
$btns.hide();
                return;
            }
            
$btns.show();

            
// show/hide dots
            
var dots $dotNav.find"li" ).removeClasshideDot );
            
$table.find"thead th" ).each(function(i){
                if( $( 
this ).css"display" ) === "none" ){
                    
dots.eq).addClasshideDot );
                }
            });
        }

        
// 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( eTablesaw ){

        if( ( 
Tablesaw.mode === 'swipe' || Tablesaw.mode === 'columntoggle' ) && Tablesaw.$table.is'[ ' MM.attr.init ']' ) ){
            
createMiniMapTablesaw.$table );
        }

    } );

}( 
thisjQuery ));

;(function( 
win, $ ) {

    var 
= {
        
selectors: {
            
init'table[data-tablesaw-mode-switch]'
        
},
        
attributes: {
            
excludeMode'data-tablesaw-mode-exclude'
        
},
        
classes: {
            
main'tablesaw-modeswitch',
            
toolbar'tablesaw-toolbar'
        
},
        
modes: [ 'stack''swipe''columntoggle' ],
        
init: function( table ) {
            var 
$table = $( table ),
                
ignoreMode $table.attrS.attributes.excludeMode ),
                
$toolbar $table.prev().filter'.tablesaw-bar' ),
                
modeVal '',
                
$switcher = $( '<div>' ).addClassS.classes.main ' ' S.classes.toolbar ).html(function() {
                    var 
html = [ '<label>' Tablesaw.i18n.columns ':' ],
                        
dataMode $table.attr'data-tablesaw-mode' ),
                        
isSelected;

                    
html.push'<span class="btn btn-small">&#160;<select>' );
                    for( var 
j=0S.modes.lengthj<kj++ ) {
                        if( 
ignoreMode && ignoreMode.toLowerCase() === S.modes] ) {
                            continue;
                        }

                        
isSelected dataMode === S.modes];

                        if( 
isSelected ) {
                            
modeVal S.modes];
                        }

                        
html.push'<option' +
                            ( 
isSelected ' selected' '' ) +
                            
' value="' S.modes] + '">' Tablesaw.i18n.modes] + '</option>' );
                    }
                    
html.push'</select></span></label>' );

                    return 
html.join('');
                });

            var 
$otherToolbarItems $toolbar.find'.tablesaw-advance' ).eq);
            if( 
$otherToolbarItems.length ) {
                
$switcher.insertBefore$otherToolbarItems );
            } else {
                
$switcher.appendTo$toolbar );
            }

            
$switcher.find'.btn' ).tablesawbtn();
            
$switcher.find'select' ).bind'change'S.onModeChange );
        },
        
onModeChange: function() {
            var 
$t = $( this ),
                
$switcher $t.closest'.' S.classes.main ),
                
$table $t.closest'.tablesaw-bar' ).nextUntil$table ).eq),
                
val $t.val();

            
$switcher.remove();
            
$table.data'table' ).destroy();

            
$table.attr'data-tablesaw-mode'val );
            
$table.table();
        }
    };

    $( 
win.document ).on"tablesawcreate", function( eTablesaw ) {
        if( 
Tablesaw.$table.isS.selectors.init ) ) {
            
S.initTablesaw.table );
        }
    });

})( 
thisjQuery );
?>
Онлайн: 0
Реклама