├── .gitattributes ├── .gitignore ├── GruntFile.js ├── LICENSE-GPLv3 ├── README.md ├── compiled ├── footable.bootstrap.css ├── footable.bootstrap.min.css ├── footable.core.bootstrap.css ├── footable.core.bootstrap.min.css ├── footable.core.js ├── footable.core.min.js ├── footable.core.standalone.css ├── footable.core.standalone.min.css ├── footable.editing.css ├── footable.editing.js ├── footable.editing.min.css ├── footable.editing.min.js ├── footable.export.js ├── footable.export.min.js ├── footable.filtering.css ├── footable.filtering.js ├── footable.filtering.min.css ├── footable.filtering.min.js ├── footable.js ├── footable.min.js ├── footable.paging.css ├── footable.paging.js ├── footable.paging.min.css ├── footable.paging.min.js ├── footable.sorting.css ├── footable.sorting.js ├── footable.sorting.min.css ├── footable.sorting.min.js ├── footable.standalone.css ├── footable.standalone.min.css ├── footable.state.js └── footable.state.min.js ├── docs ├── columns │ ├── array.html │ ├── date.html │ ├── number.html │ └── object.html ├── components │ ├── editing.html │ ├── filtering.html │ ├── paging.html │ ├── sorting.html │ └── state.html ├── content │ ├── columns.json │ ├── rows-1.json │ ├── rows-2.json │ ├── rows-3.json │ ├── rows-4.json │ └── rows.json ├── css │ ├── docs.css │ ├── index.css │ └── prism.css ├── examples │ ├── advanced │ │ ├── ajax.html │ │ ├── change-pagesize.html │ │ ├── custom-filter-ui.html │ │ ├── filter-dropdown.html │ │ └── loading-rows.html │ ├── basic │ │ ├── hiding-columns.html │ │ ├── no-header.html │ │ ├── row-toggle.html │ │ └── single-header.html │ ├── bootstrap │ │ ├── accordion.html │ │ ├── collapse.html │ │ └── modal.html │ └── component │ │ ├── editing.html │ │ ├── filtering.html │ │ ├── paging.html │ │ ├── showcase.html │ │ └── sorting.html ├── getting-started.html ├── js │ ├── demo-rows.js │ ├── docs.js │ ├── ie10-viewport-bug-workaround.js │ ├── jquery.min.js │ └── prism.js └── jsdocs │ ├── FooTable.ArrayColumn.html │ ├── FooTable.Breakpoint.html │ ├── FooTable.Breakpoints.html │ ├── FooTable.Cell.html │ ├── FooTable.Class.html │ ├── FooTable.ClassFactory.html │ ├── FooTable.Column.html │ ├── FooTable.Columns.html │ ├── FooTable.Component.html │ ├── FooTable.DateColumn.html │ ├── FooTable.Defaults.html │ ├── FooTable.Editing.html │ ├── FooTable.EditingColumn.html │ ├── FooTable.Export.html │ ├── FooTable.Filter.html │ ├── FooTable.Filtering.html │ ├── FooTable.HTMLColumn.html │ ├── FooTable.NumberColumn.html │ ├── FooTable.ObjectColumn.html │ ├── FooTable.Pager.html │ ├── FooTable.Paging.html │ ├── FooTable.Query.html │ ├── FooTable.Row.html │ ├── FooTable.Rows.html │ ├── FooTable.Sorter.html │ ├── FooTable.Sorting.html │ ├── FooTable.State.html │ ├── FooTable.Table.html │ ├── FooTable.arr.html │ ├── FooTable.html │ ├── FooTable.is.html │ ├── FooTable.str.html │ ├── classes.list.html │ ├── favicon.ico │ ├── img │ ├── glyphicons-halflings-white.png │ ├── glyphicons-halflings.png │ └── old-wall.png │ ├── index.html │ ├── jQuery.fn.html │ ├── jQuery.html │ ├── namespaces.list.html │ ├── scripts │ ├── URI.js │ ├── bootstrap-dropdown.js │ ├── bootstrap-tab.js │ ├── docstrap.lib.js │ ├── prettify │ │ ├── Apache-License-2.0.txt │ │ ├── jquery.min.js │ │ ├── lang-css.js │ │ └── prettify.js │ ├── sunlight.js │ └── toc.js │ └── styles │ ├── darkstrap.css │ ├── prettify-tomorrow.css │ ├── site.oblivion.css │ ├── sunlight.dark.css │ └── sunlight.default.css ├── index.html ├── jsdoc.json ├── package.json ├── releases ├── footable-bootstrap.latest.zip ├── footable-bootstrap.v3.0.0.zip ├── footable-bootstrap.v3.0.1.zip ├── footable-bootstrap.v3.0.10.zip ├── footable-bootstrap.v3.0.11.zip ├── footable-bootstrap.v3.0.2.zip ├── footable-bootstrap.v3.0.3.zip ├── footable-bootstrap.v3.0.4.zip ├── footable-bootstrap.v3.0.5.zip ├── footable-bootstrap.v3.0.6.zip ├── footable-bootstrap.v3.0.7.zip ├── footable-bootstrap.v3.0.8.zip ├── footable-bootstrap.v3.0.9.zip ├── footable-bootstrap.v3.1.0.zip ├── footable-bootstrap.v3.1.1.zip ├── footable-bootstrap.v3.1.2.zip ├── footable-bootstrap.v3.1.3.zip ├── footable-bootstrap.v3.1.4.zip ├── footable-bootstrap.v3.1.5.zip ├── footable-bootstrap.v3.1.6.zip ├── footable-components.latest.zip ├── footable-components.v3.0.0.zip ├── footable-components.v3.0.1.zip ├── footable-components.v3.0.10.zip ├── footable-components.v3.0.11.zip ├── footable-components.v3.0.2.zip ├── footable-components.v3.0.3.zip ├── footable-components.v3.0.4.zip ├── footable-components.v3.0.5.zip ├── footable-components.v3.0.6.zip ├── footable-components.v3.0.7.zip ├── footable-components.v3.0.8.zip ├── footable-components.v3.0.9.zip ├── footable-components.v3.1.0.zip ├── footable-components.v3.1.1.zip ├── footable-components.v3.1.2.zip ├── footable-components.v3.1.3.zip ├── footable-components.v3.1.4.zip ├── footable-components.v3.1.5.zip ├── footable-components.v3.1.6.zip ├── footable-standalone.latest.zip ├── footable-standalone.v3.0.0.zip ├── footable-standalone.v3.0.1.zip ├── footable-standalone.v3.0.10.zip ├── footable-standalone.v3.0.11.zip ├── footable-standalone.v3.0.2.zip ├── footable-standalone.v3.0.3.zip ├── footable-standalone.v3.0.4.zip ├── footable-standalone.v3.0.5.zip ├── footable-standalone.v3.0.6.zip ├── footable-standalone.v3.0.7.zip ├── footable-standalone.v3.0.8.zip ├── footable-standalone.v3.0.9.zip ├── footable-standalone.v3.1.0.zip ├── footable-standalone.v3.1.1.zip ├── footable-standalone.v3.1.2.zip ├── footable-standalone.v3.1.3.zip ├── footable-standalone.v3.1.4.zip ├── footable-standalone.v3.1.5.zip └── footable-standalone.v3.1.6.zip └── src ├── css ├── FooTable.FontAwesome.css ├── FooTable.Glyphicons.css ├── FooTable.NoBootstrap.css ├── FooTable.css └── components │ ├── FooTable.Editing.css │ ├── FooTable.Filtering.css │ ├── FooTable.Paging.css │ └── FooTable.Sorting.css └── js ├── FooTable.js ├── classes ├── FooTable.Cell.js ├── FooTable.Column.js ├── FooTable.Component.js ├── FooTable.Defaults.js ├── FooTable.Row.js ├── FooTable.Table.js └── columns │ ├── FooTable.ArrayColumn.js │ ├── FooTable.DateColumn.js │ ├── FooTable.HTMLColumn.js │ ├── FooTable.NumberColumn.js │ └── FooTable.ObjectColumn.js ├── components ├── README.md ├── breakpoints │ ├── FooTable.Breakpoint.js │ ├── FooTable.Breakpoints.js │ └── extends │ │ ├── FooTable.Column.js │ │ └── FooTable.Defaults.js ├── columns │ ├── FooTable.Columns.js │ └── extends │ │ └── FooTable.Defaults.js ├── editing │ ├── FooTable.Editing.js │ ├── FooTable.EditingColumn.js │ └── extends │ │ ├── FooTable.Defaults.js │ │ ├── FooTable.Paging.js │ │ ├── FooTable.Row.js │ │ └── FooTable.Rows.js ├── export │ ├── FooTable.Export.js │ └── extends │ │ ├── FooTable.Column.js │ │ └── FooTable.Table.js ├── filtering │ ├── FooTable.Filter.js │ ├── FooTable.Filtering.js │ ├── FooTable.Query.js │ └── extends │ │ ├── FooTable.Cell.js │ │ ├── FooTable.Column.js │ │ ├── FooTable.Defaults.js │ │ └── FooTable.Row.js ├── paging │ ├── FooTable.Pager.js │ ├── FooTable.Paging.js │ └── extends │ │ ├── FooTable.Defaults.js │ │ └── FooTable.Table.js ├── rows │ ├── FooTable.Rows.js │ └── extends │ │ ├── FooTable.Defaults.js │ │ └── FooTable.Table.js ├── sorting │ ├── FooTable.Sorter.js │ ├── FooTable.Sorting.js │ └── extends │ │ ├── FooTable.Cell.js │ │ ├── FooTable.Column.js │ │ ├── FooTable.Defaults.js │ │ ├── FooTable.HTMLColumn.js │ │ ├── FooTable.NumberColumn.js │ │ └── FooTable.Table.js └── state │ ├── FooTable.State.js │ └── extends │ ├── FooTable.Component.js │ ├── FooTable.Defaults.js │ ├── FooTable.Filtering.js │ ├── FooTable.Paging.js │ ├── FooTable.Sorting.js │ └── FooTable.Table.js └── utils ├── FooTable.Class.js ├── FooTable.js └── core ├── FooTable.arr.js ├── FooTable.is.js └── FooTable.str.js /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | 19 | # External tool builders 20 | .externalToolBuilders/ 21 | 22 | # Locally stored "Eclipse launch configurations" 23 | *.launch 24 | 25 | # CDT-specific 26 | .cproject 27 | 28 | # PDT-specific 29 | .buildpath 30 | 31 | 32 | ################# 33 | ## Visual Studio 34 | ################# 35 | 36 | ## Ignore Visual Studio temporary files, build results, and 37 | ## files generated by popular Visual Studio add-ons. 38 | 39 | # User-specific files 40 | *.suo 41 | *.user 42 | *.sln.docstates 43 | 44 | # Build results 45 | [Dd]ebug/ 46 | [Rr]elease/ 47 | 48 | # Visual Studio profiler 49 | *.psess 50 | *.vsp 51 | 52 | # ReSharper and DotCover are .NET coding add-in 53 | _ReSharper* 54 | *.dotCover 55 | 56 | # Others 57 | [Bb]in 58 | [Oo]bj 59 | sql 60 | TestResults 61 | *.Cache 62 | ClientBin 63 | stylecop.* 64 | ~$* 65 | *.dbmdl 66 | Generated_Code #added for RIA/Silverlight projects 67 | 68 | # Backup & report files from converting an old project file to a newer 69 | # Visual Studio version. Backup files are not needed, because we have git ;-) 70 | _UpgradeReport_Files/ 71 | Backup*/ 72 | UpgradeLog*.XML 73 | 74 | 75 | 76 | # Windows image file caches 77 | Thumbs.db 78 | 79 | # Windows folder config file 80 | Desktop.ini 81 | 82 | # Installer logs 83 | pip-log.txt 84 | 85 | # Unit test / coverage reports 86 | .coverage 87 | .tox 88 | 89 | #Translations 90 | *.mo 91 | 92 | #Mr Developer 93 | .mr.developer.cfg 94 | 95 | #Mac crap 96 | .DS_Store 97 | 98 | #Grunt related 99 | /node_modules/ 100 | 101 | #WebStorm IDE 102 | /.idea 103 | 104 | #npm 105 | npm-debug.log 106 | 107 | #developer specific test folder for anything I want to test but not check in. 108 | /.test/ -------------------------------------------------------------------------------- /LICENSE-GPLv3: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015 Steven Usher & Brad Vincent 2 | 3 | This program is free software: you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation, either version 3 of the License, or 6 | (at your option) any later version. 7 | 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | GNU General Public License for more details. 12 | 13 | You should have received a copy of the GNU General Public License 14 | along with this program. If not, see . -------------------------------------------------------------------------------- /compiled/footable.core.bootstrap.css: -------------------------------------------------------------------------------- 1 | /* 2 | * FooTable v3 - FooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome. 3 | * @version 3.1.6 4 | * @link http://fooplugins.com 5 | * @copyright Steven Usher & Brad Vincent 2015 6 | * @license Released under the GPLv3 license. 7 | */ 8 | table.footable, 9 | table.footable-details { 10 | position: relative; 11 | width: 100%; 12 | border-spacing: 0; 13 | border-collapse: collapse; 14 | } 15 | table.footable-details { 16 | margin-bottom: 0; 17 | } 18 | table.footable-hide-fouc { 19 | display: none; 20 | } 21 | table > tbody > tr > td > span.footable-toggle { 22 | margin-right: 8px; 23 | opacity: 0.3; 24 | } 25 | table > tbody > tr > td > span.footable-toggle.last-column { 26 | margin-left: 8px; 27 | float: right; 28 | } 29 | table.table-condensed > tbody > tr > td > span.footable-toggle { 30 | margin-right: 5px; 31 | } 32 | table.footable-details > tbody > tr > th:nth-child(1) { 33 | min-width: 40px; 34 | width: 120px; 35 | } 36 | table.footable-details > tbody > tr > td:nth-child(2) { 37 | word-break: break-all; 38 | } 39 | 40 | table.footable-details > thead > tr:first-child > th, 41 | table.footable-details > thead > tr:first-child > td, 42 | table.footable-details > tbody > tr:first-child > th, 43 | table.footable-details > tbody > tr:first-child > td, 44 | table.footable-details > tfoot > tr:first-child > th, 45 | table.footable-details > tfoot > tr:first-child > td { 46 | border-top-width: 0; 47 | } 48 | table.footable-details.table-bordered > thead > tr:first-child > th, 49 | table.footable-details.table-bordered > thead > tr:first-child > td, 50 | table.footable-details.table-bordered > tbody > tr:first-child > th, 51 | table.footable-details.table-bordered > tbody > tr:first-child > td, 52 | table.footable-details.table-bordered > tfoot > tr:first-child > th, 53 | table.footable-details.table-bordered > tfoot > tr:first-child > td { 54 | border-top-width: 1px; 55 | } 56 | 57 | div.footable-loader { 58 | vertical-align: middle; 59 | text-align: center; 60 | height: 300px; 61 | position: relative; 62 | } 63 | div.footable-loader > span.fooicon { 64 | display: inline-block; 65 | opacity: 0.3; 66 | font-size: 30px; 67 | line-height: 32px; 68 | width: 32px; 69 | height: 32px; 70 | margin-top: -16px; 71 | margin-left: -16px; 72 | position: absolute; 73 | top: 50%; 74 | left: 50%; 75 | -webkit-animation: fooicon-spin-r 2s infinite linear; 76 | animation: fooicon-spin-r 2s infinite linear; 77 | } 78 | table.footable > tbody > tr.footable-empty > td { 79 | vertical-align: middle; 80 | text-align: center; 81 | font-size: 30px; 82 | } 83 | table.footable > tbody > tr > td, 84 | table.footable > tbody > tr > th { 85 | display: none; 86 | } 87 | table.footable > tbody > tr.footable-empty > td, 88 | table.footable > tbody > tr.footable-empty > th, 89 | table.footable > tbody > tr.footable-detail-row > td, 90 | table.footable > tbody > tr.footable-detail-row > th { 91 | display: table-cell; 92 | } 93 | @-webkit-keyframes fooicon-spin-r { 94 | 0% { 95 | -webkit-transform: rotate(0deg); 96 | transform: rotate(0deg); 97 | } 98 | 99 | 100% { 100 | -webkit-transform: rotate(359deg); 101 | transform: rotate(359deg); 102 | } 103 | } 104 | 105 | @keyframes fooicon-spin-r { 106 | 0% { 107 | -webkit-transform: rotate(0deg); 108 | transform: rotate(0deg); 109 | } 110 | 111 | 100% { 112 | -webkit-transform: rotate(359deg); 113 | transform: rotate(359deg); 114 | } 115 | } 116 | 117 | .fooicon { 118 | position: relative; 119 | top: 1px; 120 | display: inline-block; 121 | font-family: 'Glyphicons Halflings' !important; 122 | font-style: normal; 123 | font-weight: 400; 124 | line-height: 1; 125 | -webkit-font-smoothing: antialiased; 126 | -moz-osx-font-smoothing: grayscale; 127 | } 128 | .fooicon:before, 129 | .fooicon:after { 130 | -webkit-box-sizing: border-box; 131 | -moz-box-sizing: border-box; 132 | box-sizing: border-box; 133 | } 134 | .fooicon-loader:before { 135 | content: "\e030"; 136 | } 137 | .fooicon-plus:before { 138 | content: "\2b"; 139 | } 140 | .fooicon-minus:before { 141 | content: "\2212"; 142 | } 143 | .fooicon-search:before { 144 | content: "\e003"; 145 | } 146 | .fooicon-remove:before { 147 | content: "\e014"; 148 | } 149 | .fooicon-sort:before { 150 | content: "\e150"; 151 | } 152 | .fooicon-sort-asc:before { 153 | content: "\e155"; 154 | } 155 | .fooicon-sort-desc:before { 156 | content: "\e156"; 157 | } 158 | .fooicon-pencil:before { 159 | content: "\270f"; 160 | } 161 | .fooicon-trash:before { 162 | content: "\e020"; 163 | } 164 | .fooicon-eye-close:before { 165 | content: "\e106"; 166 | } 167 | .fooicon-flash:before { 168 | content: "\e162"; 169 | } 170 | .fooicon-cog:before { 171 | content: "\e019"; 172 | } 173 | .fooicon-stats:before { 174 | content: "\e185"; 175 | } 176 | -------------------------------------------------------------------------------- /compiled/footable.core.bootstrap.min.css: -------------------------------------------------------------------------------- 1 | table.footable,table.footable-details{position:relative;width:100%;border-spacing:0;border-collapse:collapse}table.footable-details{margin-bottom:0}table.footable-hide-fouc{display:none}table>tbody>tr>td>span.footable-toggle{margin-right:8px;opacity:.3}table>tbody>tr>td>span.footable-toggle.last-column{margin-left:8px;float:right}table.table-condensed>tbody>tr>td>span.footable-toggle{margin-right:5px}table.footable-details>tbody>tr>th:nth-child(1){min-width:40px;width:120px}table.footable-details>tbody>tr>td:nth-child(2){word-break:break-all}table.footable-details>tbody>tr:first-child>td,table.footable-details>tbody>tr:first-child>th,table.footable-details>tfoot>tr:first-child>td,table.footable-details>tfoot>tr:first-child>th,table.footable-details>thead>tr:first-child>td,table.footable-details>thead>tr:first-child>th{border-top-width:0}table.footable-details.table-bordered>tbody>tr:first-child>td,table.footable-details.table-bordered>tbody>tr:first-child>th,table.footable-details.table-bordered>tfoot>tr:first-child>td,table.footable-details.table-bordered>tfoot>tr:first-child>th,table.footable-details.table-bordered>thead>tr:first-child>td,table.footable-details.table-bordered>thead>tr:first-child>th{border-top-width:1px}div.footable-loader{vertical-align:middle;text-align:center;height:300px;position:relative}div.footable-loader>span.fooicon{display:inline-block;opacity:.3;font-size:30px;line-height:32px;width:32px;height:32px;margin-top:-16px;margin-left:-16px;position:absolute;top:50%;left:50%;-webkit-animation:fooicon-spin-r 2s infinite linear;animation:fooicon-spin-r 2s infinite linear}table.footable>tbody>tr.footable-empty>td{vertical-align:middle;text-align:center;font-size:30px}table.footable>tbody>tr>td,table.footable>tbody>tr>th{display:none}table.footable>tbody>tr.footable-detail-row>td,table.footable>tbody>tr.footable-detail-row>th,table.footable>tbody>tr.footable-empty>td,table.footable>tbody>tr.footable-empty>th{display:table-cell}@-webkit-keyframes fooicon-spin-r{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fooicon-spin-r{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fooicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings'!important;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fooicon:after,.fooicon:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.fooicon-loader:before{content:"\e030"}.fooicon-plus:before{content:"\2b"}.fooicon-minus:before{content:"\2212"}.fooicon-search:before{content:"\e003"}.fooicon-remove:before{content:"\e014"}.fooicon-sort:before{content:"\e150"}.fooicon-sort-asc:before{content:"\e155"}.fooicon-sort-desc:before{content:"\e156"}.fooicon-pencil:before{content:"\270f"}.fooicon-trash:before{content:"\e020"}.fooicon-eye-close:before{content:"\e106"}.fooicon-flash:before{content:"\e162"}.fooicon-cog:before{content:"\e019"}.fooicon-stats:before{content:"\e185"} -------------------------------------------------------------------------------- /compiled/footable.editing.css: -------------------------------------------------------------------------------- 1 | /* 2 | * FooTable v3 - FooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome. 3 | * @version 3.1.6 4 | * @link http://fooplugins.com 5 | * @copyright Steven Usher & Brad Vincent 2015 6 | * @license Released under the GPLv3 license. 7 | */ 8 | td.footable-editing { 9 | width: 90px; 10 | max-width: 90px; 11 | } 12 | table.footable-editing-no-edit td.footable-editing, 13 | table.footable-editing-no-delete td.footable-editing, 14 | table.footable-editing-no-view td.footable-editing { 15 | width: 70px; 16 | max-width: 70px; 17 | } 18 | table.footable-editing-no-edit.footable-editing-no-delete td.footable-editing, 19 | table.footable-editing-no-edit.footable-editing-no-view td.footable-editing, 20 | table.footable-editing-no-delete.footable-editing-no-view td.footable-editing { 21 | width: 50px; 22 | max-width: 50px; 23 | } 24 | table.footable-editing-no-edit.footable-editing-no-delete.footable-editing-no-view td.footable-editing, 25 | table.footable-editing-no-edit.footable-editing-no-delete.footable-editing-no-view th.footable-editing { 26 | width: 0; 27 | max-width: 0; 28 | display: none !important; 29 | } 30 | table.footable-editing-right td.footable-editing, 31 | table.footable-editing-right tr.footable-editing { 32 | text-align: right; 33 | } 34 | table.footable-editing-left td.footable-editing, 35 | table.footable-editing-left tr.footable-editing { 36 | text-align: left; 37 | } 38 | table.footable-editing button.footable-add, 39 | table.footable-editing button.footable-hide, 40 | table.footable-editing-show button.footable-show, 41 | table.footable-editing.footable-editing-always-show button.footable-show, 42 | table.footable-editing.footable-editing-always-show button.footable-hide, 43 | table.footable-editing.footable-editing-always-show.footable-editing-no-add tr.footable-editing { 44 | display: none; 45 | } 46 | table.footable-editing.footable-editing-show button.footable-add, 47 | table.footable-editing.footable-editing-show button.footable-hide, 48 | table.footable-editing.footable-editing-always-show button.footable-add { 49 | display: inline-block; 50 | } 51 | -------------------------------------------------------------------------------- /compiled/footable.editing.min.css: -------------------------------------------------------------------------------- 1 | td.footable-editing{width:90px;max-width:90px}table.footable-editing-no-delete td.footable-editing,table.footable-editing-no-edit td.footable-editing,table.footable-editing-no-view td.footable-editing{width:70px;max-width:70px}table.footable-editing-no-delete.footable-editing-no-view td.footable-editing,table.footable-editing-no-edit.footable-editing-no-delete td.footable-editing,table.footable-editing-no-edit.footable-editing-no-view td.footable-editing{width:50px;max-width:50px}table.footable-editing-no-edit.footable-editing-no-delete.footable-editing-no-view td.footable-editing,table.footable-editing-no-edit.footable-editing-no-delete.footable-editing-no-view th.footable-editing{width:0;max-width:0;display:none!important}table.footable-editing-right td.footable-editing,table.footable-editing-right tr.footable-editing{text-align:right}table.footable-editing-left td.footable-editing,table.footable-editing-left tr.footable-editing{text-align:left}table.footable-editing button.footable-add,table.footable-editing button.footable-hide,table.footable-editing-show button.footable-show,table.footable-editing.footable-editing-always-show button.footable-hide,table.footable-editing.footable-editing-always-show button.footable-show,table.footable-editing.footable-editing-always-show.footable-editing-no-add tr.footable-editing{display:none}table.footable-editing.footable-editing-always-show button.footable-add,table.footable-editing.footable-editing-show button.footable-add,table.footable-editing.footable-editing-show button.footable-hide{display:inline-block} -------------------------------------------------------------------------------- /compiled/footable.export.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * FooTable v3 - FooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome. 3 | * @version 3.1.6 4 | * @link http://fooplugins.com 5 | * @copyright Steven Usher & Brad Vincent 2015 6 | * @license Released under the GPLv3 license. 7 | */ 8 | !function(a,b){b.Export=b.Component.extend({construct:function(a){this._super(a,!0),this.snapshot=[]},predraw:function(){this.snapshot=this.ft.rows.array.slice(0)},columns:function(){var a=[];return b.arr.each(this.ft.columns.array,function(b){b.internal||a.push({type:b.type,name:b.name,title:b.title,visible:b.visible,hidden:b.hidden,classes:b.classes,style:b.style})}),a},rows:function(a){a=b.is["boolean"](a)?a:!1;var c=a?this.ft.rows.all:this.snapshot,d=[];return b.arr.each(c,function(a){d.push(a.val())}),d},json:function(a){return JSON.parse(JSON.stringify({columns:this.columns(),rows:this.rows(a)}))},csv:function(a){var c,d,e="",f=this.columns();b.arr.each(f,function(a,b){d='"'+a.title.replace(/"/g,'""')+'"',e+=0===b?d:","+d}),e+="\n";var g=a?this.ft.rows.all:this.snapshot;return b.arr.each(g,function(a){b.arr.each(a.cells,function(a,b){a.column.internal||(c=a.column.stringify.call(a.column,a.value,a.ft.o,a.row.value),d='"'+c.replace(/"/g,'""')+'"',e+=0===b?d:","+d)}),e+="\n"}),e}}),b.components.register("export",b.Export,490)}(jQuery,FooTable),function(a){a.Column.prototype.__export_define__=function(b){this.stringify=a.checkFnValue(this,b.stringify,this.stringify)},a.Column.extend("define",function(a){this._super(a),this.__export_define__(a)}),a.Column.prototype.stringify=function(a,b,c){return a+""},a.is.defined(a.DateColumn)&&(a.DateColumn.prototype.stringify=function(b,c,d){return a.is.object(b)&&a.is["boolean"](b._isAMomentObject)&&b.isValid()?b.format(this.formatString):""}),a.ObjectColumn.prototype.stringify=function(b,c,d){return a.is.object(b)?JSON.stringify(b):""},a.ArrayColumn.prototype.stringify=function(b,c,d){return a.is.array(b)?JSON.stringify(b):""}}(FooTable),function(a){a.Table.prototype.toJSON=function(b){return this.use(a.Export).json(b)},a.Table.prototype.toCSV=function(b){return this.use(a.Export).csv(b)}}(FooTable); -------------------------------------------------------------------------------- /compiled/footable.filtering.css: -------------------------------------------------------------------------------- 1 | /* 2 | * FooTable v3 - FooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome. 3 | * @version 3.1.6 4 | * @link http://fooplugins.com 5 | * @copyright Steven Usher & Brad Vincent 2015 6 | * @license Released under the GPLv3 license. 7 | */ 8 | table.footable > thead > tr.footable-filtering > th { 9 | border-bottom-width: 1px; 10 | font-weight: normal; 11 | } 12 | .footable-filtering-external.footable-filtering-right, 13 | table.footable > thead > tr.footable-filtering > th, 14 | table.footable.footable-filtering-right > thead > tr.footable-filtering > th { 15 | text-align: right; 16 | } 17 | .footable-filtering-external.footable-filtering-left, 18 | table.footable.footable-filtering-left > thead > tr.footable-filtering > th { 19 | text-align: left; 20 | } 21 | .footable-filtering-external.footable-filtering-center, 22 | table.footable.footable-filtering-center > thead > tr.footable-filtering > th { 23 | text-align: center; 24 | } 25 | table.footable > thead > tr.footable-filtering > th div.form-group { 26 | margin-bottom: 0; 27 | } 28 | table.footable > thead > tr.footable-filtering > th div.form-group+div.form-group { 29 | margin-top: 5px; 30 | } 31 | table.footable > thead > tr.footable-filtering > th div.input-group { 32 | width: 100%; 33 | } 34 | .footable-filtering-external ul.dropdown-menu > li > a.checkbox, 35 | table.footable > thead > tr.footable-filtering > th ul.dropdown-menu > li > a.checkbox { 36 | margin: 0; 37 | display: block; 38 | position: relative; 39 | } 40 | .footable-filtering-external ul.dropdown-menu > li > a.checkbox > label, 41 | table.footable > thead > tr.footable-filtering > th ul.dropdown-menu > li > a.checkbox > label { 42 | display: block; 43 | padding-left: 20px; 44 | } 45 | .footable-filtering-external ul.dropdown-menu > li > a.checkbox input[type="checkbox"], 46 | table.footable > thead > tr.footable-filtering > th ul.dropdown-menu > li > a.checkbox input[type="checkbox"] { 47 | position: absolute; 48 | margin-left: -20px; 49 | } 50 | @media (min-width: 768px) { 51 | table.footable > thead > tr.footable-filtering > th div.input-group { 52 | width: auto; 53 | } 54 | table.footable > thead > tr.footable-filtering > th div.form-group { 55 | margin-left: 2px; 56 | margin-right: 2px; 57 | } 58 | table.footable > thead > tr.footable-filtering > th div.form-group+div.form-group { 59 | margin-top: 0; 60 | } 61 | } -------------------------------------------------------------------------------- /compiled/footable.filtering.min.css: -------------------------------------------------------------------------------- 1 | table.footable>thead>tr.footable-filtering>th{border-bottom-width:1px;font-weight:400}.footable-filtering-external.footable-filtering-right,table.footable.footable-filtering-right>thead>tr.footable-filtering>th,table.footable>thead>tr.footable-filtering>th{text-align:right}.footable-filtering-external.footable-filtering-left,table.footable.footable-filtering-left>thead>tr.footable-filtering>th{text-align:left}.footable-filtering-external.footable-filtering-center,table.footable.footable-filtering-center>thead>tr.footable-filtering>th{text-align:center}table.footable>thead>tr.footable-filtering>th div.form-group{margin-bottom:0}table.footable>thead>tr.footable-filtering>th div.form-group+div.form-group{margin-top:5px}table.footable>thead>tr.footable-filtering>th div.input-group{width:100%}.footable-filtering-external ul.dropdown-menu>li>a.checkbox,table.footable>thead>tr.footable-filtering>th ul.dropdown-menu>li>a.checkbox{margin:0;display:block;position:relative}.footable-filtering-external ul.dropdown-menu>li>a.checkbox>label,table.footable>thead>tr.footable-filtering>th ul.dropdown-menu>li>a.checkbox>label{display:block;padding-left:20px}.footable-filtering-external ul.dropdown-menu>li>a.checkbox input[type=checkbox],table.footable>thead>tr.footable-filtering>th ul.dropdown-menu>li>a.checkbox input[type=checkbox]{position:absolute;margin-left:-20px}@media (min-width:768px){table.footable>thead>tr.footable-filtering>th div.input-group{width:auto}table.footable>thead>tr.footable-filtering>th div.form-group{margin-left:2px;margin-right:2px}table.footable>thead>tr.footable-filtering>th div.form-group+div.form-group{margin-top:0}} -------------------------------------------------------------------------------- /compiled/footable.paging.css: -------------------------------------------------------------------------------- 1 | /* 2 | * FooTable v3 - FooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome. 3 | * @version 3.1.6 4 | * @link http://fooplugins.com 5 | * @copyright Steven Usher & Brad Vincent 2015 6 | * @license Released under the GPLv3 license. 7 | */ 8 | .footable-paging-external ul.pagination, 9 | table.footable > tfoot > tr.footable-paging > td > ul.pagination { 10 | margin: 10px 0 0 0; 11 | } 12 | .footable-paging-external span.label, 13 | table.footable > tfoot > tr.footable-paging > td > span.label { 14 | display: inline-block; 15 | margin: 0 0 10px 0; 16 | padding: 4px 10px; 17 | } 18 | .footable-paging-external.footable-paging-center, 19 | table.footable > tfoot > tr.footable-paging > td, 20 | table.footable-paging-center > tfoot > tr.footable-paging > td { 21 | text-align: center; 22 | } 23 | .footable-paging-external.footable-paging-left, 24 | table.footable-paging-left > tfoot > tr.footable-paging > td { 25 | text-align: left; 26 | } 27 | .footable-paging-external.footable-paging-right, 28 | table.footable-paging-right > tfoot > tr.footable-paging > td { 29 | text-align: right; 30 | } 31 | ul.pagination > li.footable-page { 32 | display: none; 33 | } 34 | ul.pagination > li.footable-page.visible { 35 | display: inline; 36 | } -------------------------------------------------------------------------------- /compiled/footable.paging.min.css: -------------------------------------------------------------------------------- 1 | .footable-paging-external ul.pagination,table.footable>tfoot>tr.footable-paging>td>ul.pagination{margin:10px 0 0}.footable-paging-external span.label,table.footable>tfoot>tr.footable-paging>td>span.label{display:inline-block;margin:0 0 10px;padding:4px 10px}.footable-paging-external.footable-paging-center,table.footable-paging-center>tfoot>tr.footable-paging>td,table.footable>tfoot>tr.footable-paging>td{text-align:center}.footable-paging-external.footable-paging-left,table.footable-paging-left>tfoot>tr.footable-paging>td{text-align:left}.footable-paging-external.footable-paging-right,table.footable-paging-right>tfoot>tr.footable-paging>td{text-align:right}ul.pagination>li.footable-page{display:none}ul.pagination>li.footable-page.visible{display:inline} -------------------------------------------------------------------------------- /compiled/footable.sorting.css: -------------------------------------------------------------------------------- 1 | /* 2 | * FooTable v3 - FooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome. 3 | * @version 3.1.6 4 | * @link http://fooplugins.com 5 | * @copyright Steven Usher & Brad Vincent 2015 6 | * @license Released under the GPLv3 license. 7 | */ 8 | table.footable > thead > tr > td.footable-sortable, 9 | table.footable > thead > tr > th.footable-sortable, 10 | table.footable > tbody > tr > td.footable-sortable, 11 | table.footable > tbody > tr > th.footable-sortable, 12 | table.footable > tfoot > tr > td.footable-sortable, 13 | table.footable > tfoot > tr > th.footable-sortable { 14 | position: relative; 15 | padding-right: 30px; 16 | cursor: pointer; 17 | } 18 | td.footable-sortable > span.fooicon, 19 | th.footable-sortable > span.fooicon { 20 | position: absolute; 21 | right: 6px; 22 | top: 50%; 23 | margin-top: -7px; 24 | opacity: 0; 25 | transition: opacity 0.3s ease-in; 26 | } 27 | td.footable-sortable:hover > span.fooicon, 28 | th.footable-sortable:hover > span.fooicon { 29 | opacity: 1; 30 | } 31 | td.footable-sortable.footable-asc > span.fooicon, 32 | th.footable-sortable.footable-asc > span.fooicon, 33 | td.footable-sortable.footable-desc > span.fooicon, 34 | th.footable-sortable.footable-desc > span.fooicon { 35 | opacity: 1; 36 | } 37 | /* hides the sort icons when sorting is not allowed */ 38 | table.footable-sorting-disabled td.footable-sortable.footable-asc > span.fooicon, 39 | table.footable-sorting-disabled td.footable-sortable.footable-desc > span.fooicon, 40 | table.footable-sorting-disabled td.footable-sortable:hover > span.fooicon, 41 | table.footable-sorting-disabled th.footable-sortable.footable-asc > span.fooicon, 42 | table.footable-sorting-disabled th.footable-sortable.footable-desc > span.fooicon, 43 | table.footable-sorting-disabled th.footable-sortable:hover > span.fooicon { 44 | opacity: 0; 45 | visibility: hidden; 46 | } -------------------------------------------------------------------------------- /compiled/footable.sorting.min.css: -------------------------------------------------------------------------------- 1 | table.footable>tbody>tr>td.footable-sortable,table.footable>tbody>tr>th.footable-sortable,table.footable>tfoot>tr>td.footable-sortable,table.footable>tfoot>tr>th.footable-sortable,table.footable>thead>tr>td.footable-sortable,table.footable>thead>tr>th.footable-sortable{position:relative;padding-right:30px;cursor:pointer}td.footable-sortable>span.fooicon,th.footable-sortable>span.fooicon{position:absolute;right:6px;top:50%;margin-top:-7px;opacity:0;transition:opacity .3s ease-in}td.footable-sortable.footable-asc>span.fooicon,td.footable-sortable.footable-desc>span.fooicon,td.footable-sortable:hover>span.fooicon,th.footable-sortable.footable-asc>span.fooicon,th.footable-sortable.footable-desc>span.fooicon,th.footable-sortable:hover>span.fooicon{opacity:1}table.footable-sorting-disabled td.footable-sortable.footable-asc>span.fooicon,table.footable-sorting-disabled td.footable-sortable.footable-desc>span.fooicon,table.footable-sorting-disabled td.footable-sortable:hover>span.fooicon,table.footable-sorting-disabled th.footable-sortable.footable-asc>span.fooicon,table.footable-sorting-disabled th.footable-sortable.footable-desc>span.fooicon,table.footable-sorting-disabled th.footable-sortable:hover>span.fooicon{opacity:0;visibility:hidden} -------------------------------------------------------------------------------- /compiled/footable.sorting.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * FooTable v3 - FooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome. 3 | * @version 3.1.6 4 | * @link http://fooplugins.com 5 | * @copyright Steven Usher & Brad Vincent 2015 6 | * @license Released under the GPLv3 license. 7 | */ 8 | !function(a,b){b.Sorter=b.Class.extend({construct:function(a,b){this.column=a,this.direction=b}})}(jQuery,FooTable),function(a,b){b.Sorting=b.Component.extend({construct:function(a){this._super(a,a.o.sorting.enabled),this.o=a.o.sorting,this.column=null,this.allowed=!0,this.initial=null},preinit:function(a){var c=this;this.ft.raise("preinit.ft.sorting",[a]).then(function(){c.ft.$el.hasClass("footable-sorting")&&(c.enabled=!0),c.enabled=b.is["boolean"](a.sorting)?a.sorting:c.enabled,c.enabled&&(c.column=b.arr.first(c.ft.columns.array,function(a){return a.sorted}))},function(){c.enabled=!1})},init:function(){var c=this;this.ft.raise("init.ft.sorting").then(function(){if(!c.initial){var d=!!c.column;c.initial={isset:d,rows:c.ft.rows.all.slice(0),column:d?c.column.name:null,direction:d?c.column.direction:null}}b.arr.each(c.ft.columns.array,function(b){b.sortable&&b.$el.addClass("footable-sortable").append(a("",{"class":"fooicon fooicon-sort"}))}),c.ft.$el.on("click.footable",".footable-sortable",{self:c},c._onSortClicked)},function(){c.enabled=!1})},destroy:function(){var a=this;this.ft.raise("destroy.ft.paging").then(function(){a.ft.$el.off("click.footable",".footable-sortable",a._onSortClicked),a.ft.$el.children("thead").children("tr.footable-header").children(".footable-sortable").removeClass("footable-sortable footable-asc footable-desc").find("span.fooicon").remove()})},predraw:function(){if(this.column){var a=this,b=a.column;a.ft.rows.array.sort(function(a,c){return"DESC"==b.direction?b.sorter(c.cells[b.index].sortValue,a.cells[b.index].sortValue):b.sorter(a.cells[b.index].sortValue,c.cells[b.index].sortValue)})}},draw:function(){if(this.column){var a=this,b=a.ft.$el.find("thead > tr > .footable-sortable"),c=a.column.$el;b.removeClass("footable-asc footable-desc").children(".fooicon").removeClass("fooicon-sort fooicon-sort-asc fooicon-sort-desc"),b.not(c).children(".fooicon").addClass("fooicon-sort"),c.addClass("DESC"==a.column.direction?"footable-desc":"footable-asc").children(".fooicon").addClass("DESC"==a.column.direction?"fooicon-sort-desc":"fooicon-sort-asc")}},sort:function(a,b){return this._sort(a,b)},toggleAllowed:function(a){a=b.is["boolean"](a)?a:!this.allowed,this.allowed=a,this.ft.$el.toggleClass("footable-sorting-disabled",!this.allowed)},hasChanged:function(){return!(!this.initial||!this.column||this.column.name===this.initial.column&&(this.column.direction===this.initial.direction||null===this.initial.direction&&"ASC"===this.column.direction))},reset:function(){this.initial&&(this.initial.isset?this.sort(this.initial.column,this.initial.direction):(this.column&&(this.column.$el.removeClass("footable-asc footable-desc"),this.column=null),this.ft.rows.all=this.initial.rows,this.ft.draw()))},_sort:function(c,d){if(!this.allowed)return a.Deferred().reject("sorting disabled");var e=this,f=new b.Sorter(e.ft.columns.get(c),b.Sorting.dir(d));return e.ft.raise("before.ft.sorting",[f]).then(function(){return b.arr.each(e.ft.columns.array,function(a){a!=e.column&&(a.direction=null)}),e.column=e.ft.columns.get(f.column),e.column&&(e.column.direction=b.Sorting.dir(f.direction)),e.ft.draw().then(function(){e.ft.raise("after.ft.sorting",[f])})})},_onSortClicked:function(b){var c=b.data.self,d=a(this).closest("th,td"),e=d.is(".footable-asc, .footable-desc")?d.hasClass("footable-desc")?"ASC":"DESC":"ASC";c._sort(d.index(),e)}}),b.Sorting.dir=function(a){return!b.is.string(a)||"ASC"!=a&&"DESC"!=a?"ASC":a},b.components.register("sorting",b.Sorting,600)}(jQuery,FooTable),function(a){a.Cell.prototype.sortValue=null,a.Cell.prototype.__sorting_define__=function(a){this.sortValue=this.column.sortValue.call(this.column,a)},a.Cell.prototype.__sorting_val__=function(b){a.is.defined(b)&&(this.sortValue=this.column.sortValue.call(this.column,b))},a.Cell.extend("define",function(a){this._super(a),this.__sorting_define__(a)}),a.Cell.extend("val",function(a,b,c){var d=this._super(a,b,c);return this.__sorting_val__(a),d})}(FooTable),function(a,b){b.Column.prototype.direction=null,b.Column.prototype.sortable=!0,b.Column.prototype.sorted=!1,b.Column.prototype.sorter=function(a,b){return"string"==typeof a&&(a=a.toLowerCase()),"string"==typeof b&&(b=b.toLowerCase()),a===b?0:b>a?-1:1},b.Column.prototype.sortValue=function(c){if(b.is.element(c)||b.is.jq(c)){var d=a(c).data("sortValue");return b.is.defined(d)?d:this.parser(c)}if(b.is.hash(c)&&b.is.hash(c.options)){if(b.is.string(c.options.sortValue))return c.options.sortValue;b.is.defined(c.value)&&(c=c.value)}return b.is.defined(c)&&null!=c?c:null},b.Column.prototype.__sorting_define__=function(a){this.sorter=b.checkFnValue(this,a.sorter,this.sorter),this.direction=b.is.type(a.direction,"string")?b.Sorting.dir(a.direction):null,this.sortable=b.is["boolean"](a.sortable)?a.sortable:!0,this.sorted=b.is["boolean"](a.sorted)?a.sorted:!1,this.sortValue=b.checkFnValue(this,a.sortValue,this.sortValue)},b.Column.extend("define",function(a){this._super(a),this.__sorting_define__(a)})}(jQuery,FooTable),function(a){a.Defaults.prototype.sorting={enabled:!1}}(FooTable),function(a,b){b.HTMLColumn.extend("__sorting_define__",function(c){this._super(c),this.sortUse=b.is.string(c.sortUse)&&-1!==a.inArray(c.sortUse,["html","text"])?c.sortUse:"html"}),b.HTMLColumn.prototype.sortValue=function(c){if(b.is.element(c)||b.is.jq(c)){var d=a(c).data("sortValue");return b.is.defined(d)?d:this.parser(c)}if(b.is.hash(c)&&b.is.hash(c.options)){if(b.is.string(c.options.sortValue))return c.options.sortValue;b.is.defined(c.value)&&(c=c.value)}return b.is.defined(c)&&null!=c?c:null}}(jQuery,FooTable),function(a,b){b.NumberColumn.prototype.sortValue=function(c){if(b.is.element(c)||b.is.jq(c)){var d=a(c).data("sortValue");return b.is.number(d)?d:this.parser(c)}if(b.is.hash(c)&&b.is.hash(c.options)){if(b.is.string(c.options.sortValue))return this.parser(c);if(b.is.number(c.options.sortValue))return c.options.sortValue;if(b.is.number(c.value))return c.value}return b.is.string(c)?this.parser(c):b.is.number(c)?c:null}}(jQuery,FooTable),function(a){a.Table.prototype.sort=function(b,c){return this.use(a.Sorting).sort(b,c)}}(FooTable); -------------------------------------------------------------------------------- /compiled/footable.state.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * FooTable v3 - FooTable is a jQuery plugin that aims to make HTML tables on smaller devices look awesome. 3 | * @version 3.1.6 4 | * @link http://fooplugins.com 5 | * @copyright Steven Usher & Brad Vincent 2015 6 | * @license Released under the GPLv3 license. 7 | */ 8 | !function(a,b){var c=0,d=function(a){var b,c,d=2166136261;for(b=0,c=a.length;c>b;b++)d^=a.charCodeAt(b),d+=(d<<1)+(d<<4)+(d<<7)+(d<<8)+(d<<24);return d>>>0}(location.origin+location.pathname);b.State=b.Component.extend({construct:function(a){this._super(a,a.o.state.enabled),this._key="1",this.key=this._key+(b.is.string(a.o.state.key)?a.o.state.key:this._uid()),this.filtering=b.is["boolean"](a.o.state.filtering)?a.o.state.filtering:!0,this.paging=b.is["boolean"](a.o.state.paging)?a.o.state.paging:!0,this.sorting=b.is["boolean"](a.o.state.sorting)?a.o.state.sorting:!0},preinit:function(a){var c=this;this.ft.raise("preinit.ft.state",[a]).then(function(){c.enabled=b.is["boolean"](a.state)?a.state:c.enabled,c.enabled&&(c.key=c._key+(b.is.string(a.stateKey)?a.stateKey:c.key),c.filtering=b.is["boolean"](a.stateFiltering)?a.stateFiltering:c.filtering,c.paging=b.is["boolean"](a.statePaging)?a.statePaging:c.paging,c.sorting=b.is["boolean"](a.stateSorting)?a.stateSorting:c.sorting)},function(){c.enabled=!1})},get:function(a){return JSON.parse(localStorage.getItem(this.key+":"+a))},set:function(a,b){localStorage.setItem(this.key+":"+a,JSON.stringify(b))},remove:function(a){localStorage.removeItem(this.key+":"+a)},read:function(){this.ft.execute(!1,!0,"readState")},write:function(){this.ft.execute(!1,!0,"writeState")},clear:function(){this.ft.execute(!1,!0,"clearState")},_uid:function(){var a=this.ft.$el.attr("id");return d+"_"+(b.is.string(a)?a:++c)}}),b.components.register("state",b.State,700)}(jQuery,FooTable),function(a){a.Component.prototype.readState=function(){},a.Component.prototype.writeState=function(){},a.Component.prototype.clearState=function(){}}(FooTable),function(a){a.Defaults.prototype.state={enabled:!1,filtering:!0,paging:!0,sorting:!0,key:null}}(FooTable),function(a){a.Filtering&&(a.Filtering.prototype.readState=function(){if(this.ft.state.filtering){var b=this.ft.state.get("filtering");a.is.hash(b)&&!a.is.emptyArray(b.filters)&&(this.filters=this.ensure(b.filters))}},a.Filtering.prototype.writeState=function(){if(this.ft.state.filtering){var b=a.arr.map(this.filters,function(b){return{name:b.name,query:b.query instanceof a.Query?b.query.val():b.query,columns:a.arr.map(b.columns,function(a){return a.name}),hidden:b.hidden,space:b.space,connectors:b.connectors,ignoreCase:b.ignoreCase}});this.ft.state.set("filtering",{filters:b})}},a.Filtering.prototype.clearState=function(){this.ft.state.filtering&&this.ft.state.remove("filtering")})}(FooTable),function(a){a.Paging&&(a.Paging.prototype.readState=function(){if(this.ft.state.paging){var b=this.ft.state.get("paging");a.is.hash(b)&&(this.current=b.current,this.size=b.size)}},a.Paging.prototype.writeState=function(){this.ft.state.paging&&this.ft.state.set("paging",{current:this.current,size:this.size})},a.Paging.prototype.clearState=function(){this.ft.state.paging&&this.ft.state.remove("paging")})}(FooTable),function(a){a.Sorting&&(a.Sorting.prototype.readState=function(){if(this.ft.state.sorting){var b=this.ft.state.get("sorting");if(a.is.hash(b)){var c=this.ft.columns.get(b.column);c instanceof a.Column&&(this.column=c,this.column.direction=b.direction)}}},a.Sorting.prototype.writeState=function(){this.ft.state.sorting&&this.column instanceof a.Column&&this.ft.state.set("sorting",{column:this.column.name,direction:this.column.direction})},a.Sorting.prototype.clearState=function(){this.ft.state.sorting&&this.ft.state.remove("sorting")})}(FooTable),function(a){a.Table.extend("_construct",function(a){return this.state=this.use(FooTable.State),this._super(a)}),a.Table.extend("_preinit",function(){var a=this;return a._super().then(function(){a.state.enabled&&a.state.read()})}),a.Table.extend("draw",function(){var a=this;return a._super().then(function(){a.state.enabled&&a.state.write()})})}(FooTable); -------------------------------------------------------------------------------- /docs/content/columns.json: -------------------------------------------------------------------------------- 1 | [ 2 | {"name":"id","title":"ID","breakpoints":"xs sm","type":"number","style":{"width":80,"maxWidth":80}}, 3 | {"name":"firstName","title":"First Name"}, 4 | {"name":"lastName","title":"Last Name"}, 5 | {"name":"something","title":"Never seen but always around","visible":false,"filterable":false}, 6 | {"name":"jobTitle","title":"Job Title","breakpoints":"xs sm","style":{"maxWidth":200,"overflow":"hidden","textOverflow":"ellipsis","wordBreak":"keep-all","whiteSpace":"nowrap"}}, 7 | {"name":"started","title":"Started On","type":"date","breakpoints":"xs sm md","formatString":"MMM YYYY"}, 8 | {"name":"dob","title":"Date of Birth","type":"date","breakpoints":"xs sm md","formatString":"DD MMM YYYY"}, 9 | {"name":"status","title":"Status"} 10 | ] -------------------------------------------------------------------------------- /docs/css/docs.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 70px; 3 | padding-bottom: 300px; 4 | } 5 | .anchored { 6 | position: relative; 7 | } 8 | 9 | .anchored span.anchor { 10 | position: absolute; 11 | width: 1px; 12 | height: 1px; 13 | top: -70px; 14 | visibility: hidden; 15 | } 16 | 17 | .docs-section {} 18 | 19 | .docs .tab-content { 20 | padding: 15px; 21 | } 22 | 23 | .callout { 24 | padding: 20px; 25 | margin: 20px 0; 26 | border: 1px solid #eee; 27 | border-left-width: 5px; 28 | border-radius: 3px; 29 | } 30 | .callout-warning { 31 | border-left-color: #aa6708; 32 | } 33 | .callout-warning h4 { 34 | color: #aa6708; 35 | } 36 | .callout-info { 37 | border-left-color: #1b809e; 38 | } 39 | .callout-info h4 { 40 | color: #1b809e; 41 | } 42 | 43 | .docs pre { 44 | word-wrap: normal; 45 | } 46 | .docs code[class*="language-"], 47 | .docs pre[class*="language-"] { 48 | color: inherit; 49 | text-shadow: none; 50 | padding: 0; 51 | } 52 | .docs code[class*="language-"] { 53 | padding: 10px; 54 | } 55 | .docs :not(pre) > code[class*="language-"], 56 | .docs pre[class*="language-"] { 57 | background: #f5f5f5; 58 | } 59 | .docs .token.tab:not(:empty):before, 60 | .docs .token.cr:before, 61 | .docs .token.lf:before { 62 | color: #f5f5f5; 63 | } 64 | 65 | .breakpoint-table td { 66 | text-align: center; 67 | } 68 | .breakpoint-table th small { 69 | display: block; 70 | font-weight: 400; 71 | color: #999; 72 | } 73 | .breakpoint-table td.is-visible { 74 | color: #468847; 75 | background-color: #dff0d8!important; 76 | } 77 | .breakpoint-table td.is-hidden { 78 | color: #ccc; 79 | background-color: #f9f9f9!important; 80 | } 81 | .list li { 82 | margin-bottom: 10px; 83 | } 84 | .list li > a, 85 | .list li > h4 { 86 | display: block; 87 | font-size: 18px; 88 | text-decoration: none; 89 | margin: 0; 90 | } 91 | .list li > small { 92 | display: block; 93 | font-weight: 400; 94 | color: #999; 95 | text-decoration: none; 96 | margin-top: 5px; 97 | } 98 | .example { 99 | position: relative; 100 | padding: 45px 15px 15px; 101 | margin-right: 0; 102 | margin-left: 0; 103 | margin-bottom: 30px; 104 | background-color: #fff; 105 | border: solid 1px #ddd; 106 | border-radius: 4px 4px 0 0; 107 | -webkit-box-shadow: none; 108 | box-shadow: none; 109 | } 110 | .example:after { 111 | position: absolute; 112 | top: 15px; 113 | left: 15px; 114 | font-size: 12px; 115 | font-weight: 700; 116 | color: #959595; 117 | text-transform: uppercase; 118 | letter-spacing: 1px; 119 | } 120 | 121 | .example:after { content: "Example"; } 122 | .example.plural:after { content: "Examples"; } 123 | .example.default:after { content: "Default"; } 124 | .example.returns:after { content: "Returns"; } 125 | .example.params:after { content: "Parameters"; } 126 | .example.supports:after { content: "Supports"; } 127 | .example.static:after { content: "Static Example"; } 128 | .example.static.plural:after { content: "Static Examples"; } 129 | .example.javascript:after { content: "JavaScript Example"; } 130 | .example.javascript.plural:after { content: "JavaScript Examples"; } 131 | 132 | .example+table, 133 | .example+pre+table, 134 | .example+pre.between, 135 | .example+table.between, 136 | .example+pre, 137 | .example+pre+pre { 138 | margin-top: -31px; 139 | margin-right: 0; 140 | margin-left: 0; 141 | border-width: 1px; 142 | } 143 | .example+table, 144 | .example+pre+table, 145 | .example+pre, 146 | .example+pre+pre { 147 | border-top-right-radius: 0; 148 | border-top-left-radius: 0; 149 | margin-bottom: 30px; 150 | } 151 | .example+table.between, 152 | .example+pre.between { 153 | border-radius: 0; 154 | } 155 | 156 | .examples { 157 | margin-bottom: 30px; 158 | } 159 | .examples > .example, 160 | .examples > table, 161 | .examples > div.list-group, 162 | .examples > pre, 163 | .examples > p { 164 | border: solid 1px #ddd; 165 | border-radius: 0; 166 | margin: -1px 0 0 0 !important; 167 | } 168 | .examples > div.list-group, 169 | .examples > pre, 170 | .examples > p { 171 | padding: 15px; 172 | } 173 | .examples > .example:first-child, 174 | .examples > table:first-child, 175 | .examples > div.list-group:first-child, 176 | .examples > pre:first-child, 177 | .examples > p:first-child { 178 | border-top-right-radius: 4px; 179 | border-top-left-radius: 4px; 180 | } 181 | .examples > .example:last-child, 182 | .examples > table:last-child, 183 | .examples > div.list-group:last-child, 184 | .examples > pre:last-child, 185 | .examples > p:last-child { 186 | border-bottom-right-radius: 4px; 187 | border-bottom-left-radius: 4px; 188 | } 189 | 190 | 191 | .docs-option { 192 | margin-bottom: 30px; 193 | } 194 | .docs-option > .docs-section { 195 | margin-left: 30px; 196 | } 197 | 198 | .list-group-detailed.child { 199 | margin-left: 30px; 200 | } 201 | .list-group-detailed.grand-child { 202 | margin-left: 60px; 203 | } 204 | .list-group-header { 205 | border: solid 1px #ddd; 206 | border-bottom: none; 207 | border-top-left-radius: 4px; 208 | border-top-right-radius: 4px; 209 | margin: 0; 210 | padding: 10px 15px; 211 | font-size: 20px; 212 | text-shadow: 0 -1px 0 #286090; 213 | background-image: -webkit-linear-gradient(top,#337ab7 0,#2b669a 100%); 214 | background-image: -o-linear-gradient(top,#337ab7 0,#2b669a 100%); 215 | background-image: -webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a)); 216 | background-image: linear-gradient(to bottom,#337ab7 0,#2b669a 100%); 217 | filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0); 218 | background-repeat: repeat-x; 219 | border-color: #2b669a; 220 | color: #fff; 221 | background-color: #337ab7; 222 | } 223 | .list-group-header small { 224 | display: block; 225 | color: #FFF; 226 | margin-top: 5px; 227 | } 228 | .list-group-detail { 229 | border: solid 1px #ddd; 230 | border-bottom: none; 231 | border-top: none; 232 | border-radius: 0; 233 | padding: 0; 234 | margin: 0; 235 | max-height: 0; 236 | overflow: hidden; 237 | } 238 | .list-group-detail:last-child { 239 | border-bottom: solid 1px #ddd; 240 | border-bottom-left-radius: 4px; 241 | border-bottom-right-radius: 4px; 242 | } 243 | .list-group-detail.transitions { 244 | transition: all 0.5s ease-in-out; 245 | -webkit-transition: all 0.5s ease-in-out; 246 | -moz-transition: all 0.5s ease-in-out; 247 | } 248 | .list-group-detail-inner { 249 | overflow:auto; 250 | padding: 20px; 251 | } 252 | 253 | .align-center { 254 | text-align: center; 255 | } 256 | 257 | @media screen and (min-width: 480px) { 258 | .container .jumbotron, .container-fluid .jumbotron { 259 | padding-right: 30px; 260 | padding-left: 30px; 261 | } 262 | } -------------------------------------------------------------------------------- /docs/css/index.css: -------------------------------------------------------------------------------- 1 | html, body { 2 | width: 100%; 3 | height: 100%; 4 | margin: 0; 5 | padding: 0; 6 | background-color: #d9d9d9; 7 | color: #222; 8 | font: 400 14px/22px "merriweather"; 9 | } 10 | #links { 11 | width: 100%; 12 | height: 40px; 13 | background-color: #2C3E50; 14 | color: #ffffff; 15 | } 16 | #links > a { 17 | color: #AFAFAF; 18 | text-decoration: none; 19 | display: inline-block; 20 | margin: 10px 10px; 21 | transition: color 0.3s ease-in; 22 | } 23 | #links > a:hover { 24 | color: #ffffff; 25 | } 26 | #header { 27 | width: 100%; 28 | height: 565px; 29 | text-align: center; 30 | } 31 | #header.demo { 32 | width: 100%; 33 | height: 100px; 34 | text-align: center; 35 | } 36 | #header > img { 37 | margin-top: 40px; 38 | } 39 | #header > h1 { 40 | font: bold 100px/1 "oswald"; 41 | margin: 40px 0 20px 0; 42 | } 43 | #header > h2 { 44 | font: bold 48px/1 "oswald"; 45 | margin: 10px 0; 46 | } 47 | #header.demo > h2 { 48 | margin: 40px 0 20px 0; 49 | } 50 | #header > h3 { 51 | font: normal 14px/16px "pt mono"; 52 | } 53 | #content { 54 | width: 80%; 55 | margin: 0 auto; 56 | } 57 | #content > h1 { 58 | font: 700 30px/34px "pt sans narrow"; 59 | } 60 | #content > h2 { 61 | font: 700 22px/26px "pt sans"; 62 | } 63 | #content > h3 { 64 | font: 700 18px/22px "pt sans"; 65 | } 66 | #content > ul { 67 | list-style-type: disc; 68 | } 69 | #content a { 70 | text-decoration: none; 71 | color: #525986; 72 | } 73 | #content a:hover { 74 | text-decoration: underline; 75 | } 76 | #content pre { 77 | background-color: #ffffff; 78 | padding: 0; 79 | border-radius: 6px; 80 | } 81 | #content pre > code { 82 | padding: 10px; 83 | } 84 | #content pre > code > .token.tab:not(:empty):before, 85 | #content pre > code > .token.cr:before, 86 | #content pre > code > .token.lf:before { 87 | color: #ffffff; 88 | } 89 | #footer { 90 | width: 100%; 91 | height: 300px; 92 | background-color: #2C3E50; 93 | margin-top: 100px; 94 | color: #ffffff; 95 | } 96 | #share-buttons { 97 | text-align: center; 98 | } 99 | 100 | #share-buttons img { 101 | width: 35px; 102 | padding: 5px; 103 | border: 0; 104 | box-shadow: 0; 105 | display: inline; 106 | } -------------------------------------------------------------------------------- /docs/css/prism.css: -------------------------------------------------------------------------------- 1 | /* http://prismjs.com/download.html?themes=prism&languages=markup+css+css-extras+clike+javascript+java+php+php-extras+coffeescript+scss+bash+c+cpp+python+sql+groovy+http+ruby+gherkin+csharp+go+nsis+aspnet&plugins=line-highlight+line-numbers+show-invisibles+autolinker+wpd+file-highlight+show-language */ 2 | /** 3 | * prism.js default theme for JavaScript, CSS and HTML 4 | * Based on dabblet (http://dabblet.com) 5 | * @author Lea Verou 6 | */ 7 | 8 | code[class*="language-"], 9 | pre[class*="language-"] { 10 | color: black; 11 | text-shadow: 0 1px white; 12 | font-family: Consolas, Monaco, 'Andale Mono', monospace; 13 | direction: ltr; 14 | text-align: left; 15 | white-space: pre; 16 | word-spacing: normal; 17 | word-break: normal; 18 | 19 | 20 | -moz-tab-size: 4; 21 | -o-tab-size: 4; 22 | tab-size: 4; 23 | 24 | -webkit-hyphens: none; 25 | -moz-hyphens: none; 26 | -ms-hyphens: none; 27 | hyphens: none; 28 | } 29 | 30 | pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, 31 | code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { 32 | text-shadow: none; 33 | background: #b3d4fc; 34 | } 35 | 36 | pre[class*="language-"]::selection, pre[class*="language-"] ::selection, 37 | code[class*="language-"]::selection, code[class*="language-"] ::selection { 38 | text-shadow: none; 39 | background: #b3d4fc; 40 | } 41 | 42 | @media print { 43 | code[class*="language-"], 44 | pre[class*="language-"] { 45 | text-shadow: none; 46 | } 47 | } 48 | 49 | /* Code blocks */ 50 | pre[class*="language-"] { 51 | padding: 1em; 52 | margin: .5em 0; 53 | overflow: auto; 54 | } 55 | 56 | :not(pre) > code[class*="language-"], 57 | pre[class*="language-"] { 58 | background: #f5f2f0; 59 | } 60 | 61 | /* Inline code */ 62 | :not(pre) > code[class*="language-"] { 63 | padding: .1em; 64 | border-radius: .3em; 65 | } 66 | 67 | .token.comment, 68 | .token.prolog, 69 | .token.doctype, 70 | .token.cdata { 71 | color: slategray; 72 | } 73 | 74 | .token.punctuation { 75 | color: #999; 76 | } 77 | 78 | .namespace { 79 | opacity: .7; 80 | } 81 | 82 | .token.property, 83 | .token.tag, 84 | .token.boolean, 85 | .token.number, 86 | .token.constant, 87 | .token.symbol { 88 | color: #905; 89 | } 90 | 91 | .token.selector, 92 | .token.attr-name, 93 | .token.string, 94 | .token.builtin { 95 | color: #690; 96 | } 97 | 98 | .token.operator, 99 | .token.entity, 100 | .token.url, 101 | .language-css .token.string, 102 | .style .token.string, 103 | .token.variable { 104 | color: #a67f59; 105 | background: hsla(0,0%,100%,.5); 106 | } 107 | 108 | .token.atrule, 109 | .token.attr-value, 110 | .token.keyword { 111 | color: #07a; 112 | } 113 | 114 | 115 | .token.regex, 116 | .token.important { 117 | color: #e90; 118 | } 119 | 120 | .token.important { 121 | font-weight: bold; 122 | } 123 | 124 | .token.entity { 125 | cursor: help; 126 | } 127 | 128 | pre[data-line] { 129 | position: relative; 130 | padding: 1em 0 1em 3em; 131 | } 132 | 133 | .line-highlight { 134 | position: absolute; 135 | left: 0; 136 | right: 0; 137 | padding: inherit 0; 138 | margin-top: 1em; /* Same as .prism’s padding-top */ 139 | 140 | background: hsla(24, 20%, 50%,.08); 141 | background: -moz-linear-gradient(left, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0)); 142 | background: -webkit-linear-gradient(left, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0)); 143 | background: -o-linear-gradient(left, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0)); 144 | background: linear-gradient(left, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0)); 145 | 146 | pointer-events: none; 147 | 148 | line-height: inherit; 149 | white-space: pre; 150 | } 151 | 152 | .line-highlight:before, 153 | .line-highlight[data-end]:after { 154 | content: attr(data-start); 155 | position: absolute; 156 | top: .4em; 157 | left: .6em; 158 | min-width: 1em; 159 | padding: 0 .5em; 160 | background-color: hsla(24, 20%, 50%,.4); 161 | color: hsl(24, 20%, 95%); 162 | font: bold 65%/1.5 sans-serif; 163 | text-align: center; 164 | vertical-align: .3em; 165 | border-radius: 999px; 166 | text-shadow: none; 167 | box-shadow: 0 1px white; 168 | } 169 | 170 | .line-highlight[data-end]:after { 171 | content: attr(data-end); 172 | top: auto; 173 | bottom: .4em; 174 | } 175 | pre.line-numbers { 176 | position: relative; 177 | padding-left: 3.8em; 178 | counter-reset: linenumber; 179 | } 180 | 181 | pre.line-numbers > code { 182 | position: relative; 183 | } 184 | 185 | .line-numbers .line-numbers-rows { 186 | position: absolute; 187 | pointer-events: none; 188 | top: 0; 189 | font-size: 100%; 190 | left: -3.8em; 191 | width: 3em; /* works for line-numbers below 1000 lines */ 192 | letter-spacing: -1px; 193 | border-right: 1px solid #999; 194 | 195 | -webkit-user-select: none; 196 | -moz-user-select: none; 197 | -ms-user-select: none; 198 | user-select: none; 199 | 200 | } 201 | 202 | .line-numbers-rows > span { 203 | pointer-events: none; 204 | display: block; 205 | counter-increment: linenumber; 206 | } 207 | 208 | .line-numbers-rows > span:before { 209 | content: counter(linenumber); 210 | color: #999; 211 | display: block; 212 | padding-right: 0.8em; 213 | text-align: right; 214 | } 215 | .token.tab:not(:empty):before, 216 | .token.cr:before, 217 | .token.lf:before { 218 | color: hsl(24, 20%, 85%); 219 | } 220 | 221 | .token.tab:not(:empty):before { 222 | content: 'â–¸'; 223 | } 224 | 225 | .token.cr:before { 226 | content: '␍'; 227 | } 228 | 229 | .token.lf:before { 230 | content: '␊'; 231 | } 232 | .token a { 233 | color: inherit; 234 | } 235 | code[class*="language-"] a[href], 236 | pre[class*="language-"] a[href] { 237 | cursor: help; 238 | text-decoration: none; 239 | } 240 | 241 | code[class*="language-"] a[href]:hover, 242 | pre[class*="language-"] a[href]:hover { 243 | cursor: help; 244 | text-decoration: underline; 245 | } 246 | pre[class*='language-'] { 247 | position: relative; 248 | } 249 | pre[class*='language-'] > code[data-language] { 250 | overflow: auto; 251 | max-height: 28em; 252 | display: block; 253 | } 254 | pre[class*='language-'] > code[data-language]::before { 255 | content: attr(data-language); 256 | color: black; 257 | background-color: #CFCFCF; 258 | display: inline-block; 259 | position: absolute; 260 | top: 0; 261 | right: 0; 262 | font-size: 0.9em; 263 | border-radius: 0 0 0 5px; 264 | padding: 0 0.5em; 265 | text-shadow: none; 266 | } -------------------------------------------------------------------------------- /docs/examples/bootstrap/collapse.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Collapse - FooTable 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 33 | 34 | 35 | 36 | 37 | 38 | 70 | 71 |
72 | 73 |
74 |

Collapse

75 |

Shows using FooTable with Bootstraps' collapse component.

76 |
77 | 78 |
79 | 80 |
81 |
82 | 83 |
84 |

Notes

85 |
    86 |
  • This example makes use of Bootstraps' collapse component.
  • 87 |
  • 88 | The base table in the example below is a clone of the showcase example to demonstrate that various table operations 89 | such as filtering, sorting, paging still function correctly. 90 |
  • 91 |
92 |
93 | 94 |
95 | 98 |
99 |
100 |
101 |
102 |
jQuery(function($){
103 | 	$('#collapse-example-1').footable({
104 | 		"columns": $.get('columns.json'),
105 | 		"rows": $.get('rows.json')
106 | 	});
107 | });
108 |
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
109 | 	Click to toggle
110 | </button>
111 | <div class="collapse" id="collapseExample">
112 | 	<table id="collapse-example-1" class="table" data-paging="true" data-filtering="true" data-sorting="true"></table>
113 | </div>
114 | 115 |
116 | 117 |
118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 138 | 139 | -------------------------------------------------------------------------------- /docs/examples/component/paging.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Paging rows - FooTable 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 33 | 34 | 35 | 36 | 37 | 38 | 70 | 71 |
72 | 73 |
74 |

Paging rows

75 |

How to create a table that uses the paging component.

76 |
77 | 78 |
79 | 80 |
81 |
82 | 83 |
84 |

Notes

85 |
    86 |
  • 87 | We make use of two static files (columns.json and rows.json) 88 | to supply the below examples data. 89 |
  • 90 |
  • 91 | Using the paging component drastically improves the performance of the plugin on large numbers of rows. 92 |
  • 93 |
94 |
95 | 96 |

97 | To enable paging on a table the only option that must be set is the enabled option with a value of true, 98 | all other options for the component will fall back to there defaults if not supplied. 99 | See the paging component documentation for a list of all available options. 100 |

101 | 102 |
103 |
104 |
105 |
jQuery(function($){
106 | 	$('.table').footable({
107 | 		"columns": $.get('columns.json'),
108 | 		"rows": $.get('rows.json')
109 | 	});
110 | });
111 |
<table class="table" data-paging="true"></table>
112 | 113 |
114 | 115 |
116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 136 | 137 | -------------------------------------------------------------------------------- /docs/js/docs.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | 3 | $(function(){ 4 | 5 | $('.list-group-detailed') 6 | .children('.list-group-detail').on('transitionEnd webkitTransitionEnd transitionend oTransitionEnd msTransitionEnd', function(){ 7 | var $this = $(this); 8 | if($this.hasClass('active')){ 9 | $this.css('max-height', 9999); 10 | } 11 | }).end() 12 | .children('.list-group-item').on('click', function(e){ 13 | e.preventDefault(); 14 | var $item = $(this), $detail = $item.next(); 15 | if ($detail.hasClass('list-group-detail')){ 16 | $item.add($detail).toggleClass('active'); 17 | $detail.contentHeight = $detail.outerHeight(); 18 | if ($detail.hasClass('active')){ 19 | $detail.contentHeight += $detail.children('.list-group-detail-inner').outerHeight(); 20 | $detail.addClass('transitions').css({ 21 | 'max-height': $detail.contentHeight 22 | }); 23 | } else { 24 | $detail.removeClass('transitions').css('max-height', $detail.contentHeight); 25 | setTimeout(function(){ 26 | $detail.addClass('transitions').css({ 27 | 'max-height': 0 28 | }); 29 | }, 10); 30 | } 31 | } 32 | }); 33 | 34 | }); 35 | 36 | })(jQuery); -------------------------------------------------------------------------------- /docs/js/ie10-viewport-bug-workaround.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * IE10 viewport hack for Surface/desktop Windows 8 bug 3 | * Copyright 2014-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | 7 | // See the Getting Started docs for more information: 8 | // http://getbootstrap.com/getting-started/#support-ie10-width 9 | 10 | (function () { 11 | 'use strict'; 12 | 13 | if (navigator.userAgent.match(/IEMobile\/10\.0/)) { 14 | var msViewportStyle = document.createElement('style'); 15 | msViewportStyle.appendChild( 16 | document.createTextNode( 17 | '@-ms-viewport{width:auto!important}' 18 | ) 19 | ); 20 | document.querySelector('head').appendChild(msViewportStyle); 21 | } 22 | 23 | })(); -------------------------------------------------------------------------------- /docs/jsdocs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fooplugins/FooTable/fba11d1d8ad4eb61913c7538b26283eab2d9d777/docs/jsdocs/favicon.ico -------------------------------------------------------------------------------- /docs/jsdocs/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fooplugins/FooTable/fba11d1d8ad4eb61913c7538b26283eab2d9d777/docs/jsdocs/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /docs/jsdocs/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fooplugins/FooTable/fba11d1d8ad4eb61913c7538b26283eab2d9d777/docs/jsdocs/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /docs/jsdocs/img/old-wall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fooplugins/FooTable/fba11d1d8ad4eb61913c7538b26283eab2d9d777/docs/jsdocs/img/old-wall.png -------------------------------------------------------------------------------- /docs/jsdocs/scripts/bootstrap-dropdown.js: -------------------------------------------------------------------------------- 1 | /* ============================================================ 2 | * bootstrap-dropdown.js v2.3.2 3 | * http://getbootstrap.com/2.3.2/javascript.html#dropdowns 4 | * ============================================================ 5 | * Copyright 2013 Twitter, Inc. 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * ============================================================ */ 19 | 20 | 21 | !function ($) { 22 | 23 | "use strict"; // jshint ;_; 24 | 25 | 26 | /* DROPDOWN CLASS DEFINITION 27 | * ========================= */ 28 | 29 | var toggle = '[data-toggle=dropdown]' 30 | , Dropdown = function (element) { 31 | var $el = $(element).on('click.dropdown.data-api', this.toggle) 32 | $('html').on('click.dropdown.data-api', function () { 33 | $el.parent().removeClass('open') 34 | }) 35 | } 36 | 37 | Dropdown.prototype = { 38 | 39 | constructor: Dropdown 40 | 41 | , toggle: function (e) { 42 | var $this = $(this) 43 | , $parent 44 | , isActive 45 | 46 | if ($this.is('.disabled, :disabled')) return 47 | 48 | $parent = getParent($this) 49 | 50 | isActive = $parent.hasClass('open') 51 | 52 | clearMenus() 53 | 54 | if (!isActive) { 55 | if ('ontouchstart' in document.documentElement) { 56 | // if mobile we we use a backdrop because click events don't delegate 57 | $('