├── .gitignore ├── assets └── bootstrap-3.3.2 │ ├── js │ ├── tests │ │ ├── unit │ │ │ ├── .jshintrc │ │ │ ├── phantom.js │ │ │ ├── alert.js │ │ │ ├── affix.js │ │ │ ├── button.js │ │ │ ├── scrollspy.js │ │ │ ├── tab.js │ │ │ ├── popover.js │ │ │ ├── modal.js │ │ │ └── dropdown.js │ │ ├── visual │ │ │ ├── alert.html │ │ │ ├── popover.html │ │ │ ├── carousel.html │ │ │ ├── button.html │ │ │ ├── tooltip.html │ │ │ ├── collapse.html │ │ │ ├── modal.html │ │ │ └── dropdown.html │ │ ├── index.html │ │ └── vendor │ │ │ └── qunit.css │ ├── .jshintrc │ ├── npm.js │ ├── .jscsrc │ ├── transition.js │ ├── alert.js │ ├── popover.js │ ├── button.js │ ├── tab.js │ ├── dropdown.js │ ├── scrollspy.js │ ├── affix.js │ ├── collapse.js │ ├── carousel.js │ └── modal.js │ └── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 ├── gulpfile.js ├── package.json ├── index.html ├── examples ├── fixLeft.html ├── fixRight.html ├── fixMultiLeft.html ├── fixMultiRight.html ├── fixHeader.html ├── fixHeadAndLeft.html ├── fixHeadAndRight.html ├── fixMultiHead.html ├── fixFooter.html ├── fixFooterAndLeft.html ├── fixFooterAndRight.html ├── fixMultiFooter.html ├── fixMultiTable.html └── cutomStyleHeight.html └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .idea -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/tests/unit/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends" : "../../.jshintrc", 3 | "devel" : true, 4 | "qunit" : true 5 | } 6 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lai32290/TableHeadFixer/HEAD/assets/bootstrap-3.3.2/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lai32290/TableHeadFixer/HEAD/assets/bootstrap-3.3.2/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lai32290/TableHeadFixer/HEAD/assets/bootstrap-3.3.2/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lai32290/TableHeadFixer/HEAD/assets/bootstrap-3.3.2/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "asi" : true, 3 | "browser" : true, 4 | "eqeqeq" : false, 5 | "eqnull" : true, 6 | "es3" : true, 7 | "expr" : true, 8 | "jquery" : true, 9 | "latedef" : true, 10 | "laxbreak" : true, 11 | "nonbsp" : true, 12 | "strict" : true, 13 | "undef" : true, 14 | "unused" : true 15 | } 16 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require("gulp"); 2 | var watch = require("gulp-watch"); 3 | var livereload = require("gulp-livereload"); 4 | 5 | var watchFiles = [ 6 | "tableHeadFixer.js", 7 | "examples/*.html" 8 | ]; 9 | 10 | gulp.task("watch", function() { 11 | livereload.listen(); 12 | gulp.watch(watchFiles, function() { 13 | livereload.reload(); 14 | }); 15 | }); 16 | 17 | gulp.task("default", ["watch"]); -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TableHeadFixer", 3 | "version": "1.0.1", 4 | "description": "", 5 | "main": "helloFixHeader.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/lai32290/HelloTableFixHeader.git" 12 | }, 13 | "author": "", 14 | "license": "MIT", 15 | "bugs": { 16 | "url": "https://github.com/lai32290/HelloTableFixHeader/issues" 17 | }, 18 | "homepage": "https://github.com/lai32290/HelloTableFixHeader", 19 | "dependencies": { 20 | "gulp": "^3.8.11", 21 | "gulp-livereload": "^3.8.0", 22 | "gulp-watch": "^4.2.4" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Demos of TableHeadFixer 4 | 5 | 6 | 7 | 8 |

Demos of TableHeadFixer

9 |

10 |

Basic Examples

11 | 17 |

18 | 19 |

20 |

Multiple Examples

21 | 27 |

28 | 29 |

30 |

Combination Examples

31 | 37 |

38 | 39 |

40 |

Others Exmaples

41 | 44 |

45 | 46 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/tests/visual/alert.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Alert 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 |
20 | 21 | 24 | 25 |
26 | 27 | Holy guacamole! Best check yo self, you're not looking too good. 28 |
29 | 30 |
31 | 32 |

Oh snap! You got an error!

33 |

Change this and that and try again. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.

34 |

35 | 36 | 37 |

38 |
39 | 40 |
41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/.jscsrc: -------------------------------------------------------------------------------- 1 | { 2 | "disallowEmptyBlocks": true, 3 | "disallowKeywords": ["with"], 4 | "disallowMixedSpacesAndTabs": true, 5 | "disallowMultipleLineStrings": true, 6 | "disallowMultipleVarDecl": true, 7 | "disallowQuotedKeysInObjects": "allButReserved", 8 | "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], 9 | "disallowSpaceBeforeBinaryOperators": [","], 10 | "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], 11 | "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true }, 12 | "disallowSpacesInsideArrayBrackets": true, 13 | "disallowSpacesInsideParentheses": true, 14 | "disallowTrailingComma": true, 15 | "disallowTrailingWhitespace": true, 16 | "requireCamelCaseOrUpperCaseIdentifiers": true, 17 | "requireCapitalizedConstructors": true, 18 | "requireCommaBeforeLineBreak": true, 19 | "requireDotNotation": true, 20 | "requireLineFeedAtFileEnd": true, 21 | "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="], 22 | "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"], 23 | "requireSpaceAfterLineComment": true, 24 | "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="], 25 | "requireSpaceBetweenArguments": true, 26 | "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningCurlyBrace": true, "beforeOpeningRoundBrace": true }, 27 | "requireSpacesInConditionalExpression": true, 28 | "requireSpacesInForStatement": true, 29 | "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true }, 30 | "requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true }, 31 | "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, 32 | "requireSpacesInsideObjectBrackets": "allButNested", 33 | "validateIndentation": 2, 34 | "validateLineBreaks": "LF", 35 | "validateQuoteMarks": "'" 36 | } 37 | -------------------------------------------------------------------------------- /examples/fixLeft.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 21 | 22 | 23 | 24 |

TableHeadFixer Fix Left Column

25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 |
AnoJanFevMarAbrMaioTotal
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
87 |
88 | 89 | -------------------------------------------------------------------------------- /examples/fixRight.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 21 | 22 | 23 | 24 |

TableHeadFixer Fix Right Column

25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 |
AnoJanFevMarAbrMaioTotal
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
87 |
88 | 89 | -------------------------------------------------------------------------------- /examples/fixMultiLeft.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 21 | 22 | 23 | 24 |

TableHeadFixer Fix Left Multiple Column

25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 |
AnoJanFevMarAbrMaioTotal
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
87 |
88 | 89 | -------------------------------------------------------------------------------- /examples/fixMultiRight.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 21 | 22 | 23 | 24 |

TableHeadFixer Fix Right Multiple Column

25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 |
AnoJanFevMarAbrMaioTotal
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
87 |
88 | 89 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/transition.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: transition.js v3.3.2 3 | * http://getbootstrap.com/javascript/#transitions 4 | * ======================================================================== 5 | * Copyright 2011-2015 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) 14 | // ============================================================ 15 | 16 | function transitionEnd() { 17 | var el = document.createElement('bootstrap') 18 | 19 | var transEndEventNames = { 20 | WebkitTransition : 'webkitTransitionEnd', 21 | MozTransition : 'transitionend', 22 | OTransition : 'oTransitionEnd otransitionend', 23 | transition : 'transitionend' 24 | } 25 | 26 | for (var name in transEndEventNames) { 27 | if (el.style[name] !== undefined) { 28 | return { end: transEndEventNames[name] } 29 | } 30 | } 31 | 32 | return false // explicit for ie8 ( ._.) 33 | } 34 | 35 | // http://blog.alexmaccaw.com/css-transitions 36 | $.fn.emulateTransitionEnd = function (duration) { 37 | var called = false 38 | var $el = this 39 | $(this).one('bsTransitionEnd', function () { called = true }) 40 | var callback = function () { if (!called) $($el).trigger($.support.transition.end) } 41 | setTimeout(callback, duration) 42 | return this 43 | } 44 | 45 | $(function () { 46 | $.support.transition = transitionEnd() 47 | 48 | if (!$.support.transition) return 49 | 50 | $.event.special.bsTransitionEnd = { 51 | bindType: $.support.transition.end, 52 | delegateType: $.support.transition.end, 53 | handle: function (e) { 54 | if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) 55 | } 56 | } 57 | }) 58 | 59 | }(jQuery); 60 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/tests/unit/phantom.js: -------------------------------------------------------------------------------- 1 | /* 2 | * grunt-contrib-qunit 3 | * http://gruntjs.com/ 4 | * 5 | * Copyright (c) 2014 "Cowboy" Ben Alman, contributors 6 | * Licensed under the MIT license. 7 | */ 8 | 9 | (function () { 10 | 'use strict'; 11 | 12 | // Don't re-order tests. 13 | QUnit.config.reorder = false 14 | // Run tests serially, not in parallel. 15 | QUnit.config.autorun = false 16 | 17 | // Send messages to the parent PhantomJS process via alert! Good times!! 18 | function sendMessage() { 19 | var args = [].slice.call(arguments) 20 | alert(JSON.stringify(args)) 21 | } 22 | 23 | // These methods connect QUnit to PhantomJS. 24 | QUnit.log(function (obj) { 25 | // What is this I don’t even 26 | if (obj.message === '[object Object], undefined:undefined') { return } 27 | 28 | // Parse some stuff before sending it. 29 | var actual 30 | var expected 31 | if (!obj.result) { 32 | // Dumping large objects can be very slow, and the dump isn't used for 33 | // passing tests, so only dump if the test failed. 34 | actual = QUnit.jsDump.parse(obj.actual) 35 | expected = QUnit.jsDump.parse(obj.expected) 36 | } 37 | // Send it. 38 | sendMessage('qunit.log', obj.result, actual, expected, obj.message, obj.source) 39 | }) 40 | 41 | QUnit.testStart(function (obj) { 42 | sendMessage('qunit.testStart', obj.name) 43 | }) 44 | 45 | QUnit.testDone(function (obj) { 46 | sendMessage('qunit.testDone', obj.name, obj.failed, obj.passed, obj.total, obj.duration) 47 | }) 48 | 49 | QUnit.moduleStart(function (obj) { 50 | sendMessage('qunit.moduleStart', obj.name) 51 | }) 52 | 53 | QUnit.moduleDone(function (obj) { 54 | if (obj.failed === 0) { 55 | console.log('\r\u2714 All tests passed in "' + obj.name + '" module') 56 | } else { 57 | console.log('\u2716 ' + obj.failed + ' tests failed in "' + obj.name + '" module') 58 | } 59 | sendMessage('qunit.moduleDone', obj.name, obj.failed, obj.passed, obj.total) 60 | }) 61 | 62 | QUnit.begin(function () { 63 | sendMessage('qunit.begin') 64 | console.log('\n\nStarting test suite') 65 | console.log('================================================\n') 66 | }) 67 | 68 | QUnit.done(function (obj) { 69 | sendMessage('qunit.done', obj.failed, obj.passed, obj.total, obj.runtime) 70 | }) 71 | 72 | }()) 73 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/tests/visual/popover.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Popover 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 |
20 | 21 | 24 | 25 | 28 | 31 | 34 | 37 | 38 |
39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/tests/visual/carousel.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Carousel 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 |
20 | 21 | 24 | 25 | 49 | 50 |
51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/tests/visual/button.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Button 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 |
20 | 21 | 24 | 25 | 28 | 29 | 30 | 31 |
32 | 35 | 38 | 41 |
42 | 43 |
44 | 47 | 50 | 53 |
54 | 55 |
56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/alert.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: alert.js v3.3.2 3 | * http://getbootstrap.com/javascript/#alerts 4 | * ======================================================================== 5 | * Copyright 2011-2015 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // ALERT CLASS DEFINITION 14 | // ====================== 15 | 16 | var dismiss = '[data-dismiss="alert"]' 17 | var Alert = function (el) { 18 | $(el).on('click', dismiss, this.close) 19 | } 20 | 21 | Alert.VERSION = '3.3.2' 22 | 23 | Alert.TRANSITION_DURATION = 150 24 | 25 | Alert.prototype.close = function (e) { 26 | var $this = $(this) 27 | var selector = $this.attr('data-target') 28 | 29 | if (!selector) { 30 | selector = $this.attr('href') 31 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 32 | } 33 | 34 | var $parent = $(selector) 35 | 36 | if (e) e.preventDefault() 37 | 38 | if (!$parent.length) { 39 | $parent = $this.closest('.alert') 40 | } 41 | 42 | $parent.trigger(e = $.Event('close.bs.alert')) 43 | 44 | if (e.isDefaultPrevented()) return 45 | 46 | $parent.removeClass('in') 47 | 48 | function removeElement() { 49 | // detach from parent, fire event then clean up data 50 | $parent.detach().trigger('closed.bs.alert').remove() 51 | } 52 | 53 | $.support.transition && $parent.hasClass('fade') ? 54 | $parent 55 | .one('bsTransitionEnd', removeElement) 56 | .emulateTransitionEnd(Alert.TRANSITION_DURATION) : 57 | removeElement() 58 | } 59 | 60 | 61 | // ALERT PLUGIN DEFINITION 62 | // ======================= 63 | 64 | function Plugin(option) { 65 | return this.each(function () { 66 | var $this = $(this) 67 | var data = $this.data('bs.alert') 68 | 69 | if (!data) $this.data('bs.alert', (data = new Alert(this))) 70 | if (typeof option == 'string') data[option].call($this) 71 | }) 72 | } 73 | 74 | var old = $.fn.alert 75 | 76 | $.fn.alert = Plugin 77 | $.fn.alert.Constructor = Alert 78 | 79 | 80 | // ALERT NO CONFLICT 81 | // ================= 82 | 83 | $.fn.alert.noConflict = function () { 84 | $.fn.alert = old 85 | return this 86 | } 87 | 88 | 89 | // ALERT DATA-API 90 | // ============== 91 | 92 | $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) 93 | 94 | }(jQuery); 95 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/tests/unit/alert.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | 'use strict'; 3 | 4 | module('alert plugin') 5 | 6 | test('should be defined on jquery object', function () { 7 | ok($(document.body).alert, 'alert method is defined') 8 | }) 9 | 10 | module('alert', { 11 | setup: function () { 12 | // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode 13 | $.fn.bootstrapAlert = $.fn.alert.noConflict() 14 | }, 15 | teardown: function () { 16 | $.fn.alert = $.fn.bootstrapAlert 17 | delete $.fn.bootstrapAlert 18 | } 19 | }) 20 | 21 | test('should provide no conflict', function () { 22 | strictEqual($.fn.alert, undefined, 'alert was set back to undefined (org value)') 23 | }) 24 | 25 | test('should return jquery collection containing the element', function () { 26 | var $el = $('
') 27 | var $alert = $el.bootstrapAlert() 28 | ok($alert instanceof $, 'returns jquery collection') 29 | strictEqual($alert[0], $el[0], 'collection contains element') 30 | }) 31 | 32 | test('should fade element out on clicking .close', function () { 33 | var alertHTML = '
' 34 | + '×' 35 | + '

Holy guacamole! Best check yo self, you\'re not looking too good.

' 36 | + '
' 37 | var $alert = $(alertHTML).bootstrapAlert() 38 | 39 | $alert.find('.close').click() 40 | 41 | equal($alert.hasClass('in'), false, 'remove .in class on .close click') 42 | }) 43 | 44 | test('should remove element when clicking .close', function () { 45 | var alertHTML = '
' 46 | + '×' 47 | + '

Holy guacamole! Best check yo self, you\'re not looking too good.

' 48 | + '
' 49 | var $alert = $(alertHTML).appendTo('#qunit-fixture').bootstrapAlert() 50 | 51 | notEqual($('#qunit-fixture').find('.alert').length, 0, 'element added to dom') 52 | 53 | $alert.find('.close').click() 54 | 55 | equal($('#qunit-fixture').find('.alert').length, 0, 'element removed from dom') 56 | }) 57 | 58 | test('should not fire closed when close is prevented', function () { 59 | stop() 60 | $('
') 61 | .on('close.bs.alert', function (e) { 62 | e.preventDefault() 63 | ok(true, 'close event fired') 64 | start() 65 | }) 66 | .on('closed.bs.alert', function () { 67 | ok(false, 'closed event fired') 68 | }) 69 | .bootstrapAlert('close') 70 | }) 71 | 72 | }) 73 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/tests/visual/tooltip.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Tooltip 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 |
20 | 21 | 24 | 25 |

Tight pants next level keffiyeh you probably haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan whatever keytar, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim single-origin coffee viral. 26 |

27 |
28 |

29 | 30 | 31 | 32 | 33 |

34 | 35 |
36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/tests/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Bootstrap Plugin Test Suite 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 24 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 |
91 |
92 |
93 |
94 | 95 | 96 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TableHeadFixer 2 | ### About 3 | TableHeadFixer is a simple [jQuery](http:/jquery.com/ "jQuery") plugin for fixing HTML table header, footer and columns.
4 | This plugin will only add elements' events and css attributes necessary to fix table header, footer and columns. You can customize styles of your table, as this plugin will not influence any styles of your table (width, height, background, font color, etc...) 5 | 6 | 7 | ### Dependiences (Important!) 8 | - [jQuery](http:/jquery.com/ "jQuery") 9 | 10 | ### Get Starting 11 | Before you can use TableHeadFixer plugin, it is required to include jQuery on your website.
12 | To use TableHeadFixer just include the plugin and call $(element).tableHeadFixer([param]) function after the page renders.
13 | The table must be wrapped with a div element with all size styles set. 14 | 15 | ### Example: 16 | #### Fix Table Header 17 | ```javascript 18 | // get your table with jQuery selector 19 | $("#fixTable").tableHeadFixer(); 20 | ``` 21 | 22 | #### Fix First Left Column 23 | By default, the function .tableHeadFixer() fixes only table header. If you need to fix only footer or columns, it is necessary to disable header fix by parameter. 24 | ```javascript 25 | $("#fixTable").tableHeadFixer({'left' : 1, 'head' : false}); 26 | ``` 27 | 28 | #### Fix Two Left Columns 29 | ```javascript 30 | $("#fixTable").tableHeadFixer({'left' : 2, 'head' : false}); 31 | ``` 32 | 33 | #### Fix Table Header and First Right Column 34 | ```javascript 35 | $("#fixTable").tableHeadFixer({'right' : 1}); 36 | ``` 37 | 38 | #### Fix Table Header and Footer 39 | ```javascript 40 | $("#fixTable").tableHeadFixer({'foot' : true}); 41 | ``` 42 | 43 | #### If you need to set fixed cells z-index parameter to resolve conflits between jQuery plugins 44 | ```javascript 45 | $("#fixTable").tableHeadFixer({'z-index' : 50}); 46 | ``` 47 | 48 | #### Fix Multiple Rows in Header or Footer 49 | Fixing multiple rows in header or footer is as easy as adding new tr to either of them, all header's and footer's table rows will be fixed. 50 | 51 | #### More Demos 52 | More demos are available inside examples directory. 53 | 54 | ### Parameters 55 | | attribute | values |default | 56 | |-----------|---------------|-----------| 57 | | head | true/false | true | 58 | | foot | true/false | false | 59 | | left | 1,2,3,4,etc | 0 | 60 | | right | 1,2,3,4,etc | 0 | 61 | | z-index | 10,50,999,etc | 0 | 62 | 63 | ### Note 64 | To be able to fix table header, footer and columns, it is important to have the table contained in a div, with explicitely set `height` (for fixing header or footer) and `width` (for fixing columns) attributes/css styles. This is very important, since this plugin depends on having the area for the table limited. 65 | 66 | #### If fixed cells' border is important for you 67 | If fixed cells' border is important for you, it is necessary to set table cells' styles to `border-collapse: separate`, because with `border-collapse: collapse` style the cell borders cannot separate and maintain the position of fixed cells. 68 | 69 | 70 | ### Update 71 | * Fixed problems with `some function is not defined` issue in old Firefox. 72 | 73 | ### Licence 74 | MIT 75 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/tests/unit/affix.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | 'use strict'; 3 | 4 | module('affix plugin') 5 | 6 | test('should be defined on jquery object', function () { 7 | ok($(document.body).affix, 'affix method is defined') 8 | }) 9 | 10 | module('affix', { 11 | setup: function () { 12 | // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode 13 | $.fn.bootstrapAffix = $.fn.affix.noConflict() 14 | }, 15 | teardown: function () { 16 | $.fn.affix = $.fn.bootstrapAffix 17 | delete $.fn.bootstrapAffix 18 | } 19 | }) 20 | 21 | test('should provide no conflict', function () { 22 | strictEqual($.fn.affix, undefined, 'affix was set back to undefined (org value)') 23 | }) 24 | 25 | test('should return jquery collection containing the element', function () { 26 | var $el = $('
') 27 | var $affix = $el.bootstrapAffix() 28 | ok($affix instanceof $, 'returns jquery collection') 29 | strictEqual($affix[0], $el[0], 'collection contains element') 30 | }) 31 | 32 | test('should exit early if element is not visible', function () { 33 | var $affix = $('
').bootstrapAffix() 34 | $affix.data('bs.affix').checkPosition() 35 | ok(!$affix.hasClass('affix'), 'affix class was not added') 36 | }) 37 | 38 | test('should trigger affixed event after affix', function () { 39 | stop() 40 | 41 | var templateHTML = '
' 42 | + '
    ' 43 | + '
  • Please affix
  • ' 44 | + '
  • And unaffix
  • ' 45 | + '
' 46 | + '
' 47 | + '
' 48 | $(templateHTML).appendTo(document.body) 49 | 50 | $('#affixTarget').bootstrapAffix({ 51 | offset: $('#affixTarget ul').position() 52 | }) 53 | 54 | $('#affixTarget') 55 | .on('affix.bs.affix', function () { 56 | ok(true, 'affix event fired') 57 | }).on('affixed.bs.affix', function () { 58 | ok(true, 'affixed event fired') 59 | $('#affixTarget, #affixAfter').remove() 60 | start() 61 | }) 62 | 63 | setTimeout(function () { 64 | window.scrollTo(0, document.body.scrollHeight) 65 | 66 | setTimeout(function () { 67 | window.scroll(0, 0) 68 | }, 16) // for testing in a browser 69 | }, 0) 70 | }) 71 | 72 | test('should affix-top when scrolling up to offset when parent has padding', function () { 73 | stop() 74 | 75 | var templateHTML = '
' 76 | + '
' 77 | + '

Testing affix-top class is added

' 78 | + '
' 79 | + '
' 80 | + '
' 81 | $(templateHTML).appendTo(document.body) 82 | 83 | $('#affixTopTarget') 84 | .bootstrapAffix({ 85 | offset: { top: 120, bottom: 0 } 86 | }) 87 | .on('affixed-top.bs.affix', function () { 88 | ok($('#affixTopTarget').hasClass('affix-top'), 'affix-top class applied') 89 | $('#padding-offset').remove() 90 | start() 91 | }) 92 | 93 | setTimeout(function () { 94 | window.scrollTo(0, document.body.scrollHeight) 95 | 96 | setTimeout(function () { 97 | window.scroll(0, 119) 98 | }, 250) 99 | }, 250) 100 | }) 101 | }) 102 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/popover.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: popover.js v3.3.2 3 | * http://getbootstrap.com/javascript/#popovers 4 | * ======================================================================== 5 | * Copyright 2011-2015 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // POPOVER PUBLIC CLASS DEFINITION 14 | // =============================== 15 | 16 | var Popover = function (element, options) { 17 | this.init('popover', element, options) 18 | } 19 | 20 | if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') 21 | 22 | Popover.VERSION = '3.3.2' 23 | 24 | Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { 25 | placement: 'right', 26 | trigger: 'click', 27 | content: '', 28 | template: '' 29 | }) 30 | 31 | 32 | // NOTE: POPOVER EXTENDS tooltip.js 33 | // ================================ 34 | 35 | Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) 36 | 37 | Popover.prototype.constructor = Popover 38 | 39 | Popover.prototype.getDefaults = function () { 40 | return Popover.DEFAULTS 41 | } 42 | 43 | Popover.prototype.setContent = function () { 44 | var $tip = this.tip() 45 | var title = this.getTitle() 46 | var content = this.getContent() 47 | 48 | $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) 49 | $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events 50 | this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' 51 | ](content) 52 | 53 | $tip.removeClass('fade top bottom left right in') 54 | 55 | // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do 56 | // this manually by checking the contents. 57 | if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() 58 | } 59 | 60 | Popover.prototype.hasContent = function () { 61 | return this.getTitle() || this.getContent() 62 | } 63 | 64 | Popover.prototype.getContent = function () { 65 | var $e = this.$element 66 | var o = this.options 67 | 68 | return $e.attr('data-content') 69 | || (typeof o.content == 'function' ? 70 | o.content.call($e[0]) : 71 | o.content) 72 | } 73 | 74 | Popover.prototype.arrow = function () { 75 | return (this.$arrow = this.$arrow || this.tip().find('.arrow')) 76 | } 77 | 78 | Popover.prototype.tip = function () { 79 | if (!this.$tip) this.$tip = $(this.options.template) 80 | return this.$tip 81 | } 82 | 83 | 84 | // POPOVER PLUGIN DEFINITION 85 | // ========================= 86 | 87 | function Plugin(option) { 88 | return this.each(function () { 89 | var $this = $(this) 90 | var data = $this.data('bs.popover') 91 | var options = typeof option == 'object' && option 92 | 93 | if (!data && option == 'destroy') return 94 | if (!data) $this.data('bs.popover', (data = new Popover(this, options))) 95 | if (typeof option == 'string') data[option]() 96 | }) 97 | } 98 | 99 | var old = $.fn.popover 100 | 101 | $.fn.popover = Plugin 102 | $.fn.popover.Constructor = Popover 103 | 104 | 105 | // POPOVER NO CONFLICT 106 | // =================== 107 | 108 | $.fn.popover.noConflict = function () { 109 | $.fn.popover = old 110 | return this 111 | } 112 | 113 | }(jQuery); 114 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/button.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: button.js v3.3.2 3 | * http://getbootstrap.com/javascript/#buttons 4 | * ======================================================================== 5 | * Copyright 2011-2015 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // BUTTON PUBLIC CLASS DEFINITION 14 | // ============================== 15 | 16 | var Button = function (element, options) { 17 | this.$element = $(element) 18 | this.options = $.extend({}, Button.DEFAULTS, options) 19 | this.isLoading = false 20 | } 21 | 22 | Button.VERSION = '3.3.2' 23 | 24 | Button.DEFAULTS = { 25 | loadingText: 'loading...' 26 | } 27 | 28 | Button.prototype.setState = function (state) { 29 | var d = 'disabled' 30 | var $el = this.$element 31 | var val = $el.is('input') ? 'val' : 'html' 32 | var data = $el.data() 33 | 34 | state = state + 'Text' 35 | 36 | if (data.resetText == null) $el.data('resetText', $el[val]()) 37 | 38 | // push to event loop to allow forms to submit 39 | setTimeout($.proxy(function () { 40 | $el[val](data[state] == null ? this.options[state] : data[state]) 41 | 42 | if (state == 'loadingText') { 43 | this.isLoading = true 44 | $el.addClass(d).attr(d, d) 45 | } else if (this.isLoading) { 46 | this.isLoading = false 47 | $el.removeClass(d).removeAttr(d) 48 | } 49 | }, this), 0) 50 | } 51 | 52 | Button.prototype.toggle = function () { 53 | var changed = true 54 | var $parent = this.$element.closest('[data-toggle="buttons"]') 55 | 56 | if ($parent.length) { 57 | var $input = this.$element.find('input') 58 | if ($input.prop('type') == 'radio') { 59 | if ($input.prop('checked') && this.$element.hasClass('active')) changed = false 60 | else $parent.find('.active').removeClass('active') 61 | } 62 | if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') 63 | } else { 64 | this.$element.attr('aria-pressed', !this.$element.hasClass('active')) 65 | } 66 | 67 | if (changed) this.$element.toggleClass('active') 68 | } 69 | 70 | 71 | // BUTTON PLUGIN DEFINITION 72 | // ======================== 73 | 74 | function Plugin(option) { 75 | return this.each(function () { 76 | var $this = $(this) 77 | var data = $this.data('bs.button') 78 | var options = typeof option == 'object' && option 79 | 80 | if (!data) $this.data('bs.button', (data = new Button(this, options))) 81 | 82 | if (option == 'toggle') data.toggle() 83 | else if (option) data.setState(option) 84 | }) 85 | } 86 | 87 | var old = $.fn.button 88 | 89 | $.fn.button = Plugin 90 | $.fn.button.Constructor = Button 91 | 92 | 93 | // BUTTON NO CONFLICT 94 | // ================== 95 | 96 | $.fn.button.noConflict = function () { 97 | $.fn.button = old 98 | return this 99 | } 100 | 101 | 102 | // BUTTON DATA-API 103 | // =============== 104 | 105 | $(document) 106 | .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { 107 | var $btn = $(e.target) 108 | if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') 109 | Plugin.call($btn, 'toggle') 110 | e.preventDefault() 111 | }) 112 | .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { 113 | $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) 114 | }) 115 | 116 | }(jQuery); 117 | -------------------------------------------------------------------------------- /examples/fixHeader.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 17 | 18 | 19 | 20 |

TableHeadFixer Fix Header

21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 |
AnoJanFevMarAbrMaioTotal
2010100.00100.00100.00100.00100.00500.00
2011110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
173 |
174 | 175 | -------------------------------------------------------------------------------- /examples/fixHeadAndLeft.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 21 | 22 | 23 | 24 |

TableHeadFixer Fix Head and Left Column

25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 |
AnoJanFevMarAbrMaioTotal
2010100.00100.00100.00100.00100.00500.00
2011110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
177 |
178 | 179 | -------------------------------------------------------------------------------- /examples/fixHeadAndRight.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 21 | 22 | 23 | 24 |

TableHeadFixer Fix Head and Right Column

25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 |
AnoJanFevMarAbrMaioTotal
2010100.00100.00100.00100.00100.00500.00
2011110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
177 |
178 | 179 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/tests/visual/collapse.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Collapse 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 |
20 | 21 | 24 | 25 |
26 |
27 | 34 |
35 |
36 | Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. 37 |
38 |
39 |
40 |
41 | 48 |
49 |
50 | Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. 51 |
52 |
53 |
54 |
55 | 62 |
63 |
64 | Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS. 65 |
66 |
67 |
68 |
69 | 70 |
71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /examples/fixMultiHead.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 17 | 18 | 19 | 20 |

TableHeadFixer Fix Head Multiple Row

21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 |
AnoJanFevMarAbrMaioTotal
AnoJanFevMarAbrMaioTotal
2010100.00100.00100.00100.00100.00500.00
2011110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
182 |
183 | 184 | -------------------------------------------------------------------------------- /examples/fixFooter.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 17 | 18 | 19 | 20 |

TableHeadFixer Fix Footer

21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 |
AnoJanFevMarAbrMaioTotal
2010100.00100.00100.00100.00100.00500.00
2011110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
1000.001000.001000.001000.001000.001000.005000.00
184 |
185 | 186 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/tab.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: tab.js v3.3.2 3 | * http://getbootstrap.com/javascript/#tabs 4 | * ======================================================================== 5 | * Copyright 2011-2015 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // TAB CLASS DEFINITION 14 | // ==================== 15 | 16 | var Tab = function (element) { 17 | this.element = $(element) 18 | } 19 | 20 | Tab.VERSION = '3.3.2' 21 | 22 | Tab.TRANSITION_DURATION = 150 23 | 24 | Tab.prototype.show = function () { 25 | var $this = this.element 26 | var $ul = $this.closest('ul:not(.dropdown-menu)') 27 | var selector = $this.data('target') 28 | 29 | if (!selector) { 30 | selector = $this.attr('href') 31 | selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 32 | } 33 | 34 | if ($this.parent('li').hasClass('active')) return 35 | 36 | var $previous = $ul.find('.active:last a') 37 | var hideEvent = $.Event('hide.bs.tab', { 38 | relatedTarget: $this[0] 39 | }) 40 | var showEvent = $.Event('show.bs.tab', { 41 | relatedTarget: $previous[0] 42 | }) 43 | 44 | $previous.trigger(hideEvent) 45 | $this.trigger(showEvent) 46 | 47 | if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return 48 | 49 | var $target = $(selector) 50 | 51 | this.activate($this.closest('li'), $ul) 52 | this.activate($target, $target.parent(), function () { 53 | $previous.trigger({ 54 | type: 'hidden.bs.tab', 55 | relatedTarget: $this[0] 56 | }) 57 | $this.trigger({ 58 | type: 'shown.bs.tab', 59 | relatedTarget: $previous[0] 60 | }) 61 | }) 62 | } 63 | 64 | Tab.prototype.activate = function (element, container, callback) { 65 | var $active = container.find('> .active') 66 | var transition = callback 67 | && $.support.transition 68 | && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length) 69 | 70 | function next() { 71 | $active 72 | .removeClass('active') 73 | .find('> .dropdown-menu > .active') 74 | .removeClass('active') 75 | .end() 76 | .find('[data-toggle="tab"]') 77 | .attr('aria-expanded', false) 78 | 79 | element 80 | .addClass('active') 81 | .find('[data-toggle="tab"]') 82 | .attr('aria-expanded', true) 83 | 84 | if (transition) { 85 | element[0].offsetWidth // reflow for transition 86 | element.addClass('in') 87 | } else { 88 | element.removeClass('fade') 89 | } 90 | 91 | if (element.parent('.dropdown-menu')) { 92 | element 93 | .closest('li.dropdown') 94 | .addClass('active') 95 | .end() 96 | .find('[data-toggle="tab"]') 97 | .attr('aria-expanded', true) 98 | } 99 | 100 | callback && callback() 101 | } 102 | 103 | $active.length && transition ? 104 | $active 105 | .one('bsTransitionEnd', next) 106 | .emulateTransitionEnd(Tab.TRANSITION_DURATION) : 107 | next() 108 | 109 | $active.removeClass('in') 110 | } 111 | 112 | 113 | // TAB PLUGIN DEFINITION 114 | // ===================== 115 | 116 | function Plugin(option) { 117 | return this.each(function () { 118 | var $this = $(this) 119 | var data = $this.data('bs.tab') 120 | 121 | if (!data) $this.data('bs.tab', (data = new Tab(this))) 122 | if (typeof option == 'string') data[option]() 123 | }) 124 | } 125 | 126 | var old = $.fn.tab 127 | 128 | $.fn.tab = Plugin 129 | $.fn.tab.Constructor = Tab 130 | 131 | 132 | // TAB NO CONFLICT 133 | // =============== 134 | 135 | $.fn.tab.noConflict = function () { 136 | $.fn.tab = old 137 | return this 138 | } 139 | 140 | 141 | // TAB DATA-API 142 | // ============ 143 | 144 | var clickHandler = function (e) { 145 | e.preventDefault() 146 | Plugin.call($(this), 'show') 147 | } 148 | 149 | $(document) 150 | .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) 151 | .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) 152 | 153 | }(jQuery); 154 | -------------------------------------------------------------------------------- /examples/fixFooterAndLeft.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 21 | 22 | 23 | 24 |

TableHeadFixer Fix Footer and Left

25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 |
AnoJanFevMarAbrMaioTotal
2010100.00100.00100.00100.00100.00500.00
2011110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
1000.001000.001000.001000.001000.001000.005000.00
188 |
189 | 190 | -------------------------------------------------------------------------------- /examples/fixFooterAndRight.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 21 | 22 | 23 | 24 |

TableHeadFixer Fix Footer and Right

25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 |
AnoJanFevMarAbrMaioTotal
2010100.00100.00100.00100.00100.00500.00
2011110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
1000.001000.001000.001000.001000.001000.005000.00
188 |
189 | 190 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/tests/visual/modal.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Modal 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | 19 |
20 | 21 | 24 | 25 | 64 | 65 | 68 | 69 |
70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /examples/fixMultiFooter.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 17 | 18 | 19 | 20 |

TableHeadFixer Fix Footer Multiple Row

21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 |
AnoJanFevMarAbrMaioTotal
2010100.00100.00100.00100.00100.00500.00
2011110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
1000.001000.001000.001000.001000.001000.005000.00
1000.001000.001000.001000.001000.001000.005000.00
193 |
194 | 195 | -------------------------------------------------------------------------------- /examples/fixMultiTable.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 16 | 17 | 24 | 25 | 26 | 27 |

TableHeadFixer Fix Left Column

28 | 29 |
30 |
31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 |
AnoJanFevMarAbrMaioTotal
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
91 |
92 | 93 |
94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 |
AnoJanFevMarAbrMaioTotal
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
2012110.00110.00110.00110.00110.00550.00
154 |
155 |
156 | 157 | 158 | 159 | -------------------------------------------------------------------------------- /assets/bootstrap-3.3.2/js/dropdown.js: -------------------------------------------------------------------------------- 1 | /* ======================================================================== 2 | * Bootstrap: dropdown.js v3.3.2 3 | * http://getbootstrap.com/javascript/#dropdowns 4 | * ======================================================================== 5 | * Copyright 2011-2015 Twitter, Inc. 6 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 7 | * ======================================================================== */ 8 | 9 | 10 | +function ($) { 11 | 'use strict'; 12 | 13 | // DROPDOWN CLASS DEFINITION 14 | // ========================= 15 | 16 | var backdrop = '.dropdown-backdrop' 17 | var toggle = '[data-toggle="dropdown"]' 18 | var Dropdown = function (element) { 19 | $(element).on('click.bs.dropdown', this.toggle) 20 | } 21 | 22 | Dropdown.VERSION = '3.3.2' 23 | 24 | Dropdown.prototype.toggle = function (e) { 25 | var $this = $(this) 26 | 27 | if ($this.is('.disabled, :disabled')) return 28 | 29 | var $parent = getParent($this) 30 | var isActive = $parent.hasClass('open') 31 | 32 | clearMenus() 33 | 34 | if (!isActive) { 35 | if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { 36 | // if mobile we use a backdrop because click events don't delegate 37 | $('