Merge pull request #4824 from FHenry/dev_jquery
Last version of JQuery 1.12 and DataTables Componenent with working
This commit is contained in:
commit
b29b5fa71d
4548
htdocs/includes/jquery/js/jquery.js
vendored
4548
htdocs/includes/jquery/js/jquery.js
vendored
File diff suppressed because it is too large
Load Diff
10
htdocs/includes/jquery/js/jquery.min.js
vendored
10
htdocs/includes/jquery/js/jquery.min.js
vendored
File diff suppressed because one or more lines are too long
@ -11,9 +11,15 @@ To meet this goal, DataTables is developed with two distinct groups of users in
|
||||
* End users. For those using the interface DataTables presents, actions to get the most from the information contained in tables, such as sorting and filtering, along with paging and scrolling of the data in table, are easy to use, intuitive and fast.
|
||||
|
||||
|
||||
## Installation
|
||||
## Installing DataTables
|
||||
|
||||
In most cases, to use DataTables all you need to do is include jQuery, the DataTables Javascript and DataTables CSS files in your HTML page. See the [DataTables manual](http://datatables.net/manual/installation#Including-Javascript-/-CSS) for details on how to do this using the latest version of DataTables.
|
||||
To use DataTables, the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](//datatables.net/manual/installation) for full details.
|
||||
|
||||
### NPM and Bower
|
||||
|
||||
If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name.
|
||||
|
||||
Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables.
|
||||
|
||||
|
||||
## Usage
|
||||
@ -40,7 +46,7 @@ A full list of the options available for DataTables are available in the [docume
|
||||
|
||||
## Documentation
|
||||
|
||||
Full documentation of the DataTables options, API and pug-in interface are available on the [DataTables web-site](//datatables.net). The site also contains information on the wide variety of plug-ins that are available for DataTables, which can be used to enhance and customise your table even further.
|
||||
Full documentation of the DataTables options, API and plug-in interface are available on the [DataTables web-site](//datatables.net). The site also contains information on the wide variety of plug-ins that are available for DataTables, which can be used to enhance and customise your table even further.
|
||||
|
||||
|
||||
## Support
|
||||
|
||||
@ -0,0 +1,22 @@
|
||||
MIT license
|
||||
|
||||
Copyright (c) 2008-2015 SpryMedia Limited
|
||||
http://datatables.net
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@ -0,0 +1,39 @@
|
||||
# AutoFill
|
||||
|
||||
AutoFill adds an Excel data fill like option to a DataTable to click and drag over multiple cells, filling in information over the selected cells and incrementing numbers as needed.
|
||||
|
||||
|
||||
# Installation
|
||||
|
||||
To use AutoFill the best way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/autofill/) for full details.
|
||||
|
||||
## NPM and Bower
|
||||
|
||||
If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-autofill`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name.
|
||||
|
||||
Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables.
|
||||
|
||||
|
||||
# Basic usage
|
||||
|
||||
AutoFill is initialised using the `autoFill` option in the DataTables constructor. Further options can be specified using this option as an object - see the documentation for details. For example:
|
||||
|
||||
```js
|
||||
$(document).ready( function () {
|
||||
$('#example').DataTable( {
|
||||
autoFill: true
|
||||
} );
|
||||
} );
|
||||
```
|
||||
|
||||
|
||||
# Documentation / support
|
||||
|
||||
* [Documentation](https://datatables.net/extensions/autofill/)
|
||||
* [DataTables support forums](http://datatables.net/forums)
|
||||
|
||||
|
||||
# GitHub
|
||||
|
||||
If you fancy getting involved with the development of AutoFill and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/AutoFill)
|
||||
|
||||
@ -0,0 +1,81 @@
|
||||
div.dt-autofill-handle {
|
||||
position: absolute;
|
||||
height: 8px;
|
||||
width: 8px;
|
||||
z-index: 102;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid #337ab7;
|
||||
background: #337ab7;
|
||||
}
|
||||
|
||||
div.dt-autofill-select {
|
||||
position: absolute;
|
||||
z-index: 1001;
|
||||
background-color: #337ab7;
|
||||
background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px);
|
||||
}
|
||||
div.dt-autofill-select.top, div.dt-autofill-select.bottom {
|
||||
height: 3px;
|
||||
margin-top: -1px;
|
||||
}
|
||||
div.dt-autofill-select.left, div.dt-autofill-select.right {
|
||||
width: 3px;
|
||||
margin-left: -1px;
|
||||
}
|
||||
|
||||
div.dt-autofill-list {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 500px;
|
||||
margin-left: -250px;
|
||||
background-color: white;
|
||||
border-radius: 6px;
|
||||
box-shadow: 0 0 5px #555;
|
||||
border: 2px solid #444;
|
||||
z-index: 11;
|
||||
box-sizing: border-box;
|
||||
padding: 1.5em 2em;
|
||||
}
|
||||
div.dt-autofill-list ul {
|
||||
display: table;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
width: 100%;
|
||||
}
|
||||
div.dt-autofill-list ul li {
|
||||
display: table-row;
|
||||
}
|
||||
div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button {
|
||||
border-bottom: none;
|
||||
}
|
||||
div.dt-autofill-list ul li:hover {
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
div.dt-autofill-list div.dt-autofill-question {
|
||||
display: table-cell;
|
||||
padding: 0.5em 0;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
div.dt-autofill-list div.dt-autofill-question input[type=number] {
|
||||
padding: 6px;
|
||||
width: 30px;
|
||||
margin: -2px 0;
|
||||
}
|
||||
div.dt-autofill-list div.dt-autofill-button {
|
||||
display: table-cell;
|
||||
padding: 0.5em 0;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
|
||||
div.dt-autofill-background {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
|
||||
z-index: 10;
|
||||
}
|
||||
1
htdocs/includes/jquery/plugins/datatables/extensions/AutoFill/css/autoFill.bootstrap.min.css
vendored
Normal file
1
htdocs/includes/jquery/plugins/datatables/extensions/AutoFill/css/autoFill.bootstrap.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;border:1px solid #337ab7;background:#337ab7}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#337ab7;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10}
|
||||
@ -0,0 +1,92 @@
|
||||
div.dt-autofill-handle {
|
||||
position: absolute;
|
||||
height: 8px;
|
||||
width: 8px;
|
||||
z-index: 102;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid #316ad1;
|
||||
background: linear-gradient(to bottom, #abcffb 0%, #4989de 100%);
|
||||
}
|
||||
|
||||
div.dt-autofill-select {
|
||||
position: absolute;
|
||||
z-index: 1001;
|
||||
background-color: #4989de;
|
||||
background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px);
|
||||
}
|
||||
div.dt-autofill-select.top, div.dt-autofill-select.bottom {
|
||||
height: 3px;
|
||||
margin-top: -1px;
|
||||
}
|
||||
div.dt-autofill-select.left, div.dt-autofill-select.right {
|
||||
width: 3px;
|
||||
margin-left: -1px;
|
||||
}
|
||||
|
||||
div.dt-autofill-list {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 500px;
|
||||
margin-left: -250px;
|
||||
background-color: white;
|
||||
border-radius: 6px;
|
||||
box-shadow: 0 0 5px #555;
|
||||
border: 2px solid #444;
|
||||
z-index: 11;
|
||||
box-sizing: border-box;
|
||||
padding: 1.5em 2em;
|
||||
}
|
||||
div.dt-autofill-list ul {
|
||||
display: table;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
width: 100%;
|
||||
}
|
||||
div.dt-autofill-list ul li {
|
||||
display: table-row;
|
||||
}
|
||||
div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button {
|
||||
border-bottom: none;
|
||||
}
|
||||
div.dt-autofill-list ul li:hover {
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
div.dt-autofill-list div.dt-autofill-question {
|
||||
display: table-cell;
|
||||
padding: 0.5em 0;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
div.dt-autofill-list div.dt-autofill-question input[type=number] {
|
||||
padding: 6px;
|
||||
width: 30px;
|
||||
margin: -2px 0;
|
||||
}
|
||||
div.dt-autofill-list div.dt-autofill-button {
|
||||
display: table-cell;
|
||||
padding: 0.5em 0;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
div.dt-autofill-list div.dt-autofill-button button {
|
||||
color: white;
|
||||
margin: 0;
|
||||
padding: 6px 12px;
|
||||
text-align: center;
|
||||
border: 1px solid #2e6da4;
|
||||
background-color: #337ab7;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
div.dt-autofill-background {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
|
||||
z-index: 10;
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;border:1px solid #316ad1;background:linear-gradient(to bottom, #abcffb 0%, #4989de 100%)}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#4989de;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-button button{color:white;margin:0;padding:6px 12px;text-align:center;border:1px solid #2e6da4;background-color:#337ab7;border-radius:4px;cursor:pointer;vertical-align:middle}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10}
|
||||
@ -0,0 +1,85 @@
|
||||
div.dt-autofill-handle {
|
||||
position: absolute;
|
||||
height: 8px;
|
||||
width: 8px;
|
||||
z-index: 102;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid #008CBA;
|
||||
background: #008CBA;
|
||||
}
|
||||
|
||||
div.dt-autofill-select {
|
||||
position: absolute;
|
||||
z-index: 1001;
|
||||
background-color: #008CBA;
|
||||
background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px);
|
||||
}
|
||||
div.dt-autofill-select.top, div.dt-autofill-select.bottom {
|
||||
height: 3px;
|
||||
margin-top: -1px;
|
||||
}
|
||||
div.dt-autofill-select.left, div.dt-autofill-select.right {
|
||||
width: 3px;
|
||||
margin-left: -1px;
|
||||
}
|
||||
|
||||
div.dt-autofill-list {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 500px;
|
||||
margin-left: -250px;
|
||||
background-color: white;
|
||||
border-radius: 6px;
|
||||
box-shadow: 0 0 5px #555;
|
||||
border: 2px solid #444;
|
||||
z-index: 11;
|
||||
box-sizing: border-box;
|
||||
padding: 1.5em 2em;
|
||||
}
|
||||
div.dt-autofill-list ul {
|
||||
display: table;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
width: 100%;
|
||||
}
|
||||
div.dt-autofill-list ul li {
|
||||
display: table-row;
|
||||
}
|
||||
div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button {
|
||||
border-bottom: none;
|
||||
}
|
||||
div.dt-autofill-list ul li:hover {
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
div.dt-autofill-list div.dt-autofill-question {
|
||||
display: table-cell;
|
||||
padding: 0.5em 0;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
div.dt-autofill-list div.dt-autofill-question input[type=number] {
|
||||
padding: 6px;
|
||||
width: 30px;
|
||||
margin: -2px 0;
|
||||
}
|
||||
div.dt-autofill-list div.dt-autofill-button {
|
||||
display: table-cell;
|
||||
padding: 0.5em 0;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
|
||||
div.dt-autofill-background {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
div.dt-autofill-list button {
|
||||
margin: 0;
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;border:1px solid #008CBA;background:#008CBA}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#008CBA;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10}div.dt-autofill-list button{margin:0}
|
||||
@ -0,0 +1,85 @@
|
||||
div.dt-autofill-handle {
|
||||
position: absolute;
|
||||
height: 8px;
|
||||
width: 8px;
|
||||
z-index: 102;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid #316ad1;
|
||||
background: linear-gradient(to bottom, #abcffb 0%, #4989de 100%);
|
||||
}
|
||||
|
||||
div.dt-autofill-select {
|
||||
position: absolute;
|
||||
z-index: 1001;
|
||||
background-color: #4989de;
|
||||
background-image: repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px);
|
||||
}
|
||||
div.dt-autofill-select.top, div.dt-autofill-select.bottom {
|
||||
height: 3px;
|
||||
margin-top: -1px;
|
||||
}
|
||||
div.dt-autofill-select.left, div.dt-autofill-select.right {
|
||||
width: 3px;
|
||||
margin-left: -1px;
|
||||
}
|
||||
|
||||
div.dt-autofill-list {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 500px;
|
||||
margin-left: -250px;
|
||||
background-color: white;
|
||||
border-radius: 6px;
|
||||
box-shadow: 0 0 5px #555;
|
||||
border: 2px solid #444;
|
||||
z-index: 11;
|
||||
box-sizing: border-box;
|
||||
padding: 1.5em 2em;
|
||||
}
|
||||
div.dt-autofill-list ul {
|
||||
display: table;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
width: 100%;
|
||||
}
|
||||
div.dt-autofill-list ul li {
|
||||
display: table-row;
|
||||
}
|
||||
div.dt-autofill-list ul li:last-child div.dt-autofill-question, div.dt-autofill-list ul li:last-child div.dt-autofill-button {
|
||||
border-bottom: none;
|
||||
}
|
||||
div.dt-autofill-list ul li:hover {
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
div.dt-autofill-list div.dt-autofill-question {
|
||||
display: table-cell;
|
||||
padding: 0.5em 0;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
div.dt-autofill-list div.dt-autofill-question input[type=number] {
|
||||
padding: 6px;
|
||||
width: 30px;
|
||||
margin: -2px 0;
|
||||
}
|
||||
div.dt-autofill-list div.dt-autofill-button {
|
||||
display: table-cell;
|
||||
padding: 0.5em 0;
|
||||
border-bottom: 1px solid #ccc;
|
||||
}
|
||||
|
||||
div.dt-autofill-background {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
div.dt-autofill-list button {
|
||||
padding: 0.35em 1em;
|
||||
}
|
||||
1
htdocs/includes/jquery/plugins/datatables/extensions/AutoFill/css/autoFill.jqueryui.min.css
vendored
Normal file
1
htdocs/includes/jquery/plugins/datatables/extensions/AutoFill/css/autoFill.jqueryui.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
div.dt-autofill-handle{position:absolute;height:8px;width:8px;z-index:102;box-sizing:border-box;border:1px solid #316ad1;background:linear-gradient(to bottom, #abcffb 0%, #4989de 100%)}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#4989de;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255,255,255,0.5) 5px, rgba(255,255,255,0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:6px;box-shadow:0 0 5px #555;border:2px solid #444;z-index:11;box-sizing:border-box;padding:1.5em 2em}div.dt-autofill-list ul{display:table;margin:0;padding:0;list-style:none;width:100%}div.dt-autofill-list ul li{display:table-row}div.dt-autofill-list ul li:last-child div.dt-autofill-question,div.dt-autofill-list ul li:last-child div.dt-autofill-button{border-bottom:none}div.dt-autofill-list ul li:hover{background-color:#f6f6f6}div.dt-autofill-list div.dt-autofill-question{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:30px;margin:-2px 0}div.dt-autofill-list div.dt-autofill-button{display:table-cell;padding:0.5em 0;border-bottom:1px solid #ccc}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:10}div.dt-autofill-list button{padding:0.35em 1em}
|
||||
@ -0,0 +1,43 @@
|
||||
/*! Bootstrap integration for DataTables' AutoFill
|
||||
* ©2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net-bs', 'datatables.net-autofill'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
$ = require('datatables.net-bs')(root, $).$;
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.AutoFill ) {
|
||||
require('datatables.net-autofill')(root, $);
|
||||
}
|
||||
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
DataTable.AutoFill.classes.btn = 'btn btn-primary';
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
5
htdocs/includes/jquery/plugins/datatables/extensions/AutoFill/js/autoFill.bootstrap.min.js
vendored
Normal file
5
htdocs/includes/jquery/plugins/datatables/extensions/AutoFill/js/autoFill.bootstrap.min.js
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
/*!
|
||||
Bootstrap integration for DataTables' AutoFill
|
||||
©2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-autofill"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);if(!c||!c.fn.dataTable)c=require("datatables.net-bs")(b,c).$;c.fn.dataTable.AutoFill||require("datatables.net-autofill")(b,c);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a){a=a.fn.dataTable;a.AutoFill.classes.btn="btn btn-primary";return a});
|
||||
@ -0,0 +1,43 @@
|
||||
/*! Foundation integration for DataTables' AutoFill
|
||||
* ©2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net-zf', 'datatables.net-autofill'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
$ = require('datatables.net-zf')(root, $).$;
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.AutoFill ) {
|
||||
require('datatables.net-autofill')(root, $);
|
||||
}
|
||||
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
DataTable.AutoFill.classes.btn = 'button tiny';
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
5
htdocs/includes/jquery/plugins/datatables/extensions/AutoFill/js/autoFill.foundation.min.js
vendored
Normal file
5
htdocs/includes/jquery/plugins/datatables/extensions/AutoFill/js/autoFill.foundation.min.js
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
/*!
|
||||
Foundation integration for DataTables' AutoFill
|
||||
©2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-autofill"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);if(!c||!c.fn.dataTable)c=require("datatables.net-zf")(b,c).$;c.fn.dataTable.AutoFill||require("datatables.net-autofill")(b,c);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a){a=a.fn.dataTable;a.AutoFill.classes.btn="button tiny";return a});
|
||||
@ -0,0 +1,43 @@
|
||||
/*! jQuery UI integration for DataTables' AutoFill
|
||||
* ©2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net-jqui', 'datatables.net-autofill'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
$ = require('datatables.net-jqui')(root, $).$;
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.AutoFill ) {
|
||||
require('datatables.net-autofill')(root, $);
|
||||
}
|
||||
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
DataTable.AutoFill.classes.btn = 'ui-button ui-state-default ui-corner-all';
|
||||
|
||||
|
||||
return DataTable;
|
||||
}));
|
||||
6
htdocs/includes/jquery/plugins/datatables/extensions/AutoFill/js/autoFill.jqueryui.min.js
vendored
Normal file
6
htdocs/includes/jquery/plugins/datatables/extensions/AutoFill/js/autoFill.jqueryui.min.js
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
jQuery UI integration for DataTables' AutoFill
|
||||
©2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
(function(a){"function"===typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-autofill"],function(b){return a(b,window,document)}):"object"===typeof exports?module.exports=function(b,c){b||(b=window);if(!c||!c.fn.dataTable)c=require("datatables.net-jqui")(b,c).$;c.fn.dataTable.AutoFill||require("datatables.net-autofill")(b,c);return a(c,b,b.document)}:a(jQuery,window,document)})(function(a){a=a.fn.dataTable;a.AutoFill.classes.btn="ui-button ui-state-default ui-corner-all";
|
||||
return a});
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,22 +1,23 @@
|
||||
/*!
|
||||
AutoFill 1.2.1
|
||||
©2008-2014 SpryMedia Ltd - datatables.net/license
|
||||
AutoFill 2.1.1
|
||||
©2008-2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
(function(o,j,m){var l=function(c,k){var h=function(d,b){if(!(this instanceof h))throw"Warning: AutoFill must be initialised with the keyword 'new'";if(!c.fn.dataTableExt.fnVersionCheck("1.7.0"))throw"Warning: AutoFill requires DataTables 1.7 or greater";this.c={};this.s={filler:{height:0,width:0},border:{width:2},drag:{startX:-1,startY:-1,startTd:null,endTd:null,dragging:!1},screen:{interval:null,y:0,height:0,scrollTop:0},scroller:{top:0,bottom:0},columns:[]};this.dom={table:null,filler:null,borderTop:null,
|
||||
borderRight:null,borderBottom:null,borderLeft:null,currentTarget:null};this.fnSettings=function(){return this.s};this._fnInit(d,b);return this};h.prototype={_fnInit:function(d,b){var a=this;this.s.dt=k.Api?(new k.Api(d)).settings()[0]:d.fnSettings();this.s.init=b||{};this.dom.table=this.s.dt.nTable;c.extend(!0,this.c,h.defaults,b);this._initColumns();var e=c("<div/>",{"class":"AutoFill_filler"}).appendTo("body");this.dom.filler=e[0];this.s.filler.height=e.height();this.s.filler.width=e.width();e[0].style.display=
|
||||
"none";var g,f=j.body;""!==a.s.dt.oScroll.sY&&(a.s.dt.nTable.parentNode.style.position="relative",f=a.s.dt.nTable.parentNode);g=c("<div/>",{"class":"AutoFill_border"});this.dom.borderTop=g.clone().appendTo(f)[0];this.dom.borderRight=g.clone().appendTo(f)[0];this.dom.borderBottom=g.clone().appendTo(f)[0];this.dom.borderLeft=g.clone().appendTo(f)[0];e.on("mousedown.DTAF",function(b){this.onselectstart=function(){return false};a._fnFillerDragStart.call(a,b);return false});c("tbody",this.dom.table).on("mouseover.DTAF mouseout.DTAF",
|
||||
">tr>td, >tr>th",function(b){a._fnFillerDisplay.call(a,b)});c(this.dom.table).on("destroy.dt.DTAF",function(){e.off("mousedown.DTAF").remove();c("tbody",this.dom.table).off("mouseover.DTAF mouseout.DTAF")})},_initColumns:function(){var d=this,b,a,e=this.s.dt,g=this.s.init;b=0;for(a=e.aoColumns.length;b<a;b++)this.s.columns[b]=c.extend(!0,{},h.defaults.column);e.oApi._fnApplyColumnDefs(e,g.aoColumnDefs||g.columnDefs,g.aoColumns||g.columns,function(a,b){d._fnColumnOptions(a,b)});b=0;for(a=e.aoColumns.length;b<
|
||||
a;b++)if(e=this.s.columns[b],e.read||(e.read=this._fnReadCell),e.write||(e.read=this._fnWriteCell),!e.step)e.read=this._fnStep},_fnColumnOptions:function(d,b){var a=this.s.columns[d],c=function(c,d){b[d[0]]!==m&&(a[c]=b[d[0]]);b[d[1]]!==m&&(a[c]=b[d[1]])};c("enable",["bEnable","enable"]);c("read",["fnRead","read"]);c("write",["fnWrite","write"]);c("step",["fnStep","step"]);c("increment",["bIncrement","increment"])},_fnTargetCoords:function(d){var b=c(d).parents("tr")[0],a=this.s.dt.oInstance.fnGetPosition(d);
|
||||
return{x:c("td",b).index(d),y:c("tr",b.parentNode).index(b),row:a[0],column:a[2]}},_fnUpdateBorder:function(d,b){var a=this.s.border.width,e=c(d).offset(),g=c(b).offset(),f=e.left-a,i=g.left+c(b).outerWidth(),n=e.top-a,h=g.top+c(b).outerHeight(),j=g.left+c(b).outerWidth()-e.left+2*a,k=g.top+c(b).outerHeight()-e.top+2*a;e.left>g.left&&(f=g.left-a,i=e.left+c(d).outerWidth(),j=e.left+c(d).outerWidth()-g.left+2*a);""!==this.s.dt.oScroll.sY&&(a=c(this.s.dt.nTable.parentNode).offset(),e=c(this.s.dt.nTable.parentNode).scrollTop(),
|
||||
g=c(this.s.dt.nTable.parentNode).scrollLeft(),f-=a.left-g,i-=a.left-g,n-=a.top-e,h-=a.top-e);a=this.dom.borderTop.style;a.top=n+"px";a.left=f+"px";a.height=this.s.border.width+"px";a.width=j+"px";a=this.dom.borderBottom.style;a.top=h+"px";a.left=f+"px";a.height=this.s.border.width+"px";a.width=j+"px";a=this.dom.borderLeft.style;a.top=n+"px";a.left=f+"px";a.height=k+"px";a.width=this.s.border.width+"px";a=this.dom.borderRight.style;a.top=n+"px";a.left=i+"px";a.height=k+"px";a.width=this.s.border.width+
|
||||
"px"},_fnFillerDragStart:function(d){var b=this,a=this.dom.currentTarget;this.s.drag.dragging=!0;b.dom.borderTop.style.display="block";b.dom.borderRight.style.display="block";b.dom.borderBottom.style.display="block";b.dom.borderLeft.style.display="block";var e=this._fnTargetCoords(a);this.s.drag.startX=e.x;this.s.drag.startY=e.y;this.s.drag.startTd=a;this.s.drag.endTd=a;this._fnUpdateBorder(a,a);c(j).bind("mousemove.AutoFill",function(a){b._fnFillerDragMove.call(b,a)});c(j).bind("mouseup.AutoFill",
|
||||
function(a){b._fnFillerFinish.call(b,a)});this.s.screen.y=d.pageY;this.s.screen.height=c(o).height();this.s.screen.scrollTop=c(j).scrollTop();""!==this.s.dt.oScroll.sY&&(this.s.scroller.top=c(this.s.dt.nTable.parentNode).offset().top,this.s.scroller.bottom=this.s.scroller.top+c(this.s.dt.nTable.parentNode).height());this.s.screen.interval=setInterval(function(){var a=c(j).scrollTop();b.s.screen.y=b.s.screen.y+(a-b.s.screen.scrollTop);b.s.screen.height-b.s.screen.y+a<50?c("html, body").animate({scrollTop:a+
|
||||
50},240,"linear"):b.s.screen.y-a<50&&c("html, body").animate({scrollTop:a-50},240,"linear");b.s.dt.oScroll.sY!==""&&(b.s.screen.y>b.s.scroller.bottom-50?c(b.s.dt.nTable.parentNode).animate({scrollTop:c(b.s.dt.nTable.parentNode).scrollTop()+50},240,"linear"):b.s.screen.y<b.s.scroller.top+50&&c(b.s.dt.nTable.parentNode).animate({scrollTop:c(b.s.dt.nTable.parentNode).scrollTop()-50},240,"linear"))},250)},_fnFillerDragMove:function(d){if(d.target&&"TD"==d.target.nodeName.toUpperCase()&&d.target!=this.s.drag.endTd){var b=
|
||||
this._fnTargetCoords(d.target);"y"==this.c.mode&&b.x!=this.s.drag.startX&&(d.target=c("tbody>tr:eq("+b.y+")>td:eq("+this.s.drag.startX+")",this.dom.table)[0]);"x"==this.c.mode&&b.y!=this.s.drag.startY&&(d.target=c("tbody>tr:eq("+this.s.drag.startY+")>td:eq("+b.x+")",this.dom.table)[0]);"either"==this.c.mode&&(b.x!=this.s.drag.startX?d.target=c("tbody>tr:eq("+this.s.drag.startY+")>td:eq("+b.x+")",this.dom.table)[0]:b.y!=this.s.drag.startY&&(d.target=c("tbody>tr:eq("+b.y+")>td:eq("+this.s.drag.startX+
|
||||
")",this.dom.table)[0]));"both"!==this.c.mode&&(b=this._fnTargetCoords(d.target));var a=this.s.drag;a.endTd=d.target;b.y>=this.s.drag.startY?this._fnUpdateBorder(a.startTd,a.endTd):this._fnUpdateBorder(a.endTd,a.startTd);this._fnFillerPosition(d.target)}this.s.screen.y=d.pageY;this.s.screen.scrollTop=c(j).scrollTop();""!==this.s.dt.oScroll.sY&&(this.s.scroller.scrollTop=c(this.s.dt.nTable.parentNode).scrollTop(),this.s.scroller.top=c(this.s.dt.nTable.parentNode).offset().top,this.s.scroller.bottom=
|
||||
this.s.scroller.top+c(this.s.dt.nTable.parentNode).height())},_fnFillerFinish:function(){var d=this,b,a;c(j).unbind("mousemove.AutoFill mouseup.AutoFill");this.dom.borderTop.style.display="none";this.dom.borderRight.style.display="none";this.dom.borderBottom.style.display="none";this.dom.borderLeft.style.display="none";this.s.drag.dragging=!1;clearInterval(this.s.screen.interval);var e=[],g=this.dom.table,f=this._fnTargetCoords(this.s.drag.startTd),i=this._fnTargetCoords(this.s.drag.endTd),h=function(a){return d.s.dt.oApi._fnVisibleToColumnIndex(d.s.dt,
|
||||
a)};if(f.y<=i.y)for(b=f.y;b<=i.y;b++)if(f.x<=i.x)for(a=f.x;a<=i.x;a++)e.push({node:c("tbody>tr:eq("+b+")>td:eq("+a+")",g)[0],x:a-f.x,y:b-f.y,colIdx:h(a)});else for(a=f.x;a>=i.x;a--)e.push({node:c("tbody>tr:eq("+b+")>td:eq("+a+")",g)[0],x:a-f.x,y:b-f.y,colIdx:h(a)});else for(b=f.y;b>=i.y;b--)if(f.x<=i.x)for(a=f.x;a<=i.x;a++)e.push({node:c("tbody>tr:eq("+b+")>td:eq("+a+")",g)[0],x:a-f.x,y:b-f.y,colIdx:h(a)});else for(a=f.x;a>=i.x;a--)e.push({node:c("tbody>tr:eq("+b+")>td:eq("+a+")",g)[0],x:f.x-a,y:f.y-
|
||||
b,colIdx:h(a)});if(!(1>=e.length)){var g=[],m;b=0;for(a=e.length;b<a;b++){var f=e[b],i=this.s.columns[f.colIdx],h=i.read.call(i,f.node),l=i.step.call(i,f.node,h,m,b,f.x,f.y);i.write.call(i,f.node,l);m=l;g.push({cell:f,colIdx:f.colIdx,newValue:l,oldValue:h})}null!==this.c.complete&&this.c.complete.call(this,g);k.Api?(new k.Api(this.s.dt)).draw(!1):this.s.dt.oInstance.fnDraw()}},_fnFillerDisplay:function(d){var b=this.dom.filler;if(!this.s.drag.dragging){var a="td"==d.target.nodeName.toLowerCase()?
|
||||
d.target:c(d.target).parents("td")[0],e=this._fnTargetCoords(a).column;if(this.s.columns[e].enable)if("mouseover"==d.type)this.dom.currentTarget=a,this._fnFillerPosition(a),b.style.display="block";else{if(!d.relatedTarget||!d.relatedTarget.className.match(/AutoFill/))b.style.display="none"}else b.style.display="none"}},_fnFillerPosition:function(d){var b=c(d).offset(),a=this.dom.filler;a.style.top=b.top-this.s.filler.height/2-1+c(d).outerHeight()+"px";a.style.left=b.left-this.s.filler.width/2-1+c(d).outerWidth()+
|
||||
"px"}};k.AutoFill=h;k.AutoFill=h;h.version="1.2.1";h.defaults={mode:"y",complete:null,column:{enable:!0,increment:!0,read:function(d){return c(d).html()},write:function(d,b){var a=c(d).parents("table");if(k.Api)a.DataTable().cell(d).data(b);else{var a=a.dataTable(),e=a.fnGetPosition(d);a.fnUpdate(b,e[0],e[2],!1)}},step:function(c,b,a,e,g,f){c=/(\-?\d+)/;return(e=this.increment&&a?a.match(c):null)?a.replace(c,parseInt(e[1],10)+(0>g||0>f?-1:1)):a===m?b:a}}};return h};"function"===typeof define&&define.amd?
|
||||
define(["jquery","datatables"],l):"object"===typeof exports?l(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.AutoFill&&l(jQuery,jQuery.fn.dataTable)})(window,document);
|
||||
(function(e){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(l){return e(l,window,document)}):"object"===typeof exports?module.exports=function(l,i){l||(l=window);if(!i||!i.fn.dataTable)i=require("datatables.net")(l,i).$;return e(i,l,l.document)}:e(jQuery,window,document)})(function(e,l,i,q){var k=e.fn.dataTable,o=0,j=function(c,b){if(!k.versionCheck||!k.versionCheck("1.10.8"))throw"Warning: AutoFill requires DataTables 1.10.8 or greater";this.c=e.extend(!0,{},k.defaults.autoFill,
|
||||
j.defaults,b);this.s={dt:new k.Api(c),namespace:".autoFill"+o++,scroll:{},scrollInterval:null,handle:{height:0,width:0}};this.dom={handle:e('<div class="dt-autofill-handle"/>'),select:{top:e('<div class="dt-autofill-select top"/>'),right:e('<div class="dt-autofill-select right"/>'),bottom:e('<div class="dt-autofill-select bottom"/>'),left:e('<div class="dt-autofill-select left"/>')},background:e('<div class="dt-autofill-background"/>'),list:e('<div class="dt-autofill-list">'+this.s.dt.i18n("autoFill.info",
|
||||
"")+"<ul/></div>"),dtScroll:null,offsetParent:null};this._constructor()};e.extend(j.prototype,{_constructor:function(){var c=this,b=this.s.dt,a=e("div.dataTables_scrollBody",this.s.dt.table().container());a.length&&(this.dom.dtScroll=a,"static"===a.css("position")&&a.css("position","relative"));this._focusListener();this.dom.handle.on("mousedown",function(a){c._mousedown(a);return false});b.on("destroy.autoFill",function(){b.off(".autoFill");e(b.table().body()).off(c.s.namespace);e(i.body).off(c.s.namespace)})},
|
||||
_attach:function(c){var b=this.s.dt,a=b.cell(c).index(),d=this.dom.handle,f=this.s.handle,g=e("div.dataTables_scrollBody",this.s.dt.table().container());if(!a||-1===b.columns(this.c.columns).indexes().indexOf(a.column))this._detach();else{this.dom.offsetParent||(this.dom.offsetParent=e(c).offsetParent());if(!f.height||!f.width)d.appendTo("body"),f.height=d.outerHeight(),f.width=d.outerWidth();b=e(c).position();this.dom.attachedTo=c;d.css({top:b.top+c.offsetHeight-f.height+g.scrollTop(),left:b.left+
|
||||
c.offsetWidth-f.width+g.scrollLeft()}).appendTo(this.dom.offsetParent)}},_actionSelector:function(c){var b=this,a=this.s.dt,d=j.actions,f=[];e.each(d,function(b,d){d.available(a,c)&&f.push(b)});if(1===f.length&&!1===this.c.alwaysAsk){var g=d[f[0]].execute(a,c);this._update(g,c)}else{var h=this.dom.list.children("ul").empty();f.push("cancel");e.each(f,function(f,g){h.append(e("<li/>").append('<div class="dt-autofill-question">'+d[g].option(a,c)+"<div>").append(e('<div class="dt-autofill-button">').append(e('<button class="'+
|
||||
j.classes.btn+'">'+a.i18n("autoFill.button",">")+"</button>").on("click",function(){var f=d[g].execute(a,c,e(this).closest("li"));b._update(f,c);b.dom.background.remove();b.dom.list.remove()}))))});this.dom.background.appendTo("body");this.dom.list.appendTo("body");this.dom.list.css("margin-top",-1*(this.dom.list.outerHeight()/2))}},_detach:function(){this.dom.attachedTo=null;this.dom.handle.detach()},_drawSelection:function(c){var b=this.s.dt,a=this.s.start,d=e(this.dom.start),f=e(c),g={row:b.rows({page:"current"}).nodes().indexOf(f.parent()[0]),
|
||||
column:f.index()};if(b.cell(f).any()&&-1!==b.columns(this.c.columns).indexes().indexOf(g.column)){this.s.end=g;var h,b=a.row<g.row?d:f;h=a.row<g.row?f:d;c=a.column<g.column?d:f;d=a.column<g.column?f:d;b=b.position().top;c=c.position().left;a=h.position().top+h.outerHeight()-b;d=d.position().left+d.outerWidth()-c;if(f=this.dom.dtScroll)b+=f.scrollTop(),c+=f.scrollLeft();f=this.dom.select;f.top.css({top:b,left:c,width:d});f.left.css({top:b,left:c,height:a});f.bottom.css({top:b+a,left:c,width:d});f.right.css({top:b,
|
||||
left:c+d,height:a})}},_editor:function(c){var b=this.s.dt,a=this.c.editor;if(a){for(var d={},f=[],e=a.fields(),h=0,i=c.length;h<i;h++)for(var j=0,l=c[h].length;j<l;j++){var n=c[h][j],k=b.settings()[0].aoColumns[n.index.column],m=k.editField;if(m===q)for(var k=k.mData,p=0,o=e.length;p<o;p++){var r=a.field(e[p]);if(r.dataSrc()===k){m=r.name();break}}if(!m)throw"Could not automatically determine field data. Please see https://datatables.net/tn/11";d[m]||(d[m]={});k=b.row(n.index.row).id();d[m][k]=n.set;
|
||||
f.push(n.index)}a.bubble(f,!1).multiSet(d).submit()}},_emitEvent:function(c,b){this.s.dt.iterator("table",function(a){e(a.nTable).triggerHandler(c+".dt",b)})},_focusListener:function(){var c=this,b=this.s.dt,a=this.s.namespace,d=null!==this.c.focus?this.c.focus:b.settings()[0].keytable?"focus":"hover";if("focus"===d)b.on("key-focus.autoFill",function(a,b,d){c._attach(d.node())}).on("key-blur.autoFill",function(){c._detach()});else if("click"===d)e(b.table().body()).on("click"+a,"td, th",function(){c._attach(this)}),
|
||||
e(i.body).on("click"+a,function(a){e(a.target).parents().filter(b.table().body()).length||c._detach()});else e(b.table().body()).on("mouseenter"+a,"td, th",function(){c._attach(this)}).on("mouseleave"+a,function(a){e(a.relatedTarget).hasClass("dt-autofill-handle")||c._detach()})},_mousedown:function(c){var b=this,a=this.s.dt;this.dom.start=this.dom.attachedTo;this.s.start={row:a.rows({page:"current"}).nodes().indexOf(e(this.dom.start).parent()[0]),column:e(this.dom.start).index()};e(i.body).on("mousemove.autoFill",
|
||||
function(a){b._mousemove(a)}).on("mouseup.autoFill",function(a){b._mouseup(a)});var a=this.dom.select,d=e(this.s.dt.table().body()).offsetParent();a.top.appendTo(d);a.left.appendTo(d);a.right.appendTo(d);a.bottom.appendTo(d);this._drawSelection(this.dom.start,c);this.dom.handle.css("display","none");c=this.dom.dtScroll;this.s.scroll={windowHeight:e(l).height(),windowWidth:e(l).width(),dtTop:c?c.offset().top:null,dtLeft:c?c.offset().left:null,dtHeight:c?c.outerHeight():null,dtWidth:c?c.outerWidth():
|
||||
null}},_mousemove:function(c){var b=c.target.nodeName.toLowerCase();"td"!==b&&"th"!==b||(this._drawSelection(c.target,c),this._shiftScroll(c))},_mouseup:function(){e(i.body).off(".autoFill");var c=this.s.dt,b=this.dom.select;b.top.remove();b.left.remove();b.right.remove();b.bottom.remove();this.dom.handle.css("display","block");var b=this.s.start,a=this.s.end;if(!(b.row===a.row&&b.column===a.column)){for(var d=this._range(b.row,a.row),b=this._range(b.column,a.column),a=[],f=c.settings()[0],g=f.aoColumns,
|
||||
h=0;h<d.length;h++)a.push(e.map(b,function(a){var a=c.cell(":eq("+d[h]+")",a+":visible",{page:"current"}),b=a.data(),e=a.index(),i=g[e.column].editField;i!==q&&(b=f.oApi._fnGetObjectDataFn(i)(c.row(e.row).data()));return{cell:a,data:b,label:a.data(),index:e}}));this._actionSelector(a);clearInterval(this.s.scrollInterval);this.s.scrollInterval=null}},_range:function(c,b){var a=[],d;if(c<=b)for(d=c;d<=b;d++)a.push(d);else for(d=c;d>=b;d--)a.push(d);return a},_shiftScroll:function(c){var b=this,a=this.s.scroll,
|
||||
d=!1,f=c.pageY-i.body.scrollTop,e=c.pageX-i.body.scrollLeft,h,j,k,l;65>f?h=-5:f>a.windowHeight-65&&(h=5);65>e?j=-5:e>a.windowWidth-65&&(j=5);null!==a.dtTop&&c.pageY<a.dtTop+65?k=-5:null!==a.dtTop&&c.pageY>a.dtTop+a.dtHeight-65&&(k=5);null!==a.dtLeft&&c.pageX<a.dtLeft+65?l=-5:null!==a.dtLeft&&c.pageX>a.dtLeft+a.dtWidth-65&&(l=5);h||j||k||l?(a.windowVert=h,a.windowHoriz=j,a.dtVert=k,a.dtHoriz=l,d=!0):this.s.scrollInterval&&(clearInterval(this.s.scrollInterval),this.s.scrollInterval=null);!this.s.scrollInterval&&
|
||||
d&&(this.s.scrollInterval=setInterval(function(){if(a.windowVert)i.body.scrollTop=i.body.scrollTop+a.windowVert;if(a.windowHoriz)i.body.scrollLeft=i.body.scrollLeft+a.windowHoriz;if(a.dtVert||a.dtHoriz){var c=b.dom.dtScroll[0];if(a.dtVert)c.scrollTop=c.scrollTop+a.dtVert;if(a.dtHoriz)c.scrollLeft=c.scrollLeft+a.dtHoriz}},20))},_update:function(c,b){if(!1!==c){var a=this.s.dt,d;this._emitEvent("preAutoFill",[a,b]);this._editor(b);if(null!==this.c.update?this.c.update:!this.c.editor){for(var f=0,e=
|
||||
b.length;f<e;f++)for(var h=0,i=b[f].length;h<i;h++)d=b[f][h],d.cell.data(d.set);a.draw(!1)}this._emitEvent("autoFill",[a,b])}}});j.actions={increment:{available:function(c,b){return e.isNumeric(b[0][0].label)},option:function(c){return c.i18n("autoFill.increment",'Increment / decrement each cell by: <input type="number" value="1">')},execute:function(c,b,a){for(var c=1*b[0][0].data,a=1*e("input",a).val(),d=0,f=b.length;d<f;d++)for(var g=0,h=b[d].length;g<h;g++)b[d][g].set=c,c+=a}},fill:{available:function(){return!0},
|
||||
option:function(c,b){return c.i18n("autoFill.fill","Fill all cells with <i>"+b[0][0].label+"</i>")},execute:function(c,b){for(var a=b[0][0].data,d=0,e=b.length;d<e;d++)for(var g=0,h=b[d].length;g<h;g++)b[d][g].set=a}},fillHorizontal:{available:function(c,b){return 1<b.length&&1<b[0].length},option:function(c){return c.i18n("autoFill.fillHorizontal","Fill cells horizontally")},execute:function(c,b){for(var a=0,d=b.length;a<d;a++)for(var e=0,g=b[a].length;e<g;e++)b[a][e].set=b[a][0].data}},fillVertical:{available:function(c,
|
||||
b){return 1<b.length&&1<b[0].length},option:function(c){return c.i18n("autoFill.fillVertical","Fill cells vertically")},execute:function(c,b){for(var a=0,d=b.length;a<d;a++)for(var e=0,g=b[a].length;e<g;e++)b[a][e].set=b[0][e].data}},cancel:{available:function(){return!1},option:function(c){return c.i18n("autoFill.cancel","Cancel")},execute:function(){return!1}}};j.version="2.1.1";j.defaults={alwaysAsk:!1,focus:null,columns:"",update:null,editor:null};j.classes={btn:"btn"};e(i).on("preInit.dt.autofill",
|
||||
function(c,b){if("dt"===c.namespace){var a=b.oInit.autoFill,d=k.defaults.autoFill;if(a||d)d=e.extend({},a,d),!1!==a&&new j(b,d)}});k.AutoFill=j;return k.AutoFill=j});
|
||||
|
||||
@ -0,0 +1,22 @@
|
||||
MIT license
|
||||
|
||||
Copyright (c) 2015 SpryMedia Limited
|
||||
http://datatables.net
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@ -0,0 +1,39 @@
|
||||
# Buttons
|
||||
|
||||
The Buttons extension for DataTables provides a common set of options, API methods and styling to display buttons on a page that will interact with a DataTable. Modules are also provided for data export, printing and column visibility control.
|
||||
|
||||
|
||||
# Installation
|
||||
|
||||
To use Buttons the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/buttons/) for full details.
|
||||
|
||||
## NPM and Bower
|
||||
|
||||
If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-buttons`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name.
|
||||
|
||||
Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables.
|
||||
|
||||
|
||||
# Basic usage
|
||||
|
||||
Buttons is initialised using the `buttons` option in the DataTables constructor, giving an array of the buttons that should be shown. Further options can be specified using this option as an object - see the documentation for details. For example:
|
||||
|
||||
```js
|
||||
$(document).ready( function () {
|
||||
$('#example').DataTable( {
|
||||
buttons: [ 'csv', 'excel', 'pdf', 'print' ]
|
||||
} );
|
||||
} );
|
||||
```
|
||||
|
||||
|
||||
# Documentation / support
|
||||
|
||||
* [Documentation](https://datatables.net/extensions/buttons/)
|
||||
* [DataTables support forums](http://datatables.net/forums)
|
||||
|
||||
|
||||
# GitHub
|
||||
|
||||
If you fancy getting involved with the development of Buttons and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/Buttons)
|
||||
|
||||
@ -0,0 +1,102 @@
|
||||
div.dt-button-info {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 400px;
|
||||
margin-top: -100px;
|
||||
margin-left: -200px;
|
||||
background-color: white;
|
||||
border: 2px solid #111;
|
||||
box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3);
|
||||
border-radius: 3px;
|
||||
text-align: center;
|
||||
z-index: 21;
|
||||
}
|
||||
div.dt-button-info h2 {
|
||||
padding: 0.5em;
|
||||
margin: 0;
|
||||
font-weight: normal;
|
||||
border-bottom: 1px solid #ddd;
|
||||
background-color: #f3f3f3;
|
||||
}
|
||||
div.dt-button-info > div {
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
ul.dt-button-collection.dropdown-menu {
|
||||
display: block;
|
||||
z-index: 2002;
|
||||
-webkit-column-gap: 8px;
|
||||
-moz-column-gap: 8px;
|
||||
-ms-column-gap: 8px;
|
||||
-o-column-gap: 8px;
|
||||
column-gap: 8px;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu.fixed {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-left: -75px;
|
||||
border-radius: 0;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu.fixed.two-column {
|
||||
margin-left: -150px;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu.fixed.three-column {
|
||||
margin-left: -225px;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu.fixed.four-column {
|
||||
margin-left: -300px;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu > * {
|
||||
-webkit-column-break-inside: avoid;
|
||||
break-inside: avoid;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu.two-column {
|
||||
width: 300px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 2;
|
||||
-moz-column-count: 2;
|
||||
-ms-column-count: 2;
|
||||
-o-column-count: 2;
|
||||
column-count: 2;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu.three-column {
|
||||
width: 450px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 3;
|
||||
-moz-column-count: 3;
|
||||
-ms-column-count: 3;
|
||||
-o-column-count: 3;
|
||||
column-count: 3;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu.four-column {
|
||||
width: 600px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 4;
|
||||
-moz-column-count: 4;
|
||||
-ms-column-count: 4;
|
||||
-o-column-count: 4;
|
||||
column-count: 4;
|
||||
}
|
||||
|
||||
div.dt-button-background {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 2001;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
div.dt-buttons {
|
||||
float: none;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
div.dt-buttons a.btn {
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
1
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/css/buttons.bootstrap.min.css
vendored
Normal file
1
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/css/buttons.bootstrap.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}ul.dt-button-collection.dropdown-menu{display:block;z-index:2002;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}ul.dt-button-collection.dropdown-menu.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}ul.dt-button-collection.dropdown-menu.fixed.two-column{margin-left:-150px}ul.dt-button-collection.dropdown-menu.fixed.three-column{margin-left:-225px}ul.dt-button-collection.dropdown-menu.fixed.four-column{margin-left:-300px}ul.dt-button-collection.dropdown-menu>*{-webkit-column-break-inside:avoid;break-inside:avoid}ul.dt-button-collection.dropdown-menu.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}ul.dt-button-collection.dropdown-menu.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}ul.dt-button-collection.dropdown-menu.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2001}@media screen and (max-width: 767px){div.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:0.5em}div.dt-buttons a.btn{float:none}}
|
||||
@ -0,0 +1,163 @@
|
||||
div.dt-button-info {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 400px;
|
||||
margin-top: -100px;
|
||||
margin-left: -200px;
|
||||
background-color: white;
|
||||
border: 2px solid #111;
|
||||
box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3);
|
||||
border-radius: 3px;
|
||||
text-align: center;
|
||||
z-index: 21;
|
||||
}
|
||||
div.dt-button-info h2 {
|
||||
padding: 0.5em;
|
||||
margin: 0;
|
||||
font-weight: normal;
|
||||
border-bottom: 1px solid #ddd;
|
||||
background-color: #f3f3f3;
|
||||
}
|
||||
div.dt-button-info > div {
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
ul.dt-button-collection.dropdown-menu {
|
||||
display: block;
|
||||
z-index: 2002;
|
||||
-webkit-column-gap: 8px;
|
||||
-moz-column-gap: 8px;
|
||||
-ms-column-gap: 8px;
|
||||
-o-column-gap: 8px;
|
||||
column-gap: 8px;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu.fixed {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-left: -75px;
|
||||
border-radius: 0;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu.fixed.two-column {
|
||||
margin-left: -150px;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu.fixed.three-column {
|
||||
margin-left: -225px;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu.fixed.four-column {
|
||||
margin-left: -300px;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu > * {
|
||||
-webkit-column-break-inside: avoid;
|
||||
break-inside: avoid;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu.two-column {
|
||||
width: 300px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 2;
|
||||
-moz-column-count: 2;
|
||||
-ms-column-count: 2;
|
||||
-o-column-count: 2;
|
||||
column-count: 2;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu.three-column {
|
||||
width: 450px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 3;
|
||||
-moz-column-count: 3;
|
||||
-ms-column-count: 3;
|
||||
-o-column-count: 3;
|
||||
column-count: 3;
|
||||
}
|
||||
ul.dt-button-collection.dropdown-menu.four-column {
|
||||
width: 600px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 4;
|
||||
-moz-column-count: 4;
|
||||
-ms-column-count: 4;
|
||||
-o-column-count: 4;
|
||||
column-count: 4;
|
||||
}
|
||||
|
||||
ul.dt-button-collection {
|
||||
-webkit-column-gap: 8px;
|
||||
-moz-column-gap: 8px;
|
||||
-ms-column-gap: 8px;
|
||||
-o-column-gap: 8px;
|
||||
column-gap: 8px;
|
||||
}
|
||||
ul.dt-button-collection.fixed {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-left: -75px;
|
||||
border-radius: 0;
|
||||
}
|
||||
ul.dt-button-collection.fixed.two-column {
|
||||
margin-left: -150px;
|
||||
}
|
||||
ul.dt-button-collection.fixed.three-column {
|
||||
margin-left: -225px;
|
||||
}
|
||||
ul.dt-button-collection.fixed.four-column {
|
||||
margin-left: -300px;
|
||||
}
|
||||
ul.dt-button-collection > * {
|
||||
-webkit-column-break-inside: avoid;
|
||||
break-inside: avoid;
|
||||
}
|
||||
ul.dt-button-collection.two-column {
|
||||
width: 300px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 2;
|
||||
-moz-column-count: 2;
|
||||
-ms-column-count: 2;
|
||||
-o-column-count: 2;
|
||||
column-count: 2;
|
||||
}
|
||||
ul.dt-button-collection.three-column {
|
||||
width: 450px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 3;
|
||||
-moz-column-count: 3;
|
||||
-ms-column-count: 3;
|
||||
-o-column-count: 3;
|
||||
column-count: 3;
|
||||
}
|
||||
ul.dt-button-collection.four-column {
|
||||
width: 600px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 4;
|
||||
-moz-column-count: 4;
|
||||
-ms-column-count: 4;
|
||||
-o-column-count: 4;
|
||||
column-count: 4;
|
||||
}
|
||||
ul.dt-button-collection.fixed {
|
||||
max-width: none;
|
||||
}
|
||||
ul.dt-button-collection.fixed:before, ul.dt-button-collection.fixed:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.dt-button-background {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 999;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
div.dt-buttons {
|
||||
float: none;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
div.dt-buttons a.btn {
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
1
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/css/buttons.bootstrap4.min.css
vendored
Normal file
1
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/css/buttons.bootstrap4.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}ul.dt-button-collection.dropdown-menu{display:block;z-index:2002;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}ul.dt-button-collection.dropdown-menu.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}ul.dt-button-collection.dropdown-menu.fixed.two-column{margin-left:-150px}ul.dt-button-collection.dropdown-menu.fixed.three-column{margin-left:-225px}ul.dt-button-collection.dropdown-menu.fixed.four-column{margin-left:-300px}ul.dt-button-collection.dropdown-menu>*{-webkit-column-break-inside:avoid;break-inside:avoid}ul.dt-button-collection.dropdown-menu.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}ul.dt-button-collection.dropdown-menu.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}ul.dt-button-collection.dropdown-menu.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}ul.dt-button-collection{-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}ul.dt-button-collection.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}ul.dt-button-collection.fixed.two-column{margin-left:-150px}ul.dt-button-collection.fixed.three-column{margin-left:-225px}ul.dt-button-collection.fixed.four-column{margin-left:-300px}ul.dt-button-collection>*{-webkit-column-break-inside:avoid;break-inside:avoid}ul.dt-button-collection.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}ul.dt-button-collection.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}ul.dt-button-collection.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}ul.dt-button-collection.fixed{max-width:none}ul.dt-button-collection.fixed:before,ul.dt-button-collection.fixed:after{display:none}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:999}@media screen and (max-width: 767px){div.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:0.5em}div.dt-buttons a.btn{float:none}}
|
||||
@ -0,0 +1,298 @@
|
||||
div.dt-button-info {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 400px;
|
||||
margin-top: -100px;
|
||||
margin-left: -200px;
|
||||
background-color: white;
|
||||
border: 2px solid #111;
|
||||
box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3);
|
||||
border-radius: 3px;
|
||||
text-align: center;
|
||||
z-index: 21;
|
||||
}
|
||||
div.dt-button-info h2 {
|
||||
padding: 0.5em;
|
||||
margin: 0;
|
||||
font-weight: normal;
|
||||
border-bottom: 1px solid #ddd;
|
||||
background-color: #f3f3f3;
|
||||
}
|
||||
div.dt-button-info > div {
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
button.dt-button,
|
||||
div.dt-button,
|
||||
a.dt-button {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
box-sizing: border-box;
|
||||
margin-right: 0.333em;
|
||||
padding: 0.5em 1em;
|
||||
border: 1px solid #999;
|
||||
border-radius: 2px;
|
||||
cursor: pointer;
|
||||
font-size: 0.88em;
|
||||
color: black;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
background-color: #e9e9e9;
|
||||
/* Fallback */
|
||||
background-image: -webkit-linear-gradient(top, white 0%, #e9e9e9 100%);
|
||||
/* Chrome 10+, Saf5.1+, iOS 5+ */
|
||||
background-image: -moz-linear-gradient(top, white 0%, #e9e9e9 100%);
|
||||
/* FF3.6 */
|
||||
background-image: -ms-linear-gradient(top, white 0%, #e9e9e9 100%);
|
||||
/* IE10 */
|
||||
background-image: -o-linear-gradient(top, white 0%, #e9e9e9 100%);
|
||||
/* Opera 11.10+ */
|
||||
background-image: linear-gradient(top, white 0%, #e9e9e9 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='white', EndColorStr='#e9e9e9');
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
text-decoration: none;
|
||||
outline: none;
|
||||
}
|
||||
button.dt-button.disabled,
|
||||
div.dt-button.disabled,
|
||||
a.dt-button.disabled {
|
||||
color: #999;
|
||||
border: 1px solid #d0d0d0;
|
||||
cursor: default;
|
||||
background-color: #f9f9f9;
|
||||
/* Fallback */
|
||||
background-image: -webkit-linear-gradient(top, #ffffff 0%, #f9f9f9 100%);
|
||||
/* Chrome 10+, Saf5.1+, iOS 5+ */
|
||||
background-image: -moz-linear-gradient(top, #ffffff 0%, #f9f9f9 100%);
|
||||
/* FF3.6 */
|
||||
background-image: -ms-linear-gradient(top, #ffffff 0%, #f9f9f9 100%);
|
||||
/* IE10 */
|
||||
background-image: -o-linear-gradient(top, #ffffff 0%, #f9f9f9 100%);
|
||||
/* Opera 11.10+ */
|
||||
background-image: linear-gradient(top, #ffffff 0%, #f9f9f9 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#ffffff', EndColorStr='#f9f9f9');
|
||||
}
|
||||
button.dt-button:active:not(.disabled), button.dt-button.active:not(.disabled),
|
||||
div.dt-button:active:not(.disabled),
|
||||
div.dt-button.active:not(.disabled),
|
||||
a.dt-button:active:not(.disabled),
|
||||
a.dt-button.active:not(.disabled) {
|
||||
background-color: #e2e2e2;
|
||||
/* Fallback */
|
||||
background-image: -webkit-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);
|
||||
/* Chrome 10+, Saf5.1+, iOS 5+ */
|
||||
background-image: -moz-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);
|
||||
/* FF3.6 */
|
||||
background-image: -ms-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);
|
||||
/* IE10 */
|
||||
background-image: -o-linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);
|
||||
/* Opera 11.10+ */
|
||||
background-image: linear-gradient(top, #f3f3f3 0%, #e2e2e2 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#f3f3f3', EndColorStr='#e2e2e2');
|
||||
box-shadow: inset 1px 1px 3px #999999;
|
||||
}
|
||||
button.dt-button:active:not(.disabled):hover:not(.disabled), button.dt-button.active:not(.disabled):hover:not(.disabled),
|
||||
div.dt-button:active:not(.disabled):hover:not(.disabled),
|
||||
div.dt-button.active:not(.disabled):hover:not(.disabled),
|
||||
a.dt-button:active:not(.disabled):hover:not(.disabled),
|
||||
a.dt-button.active:not(.disabled):hover:not(.disabled) {
|
||||
box-shadow: inset 1px 1px 3px #999999;
|
||||
background-color: #cccccc;
|
||||
/* Fallback */
|
||||
background-image: -webkit-linear-gradient(top, #eaeaea 0%, #cccccc 100%);
|
||||
/* Chrome 10+, Saf5.1+, iOS 5+ */
|
||||
background-image: -moz-linear-gradient(top, #eaeaea 0%, #cccccc 100%);
|
||||
/* FF3.6 */
|
||||
background-image: -ms-linear-gradient(top, #eaeaea 0%, #cccccc 100%);
|
||||
/* IE10 */
|
||||
background-image: -o-linear-gradient(top, #eaeaea 0%, #cccccc 100%);
|
||||
/* Opera 11.10+ */
|
||||
background-image: linear-gradient(top, #eaeaea 0%, #cccccc 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#eaeaea', EndColorStr='#cccccc');
|
||||
}
|
||||
button.dt-button:hover,
|
||||
div.dt-button:hover,
|
||||
a.dt-button:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
button.dt-button:hover:not(.disabled),
|
||||
div.dt-button:hover:not(.disabled),
|
||||
a.dt-button:hover:not(.disabled) {
|
||||
border: 1px solid #666;
|
||||
background-color: #e0e0e0;
|
||||
/* Fallback */
|
||||
background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);
|
||||
/* Chrome 10+, Saf5.1+, iOS 5+ */
|
||||
background-image: -moz-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);
|
||||
/* FF3.6 */
|
||||
background-image: -ms-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);
|
||||
/* IE10 */
|
||||
background-image: -o-linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);
|
||||
/* Opera 11.10+ */
|
||||
background-image: linear-gradient(top, #f9f9f9 0%, #e0e0e0 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#f9f9f9', EndColorStr='#e0e0e0');
|
||||
}
|
||||
button.dt-button:focus:not(.disabled),
|
||||
div.dt-button:focus:not(.disabled),
|
||||
a.dt-button:focus:not(.disabled) {
|
||||
border: 1px solid #426c9e;
|
||||
text-shadow: 0 1px 0 #c4def1;
|
||||
outline: none;
|
||||
background-color: #79ace9;
|
||||
/* Fallback */
|
||||
background-image: -webkit-linear-gradient(top, #bddef4 0%, #79ace9 100%);
|
||||
/* Chrome 10+, Saf5.1+, iOS 5+ */
|
||||
background-image: -moz-linear-gradient(top, #bddef4 0%, #79ace9 100%);
|
||||
/* FF3.6 */
|
||||
background-image: -ms-linear-gradient(top, #bddef4 0%, #79ace9 100%);
|
||||
/* IE10 */
|
||||
background-image: -o-linear-gradient(top, #bddef4 0%, #79ace9 100%);
|
||||
/* Opera 11.10+ */
|
||||
background-image: linear-gradient(top, #bddef4 0%, #79ace9 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#bddef4', EndColorStr='#79ace9');
|
||||
}
|
||||
|
||||
.dt-button embed {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
div.dt-buttons {
|
||||
position: relative;
|
||||
float: left;
|
||||
}
|
||||
div.dt-buttons.buttons-right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
div.dt-button-collection {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 150px;
|
||||
margin-top: 3px;
|
||||
padding: 8px 8px 4px 8px;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0, 0, 0, 0.4);
|
||||
background-color: white;
|
||||
overflow: hidden;
|
||||
z-index: 2002;
|
||||
border-radius: 5px;
|
||||
box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||
z-index: 2002;
|
||||
-webkit-column-gap: 8px;
|
||||
-moz-column-gap: 8px;
|
||||
-ms-column-gap: 8px;
|
||||
-o-column-gap: 8px;
|
||||
column-gap: 8px;
|
||||
}
|
||||
div.dt-button-collection button.dt-button,
|
||||
div.dt-button-collection div.dt-button,
|
||||
div.dt-button-collection a.dt-button {
|
||||
position: relative;
|
||||
left: 0;
|
||||
right: 0;
|
||||
display: block;
|
||||
float: none;
|
||||
margin-bottom: 4px;
|
||||
margin-right: 0;
|
||||
}
|
||||
div.dt-button-collection button.dt-button:active:not(.disabled), div.dt-button-collection button.dt-button.active:not(.disabled),
|
||||
div.dt-button-collection div.dt-button:active:not(.disabled),
|
||||
div.dt-button-collection div.dt-button.active:not(.disabled),
|
||||
div.dt-button-collection a.dt-button:active:not(.disabled),
|
||||
div.dt-button-collection a.dt-button.active:not(.disabled) {
|
||||
background-color: #dadada;
|
||||
/* Fallback */
|
||||
background-image: -webkit-linear-gradient(top, #f0f0f0 0%, #dadada 100%);
|
||||
/* Chrome 10+, Saf5.1+, iOS 5+ */
|
||||
background-image: -moz-linear-gradient(top, #f0f0f0 0%, #dadada 100%);
|
||||
/* FF3.6 */
|
||||
background-image: -ms-linear-gradient(top, #f0f0f0 0%, #dadada 100%);
|
||||
/* IE10 */
|
||||
background-image: -o-linear-gradient(top, #f0f0f0 0%, #dadada 100%);
|
||||
/* Opera 11.10+ */
|
||||
background-image: linear-gradient(top, #f0f0f0 0%, #dadada 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#f0f0f0', EndColorStr='#dadada');
|
||||
box-shadow: inset 1px 1px 3px #666;
|
||||
}
|
||||
div.dt-button-collection.fixed {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-left: -75px;
|
||||
border-radius: 0;
|
||||
}
|
||||
div.dt-button-collection.fixed.two-column {
|
||||
margin-left: -150px;
|
||||
}
|
||||
div.dt-button-collection.fixed.three-column {
|
||||
margin-left: -225px;
|
||||
}
|
||||
div.dt-button-collection.fixed.four-column {
|
||||
margin-left: -300px;
|
||||
}
|
||||
div.dt-button-collection > * {
|
||||
-webkit-column-break-inside: avoid;
|
||||
break-inside: avoid;
|
||||
}
|
||||
div.dt-button-collection.two-column {
|
||||
width: 300px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 2;
|
||||
-moz-column-count: 2;
|
||||
-ms-column-count: 2;
|
||||
-o-column-count: 2;
|
||||
column-count: 2;
|
||||
}
|
||||
div.dt-button-collection.three-column {
|
||||
width: 450px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 3;
|
||||
-moz-column-count: 3;
|
||||
-ms-column-count: 3;
|
||||
-o-column-count: 3;
|
||||
column-count: 3;
|
||||
}
|
||||
div.dt-button-collection.four-column {
|
||||
width: 600px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 4;
|
||||
-moz-column-count: 4;
|
||||
-ms-column-count: 4;
|
||||
-o-column-count: 4;
|
||||
column-count: 4;
|
||||
}
|
||||
|
||||
div.dt-button-background {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
/* Fallback */
|
||||
background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
|
||||
/* IE10 Consumer Preview */
|
||||
background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
|
||||
/* Firefox */
|
||||
background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
|
||||
/* Opera */
|
||||
background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));
|
||||
/* Webkit (Safari/Chrome 10) */
|
||||
background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
|
||||
/* Webkit (Chrome 11+) */
|
||||
background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
|
||||
/* W3C Markup, IE10 Release Preview */
|
||||
z-index: 2001;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 640px) {
|
||||
div.dt-buttons {
|
||||
float: none !important;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
1
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/css/buttons.dataTables.min.css
vendored
Normal file
1
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/css/buttons.dataTables.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -0,0 +1,129 @@
|
||||
div.dt-button-info {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 400px;
|
||||
margin-top: -100px;
|
||||
margin-left: -200px;
|
||||
background-color: white;
|
||||
border: 2px solid #111;
|
||||
box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3);
|
||||
border-radius: 3px;
|
||||
text-align: center;
|
||||
z-index: 21;
|
||||
}
|
||||
div.dt-button-info h2 {
|
||||
padding: 0.5em;
|
||||
margin: 0;
|
||||
font-weight: normal;
|
||||
border-bottom: 1px solid #ddd;
|
||||
background-color: #f3f3f3;
|
||||
}
|
||||
div.dt-button-info > div {
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
ul.dt-buttons li {
|
||||
margin: 0;
|
||||
}
|
||||
ul.dt-buttons li.active a {
|
||||
box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.6);
|
||||
}
|
||||
|
||||
ul.dt-buttons.button-group a {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
ul.dt-button-collection.f-dropdown {
|
||||
-webkit-column-gap: 8px;
|
||||
-moz-column-gap: 8px;
|
||||
-ms-column-gap: 8px;
|
||||
-o-column-gap: 8px;
|
||||
column-gap: 8px;
|
||||
}
|
||||
ul.dt-button-collection.f-dropdown.fixed {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-left: -75px;
|
||||
border-radius: 0;
|
||||
}
|
||||
ul.dt-button-collection.f-dropdown.fixed.two-column {
|
||||
margin-left: -150px;
|
||||
}
|
||||
ul.dt-button-collection.f-dropdown.fixed.three-column {
|
||||
margin-left: -225px;
|
||||
}
|
||||
ul.dt-button-collection.f-dropdown.fixed.four-column {
|
||||
margin-left: -300px;
|
||||
}
|
||||
ul.dt-button-collection.f-dropdown > * {
|
||||
-webkit-column-break-inside: avoid;
|
||||
break-inside: avoid;
|
||||
}
|
||||
ul.dt-button-collection.f-dropdown.two-column {
|
||||
width: 300px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 2;
|
||||
-moz-column-count: 2;
|
||||
-ms-column-count: 2;
|
||||
-o-column-count: 2;
|
||||
column-count: 2;
|
||||
}
|
||||
ul.dt-button-collection.f-dropdown.three-column {
|
||||
width: 450px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 3;
|
||||
-moz-column-count: 3;
|
||||
-ms-column-count: 3;
|
||||
-o-column-count: 3;
|
||||
column-count: 3;
|
||||
}
|
||||
ul.dt-button-collection.f-dropdown.four-column {
|
||||
width: 600px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 4;
|
||||
-moz-column-count: 4;
|
||||
-ms-column-count: 4;
|
||||
-o-column-count: 4;
|
||||
column-count: 4;
|
||||
}
|
||||
ul.dt-button-collection.f-dropdown.fixed {
|
||||
max-width: none;
|
||||
}
|
||||
ul.dt-button-collection.f-dropdown.fixed:before, ul.dt-button-collection.f-dropdown.fixed:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
div.dt-button-background {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 88;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
ul.dt-buttons {
|
||||
float: none;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
ul.dt-buttons li {
|
||||
float: none;
|
||||
}
|
||||
}
|
||||
div.button-group.stacked.dropdown-pane {
|
||||
margin-top: 2px;
|
||||
padding: 1px;
|
||||
z-index: 89;
|
||||
}
|
||||
div.button-group.stacked.dropdown-pane a.button {
|
||||
margin-bottom: 1px;
|
||||
border-right: none;
|
||||
}
|
||||
div.button-group.stacked.dropdown-pane a.button:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
1
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/css/buttons.foundation.min.css
vendored
Normal file
1
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/css/buttons.foundation.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}ul.dt-buttons li{margin:0}ul.dt-buttons li.active a{box-shadow:inset 0 0 10px rgba(0,0,0,0.6)}ul.dt-buttons.button-group a{margin-bottom:0}ul.dt-button-collection.f-dropdown{-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}ul.dt-button-collection.f-dropdown.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}ul.dt-button-collection.f-dropdown.fixed.two-column{margin-left:-150px}ul.dt-button-collection.f-dropdown.fixed.three-column{margin-left:-225px}ul.dt-button-collection.f-dropdown.fixed.four-column{margin-left:-300px}ul.dt-button-collection.f-dropdown>*{-webkit-column-break-inside:avoid;break-inside:avoid}ul.dt-button-collection.f-dropdown.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}ul.dt-button-collection.f-dropdown.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}ul.dt-button-collection.f-dropdown.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}ul.dt-button-collection.f-dropdown.fixed{max-width:none}ul.dt-button-collection.f-dropdown.fixed:before,ul.dt-button-collection.f-dropdown.fixed:after{display:none}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:88}@media screen and (max-width: 767px){ul.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:0.5rem}ul.dt-buttons li{float:none}}div.button-group.stacked.dropdown-pane{margin-top:2px;padding:1px;z-index:89}div.button-group.stacked.dropdown-pane a.button{margin-bottom:1px;border-right:none}div.button-group.stacked.dropdown-pane a.button:last-child{margin-bottom:0}
|
||||
@ -0,0 +1,162 @@
|
||||
div.dt-button-info {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 400px;
|
||||
margin-top: -100px;
|
||||
margin-left: -200px;
|
||||
background-color: white;
|
||||
border: 2px solid #111;
|
||||
box-shadow: 3px 3px 8px rgba(0, 0, 0, 0.3);
|
||||
border-radius: 3px;
|
||||
text-align: center;
|
||||
z-index: 21;
|
||||
}
|
||||
div.dt-button-info h2 {
|
||||
padding: 0.5em;
|
||||
margin: 0;
|
||||
font-weight: normal;
|
||||
border-bottom: 1px solid #ddd;
|
||||
background-color: #f3f3f3;
|
||||
}
|
||||
div.dt-button-info > div {
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
div.dt-buttons {
|
||||
position: relative;
|
||||
float: left;
|
||||
}
|
||||
div.dt-buttons .dt-button {
|
||||
margin-right: 0;
|
||||
}
|
||||
div.dt-buttons .dt-button span.ui-icon {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin-top: -2px;
|
||||
}
|
||||
div.dt-buttons .dt-button:active {
|
||||
outline: none;
|
||||
}
|
||||
div.dt-buttons .dt-button:hover > span {
|
||||
background-color: rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
div.dt-button-collection {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 150px;
|
||||
margin-top: 3px;
|
||||
padding: 8px 8px 4px 8px;
|
||||
border: 1px solid #ccc;
|
||||
border: 1px solid rgba(0, 0, 0, 0.4);
|
||||
background-color: #f3f3f3;
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
overflow: hidden;
|
||||
z-index: 2002;
|
||||
border-radius: 5px;
|
||||
box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.3);
|
||||
z-index: 2002;
|
||||
-webkit-column-gap: 8px;
|
||||
-moz-column-gap: 8px;
|
||||
-ms-column-gap: 8px;
|
||||
-o-column-gap: 8px;
|
||||
column-gap: 8px;
|
||||
-webkit-column-gap: 0;
|
||||
-moz-column-gap: 0;
|
||||
-ms-column-gap: 0;
|
||||
-o-column-gap: 0;
|
||||
column-gap: 0;
|
||||
}
|
||||
div.dt-button-collection .dt-button {
|
||||
position: relative;
|
||||
left: 0;
|
||||
right: 0;
|
||||
display: block;
|
||||
float: none;
|
||||
margin-right: 0;
|
||||
}
|
||||
div.dt-button-collection .dt-button:last-child {
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
div.dt-button-collection .dt-button:hover > span {
|
||||
background-color: rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
div.dt-button-collection.fixed {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-left: -75px;
|
||||
border-radius: 0;
|
||||
}
|
||||
div.dt-button-collection.fixed.two-column {
|
||||
margin-left: -150px;
|
||||
}
|
||||
div.dt-button-collection.fixed.three-column {
|
||||
margin-left: -225px;
|
||||
}
|
||||
div.dt-button-collection.fixed.four-column {
|
||||
margin-left: -300px;
|
||||
}
|
||||
div.dt-button-collection > * {
|
||||
-webkit-column-break-inside: avoid;
|
||||
break-inside: avoid;
|
||||
}
|
||||
div.dt-button-collection.two-column {
|
||||
width: 300px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 2;
|
||||
-moz-column-count: 2;
|
||||
-ms-column-count: 2;
|
||||
-o-column-count: 2;
|
||||
column-count: 2;
|
||||
}
|
||||
div.dt-button-collection.three-column {
|
||||
width: 450px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 3;
|
||||
-moz-column-count: 3;
|
||||
-ms-column-count: 3;
|
||||
-o-column-count: 3;
|
||||
column-count: 3;
|
||||
}
|
||||
div.dt-button-collection.four-column {
|
||||
width: 600px;
|
||||
padding-bottom: 1px;
|
||||
-webkit-column-count: 4;
|
||||
-moz-column-count: 4;
|
||||
-ms-column-count: 4;
|
||||
-o-column-count: 4;
|
||||
column-count: 4;
|
||||
}
|
||||
|
||||
div.dt-button-background {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.7);
|
||||
/* Fallback */
|
||||
background: -ms-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
|
||||
/* IE10 Consumer Preview */
|
||||
background: -moz-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
|
||||
/* Firefox */
|
||||
background: -o-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
|
||||
/* Opera */
|
||||
background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0, 0, 0, 0.3)), color-stop(1, rgba(0, 0, 0, 0.7)));
|
||||
/* Webkit (Safari/Chrome 10) */
|
||||
background: -webkit-radial-gradient(center, ellipse farthest-corner, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
|
||||
/* Webkit (Chrome 11+) */
|
||||
background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);
|
||||
/* W3C Markup, IE10 Release Preview */
|
||||
z-index: 2001;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 640px) {
|
||||
div.dt-buttons {
|
||||
float: none !important;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
1
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/css/buttons.jqueryui.min.css
vendored
Normal file
1
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/css/buttons.jqueryui.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}div.dt-buttons{position:relative;float:left}div.dt-buttons .dt-button{margin-right:0}div.dt-buttons .dt-button span.ui-icon{display:inline-block;vertical-align:middle;margin-top:-2px}div.dt-buttons .dt-button:active{outline:none}div.dt-buttons .dt-button:hover>span{background-color:rgba(0,0,0,0.05)}div.dt-button-collection{position:absolute;top:0;left:0;width:150px;margin-top:3px;padding:8px 8px 4px 8px;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.4);background-color:#f3f3f3;background-color:rgba(255,255,255,0.3);overflow:hidden;z-index:2002;border-radius:5px;box-shadow:3px 3px 5px rgba(0,0,0,0.3);z-index:2002;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px;-webkit-column-gap:0;-moz-column-gap:0;-ms-column-gap:0;-o-column-gap:0;column-gap:0}div.dt-button-collection .dt-button{position:relative;left:0;right:0;display:block;float:none;margin-right:0}div.dt-button-collection .dt-button:last-child{margin-bottom:4px}div.dt-button-collection .dt-button:hover>span{background-color:rgba(0,0,0,0.05)}div.dt-button-collection.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}div.dt-button-collection.fixed.two-column{margin-left:-150px}div.dt-button-collection.fixed.three-column{margin-left:-225px}div.dt-button-collection.fixed.four-column{margin-left:-300px}div.dt-button-collection>*{-webkit-column-break-inside:avoid;break-inside:avoid}div.dt-button-collection.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}div.dt-button-collection.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}div.dt-button-collection.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);background:-ms-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:-moz-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:-o-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:-webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, rgba(0,0,0,0.3)), color-stop(1, rgba(0,0,0,0.7)));background:-webkit-radial-gradient(center, ellipse farthest-corner, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);background:radial-gradient(ellipse farthest-corner at center, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.7) 100%);z-index:2001}@media screen and (max-width: 640px){div.dt-buttons{float:none !important;text-align:center}}
|
||||
@ -0,0 +1,27 @@
|
||||
|
||||
div.dt-button-info {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 400px;
|
||||
margin-top: -100px;
|
||||
margin-left: -200px;
|
||||
background-color: white;
|
||||
border: 2px solid #111;
|
||||
box-shadow: 3px 3px 8px rgba( 0, 0, 0, 0.3);
|
||||
border-radius: 3px;
|
||||
text-align: center;
|
||||
z-index: 21;
|
||||
|
||||
h2 {
|
||||
padding: 0.5em;
|
||||
margin: 0;
|
||||
font-weight: normal;
|
||||
border-bottom: 1px solid #ddd;
|
||||
background-color: #f3f3f3;
|
||||
}
|
||||
|
||||
> div {
|
||||
padding: 1em;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,89 @@
|
||||
|
||||
@mixin dtb-two-stop-gradient($fromColor, $toColor) {
|
||||
background-color: $toColor; /* Fallback */
|
||||
background-image: -webkit-linear-gradient(top, $fromColor 0%, $toColor 100%); /* Chrome 10+, Saf5.1+, iOS 5+ */
|
||||
background-image: -moz-linear-gradient(top, $fromColor 0%, $toColor 100%); /* FF3.6 */
|
||||
background-image: -ms-linear-gradient(top, $fromColor 0%, $toColor 100%); /* IE10 */
|
||||
background-image: -o-linear-gradient(top, $fromColor 0%, $toColor 100%); /* Opera 11.10+ */
|
||||
background-image: linear-gradient(top, $fromColor 0%, $toColor 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#{nth( $fromColor, 1 )}', EndColorStr='#{nth( $toColor, 1 )}');
|
||||
}
|
||||
|
||||
@mixin dtb-radial-gradient ($fromColor, $toColor ) {
|
||||
background: $toColor; /* Fallback */
|
||||
background: -ms-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* IE10 Consumer Preview */
|
||||
background: -moz-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* Firefox */
|
||||
background: -o-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* Opera */
|
||||
background: -webkit-gradient(radial, center center, 0, center center, 497, color-stop(0, $fromColor), color-stop(1, $toColor)); /* Webkit (Safari/Chrome 10) */
|
||||
background: -webkit-radial-gradient(center, ellipse farthest-corner, $fromColor 0%, $toColor 100%); /* Webkit (Chrome 11+) */
|
||||
background: radial-gradient(ellipse farthest-corner at center, $fromColor 0%, $toColor 100%); /* W3C Markup, IE10 Release Preview */
|
||||
}
|
||||
|
||||
|
||||
@mixin dtb-fixed-collection {
|
||||
// Fixed positioning feature
|
||||
&.fixed {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-left: -75px;
|
||||
border-radius: 0;
|
||||
|
||||
&.two-column {
|
||||
margin-left: -150px;
|
||||
}
|
||||
|
||||
&.three-column {
|
||||
margin-left: -225px;
|
||||
}
|
||||
|
||||
&.four-column {
|
||||
margin-left: -300px;
|
||||
}
|
||||
}
|
||||
|
||||
// Multi-column layout feature
|
||||
-webkit-column-gap: 8px;
|
||||
-moz-column-gap: 8px;
|
||||
-ms-column-gap: 8px;
|
||||
-o-column-gap: 8px;
|
||||
column-gap: 8px;
|
||||
|
||||
> * {
|
||||
-webkit-column-break-inside: avoid;
|
||||
break-inside: avoid;
|
||||
}
|
||||
|
||||
&.two-column {
|
||||
width: 300px;
|
||||
padding-bottom: 1px;
|
||||
|
||||
-webkit-column-count: 2;
|
||||
-moz-column-count: 2;
|
||||
-ms-column-count: 2;
|
||||
-o-column-count: 2;
|
||||
column-count: 2;
|
||||
}
|
||||
|
||||
&.three-column {
|
||||
width: 450px;
|
||||
padding-bottom: 1px;
|
||||
|
||||
-webkit-column-count: 3;
|
||||
-moz-column-count: 3;
|
||||
-ms-column-count: 3;
|
||||
-o-column-count: 3;
|
||||
column-count: 3;
|
||||
}
|
||||
|
||||
&.four-column {
|
||||
width: 600px;
|
||||
padding-bottom: 1px;
|
||||
|
||||
-webkit-column-count: 4;
|
||||
-moz-column-count: 4;
|
||||
-ms-column-count: 4;
|
||||
-o-column-count: 4;
|
||||
column-count: 4;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,68 @@
|
||||
/*! Bootstrap integration for DataTables' Buttons
|
||||
* ©2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net-bs', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
$ = require('datatables.net-bs')(root, $).$;
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
$.extend( true, DataTable.Buttons.defaults, {
|
||||
dom: {
|
||||
container: {
|
||||
className: 'dt-buttons btn-group'
|
||||
},
|
||||
button: {
|
||||
className: 'btn btn-default'
|
||||
},
|
||||
collection: {
|
||||
tag: 'ul',
|
||||
className: 'dt-button-collection dropdown-menu',
|
||||
button: {
|
||||
tag: 'li',
|
||||
className: 'dt-button'
|
||||
},
|
||||
buttonLiner: {
|
||||
tag: 'a',
|
||||
className: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
||||
DataTable.ext.buttons.collection.text = function ( dt ) {
|
||||
return dt.i18n('buttons.collection', 'Collection <span class="caret"/>');
|
||||
};
|
||||
|
||||
|
||||
return DataTable.Buttons;
|
||||
}));
|
||||
6
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.bootstrap.min.js
vendored
Normal file
6
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.bootstrap.min.js
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
Bootstrap integration for DataTables' Buttons
|
||||
©2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-bs")(a,b).$;b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group"},
|
||||
button:{className:"btn btn-default"},collection:{tag:"ul",className:"dt-button-collection dropdown-menu",button:{tag:"li",className:"dt-button"},buttonLiner:{tag:"a",className:""}}}});a.ext.buttons.collection.text=function(a){return a.i18n("buttons.collection",'Collection <span class="caret"/>')};return a.Buttons});
|
||||
@ -0,0 +1,60 @@
|
||||
/*! Bootstrap integration for DataTables' Buttons
|
||||
* ©2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net-bs4', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
$ = require('datatables.net-bs4')(root, $).$;
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
$.extend( true, DataTable.Buttons.defaults, {
|
||||
dom: {
|
||||
container: {
|
||||
className: 'dt-buttons btn-group'
|
||||
},
|
||||
button: {
|
||||
className: 'btn btn-secondary'
|
||||
},
|
||||
collection: {
|
||||
tag: 'div',
|
||||
className: 'dt-button-collection dropdown-menu',
|
||||
button: {
|
||||
tag: 'a',
|
||||
className: 'dt-button dropdown-item'
|
||||
}
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
||||
DataTable.ext.buttons.collection.className += ' dropdown-toggle';
|
||||
|
||||
return DataTable.Buttons;
|
||||
}));
|
||||
6
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.bootstrap4.min.js
vendored
Normal file
6
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.bootstrap4.min.js
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
Bootstrap integration for DataTables' Buttons
|
||||
©2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-bs4")(a,b).$;b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group"},
|
||||
button:{className:"btn btn-secondary"},collection:{tag:"div",className:"dt-button-collection dropdown-menu",button:{tag:"a",className:"dt-button dropdown-item"}}}});a.ext.buttons.collection.className+=" dropdown-toggle";return a.Buttons});
|
||||
@ -0,0 +1,197 @@
|
||||
/*!
|
||||
* Column visibility buttons for Buttons and DataTables.
|
||||
* 2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
$ = require('datatables.net')(root, $).$;
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
$.extend( DataTable.ext.buttons, {
|
||||
// A collection of column visibility buttons
|
||||
colvis: function ( dt, conf ) {
|
||||
return {
|
||||
extend: 'collection',
|
||||
text: function ( dt ) {
|
||||
return dt.i18n( 'buttons.colvis', 'Column visibility' );
|
||||
},
|
||||
className: 'buttons-colvis',
|
||||
buttons: [ {
|
||||
extend: 'columnsToggle',
|
||||
columns: conf.columns
|
||||
} ]
|
||||
};
|
||||
},
|
||||
|
||||
// Selected columns with individual buttons - toggle column visibility
|
||||
columnsToggle: function ( dt, conf ) {
|
||||
var columns = dt.columns( conf.columns ).indexes().map( function ( idx ) {
|
||||
return {
|
||||
extend: 'columnToggle',
|
||||
columns: idx
|
||||
};
|
||||
} ).toArray();
|
||||
|
||||
return columns;
|
||||
},
|
||||
|
||||
// Single button to toggle column visibility
|
||||
columnToggle: function ( dt, conf ) {
|
||||
return {
|
||||
extend: 'columnVisibility',
|
||||
columns: conf.columns
|
||||
};
|
||||
},
|
||||
|
||||
// Selected columns with individual buttons - set column visibility
|
||||
columnsVisibility: function ( dt, conf ) {
|
||||
var columns = dt.columns( conf.columns ).indexes().map( function ( idx ) {
|
||||
return {
|
||||
extend: 'columnVisibility',
|
||||
columns: idx,
|
||||
visibility: conf.visibility
|
||||
};
|
||||
} ).toArray();
|
||||
|
||||
return columns;
|
||||
},
|
||||
|
||||
// Single button to set column visibility
|
||||
columnVisibility: {
|
||||
columns: undefined, // column selector
|
||||
text: function ( dt, button, conf ) {
|
||||
return conf._columnText( dt, conf.columns );
|
||||
},
|
||||
className: 'buttons-columnVisibility',
|
||||
action: function ( e, dt, button, conf ) {
|
||||
var col = dt.columns( conf.columns );
|
||||
var curr = col.visible();
|
||||
|
||||
col.visible( conf.visibility !== undefined ?
|
||||
conf.visibility :
|
||||
! (curr.length ? curr[0] : false )
|
||||
);
|
||||
},
|
||||
init: function ( dt, button, conf ) {
|
||||
var that = this;
|
||||
var col = dt.column( conf.columns );
|
||||
|
||||
dt
|
||||
.on( 'column-visibility.dt'+conf.namespace, function (e, settings, column, state) {
|
||||
if ( ! settings.bDestroying && column === conf.columns ) {
|
||||
that.active( state );
|
||||
}
|
||||
} )
|
||||
.on( 'column-reorder.dt'+conf.namespace, function (e, settings, details) {
|
||||
// Don't rename buttons based on column name if the button
|
||||
// controls more than one column!
|
||||
if ( dt.columns( conf.columns ).count() !== 1 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( typeof conf.columns === 'number' ) {
|
||||
conf.columns = details.mapping[ conf.columns ];
|
||||
}
|
||||
|
||||
var col = dt.column( conf.columns );
|
||||
|
||||
that.text( conf._columnText( dt, conf.columns ) );
|
||||
that.active( col.visible() );
|
||||
} );
|
||||
|
||||
this.active( col.visible() );
|
||||
},
|
||||
destroy: function ( dt, button, conf ) {
|
||||
dt
|
||||
.off( 'column-visibility.dt'+conf.namespace )
|
||||
.off( 'column-reorder.dt'+conf.namespace );
|
||||
},
|
||||
|
||||
_columnText: function ( dt, col ) {
|
||||
// Use DataTables' internal data structure until this is presented
|
||||
// is a public API. The other option is to use
|
||||
// `$( column(col).node() ).text()` but the node might not have been
|
||||
// populated when Buttons is constructed.
|
||||
var idx = dt.column( col ).index();
|
||||
return dt.settings()[0].aoColumns[ idx ].sTitle
|
||||
.replace(/\n/g," ") // remove new lines
|
||||
.replace( /<.*?>/g, "" ) // strip HTML
|
||||
.replace(/^\s+|\s+$/g,""); // trim
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
colvisRestore: {
|
||||
className: 'buttons-colvisRestore',
|
||||
|
||||
text: function ( dt ) {
|
||||
return dt.i18n( 'buttons.colvisRestore', 'Restore visibility' );
|
||||
},
|
||||
|
||||
init: function ( dt, button, conf ) {
|
||||
conf._visOriginal = dt.columns().indexes().map( function ( idx ) {
|
||||
return dt.column( idx ).visible();
|
||||
} ).toArray();
|
||||
},
|
||||
|
||||
action: function ( e, dt, button, conf ) {
|
||||
dt.columns().every( function ( i ) {
|
||||
// Take into account that ColReorder might have disrupted our
|
||||
// indexes
|
||||
var idx = dt.colReorder && dt.colReorder.transpose ?
|
||||
dt.colReorder.transpose( i, 'toOriginal' ) :
|
||||
i;
|
||||
|
||||
this.visible( conf._visOriginal[ idx ] );
|
||||
} );
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
colvisGroup: {
|
||||
className: 'buttons-colvisGroup',
|
||||
|
||||
action: function ( e, dt, button, conf ) {
|
||||
dt.columns( conf.show ).visible( true );
|
||||
dt.columns( conf.hide ).visible( false );
|
||||
},
|
||||
|
||||
show: [],
|
||||
|
||||
hide: []
|
||||
}
|
||||
} );
|
||||
|
||||
|
||||
return DataTable.Buttons;
|
||||
}));
|
||||
5
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.colVis.min.js
vendored
Normal file
5
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.colVis.min.js
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
(function(g){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(d){return g(d,window,document)}):"object"===typeof exports?module.exports=function(d,e){d||(d=window);if(!e||!e.fn.dataTable)e=require("datatables.net")(d,e).$;e.fn.dataTable.Buttons||require("datatables.net-buttons")(d,e);return g(e,d,d.document)}:g(jQuery,window,document)})(function(g,d,e,h){d=g.fn.dataTable;g.extend(d.ext.buttons,{colvis:function(b,a){return{extend:"collection",
|
||||
text:function(c){return c.i18n("buttons.colvis","Column visibility")},className:"buttons-colvis",buttons:[{extend:"columnsToggle",columns:a.columns}]}},columnsToggle:function(b,a){return b.columns(a.columns).indexes().map(function(c){return{extend:"columnToggle",columns:c}}).toArray()},columnToggle:function(b,a){return{extend:"columnVisibility",columns:a.columns}},columnsVisibility:function(b,a){return b.columns(a.columns).indexes().map(function(c){return{extend:"columnVisibility",columns:c,visibility:a.visibility}}).toArray()},
|
||||
columnVisibility:{columns:h,text:function(b,a,c){return c._columnText(b,c.columns)},className:"buttons-columnVisibility",action:function(b,a,c,f){b=a.columns(f.columns);a=b.visible();b.visible(f.visibility!==h?f.visibility:!(a.length&&a[0]))},init:function(b,a,c){var f=this,a=b.column(c.columns);b.on("column-visibility.dt"+c.namespace,function(b,a,d,e){!a.bDestroying&&d===c.columns&&f.active(e)}).on("column-reorder.dt"+c.namespace,function(a,d,e){1===b.columns(c.columns).count()&&("number"===typeof c.columns&&
|
||||
(c.columns=e.mapping[c.columns]),a=b.column(c.columns),f.text(c._columnText(b,c.columns)),f.active(a.visible()))});this.active(a.visible())},destroy:function(b,a,c){b.off("column-visibility.dt"+c.namespace).off("column-reorder.dt"+c.namespace)},_columnText:function(b,a){var c=b.column(a).index();return b.settings()[0].aoColumns[c].sTitle.replace(/\n/g," ").replace(/<.*?>/g,"").replace(/^\s+|\s+$/g,"")}},colvisRestore:{className:"buttons-colvisRestore",text:function(b){return b.i18n("buttons.colvisRestore",
|
||||
"Restore visibility")},init:function(b,a,c){c._visOriginal=b.columns().indexes().map(function(a){return b.column(a).visible()}).toArray()},action:function(b,a,c,d){a.columns().every(function(b){b=a.colReorder&&a.colReorder.transpose?a.colReorder.transpose(b,"toOriginal"):b;this.visible(d._visOriginal[b])})}},colvisGroup:{className:"buttons-colvisGroup",action:function(b,a,c,d){a.columns(d.show).visible(!0);a.columns(d.hide).visible(!1)},show:[],hide:[]}});return d.Buttons});
|
||||
@ -0,0 +1,877 @@
|
||||
/*!
|
||||
* Flash export buttons for Buttons and DataTables.
|
||||
* 2015 SpryMedia Ltd - datatables.net/license
|
||||
*
|
||||
* ZeroClipbaord - MIT license
|
||||
* Copyright (c) 2012 Joseph Huckaby
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
$ = require('datatables.net')(root, $).$;
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* ZeroClipboard dependency
|
||||
*/
|
||||
|
||||
/*
|
||||
* ZeroClipboard 1.0.4 with modifications
|
||||
* Author: Joseph Huckaby
|
||||
* License: MIT
|
||||
*
|
||||
* Copyright (c) 2012 Joseph Huckaby
|
||||
*/
|
||||
var ZeroClipboard_TableTools = {
|
||||
version: "1.0.4-TableTools2",
|
||||
clients: {}, // registered upload clients on page, indexed by id
|
||||
moviePath: '', // URL to movie
|
||||
nextId: 1, // ID of next movie
|
||||
|
||||
$: function(thingy) {
|
||||
// simple DOM lookup utility function
|
||||
if (typeof(thingy) == 'string') {
|
||||
thingy = document.getElementById(thingy);
|
||||
}
|
||||
if (!thingy.addClass) {
|
||||
// extend element with a few useful methods
|
||||
thingy.hide = function() { this.style.display = 'none'; };
|
||||
thingy.show = function() { this.style.display = ''; };
|
||||
thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
|
||||
thingy.removeClass = function(name) {
|
||||
this.className = this.className.replace( new RegExp("\\s*" + name + "\\s*"), " ").replace(/^\s+/, '').replace(/\s+$/, '');
|
||||
};
|
||||
thingy.hasClass = function(name) {
|
||||
return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
|
||||
};
|
||||
}
|
||||
return thingy;
|
||||
},
|
||||
|
||||
setMoviePath: function(path) {
|
||||
// set path to ZeroClipboard.swf
|
||||
this.moviePath = path;
|
||||
},
|
||||
|
||||
dispatch: function(id, eventName, args) {
|
||||
// receive event from flash movie, send to client
|
||||
var client = this.clients[id];
|
||||
if (client) {
|
||||
client.receiveEvent(eventName, args);
|
||||
}
|
||||
},
|
||||
|
||||
register: function(id, client) {
|
||||
// register new client to receive events
|
||||
this.clients[id] = client;
|
||||
},
|
||||
|
||||
getDOMObjectPosition: function(obj) {
|
||||
// get absolute coordinates for dom element
|
||||
var info = {
|
||||
left: 0,
|
||||
top: 0,
|
||||
width: obj.width ? obj.width : obj.offsetWidth,
|
||||
height: obj.height ? obj.height : obj.offsetHeight
|
||||
};
|
||||
|
||||
if ( obj.style.width !== "" ) {
|
||||
info.width = obj.style.width.replace("px","");
|
||||
}
|
||||
|
||||
if ( obj.style.height !== "" ) {
|
||||
info.height = obj.style.height.replace("px","");
|
||||
}
|
||||
|
||||
while (obj) {
|
||||
info.left += obj.offsetLeft;
|
||||
info.top += obj.offsetTop;
|
||||
obj = obj.offsetParent;
|
||||
}
|
||||
|
||||
return info;
|
||||
},
|
||||
|
||||
Client: function(elem) {
|
||||
// constructor for new simple upload client
|
||||
this.handlers = {};
|
||||
|
||||
// unique ID
|
||||
this.id = ZeroClipboard_TableTools.nextId++;
|
||||
this.movieId = 'ZeroClipboard_TableToolsMovie_' + this.id;
|
||||
|
||||
// register client with singleton to receive flash events
|
||||
ZeroClipboard_TableTools.register(this.id, this);
|
||||
|
||||
// create movie
|
||||
if (elem) {
|
||||
this.glue(elem);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
ZeroClipboard_TableTools.Client.prototype = {
|
||||
|
||||
id: 0, // unique ID for us
|
||||
ready: false, // whether movie is ready to receive events or not
|
||||
movie: null, // reference to movie object
|
||||
clipText: '', // text to copy to clipboard
|
||||
fileName: '', // default file save name
|
||||
action: 'copy', // action to perform
|
||||
handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
|
||||
cssEffects: true, // enable CSS mouse effects on dom container
|
||||
handlers: null, // user event handlers
|
||||
sized: false,
|
||||
sheetName: '', // default sheet name for excel export
|
||||
|
||||
glue: function(elem, title) {
|
||||
// glue to DOM element
|
||||
// elem can be ID or actual DOM element object
|
||||
this.domElement = ZeroClipboard_TableTools.$(elem);
|
||||
|
||||
// float just above object, or zIndex 99 if dom element isn't set
|
||||
var zIndex = 99;
|
||||
if (this.domElement.style.zIndex) {
|
||||
zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
|
||||
}
|
||||
|
||||
// find X/Y position of domElement
|
||||
var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
|
||||
|
||||
// create floating DIV above element
|
||||
this.div = document.createElement('div');
|
||||
var style = this.div.style;
|
||||
style.position = 'absolute';
|
||||
style.left = '0px';
|
||||
style.top = '0px';
|
||||
style.width = (box.width) + 'px';
|
||||
style.height = box.height + 'px';
|
||||
style.zIndex = zIndex;
|
||||
|
||||
if ( typeof title != "undefined" && title !== "" ) {
|
||||
this.div.title = title;
|
||||
}
|
||||
if ( box.width !== 0 && box.height !== 0 ) {
|
||||
this.sized = true;
|
||||
}
|
||||
|
||||
// style.backgroundColor = '#f00'; // debug
|
||||
if ( this.domElement ) {
|
||||
this.domElement.appendChild(this.div);
|
||||
this.div.innerHTML = this.getHTML( box.width, box.height ).replace(/&/g, '&');
|
||||
}
|
||||
},
|
||||
|
||||
positionElement: function() {
|
||||
var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
|
||||
var style = this.div.style;
|
||||
|
||||
style.position = 'absolute';
|
||||
//style.left = (this.domElement.offsetLeft)+'px';
|
||||
//style.top = this.domElement.offsetTop+'px';
|
||||
style.width = box.width + 'px';
|
||||
style.height = box.height + 'px';
|
||||
|
||||
if ( box.width !== 0 && box.height !== 0 ) {
|
||||
this.sized = true;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
var flash = this.div.childNodes[0];
|
||||
flash.width = box.width;
|
||||
flash.height = box.height;
|
||||
},
|
||||
|
||||
getHTML: function(width, height) {
|
||||
// return HTML for movie
|
||||
var html = '';
|
||||
var flashvars = 'id=' + this.id +
|
||||
'&width=' + width +
|
||||
'&height=' + height;
|
||||
|
||||
if (navigator.userAgent.match(/MSIE/)) {
|
||||
// IE gets an OBJECT tag
|
||||
var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
|
||||
html += '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard_TableTools.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';
|
||||
}
|
||||
else {
|
||||
// all other browsers get an EMBED tag
|
||||
html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard_TableTools.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';
|
||||
}
|
||||
return html;
|
||||
},
|
||||
|
||||
hide: function() {
|
||||
// temporarily hide floater offscreen
|
||||
if (this.div) {
|
||||
this.div.style.left = '-2000px';
|
||||
}
|
||||
},
|
||||
|
||||
show: function() {
|
||||
// show ourselves after a call to hide()
|
||||
this.reposition();
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
// destroy control and floater
|
||||
var that = this;
|
||||
|
||||
if (this.domElement && this.div) {
|
||||
$(this.div).remove();
|
||||
|
||||
this.domElement = null;
|
||||
this.div = null;
|
||||
|
||||
$.each( ZeroClipboard_TableTools.clients, function ( id, client ) {
|
||||
if ( client === that ) {
|
||||
delete ZeroClipboard_TableTools.clients[ id ];
|
||||
}
|
||||
} );
|
||||
}
|
||||
},
|
||||
|
||||
reposition: function(elem) {
|
||||
// reposition our floating div, optionally to new container
|
||||
// warning: container CANNOT change size, only position
|
||||
if (elem) {
|
||||
this.domElement = ZeroClipboard_TableTools.$(elem);
|
||||
if (!this.domElement) {
|
||||
this.hide();
|
||||
}
|
||||
}
|
||||
|
||||
if (this.domElement && this.div) {
|
||||
var box = ZeroClipboard_TableTools.getDOMObjectPosition(this.domElement);
|
||||
var style = this.div.style;
|
||||
style.left = '' + box.left + 'px';
|
||||
style.top = '' + box.top + 'px';
|
||||
}
|
||||
},
|
||||
|
||||
clearText: function() {
|
||||
// clear the text to be copy / saved
|
||||
this.clipText = '';
|
||||
if (this.ready) {
|
||||
this.movie.clearText();
|
||||
}
|
||||
},
|
||||
|
||||
appendText: function(newText) {
|
||||
// append text to that which is to be copied / saved
|
||||
this.clipText += newText;
|
||||
if (this.ready) { this.movie.appendText(newText) ;}
|
||||
},
|
||||
|
||||
setText: function(newText) {
|
||||
// set text to be copied to be copied / saved
|
||||
this.clipText = newText;
|
||||
if (this.ready) { this.movie.setText(newText) ;}
|
||||
},
|
||||
|
||||
setFileName: function(newText) {
|
||||
// set the file name
|
||||
this.fileName = newText;
|
||||
if (this.ready) {
|
||||
this.movie.setFileName(newText);
|
||||
}
|
||||
},
|
||||
|
||||
setSheetName: function(newText) {
|
||||
// set sheet name, for excel
|
||||
this.sheetName = newText;
|
||||
if (this.ready) {
|
||||
this.movie.setSheetName(newText);
|
||||
}
|
||||
},
|
||||
|
||||
setAction: function(newText) {
|
||||
// set action (save or copy)
|
||||
this.action = newText;
|
||||
if (this.ready) {
|
||||
this.movie.setAction(newText);
|
||||
}
|
||||
},
|
||||
|
||||
addEventListener: function(eventName, func) {
|
||||
// add user event listener for event
|
||||
// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
|
||||
eventName = eventName.toString().toLowerCase().replace(/^on/, '');
|
||||
if (!this.handlers[eventName]) {
|
||||
this.handlers[eventName] = [];
|
||||
}
|
||||
this.handlers[eventName].push(func);
|
||||
},
|
||||
|
||||
setHandCursor: function(enabled) {
|
||||
// enable hand cursor (true), or default arrow cursor (false)
|
||||
this.handCursorEnabled = enabled;
|
||||
if (this.ready) {
|
||||
this.movie.setHandCursor(enabled);
|
||||
}
|
||||
},
|
||||
|
||||
setCSSEffects: function(enabled) {
|
||||
// enable or disable CSS effects on DOM container
|
||||
this.cssEffects = !!enabled;
|
||||
},
|
||||
|
||||
receiveEvent: function(eventName, args) {
|
||||
var self;
|
||||
|
||||
// receive event from flash
|
||||
eventName = eventName.toString().toLowerCase().replace(/^on/, '');
|
||||
|
||||
// special behavior for certain events
|
||||
switch (eventName) {
|
||||
case 'load':
|
||||
// movie claims it is ready, but in IE this isn't always the case...
|
||||
// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
|
||||
this.movie = document.getElementById(this.movieId);
|
||||
if (!this.movie) {
|
||||
self = this;
|
||||
setTimeout( function() { self.receiveEvent('load', null); }, 1 );
|
||||
return;
|
||||
}
|
||||
|
||||
// firefox on pc needs a "kick" in order to set these in certain cases
|
||||
if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
|
||||
self = this;
|
||||
setTimeout( function() { self.receiveEvent('load', null); }, 100 );
|
||||
this.ready = true;
|
||||
return;
|
||||
}
|
||||
|
||||
this.ready = true;
|
||||
this.movie.clearText();
|
||||
this.movie.appendText( this.clipText );
|
||||
this.movie.setFileName( this.fileName );
|
||||
this.movie.setAction( this.action );
|
||||
this.movie.setHandCursor( this.handCursorEnabled );
|
||||
break;
|
||||
|
||||
case 'mouseover':
|
||||
if (this.domElement && this.cssEffects) {
|
||||
//this.domElement.addClass('hover');
|
||||
if (this.recoverActive) {
|
||||
this.domElement.addClass('active');
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'mouseout':
|
||||
if (this.domElement && this.cssEffects) {
|
||||
this.recoverActive = false;
|
||||
if (this.domElement.hasClass('active')) {
|
||||
this.domElement.removeClass('active');
|
||||
this.recoverActive = true;
|
||||
}
|
||||
//this.domElement.removeClass('hover');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'mousedown':
|
||||
if (this.domElement && this.cssEffects) {
|
||||
this.domElement.addClass('active');
|
||||
}
|
||||
break;
|
||||
|
||||
case 'mouseup':
|
||||
if (this.domElement && this.cssEffects) {
|
||||
this.domElement.removeClass('active');
|
||||
this.recoverActive = false;
|
||||
}
|
||||
break;
|
||||
} // switch eventName
|
||||
|
||||
if (this.handlers[eventName]) {
|
||||
for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
|
||||
var func = this.handlers[eventName][idx];
|
||||
|
||||
if (typeof(func) == 'function') {
|
||||
// actual function reference
|
||||
func(this, args);
|
||||
}
|
||||
else if ((typeof(func) == 'object') && (func.length == 2)) {
|
||||
// PHP style object + method, i.e. [myObject, 'myMethod']
|
||||
func[0][ func[1] ](this, args);
|
||||
}
|
||||
else if (typeof(func) == 'string') {
|
||||
// name of function
|
||||
window[func](this, args);
|
||||
}
|
||||
} // foreach event handler defined
|
||||
} // user defined handler for event
|
||||
}
|
||||
};
|
||||
|
||||
ZeroClipboard_TableTools.hasFlash = function ()
|
||||
{
|
||||
try {
|
||||
var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
|
||||
if (fo) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
if (
|
||||
navigator.mimeTypes &&
|
||||
navigator.mimeTypes['application/x-shockwave-flash'] !== undefined &&
|
||||
navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
// For the Flash binding to work, ZeroClipboard_TableTools must be on the global
|
||||
// object list
|
||||
window.ZeroClipboard_TableTools = ZeroClipboard_TableTools;
|
||||
|
||||
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Local (private) functions
|
||||
*/
|
||||
|
||||
/**
|
||||
* If a Buttons instance is initlaised before it is placed into the DOM, Flash
|
||||
* won't be able to bind to it, so we need to wait until it is available, this
|
||||
* method abstracts that out.
|
||||
*
|
||||
* @param {ZeroClipboard} flash ZeroClipboard instance
|
||||
* @param {jQuery} node Button
|
||||
*/
|
||||
var _glue = function ( flash, node )
|
||||
{
|
||||
var id = node.attr('id');
|
||||
|
||||
if ( node.parents('html').length ) {
|
||||
flash.glue( node[0], '' );
|
||||
}
|
||||
else {
|
||||
setTimeout( function () {
|
||||
_glue( flash, node );
|
||||
}, 500 );
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the file name for an exported file.
|
||||
*
|
||||
* @param {object} config Button configuration
|
||||
* @param {boolean} incExtension Include the file name extension
|
||||
*/
|
||||
var _filename = function ( config, incExtension )
|
||||
{
|
||||
// Backwards compatibility
|
||||
var filename = config.filename === '*' && config.title !== '*' && config.title !== undefined ?
|
||||
config.title :
|
||||
config.filename;
|
||||
|
||||
if ( typeof filename === 'function' ) {
|
||||
filename = filename();
|
||||
}
|
||||
|
||||
if ( filename.indexOf( '*' ) !== -1 ) {
|
||||
filename = filename.replace( '*', $('title').text() );
|
||||
}
|
||||
|
||||
// Strip characters which the OS will object to
|
||||
filename = filename.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g, "");
|
||||
|
||||
return incExtension === undefined || incExtension === true ?
|
||||
filename+config.extension :
|
||||
filename;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the sheet name for Excel exports.
|
||||
*
|
||||
* @param {object} config Button configuration
|
||||
*/
|
||||
var _sheetname = function ( config )
|
||||
{
|
||||
var sheetName = 'Sheet1';
|
||||
|
||||
if ( config.sheetName ) {
|
||||
sheetName = config.sheetName.replace(/[\[\]\*\/\\\?\:]/g, '');
|
||||
}
|
||||
|
||||
return sheetName;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the title for an exported file.
|
||||
*
|
||||
* @param {object} config Button configuration
|
||||
*/
|
||||
var _title = function ( config )
|
||||
{
|
||||
var title = config.title;
|
||||
|
||||
if ( typeof title === 'function' ) {
|
||||
title = title();
|
||||
}
|
||||
|
||||
return title.indexOf( '*' ) !== -1 ?
|
||||
title.replace( '*', $('title').text() ) :
|
||||
title;
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the flash text. This has to be broken up into chunks as the Javascript /
|
||||
* Flash bridge has a size limit. There is no indication in the Flash
|
||||
* documentation what this is, and it probably depends upon the browser.
|
||||
* Experimentation shows that the point is around 50k when data starts to get
|
||||
* lost, so an 8K limit used here is safe.
|
||||
*
|
||||
* @param {ZeroClipboard} flash ZeroClipboard instance
|
||||
* @param {string} data Data to send to Flash
|
||||
*/
|
||||
var _setText = function ( flash, data )
|
||||
{
|
||||
var parts = data.match(/[\s\S]{1,8192}/g) || [];
|
||||
|
||||
flash.clearText();
|
||||
for ( var i=0, len=parts.length ; i<len ; i++ )
|
||||
{
|
||||
flash.appendText( parts[i] );
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the newline character(s)
|
||||
*
|
||||
* @param {object} config Button configuration
|
||||
* @return {string} Newline character
|
||||
*/
|
||||
var _newLine = function ( config )
|
||||
{
|
||||
return config.newline ?
|
||||
config.newline :
|
||||
navigator.userAgent.match(/Windows/) ?
|
||||
'\r\n' :
|
||||
'\n';
|
||||
};
|
||||
|
||||
/**
|
||||
* Combine the data from the `buttons.exportData` method into a string that
|
||||
* will be used in the export file.
|
||||
*
|
||||
* @param {DataTable.Api} dt DataTables API instance
|
||||
* @param {object} config Button configuration
|
||||
* @return {object} The data to export
|
||||
*/
|
||||
var _exportData = function ( dt, config )
|
||||
{
|
||||
var newLine = _newLine( config );
|
||||
var data = dt.buttons.exportData( config.exportOptions );
|
||||
var boundary = config.fieldBoundary;
|
||||
var separator = config.fieldSeparator;
|
||||
var reBoundary = new RegExp( boundary, 'g' );
|
||||
var escapeChar = config.escapeChar !== undefined ?
|
||||
config.escapeChar :
|
||||
'\\';
|
||||
var join = function ( a ) {
|
||||
var s = '';
|
||||
|
||||
// If there is a field boundary, then we might need to escape it in
|
||||
// the source data
|
||||
for ( var i=0, ien=a.length ; i<ien ; i++ ) {
|
||||
if ( i > 0 ) {
|
||||
s += separator;
|
||||
}
|
||||
|
||||
s += boundary ?
|
||||
boundary + ('' + a[i]).replace( reBoundary, escapeChar+boundary ) + boundary :
|
||||
a[i];
|
||||
}
|
||||
|
||||
return s;
|
||||
};
|
||||
|
||||
var header = config.header ? join( data.header )+newLine : '';
|
||||
var footer = config.footer && data.footer ? newLine+join( data.footer ) : '';
|
||||
var body = [];
|
||||
|
||||
for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
|
||||
body.push( join( data.body[i] ) );
|
||||
}
|
||||
|
||||
return {
|
||||
str: header + body.join( newLine ) + footer,
|
||||
rows: body.length
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
// Basic initialisation for the buttons is common between them
|
||||
var flashButton = {
|
||||
available: function () {
|
||||
return ZeroClipboard_TableTools.hasFlash();
|
||||
},
|
||||
|
||||
init: function ( dt, button, config ) {
|
||||
// Insert the Flash movie
|
||||
ZeroClipboard_TableTools.moviePath = DataTable.Buttons.swfPath;
|
||||
var flash = new ZeroClipboard_TableTools.Client();
|
||||
|
||||
flash.setHandCursor( true );
|
||||
flash.addEventListener('mouseDown', function(client) {
|
||||
config._fromFlash = true;
|
||||
dt.button( button[0] ).trigger();
|
||||
config._fromFlash = false;
|
||||
} );
|
||||
|
||||
_glue( flash, button );
|
||||
|
||||
config._flash = flash;
|
||||
},
|
||||
|
||||
destroy: function ( dt, button, config ) {
|
||||
config._flash.destroy();
|
||||
},
|
||||
|
||||
fieldSeparator: ',',
|
||||
|
||||
fieldBoundary: '"',
|
||||
|
||||
exportOptions: {},
|
||||
|
||||
title: '*',
|
||||
|
||||
filename: '*',
|
||||
|
||||
extension: '.csv',
|
||||
|
||||
header: true,
|
||||
|
||||
footer: false
|
||||
};
|
||||
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* DataTables options and methods
|
||||
*/
|
||||
|
||||
// Set the default SWF path
|
||||
DataTable.Buttons.swfPath = '//cdn.datatables.net/buttons/1.0.0/swf/flashExport.swf';
|
||||
|
||||
// Method to allow Flash buttons to be resized when made visible - as they are
|
||||
// of zero height and width if initialised hidden
|
||||
DataTable.Api.register( 'buttons.resize()', function () {
|
||||
$.each( ZeroClipboard_TableTools.clients, function ( i, client ) {
|
||||
if ( client.domElement !== undefined && client.domElement.parentNode ) {
|
||||
client.positionElement();
|
||||
}
|
||||
} );
|
||||
} );
|
||||
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Button definitions
|
||||
*/
|
||||
|
||||
// Copy to clipboard
|
||||
DataTable.ext.buttons.copyFlash = $.extend( {}, flashButton, {
|
||||
className: 'buttons-copy buttons-flash',
|
||||
|
||||
text: function ( dt ) {
|
||||
return dt.i18n( 'buttons.copy', 'Copy' );
|
||||
},
|
||||
|
||||
action: function ( e, dt, button, config ) {
|
||||
// Check that the trigger did actually occur due to a Flash activation
|
||||
if ( ! config._fromFlash ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var flash = config._flash;
|
||||
var data = _exportData( dt, config );
|
||||
var output = config.customize ?
|
||||
config.customize( data.str, config ) :
|
||||
data.str;
|
||||
|
||||
flash.setAction( 'copy' );
|
||||
_setText( flash, output );
|
||||
|
||||
dt.buttons.info(
|
||||
dt.i18n( 'buttons.copyTitle', 'Copy to clipboard' ),
|
||||
dt.i18n( 'buttons.copyInfo', {
|
||||
_: 'Copied %d rows to clipboard',
|
||||
1: 'Copied 1 row to clipboard'
|
||||
}, data.rows ),
|
||||
3000
|
||||
);
|
||||
},
|
||||
|
||||
fieldSeparator: '\t',
|
||||
|
||||
fieldBoundary: ''
|
||||
} );
|
||||
|
||||
// CSV save file
|
||||
DataTable.ext.buttons.csvFlash = $.extend( {}, flashButton, {
|
||||
className: 'buttons-csv buttons-flash',
|
||||
|
||||
text: function ( dt ) {
|
||||
return dt.i18n( 'buttons.csv', 'CSV' );
|
||||
},
|
||||
|
||||
action: function ( e, dt, button, config ) {
|
||||
// Set the text
|
||||
var flash = config._flash;
|
||||
var data = _exportData( dt, config );
|
||||
var output = config.customize ?
|
||||
config.customize( data.str, config ) :
|
||||
data.str;
|
||||
|
||||
flash.setAction( 'csv' );
|
||||
flash.setFileName( _filename( config ) );
|
||||
_setText( flash, output );
|
||||
},
|
||||
|
||||
escapeChar: '"'
|
||||
} );
|
||||
|
||||
// Excel save file - this is really a CSV file using UTF-8 that Excel can read
|
||||
DataTable.ext.buttons.excelFlash = $.extend( {}, flashButton, {
|
||||
className: 'buttons-excel buttons-flash',
|
||||
|
||||
text: function ( dt ) {
|
||||
return dt.i18n( 'buttons.excel', 'Excel' );
|
||||
},
|
||||
|
||||
action: function ( e, dt, button, config ) {
|
||||
// Set the text
|
||||
var xml = '';
|
||||
var flash = config._flash;
|
||||
var data = dt.buttons.exportData( config.exportOptions );
|
||||
var addRow = function ( row ) {
|
||||
var cells = [];
|
||||
|
||||
for ( var i=0, ien=row.length ; i<ien ; i++ ) {
|
||||
if ( row[i] === null || row[i] === undefined ) {
|
||||
row[i] = '';
|
||||
}
|
||||
|
||||
cells.push( typeof row[i] === 'number' || (row[i].match && $.trim(row[i]).match(/^-?\d+(\.\d+)?$/) && row[i].charAt(0) !== '0') ?
|
||||
'<c t="n"><v>'+row[i]+'</v></c>' :
|
||||
'<c t="inlineStr"><is><t>'+(
|
||||
! row[i].replace ?
|
||||
row[i] :
|
||||
row[i]
|
||||
.replace(/&(?!amp;)/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/[\x00-\x1F\x7F-\x9F]/g, ''))+ // remove control characters
|
||||
'</t></is></c>' // they are not valid in XML
|
||||
);
|
||||
}
|
||||
|
||||
return '<row>'+cells.join('')+'</row>';
|
||||
};
|
||||
|
||||
if ( config.header ) {
|
||||
xml += addRow( data.header );
|
||||
}
|
||||
|
||||
for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
|
||||
xml += addRow( data.body[i] );
|
||||
}
|
||||
|
||||
if ( config.footer ) {
|
||||
xml += addRow( data.footer );
|
||||
}
|
||||
|
||||
flash.setAction( 'excel' );
|
||||
flash.setFileName( _filename( config ) );
|
||||
flash.setSheetName( _sheetname( config ) );
|
||||
_setText( flash, xml );
|
||||
|
||||
},
|
||||
|
||||
extension: '.xlsx'
|
||||
} );
|
||||
|
||||
// PDF export
|
||||
DataTable.ext.buttons.pdfFlash = $.extend( {}, flashButton, {
|
||||
className: 'buttons-pdf buttons-flash',
|
||||
|
||||
text: function ( dt ) {
|
||||
return dt.i18n( 'buttons.pdf', 'PDF' );
|
||||
},
|
||||
|
||||
action: function ( e, dt, button, config ) {
|
||||
// Set the text
|
||||
var flash = config._flash;
|
||||
var data = dt.buttons.exportData( config.exportOptions );
|
||||
var totalWidth = dt.table().node().offsetWidth;
|
||||
|
||||
// Calculate the column width ratios for layout of the table in the PDF
|
||||
var ratios = dt.columns( config.columns ).indexes().map( function ( idx ) {
|
||||
return dt.column( idx ).header().offsetWidth / totalWidth;
|
||||
} );
|
||||
|
||||
flash.setAction( 'pdf' );
|
||||
flash.setFileName( _title( config ) );
|
||||
|
||||
_setText( flash, JSON.stringify( {
|
||||
title: _filename(config, false),
|
||||
message: config.message,
|
||||
colWidth: ratios.toArray(),
|
||||
orientation: config.orientation,
|
||||
size: config.pageSize,
|
||||
header: config.header ? data.header : null,
|
||||
footer: config.footer ? data.footer : null,
|
||||
body: data.body
|
||||
} ) );
|
||||
},
|
||||
|
||||
extension: '.pdf',
|
||||
|
||||
orientation: 'portrait',
|
||||
|
||||
pageSize: 'A4',
|
||||
|
||||
message: '',
|
||||
|
||||
newline: '\n'
|
||||
} );
|
||||
|
||||
|
||||
return DataTable.Buttons;
|
||||
}));
|
||||
21
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.flash.min.js
vendored
Normal file
21
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.flash.min.js
vendored
Normal file
@ -0,0 +1,21 @@
|
||||
(function(g){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(h){return g(h,window,document)}):"object"===typeof exports?module.exports=function(h,f){h||(h=window);if(!f||!f.fn.dataTable)f=require("datatables.net")(h,f).$;f.fn.dataTable.Buttons||require("datatables.net-buttons")(h,f);return g(f,h,h.document)}:g(jQuery,window,document)})(function(g,h,f,m){var i=g.fn.dataTable,e={version:"1.0.4-TableTools2",clients:{},moviePath:"",nextId:1,
|
||||
$:function(a){"string"==typeof a&&(a=f.getElementById(a));a.addClass||(a.hide=function(){this.style.display="none"},a.show=function(){this.style.display=""},a.addClass=function(a){this.removeClass(a);this.className+=" "+a},a.removeClass=function(a){this.className=this.className.replace(RegExp("\\s*"+a+"\\s*")," ").replace(/^\s+/,"").replace(/\s+$/,"")},a.hasClass=function(a){return!!this.className.match(RegExp("\\s*"+a+"\\s*"))});return a},setMoviePath:function(a){this.moviePath=a},dispatch:function(a,
|
||||
b,d){(a=this.clients[a])&&a.receiveEvent(b,d)},register:function(a,b){this.clients[a]=b},getDOMObjectPosition:function(a){var b={left:0,top:0,width:a.width?a.width:a.offsetWidth,height:a.height?a.height:a.offsetHeight};""!==a.style.width&&(b.width=a.style.width.replace("px",""));""!==a.style.height&&(b.height=a.style.height.replace("px",""));for(;a;)b.left+=a.offsetLeft,b.top+=a.offsetTop,a=a.offsetParent;return b},Client:function(a){this.handlers={};this.id=e.nextId++;this.movieId="ZeroClipboard_TableToolsMovie_"+
|
||||
this.id;e.register(this.id,this);a&&this.glue(a)}};e.Client.prototype={id:0,ready:!1,movie:null,clipText:"",fileName:"",action:"copy",handCursorEnabled:!0,cssEffects:!0,handlers:null,sized:!1,sheetName:"",glue:function(a,b){this.domElement=e.$(a);var d=99;this.domElement.style.zIndex&&(d=parseInt(this.domElement.style.zIndex,10)+1);var c=e.getDOMObjectPosition(this.domElement);this.div=f.createElement("div");var j=this.div.style;j.position="absolute";j.left="0px";j.top="0px";j.width=c.width+"px";
|
||||
j.height=c.height+"px";j.zIndex=d;"undefined"!=typeof b&&""!==b&&(this.div.title=b);0!==c.width&&0!==c.height&&(this.sized=!0);this.domElement&&(this.domElement.appendChild(this.div),this.div.innerHTML=this.getHTML(c.width,c.height).replace(/&/g,"&"))},positionElement:function(){var a=e.getDOMObjectPosition(this.domElement),b=this.div.style;b.position="absolute";b.width=a.width+"px";b.height=a.height+"px";0!==a.width&&0!==a.height&&(this.sized=!0,b=this.div.childNodes[0],b.width=a.width,b.height=
|
||||
a.height)},getHTML:function(a,b){var d="",c="id="+this.id+"&width="+a+"&height="+b;if(navigator.userAgent.match(/MSIE/))var j=location.href.match(/^https/i)?"https://":"http://",d=d+('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+j+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="'+a+'" height="'+b+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+
|
||||
e.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+c+'"/><param name="wmode" value="transparent"/></object>');else d+='<embed id="'+this.movieId+'" src="'+e.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+a+'" height="'+b+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+
|
||||
c+'" wmode="transparent" />';return d},hide:function(){this.div&&(this.div.style.left="-2000px")},show:function(){this.reposition()},destroy:function(){var a=this;this.domElement&&this.div&&(g(this.div).remove(),this.div=this.domElement=null,g.each(e.clients,function(b,d){d===a&&delete e.clients[b]}))},reposition:function(a){a&&((this.domElement=e.$(a))||this.hide());if(this.domElement&&this.div){var a=e.getDOMObjectPosition(this.domElement),b=this.div.style;b.left=""+a.left+"px";b.top=""+a.top+"px"}},
|
||||
clearText:function(){this.clipText="";this.ready&&this.movie.clearText()},appendText:function(a){this.clipText+=a;this.ready&&this.movie.appendText(a)},setText:function(a){this.clipText=a;this.ready&&this.movie.setText(a)},setFileName:function(a){this.fileName=a;this.ready&&this.movie.setFileName(a)},setSheetName:function(a){this.sheetName=a;this.ready&&this.movie.setSheetName(a)},setAction:function(a){this.action=a;this.ready&&this.movie.setAction(a)},addEventListener:function(a,b){a=a.toString().toLowerCase().replace(/^on/,
|
||||
"");this.handlers[a]||(this.handlers[a]=[]);this.handlers[a].push(b)},setHandCursor:function(a){this.handCursorEnabled=a;this.ready&&this.movie.setHandCursor(a)},setCSSEffects:function(a){this.cssEffects=!!a},receiveEvent:function(a,b){var d,a=a.toString().toLowerCase().replace(/^on/,"");switch(a){case "load":this.movie=f.getElementById(this.movieId);if(!this.movie){d=this;setTimeout(function(){d.receiveEvent("load",null)},1);return}if(!this.ready&&navigator.userAgent.match(/Firefox/)&&navigator.userAgent.match(/Windows/)){d=
|
||||
this;setTimeout(function(){d.receiveEvent("load",null)},100);this.ready=!0;return}this.ready=!0;this.movie.clearText();this.movie.appendText(this.clipText);this.movie.setFileName(this.fileName);this.movie.setAction(this.action);this.movie.setHandCursor(this.handCursorEnabled);break;case "mouseover":this.domElement&&this.cssEffects&&this.recoverActive&&this.domElement.addClass("active");break;case "mouseout":this.domElement&&this.cssEffects&&(this.recoverActive=!1,this.domElement.hasClass("active")&&
|
||||
(this.domElement.removeClass("active"),this.recoverActive=!0));break;case "mousedown":this.domElement&&this.cssEffects&&this.domElement.addClass("active");break;case "mouseup":this.domElement&&this.cssEffects&&(this.domElement.removeClass("active"),this.recoverActive=!1)}if(this.handlers[a])for(var c=0,j=this.handlers[a].length;c<j;c++){var e=this.handlers[a][c];if("function"==typeof e)e(this,b);else if("object"==typeof e&&2==e.length)e[0][e[1]](this,b);else if("string"==typeof e)h[e](this,b)}}};
|
||||
e.hasFlash=function(){try{if(new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))return!0}catch(a){if(navigator.mimeTypes&&navigator.mimeTypes["application/x-shockwave-flash"]!==m&&navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin)return!0}return!1};h.ZeroClipboard_TableTools=e;var o=function(a,b){b.attr("id");b.parents("html").length?a.glue(b[0],""):setTimeout(function(){o(a,b)},500)},n=function(a,b){var d="*"===a.filename&&"*"!==a.title&&a.title!==m?a.title:a.filename;"function"===
|
||||
typeof d&&(d=d());-1!==d.indexOf("*")&&(d=d.replace("*",g("title").text()));d=d.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,"");return b===m||!0===b?d+a.extension:d},q=function(a){var b="Sheet1";a.sheetName&&(b=a.sheetName.replace(/[\[\]\*\/\\\?\:]/g,""));return b},r=function(a){a=a.title;"function"===typeof a&&(a=a());return-1!==a.indexOf("*")?a.replace("*",g("title").text()):a},k=function(a,b){var d=b.match(/[\s\S]{1,8192}/g)||[];a.clearText();for(var c=0,e=d.length;c<e;c++)a.appendText(d[c])},
|
||||
p=function(a,b){for(var d=b.newline?b.newline:navigator.userAgent.match(/Windows/)?"\r\n":"\n",c=a.buttons.exportData(b.exportOptions),e=b.fieldBoundary,g=b.fieldSeparator,h=RegExp(e,"g"),s=b.escapeChar!==m?b.escapeChar:"\\",f=function(a){for(var b="",c=0,d=a.length;c<d;c++)0<c&&(b+=g),b+=e?e+(""+a[c]).replace(h,s+e)+e:a[c];return b},t=b.header?f(c.header)+d:"",i=b.footer&&c.footer?d+f(c.footer):"",k=[],l=0,n=c.body.length;l<n;l++)k.push(f(c.body[l]));return{str:t+k.join(d)+i,rows:k.length}},l={available:function(){return e.hasFlash()},
|
||||
init:function(a,b,d){e.moviePath=i.Buttons.swfPath;var c=new e.Client;c.setHandCursor(!0);c.addEventListener("mouseDown",function(){d._fromFlash=!0;a.button(b[0]).trigger();d._fromFlash=!1});o(c,b);d._flash=c},destroy:function(a,b,d){d._flash.destroy()},fieldSeparator:",",fieldBoundary:'"',exportOptions:{},title:"*",filename:"*",extension:".csv",header:!0,footer:!1};i.Buttons.swfPath="//cdn.datatables.net/buttons/1.0.0/swf/flashExport.swf";i.Api.register("buttons.resize()",function(){g.each(e.clients,
|
||||
function(a,b){b.domElement!==m&&b.domElement.parentNode&&b.positionElement()})});i.ext.buttons.copyFlash=g.extend({},l,{className:"buttons-copy buttons-flash",text:function(a){return a.i18n("buttons.copy","Copy")},action:function(a,b,d,c){c._fromFlash&&(a=c._flash,d=p(b,c),c=c.customize?c.customize(d.str,c):d.str,a.setAction("copy"),k(a,c),b.buttons.info(b.i18n("buttons.copyTitle","Copy to clipboard"),b.i18n("buttons.copyInfo",{_:"Copied %d rows to clipboard",1:"Copied 1 row to clipboard"},d.rows),
|
||||
3E3))},fieldSeparator:"\t",fieldBoundary:""});i.ext.buttons.csvFlash=g.extend({},l,{className:"buttons-csv buttons-flash",text:function(a){return a.i18n("buttons.csv","CSV")},action:function(a,b,d,c){a=c._flash;b=p(b,c);b=c.customize?c.customize(b.str,c):b.str;a.setAction("csv");a.setFileName(n(c));k(a,b)},escapeChar:'"'});i.ext.buttons.excelFlash=g.extend({},l,{className:"buttons-excel buttons-flash",text:function(a){return a.i18n("buttons.excel","Excel")},action:function(a,b,d,c){var a="",d=c._flash,
|
||||
b=b.buttons.exportData(c.exportOptions),e=function(a){for(var b=[],c=0,d=a.length;c<d;c++){if(null===a[c]||a[c]===m)a[c]="";b.push("number"===typeof a[c]||a[c].match&&g.trim(a[c]).match(/^-?\d+(\.\d+)?$/)&&"0"!==a[c].charAt(0)?'<c t="n"><v>'+a[c]+"</v></c>":'<c t="inlineStr"><is><t>'+(!a[c].replace?a[c]:a[c].replace(/&(?!amp;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/[\x00-\x1F\x7F-\x9F]/g,""))+"</t></is></c>")}return"<row>"+b.join("")+"</row>"};c.header&&(a+=e(b.header));for(var f=
|
||||
0,h=b.body.length;f<h;f++)a+=e(b.body[f]);c.footer&&(a+=e(b.footer));d.setAction("excel");d.setFileName(n(c));d.setSheetName(q(c));k(d,a)},extension:".xlsx"});i.ext.buttons.pdfFlash=g.extend({},l,{className:"buttons-pdf buttons-flash",text:function(a){return a.i18n("buttons.pdf","PDF")},action:function(a,b,d,c){var a=c._flash,d=b.buttons.exportData(c.exportOptions),e=b.table().node().offsetWidth,f=b.columns(c.columns).indexes().map(function(a){return b.column(a).header().offsetWidth/e});a.setAction("pdf");
|
||||
a.setFileName(r(c));k(a,JSON.stringify({title:n(c,!1),message:c.message,colWidth:f.toArray(),orientation:c.orientation,size:c.pageSize,header:c.header?d.header:null,footer:c.footer?d.footer:null,body:d.body}))},extension:".pdf",orientation:"portrait",pageSize:"A4",message:"",newline:"\n"});return i.Buttons});
|
||||
@ -0,0 +1,85 @@
|
||||
/*! Foundation integration for DataTables' Buttons
|
||||
* ©2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net-zf', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
$ = require('datatables.net-zf')(root, $).$;
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
// F6 has different requirements for the dropdown button set. We can use the
|
||||
// Foundation version found by DataTables in order to support both F5 and F6 in
|
||||
// the same file, but not that this requires DataTables 1.10.11+ for F6 support.
|
||||
var collection = DataTable.ext.foundationVersion === 6 ?
|
||||
{
|
||||
tag: 'div',
|
||||
className: 'dt-button-collection dropdown-pane is-open button-group stacked'
|
||||
} :
|
||||
{
|
||||
tag: 'ul',
|
||||
className: 'dt-button-collection f-dropdown open dropdown-pane is-open',
|
||||
button: {
|
||||
tag: 'li',
|
||||
className: 'small'
|
||||
},
|
||||
buttonLiner: {
|
||||
tag: 'a'
|
||||
}
|
||||
};
|
||||
|
||||
$.extend( true, DataTable.Buttons.defaults, {
|
||||
dom: {
|
||||
container: {
|
||||
tag: 'div',
|
||||
className: 'dt-buttons button-group'
|
||||
},
|
||||
buttonContainer: {
|
||||
tag: null,
|
||||
className: ''
|
||||
},
|
||||
button: {
|
||||
tag: 'a',
|
||||
className: 'button small'
|
||||
},
|
||||
buttonLiner: {
|
||||
tag: null
|
||||
},
|
||||
collection: collection
|
||||
}
|
||||
} );
|
||||
|
||||
|
||||
DataTable.ext.buttons.collection.className = 'buttons-collection dropdown';
|
||||
|
||||
|
||||
return DataTable.Buttons;
|
||||
}));
|
||||
6
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.foundation.min.js
vendored
Normal file
6
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.foundation.min.js
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
Foundation integration for DataTables' Buttons
|
||||
©2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-zf")(a,b).$;b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{tag:"div",className:"dt-buttons button-group"},
|
||||
buttonContainer:{tag:null,className:""},button:{tag:"a",className:"button small"},buttonLiner:{tag:null},collection:6===a.ext.foundationVersion?{tag:"div",className:"dt-button-collection dropdown-pane is-open button-group stacked"}:{tag:"ul",className:"dt-button-collection f-dropdown open dropdown-pane is-open",button:{tag:"li",className:"small"},buttonLiner:{tag:"a"}}}});a.ext.buttons.collection.className="buttons-collection dropdown";return a.Buttons});
|
||||
@ -0,0 +1,863 @@
|
||||
/*!
|
||||
* HTML5 export buttons for Buttons and DataTables.
|
||||
* 2015 SpryMedia Ltd - datatables.net/license
|
||||
*
|
||||
* FileSaver.js (2015-05-07.2) - MIT license
|
||||
* Copyright © 2015 Eli Grey - http://eligrey.com
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
$ = require('datatables.net')(root, $).$;
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* FileSaver.js dependency
|
||||
*/
|
||||
|
||||
/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
|
||||
|
||||
var _saveAs = (function(view) {
|
||||
// IE <10 is explicitly unsupported
|
||||
if (typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
|
||||
return;
|
||||
}
|
||||
var
|
||||
doc = view.document
|
||||
// only get URL when necessary in case Blob.js hasn't overridden it yet
|
||||
, get_URL = function() {
|
||||
return view.URL || view.webkitURL || view;
|
||||
}
|
||||
, save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
|
||||
, can_use_save_link = "download" in save_link
|
||||
, click = function(node) {
|
||||
var event = doc.createEvent("MouseEvents");
|
||||
event.initMouseEvent(
|
||||
"click", true, false, view, 0, 0, 0, 0, 0
|
||||
, false, false, false, false, 0, null
|
||||
);
|
||||
node.dispatchEvent(event);
|
||||
}
|
||||
, webkit_req_fs = view.webkitRequestFileSystem
|
||||
, req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem
|
||||
, throw_outside = function(ex) {
|
||||
(view.setImmediate || view.setTimeout)(function() {
|
||||
throw ex;
|
||||
}, 0);
|
||||
}
|
||||
, force_saveable_type = "application/octet-stream"
|
||||
, fs_min_size = 0
|
||||
// See https://code.google.com/p/chromium/issues/detail?id=375297#c7 and
|
||||
// https://github.com/eligrey/FileSaver.js/commit/485930a#commitcomment-8768047
|
||||
// for the reasoning behind the timeout and revocation flow
|
||||
, arbitrary_revoke_timeout = 500 // in ms
|
||||
, revoke = function(file) {
|
||||
var revoker = function() {
|
||||
if (typeof file === "string") { // file is an object URL
|
||||
get_URL().revokeObjectURL(file);
|
||||
} else { // file is a File
|
||||
file.remove();
|
||||
}
|
||||
};
|
||||
if (view.chrome) {
|
||||
revoker();
|
||||
} else {
|
||||
setTimeout(revoker, arbitrary_revoke_timeout);
|
||||
}
|
||||
}
|
||||
, dispatch = function(filesaver, event_types, event) {
|
||||
event_types = [].concat(event_types);
|
||||
var i = event_types.length;
|
||||
while (i--) {
|
||||
var listener = filesaver["on" + event_types[i]];
|
||||
if (typeof listener === "function") {
|
||||
try {
|
||||
listener.call(filesaver, event || filesaver);
|
||||
} catch (ex) {
|
||||
throw_outside(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
, auto_bom = function(blob) {
|
||||
// prepend BOM for UTF-8 XML and text/* types (including HTML)
|
||||
if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
|
||||
return new Blob(["\ufeff", blob], {type: blob.type});
|
||||
}
|
||||
return blob;
|
||||
}
|
||||
, FileSaver = function(blob, name) {
|
||||
blob = auto_bom(blob);
|
||||
// First try a.download, then web filesystem, then object URLs
|
||||
var
|
||||
filesaver = this
|
||||
, type = blob.type
|
||||
, blob_changed = false
|
||||
, object_url
|
||||
, target_view
|
||||
, dispatch_all = function() {
|
||||
dispatch(filesaver, "writestart progress write writeend".split(" "));
|
||||
}
|
||||
// on any filesys errors revert to saving with object URLs
|
||||
, fs_error = function() {
|
||||
// don't create more object URLs than needed
|
||||
if (blob_changed || !object_url) {
|
||||
object_url = get_URL().createObjectURL(blob);
|
||||
}
|
||||
if (target_view) {
|
||||
target_view.location.href = object_url;
|
||||
} else {
|
||||
var new_tab = view.open(object_url, "_blank");
|
||||
if (new_tab === undefined && typeof safari !== "undefined") {
|
||||
//Apple do not allow window.open, see http://bit.ly/1kZffRI
|
||||
view.location.href = object_url;
|
||||
}
|
||||
}
|
||||
filesaver.readyState = filesaver.DONE;
|
||||
dispatch_all();
|
||||
revoke(object_url);
|
||||
}
|
||||
, abortable = function(func) {
|
||||
return function() {
|
||||
if (filesaver.readyState !== filesaver.DONE) {
|
||||
return func.apply(this, arguments);
|
||||
}
|
||||
};
|
||||
}
|
||||
, create_if_not_found = {create: true, exclusive: false}
|
||||
, slice
|
||||
;
|
||||
filesaver.readyState = filesaver.INIT;
|
||||
if (!name) {
|
||||
name = "download";
|
||||
}
|
||||
if (can_use_save_link) {
|
||||
object_url = get_URL().createObjectURL(blob);
|
||||
save_link.href = object_url;
|
||||
save_link.download = name;
|
||||
click(save_link);
|
||||
filesaver.readyState = filesaver.DONE;
|
||||
dispatch_all();
|
||||
revoke(object_url);
|
||||
return;
|
||||
}
|
||||
// Object and web filesystem URLs have a problem saving in Google Chrome when
|
||||
// viewed in a tab, so I force save with application/octet-stream
|
||||
// http://code.google.com/p/chromium/issues/detail?id=91158
|
||||
// Update: Google errantly closed 91158, I submitted it again:
|
||||
// https://code.google.com/p/chromium/issues/detail?id=389642
|
||||
if (view.chrome && type && type !== force_saveable_type) {
|
||||
slice = blob.slice || blob.webkitSlice;
|
||||
blob = slice.call(blob, 0, blob.size, force_saveable_type);
|
||||
blob_changed = true;
|
||||
}
|
||||
// Since I can't be sure that the guessed media type will trigger a download
|
||||
// in WebKit, I append .download to the filename.
|
||||
// https://bugs.webkit.org/show_bug.cgi?id=65440
|
||||
if (webkit_req_fs && name !== "download") {
|
||||
name += ".download";
|
||||
}
|
||||
if (type === force_saveable_type || webkit_req_fs) {
|
||||
target_view = view;
|
||||
}
|
||||
if (!req_fs) {
|
||||
fs_error();
|
||||
return;
|
||||
}
|
||||
fs_min_size += blob.size;
|
||||
req_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) {
|
||||
fs.root.getDirectory("saved", create_if_not_found, abortable(function(dir) {
|
||||
var save = function() {
|
||||
dir.getFile(name, create_if_not_found, abortable(function(file) {
|
||||
file.createWriter(abortable(function(writer) {
|
||||
writer.onwriteend = function(event) {
|
||||
target_view.location.href = file.toURL();
|
||||
filesaver.readyState = filesaver.DONE;
|
||||
dispatch(filesaver, "writeend", event);
|
||||
revoke(file);
|
||||
};
|
||||
writer.onerror = function() {
|
||||
var error = writer.error;
|
||||
if (error.code !== error.ABORT_ERR) {
|
||||
fs_error();
|
||||
}
|
||||
};
|
||||
"writestart progress write abort".split(" ").forEach(function(event) {
|
||||
writer["on" + event] = filesaver["on" + event];
|
||||
});
|
||||
writer.write(blob);
|
||||
filesaver.abort = function() {
|
||||
writer.abort();
|
||||
filesaver.readyState = filesaver.DONE;
|
||||
};
|
||||
filesaver.readyState = filesaver.WRITING;
|
||||
}), fs_error);
|
||||
}), fs_error);
|
||||
};
|
||||
dir.getFile(name, {create: false}, abortable(function(file) {
|
||||
// delete file if it already exists
|
||||
file.remove();
|
||||
save();
|
||||
}), abortable(function(ex) {
|
||||
if (ex.code === ex.NOT_FOUND_ERR) {
|
||||
save();
|
||||
} else {
|
||||
fs_error();
|
||||
}
|
||||
}));
|
||||
}), fs_error);
|
||||
}), fs_error);
|
||||
}
|
||||
, FS_proto = FileSaver.prototype
|
||||
, saveAs = function(blob, name) {
|
||||
return new FileSaver(blob, name);
|
||||
}
|
||||
;
|
||||
// IE 10+ (native saveAs)
|
||||
if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {
|
||||
return function(blob, name) {
|
||||
return navigator.msSaveOrOpenBlob(auto_bom(blob), name);
|
||||
};
|
||||
}
|
||||
|
||||
FS_proto.abort = function() {
|
||||
var filesaver = this;
|
||||
filesaver.readyState = filesaver.DONE;
|
||||
dispatch(filesaver, "abort");
|
||||
};
|
||||
FS_proto.readyState = FS_proto.INIT = 0;
|
||||
FS_proto.WRITING = 1;
|
||||
FS_proto.DONE = 2;
|
||||
|
||||
FS_proto.error =
|
||||
FS_proto.onwritestart =
|
||||
FS_proto.onprogress =
|
||||
FS_proto.onwrite =
|
||||
FS_proto.onabort =
|
||||
FS_proto.onerror =
|
||||
FS_proto.onwriteend =
|
||||
null;
|
||||
|
||||
return saveAs;
|
||||
}(window));
|
||||
|
||||
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Local (private) functions
|
||||
*/
|
||||
|
||||
/**
|
||||
* Get the file name for an exported file.
|
||||
*
|
||||
* @param {object} config Button configuration
|
||||
* @param {boolean} incExtension Include the file name extension
|
||||
*/
|
||||
var _filename = function ( config, incExtension )
|
||||
{
|
||||
// Backwards compatibility
|
||||
var filename = config.filename === '*' && config.title !== '*' && config.title !== undefined ?
|
||||
config.title :
|
||||
config.filename;
|
||||
|
||||
if ( typeof filename === 'function' ) {
|
||||
filename = filename();
|
||||
}
|
||||
|
||||
if ( filename.indexOf( '*' ) !== -1 ) {
|
||||
filename = filename.replace( '*', $('title').text() );
|
||||
}
|
||||
|
||||
// Strip characters which the OS will object to
|
||||
filename = filename.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g, "");
|
||||
|
||||
return incExtension === undefined || incExtension === true ?
|
||||
filename+config.extension :
|
||||
filename;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the sheet name for Excel exports.
|
||||
*
|
||||
* @param {object} config Button configuration
|
||||
*/
|
||||
var _sheetname = function ( config )
|
||||
{
|
||||
var sheetName = 'Sheet1';
|
||||
|
||||
if ( config.sheetName ) {
|
||||
sheetName = config.sheetName.replace(/[\[\]\*\/\\\?\:]/g, '');
|
||||
}
|
||||
|
||||
return sheetName;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the title for an exported file.
|
||||
*
|
||||
* @param {object} config Button configuration
|
||||
*/
|
||||
var _title = function ( config )
|
||||
{
|
||||
var title = config.title;
|
||||
|
||||
if ( typeof title === 'function' ) {
|
||||
title = title();
|
||||
}
|
||||
|
||||
return title.indexOf( '*' ) !== -1 ?
|
||||
title.replace( '*', $('title').text() ) :
|
||||
title;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the newline character(s)
|
||||
*
|
||||
* @param {object} config Button configuration
|
||||
* @return {string} Newline character
|
||||
*/
|
||||
var _newLine = function ( config )
|
||||
{
|
||||
return config.newline ?
|
||||
config.newline :
|
||||
navigator.userAgent.match(/Windows/) ?
|
||||
'\r\n' :
|
||||
'\n';
|
||||
};
|
||||
|
||||
/**
|
||||
* Combine the data from the `buttons.exportData` method into a string that
|
||||
* will be used in the export file.
|
||||
*
|
||||
* @param {DataTable.Api} dt DataTables API instance
|
||||
* @param {object} config Button configuration
|
||||
* @return {object} The data to export
|
||||
*/
|
||||
var _exportData = function ( dt, config )
|
||||
{
|
||||
var newLine = _newLine( config );
|
||||
var data = dt.buttons.exportData( config.exportOptions );
|
||||
var boundary = config.fieldBoundary;
|
||||
var separator = config.fieldSeparator;
|
||||
var reBoundary = new RegExp( boundary, 'g' );
|
||||
var escapeChar = config.escapeChar !== undefined ?
|
||||
config.escapeChar :
|
||||
'\\';
|
||||
var join = function ( a ) {
|
||||
var s = '';
|
||||
|
||||
// If there is a field boundary, then we might need to escape it in
|
||||
// the source data
|
||||
for ( var i=0, ien=a.length ; i<ien ; i++ ) {
|
||||
if ( i > 0 ) {
|
||||
s += separator;
|
||||
}
|
||||
|
||||
s += boundary ?
|
||||
boundary + ('' + a[i]).replace( reBoundary, escapeChar+boundary ) + boundary :
|
||||
a[i];
|
||||
}
|
||||
|
||||
return s;
|
||||
};
|
||||
|
||||
var header = config.header ? join( data.header )+newLine : '';
|
||||
var footer = config.footer && data.footer ? newLine+join( data.footer ) : '';
|
||||
var body = [];
|
||||
|
||||
for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
|
||||
body.push( join( data.body[i] ) );
|
||||
}
|
||||
|
||||
return {
|
||||
str: header + body.join( newLine ) + footer,
|
||||
rows: body.length
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Safari's data: support for creating and downloading files is really poor, so
|
||||
* various options need to be disabled in it. See
|
||||
* https://bugs.webkit.org/show_bug.cgi?id=102914
|
||||
*
|
||||
* @return {Boolean} `true` if Safari
|
||||
*/
|
||||
var _isSafari = function ()
|
||||
{
|
||||
return navigator.userAgent.indexOf('Safari') !== -1 &&
|
||||
navigator.userAgent.indexOf('Chrome') === -1 &&
|
||||
navigator.userAgent.indexOf('Opera') === -1;
|
||||
};
|
||||
|
||||
|
||||
// Excel - Pre-defined strings to build a minimal XLSX file
|
||||
var excelStrings = {
|
||||
"_rels/.rels": '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\
|
||||
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\
|
||||
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>\
|
||||
</Relationships>',
|
||||
|
||||
"xl/_rels/workbook.xml.rels": '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\
|
||||
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\
|
||||
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>\
|
||||
</Relationships>',
|
||||
|
||||
"[Content_Types].xml": '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\
|
||||
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">\
|
||||
<Default Extension="xml" ContentType="application/xml"/>\
|
||||
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>\
|
||||
<Default Extension="jpeg" ContentType="image/jpeg"/>\
|
||||
<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>\
|
||||
<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>\
|
||||
</Types>',
|
||||
|
||||
"xl/workbook.xml": '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\
|
||||
<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">\
|
||||
<fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/>\
|
||||
<workbookPr showInkAnnotation="0" autoCompressPictures="0"/>\
|
||||
<bookViews>\
|
||||
<workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/>\
|
||||
</bookViews>\
|
||||
<sheets>\
|
||||
<sheet name="__SHEET_NAME__" sheetId="1" r:id="rId1"/>\
|
||||
</sheets>\
|
||||
</workbook>',
|
||||
|
||||
"xl/worksheets/sheet1.xml": '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\
|
||||
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">\
|
||||
<sheetData>\
|
||||
__DATA__\
|
||||
</sheetData>\
|
||||
</worksheet>'
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Buttons
|
||||
*/
|
||||
|
||||
//
|
||||
// Copy to clipboard
|
||||
//
|
||||
DataTable.ext.buttons.copyHtml5 = {
|
||||
className: 'buttons-copy buttons-html5',
|
||||
|
||||
text: function ( dt ) {
|
||||
return dt.i18n( 'buttons.copy', 'Copy' );
|
||||
},
|
||||
|
||||
action: function ( e, dt, button, config ) {
|
||||
var exportData = _exportData( dt, config );
|
||||
var output = exportData.str;
|
||||
var hiddenDiv = $('<div/>')
|
||||
.css( {
|
||||
height: 1,
|
||||
width: 1,
|
||||
overflow: 'hidden',
|
||||
position: 'fixed',
|
||||
top: 0,
|
||||
left: 0
|
||||
} );
|
||||
|
||||
if ( config.customize ) {
|
||||
output = config.customize( output, config );
|
||||
}
|
||||
|
||||
var textarea = $('<textarea readonly/>')
|
||||
.val( output )
|
||||
.appendTo( hiddenDiv );
|
||||
|
||||
// For browsers that support the copy execCommand, try to use it
|
||||
if ( document.queryCommandSupported('copy') ) {
|
||||
hiddenDiv.appendTo( dt.table().container() );
|
||||
textarea[0].focus();
|
||||
textarea[0].select();
|
||||
|
||||
try {
|
||||
document.execCommand( 'copy' );
|
||||
hiddenDiv.remove();
|
||||
|
||||
dt.buttons.info(
|
||||
dt.i18n( 'buttons.copyTitle', 'Copy to clipboard' ),
|
||||
dt.i18n( 'buttons.copySuccess', {
|
||||
1: "Copied one row to clipboard",
|
||||
_: "Copied %d rows to clipboard"
|
||||
}, exportData.rows ),
|
||||
2000
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
catch (t) {}
|
||||
}
|
||||
|
||||
// Otherwise we show the text box and instruct the user to use it
|
||||
var message = $('<span>'+dt.i18n( 'buttons.copyKeys',
|
||||
'Press <i>ctrl</i> or <i>\u2318</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>'+
|
||||
'To cancel, click this message or press escape.' )+'</span>'
|
||||
)
|
||||
.append( hiddenDiv );
|
||||
|
||||
dt.buttons.info( dt.i18n( 'buttons.copyTitle', 'Copy to clipboard' ), message, 0 );
|
||||
|
||||
// Select the text so when the user activates their system clipboard
|
||||
// it will copy that text
|
||||
textarea[0].focus();
|
||||
textarea[0].select();
|
||||
|
||||
// Event to hide the message when the user is done
|
||||
var container = $(message).closest('.dt-button-info');
|
||||
var close = function () {
|
||||
container.off( 'click.buttons-copy' );
|
||||
$(document).off( '.buttons-copy' );
|
||||
dt.buttons.info( false );
|
||||
};
|
||||
|
||||
container.on( 'click.buttons-copy', close );
|
||||
$(document)
|
||||
.on( 'keydown.buttons-copy', function (e) {
|
||||
if ( e.keyCode === 27 ) { // esc
|
||||
close();
|
||||
}
|
||||
} )
|
||||
.on( 'copy.buttons-copy cut.buttons-copy', function () {
|
||||
close();
|
||||
} );
|
||||
},
|
||||
|
||||
exportOptions: {},
|
||||
|
||||
fieldSeparator: '\t',
|
||||
|
||||
fieldBoundary: '',
|
||||
|
||||
header: true,
|
||||
|
||||
footer: false
|
||||
};
|
||||
|
||||
//
|
||||
// CSV export
|
||||
//
|
||||
DataTable.ext.buttons.csvHtml5 = {
|
||||
className: 'buttons-csv buttons-html5',
|
||||
|
||||
available: function () {
|
||||
return window.FileReader !== undefined && window.Blob;
|
||||
},
|
||||
|
||||
text: function ( dt ) {
|
||||
return dt.i18n( 'buttons.csv', 'CSV' );
|
||||
},
|
||||
|
||||
action: function ( e, dt, button, config ) {
|
||||
// Set the text
|
||||
var newLine = _newLine( config );
|
||||
var output = _exportData( dt, config ).str;
|
||||
var charset = config.charset;
|
||||
|
||||
if ( config.customize ) {
|
||||
output = config.customize( output, config );
|
||||
}
|
||||
|
||||
if ( charset !== false ) {
|
||||
if ( ! charset ) {
|
||||
charset = document.characterSet || document.charset;
|
||||
}
|
||||
|
||||
if ( charset ) {
|
||||
charset = ';charset='+charset;
|
||||
}
|
||||
}
|
||||
else {
|
||||
charset = '';
|
||||
}
|
||||
|
||||
_saveAs(
|
||||
new Blob( [output], {type: 'text/csv'+charset} ),
|
||||
_filename( config )
|
||||
);
|
||||
},
|
||||
|
||||
filename: '*',
|
||||
|
||||
extension: '.csv',
|
||||
|
||||
exportOptions: {},
|
||||
|
||||
fieldSeparator: ',',
|
||||
|
||||
fieldBoundary: '"',
|
||||
|
||||
escapeChar: '"',
|
||||
|
||||
charset: null,
|
||||
|
||||
header: true,
|
||||
|
||||
footer: false
|
||||
};
|
||||
|
||||
//
|
||||
// Excel (xlsx) export
|
||||
//
|
||||
DataTable.ext.buttons.excelHtml5 = {
|
||||
className: 'buttons-excel buttons-html5',
|
||||
|
||||
available: function () {
|
||||
return window.FileReader !== undefined && window.JSZip !== undefined && ! _isSafari();
|
||||
},
|
||||
|
||||
text: function ( dt ) {
|
||||
return dt.i18n( 'buttons.excel', 'Excel' );
|
||||
},
|
||||
|
||||
action: function ( e, dt, button, config ) {
|
||||
// Set the text
|
||||
var xml = '';
|
||||
var data = dt.buttons.exportData( config.exportOptions );
|
||||
var addRow = function ( row ) {
|
||||
var cells = [];
|
||||
|
||||
for ( var i=0, ien=row.length ; i<ien ; i++ ) {
|
||||
if ( row[i] === null || row[i] === undefined ) {
|
||||
row[i] = '';
|
||||
}
|
||||
|
||||
// Don't match numbers with leading zeros or a negative anywhere
|
||||
// but the start
|
||||
cells.push( typeof row[i] === 'number' || (row[i].match && $.trim(row[i]).match(/^-?\d+(\.\d+)?$/) && row[i].charAt(0) !== '0') ?
|
||||
'<c t="n"><v>'+row[i]+'</v></c>' :
|
||||
'<c t="inlineStr"><is><t>'+(
|
||||
! row[i].replace ?
|
||||
row[i] :
|
||||
row[i]
|
||||
.replace(/&(?!amp;)/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g, ''))+ // remove control characters
|
||||
'</t></is></c>' // they are not valid in XML
|
||||
);
|
||||
}
|
||||
|
||||
return '<row>'+cells.join('')+'</row>';
|
||||
};
|
||||
|
||||
if ( config.header ) {
|
||||
xml += addRow( data.header );
|
||||
}
|
||||
|
||||
for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
|
||||
xml += addRow( data.body[i] );
|
||||
}
|
||||
|
||||
if ( config.footer ) {
|
||||
xml += addRow( data.footer );
|
||||
}
|
||||
|
||||
var zip = new window.JSZip();
|
||||
var _rels = zip.folder("_rels");
|
||||
var xl = zip.folder("xl");
|
||||
var xl_rels = zip.folder("xl/_rels");
|
||||
var xl_worksheets = zip.folder("xl/worksheets");
|
||||
|
||||
zip.file( '[Content_Types].xml', excelStrings['[Content_Types].xml'] );
|
||||
_rels.file( '.rels', excelStrings['_rels/.rels'] );
|
||||
xl.file( 'workbook.xml', excelStrings['xl/workbook.xml'].replace( '__SHEET_NAME__', _sheetname( config ) ) );
|
||||
xl_rels.file( 'workbook.xml.rels', excelStrings['xl/_rels/workbook.xml.rels'] );
|
||||
xl_worksheets.file( 'sheet1.xml', excelStrings['xl/worksheets/sheet1.xml'].replace( '__DATA__', xml ) );
|
||||
|
||||
_saveAs(
|
||||
zip.generate( {type:"blob", mimeType:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'} ),
|
||||
_filename( config )
|
||||
);
|
||||
},
|
||||
|
||||
filename: '*',
|
||||
|
||||
extension: '.xlsx',
|
||||
|
||||
exportOptions: {},
|
||||
|
||||
header: true,
|
||||
|
||||
footer: false
|
||||
};
|
||||
|
||||
//
|
||||
// PDF export - using pdfMake - http://pdfmake.org
|
||||
//
|
||||
DataTable.ext.buttons.pdfHtml5 = {
|
||||
className: 'buttons-pdf buttons-html5',
|
||||
|
||||
available: function () {
|
||||
return window.FileReader !== undefined && window.pdfMake;
|
||||
},
|
||||
|
||||
text: function ( dt ) {
|
||||
return dt.i18n( 'buttons.pdf', 'PDF' );
|
||||
},
|
||||
|
||||
action: function ( e, dt, button, config ) {
|
||||
var newLine = _newLine( config );
|
||||
var data = dt.buttons.exportData( config.exportOptions );
|
||||
var rows = [];
|
||||
|
||||
if ( config.header ) {
|
||||
rows.push( $.map( data.header, function ( d ) {
|
||||
return {
|
||||
text: typeof d === 'string' ? d : d+'',
|
||||
style: 'tableHeader'
|
||||
};
|
||||
} ) );
|
||||
}
|
||||
|
||||
for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
|
||||
rows.push( $.map( data.body[i], function ( d ) {
|
||||
return {
|
||||
text: typeof d === 'string' ? d : d+'',
|
||||
style: i % 2 ? 'tableBodyEven' : 'tableBodyOdd'
|
||||
};
|
||||
} ) );
|
||||
}
|
||||
|
||||
if ( config.footer ) {
|
||||
rows.push( $.map( data.footer, function ( d ) {
|
||||
return {
|
||||
text: typeof d === 'string' ? d : d+'',
|
||||
style: 'tableFooter'
|
||||
};
|
||||
} ) );
|
||||
}
|
||||
|
||||
var doc = {
|
||||
pageSize: config.pageSize,
|
||||
pageOrientation: config.orientation,
|
||||
content: [
|
||||
{
|
||||
table: {
|
||||
headerRows: 1,
|
||||
body: rows
|
||||
},
|
||||
layout: 'noBorders'
|
||||
}
|
||||
],
|
||||
styles: {
|
||||
tableHeader: {
|
||||
bold: true,
|
||||
fontSize: 11,
|
||||
color: 'white',
|
||||
fillColor: '#2d4154',
|
||||
alignment: 'center'
|
||||
},
|
||||
tableBodyEven: {},
|
||||
tableBodyOdd: {
|
||||
fillColor: '#f3f3f3'
|
||||
},
|
||||
tableFooter: {
|
||||
bold: true,
|
||||
fontSize: 11,
|
||||
color: 'white',
|
||||
fillColor: '#2d4154'
|
||||
},
|
||||
title: {
|
||||
alignment: 'center',
|
||||
fontSize: 15
|
||||
},
|
||||
message: {}
|
||||
},
|
||||
defaultStyle: {
|
||||
fontSize: 10
|
||||
}
|
||||
};
|
||||
|
||||
if ( config.message ) {
|
||||
doc.content.unshift( {
|
||||
text: config.message,
|
||||
style: 'message',
|
||||
margin: [ 0, 0, 0, 12 ]
|
||||
} );
|
||||
}
|
||||
|
||||
if ( config.title ) {
|
||||
doc.content.unshift( {
|
||||
text: _title( config, false ),
|
||||
style: 'title',
|
||||
margin: [ 0, 0, 0, 12 ]
|
||||
} );
|
||||
}
|
||||
|
||||
if ( config.customize ) {
|
||||
config.customize( doc, config );
|
||||
}
|
||||
|
||||
var pdf = window.pdfMake.createPdf( doc );
|
||||
|
||||
if ( config.download === 'open' && ! _isSafari() ) {
|
||||
pdf.open();
|
||||
}
|
||||
else {
|
||||
pdf.getBuffer( function (buffer) {
|
||||
var blob = new Blob( [buffer], {type:'application/pdf'} );
|
||||
|
||||
_saveAs( blob, _filename( config ) );
|
||||
} );
|
||||
}
|
||||
},
|
||||
|
||||
title: '*',
|
||||
|
||||
filename: '*',
|
||||
|
||||
extension: '.pdf',
|
||||
|
||||
exportOptions: {},
|
||||
|
||||
orientation: 'portrait',
|
||||
|
||||
pageSize: 'A4',
|
||||
|
||||
header: true,
|
||||
|
||||
footer: false,
|
||||
|
||||
message: null,
|
||||
|
||||
customize: null,
|
||||
|
||||
download: 'download'
|
||||
};
|
||||
|
||||
|
||||
return DataTable.Buttons;
|
||||
}));
|
||||
22
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.html5.min.js
vendored
Normal file
22
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.html5.min.js
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
(function(g){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(d){return g(d,window,document)}):"object"===typeof exports?module.exports=function(d,f){d||(d=window);if(!f||!f.fn.dataTable)f=require("datatables.net")(d,f).$;f.fn.dataTable.Buttons||require("datatables.net-buttons")(d,f);return g(f,d,d.document)}:g(jQuery,window,document)})(function(g,d,f,k){var l=g.fn.dataTable,j;if("undefined"!==typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))j=
|
||||
void 0;else{var x=d.document,q=x.createElementNS("http://www.w3.org/1999/xhtml","a"),E="download"in q,r=d.webkitRequestFileSystem,y=d.requestFileSystem||r||d.mozRequestFileSystem,F=function(a){(d.setImmediate||d.setTimeout)(function(){throw a;},0)},s=0,t=function(a){var b=function(){"string"===typeof a?(d.URL||d.webkitURL||d).revokeObjectURL(a):a.remove()};d.chrome?b():setTimeout(b,500)},u=function(a,b,e){for(var b=[].concat(b),c=b.length;c--;){var d=a["on"+b[c]];if("function"===typeof d)try{d.call(a,
|
||||
e||a)}catch(i){F(i)}}},A=function(a){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob(["",a],{type:a.type}):a},B=function(a,b){var a=A(a),e=this,c=a.type,z=!1,i,g,m=function(){u(e,["writestart","progress","write","writeend"])},o=function(){if(z||!i)i=(d.URL||d.webkitURL||d).createObjectURL(a);g?g.location.href=i:d.open(i,"_blank")===k&&"undefined"!==typeof safari&&(d.location.href=i);e.readyState=e.DONE;m();t(i)},n=function(a){return function(){if(e.readyState!==
|
||||
e.DONE)return a.apply(this,arguments)}},f={create:!0,exclusive:!1},h;e.readyState=e.INIT;b||(b="download");if(E)i=(d.URL||d.webkitURL||d).createObjectURL(a),q.href=i,q.download=b,c=x.createEvent("MouseEvents"),c.initMouseEvent("click",!0,!1,d,0,0,0,0,0,!1,!1,!1,!1,0,null),q.dispatchEvent(c),e.readyState=e.DONE,m(),t(i);else{d.chrome&&(c&&"application/octet-stream"!==c)&&(h=a.slice||a.webkitSlice,a=h.call(a,0,a.size,"application/octet-stream"),z=!0);r&&"download"!==b&&(b+=".download");if("application/octet-stream"===
|
||||
c||r)g=d;y?(s+=a.size,y(d.TEMPORARY,s,n(function(c){c.root.getDirectory("saved",f,n(function(c){var d=function(){c.getFile(b,f,n(function(b){b.createWriter(n(function(c){c.onwriteend=function(a){g.location.href=b.toURL();e.readyState=e.DONE;u(e,"writeend",a);t(b)};c.onerror=function(){var a=c.error;a.code!==a.ABORT_ERR&&o()};["writestart","progress","write","abort"].forEach(function(a){c["on"+a]=e["on"+a]});c.write(a);e.abort=function(){c.abort();e.readyState=e.DONE};e.readyState=e.WRITING}),o)}),
|
||||
o)};c.getFile(b,{create:false},n(function(a){a.remove();d()}),n(function(a){a.code===a.NOT_FOUND_ERR?d():o()}))}),o)}),o)):o()}},h=B.prototype;"undefined"!==typeof navigator&&navigator.msSaveOrOpenBlob?j=function(a,b){return navigator.msSaveOrOpenBlob(A(a),b)}:(h.abort=function(){this.readyState=this.DONE;u(this,"abort")},h.readyState=h.INIT=0,h.WRITING=1,h.DONE=2,h.error=h.onwritestart=h.onprogress=h.onwrite=h.onabort=h.onerror=h.onwriteend=null,j=function(a,b){return new B(a,b)})}var v=function(a,
|
||||
b){var e="*"===a.filename&&"*"!==a.title&&a.title!==k?a.title:a.filename;"function"===typeof e&&(e=e());-1!==e.indexOf("*")&&(e=e.replace("*",g("title").text()));e=e.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,"");return b===k||!0===b?e+a.extension:e},G=function(a){var b="Sheet1";a.sheetName&&(b=a.sheetName.replace(/[\[\]\*\/\\\?\:]/g,""));return b},H=function(a){a=a.title;"function"===typeof a&&(a=a());return-1!==a.indexOf("*")?a.replace("*",g("title").text()):a},w=function(a){return a.newline?
|
||||
a.newline:navigator.userAgent.match(/Windows/)?"\r\n":"\n"},C=function(a,b){for(var e=w(b),c=a.buttons.exportData(b.exportOptions),d=b.fieldBoundary,i=b.fieldSeparator,g=RegExp(d,"g"),m=b.escapeChar!==k?b.escapeChar:"\\",f=function(a){for(var b="",c=0,e=a.length;c<e;c++)0<c&&(b+=i),b+=d?d+(""+a[c]).replace(g,m+d)+d:a[c];return b},n=b.header?f(c.header)+e:"",h=b.footer&&c.footer?e+f(c.footer):"",j=[],l=0,p=c.body.length;l<p;l++)j.push(f(c.body[l]));return{str:n+j.join(e)+h,rows:j.length}},D=function(){return-1!==
|
||||
navigator.userAgent.indexOf("Safari")&&-1===navigator.userAgent.indexOf("Chrome")&&-1===navigator.userAgent.indexOf("Opera")},p={"_rels/.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\t<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/></Relationships>',"xl/_rels/workbook.xml.rels":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">\t<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/></Relationships>',
|
||||
"[Content_Types].xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">\t<Default Extension="xml" ContentType="application/xml"/>\t<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>\t<Default Extension="jpeg" ContentType="image/jpeg"/>\t<Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>\t<Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/></Types>',
|
||||
"xl/workbook.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">\t<fileVersion appName="xl" lastEdited="5" lowestEdited="5" rupBuild="24816"/>\t<workbookPr showInkAnnotation="0" autoCompressPictures="0"/>\t<bookViews>\t\t<workbookView xWindow="0" yWindow="0" windowWidth="25600" windowHeight="19020" tabRatio="500"/>\t</bookViews>\t<sheets>\t\t<sheet name="__SHEET_NAME__" sheetId="1" r:id="rId1"/>\t</sheets></workbook>',
|
||||
"xl/worksheets/sheet1.xml":'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">\t<sheetData>\t\t__DATA__\t</sheetData></worksheet>'};l.ext.buttons.copyHtml5={className:"buttons-copy buttons-html5",
|
||||
text:function(a){return a.i18n("buttons.copy","Copy")},action:function(a,b,e,c){var a=C(b,c),d=a.str,e=g("<div/>").css({height:1,width:1,overflow:"hidden",position:"fixed",top:0,left:0});c.customize&&(d=c.customize(d,c));c=g("<textarea readonly/>").val(d).appendTo(e);if(f.queryCommandSupported("copy")){e.appendTo(b.table().container());c[0].focus();c[0].select();try{f.execCommand("copy");e.remove();b.buttons.info(b.i18n("buttons.copyTitle","Copy to clipboard"),b.i18n("buttons.copySuccess",{1:"Copied one row to clipboard",
|
||||
_:"Copied %d rows to clipboard"},a.rows),2E3);return}catch(i){}}a=g("<span>"+b.i18n("buttons.copyKeys","Press <i>ctrl</i> or <i>⌘</i> + <i>C</i> to copy the table data<br>to your system clipboard.<br><br>To cancel, click this message or press escape.")+"</span>").append(e);b.buttons.info(b.i18n("buttons.copyTitle","Copy to clipboard"),a,0);c[0].focus();c[0].select();var h=g(a).closest(".dt-button-info"),m=function(){h.off("click.buttons-copy");g(f).off(".buttons-copy");b.buttons.info(!1)};h.on("click.buttons-copy",
|
||||
m);g(f).on("keydown.buttons-copy",function(a){27===a.keyCode&&m()}).on("copy.buttons-copy cut.buttons-copy",function(){m()})},exportOptions:{},fieldSeparator:"\t",fieldBoundary:"",header:!0,footer:!1};l.ext.buttons.csvHtml5={className:"buttons-csv buttons-html5",available:function(){return d.FileReader!==k&&d.Blob},text:function(a){return a.i18n("buttons.csv","CSV")},action:function(a,b,d,c){w(c);a=C(b,c).str;b=c.charset;c.customize&&(a=c.customize(a,c));!1!==b?(b||(b=f.characterSet||f.charset),b&&
|
||||
(b=";charset="+b)):b="";j(new Blob([a],{type:"text/csv"+b}),v(c))},filename:"*",extension:".csv",exportOptions:{},fieldSeparator:",",fieldBoundary:'"',escapeChar:'"',charset:null,header:!0,footer:!1};l.ext.buttons.excelHtml5={className:"buttons-excel buttons-html5",available:function(){return d.FileReader!==k&&d.JSZip!==k&&!D()},text:function(a){return a.i18n("buttons.excel","Excel")},action:function(a,b,e,c){a="";b=b.buttons.exportData(c.exportOptions);e=function(a){for(var b=[],c=0,d=a.length;c<
|
||||
d;c++){if(null===a[c]||a[c]===k)a[c]="";b.push("number"===typeof a[c]||a[c].match&&g.trim(a[c]).match(/^-?\d+(\.\d+)?$/)&&"0"!==a[c].charAt(0)?'<c t="n"><v>'+a[c]+"</v></c>":'<c t="inlineStr"><is><t>'+(!a[c].replace?a[c]:a[c].replace(/&(?!amp;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F-\x9F]/g,""))+"</t></is></c>")}return"<row>"+b.join("")+"</row>"};c.header&&(a+=e(b.header));for(var f=0,i=b.body.length;f<i;f++)a+=e(b.body[f]);c.footer&&(a+=e(b.footer));
|
||||
var b=new d.JSZip,e=b.folder("_rels"),f=b.folder("xl"),i=b.folder("xl/_rels"),h=b.folder("xl/worksheets");b.file("[Content_Types].xml",p["[Content_Types].xml"]);e.file(".rels",p["_rels/.rels"]);f.file("workbook.xml",p["xl/workbook.xml"].replace("__SHEET_NAME__",G(c)));i.file("workbook.xml.rels",p["xl/_rels/workbook.xml.rels"]);h.file("sheet1.xml",p["xl/worksheets/sheet1.xml"].replace("__DATA__",a));j(b.generate({type:"blob",mimeType:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),
|
||||
v(c))},filename:"*",extension:".xlsx",exportOptions:{},header:!0,footer:!1};l.ext.buttons.pdfHtml5={className:"buttons-pdf buttons-html5",available:function(){return d.FileReader!==k&&d.pdfMake},text:function(a){return a.i18n("buttons.pdf","PDF")},action:function(a,b,e,c){w(c);a=b.buttons.exportData(c.exportOptions);b=[];c.header&&b.push(g.map(a.header,function(a){return{text:"string"===typeof a?a:a+"",style:"tableHeader"}}));for(var f=0,e=a.body.length;f<e;f++)b.push(g.map(a.body[f],function(a){return{text:"string"===
|
||||
typeof a?a:a+"",style:f%2?"tableBodyEven":"tableBodyOdd"}}));c.footer&&b.push(g.map(a.footer,function(a){return{text:"string"===typeof a?a:a+"",style:"tableFooter"}}));a={pageSize:c.pageSize,pageOrientation:c.orientation,content:[{table:{headerRows:1,body:b},layout:"noBorders"}],styles:{tableHeader:{bold:!0,fontSize:11,color:"white",fillColor:"#2d4154",alignment:"center"},tableBodyEven:{},tableBodyOdd:{fillColor:"#f3f3f3"},tableFooter:{bold:!0,fontSize:11,color:"white",fillColor:"#2d4154"},title:{alignment:"center",
|
||||
fontSize:15},message:{}},defaultStyle:{fontSize:10}};c.message&&a.content.unshift({text:c.message,style:"message",margin:[0,0,0,12]});c.title&&a.content.unshift({text:H(c,!1),style:"title",margin:[0,0,0,12]});c.customize&&c.customize(a,c);a=d.pdfMake.createPdf(a);"open"===c.download&&!D()?a.open():a.getBuffer(function(a){a=new Blob([a],{type:"application/pdf"});j(a,v(c))})},title:"*",filename:"*",extension:".pdf",exportOptions:{},orientation:"portrait",pageSize:"A4",header:!0,footer:!1,message:null,
|
||||
customize:null,download:"download"};return l.Buttons});
|
||||
@ -0,0 +1,62 @@
|
||||
/*! jQuery UI integration for DataTables' Buttons
|
||||
* ©2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net-jqui', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
$ = require('datatables.net-jqui')(root, $).$;
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
$.extend( true, DataTable.Buttons.defaults, {
|
||||
dom: {
|
||||
container: {
|
||||
className: 'dt-buttons ui-buttonset'
|
||||
},
|
||||
button: {
|
||||
className: 'dt-button ui-button ui-state-default ui-button-text-only',
|
||||
disabled: 'ui-state-disabled',
|
||||
active: 'ui-state-active'
|
||||
},
|
||||
buttonLiner: {
|
||||
tag: 'span',
|
||||
className: 'ui-button-text'
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
||||
DataTable.ext.buttons.collection.text = function ( dt ) {
|
||||
return dt.i18n('buttons.collection', 'Collection <span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"/>');
|
||||
};
|
||||
|
||||
|
||||
return DataTable.Buttons;
|
||||
}));
|
||||
6
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.jqueryui.min.js
vendored
Normal file
6
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.jqueryui.min.js
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
jQuery UI integration for DataTables' Buttons
|
||||
©2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-jqui")(a,b).$;b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons ui-buttonset"},
|
||||
button:{className:"dt-button ui-button ui-state-default ui-button-text-only",disabled:"ui-state-disabled",active:"ui-state-active"},buttonLiner:{tag:"span",className:"ui-button-text"}}});a.ext.buttons.collection.text=function(a){return a.i18n("buttons.collection",'Collection <span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"/>')};return a.Buttons});
|
||||
@ -0,0 +1,167 @@
|
||||
/*!
|
||||
* Print button for Buttons and DataTables.
|
||||
* 2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net', 'datatables.net-buttons'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
$ = require('datatables.net')(root, $).$;
|
||||
}
|
||||
|
||||
if ( ! $.fn.dataTable.Buttons ) {
|
||||
require('datatables.net-buttons')(root, $);
|
||||
}
|
||||
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
var _link = document.createElement( 'a' );
|
||||
|
||||
/**
|
||||
* Convert a `link` tag's URL from a relative to an absolute address so it will
|
||||
* work correctly in the popup window which has no base URL.
|
||||
*
|
||||
* @param {node} el Element to convert
|
||||
*/
|
||||
var _relToAbs = function( el ) {
|
||||
var url;
|
||||
var clone = $(el).clone()[0];
|
||||
var linkHost;
|
||||
|
||||
if ( clone.nodeName.toLowerCase() === 'link' ) {
|
||||
_link.href = clone.href;
|
||||
linkHost = _link.host;
|
||||
|
||||
// IE doesn't have a trailing slash on the host
|
||||
// Chrome has it on the pathname
|
||||
if ( linkHost.indexOf('/') === -1 && _link.pathname.indexOf('/') !== 0) {
|
||||
linkHost += '/';
|
||||
}
|
||||
|
||||
clone.href = _link.protocol+"//"+linkHost+_link.pathname+_link.search;
|
||||
}
|
||||
|
||||
return clone.outerHTML;
|
||||
};
|
||||
|
||||
|
||||
DataTable.ext.buttons.print = {
|
||||
className: 'buttons-print',
|
||||
|
||||
text: function ( dt ) {
|
||||
return dt.i18n( 'buttons.print', 'Print' );
|
||||
},
|
||||
|
||||
action: function ( e, dt, button, config ) {
|
||||
var data = dt.buttons.exportData( config.exportOptions );
|
||||
var addRow = function ( d, tag ) {
|
||||
var str = '<tr>';
|
||||
|
||||
for ( var i=0, ien=d.length ; i<ien ; i++ ) {
|
||||
str += '<'+tag+'>'+d[i]+'</'+tag+'>';
|
||||
}
|
||||
|
||||
return str + '</tr>';
|
||||
};
|
||||
|
||||
// Construct a table for printing
|
||||
var html = '<table class="'+dt.table().node().className+'">';
|
||||
|
||||
if ( config.header ) {
|
||||
html += '<thead>'+ addRow( data.header, 'th' ) +'</thead>';
|
||||
}
|
||||
|
||||
html += '<tbody>';
|
||||
for ( var i=0, ien=data.body.length ; i<ien ; i++ ) {
|
||||
html += addRow( data.body[i], 'td' );
|
||||
}
|
||||
html += '</tbody>';
|
||||
|
||||
if ( config.footer ) {
|
||||
html += '<tfoot>'+ addRow( data.footer, 'th' ) +'</tfoot>';
|
||||
}
|
||||
|
||||
// Open a new window for the printable table
|
||||
var win = window.open( '', '' );
|
||||
var title = config.title;
|
||||
|
||||
if ( typeof title === 'function' ) {
|
||||
title = title();
|
||||
}
|
||||
|
||||
if ( title.indexOf( '*' ) !== -1 ) {
|
||||
title= title.replace( '*', $('title').text() );
|
||||
}
|
||||
|
||||
win.document.close();
|
||||
|
||||
// Inject the title and also a copy of the style and link tags from this
|
||||
// document so the table can retain its base styling. Note that we have
|
||||
// to use string manipulation as IE won't allow elements to be created
|
||||
// in the host document and then appended to the new window.
|
||||
var head = '<title>'+title+'</title>';
|
||||
$('style, link').each( function () {
|
||||
head += _relToAbs( this );
|
||||
} );
|
||||
|
||||
$(win.document.head).html( head );
|
||||
|
||||
// Inject the table and other surrounding information
|
||||
$(win.document.body).html(
|
||||
'<h1>'+title+'</h1>'+
|
||||
'<div>'+config.message+'</div>'+
|
||||
html
|
||||
);
|
||||
|
||||
if ( config.customize ) {
|
||||
config.customize( win );
|
||||
}
|
||||
|
||||
setTimeout( function () {
|
||||
if ( config.autoPrint ) {
|
||||
win.print(); // blocking - so close will not
|
||||
win.close(); // execute until this is done
|
||||
}
|
||||
}, 250 );
|
||||
},
|
||||
|
||||
title: '*',
|
||||
|
||||
message: '',
|
||||
|
||||
exportOptions: {},
|
||||
|
||||
header: true,
|
||||
|
||||
footer: false,
|
||||
|
||||
autoPrint: true,
|
||||
|
||||
customize: null
|
||||
};
|
||||
|
||||
|
||||
return DataTable.Buttons;
|
||||
}));
|
||||
4
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.print.min.js
vendored
Normal file
4
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/buttons.print.min.js
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(e){return d(e,window,document)}):"object"===typeof exports?module.exports=function(e,a){e||(e=window);if(!a||!a.fn.dataTable)a=require("datatables.net")(e,a).$;a.fn.dataTable.Buttons||require("datatables.net-buttons")(e,a);return d(a,e,e.document)}:d(jQuery,window,document)})(function(d,e,a){var i=d.fn.dataTable,g=a.createElement("a");i.ext.buttons.print={className:"buttons-print",
|
||||
text:function(c){return c.i18n("buttons.print","Print")},action:function(c,b,a,f){c=b.buttons.exportData(f.exportOptions);a=function(c,a){for(var b="<tr>",d=0,e=c.length;d<e;d++)b+="<"+a+">"+c[d]+"</"+a+">";return b+"</tr>"};b='<table class="'+b.table().node().className+'">';f.header&&(b+="<thead>"+a(c.header,"th")+"</thead>");for(var b=b+"<tbody>",j=0,i=c.body.length;j<i;j++)b+=a(c.body[j],"td");b+="</tbody>";f.footer&&(b+="<tfoot>"+a(c.footer,"th")+"</tfoot>");var h=e.open("",""),c=f.title;"function"===
|
||||
typeof c&&(c=c());-1!==c.indexOf("*")&&(c=c.replace("*",d("title").text()));h.document.close();var k="<title>"+c+"</title>";d("style, link").each(function(){var c=k,b=d(this).clone()[0],a;"link"===b.nodeName.toLowerCase()&&(g.href=b.href,a=g.host,-1===a.indexOf("/")&&0!==g.pathname.indexOf("/")&&(a+="/"),b.href=g.protocol+"//"+a+g.pathname+g.search);k=c+b.outerHTML});d(h.document.head).html(k);d(h.document.body).html("<h1>"+c+"</h1><div>"+f.message+"</div>"+b);f.customize&&f.customize(h);setTimeout(function(){f.autoPrint&&
|
||||
(h.print(),h.close())},250)},title:"*",message:"",exportOptions:{},header:!0,footer:!1,autoPrint:!0,customize:null};return i.Buttons});
|
||||
File diff suppressed because it is too large
Load Diff
36
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/dataTables.buttons.min.js
vendored
Normal file
36
htdocs/includes/jquery/plugins/datatables/extensions/Buttons/js/dataTables.buttons.min.js
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
/*!
|
||||
Buttons for DataTables 1.1.2
|
||||
©2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
(function(e){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(p){return e(p,window,document)}):"object"===typeof exports?module.exports=function(p,o){p||(p=window);if(!o||!o.fn.dataTable)o=require("datatables.net")(p,o).$;return e(o,p,p.document)}:e(jQuery,window,document)})(function(e,p,o,n){var j=e.fn.dataTable,t=0,u=0,l=j.ext.buttons,m=function(a,b){!0===b&&(b={});e.isArray(b)&&(b={buttons:b});this.c=e.extend(!0,{},m.defaults,b);b.buttons&&(this.c.buttons=b.buttons);
|
||||
this.s={dt:new j.Api(a),buttons:[],subButtons:[],listenKeys:"",namespace:"dtb"+t++};this.dom={container:e("<"+this.c.dom.container.tag+"/>").addClass(this.c.dom.container.className)};this._constructor()};e.extend(m.prototype,{action:function(a,b){var c=this._indexToButton(a).conf;if(b===n)return c.action;c.action=b;return this},active:function(a,b){var c=this._indexToButton(a),d=this.c.dom.button.active;if(b===n)return c.node.hasClass(d);c.node.toggleClass(d,b===n?!0:b);return this},add:function(a,
|
||||
b){if("string"===typeof a&&-1!==a.indexOf("-")){var c=a.split("-");this.c.buttons[1*c[0]].buttons.splice(1*c[1],0,b)}else this.c.buttons.splice(1*a,0,b);this.dom.container.empty();this._buildButtons(this.c.buttons);return this},container:function(){return this.dom.container},disable:function(a){this._indexToButton(a).node.addClass(this.c.dom.button.disabled);return this},destroy:function(){e("body").off("keyup."+this.s.namespace);var a=this.s.buttons,b=this.s.subButtons,c,d,f;c=0;for(a=a.length;c<
|
||||
a;c++){this.removePrep(c);d=0;for(f=b[c].length;d<f;d++)this.removePrep(c+"-"+d)}this.removeCommit();this.dom.container.remove();b=this.s.dt.settings()[0];c=0;for(a=b.length;c<a;c++)if(b.inst===this){b.splice(c,1);break}return this},enable:function(a,b){if(!1===b)return this.disable(a);this._indexToButton(a).node.removeClass(this.c.dom.button.disabled);return this},name:function(){return this.c.name},node:function(a){return this._indexToButton(a).node},removeCommit:function(){var a=this.s.buttons,
|
||||
b=this.s.subButtons,c,d;for(c=a.length-1;0<=c;c--)null===a[c]&&(a.splice(c,1),b.splice(c,1),this.c.buttons.splice(c,1));c=0;for(a=b.length;c<a;c++)for(d=b[c].length-1;0<=d;d--)null===b[c][d]&&(b[c].splice(d,1),this.c.buttons[c].buttons.splice(d,1));return this},removePrep:function(a){var b,c=this.s.dt;if("number"===typeof a||-1===a.indexOf("-"))b=this.s.buttons[1*a],b.conf.destroy&&b.conf.destroy.call(c.button(a),c,b,b.conf),b.node.remove(),this._removeKey(b.conf),this.s.buttons[1*a]=null;else{var d=
|
||||
a.split("-");b=this.s.subButtons[1*d[0]][1*d[1]];b.conf.destroy&&b.conf.destroy.call(c.button(a),c,b,b.conf);b.node.remove();this._removeKey(b.conf);this.s.subButtons[1*d[0]][1*d[1]]=null}return this},text:function(a,b){var c=this._indexToButton(a),d=this.c.dom.collection.buttonLiner,d="string"===typeof a&&-1!==a.indexOf("-")&&d&&d.tag?d.tag:this.c.dom.buttonLiner.tag,e=this.s.dt,h=function(a){return"function"===typeof a?a(e,c.node,c.conf):a};if(b===n)return h(c.conf.text);c.conf.text=b;d?c.node.children(d).html(h(b)):
|
||||
c.node.html(h(b));return this},toIndex:function(a){var b,c,d,e;d=this.s.buttons;var h=this.s.subButtons;b=0;for(c=d.length;b<c;b++)if(d[b].node[0]===a)return b+"";b=0;for(c=h.length;b<c;b++){d=0;for(e=h[b].length;d<e;d++)if(h[b][d].node[0]===a)return b+"-"+d}},_constructor:function(){var a=this,b=this.s.dt,c=b.settings()[0];c._buttons||(c._buttons=[]);c._buttons.push({inst:this,name:this.c.name});this._buildButtons(this.c.buttons);b.on("destroy",function(){a.destroy()});e("body").on("keyup."+this.s.namespace,
|
||||
function(b){if(!o.activeElement||o.activeElement===o.body){var c=String.fromCharCode(b.keyCode).toLowerCase();a.s.listenKeys.toLowerCase().indexOf(c)!==-1&&a._keypress(c,b)}})},_addKey:function(a){a.key&&(this.s.listenKeys+=e.isPlainObject(a.key)?a.key.key:a.key)},_buildButtons:function(a,b,c){var d=this.s.dt,f=0;b||(b=this.dom.container,this.s.buttons=[],this.s.subButtons=[]);for(var h=0,i=a.length;h<i;h++){var k=this._resolveExtends(a[h]);if(k)if(e.isArray(k))this._buildButtons(k,b,c);else{var g=
|
||||
this._buildButton(k,c!==n?!0:!1);if(g){var r=g.node;b.append(g.inserter);c===n?(this.s.buttons.push({node:r,conf:k,inserter:g.inserter}),this.s.subButtons.push([])):this.s.subButtons[c].push({node:r,conf:k,inserter:g.inserter});k.buttons&&(g=this.c.dom.collection,k._collection=e("<"+g.tag+"/>").addClass(g.className),this._buildButtons(k.buttons,k._collection,f));k.init&&k.init.call(d.button(r),d,r,k);f++}}}},_buildButton:function(a,b){var c=this.c.dom.button,d=this.c.dom.buttonLiner,f=this.c.dom.collection,
|
||||
h=this.s.dt,i=function(b){return"function"===typeof b?b(h,g,a):b};b&&f.button&&(c=f.button);b&&f.buttonLiner&&(d=f.buttonLiner);if(a.available&&!a.available(h,a))return!1;var k=function(a,b,c,d){d.action.call(b.button(c),a,b,c,d);e(b.table().node()).triggerHandler("buttons-action.dt",[b.button(c),b,c,d])},g=e("<"+c.tag+"/>").addClass(c.className).attr("tabindex",this.s.dt.settings()[0].iTabIndex).attr("aria-controls",this.s.dt.table().node().id).on("click.dtb",function(b){b.preventDefault();!g.hasClass(c.disabled)&&
|
||||
a.action&&k(b,h,g,a);g.blur()}).on("keyup.dtb",function(b){b.keyCode===13&&!g.hasClass(c.disabled)&&a.action&&k(b,h,g,a)});d.tag?g.append(e("<"+d.tag+"/>").html(i(a.text)).addClass(d.className)):g.html(i(a.text));!1===a.enabled&&g.addClass(c.disabled);a.className&&g.addClass(a.className);a.titleAttr&&g.attr("title",a.titleAttr);a.namespace||(a.namespace=".dt-button-"+u++);d=(d=this.c.dom.buttonContainer)&&d.tag?e("<"+d.tag+"/>").addClass(d.className).append(g):g;this._addKey(a);return{node:g,inserter:d}},
|
||||
_indexToButton:function(a){if("number"===typeof a||-1===a.indexOf("-"))return this.s.buttons[1*a];a=a.split("-");return this.s.subButtons[1*a[0]][1*a[1]]},_keypress:function(a,b){var c,d,f,h;f=this.s.buttons;var i=this.s.subButtons,k=function(c,d){if(c.key)if(c.key===a)d.click();else if(e.isPlainObject(c.key)&&c.key.key===a&&(!c.key.shiftKey||b.shiftKey))if(!c.key.altKey||b.altKey)if(!c.key.ctrlKey||b.ctrlKey)(!c.key.metaKey||b.metaKey)&&d.click()};c=0;for(d=f.length;c<d;c++)k(f[c].conf,f[c].node);
|
||||
c=0;for(d=i.length;c<d;c++){f=0;for(h=i[c].length;f<h;f++)k(i[c][f].conf,i[c][f].node)}},_removeKey:function(a){if(a.key){var b=e.isPlainObject(a.key)?a.key.key:a.key,a=this.s.listenKeys.split(""),b=e.inArray(b,a);a.splice(b,1);this.s.listenKeys=a.join("")}},_resolveExtends:function(a){for(var b=this.s.dt,c,d,f=function(c){for(var d=0;!e.isPlainObject(c)&&!e.isArray(c);){if(c===n)return;if("function"===typeof c){if(c=c(b,a),!c)return!1}else if("string"===typeof c){if(!l[c])throw"Unknown button type: "+
|
||||
c;c=l[c]}d++;if(30<d)throw"Buttons: Too many iterations";}return e.isArray(c)?c:e.extend({},c)},a=f(a);a&&a.extend;){if(!l[a.extend])throw"Cannot extend unknown button type: "+a.extend;var h=f(l[a.extend]);if(e.isArray(h))return h;if(!h)return!1;c=h.className;a=e.extend({},h,a);c&&a.className!==c&&(a.className=c+" "+a.className);var i=a.postfixButtons;if(i){a.buttons||(a.buttons=[]);c=0;for(d=i.length;c<d;c++)a.buttons.push(i[c]);a.postfixButtons=null}if(i=a.prefixButtons){a.buttons||(a.buttons=[]);
|
||||
c=0;for(d=i.length;c<d;c++)a.buttons.splice(c,0,i[c]);a.prefixButtons=null}a.extend=h.extend}return a}});m.background=function(a,b,c){c===n&&(c=400);a?e("<div/>").addClass(b).css("display","none").appendTo("body").fadeIn(c):e("body > div."+b).fadeOut(c,function(){e(this).remove()})};m.instanceSelector=function(a,b){if(!a)return e.map(b,function(a){return a.inst});var c=[],d=e.map(b,function(a){return a.name}),f=function(a){if(e.isArray(a))for(var i=0,k=a.length;i<k;i++)f(a[i]);else"string"===typeof a?
|
||||
-1!==a.indexOf(",")?f(a.split(",")):(a=e.inArray(e.trim(a),d),-1!==a&&c.push(b[a].inst)):"number"===typeof a&&c.push(b[a].inst)};f(a);return c};m.buttonSelector=function(a,b){for(var c=[],d=function(a,b){var g,f,h=[];e.each(b.s.buttons,function(a,b){null!==b&&h.push({node:b.node[0],name:b.conf.name})});e.each(b.s.subButtons,function(a,b){e.each(b,function(a,b){null!==b&&h.push({node:b.node[0],name:b.conf.name})})});g=e.map(h,function(a){return a.node});if(e.isArray(a)||a instanceof e){g=0;for(f=a.length;g<
|
||||
f;g++)d(a[g],b)}else if(null===a||a===n||"*"===a){g=0;for(f=h.length;g<f;g++)c.push({inst:b,idx:b.toIndex(h[g].node)})}else if("number"===typeof a)c.push({inst:b,idx:a});else if("string"===typeof a)if(-1!==a.indexOf(",")){var j=a.split(",");g=0;for(f=j.length;g<f;g++)d(e.trim(j[g]),b)}else if(a.match(/^\d+(\-\d+)?$/))c.push({inst:b,idx:a});else if(-1!==a.indexOf(":name")){j=a.replace(":name","");g=0;for(f=h.length;g<f;g++)h[g].name===j&&c.push({inst:b,idx:b.toIndex(h[g].node)})}else e(g).filter(a).each(function(){c.push({inst:b,
|
||||
idx:b.toIndex(this)})});else"object"===typeof a&&a.nodeName&&(f=e.inArray(a,g),-1!==f&&c.push({inst:b,idx:b.toIndex(g[f])}))},f=0,h=a.length;f<h;f++)d(b,a[f]);return c};m.defaults={buttons:["copy","excel","csv","pdf","print"],name:"main",tabIndex:0,dom:{container:{tag:"div",className:"dt-buttons"},collection:{tag:"div",className:"dt-button-collection"},button:{tag:"a",className:"dt-button",active:"active",disabled:"disabled"},buttonLiner:{tag:"span",className:""}}};m.version="1.1.2";e.extend(l,{collection:{text:function(a){return a.i18n("buttons.collection",
|
||||
"Collection")},className:"buttons-collection",action:function(a,b,c,d){var a=c.offset(),f=e(b.table().container()),h=!1;e("div.dt-button-background").length&&(h=e("div.dt-button-collection").offset(),e(o).trigger("click.dtb-collection"));d._collection.addClass(d.collectionLayout).css("display","none").appendTo("body").fadeIn(d.fade);var i=d._collection.css("position");h&&"absolute"===i?d._collection.css({top:h.top+5,left:h.left+5}):"absolute"===i?(d._collection.css({top:a.top+c.outerHeight(),left:a.left}),
|
||||
c=a.left+d._collection.outerWidth(),f=f.offset().left+f.width(),c>f&&d._collection.css("left",a.left-(c-f))):(a=d._collection.height()/2,a>e(p).height()/2&&(a=e(p).height()/2),d._collection.css("marginTop",-1*a));d.background&&m.background(!0,d.backgroundClassName,d.fade);setTimeout(function(){e("div.dt-button-background").on("click.dtb-collection",function(){});e("body").on("click.dtb-collection",function(a){if(!e(a.target).parents().andSelf().filter(d._collection).length){d._collection.fadeOut(d.fade,
|
||||
function(){d._collection.detach()});e("div.dt-button-background").off("click.dtb-collection");m.background(false,d.backgroundClassName,d.fade);e("body").off("click.dtb-collection");b.off("buttons-action.b-internal")}})},10);if(d.autoClose)b.on("buttons-action.b-internal",function(){e("div.dt-button-background").click()})},background:!0,collectionLayout:"",backgroundClassName:"dt-button-background",autoClose:!1,fade:400},copy:function(a,b){if(l.copyHtml5)return"copyHtml5";if(l.copyFlash&&l.copyFlash.available(a,
|
||||
b))return"copyFlash"},csv:function(a,b){if(l.csvHtml5&&l.csvHtml5.available(a,b))return"csvHtml5";if(l.csvFlash&&l.csvFlash.available(a,b))return"csvFlash"},excel:function(a,b){if(l.excelHtml5&&l.excelHtml5.available(a,b))return"excelHtml5";if(l.excelFlash&&l.excelFlash.available(a,b))return"excelFlash"},pdf:function(a,b){if(l.pdfHtml5&&l.pdfHtml5.available(a,b))return"pdfHtml5";if(l.pdfFlash&&l.pdfFlash.available(a,b))return"pdfFlash"},pageLength:function(a){var a=a.settings()[0].aLengthMenu,b=e.isArray(a[0])?
|
||||
a[0]:a,c=e.isArray(a[0])?a[1]:a,d=function(a){return a.i18n("buttons.pageLength",{"-1":"Show all rows",_:"Show %d rows"},a.page.len())};return{extend:"collection",text:d,className:"buttons-page-length",autoClose:!0,buttons:e.map(b,function(a,b){return{text:c[b],action:function(b,c){c.page.len(a).draw()},init:function(b,c,d){var e=this,c=function(){e.active(b.page.len()===a)};b.on("length.dt"+d.namespace,c);c()},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}),init:function(a,b,c){var e=
|
||||
this;a.on("length.dt"+c.namespace,function(){e.text(d(a))})},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}});j.Api.register("buttons()",function(a,b){b===n&&(b=a,a=n);return this.iterator(!0,"table",function(c){if(c._buttons)return m.buttonSelector(m.instanceSelector(a,c._buttons),b)},!0)});j.Api.register("button()",function(a,b){var c=this.buttons(a,b);1<c.length&&c.splice(1,c.length);return c});j.Api.registerPlural("buttons().active()","button().active()",function(a){return a===n?this.map(function(a){return a.inst.active(a.idx)}):
|
||||
this.each(function(b){b.inst.active(b.idx,a)})});j.Api.registerPlural("buttons().action()","button().action()",function(a){return a===n?this.map(function(a){return a.inst.action(a.idx)}):this.each(function(b){b.inst.action(b.idx,a)})});j.Api.register(["buttons().enable()","button().enable()"],function(a){return this.each(function(b){b.inst.enable(b.idx,a)})});j.Api.register(["buttons().disable()","button().disable()"],function(){return this.each(function(a){a.inst.disable(a.idx)})});j.Api.registerPlural("buttons().nodes()",
|
||||
"button().node()",function(){var a=e();e(this.each(function(b){a=a.add(b.inst.node(b.idx))}));return a});j.Api.registerPlural("buttons().text()","button().text()",function(a){return a===n?this.map(function(a){return a.inst.text(a.idx)}):this.each(function(b){b.inst.text(b.idx,a)})});j.Api.registerPlural("buttons().trigger()","button().trigger()",function(){return this.each(function(a){a.inst.node(a.idx).trigger("click")})});j.Api.registerPlural("buttons().containers()","buttons().container()",function(){var a=
|
||||
e();e(this.each(function(b){a=a.add(b.inst.container())}));return a});j.Api.register("button().add()",function(a,b){1===this.length&&this[0].inst.add(a,b);return this.button(a)});j.Api.register("buttons().destroy()",function(){this.pluck("inst").unique().each(function(a){a.destroy()});return this});j.Api.registerPlural("buttons().remove()","buttons().remove()",function(){this.each(function(a){a.inst.removePrep(a.idx)});this.pluck("inst").unique().each(function(a){a.removeCommit()});return this});
|
||||
var q;j.Api.register("buttons.info()",function(a,b,c){var d=this;if(!1===a)return e("#datatables_buttons_info").fadeOut(function(){e(this).remove()}),clearTimeout(q),q=null,this;q&&clearTimeout(q);e("#datatables_buttons_info").length&&e("#datatables_buttons_info").remove();e('<div id="datatables_buttons_info" class="dt-button-info"/>').html(a?"<h2>"+a+"</h2>":"").append(e("<div/>")["string"===typeof b?"html":"append"](b)).css("display","none").appendTo("body").fadeIn();c!==n&&0!==c&&(q=setTimeout(function(){d.buttons.info(!1)},
|
||||
c));return this});j.Api.register("buttons.exportData()",function(a){if(this.context.length){for(var b=new j.Api(this.context[0]),c=e.extend(!0,{},{rows:null,columns:"",modifier:{search:"applied",order:"applied"},orthogonal:"display",stripHtml:!0,stripNewlines:!0,decodeEntities:!0,trim:!0,format:{header:function(a){return d(a)},footer:function(a){return d(a)},body:function(a){return d(a)}}},a),d=function(a){if("string"!==typeof a)return a;c.stripHtml&&(a=a.replace(/<.*?>/g,""));c.trim&&(a=a.replace(/^\s+|\s+$/g,
|
||||
""));c.stripNewlines&&(a=a.replace(/\n/g," "));c.decodeEntities&&(s.innerHTML=a,a=s.value);return a},a=b.columns(c.columns).indexes().map(function(a){return c.format.header(b.column(a).header().innerHTML,a)}).toArray(),f=b.table().footer()?b.columns(c.columns).indexes().map(function(a){var d=b.column(a).footer();return c.format.footer(d?d.innerHTML:"",a)}).toArray():null,h=b.rows(c.rows,c.modifier).indexes().toArray(),h=b.cells(h,c.columns).render(c.orthogonal).toArray(),i=a.length,k=0<i?h.length/
|
||||
i:0,g=Array(k),l=0,m=0;m<k;m++){for(var n=Array(i),o=0;o<i;o++)n[o]=c.format.body(h[l],o,m),l++;g[m]=n}return{header:a,footer:f,body:g}}});var s=e("<textarea/>")[0];e.fn.dataTable.Buttons=m;e.fn.DataTable.Buttons=m;e(o).on("init.dt plugin-init.dt",function(a,b){if("dt"===a.namespace){var c=b.oInit.buttons||j.defaults.buttons;c&&!b._buttons&&(new m(b,c)).container()}});j.ext.feature.push({fnInit:function(a){var a=new j.Api(a),b=a.init().buttons||j.defaults.buttons;return(new m(a,b)).container()},cFeature:"B"});
|
||||
return m});
|
||||
Binary file not shown.
@ -1,3 +1,5 @@
|
||||
MIT license
|
||||
|
||||
Copyright (c) 2010-2015 SpryMedia Limited
|
||||
http://datatables.net
|
||||
|
||||
|
||||
@ -1,39 +1,35 @@
|
||||
# ColReorder
|
||||
|
||||
ColReorder adds the ability for the end user to click and drag column headers to reorder a table as they see fit, to DataTables. Key features include:
|
||||
|
||||
* Very easy integration with DataTables
|
||||
* Tight integration with all other DataTables plug-ins
|
||||
* The ability to exclude the first (or more) column from being movable
|
||||
* Predefine a column order
|
||||
* Save staving integration with DataTables
|
||||
ColReorder adds the ability for the end user to click and drag column headers to reorder a table as they see fit, to DataTables. See the [documentation](http://datatables.net/extensions/colreorder/) for full details.
|
||||
|
||||
|
||||
# Installation
|
||||
|
||||
To use ColReorder, first download DataTables ( http://datatables.net/download ) and place the unzipped ColReorder package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser.
|
||||
To use ColReorder the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/colreorder/) for full details.
|
||||
|
||||
## NPM and Bower
|
||||
|
||||
If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-colreorder`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name.
|
||||
|
||||
Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables.
|
||||
|
||||
|
||||
# Basic usage
|
||||
|
||||
ColReorder is initialised using the `$.fn.dataTable.ColReorder` constructor. For example:
|
||||
ColReorder is initialised using the `colReorder` option in the DataTables constructor - a simple boolean `true` will enable the feature. Further options can be specified using this option as an object - see the documentation for details.
|
||||
|
||||
Example:
|
||||
|
||||
```js
|
||||
$(document).ready( function () {
|
||||
$('#example').DataTable();
|
||||
|
||||
new $.fn.dataTable.ColReorder( table );
|
||||
$('#myTable').DataTable( {
|
||||
colReorder: true
|
||||
} );
|
||||
} );
|
||||
```
|
||||
|
||||
|
||||
# Documentation / support
|
||||
|
||||
* Documentation: http://datatables.net/extensions/colreorder/
|
||||
* DataTables support forums: http://datatables.net/forums
|
||||
|
||||
|
||||
# GitHub
|
||||
|
||||
If you fancy getting involved with the development of ColReorder and help make it better, please refer to its GitHub repo: https://github.com/DataTables/ColReorder
|
||||
|
||||
* [Documentation](https://datatables.net/extensions/colreorder/)
|
||||
* [DataTables support forums](http://datatables.net/forums)
|
||||
|
||||
@ -0,0 +1,11 @@
|
||||
table.DTCR_clonedTable.dataTable {
|
||||
position: absolute !important;
|
||||
background-color: rgba(255, 255, 255, 0.7);
|
||||
z-index: 202;
|
||||
}
|
||||
|
||||
div.DTCR_pointer {
|
||||
width: 1px;
|
||||
background-color: #337ab7;
|
||||
z-index: 201;
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
table.DTCR_clonedTable.dataTable{position:absolute !important;background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#337ab7;z-index:201}
|
||||
@ -0,0 +1,11 @@
|
||||
table.DTCR_clonedTable.dataTable {
|
||||
position: absolute !important;
|
||||
background-color: rgba(255, 255, 255, 0.7);
|
||||
z-index: 202;
|
||||
}
|
||||
|
||||
div.DTCR_pointer {
|
||||
width: 1px;
|
||||
background-color: #0259C4;
|
||||
z-index: 201;
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
table.DTCR_clonedTable.dataTable{position:absolute !important;background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#0259C4;z-index:201}
|
||||
@ -0,0 +1,11 @@
|
||||
table.DTCR_clonedTable.dataTable {
|
||||
position: absolute !important;
|
||||
background-color: rgba(255, 255, 255, 0.7);
|
||||
z-index: 202;
|
||||
}
|
||||
|
||||
div.DTCR_pointer {
|
||||
width: 1px;
|
||||
background-color: #008CBA;
|
||||
z-index: 201;
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
table.DTCR_clonedTable.dataTable{position:absolute !important;background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#008CBA;z-index:201}
|
||||
@ -0,0 +1,11 @@
|
||||
table.DTCR_clonedTable.dataTable {
|
||||
position: absolute !important;
|
||||
background-color: rgba(255, 255, 255, 0.7);
|
||||
z-index: 202;
|
||||
}
|
||||
|
||||
div.DTCR_pointer {
|
||||
width: 1px;
|
||||
background-color: #0259C4;
|
||||
z-index: 201;
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
table.DTCR_clonedTable.dataTable{position:absolute !important;background-color:rgba(255,255,255,0.7);z-index:202}div.DTCR_pointer{width:1px;background-color:#0259C4;z-index:201}
|
||||
@ -1,11 +1,11 @@
|
||||
/*! ColReorder 1.1.3
|
||||
* ©2010-2014 SpryMedia Ltd - datatables.net/license
|
||||
/*! ColReorder 1.3.1
|
||||
* ©2010-2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
/**
|
||||
* @summary ColReorder
|
||||
* @description Provide the ability to reorder columns in a DataTable
|
||||
* @version 1.1.3
|
||||
* @version 1.3.1
|
||||
* @file dataTables.colReorder.js
|
||||
* @author SpryMedia Ltd (www.sprymedia.co.uk)
|
||||
* @contact www.sprymedia.co.uk/contact
|
||||
@ -20,8 +20,34 @@
|
||||
*
|
||||
* For details please refer to: http://www.datatables.net
|
||||
*/
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
root = window;
|
||||
}
|
||||
|
||||
(function(window, document, undefined) {
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
$ = require('datatables.net')(root, $).$;
|
||||
}
|
||||
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
|
||||
|
||||
/**
|
||||
@ -89,10 +115,6 @@ function fnDomSwitch( nParent, iFrom, iTo )
|
||||
}
|
||||
|
||||
|
||||
|
||||
var factory = function( $, DataTable ) {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Plug-in for DataTables which will reorder the internal column structure by taking the column
|
||||
* from one position (iFrom) and insert it into a given point (iTo).
|
||||
@ -100,14 +122,15 @@ var factory = function( $, DataTable ) {
|
||||
* @param object oSettings DataTables settings object - automatically added by DataTables!
|
||||
* @param int iFrom Take the column to be repositioned from this point
|
||||
* @param int iTo and insert it into this point
|
||||
* @param bool drop Indicate if the reorder is the final one (i.e. a drop)
|
||||
* not a live reorder
|
||||
* @returns void
|
||||
*/
|
||||
$.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
|
||||
$.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo, drop )
|
||||
{
|
||||
var v110 = $.fn.dataTable.Api ? true : false;
|
||||
var i, iLen, j, jLen, iCols=oSettings.aoColumns.length, nTrs, oCol;
|
||||
var i, iLen, j, jLen, jen, iCols=oSettings.aoColumns.length, nTrs, oCol;
|
||||
var attrMap = function ( obj, prop, mapping ) {
|
||||
if ( ! obj[ prop ] ) {
|
||||
if ( ! obj[ prop ] || typeof obj[ prop ] === 'function' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -180,17 +203,13 @@ $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
|
||||
}
|
||||
|
||||
// Update the column indexes
|
||||
if ( v110 ) {
|
||||
oCol.idx = aiInvertMapping[ oCol.idx ];
|
||||
}
|
||||
oCol.idx = aiInvertMapping[ oCol.idx ];
|
||||
}
|
||||
|
||||
if ( v110 ) {
|
||||
// Update 1.10 optimised sort class removal variable
|
||||
$.each( oSettings.aLastSort, function (i, val) {
|
||||
oSettings.aLastSort[i].src = aiInvertMapping[ val.src ];
|
||||
} );
|
||||
}
|
||||
// Update 1.10 optimised sort class removal variable
|
||||
$.each( oSettings.aLastSort, function (i, val) {
|
||||
oSettings.aLastSort[i].src = aiInvertMapping[ val.src ];
|
||||
} );
|
||||
|
||||
/* Update the Get and Set functions for each column */
|
||||
for ( i=0, iLen=iCols ; i<iLen ; i++ )
|
||||
@ -199,9 +218,6 @@ $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
|
||||
|
||||
if ( typeof oCol.mData == 'number' ) {
|
||||
oCol.mData = aiInvertMapping[ oCol.mData ];
|
||||
|
||||
// regenerate the get / set functions
|
||||
oSettings.oApi._fnColumnOptions( oSettings, i, {} );
|
||||
}
|
||||
else if ( $.isPlainObject( oCol.mData ) ) {
|
||||
// HTML5 data sourced
|
||||
@ -209,13 +225,9 @@ $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
|
||||
attrMap( oCol.mData, 'filter', aiInvertMapping );
|
||||
attrMap( oCol.mData, 'sort', aiInvertMapping );
|
||||
attrMap( oCol.mData, 'type', aiInvertMapping );
|
||||
|
||||
// regenerate the get / set functions
|
||||
oSettings.oApi._fnColumnOptions( oSettings, i, {} );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Move the DOM elements
|
||||
*/
|
||||
@ -268,6 +280,11 @@ $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
|
||||
/* Columns */
|
||||
fnArraySwitch( oSettings.aoColumns, iFrom, iTo );
|
||||
|
||||
// regenerate the get / set functions
|
||||
for ( i=0, iLen=iCols ; i<iLen ; i++ ) {
|
||||
oSettings.oApi._fnColumnOptions( oSettings, i, {} );
|
||||
}
|
||||
|
||||
/* Search columns */
|
||||
fnArraySwitch( oSettings.aoPreSearchCols, iFrom, iTo );
|
||||
|
||||
@ -275,26 +292,25 @@ $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
|
||||
for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
|
||||
{
|
||||
var data = oSettings.aoData[i];
|
||||
var cells = data.anCells;
|
||||
|
||||
if ( v110 ) {
|
||||
// DataTables 1.10+
|
||||
if ( data.anCells ) {
|
||||
fnArraySwitch( data.anCells, iFrom, iTo );
|
||||
}
|
||||
if ( cells ) {
|
||||
fnArraySwitch( cells, iFrom, iTo );
|
||||
|
||||
// For DOM sourced data, the invalidate will reread the cell into
|
||||
// the data array, but for data sources as an array, they need to
|
||||
// be flipped
|
||||
if ( data.src !== 'dom' && $.isArray( data._aData ) ) {
|
||||
fnArraySwitch( data._aData, iFrom, iTo );
|
||||
// Longer term, should this be moved into the DataTables' invalidate
|
||||
// methods?
|
||||
for ( j=0, jen=cells.length ; j<jen ; j++ ) {
|
||||
if ( cells[j] && cells[j]._DT_CellIndex ) {
|
||||
cells[j]._DT_CellIndex.column = j;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
// DataTables 1.9-
|
||||
if ( $.isArray( data._aData ) ) {
|
||||
fnArraySwitch( data._aData, iFrom, iTo );
|
||||
}
|
||||
fnArraySwitch( data._anHidden, iFrom, iTo );
|
||||
|
||||
// For DOM sourced data, the invalidate will reread the cell into
|
||||
// the data array, but for data sources as an array, they need to
|
||||
// be flipped
|
||||
if ( data.src !== 'dom' && $.isArray( data._aData ) ) {
|
||||
fnArraySwitch( data._aData, iFrom, iTo );
|
||||
}
|
||||
}
|
||||
|
||||
@ -312,11 +328,9 @@ $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
|
||||
}
|
||||
}
|
||||
|
||||
// In 1.10 we need to invalidate row cached data for sorting, filtering etc
|
||||
if ( v110 ) {
|
||||
var api = new $.fn.dataTable.Api( oSettings );
|
||||
api.rows().invalidate();
|
||||
}
|
||||
// Invalidate row cached data for sorting, filtering etc
|
||||
var api = new $.fn.dataTable.Api( oSettings );
|
||||
api.rows().invalidate();
|
||||
|
||||
/*
|
||||
* Update DataTables' event handlers
|
||||
@ -331,10 +345,16 @@ $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
|
||||
|
||||
|
||||
/* Fire an event so other plug-ins can update */
|
||||
$(oSettings.oInstance).trigger( 'column-reorder', [ oSettings, {
|
||||
"iFrom": iFrom,
|
||||
"iTo": iTo,
|
||||
"aiInvertMapping": aiInvertMapping
|
||||
$(oSettings.oInstance).trigger( 'column-reorder.dt', [ oSettings, {
|
||||
from: iFrom,
|
||||
to: iTo,
|
||||
mapping: aiInvertMapping,
|
||||
drop: drop,
|
||||
|
||||
// Old style parameters for compatibility
|
||||
iFrom: iFrom,
|
||||
iTo: iTo,
|
||||
aiInvertMapping: aiInvertMapping
|
||||
} ] );
|
||||
};
|
||||
|
||||
@ -348,42 +368,16 @@ $.fn.dataTableExt.oApi.fnColReorder = function ( oSettings, iFrom, iTo )
|
||||
*/
|
||||
var ColReorder = function( dt, opts )
|
||||
{
|
||||
var oDTSettings;
|
||||
|
||||
if ( $.fn.dataTable.Api ) {
|
||||
oDTSettings = new $.fn.dataTable.Api( dt ).settings()[0];
|
||||
}
|
||||
// 1.9 compatibility
|
||||
else if ( dt.fnSettings ) {
|
||||
// DataTables object, convert to the settings object
|
||||
oDTSettings = dt.fnSettings();
|
||||
}
|
||||
else if ( typeof dt === 'string' ) {
|
||||
// jQuery selector
|
||||
if ( $.fn.dataTable.fnIsDataTable( $(dt)[0] ) ) {
|
||||
oDTSettings = $(dt).eq(0).dataTable().fnSettings();
|
||||
}
|
||||
}
|
||||
else if ( dt.nodeName && dt.nodeName.toLowerCase() === 'table' ) {
|
||||
// Table node
|
||||
if ( $.fn.dataTable.fnIsDataTable( dt.nodeName ) ) {
|
||||
oDTSettings = $(dt.nodeName).dataTable().fnSettings();
|
||||
}
|
||||
}
|
||||
else if ( dt instanceof jQuery ) {
|
||||
// jQuery object
|
||||
if ( $.fn.dataTable.fnIsDataTable( dt[0] ) ) {
|
||||
oDTSettings = dt.eq(0).dataTable().fnSettings();
|
||||
}
|
||||
}
|
||||
else {
|
||||
// DataTables settings object
|
||||
oDTSettings = dt;
|
||||
}
|
||||
var settings = new $.fn.dataTable.Api( dt ).settings()[0];
|
||||
|
||||
// Ensure that we can't initialise on the same table twice
|
||||
if ( oDTSettings._colReorder ) {
|
||||
throw "ColReorder already initialised on table #"+oDTSettings.nTable.id;
|
||||
if ( settings._colReorder ) {
|
||||
return settings._colReorder;
|
||||
}
|
||||
|
||||
// Allow the options to be a boolean for defaults
|
||||
if ( opts === true ) {
|
||||
opts = {};
|
||||
}
|
||||
|
||||
// Convert from camelCase to Hungarian, just as DataTables does
|
||||
@ -491,19 +485,16 @@ var ColReorder = function( dt, opts )
|
||||
|
||||
|
||||
/* Constructor logic */
|
||||
this.s.dt = oDTSettings;
|
||||
this.s.dt = settings;
|
||||
this.s.dt._colReorder = this;
|
||||
this._fnConstruct();
|
||||
|
||||
/* Add destroy callback */
|
||||
oDTSettings.oApi._fnCallbackReg(oDTSettings, 'aoDestroyCallback', $.proxy(this._fnDestroy, this), 'ColReorder');
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
|
||||
|
||||
ColReorder.prototype = {
|
||||
$.extend( ColReorder.prototype, {
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Public methods
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
@ -527,13 +518,7 @@ ColReorder.prototype = {
|
||||
*/
|
||||
"fnReset": function ()
|
||||
{
|
||||
var a = [];
|
||||
for ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )
|
||||
{
|
||||
a.push( this.s.dt.aoColumns[i]._ColReorder_iOrigCol );
|
||||
}
|
||||
|
||||
this._fnOrderColumns( a );
|
||||
this._fnOrderColumns( this.fnOrder() );
|
||||
|
||||
return this;
|
||||
},
|
||||
@ -585,24 +570,74 @@ ColReorder.prototype = {
|
||||
* $.fn.dataTable.ColReorder( '#example' ).fnOrder().reverse()
|
||||
* );
|
||||
*/
|
||||
"fnOrder": function ( set )
|
||||
"fnOrder": function ( set, original )
|
||||
{
|
||||
if ( set === undefined )
|
||||
{
|
||||
var a = [];
|
||||
for ( var i=0, iLen=this.s.dt.aoColumns.length ; i<iLen ; i++ )
|
||||
{
|
||||
a.push( this.s.dt.aoColumns[i]._ColReorder_iOrigCol );
|
||||
var a = [], i, ien, j, jen;
|
||||
var columns = this.s.dt.aoColumns;
|
||||
|
||||
if ( set === undefined ){
|
||||
for ( i=0, ien=columns.length ; i<ien ; i++ ) {
|
||||
a.push( columns[i]._ColReorder_iOrigCol );
|
||||
}
|
||||
|
||||
return a;
|
||||
}
|
||||
|
||||
// The order given is based on the original indexes, rather than the
|
||||
// existing ones, so we need to translate from the original to current
|
||||
// before then doing the order
|
||||
if ( original ) {
|
||||
var order = this.fnOrder();
|
||||
|
||||
for ( i=0, ien=set.length ; i<ien ; i++ ) {
|
||||
a.push( $.inArray( set[i], order ) );
|
||||
}
|
||||
|
||||
set = a;
|
||||
}
|
||||
|
||||
this._fnOrderColumns( fnInvertKeyValues( set ) );
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Convert from the original column index, to the original
|
||||
*
|
||||
* @param {int|array} idx Index(es) to convert
|
||||
* @param {string} dir Transpose direction - `fromOriginal` / `toCurrent`
|
||||
* or `'toOriginal` / `fromCurrent`
|
||||
* @return {int|array} Converted values
|
||||
*/
|
||||
fnTranspose: function ( idx, dir )
|
||||
{
|
||||
if ( ! dir ) {
|
||||
dir = 'toCurrent';
|
||||
}
|
||||
|
||||
var order = this.fnOrder();
|
||||
var columns = this.s.dt.aoColumns;
|
||||
|
||||
if ( dir === 'toCurrent' ) {
|
||||
// Given an original index, want the current
|
||||
return ! $.isArray( idx ) ?
|
||||
$.inArray( idx, order ) :
|
||||
$.map( idx, function ( index ) {
|
||||
return $.inArray( index, order );
|
||||
} );
|
||||
}
|
||||
else {
|
||||
// Given a current index, want the original
|
||||
return ! $.isArray( idx ) ?
|
||||
columns[idx]._ColReorder_iOrigCol :
|
||||
$.map( idx, function ( index ) {
|
||||
return columns[index]._ColReorder_iOrigCol;
|
||||
} );
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Private methods (they are of course public in JS, but recommended as private)
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
@ -617,6 +652,7 @@ ColReorder.prototype = {
|
||||
{
|
||||
var that = this;
|
||||
var iLen = this.s.dt.aoColumns.length;
|
||||
var table = this.s.dt.nTable;
|
||||
var i;
|
||||
|
||||
/* Columns discounted from reordering - counting left to right */
|
||||
@ -625,6 +661,11 @@ ColReorder.prototype = {
|
||||
this.s.fixed = this.s.init.iFixedColumns;
|
||||
}
|
||||
|
||||
if ( this.s.init.iFixedColumnsLeft )
|
||||
{
|
||||
this.s.fixed = this.s.init.iFixedColumnsLeft;
|
||||
}
|
||||
|
||||
/* Columns discounted from reordering - counting right to left */
|
||||
this.s.fixedRight = this.s.init.iFixedColumnsRight ?
|
||||
this.s.init.iFixedColumnsRight :
|
||||
@ -676,16 +717,13 @@ ColReorder.prototype = {
|
||||
if ( !that.s.dt._bInitComplete )
|
||||
{
|
||||
var bDone = false;
|
||||
this.s.dt.aoDrawCallback.push( {
|
||||
"fn": function () {
|
||||
if ( !that.s.dt._bInitComplete && !bDone )
|
||||
{
|
||||
bDone = true;
|
||||
var resort = fnInvertKeyValues( aiOrder );
|
||||
that._fnOrderColumns.call( that, resort );
|
||||
}
|
||||
},
|
||||
"sName": "ColReorder_Pre"
|
||||
$(table).on( 'draw.dt.colReorder', function () {
|
||||
if ( !that.s.dt._bInitComplete && !bDone )
|
||||
{
|
||||
bDone = true;
|
||||
var resort = fnInvertKeyValues( aiOrder );
|
||||
that._fnOrderColumns.call( that, resort );
|
||||
}
|
||||
} );
|
||||
}
|
||||
else
|
||||
@ -697,6 +735,19 @@ ColReorder.prototype = {
|
||||
else {
|
||||
this._fnSetColumnIndexes();
|
||||
}
|
||||
|
||||
// Destroy clean up
|
||||
$(table).on( 'destroy.dt.colReorder', function () {
|
||||
$(table).off( 'destroy.dt.colReorder draw.dt.colReorder' );
|
||||
$(that.s.dt.nTHead).find( '*' ).off( '.ColReorder' );
|
||||
|
||||
$.each( that.s.dt.aoColumns, function (i, column) {
|
||||
$(column.nTh).removeAttr('data-column-index');
|
||||
} );
|
||||
|
||||
that.s.dt._colReorder = null;
|
||||
that.s = null;
|
||||
} );
|
||||
},
|
||||
|
||||
|
||||
@ -709,6 +760,8 @@ ColReorder.prototype = {
|
||||
*/
|
||||
"_fnOrderColumns": function ( a )
|
||||
{
|
||||
var changed = false;
|
||||
|
||||
if ( a.length != this.s.dt.aoColumns.length )
|
||||
{
|
||||
this.s.dt.oInstance.oApi._fnLog( this.s.dt, 1, "ColReorder - array reorder does not "+
|
||||
@ -725,10 +778,19 @@ ColReorder.prototype = {
|
||||
fnArraySwitch( a, currIndex, i );
|
||||
|
||||
/* Do the column reorder in the table */
|
||||
this.s.dt.oInstance.fnColReorder( currIndex, i );
|
||||
this.s.dt.oInstance.fnColReorder( currIndex, i, true );
|
||||
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
|
||||
this._fnSetColumnIndexes();
|
||||
|
||||
// Has anything actually changed? If not, then nothing else to do
|
||||
if ( ! changed ) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* When scrolling we need to recalculate the column sizes to allow for the shift */
|
||||
if ( this.s.dt.oScroll.sX !== "" || this.s.dt.oScroll.sY !== "" )
|
||||
{
|
||||
@ -737,8 +799,6 @@ ColReorder.prototype = {
|
||||
|
||||
/* Save the state */
|
||||
this.s.dt.oInstance.oApi._fnSaveState( this.s.dt );
|
||||
|
||||
this._fnSetColumnIndexes();
|
||||
|
||||
if ( this.s.reorderCallback !== null )
|
||||
{
|
||||
@ -930,7 +990,7 @@ ColReorder.prototype = {
|
||||
|
||||
// Perform reordering if realtime updating is on and the column has moved
|
||||
if ( this.s.init.bRealtime && lastToIndex !== this.s.mouse.toIndex ) {
|
||||
this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex );
|
||||
this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex, false );
|
||||
this.s.mouse.fromIndex = this.s.mouse.toIndex;
|
||||
this._fnRegions();
|
||||
}
|
||||
@ -959,7 +1019,7 @@ ColReorder.prototype = {
|
||||
this.dom.pointer = null;
|
||||
|
||||
/* Actually do the reorder */
|
||||
this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex );
|
||||
this.s.dt.oInstance.fnColReorder( this.s.mouse.fromIndex, this.s.mouse.toIndex, true );
|
||||
this._fnSetColumnIndexes();
|
||||
|
||||
/* When scrolling we need to recalculate the column sizes to allow for the shift */
|
||||
@ -998,10 +1058,12 @@ ColReorder.prototype = {
|
||||
} );
|
||||
|
||||
var iToPoint = 0;
|
||||
var total = $(aoColumns[0].nTh).offset().left; // Offset of the first column
|
||||
|
||||
for ( var i=0, iLen=aoColumns.length ; i<iLen ; i++ )
|
||||
{
|
||||
/* For the column / header in question, we want it's position to remain the same if the
|
||||
* position is just to it's immediate left or right, so we only incremement the counter for
|
||||
* position is just to it's immediate left or right, so we only increment the counter for
|
||||
* other columns
|
||||
*/
|
||||
if ( i != this.s.mouse.fromIndex )
|
||||
@ -1009,10 +1071,12 @@ ColReorder.prototype = {
|
||||
iToPoint++;
|
||||
}
|
||||
|
||||
if ( aoColumns[i].bVisible )
|
||||
if ( aoColumns[i].bVisible && aoColumns[i].nTh.style.display !=='none' )
|
||||
{
|
||||
total += $(aoColumns[i].nTh).outerWidth();
|
||||
|
||||
this.s.aoTargets.push( {
|
||||
"x": $(aoColumns[i].nTh).offset().left + $(aoColumns[i].nTh).outerWidth(),
|
||||
"x": total,
|
||||
"to": iToPoint
|
||||
} );
|
||||
}
|
||||
@ -1084,35 +1148,6 @@ ColReorder.prototype = {
|
||||
.appendTo( 'body' );
|
||||
},
|
||||
|
||||
/**
|
||||
* Clean up ColReorder memory references and event handlers
|
||||
* @method _fnDestroy
|
||||
* @returns void
|
||||
* @private
|
||||
*/
|
||||
"_fnDestroy": function ()
|
||||
{
|
||||
var i, iLen;
|
||||
|
||||
for ( i=0, iLen=this.s.dt.aoDrawCallback.length ; i<iLen ; i++ )
|
||||
{
|
||||
if ( this.s.dt.aoDrawCallback[i].sName === 'ColReorder_Pre' )
|
||||
{
|
||||
this.s.dt.aoDrawCallback.splice( i, 1 );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$(this.s.dt.nTHead).find( '*' ).off( '.ColReorder' );
|
||||
|
||||
$.each( this.s.dt.aoColumns, function (i, column) {
|
||||
$(column.nTh).removeAttr('data-column-index');
|
||||
} );
|
||||
|
||||
this.s.dt._colReorder = null;
|
||||
this.s = null;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Add a data attribute to the column headers, so we know the index of
|
||||
@ -1126,7 +1161,7 @@ ColReorder.prototype = {
|
||||
$(column.nTh).attr('data-column-index', i);
|
||||
} );
|
||||
}
|
||||
};
|
||||
} );
|
||||
|
||||
|
||||
|
||||
@ -1150,22 +1185,6 @@ ColReorder.defaults = {
|
||||
* @type array
|
||||
* @default null
|
||||
* @static
|
||||
* @example
|
||||
* // Using the `oColReorder` option in the DataTables options object
|
||||
* $('#example').dataTable( {
|
||||
* "sDom": 'Rlfrtip',
|
||||
* "oColReorder": {
|
||||
* "aiOrder": [ 4, 3, 2, 1, 0 ]
|
||||
* }
|
||||
* } );
|
||||
*
|
||||
* @example
|
||||
* // Using `new` constructor
|
||||
* $('#example').dataTable()
|
||||
*
|
||||
* new $.fn.dataTable.ColReorder( '#example', {
|
||||
* "aiOrder": [ 4, 3, 2, 1, 0 ]
|
||||
* } );
|
||||
*/
|
||||
aiOrder: null,
|
||||
|
||||
@ -1178,24 +1197,8 @@ ColReorder.defaults = {
|
||||
* @type boolean
|
||||
* @default false
|
||||
* @static
|
||||
* @example
|
||||
* // Using the `oColReorder` option in the DataTables options object
|
||||
* $('#example').dataTable( {
|
||||
* "sDom": 'Rlfrtip',
|
||||
* "oColReorder": {
|
||||
* "bRealtime": true
|
||||
* }
|
||||
* } );
|
||||
*
|
||||
* @example
|
||||
* // Using `new` constructor
|
||||
* $('#example').dataTable()
|
||||
*
|
||||
* new $.fn.dataTable.ColReorder( '#example', {
|
||||
* "bRealtime": true
|
||||
* } );
|
||||
*/
|
||||
bRealtime: false,
|
||||
bRealtime: true,
|
||||
|
||||
/**
|
||||
* Indicate how many columns should be fixed in position (counting from the
|
||||
@ -1203,74 +1206,23 @@ ColReorder.defaults = {
|
||||
* @type int
|
||||
* @default 0
|
||||
* @static
|
||||
* @example
|
||||
* // Using the `oColReorder` option in the DataTables options object
|
||||
* $('#example').dataTable( {
|
||||
* "sDom": 'Rlfrtip',
|
||||
* "oColReorder": {
|
||||
* "iFixedColumns": 1
|
||||
* }
|
||||
* } );
|
||||
*
|
||||
* @example
|
||||
* // Using `new` constructor
|
||||
* $('#example').dataTable()
|
||||
*
|
||||
* new $.fn.dataTable.ColReorder( '#example', {
|
||||
* "iFixedColumns": 1
|
||||
* } );
|
||||
*/
|
||||
iFixedColumns: 0,
|
||||
iFixedColumnsLeft: 0,
|
||||
|
||||
/**
|
||||
* As `iFixedColumnsRight` but counting from the right.
|
||||
* @type int
|
||||
* @default 0
|
||||
* @static
|
||||
* @example
|
||||
* // Using the `oColReorder` option in the DataTables options object
|
||||
* $('#example').dataTable( {
|
||||
* "sDom": 'Rlfrtip',
|
||||
* "oColReorder": {
|
||||
* "iFixedColumnsRight": 1
|
||||
* }
|
||||
* } );
|
||||
*
|
||||
* @example
|
||||
* // Using `new` constructor
|
||||
* $('#example').dataTable()
|
||||
*
|
||||
* new $.fn.dataTable.ColReorder( '#example', {
|
||||
* "iFixedColumnsRight": 1
|
||||
* } );
|
||||
*/
|
||||
iFixedColumnsRight: 0,
|
||||
|
||||
/**
|
||||
* Callback function that is fired when columns are reordered
|
||||
* Callback function that is fired when columns are reordered. The `column-
|
||||
* reorder` event is preferred over this callback
|
||||
* @type function():void
|
||||
* @default null
|
||||
* @static
|
||||
* @example
|
||||
* // Using the `oColReorder` option in the DataTables options object
|
||||
* $('#example').dataTable( {
|
||||
* "sDom": 'Rlfrtip',
|
||||
* "oColReorder": {
|
||||
* "fnReorderCallback": function () {
|
||||
* alert( 'Columns reordered' );
|
||||
* }
|
||||
* }
|
||||
* } );
|
||||
*
|
||||
* @example
|
||||
* // Using `new` constructor
|
||||
* $('#example').dataTable()
|
||||
*
|
||||
* new $.fn.dataTable.ColReorder( '#example', {
|
||||
* "fnReorderCallback": function () {
|
||||
* alert( 'Columns reordered' );
|
||||
* }
|
||||
* } );
|
||||
*/
|
||||
fnReorderCallback: null
|
||||
};
|
||||
@ -1287,7 +1239,7 @@ ColReorder.defaults = {
|
||||
* @type String
|
||||
* @default As code
|
||||
*/
|
||||
ColReorder.version = "1.1.3";
|
||||
ColReorder.version = "1.3.1";
|
||||
|
||||
|
||||
|
||||
@ -1303,7 +1255,7 @@ $.fn.DataTable.ColReorder = ColReorder;
|
||||
// Register a new feature with DataTables
|
||||
if ( typeof $.fn.dataTable == "function" &&
|
||||
typeof $.fn.dataTableExt.fnVersionCheck == "function" &&
|
||||
$.fn.dataTableExt.fnVersionCheck('1.9.3') )
|
||||
$.fn.dataTableExt.fnVersionCheck('1.10.8') )
|
||||
{
|
||||
$.fn.dataTableExt.aoFeatures.push( {
|
||||
"fnInit": function( settings ) {
|
||||
@ -1326,47 +1278,55 @@ if ( typeof $.fn.dataTable == "function" &&
|
||||
} );
|
||||
}
|
||||
else {
|
||||
alert( "Warning: ColReorder requires DataTables 1.9.3 or greater - www.datatables.net/download");
|
||||
alert( "Warning: ColReorder requires DataTables 1.10.8 or greater - www.datatables.net/download");
|
||||
}
|
||||
|
||||
|
||||
// Attach a listener to the document which listens for DataTables initialisation
|
||||
// events so we can automatically initialise
|
||||
$(document).on( 'preInit.dt.colReorder', function (e, settings) {
|
||||
if ( e.namespace !== 'dt' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var init = settings.oInit.colReorder;
|
||||
var defaults = DataTable.defaults.colReorder;
|
||||
|
||||
if ( init || defaults ) {
|
||||
var opts = $.extend( {}, init, defaults );
|
||||
|
||||
if ( init !== false ) {
|
||||
new ColReorder( settings, opts );
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
||||
|
||||
// API augmentation
|
||||
if ( $.fn.dataTable.Api ) {
|
||||
$.fn.dataTable.Api.register( 'colReorder.reset()', function () {
|
||||
$.fn.dataTable.Api.register( 'colReorder.reset()', function () {
|
||||
return this.iterator( 'table', function ( ctx ) {
|
||||
ctx._colReorder.fnReset();
|
||||
} );
|
||||
} );
|
||||
|
||||
$.fn.dataTable.Api.register( 'colReorder.order()', function ( set, original ) {
|
||||
if ( set ) {
|
||||
return this.iterator( 'table', function ( ctx ) {
|
||||
ctx._colReorder.fnReset();
|
||||
ctx._colReorder.fnOrder( set, original );
|
||||
} );
|
||||
} );
|
||||
}
|
||||
|
||||
$.fn.dataTable.Api.register( 'colReorder.order()', function ( set ) {
|
||||
if ( set ) {
|
||||
return this.iterator( 'table', function ( ctx ) {
|
||||
ctx._colReorder.fnOrder( set );
|
||||
} );
|
||||
}
|
||||
return this.context.length ?
|
||||
this.context[0]._colReorder.fnOrder() :
|
||||
null;
|
||||
} );
|
||||
|
||||
$.fn.dataTable.Api.register( 'colReorder.transpose()', function ( idx, dir ) {
|
||||
return this.context.length && this.context[0]._colReorder ?
|
||||
this.context[0]._colReorder.fnTranspose( idx, dir ) :
|
||||
idx;
|
||||
} );
|
||||
|
||||
return this.context.length ?
|
||||
this.context[0]._colReorder.fnOrder() :
|
||||
null;
|
||||
} );
|
||||
}
|
||||
|
||||
return ColReorder;
|
||||
}; // /factory
|
||||
|
||||
|
||||
// Define as an AMD module if possible
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
define( ['jquery', 'datatables'], factory );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// Node/CommonJS
|
||||
factory( require('jquery'), require('datatables') );
|
||||
}
|
||||
else if ( jQuery && !jQuery.fn.dataTable.ColReorder ) {
|
||||
// Otherwise simply initialise as normal, stopping multiple evaluation
|
||||
factory( jQuery, jQuery.fn.dataTable );
|
||||
}
|
||||
|
||||
|
||||
})(window, document);
|
||||
}));
|
||||
|
||||
@ -1,26 +1,27 @@
|
||||
/*!
|
||||
ColReorder 1.1.3
|
||||
©2010-2014 SpryMedia Ltd - datatables.net/license
|
||||
ColReorder 1.3.1
|
||||
©2010-2015 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
(function(o,r,s){function p(d){for(var f=[],a=0,b=d.length;a<b;a++)f[d[a]]=a;return f}function l(d,f,a){f=d.splice(f,1)[0];d.splice(a,0,f)}function q(d,f,a){for(var b=[],e=0,h=d.childNodes.length;e<h;e++)1==d.childNodes[e].nodeType&&b.push(d.childNodes[e]);f=b[f];null!==a?d.insertBefore(f,b[a]):d.appendChild(f)}o=function(d){d.fn.dataTableExt.oApi.fnColReorder=function(a,b,e){var h=d.fn.dataTable.Api?!0:!1,c,g,f,m,n=a.aoColumns.length,i,j;i=function(a,b,c){if(a[b]){var e=a[b].split("."),d=e.shift();
|
||||
isNaN(1*d)||(a[b]=c[1*d]+"."+e.join("."))}};if(b!=e)if(0>b||b>=n)this.oApi._fnLog(a,1,"ColReorder 'from' index is out of bounds: "+b);else if(0>e||e>=n)this.oApi._fnLog(a,1,"ColReorder 'to' index is out of bounds: "+e);else{f=[];c=0;for(g=n;c<g;c++)f[c]=c;l(f,b,e);var k=p(f);c=0;for(g=a.aaSorting.length;c<g;c++)a.aaSorting[c][0]=k[a.aaSorting[c][0]];if(null!==a.aaSortingFixed){c=0;for(g=a.aaSortingFixed.length;c<g;c++)a.aaSortingFixed[c][0]=k[a.aaSortingFixed[c][0]]}c=0;for(g=n;c<g;c++){j=a.aoColumns[c];
|
||||
f=0;for(m=j.aDataSort.length;f<m;f++)j.aDataSort[f]=k[j.aDataSort[f]];h&&(j.idx=k[j.idx])}h&&d.each(a.aLastSort,function(b,c){a.aLastSort[b].src=k[c.src]});c=0;for(g=n;c<g;c++)j=a.aoColumns[c],"number"==typeof j.mData?(j.mData=k[j.mData],a.oApi._fnColumnOptions(a,c,{})):d.isPlainObject(j.mData)&&(i(j.mData,"_",k),i(j.mData,"filter",k),i(j.mData,"sort",k),i(j.mData,"type",k),a.oApi._fnColumnOptions(a,c,{}));if(a.aoColumns[b].bVisible){f=this.oApi._fnColumnIndexToVisible(a,b);m=null;for(c=e<b?e:e+1;null===
|
||||
m&&c<n;)m=this.oApi._fnColumnIndexToVisible(a,c),c++;i=a.nTHead.getElementsByTagName("tr");c=0;for(g=i.length;c<g;c++)q(i[c],f,m);if(null!==a.nTFoot){i=a.nTFoot.getElementsByTagName("tr");c=0;for(g=i.length;c<g;c++)q(i[c],f,m)}c=0;for(g=a.aoData.length;c<g;c++)null!==a.aoData[c].nTr&&q(a.aoData[c].nTr,f,m)}l(a.aoColumns,b,e);l(a.aoPreSearchCols,b,e);c=0;for(g=a.aoData.length;c<g;c++)i=a.aoData[c],h?(i.anCells&&l(i.anCells,b,e),"dom"!==i.src&&d.isArray(i._aData)&&l(i._aData,b,e)):(d.isArray(i._aData)&&
|
||||
l(i._aData,b,e),l(i._anHidden,b,e));c=0;for(g=a.aoHeader.length;c<g;c++)l(a.aoHeader[c],b,e);if(null!==a.aoFooter){c=0;for(g=a.aoFooter.length;c<g;c++)l(a.aoFooter[c],b,e)}h&&(new d.fn.dataTable.Api(a)).rows().invalidate();c=0;for(g=n;c<g;c++)d(a.aoColumns[c].nTh).off("click.DT"),this.oApi._fnSortAttachListener(a,a.aoColumns[c].nTh,c);d(a.oInstance).trigger("column-reorder",[a,{iFrom:b,iTo:e,aiInvertMapping:k}])}};var f=function(a,b){var e;d.fn.dataTable.Api?e=(new d.fn.dataTable.Api(a)).settings()[0]:
|
||||
a.fnSettings?e=a.fnSettings():"string"===typeof a?d.fn.dataTable.fnIsDataTable(d(a)[0])&&(e=d(a).eq(0).dataTable().fnSettings()):a.nodeName&&"table"===a.nodeName.toLowerCase()?d.fn.dataTable.fnIsDataTable(a.nodeName)&&(e=d(a.nodeName).dataTable().fnSettings()):a instanceof jQuery?d.fn.dataTable.fnIsDataTable(a[0])&&(e=a.eq(0).dataTable().fnSettings()):e=a;if(e._colReorder)throw"ColReorder already initialised on table #"+e.nTable.id;var h=d.fn.dataTable.camelToHungarian;h&&(h(f.defaults,f.defaults,
|
||||
!0),h(f.defaults,b||{}));this.s={dt:null,init:d.extend(!0,{},f.defaults,b),fixed:0,fixedRight:0,reorderCallback:null,mouse:{startX:-1,startY:-1,offsetX:-1,offsetY:-1,target:-1,targetIndex:-1,fromIndex:-1},aoTargets:[]};this.dom={drag:null,pointer:null};this.s.dt=e;this.s.dt._colReorder=this;this._fnConstruct();e.oApi._fnCallbackReg(e,"aoDestroyCallback",d.proxy(this._fnDestroy,this),"ColReorder");return this};f.prototype={fnReset:function(){for(var a=[],b=0,e=this.s.dt.aoColumns.length;b<e;b++)a.push(this.s.dt.aoColumns[b]._ColReorder_iOrigCol);
|
||||
this._fnOrderColumns(a);return this},fnGetCurrentOrder:function(){return this.fnOrder()},fnOrder:function(a){if(a===s){for(var a=[],b=0,e=this.s.dt.aoColumns.length;b<e;b++)a.push(this.s.dt.aoColumns[b]._ColReorder_iOrigCol);return a}this._fnOrderColumns(p(a));return this},_fnConstruct:function(){var a=this,b=this.s.dt.aoColumns.length,e;this.s.init.iFixedColumns&&(this.s.fixed=this.s.init.iFixedColumns);this.s.fixedRight=this.s.init.iFixedColumnsRight?this.s.init.iFixedColumnsRight:0;this.s.init.fnReorderCallback&&
|
||||
(this.s.reorderCallback=this.s.init.fnReorderCallback);for(e=0;e<b;e++)e>this.s.fixed-1&&e<b-this.s.fixedRight&&this._fnMouseListener(e,this.s.dt.aoColumns[e].nTh),this.s.dt.aoColumns[e]._ColReorder_iOrigCol=e;this.s.dt.oApi._fnCallbackReg(this.s.dt,"aoStateSaveParams",function(b,c){a._fnStateSave.call(a,c)},"ColReorder_State");var d=null;this.s.init.aiOrder&&(d=this.s.init.aiOrder.slice());this.s.dt.oLoadedState&&("undefined"!=typeof this.s.dt.oLoadedState.ColReorder&&this.s.dt.oLoadedState.ColReorder.length==
|
||||
this.s.dt.aoColumns.length)&&(d=this.s.dt.oLoadedState.ColReorder);if(d)if(a.s.dt._bInitComplete)b=p(d),a._fnOrderColumns.call(a,b);else{var c=!1;this.s.dt.aoDrawCallback.push({fn:function(){if(!a.s.dt._bInitComplete&&!c){c=true;var b=p(d);a._fnOrderColumns.call(a,b)}},sName:"ColReorder_Pre"})}else this._fnSetColumnIndexes()},_fnOrderColumns:function(a){if(a.length!=this.s.dt.aoColumns.length)this.s.dt.oInstance.oApi._fnLog(this.s.dt,1,"ColReorder - array reorder does not match known number of columns. Skipping.");
|
||||
else{for(var b=0,e=a.length;b<e;b++){var h=d.inArray(b,a);b!=h&&(l(a,h,b),this.s.dt.oInstance.fnColReorder(h,b))}(""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY)&&this.s.dt.oInstance.fnAdjustColumnSizing(!1);this.s.dt.oInstance.oApi._fnSaveState(this.s.dt);this._fnSetColumnIndexes();null!==this.s.reorderCallback&&this.s.reorderCallback.call(this)}},_fnStateSave:function(a){var b,e,h,c=this.s.dt.aoColumns;a.ColReorder=[];if(a.aaSorting){for(b=0;b<a.aaSorting.length;b++)a.aaSorting[b][0]=c[a.aaSorting[b][0]]._ColReorder_iOrigCol;
|
||||
var f=d.extend(!0,[],a.aoSearchCols);b=0;for(e=c.length;b<e;b++)h=c[b]._ColReorder_iOrigCol,a.aoSearchCols[h]=f[b],a.abVisCols[h]=c[b].bVisible,a.ColReorder.push(h)}else if(a.order){for(b=0;b<a.order.length;b++)a.order[b][0]=c[a.order[b][0]]._ColReorder_iOrigCol;f=d.extend(!0,[],a.columns);b=0;for(e=c.length;b<e;b++)h=c[b]._ColReorder_iOrigCol,a.columns[h]=f[b],a.ColReorder.push(h)}},_fnMouseListener:function(a,b){var e=this;d(b).on("mousedown.ColReorder",function(a){a.preventDefault();e._fnMouseDown.call(e,
|
||||
a,b)})},_fnMouseDown:function(a,b){var e=this,f=d(a.target).closest("th, td").offset(),c=parseInt(d(b).attr("data-column-index"),10);c!==s&&(this.s.mouse.startX=a.pageX,this.s.mouse.startY=a.pageY,this.s.mouse.offsetX=a.pageX-f.left,this.s.mouse.offsetY=a.pageY-f.top,this.s.mouse.target=this.s.dt.aoColumns[c].nTh,this.s.mouse.targetIndex=c,this.s.mouse.fromIndex=c,this._fnRegions(),d(r).on("mousemove.ColReorder",function(a){e._fnMouseMove.call(e,a)}).on("mouseup.ColReorder",function(a){e._fnMouseUp.call(e,
|
||||
a)}))},_fnMouseMove:function(a){if(null===this.dom.drag){if(5>Math.pow(Math.pow(a.pageX-this.s.mouse.startX,2)+Math.pow(a.pageY-this.s.mouse.startY,2),0.5))return;this._fnCreateDragNode()}this.dom.drag.css({left:a.pageX-this.s.mouse.offsetX,top:a.pageY-this.s.mouse.offsetY});for(var b=!1,e=this.s.mouse.toIndex,d=1,c=this.s.aoTargets.length;d<c;d++)if(a.pageX<this.s.aoTargets[d-1].x+(this.s.aoTargets[d].x-this.s.aoTargets[d-1].x)/2){this.dom.pointer.css("left",this.s.aoTargets[d-1].x);this.s.mouse.toIndex=
|
||||
this.s.aoTargets[d-1].to;b=!0;break}b||(this.dom.pointer.css("left",this.s.aoTargets[this.s.aoTargets.length-1].x),this.s.mouse.toIndex=this.s.aoTargets[this.s.aoTargets.length-1].to);this.s.init.bRealtime&&e!==this.s.mouse.toIndex&&(this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex,this.s.mouse.toIndex),this.s.mouse.fromIndex=this.s.mouse.toIndex,this._fnRegions())},_fnMouseUp:function(){d(r).off("mousemove.ColReorder mouseup.ColReorder");null!==this.dom.drag&&(this.dom.drag.remove(),this.dom.pointer.remove(),
|
||||
this.dom.drag=null,this.dom.pointer=null,this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex,this.s.mouse.toIndex),this._fnSetColumnIndexes(),(""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY)&&this.s.dt.oInstance.fnAdjustColumnSizing(!1),this.s.dt.oInstance.oApi._fnSaveState(this.s.dt),null!==this.s.reorderCallback&&this.s.reorderCallback.call(this))},_fnRegions:function(){var a=this.s.dt.aoColumns;this.s.aoTargets.splice(0,this.s.aoTargets.length);this.s.aoTargets.push({x:d(this.s.dt.nTable).offset().left,
|
||||
to:0});for(var b=0,e=0,f=a.length;e<f;e++)e!=this.s.mouse.fromIndex&&b++,a[e].bVisible&&this.s.aoTargets.push({x:d(a[e].nTh).offset().left+d(a[e].nTh).outerWidth(),to:b});0!==this.s.fixedRight&&this.s.aoTargets.splice(this.s.aoTargets.length-this.s.fixedRight);0!==this.s.fixed&&this.s.aoTargets.splice(0,this.s.fixed)},_fnCreateDragNode:function(){var a=""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY,b=this.s.dt.aoColumns[this.s.mouse.targetIndex].nTh,e=b.parentNode,f=e.parentNode,c=f.parentNode,
|
||||
g=d(b).clone();this.dom.drag=d(c.cloneNode(!1)).addClass("DTCR_clonedTable").append(d(f.cloneNode(!1)).append(d(e.cloneNode(!1)).append(g[0]))).css({position:"absolute",top:0,left:0,width:d(b).outerWidth(),height:d(b).outerHeight()}).appendTo("body");this.dom.pointer=d("<div></div>").addClass("DTCR_pointer").css({position:"absolute",top:a?d("div.dataTables_scroll",this.s.dt.nTableWrapper).offset().top:d(this.s.dt.nTable).offset().top,height:a?d("div.dataTables_scroll",this.s.dt.nTableWrapper).height():
|
||||
d(this.s.dt.nTable).height()}).appendTo("body")},_fnDestroy:function(){var a,b;a=0;for(b=this.s.dt.aoDrawCallback.length;a<b;a++)if("ColReorder_Pre"===this.s.dt.aoDrawCallback[a].sName){this.s.dt.aoDrawCallback.splice(a,1);break}d(this.s.dt.nTHead).find("*").off(".ColReorder");d.each(this.s.dt.aoColumns,function(a,b){d(b.nTh).removeAttr("data-column-index")});this.s=this.s.dt._colReorder=null},_fnSetColumnIndexes:function(){d.each(this.s.dt.aoColumns,function(a,b){d(b.nTh).attr("data-column-index",
|
||||
a)})}};f.defaults={aiOrder:null,bRealtime:!1,iFixedColumns:0,iFixedColumnsRight:0,fnReorderCallback:null};f.version="1.1.3";d.fn.dataTable.ColReorder=f;d.fn.DataTable.ColReorder=f;"function"==typeof d.fn.dataTable&&"function"==typeof d.fn.dataTableExt.fnVersionCheck&&d.fn.dataTableExt.fnVersionCheck("1.9.3")?d.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var b=a.oInstance;a._colReorder?b.oApi._fnLog(a,1,"ColReorder attempted to initialise twice. Ignoring second"):(b=a.oInit,new f(a,b.colReorder||
|
||||
b.oColReorder||{}));return null},cFeature:"R",sFeature:"ColReorder"}):alert("Warning: ColReorder requires DataTables 1.9.3 or greater - www.datatables.net/download");d.fn.dataTable.Api&&(d.fn.dataTable.Api.register("colReorder.reset()",function(){return this.iterator("table",function(a){a._colReorder.fnReset()})}),d.fn.dataTable.Api.register("colReorder.order()",function(a){return a?this.iterator("table",function(b){b._colReorder.fnOrder(a)}):this.context.length?this.context[0]._colReorder.fnOrder():
|
||||
null}));return f};"function"===typeof define&&define.amd?define(["jquery","datatables"],o):"object"===typeof exports?o(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.ColReorder&&o(jQuery,jQuery.fn.dataTable)})(window,document);
|
||||
(function(f){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(n){return f(n,window,document)}):"object"===typeof exports?module.exports=function(n,k){n||(n=window);if(!k||!k.fn.dataTable)k=require("datatables.net")(n,k).$;return f(k,n,n.document)}:f(jQuery,window,document)})(function(f,n,k,r){function p(a){for(var c=[],d=0,e=a.length;d<e;d++)c[a[d]]=d;return c}function o(a,c,d){c=a.splice(c,1)[0];a.splice(d,0,c)}function q(a,c,d){for(var e=[],b=0,f=a.childNodes.length;b<
|
||||
f;b++)1==a.childNodes[b].nodeType&&e.push(a.childNodes[b]);c=e[c];null!==d?a.insertBefore(c,e[d]):a.appendChild(c)}var s=f.fn.dataTable;f.fn.dataTableExt.oApi.fnColReorder=function(a,c,d,e){var b,g,i,l,h,k=a.aoColumns.length,j;h=function(a,b,c){if(a[b]&&"function"!==typeof a[b]){var d=a[b].split("."),e=d.shift();isNaN(1*e)||(a[b]=c[1*e]+"."+d.join("."))}};if(c!=d)if(0>c||c>=k)this.oApi._fnLog(a,1,"ColReorder 'from' index is out of bounds: "+c);else if(0>d||d>=k)this.oApi._fnLog(a,1,"ColReorder 'to' index is out of bounds: "+
|
||||
d);else{i=[];b=0;for(g=k;b<g;b++)i[b]=b;o(i,c,d);var m=p(i);b=0;for(g=a.aaSorting.length;b<g;b++)a.aaSorting[b][0]=m[a.aaSorting[b][0]];if(null!==a.aaSortingFixed){b=0;for(g=a.aaSortingFixed.length;b<g;b++)a.aaSortingFixed[b][0]=m[a.aaSortingFixed[b][0]]}b=0;for(g=k;b<g;b++){j=a.aoColumns[b];i=0;for(l=j.aDataSort.length;i<l;i++)j.aDataSort[i]=m[j.aDataSort[i]];j.idx=m[j.idx]}f.each(a.aLastSort,function(b,c){a.aLastSort[b].src=m[c.src]});b=0;for(g=k;b<g;b++)j=a.aoColumns[b],"number"==typeof j.mData?
|
||||
j.mData=m[j.mData]:f.isPlainObject(j.mData)&&(h(j.mData,"_",m),h(j.mData,"filter",m),h(j.mData,"sort",m),h(j.mData,"type",m));if(a.aoColumns[c].bVisible){h=this.oApi._fnColumnIndexToVisible(a,c);l=null;for(b=d<c?d:d+1;null===l&&b<k;)l=this.oApi._fnColumnIndexToVisible(a,b),b++;i=a.nTHead.getElementsByTagName("tr");b=0;for(g=i.length;b<g;b++)q(i[b],h,l);if(null!==a.nTFoot){i=a.nTFoot.getElementsByTagName("tr");b=0;for(g=i.length;b<g;b++)q(i[b],h,l)}b=0;for(g=a.aoData.length;b<g;b++)null!==a.aoData[b].nTr&&
|
||||
q(a.aoData[b].nTr,h,l)}o(a.aoColumns,c,d);b=0;for(g=k;b<g;b++)a.oApi._fnColumnOptions(a,b,{});o(a.aoPreSearchCols,c,d);b=0;for(g=a.aoData.length;b<g;b++){l=a.aoData[b];if(j=l.anCells){o(j,c,d);i=0;for(h=j.length;i<h;i++)j[i]&&j[i]._DT_CellIndex&&(j[i]._DT_CellIndex.column=i)}"dom"!==l.src&&f.isArray(l._aData)&&o(l._aData,c,d)}b=0;for(g=a.aoHeader.length;b<g;b++)o(a.aoHeader[b],c,d);if(null!==a.aoFooter){b=0;for(g=a.aoFooter.length;b<g;b++)o(a.aoFooter[b],c,d)}(new f.fn.dataTable.Api(a)).rows().invalidate();
|
||||
b=0;for(g=k;b<g;b++)f(a.aoColumns[b].nTh).off("click.DT"),this.oApi._fnSortAttachListener(a,a.aoColumns[b].nTh,b);f(a.oInstance).trigger("column-reorder.dt",[a,{from:c,to:d,mapping:m,drop:e,iFrom:c,iTo:d,aiInvertMapping:m}])}};var h=function(a,c){var d=(new f.fn.dataTable.Api(a)).settings()[0];if(d._colReorder)return d._colReorder;!0===c&&(c={});var e=f.fn.dataTable.camelToHungarian;e&&(e(h.defaults,h.defaults,!0),e(h.defaults,c||{}));this.s={dt:null,init:f.extend(!0,{},h.defaults,c),fixed:0,fixedRight:0,
|
||||
reorderCallback:null,mouse:{startX:-1,startY:-1,offsetX:-1,offsetY:-1,target:-1,targetIndex:-1,fromIndex:-1},aoTargets:[]};this.dom={drag:null,pointer:null};this.s.dt=d;this.s.dt._colReorder=this;this._fnConstruct();return this};f.extend(h.prototype,{fnReset:function(){this._fnOrderColumns(this.fnOrder());return this},fnGetCurrentOrder:function(){return this.fnOrder()},fnOrder:function(a,c){var d=[],e,b,g=this.s.dt.aoColumns;if(a===r){e=0;for(b=g.length;e<b;e++)d.push(g[e]._ColReorder_iOrigCol);return d}if(c){g=
|
||||
this.fnOrder();e=0;for(b=a.length;e<b;e++)d.push(f.inArray(a[e],g));a=d}this._fnOrderColumns(p(a));return this},fnTranspose:function(a,c){c||(c="toCurrent");var d=this.fnOrder(),e=this.s.dt.aoColumns;return"toCurrent"===c?!f.isArray(a)?f.inArray(a,d):f.map(a,function(a){return f.inArray(a,d)}):!f.isArray(a)?e[a]._ColReorder_iOrigCol:f.map(a,function(a){return e[a]._ColReorder_iOrigCol})},_fnConstruct:function(){var a=this,c=this.s.dt.aoColumns.length,d=this.s.dt.nTable,e;this.s.init.iFixedColumns&&
|
||||
(this.s.fixed=this.s.init.iFixedColumns);this.s.init.iFixedColumnsLeft&&(this.s.fixed=this.s.init.iFixedColumnsLeft);this.s.fixedRight=this.s.init.iFixedColumnsRight?this.s.init.iFixedColumnsRight:0;this.s.init.fnReorderCallback&&(this.s.reorderCallback=this.s.init.fnReorderCallback);for(e=0;e<c;e++)e>this.s.fixed-1&&e<c-this.s.fixedRight&&this._fnMouseListener(e,this.s.dt.aoColumns[e].nTh),this.s.dt.aoColumns[e]._ColReorder_iOrigCol=e;this.s.dt.oApi._fnCallbackReg(this.s.dt,"aoStateSaveParams",function(b,
|
||||
c){a._fnStateSave.call(a,c)},"ColReorder_State");var b=null;this.s.init.aiOrder&&(b=this.s.init.aiOrder.slice());this.s.dt.oLoadedState&&("undefined"!=typeof this.s.dt.oLoadedState.ColReorder&&this.s.dt.oLoadedState.ColReorder.length==this.s.dt.aoColumns.length)&&(b=this.s.dt.oLoadedState.ColReorder);if(b)if(a.s.dt._bInitComplete)c=p(b),a._fnOrderColumns.call(a,c);else{var g=!1;f(d).on("draw.dt.colReorder",function(){if(!a.s.dt._bInitComplete&&!g){g=true;var c=p(b);a._fnOrderColumns.call(a,c)}})}else this._fnSetColumnIndexes();
|
||||
f(d).on("destroy.dt.colReorder",function(){f(d).off("destroy.dt.colReorder draw.dt.colReorder");f(a.s.dt.nTHead).find("*").off(".ColReorder");f.each(a.s.dt.aoColumns,function(a,b){f(b.nTh).removeAttr("data-column-index")});a.s.dt._colReorder=null;a.s=null})},_fnOrderColumns:function(a){var c=!1;if(a.length!=this.s.dt.aoColumns.length)this.s.dt.oInstance.oApi._fnLog(this.s.dt,1,"ColReorder - array reorder does not match known number of columns. Skipping.");else{for(var d=0,e=a.length;d<e;d++){var b=
|
||||
f.inArray(d,a);d!=b&&(o(a,b,d),this.s.dt.oInstance.fnColReorder(b,d,!0),c=!0)}this._fnSetColumnIndexes();c&&((""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY)&&this.s.dt.oInstance.fnAdjustColumnSizing(!1),this.s.dt.oInstance.oApi._fnSaveState(this.s.dt),null!==this.s.reorderCallback&&this.s.reorderCallback.call(this))}},_fnStateSave:function(a){var c,d,e,b=this.s.dt.aoColumns;a.ColReorder=[];if(a.aaSorting){for(c=0;c<a.aaSorting.length;c++)a.aaSorting[c][0]=b[a.aaSorting[c][0]]._ColReorder_iOrigCol;
|
||||
var g=f.extend(!0,[],a.aoSearchCols);c=0;for(d=b.length;c<d;c++)e=b[c]._ColReorder_iOrigCol,a.aoSearchCols[e]=g[c],a.abVisCols[e]=b[c].bVisible,a.ColReorder.push(e)}else if(a.order){for(c=0;c<a.order.length;c++)a.order[c][0]=b[a.order[c][0]]._ColReorder_iOrigCol;g=f.extend(!0,[],a.columns);c=0;for(d=b.length;c<d;c++)e=b[c]._ColReorder_iOrigCol,a.columns[e]=g[c],a.ColReorder.push(e)}},_fnMouseListener:function(a,c){var d=this;f(c).on("mousedown.ColReorder",function(a){a.preventDefault();d._fnMouseDown.call(d,
|
||||
a,c)})},_fnMouseDown:function(a,c){var d=this,e=f(a.target).closest("th, td").offset(),b=parseInt(f(c).attr("data-column-index"),10);b!==r&&(this.s.mouse.startX=a.pageX,this.s.mouse.startY=a.pageY,this.s.mouse.offsetX=a.pageX-e.left,this.s.mouse.offsetY=a.pageY-e.top,this.s.mouse.target=this.s.dt.aoColumns[b].nTh,this.s.mouse.targetIndex=b,this.s.mouse.fromIndex=b,this._fnRegions(),f(k).on("mousemove.ColReorder",function(a){d._fnMouseMove.call(d,a)}).on("mouseup.ColReorder",function(a){d._fnMouseUp.call(d,
|
||||
a)}))},_fnMouseMove:function(a){if(null===this.dom.drag){if(5>Math.pow(Math.pow(a.pageX-this.s.mouse.startX,2)+Math.pow(a.pageY-this.s.mouse.startY,2),0.5))return;this._fnCreateDragNode()}this.dom.drag.css({left:a.pageX-this.s.mouse.offsetX,top:a.pageY-this.s.mouse.offsetY});for(var c=!1,d=this.s.mouse.toIndex,e=1,b=this.s.aoTargets.length;e<b;e++)if(a.pageX<this.s.aoTargets[e-1].x+(this.s.aoTargets[e].x-this.s.aoTargets[e-1].x)/2){this.dom.pointer.css("left",this.s.aoTargets[e-1].x);this.s.mouse.toIndex=
|
||||
this.s.aoTargets[e-1].to;c=!0;break}c||(this.dom.pointer.css("left",this.s.aoTargets[this.s.aoTargets.length-1].x),this.s.mouse.toIndex=this.s.aoTargets[this.s.aoTargets.length-1].to);this.s.init.bRealtime&&d!==this.s.mouse.toIndex&&(this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex,this.s.mouse.toIndex,!1),this.s.mouse.fromIndex=this.s.mouse.toIndex,this._fnRegions())},_fnMouseUp:function(){f(k).off("mousemove.ColReorder mouseup.ColReorder");null!==this.dom.drag&&(this.dom.drag.remove(),this.dom.pointer.remove(),
|
||||
this.dom.drag=null,this.dom.pointer=null,this.s.dt.oInstance.fnColReorder(this.s.mouse.fromIndex,this.s.mouse.toIndex,!0),this._fnSetColumnIndexes(),(""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY)&&this.s.dt.oInstance.fnAdjustColumnSizing(!1),this.s.dt.oInstance.oApi._fnSaveState(this.s.dt),null!==this.s.reorderCallback&&this.s.reorderCallback.call(this))},_fnRegions:function(){var a=this.s.dt.aoColumns;this.s.aoTargets.splice(0,this.s.aoTargets.length);this.s.aoTargets.push({x:f(this.s.dt.nTable).offset().left,
|
||||
to:0});for(var c=0,d=f(a[0].nTh).offset().left,e=0,b=a.length;e<b;e++)e!=this.s.mouse.fromIndex&&c++,a[e].bVisible&&"none"!==a[e].nTh.style.display&&(d+=f(a[e].nTh).outerWidth(),this.s.aoTargets.push({x:d,to:c}));0!==this.s.fixedRight&&this.s.aoTargets.splice(this.s.aoTargets.length-this.s.fixedRight);0!==this.s.fixed&&this.s.aoTargets.splice(0,this.s.fixed)},_fnCreateDragNode:function(){var a=""!==this.s.dt.oScroll.sX||""!==this.s.dt.oScroll.sY,c=this.s.dt.aoColumns[this.s.mouse.targetIndex].nTh,
|
||||
d=c.parentNode,e=d.parentNode,b=e.parentNode,g=f(c).clone();this.dom.drag=f(b.cloneNode(!1)).addClass("DTCR_clonedTable").append(f(e.cloneNode(!1)).append(f(d.cloneNode(!1)).append(g[0]))).css({position:"absolute",top:0,left:0,width:f(c).outerWidth(),height:f(c).outerHeight()}).appendTo("body");this.dom.pointer=f("<div></div>").addClass("DTCR_pointer").css({position:"absolute",top:a?f("div.dataTables_scroll",this.s.dt.nTableWrapper).offset().top:f(this.s.dt.nTable).offset().top,height:a?f("div.dataTables_scroll",
|
||||
this.s.dt.nTableWrapper).height():f(this.s.dt.nTable).height()}).appendTo("body")},_fnSetColumnIndexes:function(){f.each(this.s.dt.aoColumns,function(a,c){f(c.nTh).attr("data-column-index",a)})}});h.defaults={aiOrder:null,bRealtime:!0,iFixedColumnsLeft:0,iFixedColumnsRight:0,fnReorderCallback:null};h.version="1.3.1";f.fn.dataTable.ColReorder=h;f.fn.DataTable.ColReorder=h;"function"==typeof f.fn.dataTable&&"function"==typeof f.fn.dataTableExt.fnVersionCheck&&f.fn.dataTableExt.fnVersionCheck("1.10.8")?
|
||||
f.fn.dataTableExt.aoFeatures.push({fnInit:function(a){var c=a.oInstance;a._colReorder?c.oApi._fnLog(a,1,"ColReorder attempted to initialise twice. Ignoring second"):(c=a.oInit,new h(a,c.colReorder||c.oColReorder||{}));return null},cFeature:"R",sFeature:"ColReorder"}):alert("Warning: ColReorder requires DataTables 1.10.8 or greater - www.datatables.net/download");f(k).on("preInit.dt.colReorder",function(a,c){if("dt"===a.namespace){var d=c.oInit.colReorder,e=s.defaults.colReorder;if(d||e)e=f.extend({},
|
||||
d,e),!1!==d&&new h(c,e)}});f.fn.dataTable.Api.register("colReorder.reset()",function(){return this.iterator("table",function(a){a._colReorder.fnReset()})});f.fn.dataTable.Api.register("colReorder.order()",function(a,c){return a?this.iterator("table",function(d){d._colReorder.fnOrder(a,c)}):this.context.length?this.context[0]._colReorder.fnOrder():null});f.fn.dataTable.Api.register("colReorder.transpose()",function(a,c){return this.context.length&&this.context[0]._colReorder?this.context[0]._colReorder.fnTranspose(a,
|
||||
c):a});return h});
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
MIT license
|
||||
|
||||
Copyright (c) 2010-2015 SpryMedia Limited
|
||||
http://datatables.net
|
||||
|
||||
|
||||
@ -1,20 +1,24 @@
|
||||
# FixedColumns
|
||||
|
||||
When making use of DataTables' x-axis scrolling feature (`scrollX`), you may wish to fix the left or right most columns in place. This plug-in for DataTables provides exactly this option (for non-scrolling tables, please use the FixedHeader plug-in, which can fix headers, footers and columns). Key features include:
|
||||
|
||||
* Freezes the left most column to the side of the table
|
||||
* Option to freeze two or more columns
|
||||
* Full integration with DataTables' scrolling options
|
||||
When making use of DataTables' x-axis scrolling feature (`scrollX`), you may wish to fix the left or right most columns in place. This extension for DataTables provides exactly this option (for non-scrolling tables, please use the FixedHeader extension, which can fix the header and footer).
|
||||
|
||||
|
||||
# Installation
|
||||
|
||||
To use FixedColumns, first download DataTables ( http://datatables.net/download ) and place the unzipped FixedColumns package into a `extensions` directory in the DataTables package. This will allow the pages in the examples to operate correctly. To see the examples running, open the `examples` directory in your web-browser.
|
||||
To use FixedColumns the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/fixedcolumns/) for full details.
|
||||
|
||||
## NPM and Bower
|
||||
|
||||
If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-fixedcolumns`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name.
|
||||
|
||||
Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables.
|
||||
|
||||
|
||||
# Basic usage
|
||||
|
||||
FixedColumns is initialised using the `$.fn.dataTable.FixedColumns()` constructor. For example:
|
||||
FixedColumns is initialised using the `fixedColumns` option in the DataTables constructor - a simple boolean `true` will enable the feature. Further options can be specified using this option as an object - see the documentation for details. DataTables' scrolling options should also be enabled to use this feature.
|
||||
|
||||
Example:
|
||||
|
||||
```js
|
||||
$(document).ready(function() {
|
||||
@ -22,21 +26,19 @@ $(document).ready(function() {
|
||||
scrollY: "300px",
|
||||
scrollX: true,
|
||||
scrollCollapse: true,
|
||||
paging: false
|
||||
paging: false,
|
||||
fixedColumns: true
|
||||
} );
|
||||
|
||||
new $.fn.dataTable.FixedColumns( table );
|
||||
} );
|
||||
```
|
||||
|
||||
|
||||
# Documentation / support
|
||||
|
||||
* Documentation: http://datatables.net/extensions/FixedColumns/
|
||||
* DataTables support forums: http://datatables.net/forums
|
||||
* [Documentation](https://datatables.net/extensions/fixedcolumns/)
|
||||
* [DataTables support forums](http://datatables.net/forums)
|
||||
|
||||
|
||||
# GitHub
|
||||
|
||||
If you fancy getting involved with the development of FixedColumns and help make it better, please refer to its GitHub repo: https://github.com/DataTables/FixedColumns
|
||||
|
||||
If you fancy getting involved with the development of FixedColumns and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/FixedColumns).
|
||||
|
||||
@ -0,0 +1,44 @@
|
||||
table.DTFC_Cloned tr.even {
|
||||
background-color: white;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
div.DTFC_LeftHeadWrapper table,
|
||||
div.DTFC_RightHeadWrapper table {
|
||||
border-bottom: none !important;
|
||||
margin-bottom: 0 !important;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
div.DTFC_LeftBodyWrapper table,
|
||||
div.DTFC_RightBodyWrapper table {
|
||||
border-top: none;
|
||||
margin: 0 !important;
|
||||
}
|
||||
div.DTFC_LeftBodyWrapper table thead .sorting:after,
|
||||
div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,
|
||||
div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,
|
||||
div.DTFC_LeftBodyWrapper table thead .sorting:after,
|
||||
div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,
|
||||
div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,
|
||||
div.DTFC_RightBodyWrapper table thead .sorting:after,
|
||||
div.DTFC_RightBodyWrapper table thead .sorting_asc:after,
|
||||
div.DTFC_RightBodyWrapper table thead .sorting_desc:after,
|
||||
div.DTFC_RightBodyWrapper table thead .sorting:after,
|
||||
div.DTFC_RightBodyWrapper table thead .sorting_asc:after,
|
||||
div.DTFC_RightBodyWrapper table thead .sorting_desc:after {
|
||||
display: none;
|
||||
}
|
||||
div.DTFC_LeftBodyWrapper table tbody tr:first-child th,
|
||||
div.DTFC_LeftBodyWrapper table tbody tr:first-child td,
|
||||
div.DTFC_RightBodyWrapper table tbody tr:first-child th,
|
||||
div.DTFC_RightBodyWrapper table tbody tr:first-child td {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
div.DTFC_LeftFootWrapper table,
|
||||
div.DTFC_RightFootWrapper table {
|
||||
border-top: none;
|
||||
margin-top: 0 !important;
|
||||
background-color: white;
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
table.DTFC_Cloned tr.even{background-color:white;margin-bottom:0}div.DTFC_LeftHeadWrapper table,div.DTFC_RightHeadWrapper table{border-bottom:none !important;margin-bottom:0 !important;background-color:white}div.DTFC_LeftBodyWrapper table,div.DTFC_RightBodyWrapper table{border-top:none;margin:0 !important}div.DTFC_LeftBodyWrapper table thead .sorting:after,div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,div.DTFC_LeftBodyWrapper table thead .sorting:after,div.DTFC_LeftBodyWrapper table thead .sorting_asc:after,div.DTFC_LeftBodyWrapper table thead .sorting_desc:after,div.DTFC_RightBodyWrapper table thead .sorting:after,div.DTFC_RightBodyWrapper table thead .sorting_asc:after,div.DTFC_RightBodyWrapper table thead .sorting_desc:after,div.DTFC_RightBodyWrapper table thead .sorting:after,div.DTFC_RightBodyWrapper table thead .sorting_asc:after,div.DTFC_RightBodyWrapper table thead .sorting_desc:after{display:none}div.DTFC_LeftBodyWrapper table tbody tr:first-child th,div.DTFC_LeftBodyWrapper table tbody tr:first-child td,div.DTFC_RightBodyWrapper table tbody tr:first-child th,div.DTFC_RightBodyWrapper table tbody tr:first-child td{border-top:none}div.DTFC_LeftFootWrapper table,div.DTFC_RightFootWrapper table{border-top:none;margin-top:0 !important;background-color:white}
|
||||
@ -0,0 +1,18 @@
|
||||
table.DTFC_Cloned thead,
|
||||
table.DTFC_Cloned tfoot {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
div.DTFC_Blocker {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
div.DTFC_LeftWrapper table.dataTable,
|
||||
div.DTFC_RightWrapper table.dataTable {
|
||||
margin-bottom: 0;
|
||||
z-index: 2;
|
||||
}
|
||||
div.DTFC_LeftWrapper table.dataTable.no-footer,
|
||||
div.DTFC_RightWrapper table.dataTable.no-footer {
|
||||
border-bottom: none;
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
table.DTFC_Cloned thead,table.DTFC_Cloned tfoot{background-color:white}div.DTFC_Blocker{background-color:white}div.DTFC_LeftWrapper table.dataTable,div.DTFC_RightWrapper table.dataTable{margin-bottom:0;z-index:2}div.DTFC_LeftWrapper table.dataTable.no-footer,div.DTFC_RightWrapper table.dataTable.no-footer{border-bottom:none}
|
||||
@ -0,0 +1,27 @@
|
||||
div.DTFC_LeftHeadWrapper table,
|
||||
div.DTFC_LeftBodyWrapper table,
|
||||
div.DTFC_LeftFootWrapper table {
|
||||
border-right-width: 0;
|
||||
}
|
||||
|
||||
div.DTFC_RightHeadWrapper table,
|
||||
div.DTFC_RightBodyWrapper table,
|
||||
div.DTFC_RightFootWrapper table {
|
||||
border-left-width: 0;
|
||||
}
|
||||
|
||||
div.DTFC_LeftHeadWrapper table,
|
||||
div.DTFC_RightHeadWrapper table {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
div.DTFC_LeftBodyWrapper table,
|
||||
div.DTFC_RightBodyWrapper table {
|
||||
border-top: none;
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
div.DTFC_LeftFootWrapper table,
|
||||
div.DTFC_RightFootWrapper table {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
div.DTFC_LeftHeadWrapper table,div.DTFC_LeftBodyWrapper table,div.DTFC_LeftFootWrapper table{border-right-width:0}div.DTFC_RightHeadWrapper table,div.DTFC_RightBodyWrapper table,div.DTFC_RightFootWrapper table{border-left-width:0}div.DTFC_LeftHeadWrapper table,div.DTFC_RightHeadWrapper table{margin-bottom:0 !important}div.DTFC_LeftBodyWrapper table,div.DTFC_RightBodyWrapper table{border-top:none;margin:0 !important}div.DTFC_LeftFootWrapper table,div.DTFC_RightFootWrapper table{margin-top:0 !important}
|
||||
@ -0,0 +1,8 @@
|
||||
div.DTFC_LeftWrapper table.dataTable,
|
||||
div.DTFC_RightWrapper table.dataTable {
|
||||
z-index: 2;
|
||||
}
|
||||
div.DTFC_LeftWrapper table.dataTable.no-footer,
|
||||
div.DTFC_RightWrapper table.dataTable.no-footer {
|
||||
border-bottom: none;
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
div.DTFC_LeftWrapper table.dataTable,div.DTFC_RightWrapper table.dataTable{z-index:2}div.DTFC_LeftWrapper table.dataTable.no-footer,div.DTFC_RightWrapper table.dataTable.no-footer{border-bottom:none}
|
||||
@ -1,15 +1,15 @@
|
||||
/*! FixedColumns 3.0.4
|
||||
* ©2010-2014 SpryMedia Ltd - datatables.net/license
|
||||
/*! FixedColumns 3.2.1
|
||||
* ©2010-2016 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
|
||||
/**
|
||||
* @summary FixedColumns
|
||||
* @description Freeze columns in place on a scrolling DataTable
|
||||
* @version 3.0.4
|
||||
* @version 3.2.1
|
||||
* @file dataTables.fixedColumns.js
|
||||
* @author SpryMedia Ltd (www.sprymedia.co.uk)
|
||||
* @contact www.sprymedia.co.uk/contact
|
||||
* @copyright Copyright 2010-2014 SpryMedia Ltd.
|
||||
* @copyright Copyright 2010-2016 SpryMedia Ltd.
|
||||
*
|
||||
* This source file is free software, available under the following license:
|
||||
* MIT license - http://datatables.net/license/mit
|
||||
@ -20,13 +20,35 @@
|
||||
*
|
||||
* For details please refer to: http://www.datatables.net
|
||||
*/
|
||||
(function( factory ){
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
// AMD
|
||||
define( ['jquery', 'datatables.net'], function ( $ ) {
|
||||
return factory( $, window, document );
|
||||
} );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// CommonJS
|
||||
module.exports = function (root, $) {
|
||||
if ( ! root ) {
|
||||
root = window;
|
||||
}
|
||||
|
||||
if ( ! $ || ! $.fn.dataTable ) {
|
||||
$ = require('datatables.net')(root, $).$;
|
||||
}
|
||||
|
||||
(function(window, document, undefined) {
|
||||
|
||||
|
||||
var factory = function( $, DataTable ) {
|
||||
"use strict";
|
||||
return factory( $, root, root.document );
|
||||
};
|
||||
}
|
||||
else {
|
||||
// Browser
|
||||
factory( jQuery, window, document );
|
||||
}
|
||||
}(function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var DataTable = $.fn.dataTable;
|
||||
var _firefoxScroll;
|
||||
|
||||
/**
|
||||
* When making use of DataTables' x-axis scrolling feature, you may wish to
|
||||
@ -62,14 +84,12 @@ var FixedColumns = function ( dt, init ) {
|
||||
var that = this;
|
||||
|
||||
/* Sanity check - you just know it will happen */
|
||||
if ( ! ( this instanceof FixedColumns ) )
|
||||
{
|
||||
if ( ! ( this instanceof FixedColumns ) ) {
|
||||
alert( "FixedColumns warning: FixedColumns must be initialised with the 'new' keyword." );
|
||||
return;
|
||||
}
|
||||
|
||||
if ( typeof init == 'undefined' )
|
||||
{
|
||||
if ( init === undefined || init === true ) {
|
||||
init = {};
|
||||
}
|
||||
|
||||
@ -82,9 +102,7 @@ var FixedColumns = function ( dt, init ) {
|
||||
}
|
||||
|
||||
// v1.10 allows the settings object to be got form a number of sources
|
||||
var dtSettings = $.fn.dataTable.Api ?
|
||||
new $.fn.dataTable.Api( dt ).settings()[0] :
|
||||
dt.fnSettings();
|
||||
var dtSettings = new $.fn.dataTable.Api( dt ).settings()[0];
|
||||
|
||||
/**
|
||||
* Settings object which contains customisable information for FixedColumns instance
|
||||
@ -265,6 +283,10 @@ var FixedColumns = function ( dt, init ) {
|
||||
}
|
||||
};
|
||||
|
||||
if ( dtSettings._oFixedColumns ) {
|
||||
throw 'FixedColumns already initialised on this table';
|
||||
}
|
||||
|
||||
/* Attach the instance to the DataTables instance so it can be accessed easily */
|
||||
dtSettings._oFixedColumns = this;
|
||||
|
||||
@ -283,7 +305,7 @@ var FixedColumns = function ( dt, init ) {
|
||||
|
||||
|
||||
|
||||
FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
$.extend( FixedColumns.prototype , {
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Public methods
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
@ -468,13 +490,30 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
|
||||
/* Event handlers */
|
||||
var mouseController;
|
||||
var mouseDown = false;
|
||||
|
||||
// When the mouse is down (drag scroll) the mouse controller cannot
|
||||
// change, as the browser keeps the original element as the scrolling one
|
||||
$(this.s.dt.nTableWrapper).on( 'mousedown.DTFC', function () {
|
||||
mouseDown = true;
|
||||
|
||||
$(document).one( 'mouseup', function () {
|
||||
mouseDown = false;
|
||||
} );
|
||||
} );
|
||||
|
||||
// When the body is scrolled - scroll the left and right columns
|
||||
$(this.dom.scroller)
|
||||
.on( 'mouseover.DTFC touchstart.DTFC', function () {
|
||||
mouseController = 'main';
|
||||
if ( ! mouseDown ) {
|
||||
mouseController = 'main';
|
||||
}
|
||||
} )
|
||||
.on( 'scroll.DTFC', function () {
|
||||
.on( 'scroll.DTFC', function (e) {
|
||||
if ( ! mouseController && e.originalEvent ) {
|
||||
mouseController = 'main';
|
||||
}
|
||||
|
||||
if ( mouseController === 'main' ) {
|
||||
if ( that.s.iLeftColumns > 0 ) {
|
||||
that.dom.grid.left.liner.scrollTop = that.dom.scroller.scrollTop;
|
||||
@ -493,9 +532,15 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
// When scrolling the left column, scroll the body and right column
|
||||
$(that.dom.grid.left.liner)
|
||||
.on( 'mouseover.DTFC touchstart.DTFC', function () {
|
||||
mouseController = 'left';
|
||||
if ( ! mouseDown ) {
|
||||
mouseController = 'left';
|
||||
}
|
||||
} )
|
||||
.on( 'scroll.DTFC', function () {
|
||||
.on( 'scroll.DTFC', function ( e ) {
|
||||
if ( ! mouseController && e.originalEvent ) {
|
||||
mouseController = 'left';
|
||||
}
|
||||
|
||||
if ( mouseController === 'left' ) {
|
||||
that.dom.scroller.scrollTop = that.dom.grid.left.liner.scrollTop;
|
||||
if ( that.s.iRightColumns > 0 ) {
|
||||
@ -503,7 +548,7 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
}
|
||||
}
|
||||
} )
|
||||
.on( wheelType, function(e) { // xxx update the destroy as well
|
||||
.on( wheelType, function(e) {
|
||||
// Pass horizontal scrolling through
|
||||
var xDelta = e.type === 'wheel' ?
|
||||
-e.originalEvent.deltaX :
|
||||
@ -516,9 +561,15 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
// When scrolling the right column, scroll the body and the left column
|
||||
$(that.dom.grid.right.liner)
|
||||
.on( 'mouseover.DTFC touchstart.DTFC', function () {
|
||||
mouseController = 'right';
|
||||
if ( ! mouseDown ) {
|
||||
mouseController = 'right';
|
||||
}
|
||||
} )
|
||||
.on( 'scroll.DTFC', function () {
|
||||
.on( 'scroll.DTFC', function ( e ) {
|
||||
if ( ! mouseController && e.originalEvent ) {
|
||||
mouseController = 'right';
|
||||
}
|
||||
|
||||
if ( mouseController === 'right' ) {
|
||||
that.dom.scroller.scrollTop = that.dom.grid.right.liner.scrollTop;
|
||||
if ( that.s.iLeftColumns > 0 ) {
|
||||
@ -544,6 +595,7 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
|
||||
jqTable
|
||||
.on( 'draw.dt.DTFC', function () {
|
||||
that._fnColCalc();
|
||||
that._fnDraw.call( that, bFirstDraw );
|
||||
bFirstDraw = false;
|
||||
} )
|
||||
@ -551,21 +603,27 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
that._fnColCalc();
|
||||
that._fnGridLayout( that );
|
||||
} )
|
||||
.on( 'column-visibility.dt.DTFC', function () {
|
||||
that._fnColCalc();
|
||||
that._fnGridLayout( that );
|
||||
that._fnDraw( true );
|
||||
.on( 'column-visibility.dt.DTFC', function ( e, settings, column, vis, recalc ) {
|
||||
if ( recalc === undefined || recalc ) {
|
||||
that._fnColCalc();
|
||||
that._fnGridLayout( that );
|
||||
that._fnDraw( true );
|
||||
}
|
||||
} )
|
||||
.on( 'select.dt.DTFC deselect.dt.DTFC', function ( e, dt, type, indexes ) {
|
||||
that._fnDraw( false );
|
||||
} )
|
||||
.on( 'destroy.dt.DTFC', function () {
|
||||
jqTable.off( 'column-sizing.dt.DTFC destroy.dt.DTFC draw.dt.DTFC' );
|
||||
jqTable.off( '.DTFC' );
|
||||
|
||||
$(that.dom.scroller).off( 'scroll.DTFC mouseover.DTFC' );
|
||||
$(window).off( 'resize.DTFC' );
|
||||
$(that.dom.scroller).off( '.DTFC' );
|
||||
$(window).off( '.DTFC' );
|
||||
$(this.s.dt.nTableWrapper).off( '.DTFC' );
|
||||
|
||||
$(that.dom.grid.left.liner).off( 'scroll.DTFC mouseover.DTFC '+wheelType );
|
||||
$(that.dom.grid.left.liner).off( '.DTFC '+wheelType );
|
||||
$(that.dom.grid.left.wrapper).remove();
|
||||
|
||||
$(that.dom.grid.right.liner).off( 'scroll.DTFC mouseover.DTFC '+wheelType );
|
||||
$(that.dom.grid.right.liner).off( '.DTFC '+wheelType );
|
||||
$(that.dom.grid.right.wrapper).remove();
|
||||
} );
|
||||
|
||||
@ -667,7 +725,7 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
'</div>'+
|
||||
'<div class="DTFC_LeftFootWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div>'+
|
||||
'</div>'+
|
||||
'<div class="DTFC_RightWrapper" style="position:absolute; top:0; left:0;">'+
|
||||
'<div class="DTFC_RightWrapper" style="position:absolute; top:0; right:0;">'+
|
||||
'<div class="DTFC_RightHeadWrapper" style="position:relative; top:0; left:0;">'+
|
||||
'<div class="DTFC_RightHeadBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div>'+
|
||||
'</div>'+
|
||||
@ -704,6 +762,8 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
this.dom.grid.right.body = nRight.childNodes[1];
|
||||
this.dom.grid.right.liner = $('div.DTFC_RightBodyLiner', nSWrapper)[0];
|
||||
|
||||
nRight.style.right = oOverflow.bar+"px";
|
||||
|
||||
block = $('div.DTFC_RightHeadBlocker', nSWrapper)[0];
|
||||
block.style.width = oOverflow.bar+"px";
|
||||
block.style.right = -oOverflow.bar+"px";
|
||||
@ -729,6 +789,24 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
this.dom.grid.right.foot = nRight.childNodes[2];
|
||||
}
|
||||
}
|
||||
|
||||
// RTL support - swap the position of the left and right columns (#48)
|
||||
if ( $(this.dom.body).css('direction') === 'rtl' ) {
|
||||
$(nLeft).css( {
|
||||
left: '',
|
||||
right: 0
|
||||
} );
|
||||
|
||||
$(nRight).css( {
|
||||
left: oOverflow.bar+"px",
|
||||
right: ''
|
||||
} );
|
||||
|
||||
$('div.DTFC_RightHeadBlocker', nSWrapper).css( {
|
||||
left: -oOverflow.bar+'px',
|
||||
right: ''
|
||||
} );
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
@ -739,6 +817,7 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
*/
|
||||
"_fnGridLayout": function ()
|
||||
{
|
||||
var that = this;
|
||||
var oGrid = this.dom.grid;
|
||||
var iWidth = $(oGrid.wrapper).width();
|
||||
var iBodyHeight = $(this.s.dt.nTable.parentNode).outerHeight();
|
||||
@ -755,6 +834,12 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
node.style.paddingRight = "20px";
|
||||
node.style.boxSizing = "border-box";
|
||||
}
|
||||
else if ( that._firefoxScrollError() ) {
|
||||
// See the above function for why this is required
|
||||
if ( $(node).height() > 34 ) {
|
||||
node.style.width = (width+oOverflow.bar)+"px";
|
||||
}
|
||||
}
|
||||
else {
|
||||
// Otherwise just overflow by the scrollbar
|
||||
node.style.width = (width+oOverflow.bar)+"px";
|
||||
@ -791,7 +876,6 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
}
|
||||
|
||||
oGrid.right.wrapper.style.width = iRightWidth+"px";
|
||||
oGrid.right.wrapper.style.left = iRight+"px";
|
||||
oGrid.right.wrapper.style.height = "1px";
|
||||
oGrid.right.body.style.height = iBodyHeight+"px";
|
||||
if ( oGrid.right.foot ) {
|
||||
@ -922,9 +1006,10 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
* @returns {Array} Copy of the layout array
|
||||
* @param {Object} aoOriginal Layout array from DataTables (aoHeader or aoFooter)
|
||||
* @param {Object} aiColumns Columns to copy
|
||||
* @param {boolean} events Copy cell events or not
|
||||
* @private
|
||||
*/
|
||||
"_fnCopyLayout": function ( aoOriginal, aiColumns )
|
||||
"_fnCopyLayout": function ( aoOriginal, aiColumns, events )
|
||||
{
|
||||
var aReturn = [];
|
||||
var aClones = [];
|
||||
@ -933,7 +1018,7 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
for ( var i=0, iLen=aoOriginal.length ; i<iLen ; i++ )
|
||||
{
|
||||
var aRow = [];
|
||||
aRow.nTr = $(aoOriginal[i].nTr).clone(true, true)[0];
|
||||
aRow.nTr = $(aoOriginal[i].nTr).clone(events, false)[0];
|
||||
|
||||
for ( var j=0, jLen=this.s.iTableColumns ; j<jLen ; j++ )
|
||||
{
|
||||
@ -945,7 +1030,7 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
var iCloned = $.inArray( aoOriginal[i][j].cell, aCloned );
|
||||
if ( iCloned === -1 )
|
||||
{
|
||||
var nClone = $(aoOriginal[i][j].cell).clone(true, true)[0];
|
||||
var nClone = $(aoOriginal[i][j].cell).clone(events, false)[0];
|
||||
aClones.push( nClone );
|
||||
aCloned.push( aoOriginal[i][j].cell );
|
||||
|
||||
@ -992,17 +1077,15 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
*/
|
||||
if ( bAll )
|
||||
{
|
||||
if ( oClone.header !== null )
|
||||
{
|
||||
oClone.header.parentNode.removeChild( oClone.header );
|
||||
}
|
||||
oClone.header = $(this.dom.header).clone(true, true)[0];
|
||||
$(oClone.header).remove();
|
||||
|
||||
oClone.header = $(this.dom.header).clone(true, false)[0];
|
||||
oClone.header.className += " DTFC_Cloned";
|
||||
oClone.header.style.width = "100%";
|
||||
oGrid.head.appendChild( oClone.header );
|
||||
|
||||
/* Copy the DataTables layout cache for the header for our floating column */
|
||||
aoCloneLayout = this._fnCopyLayout( dt.aoHeader, aiColumns );
|
||||
aoCloneLayout = this._fnCopyLayout( dt.aoHeader, aiColumns, true );
|
||||
jqCloneThead = $('>thead', oClone.header);
|
||||
jqCloneThead.empty();
|
||||
|
||||
@ -1024,7 +1107,7 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
* cloned cells, just copy the classes across. To get the matching layout for the
|
||||
* fixed component, we use the DataTables _fnDetectHeader method, allowing 1:1 mapping
|
||||
*/
|
||||
aoCloneLayout = this._fnCopyLayout( dt.aoHeader, aiColumns );
|
||||
aoCloneLayout = this._fnCopyLayout( dt.aoHeader, aiColumns, false );
|
||||
aoFixedHeader=[];
|
||||
|
||||
dt.oApi._fnDetectHeader( aoFixedHeader, $('>thead', oClone.header)[0] );
|
||||
@ -1055,7 +1138,7 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
|
||||
if ( oClone.body !== null )
|
||||
{
|
||||
oClone.body.parentNode.removeChild( oClone.body );
|
||||
$(oClone.body).remove();
|
||||
oClone.body = null;
|
||||
}
|
||||
|
||||
@ -1100,12 +1183,14 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
|
||||
/* Add in the tbody elements, cloning form the master table */
|
||||
$('>tbody>tr', that.dom.body).each( function (z) {
|
||||
var n = this.cloneNode(false);
|
||||
n.removeAttribute('id');
|
||||
var i = that.s.dt.oFeatures.bServerSide===false ?
|
||||
that.s.dt.aiDisplay[ that.s.dt._iDisplayStart+z ] : z;
|
||||
var aTds = that.s.dt.aoData[ i ].anCells || $(this).children('td, th');
|
||||
|
||||
var n = this.cloneNode(false);
|
||||
n.removeAttribute('id');
|
||||
n.setAttribute( 'data-dt-row', i );
|
||||
|
||||
for ( iIndex=0 ; iIndex<aiColumns.length ; iIndex++ )
|
||||
{
|
||||
iColumn = aiColumns[iIndex];
|
||||
@ -1113,6 +1198,8 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
if ( aTds.length > 0 )
|
||||
{
|
||||
nClone = $( aTds[iColumn] ).clone(true, true)[0];
|
||||
nClone.setAttribute( 'data-dt-row', i );
|
||||
nClone.setAttribute( 'data-dt-column', iIndex );
|
||||
n.appendChild( nClone );
|
||||
}
|
||||
}
|
||||
@ -1169,7 +1256,7 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
oGrid.foot.appendChild( oClone.footer );
|
||||
|
||||
/* Copy the footer just like we do for the header */
|
||||
aoCloneLayout = this._fnCopyLayout( dt.aoFooter, aiColumns );
|
||||
aoCloneLayout = this._fnCopyLayout( dt.aoFooter, aiColumns, true );
|
||||
var jqCloneTfoot = $('>tfoot', oClone.footer);
|
||||
jqCloneTfoot.empty();
|
||||
|
||||
@ -1181,7 +1268,7 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
}
|
||||
else
|
||||
{
|
||||
aoCloneLayout = this._fnCopyLayout( dt.aoFooter, aiColumns );
|
||||
aoCloneLayout = this._fnCopyLayout( dt.aoFooter, aiColumns, false );
|
||||
var aoCurrFooter=[];
|
||||
|
||||
dt.oApi._fnDetectHeader( aoCurrFooter, $('>tfoot', oClone.footer)[0] );
|
||||
@ -1279,8 +1366,43 @@ FixedColumns.prototype = /** @lends FixedColumns.prototype */{
|
||||
anClone[i].style.height = heights[i]+"px";
|
||||
anOriginal[i].style.height = heights[i]+"px";
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Determine if the UA suffers from Firefox's overflow:scroll scrollbars
|
||||
* not being shown bug.
|
||||
*
|
||||
* Firefox doesn't draw scrollbars, even if it is told to using
|
||||
* overflow:scroll, if the div is less than 34px height. See bugs 292284 and
|
||||
* 781885. Using UA detection here since this is particularly hard to detect
|
||||
* using objects - its a straight up rendering error in Firefox.
|
||||
*
|
||||
* @return {boolean} True if Firefox error is present, false otherwise
|
||||
*/
|
||||
_firefoxScrollError: function () {
|
||||
if ( _firefoxScroll === undefined ) {
|
||||
var test = $('<div/>')
|
||||
.css( {
|
||||
position: 'absolute',
|
||||
top: 0,
|
||||
left: 0,
|
||||
height: 10,
|
||||
width: 50,
|
||||
overflow: 'scroll'
|
||||
} )
|
||||
.appendTo( 'body' );
|
||||
|
||||
// Make sure this doesn't apply on Macs with 0 width scrollbars
|
||||
_firefoxScroll = (
|
||||
test[0].clientWidth === test[0].offsetWidth && this._fnDTOverflow().bar !== 0
|
||||
);
|
||||
|
||||
test.remove();
|
||||
}
|
||||
|
||||
return _firefoxScroll;
|
||||
}
|
||||
};
|
||||
} );
|
||||
|
||||
|
||||
|
||||
@ -1376,48 +1498,108 @@ FixedColumns.defaults = /** @lends FixedColumns.defaults */{
|
||||
* @default See code
|
||||
* @static
|
||||
*/
|
||||
FixedColumns.version = "3.0.4";
|
||||
FixedColumns.version = "3.2.1";
|
||||
|
||||
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Fired events (for documentation)
|
||||
* DataTables API integration
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
DataTable.Api.register( 'fixedColumns()', function () {
|
||||
return this;
|
||||
} );
|
||||
|
||||
DataTable.Api.register( 'fixedColumns().update()', function () {
|
||||
return this.iterator( 'table', function ( ctx ) {
|
||||
if ( ctx._oFixedColumns ) {
|
||||
ctx._oFixedColumns.fnUpdate();
|
||||
}
|
||||
} );
|
||||
} );
|
||||
|
||||
DataTable.Api.register( 'fixedColumns().relayout()', function () {
|
||||
return this.iterator( 'table', function ( ctx ) {
|
||||
if ( ctx._oFixedColumns ) {
|
||||
ctx._oFixedColumns.fnRedrawLayout();
|
||||
}
|
||||
} );
|
||||
} );
|
||||
|
||||
DataTable.Api.register( 'rows().recalcHeight()', function () {
|
||||
return this.iterator( 'row', function ( ctx, idx ) {
|
||||
if ( ctx._oFixedColumns ) {
|
||||
ctx._oFixedColumns.fnRecalculateHeight( this.row(idx).node() );
|
||||
}
|
||||
} );
|
||||
} );
|
||||
|
||||
DataTable.Api.register( 'fixedColumns().rowIndex()', function ( row ) {
|
||||
row = $(row);
|
||||
|
||||
return row.parents('.DTFC_Cloned').length ?
|
||||
this.rows( { page: 'current' } ).indexes()[ row.index() ] :
|
||||
this.row( row ).index();
|
||||
} );
|
||||
|
||||
DataTable.Api.register( 'fixedColumns().cellIndex()', function ( cell ) {
|
||||
cell = $(cell);
|
||||
|
||||
if ( cell.parents('.DTFC_Cloned').length ) {
|
||||
var rowClonedIdx = cell.parent().index();
|
||||
var rowIdx = this.rows( { page: 'current' } ).indexes()[ rowClonedIdx ];
|
||||
var columnIdx;
|
||||
|
||||
if ( cell.parents('.DTFC_LeftWrapper').length ) {
|
||||
columnIdx = cell.index();
|
||||
}
|
||||
else {
|
||||
var columns = this.columns().flatten().length;
|
||||
columnIdx = columns - this.context[0]._oFixedColumns.s.iRightColumns + cell.index();
|
||||
}
|
||||
|
||||
return {
|
||||
row: rowIdx,
|
||||
column: this.column.index( 'toData', columnIdx ),
|
||||
columnVisible: columnIdx
|
||||
};
|
||||
}
|
||||
else {
|
||||
return this.cell( cell ).index();
|
||||
}
|
||||
} );
|
||||
|
||||
|
||||
|
||||
|
||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Initialisation
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
// Attach a listener to the document which listens for DataTables initialisation
|
||||
// events so we can automatically initialise
|
||||
$(document).on( 'init.dt.fixedColumns', function (e, settings) {
|
||||
if ( e.namespace !== 'dt' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var init = settings.oInit.fixedColumns;
|
||||
var defaults = DataTable.defaults.fixedColumns;
|
||||
|
||||
if ( init || defaults ) {
|
||||
var opts = $.extend( {}, init, defaults );
|
||||
|
||||
if ( init !== false ) {
|
||||
new FixedColumns( settings, opts );
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
||||
/**
|
||||
* Event fired whenever FixedColumns redraws the fixed columns (i.e. clones the table elements from the main DataTable). This will occur whenever the DataTable that the FixedColumns instance is attached does its own draw.
|
||||
* @name FixedColumns#draw.dtfc
|
||||
* @event
|
||||
* @param {event} e jQuery event object
|
||||
* @param {object} o Event parameters from FixedColumns
|
||||
* @param {object} o.leftClone Instance's object dom.clone.left for easy reference. This object contains references to the left fixed clumn column's nodes
|
||||
* @param {object} o.rightClone Instance's object dom.clone.right for easy reference. This object contains references to the right fixed clumn column's nodes
|
||||
*/
|
||||
|
||||
|
||||
// Make FixedColumns accessible from the DataTables instance
|
||||
$.fn.dataTable.FixedColumns = FixedColumns;
|
||||
$.fn.DataTable.FixedColumns = FixedColumns;
|
||||
|
||||
|
||||
return FixedColumns;
|
||||
}; // /factory
|
||||
|
||||
|
||||
// Define as an AMD module if possible
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
define( ['jquery', 'datatables'], factory );
|
||||
}
|
||||
else if ( typeof exports === 'object' ) {
|
||||
// Node/CommonJS
|
||||
factory( require('jquery'), require('datatables') );
|
||||
}
|
||||
else if ( jQuery && !jQuery.fn.dataTable.FixedColumns ) {
|
||||
// Otherwise simply initialise as normal, stopping multiple evaluation
|
||||
factory( jQuery, jQuery.fn.dataTable );
|
||||
}
|
||||
|
||||
|
||||
})(window, document);
|
||||
|
||||
}));
|
||||
@ -1,30 +1,35 @@
|
||||
/*!
|
||||
FixedColumns 3.0.4
|
||||
©2010-2014 SpryMedia Ltd - datatables.net/license
|
||||
FixedColumns 3.2.1
|
||||
©2010-2016 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
(function(r,s,t){var p=function(d){var j=function(a,b){var c=this;if(this instanceof j){"undefined"==typeof b&&(b={});var g=d.fn.dataTable.camelToHungarian;g&&(g(j.defaults,j.defaults,!0),g(j.defaults,b));g=d.fn.dataTable.Api?(new d.fn.dataTable.Api(a)).settings()[0]:a.fnSettings();this.s={dt:g,iTableColumns:g.aoColumns.length,aiOuterWidths:[],aiInnerWidths:[]};this.dom={scroller:null,header:null,body:null,footer:null,grid:{wrapper:null,dt:null,left:{wrapper:null,head:null,body:null,foot:null},right:{wrapper:null,
|
||||
head:null,body:null,foot:null}},clone:{left:{header:null,body:null,footer:null},right:{header:null,body:null,footer:null}}};g._oFixedColumns=this;g._bInitComplete?this._fnConstruct(b):g.oApi._fnCallbackReg(g,"aoInitComplete",function(){c._fnConstruct(b)},"FixedColumns")}else alert("FixedColumns warning: FixedColumns must be initialised with the 'new' keyword.")};j.prototype={fnUpdate:function(){this._fnDraw(!0)},fnRedrawLayout:function(){this._fnColCalc();this._fnGridLayout();this.fnUpdate()},fnRecalculateHeight:function(a){delete a._DTTC_iHeight;
|
||||
a.style.height="auto"},fnSetRowHeight:function(a,b){a.style.height=b+"px"},fnGetPosition:function(a){var b=this.s.dt.oInstance;if(d(a).parents(".DTFC_Cloned").length){if("tr"===a.nodeName.toLowerCase())return a=d(a).index(),b.fnGetPosition(d("tr",this.s.dt.nTBody)[a]);var c=d(a).index(),a=d(a.parentNode).index();return[b.fnGetPosition(d("tr",this.s.dt.nTBody)[a]),c,b.oApi._fnVisibleToColumnIndex(this.s.dt,c)]}return b.fnGetPosition(a)},_fnConstruct:function(a){var b=this;if("function"!=typeof this.s.dt.oInstance.fnVersionCheck||
|
||||
!0!==this.s.dt.oInstance.fnVersionCheck("1.8.0"))alert("FixedColumns "+j.VERSION+" required DataTables 1.8.0 or later. Please upgrade your DataTables installation");else if(""===this.s.dt.oScroll.sX)this.s.dt.oInstance.oApi._fnLog(this.s.dt,1,"FixedColumns is not needed (no x-scrolling in DataTables enabled), so no action will be taken. Use 'FixedHeader' for column fixing when scrolling is not enabled");else{this.s=d.extend(!0,this.s,j.defaults,a);a=this.s.dt.oClasses;this.dom.grid.dt=d(this.s.dt.nTable).parents("div."+
|
||||
a.sScrollWrapper)[0];this.dom.scroller=d("div."+a.sScrollBody,this.dom.grid.dt)[0];this._fnColCalc();this._fnGridSetup();var c;d(this.dom.scroller).on("mouseover.DTFC touchstart.DTFC",function(){c="main"}).on("scroll.DTFC",function(){if("main"===c&&(0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.scroller.scrollTop),0<b.s.iRightColumns))b.dom.grid.right.liner.scrollTop=b.dom.scroller.scrollTop});var g="onwheel"in s.createElement("div")?"wheel.DTFC":"mousewheel.DTFC";if(0<b.s.iLeftColumns)d(b.dom.grid.left.liner).on("mouseover.DTFC touchstart.DTFC",
|
||||
function(){c="left"}).on("scroll.DTFC",function(){"left"===c&&(b.dom.scroller.scrollTop=b.dom.grid.left.liner.scrollTop,0<b.s.iRightColumns&&(b.dom.grid.right.liner.scrollTop=b.dom.grid.left.liner.scrollTop))}).on(g,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});if(0<b.s.iRightColumns)d(b.dom.grid.right.liner).on("mouseover.DTFC touchstart.DTFC",function(){c="right"}).on("scroll.DTFC",function(){"right"===c&&(b.dom.scroller.scrollTop=
|
||||
b.dom.grid.right.liner.scrollTop,0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.grid.right.liner.scrollTop))}).on(g,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});d(r).on("resize.DTFC",function(){b._fnGridLayout.call(b)});var f=!0,e=d(this.s.dt.nTable);e.on("draw.dt.DTFC",function(){b._fnDraw.call(b,f);f=!1}).on("column-sizing.dt.DTFC",function(){b._fnColCalc();b._fnGridLayout(b)}).on("column-visibility.dt.DTFC",function(){b._fnColCalc();
|
||||
b._fnGridLayout(b);b._fnDraw(!0)}).on("destroy.dt.DTFC",function(){e.off("column-sizing.dt.DTFC destroy.dt.DTFC draw.dt.DTFC");d(b.dom.scroller).off("scroll.DTFC mouseover.DTFC");d(r).off("resize.DTFC");d(b.dom.grid.left.liner).off("scroll.DTFC mouseover.DTFC "+g);d(b.dom.grid.left.wrapper).remove();d(b.dom.grid.right.liner).off("scroll.DTFC mouseover.DTFC "+g);d(b.dom.grid.right.wrapper).remove()});this._fnGridLayout();this.s.dt.oInstance.fnDraw(!1)}},_fnColCalc:function(){var a=this,b=0,c=0;this.s.aiInnerWidths=
|
||||
[];this.s.aiOuterWidths=[];d.each(this.s.dt.aoColumns,function(g,f){var e=d(f.nTh),h;if(e.filter(":visible").length){var i=e.outerWidth();0===a.s.aiOuterWidths.length&&(h=d(a.s.dt.nTable).css("border-left-width"),i+="string"===typeof h?1:parseInt(h,10));a.s.aiOuterWidths.length===a.s.dt.aoColumns.length-1&&(h=d(a.s.dt.nTable).css("border-right-width"),i+="string"===typeof h?1:parseInt(h,10));a.s.aiOuterWidths.push(i);a.s.aiInnerWidths.push(e.width());g<a.s.iLeftColumns&&(b+=i);a.s.iTableColumns-a.s.iRightColumns<=
|
||||
g&&(c+=i)}else a.s.aiInnerWidths.push(0),a.s.aiOuterWidths.push(0)});this.s.iLeftWidth=b;this.s.iRightWidth=c},_fnGridSetup:function(){var a=this._fnDTOverflow(),b;this.dom.body=this.s.dt.nTable;this.dom.header=this.s.dt.nTHead.parentNode;this.dom.header.parentNode.parentNode.style.position="relative";var c=d('<div class="DTFC_ScrollWrapper" style="position:relative; clear:both;"><div class="DTFC_LeftWrapper" style="position:absolute; top:0; left:0;"><div class="DTFC_LeftHeadWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div><div class="DTFC_LeftBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_LeftBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_LeftFootWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div></div><div class="DTFC_RightWrapper" style="position:absolute; top:0; left:0;"><div class="DTFC_RightHeadWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightHeadBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div><div class="DTFC_RightBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_RightBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_RightFootWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightFootBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div></div></div>')[0],
|
||||
g=c.childNodes[0],f=c.childNodes[1];this.dom.grid.dt.parentNode.insertBefore(c,this.dom.grid.dt);c.appendChild(this.dom.grid.dt);this.dom.grid.wrapper=c;0<this.s.iLeftColumns&&(this.dom.grid.left.wrapper=g,this.dom.grid.left.head=g.childNodes[0],this.dom.grid.left.body=g.childNodes[1],this.dom.grid.left.liner=d("div.DTFC_LeftBodyLiner",c)[0],c.appendChild(g));0<this.s.iRightColumns&&(this.dom.grid.right.wrapper=f,this.dom.grid.right.head=f.childNodes[0],this.dom.grid.right.body=f.childNodes[1],this.dom.grid.right.liner=
|
||||
d("div.DTFC_RightBodyLiner",c)[0],b=d("div.DTFC_RightHeadBlocker",c)[0],b.style.width=a.bar+"px",b.style.right=-a.bar+"px",this.dom.grid.right.headBlock=b,b=d("div.DTFC_RightFootBlocker",c)[0],b.style.width=a.bar+"px",b.style.right=-a.bar+"px",this.dom.grid.right.footBlock=b,c.appendChild(f));if(this.s.dt.nTFoot&&(this.dom.footer=this.s.dt.nTFoot.parentNode,0<this.s.iLeftColumns&&(this.dom.grid.left.foot=g.childNodes[2]),0<this.s.iRightColumns))this.dom.grid.right.foot=f.childNodes[2]},_fnGridLayout:function(){var a=
|
||||
this.dom.grid,b=d(a.wrapper).width(),c=d(this.s.dt.nTable.parentNode).outerHeight(),g=d(this.s.dt.nTable.parentNode.parentNode).outerHeight(),f=this._fnDTOverflow(),e=this.s.iLeftWidth,h=this.s.iRightWidth,i=function(a,b){f.bar?a.style.width=b+f.bar+"px":(a.style.width=b+20+"px",a.style.paddingRight="20px",a.style.boxSizing="border-box")};f.x&&(c-=f.bar);a.wrapper.style.height=g+"px";0<this.s.iLeftColumns&&(a.left.wrapper.style.width=e+"px",a.left.wrapper.style.height="1px",a.left.body.style.height=
|
||||
c+"px",a.left.foot&&(a.left.foot.style.top=(f.x?f.bar:0)+"px"),i(a.left.liner,e),a.left.liner.style.height=c+"px");0<this.s.iRightColumns&&(b-=h,f.y&&(b-=f.bar),a.right.wrapper.style.width=h+"px",a.right.wrapper.style.left=b+"px",a.right.wrapper.style.height="1px",a.right.body.style.height=c+"px",a.right.foot&&(a.right.foot.style.top=(f.x?f.bar:0)+"px"),i(a.right.liner,h),a.right.liner.style.height=c+"px",a.right.headBlock.style.display=f.y?"block":"none",a.right.footBlock.style.display=f.y?"block":
|
||||
"none")},_fnDTOverflow:function(){var a=this.s.dt.nTable,b=a.parentNode,c={x:!1,y:!1,bar:this.s.dt.oScroll.iBarWidth};a.offsetWidth>b.clientWidth&&(c.x=!0);a.offsetHeight>b.clientHeight&&(c.y=!0);return c},_fnDraw:function(a){this._fnGridLayout();this._fnCloneLeft(a);this._fnCloneRight(a);null!==this.s.fnDrawCallback&&this.s.fnDrawCallback.call(this,this.dom.clone.left,this.dom.clone.right);d(this).trigger("draw.dtfc",{leftClone:this.dom.clone.left,rightClone:this.dom.clone.right})},_fnCloneRight:function(a){if(!(0>=
|
||||
this.s.iRightColumns)){var b,c=[];for(b=this.s.iTableColumns-this.s.iRightColumns;b<this.s.iTableColumns;b++)this.s.dt.aoColumns[b].bVisible&&c.push(b);this._fnClone(this.dom.clone.right,this.dom.grid.right,c,a)}},_fnCloneLeft:function(a){if(!(0>=this.s.iLeftColumns)){var b,c=[];for(b=0;b<this.s.iLeftColumns;b++)this.s.dt.aoColumns[b].bVisible&&c.push(b);this._fnClone(this.dom.clone.left,this.dom.grid.left,c,a)}},_fnCopyLayout:function(a,b){for(var c=[],g=[],f=[],e=0,h=a.length;e<h;e++){var i=[];
|
||||
i.nTr=d(a[e].nTr).clone(!0,!0)[0];for(var k=0,j=this.s.iTableColumns;k<j;k++)if(-1!==d.inArray(k,b)){var m=d.inArray(a[e][k].cell,f);-1===m?(m=d(a[e][k].cell).clone(!0,!0)[0],g.push(m),f.push(a[e][k].cell),i.push({cell:m,unique:a[e][k].unique})):i.push({cell:g[m],unique:a[e][k].unique})}c.push(i)}return c},_fnClone:function(a,b,c,g){var f=this,e,h,i,k,j,m,o,n,q,l=this.s.dt;if(g){null!==a.header&&a.header.parentNode.removeChild(a.header);a.header=d(this.dom.header).clone(!0,!0)[0];a.header.className+=
|
||||
" DTFC_Cloned";a.header.style.width="100%";b.head.appendChild(a.header);n=this._fnCopyLayout(l.aoHeader,c);k=d(">thead",a.header);k.empty();e=0;for(h=n.length;e<h;e++)k[0].appendChild(n[e].nTr);l.oApi._fnDrawHead(l,n,!0)}else{n=this._fnCopyLayout(l.aoHeader,c);q=[];l.oApi._fnDetectHeader(q,d(">thead",a.header)[0]);e=0;for(h=n.length;e<h;e++){i=0;for(k=n[e].length;i<k;i++)q[e][i].cell.className=n[e][i].cell.className,d("span.DataTables_sort_icon",q[e][i].cell).each(function(){this.className=d("span.DataTables_sort_icon",
|
||||
n[e][i].cell)[0].className})}}this._fnEqualiseHeights("thead",this.dom.header,a.header);"auto"==this.s.sHeightMatch&&d(">tbody>tr",f.dom.body).css("height","auto");null!==a.body&&(a.body.parentNode.removeChild(a.body),a.body=null);a.body=d(this.dom.body).clone(!0)[0];a.body.className+=" DTFC_Cloned";a.body.style.paddingBottom=l.oScroll.iBarWidth+"px";a.body.style.marginBottom=2*l.oScroll.iBarWidth+"px";null!==a.body.getAttribute("id")&&a.body.removeAttribute("id");d(">thead>tr",a.body).empty();d(">tfoot",
|
||||
a.body).remove();var p=d("tbody",a.body)[0];d(p).empty();if(0<l.aiDisplay.length){h=d(">thead>tr",a.body)[0];for(o=0;o<c.length;o++)j=c[o],m=d(l.aoColumns[j].nTh).clone(!0)[0],m.innerHTML="",k=m.style,k.paddingTop="0",k.paddingBottom="0",k.borderTopWidth="0",k.borderBottomWidth="0",k.height=0,k.width=f.s.aiInnerWidths[j]+"px",h.appendChild(m);d(">tbody>tr",f.dom.body).each(function(a){var b=this.cloneNode(false);b.removeAttribute("id");a=f.s.dt.aoData[f.s.dt.oFeatures.bServerSide===false?f.s.dt.aiDisplay[f.s.dt._iDisplayStart+
|
||||
a]:a].anCells||d(this).children("td, th");for(o=0;o<c.length;o++){j=c[o];if(a.length>0){m=d(a[j]).clone(true,true)[0];b.appendChild(m)}}p.appendChild(b)})}else d(">tbody>tr",f.dom.body).each(function(){m=this.cloneNode(true);m.className=m.className+" DTFC_NoData";d("td",m).html("");p.appendChild(m)});a.body.style.width="100%";a.body.style.margin="0";a.body.style.padding="0";l.oScroller!==t&&(h=l.oScroller.dom.force,b.forcer?b.forcer.style.height=h.style.height:(b.forcer=h.cloneNode(!0),b.liner.appendChild(b.forcer)));
|
||||
b.liner.appendChild(a.body);this._fnEqualiseHeights("tbody",f.dom.body,a.body);if(null!==l.nTFoot){if(g){null!==a.footer&&a.footer.parentNode.removeChild(a.footer);a.footer=d(this.dom.footer).clone(!0,!0)[0];a.footer.className+=" DTFC_Cloned";a.footer.style.width="100%";b.foot.appendChild(a.footer);n=this._fnCopyLayout(l.aoFooter,c);b=d(">tfoot",a.footer);b.empty();e=0;for(h=n.length;e<h;e++)b[0].appendChild(n[e].nTr);l.oApi._fnDrawHead(l,n,!0)}else{n=this._fnCopyLayout(l.aoFooter,c);b=[];l.oApi._fnDetectHeader(b,
|
||||
d(">tfoot",a.footer)[0]);e=0;for(h=n.length;e<h;e++){i=0;for(k=n[e].length;i<k;i++)b[e][i].cell.className=n[e][i].cell.className}}this._fnEqualiseHeights("tfoot",this.dom.footer,a.footer)}b=l.oApi._fnGetUniqueThs(l,d(">thead",a.header)[0]);d(b).each(function(a){j=c[a];this.style.width=f.s.aiInnerWidths[j]+"px"});null!==f.s.dt.nTFoot&&(b=l.oApi._fnGetUniqueThs(l,d(">tfoot",a.footer)[0]),d(b).each(function(a){j=c[a];this.style.width=f.s.aiInnerWidths[j]+"px"}))},_fnGetTrNodes:function(a){for(var b=
|
||||
[],c=0,d=a.childNodes.length;c<d;c++)"TR"==a.childNodes[c].nodeName.toUpperCase()&&b.push(a.childNodes[c]);return b},_fnEqualiseHeights:function(a,b,c){if(!("none"==this.s.sHeightMatch&&"thead"!==a&&"tfoot"!==a)){var g,f,e=b.getElementsByTagName(a)[0],c=c.getElementsByTagName(a)[0],a=d(">"+a+">tr:eq(0)",b).children(":first");a.outerHeight();a.height();for(var e=this._fnGetTrNodes(e),b=this._fnGetTrNodes(c),h=[],c=0,a=b.length;c<a;c++)g=e[c].offsetHeight,f=b[c].offsetHeight,g=f>g?f:g,"semiauto"==this.s.sHeightMatch&&
|
||||
(e[c]._DTTC_iHeight=g),h.push(g);c=0;for(a=b.length;c<a;c++)b[c].style.height=h[c]+"px",e[c].style.height=h[c]+"px"}}};j.defaults={iLeftColumns:1,iRightColumns:0,fnDrawCallback:null,sHeightMatch:"semiauto"};j.version="3.0.4";d.fn.dataTable.FixedColumns=j;return d.fn.DataTable.FixedColumns=j};"function"===typeof define&&define.amd?define(["jquery","datatables"],p):"object"===typeof exports?p(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.FixedColumns&&p(jQuery,jQuery.fn.dataTable)})(window,
|
||||
document);
|
||||
(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(q){return d(q,window,document)}):"object"===typeof exports?module.exports=function(q,r){q||(q=window);if(!r||!r.fn.dataTable)r=require("datatables.net")(q,r).$;return d(r,q,q.document)}:d(jQuery,window,document)})(function(d,q,r,t){var s=d.fn.dataTable,u,m=function(a,b){var c=this;if(this instanceof m){if(b===t||!0===b)b={};var e=d.fn.dataTable.camelToHungarian;e&&(e(m.defaults,m.defaults,!0),e(m.defaults,
|
||||
b));e=(new d.fn.dataTable.Api(a)).settings()[0];this.s={dt:e,iTableColumns:e.aoColumns.length,aiOuterWidths:[],aiInnerWidths:[]};this.dom={scroller:null,header:null,body:null,footer:null,grid:{wrapper:null,dt:null,left:{wrapper:null,head:null,body:null,foot:null},right:{wrapper:null,head:null,body:null,foot:null}},clone:{left:{header:null,body:null,footer:null},right:{header:null,body:null,footer:null}}};if(e._oFixedColumns)throw"FixedColumns already initialised on this table";e._oFixedColumns=this;
|
||||
e._bInitComplete?this._fnConstruct(b):e.oApi._fnCallbackReg(e,"aoInitComplete",function(){c._fnConstruct(b)},"FixedColumns")}else alert("FixedColumns warning: FixedColumns must be initialised with the 'new' keyword.")};d.extend(m.prototype,{fnUpdate:function(){this._fnDraw(!0)},fnRedrawLayout:function(){this._fnColCalc();this._fnGridLayout();this.fnUpdate()},fnRecalculateHeight:function(a){delete a._DTTC_iHeight;a.style.height="auto"},fnSetRowHeight:function(a,b){a.style.height=b+"px"},fnGetPosition:function(a){var b=
|
||||
this.s.dt.oInstance;if(d(a).parents(".DTFC_Cloned").length){if("tr"===a.nodeName.toLowerCase())return a=d(a).index(),b.fnGetPosition(d("tr",this.s.dt.nTBody)[a]);var c=d(a).index(),a=d(a.parentNode).index();return[b.fnGetPosition(d("tr",this.s.dt.nTBody)[a]),c,b.oApi._fnVisibleToColumnIndex(this.s.dt,c)]}return b.fnGetPosition(a)},_fnConstruct:function(a){var b=this;if("function"!=typeof this.s.dt.oInstance.fnVersionCheck||!0!==this.s.dt.oInstance.fnVersionCheck("1.8.0"))alert("FixedColumns "+m.VERSION+
|
||||
" required DataTables 1.8.0 or later. Please upgrade your DataTables installation");else if(""===this.s.dt.oScroll.sX)this.s.dt.oInstance.oApi._fnLog(this.s.dt,1,"FixedColumns is not needed (no x-scrolling in DataTables enabled), so no action will be taken. Use 'FixedHeader' for column fixing when scrolling is not enabled");else{this.s=d.extend(!0,this.s,m.defaults,a);a=this.s.dt.oClasses;this.dom.grid.dt=d(this.s.dt.nTable).parents("div."+a.sScrollWrapper)[0];this.dom.scroller=d("div."+a.sScrollBody,
|
||||
this.dom.grid.dt)[0];this._fnColCalc();this._fnGridSetup();var c,e=!1;d(this.s.dt.nTableWrapper).on("mousedown.DTFC",function(){e=!0;d(r).one("mouseup",function(){e=!1})});d(this.dom.scroller).on("mouseover.DTFC touchstart.DTFC",function(){e||(c="main")}).on("scroll.DTFC",function(a){!c&&a.originalEvent&&(c="main");if("main"===c&&(0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.scroller.scrollTop),0<b.s.iRightColumns))b.dom.grid.right.liner.scrollTop=b.dom.scroller.scrollTop});var f="onwheel"in
|
||||
r.createElement("div")?"wheel.DTFC":"mousewheel.DTFC";if(0<b.s.iLeftColumns)d(b.dom.grid.left.liner).on("mouseover.DTFC touchstart.DTFC",function(){e||(c="left")}).on("scroll.DTFC",function(a){!c&&a.originalEvent&&(c="left");"left"===c&&(b.dom.scroller.scrollTop=b.dom.grid.left.liner.scrollTop,0<b.s.iRightColumns&&(b.dom.grid.right.liner.scrollTop=b.dom.grid.left.liner.scrollTop))}).on(f,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});
|
||||
if(0<b.s.iRightColumns)d(b.dom.grid.right.liner).on("mouseover.DTFC touchstart.DTFC",function(){e||(c="right")}).on("scroll.DTFC",function(a){!c&&a.originalEvent&&(c="right");"right"===c&&(b.dom.scroller.scrollTop=b.dom.grid.right.liner.scrollTop,0<b.s.iLeftColumns&&(b.dom.grid.left.liner.scrollTop=b.dom.grid.right.liner.scrollTop))}).on(f,function(a){b.dom.scroller.scrollLeft-="wheel"===a.type?-a.originalEvent.deltaX:a.originalEvent.wheelDeltaX});d(q).on("resize.DTFC",function(){b._fnGridLayout.call(b)});
|
||||
var g=!0,h=d(this.s.dt.nTable);h.on("draw.dt.DTFC",function(){b._fnColCalc();b._fnDraw.call(b,g);g=!1}).on("column-sizing.dt.DTFC",function(){b._fnColCalc();b._fnGridLayout(b)}).on("column-visibility.dt.DTFC",function(a,c,d,e,f){if(f===t||f)b._fnColCalc(),b._fnGridLayout(b),b._fnDraw(!0)}).on("select.dt.DTFC deselect.dt.DTFC",function(){b._fnDraw(!1)}).on("destroy.dt.DTFC",function(){h.off(".DTFC");d(b.dom.scroller).off(".DTFC");d(q).off(".DTFC");d(this.s.dt.nTableWrapper).off(".DTFC");d(b.dom.grid.left.liner).off(".DTFC "+
|
||||
f);d(b.dom.grid.left.wrapper).remove();d(b.dom.grid.right.liner).off(".DTFC "+f);d(b.dom.grid.right.wrapper).remove()});this._fnGridLayout();this.s.dt.oInstance.fnDraw(!1)}},_fnColCalc:function(){var a=this,b=0,c=0;this.s.aiInnerWidths=[];this.s.aiOuterWidths=[];d.each(this.s.dt.aoColumns,function(e,f){var g=d(f.nTh),h;if(g.filter(":visible").length){var i=g.outerWidth();0===a.s.aiOuterWidths.length&&(h=d(a.s.dt.nTable).css("border-left-width"),i+="string"===typeof h?1:parseInt(h,10));a.s.aiOuterWidths.length===
|
||||
a.s.dt.aoColumns.length-1&&(h=d(a.s.dt.nTable).css("border-right-width"),i+="string"===typeof h?1:parseInt(h,10));a.s.aiOuterWidths.push(i);a.s.aiInnerWidths.push(g.width());e<a.s.iLeftColumns&&(b+=i);a.s.iTableColumns-a.s.iRightColumns<=e&&(c+=i)}else a.s.aiInnerWidths.push(0),a.s.aiOuterWidths.push(0)});this.s.iLeftWidth=b;this.s.iRightWidth=c},_fnGridSetup:function(){var a=this._fnDTOverflow(),b;this.dom.body=this.s.dt.nTable;this.dom.header=this.s.dt.nTHead.parentNode;this.dom.header.parentNode.parentNode.style.position=
|
||||
"relative";var c=d('<div class="DTFC_ScrollWrapper" style="position:relative; clear:both;"><div class="DTFC_LeftWrapper" style="position:absolute; top:0; left:0;"><div class="DTFC_LeftHeadWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div><div class="DTFC_LeftBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_LeftBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_LeftFootWrapper" style="position:relative; top:0; left:0; overflow:hidden;"></div></div><div class="DTFC_RightWrapper" style="position:absolute; top:0; right:0;"><div class="DTFC_RightHeadWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightHeadBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div><div class="DTFC_RightBodyWrapper" style="position:relative; top:0; left:0; overflow:hidden;"><div class="DTFC_RightBodyLiner" style="position:relative; top:0; left:0; overflow-y:scroll;"></div></div><div class="DTFC_RightFootWrapper" style="position:relative; top:0; left:0;"><div class="DTFC_RightFootBlocker DTFC_Blocker" style="position:absolute; top:0; bottom:0;"></div></div></div></div>')[0],
|
||||
e=c.childNodes[0],f=c.childNodes[1];this.dom.grid.dt.parentNode.insertBefore(c,this.dom.grid.dt);c.appendChild(this.dom.grid.dt);this.dom.grid.wrapper=c;0<this.s.iLeftColumns&&(this.dom.grid.left.wrapper=e,this.dom.grid.left.head=e.childNodes[0],this.dom.grid.left.body=e.childNodes[1],this.dom.grid.left.liner=d("div.DTFC_LeftBodyLiner",c)[0],c.appendChild(e));0<this.s.iRightColumns&&(this.dom.grid.right.wrapper=f,this.dom.grid.right.head=f.childNodes[0],this.dom.grid.right.body=f.childNodes[1],this.dom.grid.right.liner=
|
||||
d("div.DTFC_RightBodyLiner",c)[0],f.style.right=a.bar+"px",b=d("div.DTFC_RightHeadBlocker",c)[0],b.style.width=a.bar+"px",b.style.right=-a.bar+"px",this.dom.grid.right.headBlock=b,b=d("div.DTFC_RightFootBlocker",c)[0],b.style.width=a.bar+"px",b.style.right=-a.bar+"px",this.dom.grid.right.footBlock=b,c.appendChild(f));if(this.s.dt.nTFoot&&(this.dom.footer=this.s.dt.nTFoot.parentNode,0<this.s.iLeftColumns&&(this.dom.grid.left.foot=e.childNodes[2]),0<this.s.iRightColumns))this.dom.grid.right.foot=f.childNodes[2];
|
||||
"rtl"===d(this.dom.body).css("direction")&&(d(e).css({left:"",right:0}),d(f).css({left:a.bar+"px",right:""}),d("div.DTFC_RightHeadBlocker",c).css({left:-a.bar+"px",right:""}))},_fnGridLayout:function(){var a=this,b=this.dom.grid;d(b.wrapper).width();var c=d(this.s.dt.nTable.parentNode).outerHeight(),e=d(this.s.dt.nTable.parentNode.parentNode).outerHeight(),f=this._fnDTOverflow(),g=this.s.iLeftWidth,h=this.s.iRightWidth,i=function(b,c){f.bar?a._firefoxScrollError()?34<d(b).height()&&(b.style.width=
|
||||
c+f.bar+"px"):b.style.width=c+f.bar+"px":(b.style.width=c+20+"px",b.style.paddingRight="20px",b.style.boxSizing="border-box")};f.x&&(c-=f.bar);b.wrapper.style.height=e+"px";0<this.s.iLeftColumns&&(b.left.wrapper.style.width=g+"px",b.left.wrapper.style.height="1px",b.left.body.style.height=c+"px",b.left.foot&&(b.left.foot.style.top=(f.x?f.bar:0)+"px"),i(b.left.liner,g),b.left.liner.style.height=c+"px");0<this.s.iRightColumns&&(b.right.wrapper.style.width=h+"px",b.right.wrapper.style.height="1px",b.right.body.style.height=
|
||||
c+"px",b.right.foot&&(b.right.foot.style.top=(f.x?f.bar:0)+"px"),i(b.right.liner,h),b.right.liner.style.height=c+"px",b.right.headBlock.style.display=f.y?"block":"none",b.right.footBlock.style.display=f.y?"block":"none")},_fnDTOverflow:function(){var a=this.s.dt.nTable,b=a.parentNode,c={x:!1,y:!1,bar:this.s.dt.oScroll.iBarWidth};a.offsetWidth>b.clientWidth&&(c.x=!0);a.offsetHeight>b.clientHeight&&(c.y=!0);return c},_fnDraw:function(a){this._fnGridLayout();this._fnCloneLeft(a);this._fnCloneRight(a);
|
||||
null!==this.s.fnDrawCallback&&this.s.fnDrawCallback.call(this,this.dom.clone.left,this.dom.clone.right);d(this).trigger("draw.dtfc",{leftClone:this.dom.clone.left,rightClone:this.dom.clone.right})},_fnCloneRight:function(a){if(!(0>=this.s.iRightColumns)){var b,c=[];for(b=this.s.iTableColumns-this.s.iRightColumns;b<this.s.iTableColumns;b++)this.s.dt.aoColumns[b].bVisible&&c.push(b);this._fnClone(this.dom.clone.right,this.dom.grid.right,c,a)}},_fnCloneLeft:function(a){if(!(0>=this.s.iLeftColumns)){var b,
|
||||
c=[];for(b=0;b<this.s.iLeftColumns;b++)this.s.dt.aoColumns[b].bVisible&&c.push(b);this._fnClone(this.dom.clone.left,this.dom.grid.left,c,a)}},_fnCopyLayout:function(a,b,c){for(var e=[],f=[],g=[],h=0,i=a.length;h<i;h++){var k=[];k.nTr=d(a[h].nTr).clone(c,!1)[0];for(var l=0,o=this.s.iTableColumns;l<o;l++)if(-1!==d.inArray(l,b)){var p=d.inArray(a[h][l].cell,g);-1===p?(p=d(a[h][l].cell).clone(c,!1)[0],f.push(p),g.push(a[h][l].cell),k.push({cell:p,unique:a[h][l].unique})):k.push({cell:f[p],unique:a[h][l].unique})}e.push(k)}return e},
|
||||
_fnClone:function(a,b,c,e){var f=this,g,h,i,k,l,o,p,n,m,j=this.s.dt;if(e){d(a.header).remove();a.header=d(this.dom.header).clone(!0,!1)[0];a.header.className+=" DTFC_Cloned";a.header.style.width="100%";b.head.appendChild(a.header);n=this._fnCopyLayout(j.aoHeader,c,!0);k=d(">thead",a.header);k.empty();g=0;for(h=n.length;g<h;g++)k[0].appendChild(n[g].nTr);j.oApi._fnDrawHead(j,n,!0)}else{n=this._fnCopyLayout(j.aoHeader,c,!1);m=[];j.oApi._fnDetectHeader(m,d(">thead",a.header)[0]);g=0;for(h=n.length;g<
|
||||
h;g++){i=0;for(k=n[g].length;i<k;i++)m[g][i].cell.className=n[g][i].cell.className,d("span.DataTables_sort_icon",m[g][i].cell).each(function(){this.className=d("span.DataTables_sort_icon",n[g][i].cell)[0].className})}}this._fnEqualiseHeights("thead",this.dom.header,a.header);"auto"==this.s.sHeightMatch&&d(">tbody>tr",f.dom.body).css("height","auto");null!==a.body&&(d(a.body).remove(),a.body=null);a.body=d(this.dom.body).clone(!0)[0];a.body.className+=" DTFC_Cloned";a.body.style.paddingBottom=j.oScroll.iBarWidth+
|
||||
"px";a.body.style.marginBottom=2*j.oScroll.iBarWidth+"px";null!==a.body.getAttribute("id")&&a.body.removeAttribute("id");d(">thead>tr",a.body).empty();d(">tfoot",a.body).remove();var q=d("tbody",a.body)[0];d(q).empty();if(0<j.aiDisplay.length){h=d(">thead>tr",a.body)[0];for(p=0;p<c.length;p++)l=c[p],o=d(j.aoColumns[l].nTh).clone(!0)[0],o.innerHTML="",k=o.style,k.paddingTop="0",k.paddingBottom="0",k.borderTopWidth="0",k.borderBottomWidth="0",k.height=0,k.width=f.s.aiInnerWidths[l]+"px",h.appendChild(o);
|
||||
d(">tbody>tr",f.dom.body).each(function(a){var a=f.s.dt.oFeatures.bServerSide===false?f.s.dt.aiDisplay[f.s.dt._iDisplayStart+a]:a,b=f.s.dt.aoData[a].anCells||d(this).children("td, th"),e=this.cloneNode(false);e.removeAttribute("id");e.setAttribute("data-dt-row",a);for(p=0;p<c.length;p++){l=c[p];if(b.length>0){o=d(b[l]).clone(true,true)[0];o.setAttribute("data-dt-row",a);o.setAttribute("data-dt-column",p);e.appendChild(o)}}q.appendChild(e)})}else d(">tbody>tr",f.dom.body).each(function(){o=this.cloneNode(true);
|
||||
o.className=o.className+" DTFC_NoData";d("td",o).html("");q.appendChild(o)});a.body.style.width="100%";a.body.style.margin="0";a.body.style.padding="0";j.oScroller!==t&&(h=j.oScroller.dom.force,b.forcer?b.forcer.style.height=h.style.height:(b.forcer=h.cloneNode(!0),b.liner.appendChild(b.forcer)));b.liner.appendChild(a.body);this._fnEqualiseHeights("tbody",f.dom.body,a.body);if(null!==j.nTFoot){if(e){null!==a.footer&&a.footer.parentNode.removeChild(a.footer);a.footer=d(this.dom.footer).clone(!0,!0)[0];
|
||||
a.footer.className+=" DTFC_Cloned";a.footer.style.width="100%";b.foot.appendChild(a.footer);n=this._fnCopyLayout(j.aoFooter,c,!0);b=d(">tfoot",a.footer);b.empty();g=0;for(h=n.length;g<h;g++)b[0].appendChild(n[g].nTr);j.oApi._fnDrawHead(j,n,!0)}else{n=this._fnCopyLayout(j.aoFooter,c,!1);b=[];j.oApi._fnDetectHeader(b,d(">tfoot",a.footer)[0]);g=0;for(h=n.length;g<h;g++){i=0;for(k=n[g].length;i<k;i++)b[g][i].cell.className=n[g][i].cell.className}}this._fnEqualiseHeights("tfoot",this.dom.footer,a.footer)}b=
|
||||
j.oApi._fnGetUniqueThs(j,d(">thead",a.header)[0]);d(b).each(function(a){l=c[a];this.style.width=f.s.aiInnerWidths[l]+"px"});null!==f.s.dt.nTFoot&&(b=j.oApi._fnGetUniqueThs(j,d(">tfoot",a.footer)[0]),d(b).each(function(a){l=c[a];this.style.width=f.s.aiInnerWidths[l]+"px"}))},_fnGetTrNodes:function(a){for(var b=[],c=0,d=a.childNodes.length;c<d;c++)"TR"==a.childNodes[c].nodeName.toUpperCase()&&b.push(a.childNodes[c]);return b},_fnEqualiseHeights:function(a,b,c){if(!("none"==this.s.sHeightMatch&&"thead"!==
|
||||
a&&"tfoot"!==a)){var e,f,g=b.getElementsByTagName(a)[0],c=c.getElementsByTagName(a)[0],a=d(">"+a+">tr:eq(0)",b).children(":first");a.outerHeight();a.height();for(var g=this._fnGetTrNodes(g),b=this._fnGetTrNodes(c),h=[],c=0,a=b.length;c<a;c++)e=g[c].offsetHeight,f=b[c].offsetHeight,e=f>e?f:e,"semiauto"==this.s.sHeightMatch&&(g[c]._DTTC_iHeight=e),h.push(e);c=0;for(a=b.length;c<a;c++)b[c].style.height=h[c]+"px",g[c].style.height=h[c]+"px"}},_firefoxScrollError:function(){if(u===t){var a=d("<div/>").css({position:"absolute",
|
||||
top:0,left:0,height:10,width:50,overflow:"scroll"}).appendTo("body");u=a[0].clientWidth===a[0].offsetWidth&&0!==this._fnDTOverflow().bar;a.remove()}return u}});m.defaults={iLeftColumns:1,iRightColumns:0,fnDrawCallback:null,sHeightMatch:"semiauto"};m.version="3.2.1";s.Api.register("fixedColumns()",function(){return this});s.Api.register("fixedColumns().update()",function(){return this.iterator("table",function(a){a._oFixedColumns&&a._oFixedColumns.fnUpdate()})});s.Api.register("fixedColumns().relayout()",
|
||||
function(){return this.iterator("table",function(a){a._oFixedColumns&&a._oFixedColumns.fnRedrawLayout()})});s.Api.register("rows().recalcHeight()",function(){return this.iterator("row",function(a,b){a._oFixedColumns&&a._oFixedColumns.fnRecalculateHeight(this.row(b).node())})});s.Api.register("fixedColumns().rowIndex()",function(a){a=d(a);return a.parents(".DTFC_Cloned").length?this.rows({page:"current"}).indexes()[a.index()]:this.row(a).index()});s.Api.register("fixedColumns().cellIndex()",function(a){a=
|
||||
d(a);if(a.parents(".DTFC_Cloned").length){var b=a.parent().index(),b=this.rows({page:"current"}).indexes()[b],a=a.parents(".DTFC_LeftWrapper").length?a.index():this.columns().flatten().length-this.context[0]._oFixedColumns.s.iRightColumns+a.index();return{row:b,column:this.column.index("toData",a),columnVisible:a}}return this.cell(a).index()});d(r).on("init.dt.fixedColumns",function(a,b){if("dt"===a.namespace){var c=b.oInit.fixedColumns,e=s.defaults.fixedColumns;if(c||e)e=d.extend({},c,e),!1!==c&&
|
||||
new m(b,e)}});d.fn.dataTable.FixedColumns=m;return d.fn.DataTable.FixedColumns=m});
|
||||
|
||||
@ -0,0 +1,22 @@
|
||||
MIT license
|
||||
|
||||
Copyright (c) 2009-2015 SpryMedia Limited
|
||||
http://datatables.net
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@ -0,0 +1,41 @@
|
||||
# FixedHeader
|
||||
|
||||
The FixedHeader plug-in will freeze in place the header, footer and left and/or right most columns in a DataTable, ensuring that title information will remain always visible.
|
||||
|
||||
|
||||
# Installation
|
||||
|
||||
To use FixedHeader the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/fixedheader/) for full details.
|
||||
|
||||
## NPM and Bower
|
||||
|
||||
If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-fixedheader`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name.
|
||||
|
||||
Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables.
|
||||
|
||||
|
||||
# Basic usage
|
||||
|
||||
FixedHeader is initialised using the `fixedHeader` option in the DataTables constructor - a simple boolean `true` will enable the feature. Further options can be specified using this option as an object - see the documentation for details.
|
||||
|
||||
Example:
|
||||
|
||||
```js
|
||||
$(document).ready( function () {
|
||||
$('#myTable').DataTable( {
|
||||
fixedHeader: true
|
||||
} );
|
||||
} );
|
||||
```
|
||||
|
||||
|
||||
# Documentation / support
|
||||
|
||||
* [Documentation](https://datatables.net/extensions/fixedheader/)
|
||||
* [DataTables support forums](http://datatables.net/forums)
|
||||
|
||||
|
||||
# GitHub
|
||||
|
||||
If you fancy getting involved with the development of FixedHeader and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/FixedHeader).
|
||||
|
||||
@ -0,0 +1,20 @@
|
||||
table.dataTable.fixedHeader-floating,
|
||||
table.dataTable.fixedHeader-locked {
|
||||
background-color: white;
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
table.dataTable.fixedHeader-floating {
|
||||
position: fixed !important;
|
||||
}
|
||||
|
||||
table.dataTable.fixedHeader-locked {
|
||||
position: absolute !important;
|
||||
}
|
||||
|
||||
@media print {
|
||||
table.fixedHeader-floating {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
table.dataTable.fixedHeader-floating,table.dataTable.fixedHeader-locked{background-color:white;margin-top:0 !important;margin-bottom:0 !important}table.dataTable.fixedHeader-floating{position:fixed !important}table.dataTable.fixedHeader-locked{position:absolute !important}@media print{table.fixedHeader-floating{display:none}}
|
||||
@ -0,0 +1,19 @@
|
||||
table.fixedHeader-floating {
|
||||
position: fixed !important;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
table.fixedHeader-floating.no-footer {
|
||||
border-bottom-width: 0;
|
||||
}
|
||||
|
||||
table.fixedHeader-locked {
|
||||
position: absolute !important;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
@media print {
|
||||
table.fixedHeader-floating {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
table.fixedHeader-floating{position:fixed !important;background-color:white}table.fixedHeader-floating.no-footer{border-bottom-width:0}table.fixedHeader-locked{position:absolute !important;background-color:white}@media print{table.fixedHeader-floating{display:none}}
|
||||
@ -0,0 +1,20 @@
|
||||
table.dataTable.fixedHeader-floating,
|
||||
table.dataTable.fixedHeader-locked {
|
||||
background-color: white;
|
||||
margin-top: 0 !important;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
table.dataTable.fixedHeader-floating {
|
||||
position: fixed !important;
|
||||
}
|
||||
|
||||
table.dataTable.fixedHeader-locked {
|
||||
position: absolute !important;
|
||||
}
|
||||
|
||||
@media print {
|
||||
table.fixedHeader-floating {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
table.dataTable.fixedHeader-floating,table.dataTable.fixedHeader-locked{background-color:white;margin-top:0 !important;margin-bottom:0 !important}table.dataTable.fixedHeader-floating{position:fixed !important}table.dataTable.fixedHeader-locked{position:absolute !important}@media print{table.fixedHeader-floating{display:none}}
|
||||
@ -0,0 +1,15 @@
|
||||
table.fixedHeader-floating {
|
||||
position: fixed !important;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
table.fixedHeader-locked {
|
||||
position: absolute !important;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
@media print {
|
||||
table.fixedHeader-floating {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
table.fixedHeader-floating{position:fixed !important;background-color:white}table.fixedHeader-locked{position:absolute !important;background-color:white}@media print{table.fixedHeader-floating{display:none}}
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,30 +1,17 @@
|
||||
/*!
|
||||
FixedHeader 2.1.2
|
||||
©2010-2014 SpryMedia Ltd - datatables.net/license
|
||||
FixedHeader 3.1.1
|
||||
©2009-2016 SpryMedia Ltd - datatables.net/license
|
||||
*/
|
||||
var FixedHeader;
|
||||
(function(j,k,h){var l=function(e){FixedHeader=function(a,b){if(!this instanceof FixedHeader)alert("FixedHeader warning: FixedHeader must be initialised with the 'new' keyword.");else{var c={aoCache:[],oSides:{top:!0,bottom:!1,left:0,right:0},oZIndexes:{top:104,bottom:103,left:102,right:101},oCloneOnDraw:{top:!1,bottom:!1,left:!0,right:!0},oMes:{iTableWidth:0,iTableHeight:0,iTableLeft:0,iTableRight:0,iTableTop:0,iTableBottom:0},oOffset:{top:0},nTable:null,bFooter:!1,bInitComplete:!1};this.fnGetSettings=
|
||||
function(){return c};this.fnUpdate=function(){this._fnUpdateClones();this._fnUpdatePositions()};this.fnPosition=function(){this._fnUpdatePositions()};var d=e.fn.dataTable.Api?(new e.fn.dataTable.Api(a)).settings()[0]:a.fnSettings();d._oPluginFixedHeader=this;this.fnInit(d,b)}};FixedHeader.prototype={fnInit:function(a,b){var c=this.fnGetSettings(),d=this;this.fnInitSettings(c,b);""!==a.oScroll.sX||""!==a.oScroll.sY?alert("FixedHeader 2 is not supported with DataTables' scrolling mode at this time"):
|
||||
(c.nTable=a.nTable,a.aoDrawCallback.unshift({fn:function(){FixedHeader.fnMeasure();d._fnUpdateClones.call(d);d._fnUpdatePositions.call(d)},sName:"FixedHeader"}),c.bFooter=0<e(">tfoot",c.nTable).length?!0:!1,c.oSides.top&&c.aoCache.push(d._fnCloneTable("fixedHeader","FixedHeader_Header",d._fnCloneThead)),c.oSides.bottom&&c.aoCache.push(d._fnCloneTable("fixedFooter","FixedHeader_Footer",d._fnCloneTfoot)),c.oSides.left&&c.aoCache.push(d._fnCloneTable("fixedLeft","FixedHeader_Left",d._fnCloneTLeft,c.oSides.left)),
|
||||
c.oSides.right&&c.aoCache.push(d._fnCloneTable("fixedRight","FixedHeader_Right",d._fnCloneTRight,c.oSides.right)),FixedHeader.afnScroll.push(function(){d._fnUpdatePositions.call(d)}),e(j).resize(function(){FixedHeader.fnMeasure();d._fnUpdateClones.call(d);d._fnUpdatePositions.call(d)}),e(c.nTable).on("column-reorder.dt",function(){FixedHeader.fnMeasure();d._fnUpdateClones(!0);d._fnUpdatePositions()}).on("column-visibility.dt",function(){FixedHeader.fnMeasure();d._fnUpdateClones(!0);d._fnUpdatePositions()}),
|
||||
FixedHeader.fnMeasure(),d._fnUpdateClones(),d._fnUpdatePositions(),c.bInitComplete=!0)},fnInitSettings:function(a,b){if(b!==h&&(b.top!==h&&(a.oSides.top=b.top),b.bottom!==h&&(a.oSides.bottom=b.bottom),"boolean"==typeof b.left?a.oSides.left=b.left?1:0:b.left!==h&&(a.oSides.left=b.left),"boolean"==typeof b.right?a.oSides.right=b.right?1:0:b.right!==h&&(a.oSides.right=b.right),b.zTop!==h&&(a.oZIndexes.top=b.zTop),b.zBottom!==h&&(a.oZIndexes.bottom=b.zBottom),b.zLeft!==h&&(a.oZIndexes.left=b.zLeft),b.zRight!==
|
||||
h&&(a.oZIndexes.right=b.zRight),b.offsetTop!==h&&(a.oOffset.top=b.offsetTop),b.alwaysCloneTop!==h&&(a.oCloneOnDraw.top=b.alwaysCloneTop),b.alwaysCloneBottom!==h&&(a.oCloneOnDraw.bottom=b.alwaysCloneBottom),b.alwaysCloneLeft!==h&&(a.oCloneOnDraw.left=b.alwaysCloneLeft),b.alwaysCloneRight!==h))a.oCloneOnDraw.right=b.alwaysCloneRight},_fnCloneTable:function(a,b,c,d){var f=this.fnGetSettings(),g;"absolute"!=e(f.nTable.parentNode).css("position")&&(f.nTable.parentNode.style.position="relative");g=f.nTable.cloneNode(!1);
|
||||
g.removeAttribute("id");var i=k.createElement("div");i.style.position="absolute";i.style.top="0px";i.style.left="0px";i.className+=" FixedHeader_Cloned "+a+" "+b;"fixedHeader"==a&&(i.style.zIndex=f.oZIndexes.top);"fixedFooter"==a&&(i.style.zIndex=f.oZIndexes.bottom);"fixedLeft"==a?i.style.zIndex=f.oZIndexes.left:"fixedRight"==a&&(i.style.zIndex=f.oZIndexes.right);g.style.margin="0";i.appendChild(g);k.body.appendChild(i);return{nNode:g,nWrapper:i,sType:a,sPosition:"",sTop:"",sLeft:"",fnClone:c,iCells:d}},
|
||||
_fnMeasure:function(){var a=this.fnGetSettings(),b=a.oMes,c=e(a.nTable),d=c.offset(),f=this._fnSumScroll(a.nTable.parentNode,"scrollTop");this._fnSumScroll(a.nTable.parentNode,"scrollLeft");b.iTableWidth=c.outerWidth();b.iTableHeight=c.outerHeight();b.iTableLeft=d.left+a.nTable.parentNode.scrollLeft;b.iTableTop=d.top+f;b.iTableRight=b.iTableLeft+b.iTableWidth;b.iTableRight=FixedHeader.oDoc.iWidth-b.iTableLeft-b.iTableWidth;b.iTableBottom=FixedHeader.oDoc.iHeight-b.iTableTop-b.iTableHeight},_fnSumScroll:function(a,
|
||||
b){for(var c=a[b];(a=a.parentNode)&&!("HTML"==a.nodeName||"BODY"==a.nodeName);)c=a[b];return c},_fnUpdatePositions:function(){var a=this.fnGetSettings();this._fnMeasure();for(var b=0,c=a.aoCache.length;b<c;b++)"fixedHeader"==a.aoCache[b].sType?this._fnScrollFixedHeader(a.aoCache[b]):"fixedFooter"==a.aoCache[b].sType?this._fnScrollFixedFooter(a.aoCache[b]):"fixedLeft"==a.aoCache[b].sType?this._fnScrollHorizontalLeft(a.aoCache[b]):this._fnScrollHorizontalRight(a.aoCache[b])},_fnUpdateClones:function(a){var b=
|
||||
this.fnGetSettings();a&&(b.bInitComplete=!1);for(var c=0,d=b.aoCache.length;c<d;c++)b.aoCache[c].fnClone.call(this,b.aoCache[c]);a&&(b.bInitComplete=!0)},_fnScrollHorizontalRight:function(a){var b=this.fnGetSettings().oMes,c=FixedHeader.oWin,d=FixedHeader.oDoc,f=a.nWrapper,g=e(f).outerWidth();c.iScrollRight<b.iTableRight?(this._fnUpdateCache(a,"sPosition","absolute","position",f.style),this._fnUpdateCache(a,"sTop",b.iTableTop+"px","top",f.style),this._fnUpdateCache(a,"sLeft",b.iTableLeft+b.iTableWidth-
|
||||
g+"px","left",f.style)):b.iTableLeft<d.iWidth-c.iScrollRight-g?(this._fnUpdateCache(a,"sPosition","fixed","position",f.style),this._fnUpdateCache(a,"sTop",b.iTableTop-c.iScrollTop+"px","top",f.style),this._fnUpdateCache(a,"sLeft",c.iWidth-g+"px","left",f.style)):(this._fnUpdateCache(a,"sPosition","absolute","position",f.style),this._fnUpdateCache(a,"sTop",b.iTableTop+"px","top",f.style),this._fnUpdateCache(a,"sLeft",b.iTableLeft+"px","left",f.style))},_fnScrollHorizontalLeft:function(a){var b=this.fnGetSettings().oMes,
|
||||
c=FixedHeader.oWin,d=a.nWrapper,f=e(d).outerWidth();c.iScrollLeft<b.iTableLeft?(this._fnUpdateCache(a,"sPosition","absolute","position",d.style),this._fnUpdateCache(a,"sTop",b.iTableTop+"px","top",d.style),this._fnUpdateCache(a,"sLeft",b.iTableLeft+"px","left",d.style)):c.iScrollLeft<b.iTableLeft+b.iTableWidth-f?(this._fnUpdateCache(a,"sPosition","fixed","position",d.style),this._fnUpdateCache(a,"sTop",b.iTableTop-c.iScrollTop+"px","top",d.style),this._fnUpdateCache(a,"sLeft","0px","left",d.style)):
|
||||
(this._fnUpdateCache(a,"sPosition","absolute","position",d.style),this._fnUpdateCache(a,"sTop",b.iTableTop+"px","top",d.style),this._fnUpdateCache(a,"sLeft",b.iTableLeft+b.iTableWidth-f+"px","left",d.style))},_fnScrollFixedFooter:function(a){var b=this.fnGetSettings(),c=b.oMes,d=FixedHeader.oWin,f=a.nWrapper,b=e("thead",b.nTable).outerHeight(),g=e(f).outerHeight();d.iScrollBottom<c.iTableBottom?(this._fnUpdateCache(a,"sPosition","absolute","position",f.style),this._fnUpdateCache(a,"sTop",c.iTableTop+
|
||||
c.iTableHeight-g+"px","top",f.style),this._fnUpdateCache(a,"sLeft",c.iTableLeft+"px","left",f.style)):d.iScrollBottom<c.iTableBottom+c.iTableHeight-g-b?(this._fnUpdateCache(a,"sPosition","fixed","position",f.style),this._fnUpdateCache(a,"sTop",d.iHeight-g+"px","top",f.style),this._fnUpdateCache(a,"sLeft",c.iTableLeft-d.iScrollLeft+"px","left",f.style)):(this._fnUpdateCache(a,"sPosition","absolute","position",f.style),this._fnUpdateCache(a,"sTop",c.iTableTop+g+"px","top",f.style),this._fnUpdateCache(a,
|
||||
"sLeft",c.iTableLeft+"px","left",f.style))},_fnScrollFixedHeader:function(a){for(var b=this.fnGetSettings(),c=b.oMes,d=FixedHeader.oWin,e=a.nWrapper,g=0,i=b.nTable.getElementsByTagName("tbody"),h=0;h<i.length;++h)g+=i[h].offsetHeight;c.iTableTop>d.iScrollTop+b.oOffset.top?(this._fnUpdateCache(a,"sPosition","absolute","position",e.style),this._fnUpdateCache(a,"sTop",c.iTableTop+"px","top",e.style),this._fnUpdateCache(a,"sLeft",c.iTableLeft+"px","left",e.style)):d.iScrollTop+b.oOffset.top>c.iTableTop+
|
||||
g?(this._fnUpdateCache(a,"sPosition","absolute","position",e.style),this._fnUpdateCache(a,"sTop",c.iTableTop+g+"px","top",e.style),this._fnUpdateCache(a,"sLeft",c.iTableLeft+"px","left",e.style)):(this._fnUpdateCache(a,"sPosition","fixed","position",e.style),this._fnUpdateCache(a,"sTop",b.oOffset.top+"px","top",e.style),this._fnUpdateCache(a,"sLeft",c.iTableLeft-d.iScrollLeft+"px","left",e.style))},_fnUpdateCache:function(a,b,c,d,e){a[b]!=c&&(e[d]=c,a[b]=c)},_fnClassUpdate:function(a,b){var c=this;
|
||||
if("TR"===a.nodeName.toUpperCase()||"TH"===a.nodeName.toUpperCase()||"TD"===a.nodeName.toUpperCase()||"SPAN"===a.nodeName.toUpperCase())b.className=a.className;e(a).children().each(function(d){c._fnClassUpdate(e(a).children()[d],e(b).children()[d])})},_fnCloneThead:function(a){var b=this.fnGetSettings(),c=a.nNode;if(b.bInitComplete&&!b.oCloneOnDraw.top)this._fnClassUpdate(e("thead",b.nTable)[0],e("thead",c)[0]);else{var d=e(b.nTable).outerWidth();a.nWrapper.style.width=d+"px";for(c.style.width=d+
|
||||
"px";0<c.childNodes.length;)e("thead th",c).unbind("click"),c.removeChild(c.childNodes[0]);a=e("thead",b.nTable).clone(!0)[0];c.appendChild(a);var f=[],g=[];e("thead>tr th",b.nTable).each(function(){f.push(e(this).width())});e("thead>tr td",b.nTable).each(function(){g.push(e(this).width())});e("thead>tr th",b.nTable).each(function(a){e("thead>tr th:eq("+a+")",c).width(f[a]);e(this).width(f[a])});e("thead>tr td",b.nTable).each(function(a){e("thead>tr td:eq("+a+")",c).width(g[a]);e(this).width(g[a])});
|
||||
e("th.sorting, th.sorting_desc, th.sorting_asc",c).bind("click",function(){this.blur()})}},_fnCloneTfoot:function(a){var b=this.fnGetSettings(),c=a.nNode;for(a.nWrapper.style.width=e(b.nTable).outerWidth()+"px";0<c.childNodes.length;)c.removeChild(c.childNodes[0]);a=e("tfoot",b.nTable).clone(!0)[0];c.appendChild(a);e("tfoot:eq(0)>tr th",b.nTable).each(function(a){e("tfoot:eq(0)>tr th:eq("+a+")",c).width(e(this).width())});e("tfoot:eq(0)>tr td",b.nTable).each(function(a){e("tfoot:eq(0)>tr td:eq("+
|
||||
a+")",c).width(e(this).width())})},_fnCloneTLeft:function(a){for(var b=this.fnGetSettings(),c=a.nNode,d=e("tbody",b.nTable)[0];0<c.childNodes.length;)c.removeChild(c.childNodes[0]);c.appendChild(e("thead",b.nTable).clone(!0)[0]);c.appendChild(e("tbody",b.nTable).clone(!0)[0]);b.bFooter&&c.appendChild(e("tfoot",b.nTable).clone(!0)[0]);var f="gt("+(a.iCells-1)+")";e("thead tr",c).each(function(){e("th:"+f,this).remove()});e("tfoot tr",c).each(function(){e("th:"+f,this).remove()});e("tbody tr",c).each(function(){e("td:"+
|
||||
f,this).remove()});this.fnEqualiseHeights("thead",d.parentNode,c);this.fnEqualiseHeights("tbody",d.parentNode,c);this.fnEqualiseHeights("tfoot",d.parentNode,c);for(var g=d=0;g<a.iCells;g++)d+=e("thead tr th:eq("+g+")",b.nTable).outerWidth();c.style.width=d+"px";a.nWrapper.style.width=d+"px"},_fnCloneTRight:function(a){for(var b=this.fnGetSettings(),c=e("tbody",b.nTable)[0],d=a.nNode,f=e("tbody tr:eq(0) td",b.nTable).length;0<d.childNodes.length;)d.removeChild(d.childNodes[0]);d.appendChild(e("thead",
|
||||
b.nTable).clone(!0)[0]);d.appendChild(e("tbody",b.nTable).clone(!0)[0]);b.bFooter&&d.appendChild(e("tfoot",b.nTable).clone(!0)[0]);e("thead tr th:lt("+(f-a.iCells)+")",d).remove();e("tfoot tr th:lt("+(f-a.iCells)+")",d).remove();e("tbody tr",d).each(function(){e("td:lt("+(f-a.iCells)+")",this).remove()});this.fnEqualiseHeights("thead",c.parentNode,d);this.fnEqualiseHeights("tbody",c.parentNode,d);this.fnEqualiseHeights("tfoot",c.parentNode,d);for(var g=c=0;g<a.iCells;g++)c+=e("thead tr th:eq("+(f-
|
||||
1-g)+")",b.nTable).outerWidth();d.style.width=c+"px";a.nWrapper.style.width=c+"px"},fnEqualiseHeights:function(a,b,c){var d=e(a+" tr",b),f;e(a+" tr",c).each(function(a){f=d.eq(a).css("height");"Microsoft Internet Explorer"==navigator.appName&&(f=parseInt(f,10)+1);e(this).css("height",f);d.eq(a).css("height",f)})}};FixedHeader.oWin={iScrollTop:0,iScrollRight:0,iScrollBottom:0,iScrollLeft:0,iHeight:0,iWidth:0};FixedHeader.oDoc={iHeight:0,iWidth:0};FixedHeader.afnScroll=[];FixedHeader.fnMeasure=function(){var a=
|
||||
e(j),b=e(k),c=FixedHeader.oWin,d=FixedHeader.oDoc;d.iHeight=b.height();d.iWidth=b.width();c.iHeight=a.height();c.iWidth=a.width();c.iScrollTop=a.scrollTop();c.iScrollLeft=a.scrollLeft();c.iScrollRight=d.iWidth-c.iScrollLeft-c.iWidth;c.iScrollBottom=d.iHeight-c.iScrollTop-c.iHeight};FixedHeader.version="2.1.2";e(j).scroll(function(){FixedHeader.fnMeasure();for(var a=0,b=FixedHeader.afnScroll.length;a<b;a++)FixedHeader.afnScroll[a]()});e.fn.dataTable.FixedHeader=FixedHeader;return e.fn.DataTable.FixedHeader=
|
||||
FixedHeader};"function"===typeof define&&define.amd?define(["jquery","datatables"],l):"object"===typeof exports?l(require("jquery"),require("datatables")):jQuery&&!jQuery.fn.dataTable.FixedHeader&&l(jQuery,jQuery.fn.dataTable)})(window,document);
|
||||
(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(g){return d(g,window,document)}):"object"===typeof exports?module.exports=function(g,h){g||(g=window);if(!h||!h.fn.dataTable)h=require("datatables.net")(g,h).$;return d(h,g,g.document)}:d(jQuery,window,document)})(function(d,g,h,k){var j=d.fn.dataTable,l=0,i=function(b,a){if(!(this instanceof i))throw"FixedHeader must be initialised with the 'new' keyword.";!0===a&&(a={});b=new j.Api(b);this.c=d.extend(!0,
|
||||
{},i.defaults,a);this.s={dt:b,position:{theadTop:0,tbodyTop:0,tfootTop:0,tfootBottom:0,width:0,left:0,tfootHeight:0,theadHeight:0,windowHeight:d(g).height(),visible:!0},headerMode:null,footerMode:null,autoWidth:b.settings()[0].oFeatures.bAutoWidth,namespace:".dtfc"+l++,scrollLeft:{header:-1,footer:-1},enable:!0};this.dom={floatingHeader:null,thead:d(b.table().header()),tbody:d(b.table().body()),tfoot:d(b.table().footer()),header:{host:null,floating:null,placeholder:null},footer:{host:null,floating:null,
|
||||
placeholder:null}};this.dom.header.host=this.dom.thead.parent();this.dom.footer.host=this.dom.tfoot.parent();var e=b.settings()[0];if(e._fixedHeader)throw"FixedHeader already initialised on table "+e.nTable.id;e._fixedHeader=this;this._constructor()};d.extend(i.prototype,{enable:function(b){this.s.enable=b;this.c.header&&this._modeChange("in-place","header",!0);this.c.footer&&this.dom.tfoot.length&&this._modeChange("in-place","footer",!0);this.update()},headerOffset:function(b){b!==k&&(this.c.headerOffset=
|
||||
b,this.update());return this.c.headerOffset},footerOffset:function(b){b!==k&&(this.c.footerOffset=b,this.update());return this.c.footerOffset},update:function(){this._positions();this._scroll(!0)},_constructor:function(){var b=this,a=this.s.dt;d(g).on("scroll"+this.s.namespace,function(){b._scroll()}).on("resize"+this.s.namespace,function(){b.s.position.windowHeight=d(g).height();b.update()});a.on("column-reorder.dt.dtfc column-visibility.dt.dtfc draw.dt.dtfc column-sizing.dt.dtfc",function(){b.update()});
|
||||
a.on("destroy.dtfc",function(){a.off(".dtfc");d(g).off(b.s.namespace)});this._positions();this._scroll()},_clone:function(b,a){var e=this.s.dt,c=this.dom[b],f="header"===b?this.dom.thead:this.dom.tfoot;!a&&c.floating?c.floating.removeClass("fixedHeader-floating fixedHeader-locked"):(c.floating&&(c.placeholder.remove(),this._unsize(b),c.floating.children().detach(),c.floating.remove()),c.floating=d(e.table().node().cloneNode(!1)).css("table-layout","fixed").removeAttr("id").append(f).appendTo("body"),
|
||||
c.placeholder=f.clone(!1),c.host.prepend(c.placeholder),this._matchWidths(c.placeholder,c.floating))},_matchWidths:function(b,a){var e=function(a){return d(a,b).map(function(){return d(this).width()}).toArray()},c=function(b,c){d(b,a).each(function(a){d(this).css({width:c[a],minWidth:c[a]})})},f=e("th"),e=e("td");c("th",f);c("td",e)},_unsize:function(b){var a=this.dom[b].floating;a&&("footer"===b||"header"===b&&!this.s.autoWidth)?d("th, td",a).css({width:"",minWidth:""}):a&&"header"===b&&d("th, td",
|
||||
a).css("min-width","")},_horizontal:function(b,a){var e=this.dom[b],c=this.s.position,d=this.s.scrollLeft;e.floating&&d[b]!==a&&(e.floating.css("left",c.left-a),d[b]=a)},_modeChange:function(b,a,d){var c=this.dom[a],f=this.s.position;if("in-place"===b){if(c.placeholder&&(c.placeholder.remove(),c.placeholder=null),this._unsize(a),"header"===a?c.host.prepend(this.dom.thead):c.host.append(this.dom.tfoot),c.floating)c.floating.remove(),c.floating=null}else"in"===b?(this._clone(a,d),c.floating.addClass("fixedHeader-floating").css("header"===
|
||||
a?"top":"bottom",this.c[a+"Offset"]).css("left",f.left+"px").css("width",f.width+"px"),"footer"===a&&c.floating.css("top","")):"below"===b?(this._clone(a,d),c.floating.addClass("fixedHeader-locked").css("top",f.tfootTop-f.theadHeight).css("left",f.left+"px").css("width",f.width+"px")):"above"===b&&(this._clone(a,d),c.floating.addClass("fixedHeader-locked").css("top",f.tbodyTop).css("left",f.left+"px").css("width",f.width+"px"));this.s.scrollLeft.header=-1;this.s.scrollLeft.footer=-1;this.s[a+"Mode"]=
|
||||
b},_positions:function(){var b=this.s.dt.table(),a=this.s.position,e=this.dom,b=d(b.node()),c=b.children("thead"),f=b.children("tfoot"),e=e.tbody;a.visible=b.is(":visible");a.width=b.outerWidth();a.left=b.offset().left;a.theadTop=c.offset().top;a.tbodyTop=e.offset().top;a.theadHeight=a.tbodyTop-a.theadTop;f.length?(a.tfootTop=f.offset().top,a.tfootBottom=a.tfootTop+f.outerHeight(),a.tfootHeight=a.tfootBottom-a.tfootTop):(a.tfootTop=a.tbodyTop+e.outerHeight(),a.tfootBottom=a.tfootTop,a.tfootHeight=
|
||||
a.tfootTop)},_scroll:function(b){var a=d(h).scrollTop(),e=d(h).scrollLeft(),c=this.s.position,f;if(this.s.enable&&(this.c.header&&(f=!c.visible||a<=c.theadTop-this.c.headerOffset?"in-place":a<=c.tfootTop-c.theadHeight-this.c.headerOffset?"in":"below",(b||f!==this.s.headerMode)&&this._modeChange(f,"header",b),this._horizontal("header",e)),this.c.footer&&this.dom.tfoot.length))a=!c.visible||a+c.windowHeight>=c.tfootBottom+this.c.footerOffset?"in-place":c.windowHeight+a>c.tbodyTop+c.tfootHeight+this.c.footerOffset?
|
||||
"in":"above",(b||a!==this.s.footerMode)&&this._modeChange(a,"footer",b),this._horizontal("footer",e)}});i.version="3.1.1";i.defaults={header:!0,footer:!1,headerOffset:0,footerOffset:0};d.fn.dataTable.FixedHeader=i;d.fn.DataTable.FixedHeader=i;d(h).on("init.dt.dtfh",function(b,a){if("dt"===b.namespace){var e=a.oInit.fixedHeader,c=j.defaults.fixedHeader;if((e||c)&&!a._fixedHeader)c=d.extend({},c,e),!1!==e&&new i(a,c)}});j.Api.register("fixedHeader()",function(){});j.Api.register("fixedHeader.adjust()",
|
||||
function(){return this.iterator("table",function(b){(b=b._fixedHeader)&&b.update()})});j.Api.register("fixedHeader.enable()",function(b){return this.iterator("table",function(a){(a=a._fixedHeader)&&a.enable(b!==k?b:!0)})});j.Api.register("fixedHeader.disable()",function(){return this.iterator("table",function(b){(b=b._fixedHeader)&&b.enable(!1)})});d.each(["header","footer"],function(b,a){j.Api.register("fixedHeader."+a+"Offset()",function(b){var c=this.context;return b===k?c.length&&c[0]._fixedHeader?
|
||||
c[0]._fixedHeader[a+"Offset"]():k:this.iterator("table",function(c){if(c=c._fixedHeader)c[a+"Offset"](b)})})});return i});
|
||||
|
||||
@ -0,0 +1,22 @@
|
||||
MIT license
|
||||
|
||||
Copyright (c) 2009-2015 SpryMedia Limited
|
||||
http://datatables.net
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
@ -0,0 +1,39 @@
|
||||
# KeyTable
|
||||
|
||||
KeyTable provides Excel like cell navigation on any table. Events (focus, blur, action etc) can be assigned to individual cells, columns, rows or all cells.
|
||||
|
||||
|
||||
# Installation
|
||||
|
||||
To use KeyTable the primary way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/keytable/) for full details.
|
||||
|
||||
## NPM and Bower
|
||||
|
||||
If you prefer to use a package manager such as NPM or Bower, distribution repositories are available with software built from this repository under the name `datatables.net-keytable`. Styling packages for Bootstrap, Foundation and other styling libraries are also available by adding a suffix to the package name.
|
||||
|
||||
Please see the DataTables [NPM](//datatables.net/download/npm) and [Bower](//datatables.net/download/bower) installation pages for further information. The [DataTables installation manual](//datatables.net/manual/installation) also has details on how to use package managers with DataTables.
|
||||
|
||||
|
||||
# Basic usage
|
||||
|
||||
KeyTable is initialised using the `keys` option in the DataTables constructor - a simple boolean `true` will enable the feature. Further options can be specified using this option as an object - see the documentation for details.
|
||||
|
||||
```js
|
||||
$(document).ready( function () {
|
||||
$('#myTable').DataTable( {
|
||||
keys: true
|
||||
} );
|
||||
} );
|
||||
```
|
||||
|
||||
|
||||
# Documentation / support
|
||||
|
||||
* [Documentation](https://datatables.net/extensions/keytable/)
|
||||
* [DataTables support forums](http://datatables.net/forums)
|
||||
|
||||
|
||||
# GitHub
|
||||
|
||||
If you fancy getting involved with the development of KeyTable and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/KeyTable).
|
||||
|
||||
@ -0,0 +1,5 @@
|
||||
table.dataTable th.focus,
|
||||
table.dataTable td.focus {
|
||||
outline: 3px solid #337ab7;
|
||||
outline-offset: -1px;
|
||||
}
|
||||
1
htdocs/includes/jquery/plugins/datatables/extensions/KeyTable/css/keyTable.bootstrap.min.css
vendored
Normal file
1
htdocs/includes/jquery/plugins/datatables/extensions/KeyTable/css/keyTable.bootstrap.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
table.dataTable th.focus,table.dataTable td.focus{outline:3px solid #337ab7;outline-offset:-1px}
|
||||
@ -0,0 +1,5 @@
|
||||
table.dataTable th.focus,
|
||||
table.dataTable td.focus {
|
||||
outline: 3px solid #3366FF;
|
||||
outline-offset: -1px;
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
table.dataTable th.focus,table.dataTable td.focus{outline:3px solid #3366FF;outline-offset:-1px}
|
||||
@ -0,0 +1,5 @@
|
||||
table.dataTable th.focus,
|
||||
table.dataTable td.focus {
|
||||
outline: 3px solid #008CBA;
|
||||
outline-offset: -1px;
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
table.dataTable th.focus,table.dataTable td.focus{outline:3px solid #008CBA;outline-offset:-1px}
|
||||
@ -0,0 +1,5 @@
|
||||
table.dataTable th.focus,
|
||||
table.dataTable td.focus {
|
||||
outline: 3px solid #3366FF;
|
||||
outline-offset: -1px;
|
||||
}
|
||||
1
htdocs/includes/jquery/plugins/datatables/extensions/KeyTable/css/keyTable.jqueryui.min.css
vendored
Normal file
1
htdocs/includes/jquery/plugins/datatables/extensions/KeyTable/css/keyTable.jqueryui.min.css
vendored
Normal file
@ -0,0 +1 @@
|
||||
table.dataTable th.focus,table.dataTable td.focus{outline:3px solid #3366FF;outline-offset:-1px}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user