bootswatch_rails 3.3.4.1 → 3.3.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/datatables/DataTables-1.10.9.zip +0 -0
- data/generate.sh +31 -23
- data/lib/bootswatch_rails/engine.rb +1 -1
- data/lib/bootswatch_rails/version.rb +6 -6
- data/vendor/assets/javascripts/dataTables.responsive.js +16 -7
- data/vendor/assets/javascripts/jquery.dataTables.js +574 -324
- data/vendor/assets/stylesheets/cerulean.css +306 -83
- data/vendor/assets/stylesheets/cosmo.css +328 -84
- data/vendor/assets/stylesheets/custom.css +303 -83
- data/vendor/assets/stylesheets/cyborg.css +333 -83
- data/vendor/assets/stylesheets/darkly.css +325 -93
- data/vendor/assets/stylesheets/flatly.css +316 -84
- data/vendor/assets/stylesheets/journal.css +328 -84
- data/vendor/assets/stylesheets/jquery.dataTables.css +58 -95
- data/vendor/assets/stylesheets/lumen.css +327 -83
- data/vendor/assets/stylesheets/paper.css +464 -168
- data/vendor/assets/stylesheets/readable.css +303 -83
- data/vendor/assets/stylesheets/{dataTables.responsive.css → responsive.dataTables.css} +0 -0
- data/vendor/assets/stylesheets/sandstone.css +303 -83
- data/vendor/assets/stylesheets/simplex.css +334 -87
- data/vendor/assets/stylesheets/slate.css +327 -83
- data/vendor/assets/stylesheets/spacelab.css +306 -83
- data/vendor/assets/stylesheets/superhero.css +328 -84
- data/vendor/assets/stylesheets/united.css +309 -84
- data/vendor/assets/stylesheets/yeti.css +310 -88
- metadata +5 -7
- data/.gitmodules +0 -3
- data/datatables/DataTables-1.10.4.zip +0 -0
- data/datatables/DataTables-1.10.6.zip +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fcf441dece37acb641b61d7e05e90a52c4b838f7
|
4
|
+
data.tar.gz: 4349e23a547afbed1af9f5afffd2f8bd11e89776
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79536b9f9c49b55a1353654a15b290199a1c79b21004a3ebb0b269833bcdde5d3c41b3aaf4f125dbc4f459651846061745bf0cd7727640b0e5ff1dd0bed3c550
|
7
|
+
data.tar.gz: 8521c0b3ab49cf00fe97225f256810941b9fd79b60616a5b4e8af19b17bd60391e442845ee1c3714c4a194ee6dfbde3b152d1d9eae3df60adf72270af08713d8
|
Binary file
|
data/generate.sh
CHANGED
@@ -11,7 +11,15 @@
|
|
11
11
|
set -e
|
12
12
|
|
13
13
|
if [ "$1" != "local" ] ; then
|
14
|
-
|
14
|
+
if [ -d ../bootswatch ] ; then
|
15
|
+
pushd ../bootswatch
|
16
|
+
git pull
|
17
|
+
popd
|
18
|
+
else
|
19
|
+
pushd ..
|
20
|
+
git clone https://github.com/thomaspark/bootswatch.git
|
21
|
+
popd
|
22
|
+
fi
|
15
23
|
fi
|
16
24
|
|
17
25
|
_assets="vendor/assets"
|
@@ -27,17 +35,17 @@ done
|
|
27
35
|
|
28
36
|
_themes_css=""
|
29
37
|
_themes_raw=""
|
30
|
-
for _file in $(ls -1 bootswatch/*/bootstrap.css) ; do
|
31
|
-
_file=${_file
|
38
|
+
for _file in $(ls -1 ../bootswatch/*/bootstrap.css) ; do
|
39
|
+
_file=${_file#../bootswatch/}
|
32
40
|
_theme=${_file%/bootstrap.css}
|
33
|
-
_src="bootswatch/$_file"
|
41
|
+
_src="../bootswatch/$_file"
|
34
42
|
_dst="$_assets/stylesheets/$_theme.css"
|
35
43
|
rm -f /tmp/css.tmp
|
36
44
|
sed -e 's#\.\./fonts/#/assets/#g' $_src >/tmp/css.tmp
|
37
45
|
if cmp -s /tmp/css.tmp $_dst ; then
|
38
46
|
rm -f /tmp/css.tmp
|
39
47
|
else
|
40
|
-
echo "
|
48
|
+
echo "copy1: $_theme.css"
|
41
49
|
mv /tmp/css.tmp $_dst
|
42
50
|
fi
|
43
51
|
if [ -z "$_themes_css" ] ; then
|
@@ -57,8 +65,8 @@ done
|
|
57
65
|
###### Setup DataTables
|
58
66
|
#################################################################################
|
59
67
|
|
60
|
-
DT_VER="1.10.
|
61
|
-
DT_RESP="1.0.
|
68
|
+
DT_VER="1.10.9"
|
69
|
+
DT_RESP="1.0.7"
|
62
70
|
|
63
71
|
if [ "$1" != "local" ] ; then
|
64
72
|
wget -N -P datatables "http://datatables.net/releases/DataTables-$DT_VER.zip"
|
@@ -70,14 +78,14 @@ unzip -q -d /tmp datatables/DataTables-$DT_VER.zip
|
|
70
78
|
_src="/tmp/DataTables-$DT_VER/media/js/jquery.dataTables.js"
|
71
79
|
_dst="$_assets/javascripts/jquery.dataTables.js"
|
72
80
|
if ! cmp -s $_src $_dst ; then
|
73
|
-
echo "
|
81
|
+
echo "copy2: jquery.dataTables.js"
|
74
82
|
cp $_src $_dst
|
75
83
|
fi
|
76
84
|
|
77
85
|
_src="/tmp/DataTables-$DT_VER/extensions/Responsive/js/dataTables.responsive.js"
|
78
86
|
_dst="$_assets/javascripts/dataTables.responsive.js"
|
79
87
|
if ! cmp -s $_src $_dst ; then
|
80
|
-
echo "
|
88
|
+
echo "copy3: dataTables.responsive.js"
|
81
89
|
cp $_src $_dst
|
82
90
|
fi
|
83
91
|
|
@@ -88,21 +96,21 @@ sed -e 's#\.\./images/#/assets/#g' $_src >/tmp/css.tmp
|
|
88
96
|
if cmp -s /tmp/css.tmp $_dst ; then
|
89
97
|
rm -f /tmp/css.tmp
|
90
98
|
else
|
91
|
-
echo "
|
99
|
+
echo "copy4: jquery.dataTables.css"
|
92
100
|
mv /tmp/css.tmp $_dst
|
93
101
|
fi
|
94
102
|
|
95
|
-
_src="/tmp/DataTables-$DT_VER/extensions/Responsive/css/dataTables.
|
96
|
-
_dst="$_assets/stylesheets/dataTables.
|
103
|
+
_src="/tmp/DataTables-$DT_VER/extensions/Responsive/css/responsive.dataTables.css"
|
104
|
+
_dst="$_assets/stylesheets/responsive.dataTables.css"
|
97
105
|
rm -f /tmp/css.tmp
|
98
106
|
sed -e 's#\.\./images/#/assets/#g' $_src >/tmp/css.tmp
|
99
107
|
if cmp -s /tmp/css.tmp $_dst ; then
|
100
108
|
rm -f /tmp/css.tmp
|
101
109
|
else
|
102
|
-
echo "
|
110
|
+
echo "copy5: responsive.dataTables.css"
|
103
111
|
mv /tmp/css.tmp $_dst
|
104
112
|
fi
|
105
|
-
_themes_css="jquery.dataTables.css dataTables.
|
113
|
+
_themes_css="jquery.dataTables.css responsive.dataTables.css $_themes_css"
|
106
114
|
|
107
115
|
|
108
116
|
#################################################################################
|
@@ -114,7 +122,7 @@ for _file in /tmp/DataTables-$DT_VER/media/images/*.png ; do
|
|
114
122
|
_src="/tmp/DataTables-$DT_VER/media/images/$_file"
|
115
123
|
_dst="$_assets/images/$_file"
|
116
124
|
if ! cmp -s $_src $_dst ; then
|
117
|
-
echo "
|
125
|
+
echo "copy6: $_file"
|
118
126
|
cp $_src $_dst
|
119
127
|
fi
|
120
128
|
done
|
@@ -133,7 +141,7 @@ if [ -s $_engine ] ; then
|
|
133
141
|
if cmp -s /tmp/engine.tmp $_engine ; then
|
134
142
|
rm -f /tmp/engine.tmp
|
135
143
|
else
|
136
|
-
echo "
|
144
|
+
echo "edit1: $_engine"
|
137
145
|
mv /tmp/engine.tmp $_engine
|
138
146
|
fi
|
139
147
|
fi
|
@@ -152,7 +160,7 @@ if [ -s $_version ] ; then
|
|
152
160
|
if cmp -s /tmp/version.tmp $_version ; then
|
153
161
|
rm -f /tmp/version.tmp
|
154
162
|
else
|
155
|
-
echo "
|
163
|
+
echo "edit2: $_version"
|
156
164
|
mv /tmp/version.tmp $_version
|
157
165
|
fi
|
158
166
|
fi
|
@@ -162,12 +170,12 @@ fi
|
|
162
170
|
###### Copy font files
|
163
171
|
#################################################################################
|
164
172
|
|
165
|
-
for _file in bootswatch/fonts/*.* ; do
|
173
|
+
for _file in ../bootswatch/fonts/*.* ; do
|
166
174
|
_file=${_file##*/}
|
167
|
-
_src="bootswatch/fonts/$_file"
|
175
|
+
_src="../bootswatch/fonts/$_file"
|
168
176
|
_dst="$_assets/fonts/$_file"
|
169
177
|
if ! cmp -s $_src $_dst ; then
|
170
|
-
echo "
|
178
|
+
echo "copy7: $_file"
|
171
179
|
cp $_src $_dst
|
172
180
|
fi
|
173
181
|
done
|
@@ -184,7 +192,7 @@ if [ -s cleditor/jquery.cleditor.js ] ; then
|
|
184
192
|
if cmp -s /tmp/cleditor.tmp $_dst ; then
|
185
193
|
rm -f /tmp/cleditor.tmp
|
186
194
|
else
|
187
|
-
echo "
|
195
|
+
echo "edit3: $_dst"
|
188
196
|
mv /tmp/cleditor.tmp $_dst
|
189
197
|
fi
|
190
198
|
|
@@ -195,7 +203,7 @@ if [ -s cleditor/jquery.cleditor.js ] ; then
|
|
195
203
|
if cmp -s /tmp/cleditor.tmp $_dst ; then
|
196
204
|
rm -f /tmp/cleditor.tmp
|
197
205
|
else
|
198
|
-
echo "
|
206
|
+
echo "edit4: $_dst"
|
199
207
|
mv /tmp/cleditor.tmp $_dst
|
200
208
|
fi
|
201
209
|
|
@@ -203,7 +211,7 @@ if [ -s cleditor/jquery.cleditor.js ] ; then
|
|
203
211
|
for _file in toolbar.gif buttons.gif ; do
|
204
212
|
_src="cleditor/images/$_file"
|
205
213
|
if ! cmp -s $_src $_dir/$_file ; then
|
206
|
-
echo "
|
214
|
+
echo "copy8: $_src"
|
207
215
|
cp $_src $_dir/$_file
|
208
216
|
fi
|
209
217
|
done
|
@@ -54,7 +54,7 @@ module BootswatchRails
|
|
54
54
|
ActiveSupport.on_load(:action_view) do
|
55
55
|
include BootswatchRails::ActionViewExtensions
|
56
56
|
end
|
57
|
-
app.config.assets.precompile += %w(jquery.dataTables.css dataTables.
|
57
|
+
app.config.assets.precompile += %w(jquery.dataTables.css responsive.dataTables.css cerulean.css cosmo.css custom.css cyborg.css darkly.css flatly.css journal.css lumen.css paper.css readable.css sandstone.css simplex.css slate.css spacelab.css superhero.css united.css yeti.css)
|
58
58
|
app.config.assets.paths << File.expand_path('../../../vendor/assets/fonts', __FILE__)
|
59
59
|
end
|
60
60
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module BootswatchRails
|
2
|
-
BOOTSTRAP = "3.3.
|
3
|
-
BOOTSWATCH = "3.3.
|
4
|
-
FONT_AWESOME = "4.
|
5
|
-
DATATABLES = "1.10.
|
6
|
-
RESPONSIVE = "1.0.
|
7
|
-
VERSION = "3.3.
|
2
|
+
BOOTSTRAP = "3.3.5"
|
3
|
+
BOOTSWATCH = "3.3.5"
|
4
|
+
FONT_AWESOME = "4.4.0"
|
5
|
+
DATATABLES = "1.10.9"
|
6
|
+
RESPONSIVE = "1.0.7"
|
7
|
+
VERSION = "3.3.5.1"
|
8
8
|
|
9
9
|
THEMES = [:cerulean, :cosmo, :custom, :cyborg, :darkly, :flatly, :journal, :lumen, :paper, :readable, :sandstone, :simplex, :slate, :spacelab, :superhero, :united, :yeti]
|
10
10
|
DEFAULT = 0
|
@@ -1,11 +1,11 @@
|
|
1
|
-
/*! Responsive 1.0.
|
1
|
+
/*! Responsive 1.0.7
|
2
2
|
* 2014-2015 SpryMedia Ltd - datatables.net/license
|
3
3
|
*/
|
4
4
|
|
5
5
|
/**
|
6
6
|
* @summary Responsive
|
7
7
|
* @description Responsive tables plug-in for DataTables
|
8
|
-
* @version 1.0.
|
8
|
+
* @version 1.0.7
|
9
9
|
* @file dataTables.responsive.js
|
10
10
|
* @author SpryMedia Ltd (www.sprymedia.co.uk)
|
11
11
|
* @contact www.sprymedia.co.uk/contact
|
@@ -646,14 +646,25 @@ Responsive.prototype = {
|
|
646
646
|
.append( cells )
|
647
647
|
.appendTo( clonedHeader );
|
648
648
|
|
649
|
+
// In the inline case extra padding is applied to the first column to
|
650
|
+
// give space for the show / hide icon. We need to use this in the
|
651
|
+
// calculation
|
652
|
+
if ( this.c.details.type === 'inline' ) {
|
653
|
+
$(clonedTable).addClass( 'dtr-inline collapsed' );
|
654
|
+
}
|
655
|
+
|
649
656
|
var inserted = $('<div/>')
|
650
657
|
.css( {
|
651
658
|
width: 1,
|
652
659
|
height: 1,
|
653
660
|
overflow: 'hidden'
|
654
661
|
} )
|
655
|
-
.append( clonedTable )
|
656
|
-
|
662
|
+
.append( clonedTable );
|
663
|
+
|
664
|
+
// Remove columns which are not to be included
|
665
|
+
inserted.find('th.never, td.never').remove();
|
666
|
+
|
667
|
+
inserted.insertBefore( dt.table().node() );
|
657
668
|
|
658
669
|
// The cloned header now contains the smallest that each column can be
|
659
670
|
dt.columns().eq(0).each( function ( idx ) {
|
@@ -815,7 +826,7 @@ Api.register( 'responsive.recalc()', function () {
|
|
815
826
|
* @name Responsive.version
|
816
827
|
* @static
|
817
828
|
*/
|
818
|
-
Responsive.version = '1.0.
|
829
|
+
Responsive.version = '1.0.7';
|
819
830
|
|
820
831
|
|
821
832
|
$.fn.dataTable.Responsive = Responsive;
|
@@ -833,8 +844,6 @@ $(document).on( 'init.dt.dtr', function (e, settings, json) {
|
|
833
844
|
settings.oInit.responsive ||
|
834
845
|
DataTable.defaults.responsive
|
835
846
|
) {
|
836
|
-
console.log( e.namespace );
|
837
|
-
|
838
847
|
var init = settings.oInit.responsive;
|
839
848
|
|
840
849
|
if ( init !== false ) {
|
@@ -1,15 +1,15 @@
|
|
1
|
-
/*! DataTables 1.10.
|
2
|
-
* ©2008-
|
1
|
+
/*! DataTables 1.10.9
|
2
|
+
* ©2008-2015 SpryMedia Ltd - datatables.net/license
|
3
3
|
*/
|
4
4
|
|
5
5
|
/**
|
6
6
|
* @summary DataTables
|
7
7
|
* @description Paginate, search and order HTML tables
|
8
|
-
* @version 1.10.
|
8
|
+
* @version 1.10.9
|
9
9
|
* @file jquery.dataTables.js
|
10
10
|
* @author SpryMedia Ltd (www.sprymedia.co.uk)
|
11
11
|
* @contact www.sprymedia.co.uk/contact
|
12
|
-
* @copyright Copyright 2008-
|
12
|
+
* @copyright Copyright 2008-2015 SpryMedia Ltd.
|
13
13
|
*
|
14
14
|
* This source file is free software, available under the following license:
|
15
15
|
* MIT license - http://datatables.net/license
|
@@ -22,7 +22,7 @@
|
|
22
22
|
*/
|
23
23
|
|
24
24
|
/*jslint evil: true, undef: true, browser: true */
|
25
|
-
/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,
|
25
|
+
/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidate,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/
|
26
26
|
|
27
27
|
(/** @lends <global> */function( window, document, undefined ) {
|
28
28
|
|
@@ -33,10 +33,10 @@
|
|
33
33
|
// Define as an AMD module if possible
|
34
34
|
define( 'datatables', ['jquery'], factory );
|
35
35
|
}
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
else if ( typeof exports === 'object' ) {
|
37
|
+
// Node/CommonJS
|
38
|
+
module.exports = factory( require( 'jquery' ) );
|
39
|
+
}
|
40
40
|
else if ( jQuery && !jQuery.fn.dataTable ) {
|
41
41
|
// Define using browser globals otherwise
|
42
42
|
// Prevent multiple instantiations if the script is loaded twice
|
@@ -467,6 +467,11 @@
|
|
467
467
|
_fnCompatMap( init, 'pageLength', 'iDisplayLength' );
|
468
468
|
_fnCompatMap( init, 'searching', 'bFilter' );
|
469
469
|
|
470
|
+
// Boolean initialisation of x-scrolling
|
471
|
+
if ( typeof init.sScrollX === 'boolean' ) {
|
472
|
+
init.sScrollX = init.sScrollX ? '100%' : '';
|
473
|
+
}
|
474
|
+
|
470
475
|
// Column search objects are in an array, so it needs to be converted
|
471
476
|
// element by element
|
472
477
|
var searchCols = init.aoSearchCols;
|
@@ -509,49 +514,76 @@
|
|
509
514
|
*/
|
510
515
|
function _fnBrowserDetect( settings )
|
511
516
|
{
|
512
|
-
|
517
|
+
// We don't need to do this every time DataTables is constructed, the values
|
518
|
+
// calculated are specific to the browser and OS configuration which we
|
519
|
+
// don't expect to change between initialisations
|
520
|
+
if ( ! DataTable.__browser ) {
|
521
|
+
var browser = {};
|
522
|
+
DataTable.__browser = browser;
|
523
|
+
|
524
|
+
// Scrolling feature / quirks detection
|
525
|
+
var n = $('<div/>')
|
526
|
+
.css( {
|
527
|
+
position: 'fixed',
|
528
|
+
top: 0,
|
529
|
+
left: 0,
|
530
|
+
height: 1,
|
531
|
+
width: 1,
|
532
|
+
overflow: 'hidden'
|
533
|
+
} )
|
534
|
+
.append(
|
535
|
+
$('<div/>')
|
536
|
+
.css( {
|
537
|
+
position: 'absolute',
|
538
|
+
top: 1,
|
539
|
+
left: 1,
|
540
|
+
width: 100,
|
541
|
+
overflow: 'scroll'
|
542
|
+
} )
|
543
|
+
.append(
|
544
|
+
$('<div/>')
|
545
|
+
.css( {
|
546
|
+
width: '100%',
|
547
|
+
height: 10
|
548
|
+
} )
|
549
|
+
)
|
550
|
+
)
|
551
|
+
.appendTo( 'body' );
|
513
552
|
|
514
|
-
|
515
|
-
|
516
|
-
.css( {
|
517
|
-
position: 'absolute',
|
518
|
-
top: 0,
|
519
|
-
left: 0,
|
520
|
-
height: 1,
|
521
|
-
width: 1,
|
522
|
-
overflow: 'hidden'
|
523
|
-
} )
|
524
|
-
.append(
|
525
|
-
$('<div/>')
|
526
|
-
.css( {
|
527
|
-
position: 'absolute',
|
528
|
-
top: 1,
|
529
|
-
left: 1,
|
530
|
-
width: 100,
|
531
|
-
overflow: 'scroll'
|
532
|
-
} )
|
533
|
-
.append(
|
534
|
-
$('<div class="test"/>')
|
535
|
-
.css( {
|
536
|
-
width: '100%',
|
537
|
-
height: 10
|
538
|
-
} )
|
539
|
-
)
|
540
|
-
)
|
541
|
-
.appendTo( 'body' );
|
553
|
+
var outer = n.children();
|
554
|
+
var inner = outer.children();
|
542
555
|
|
543
|
-
|
556
|
+
// Numbers below, in order, are:
|
557
|
+
// inner.offsetWidth, inner.clientWidth, outer.offsetWidth, outer.clientWidth
|
558
|
+
//
|
559
|
+
// IE6 XP: 100 100 100 83
|
560
|
+
// IE7 Vista: 100 100 100 83
|
561
|
+
// IE 8+ Windows: 83 83 100 83
|
562
|
+
// Evergreen Windows: 83 83 100 83
|
563
|
+
// Evergreen Mac with scrollbars: 85 85 100 85
|
564
|
+
// Evergreen Mac without scrollbars: 100 100 100 100
|
544
565
|
|
545
|
-
|
546
|
-
|
547
|
-
// element is contained without forcing scrolling
|
548
|
-
browser.bScrollOversize = test[0].offsetWidth === 100;
|
566
|
+
// Get scrollbar width
|
567
|
+
browser.barWidth = outer[0].offsetWidth - outer[0].clientWidth;
|
549
568
|
|
550
|
-
|
551
|
-
|
552
|
-
|
569
|
+
// IE6/7 will oversize a width 100% element inside a scrolling element, to
|
570
|
+
// include the width of the scrollbar, while other browsers ensure the inner
|
571
|
+
// element is contained without forcing scrolling
|
572
|
+
//console.log( inner.offsetWidth );
|
573
|
+
browser.bScrollOversize = inner[0].offsetWidth === 100 && outer[0].clientWidth !== 100;
|
553
574
|
|
554
|
-
|
575
|
+
// In rtl text layout, some browsers (most, but not all) will place the
|
576
|
+
// scrollbar on the left, rather than the right.
|
577
|
+
browser.bScrollbarLeft = Math.round( inner.offset().left ) !== 1;
|
578
|
+
|
579
|
+
// IE8- don't provide height and width for getBoundingClientRect
|
580
|
+
browser.bBounding = n[0].getBoundingClientRect().width ? true : false;
|
581
|
+
|
582
|
+
n.remove();
|
583
|
+
}
|
584
|
+
|
585
|
+
$.extend( settings.oBrowser, DataTable.__browser );
|
586
|
+
settings.oScroll.iBarWidth = DataTable.__browser.barWidth;
|
555
587
|
}
|
556
588
|
|
557
589
|
|
@@ -1008,7 +1040,8 @@
|
|
1008
1040
|
/* Create the object for storing information about this new row */
|
1009
1041
|
var iRow = oSettings.aoData.length;
|
1010
1042
|
var oData = $.extend( true, {}, DataTable.models.oRow, {
|
1011
|
-
src: nTr ? 'dom' : 'data'
|
1043
|
+
src: nTr ? 'dom' : 'data',
|
1044
|
+
idx: iRow
|
1012
1045
|
} );
|
1013
1046
|
|
1014
1047
|
oData._aData = aDataIn;
|
@@ -1017,20 +1050,21 @@
|
|
1017
1050
|
/* Create the cells */
|
1018
1051
|
var nTd, sThisType;
|
1019
1052
|
var columns = oSettings.aoColumns;
|
1053
|
+
|
1054
|
+
// Invalidate the column types as the new data needs to be revalidated
|
1020
1055
|
for ( var i=0, iLen=columns.length ; i<iLen ; i++ )
|
1021
1056
|
{
|
1022
|
-
// When working with a row, the data source object must be populated. In
|
1023
|
-
// all other cases, the data source object is already populated, so we
|
1024
|
-
// don't overwrite it, which might break bindings etc
|
1025
|
-
if ( nTr ) {
|
1026
|
-
_fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) );
|
1027
|
-
}
|
1028
1057
|
columns[i].sType = null;
|
1029
1058
|
}
|
1030
1059
|
|
1031
1060
|
/* Add to the display array */
|
1032
1061
|
oSettings.aiDisplayMaster.push( iRow );
|
1033
1062
|
|
1063
|
+
var id = oSettings.rowIdFn( aDataIn );
|
1064
|
+
if ( id !== undefined ) {
|
1065
|
+
oSettings.aIds[ id ] = oData;
|
1066
|
+
}
|
1067
|
+
|
1034
1068
|
/* Create the DOM information, or register it if already present */
|
1035
1069
|
if ( nTr || ! oSettings.oFeatures.bDeferRender )
|
1036
1070
|
{
|
@@ -1174,7 +1208,7 @@
|
|
1174
1208
|
*/
|
1175
1209
|
function _fnSplitObjNotation( str )
|
1176
1210
|
{
|
1177
|
-
return $.map( str.match(/(\\.|[^\.])+/g), function ( s ) {
|
1211
|
+
return $.map( str.match(/(\\.|[^\.])+/g) || [''], function ( s ) {
|
1178
1212
|
return s.replace(/\\./g, '.');
|
1179
1213
|
} );
|
1180
1214
|
}
|
@@ -1257,8 +1291,10 @@
|
|
1257
1291
|
innerSrc = a.join('.');
|
1258
1292
|
|
1259
1293
|
// Traverse each entry in the array getting the properties requested
|
1260
|
-
|
1261
|
-
|
1294
|
+
if ( $.isArray( data ) ) {
|
1295
|
+
for ( var j=0, jLen=data.length ; j<jLen ; j++ ) {
|
1296
|
+
out.push( fetchData( data[j], type, innerSrc ) );
|
1297
|
+
}
|
1262
1298
|
}
|
1263
1299
|
|
1264
1300
|
// If a string is given in between the array notation indicators, that
|
@@ -1358,11 +1394,21 @@
|
|
1358
1394
|
innerSrc = b.join('.');
|
1359
1395
|
|
1360
1396
|
// Traverse each entry in the array setting the properties requested
|
1361
|
-
|
1397
|
+
if ( $.isArray( val ) )
|
1398
|
+
{
|
1399
|
+
for ( var j=0, jLen=val.length ; j<jLen ; j++ )
|
1400
|
+
{
|
1401
|
+
o = {};
|
1402
|
+
setData( o, val[j], innerSrc );
|
1403
|
+
data[ a[i] ].push( o );
|
1404
|
+
}
|
1405
|
+
}
|
1406
|
+
else
|
1362
1407
|
{
|
1363
|
-
|
1364
|
-
|
1365
|
-
|
1408
|
+
// We've been asked to save data to an array, but it
|
1409
|
+
// isn't array data to be saved. Best that can be done
|
1410
|
+
// is to just save the value.
|
1411
|
+
data[ a[i] ] = val;
|
1366
1412
|
}
|
1367
1413
|
|
1368
1414
|
// The inner call to setData has already traversed through the remainder
|
@@ -1435,6 +1481,7 @@
|
|
1435
1481
|
settings.aoData.length = 0;
|
1436
1482
|
settings.aiDisplayMaster.length = 0;
|
1437
1483
|
settings.aiDisplay.length = 0;
|
1484
|
+
settings.aIds = {};
|
1438
1485
|
}
|
1439
1486
|
|
1440
1487
|
|
@@ -1540,7 +1587,7 @@
|
|
1540
1587
|
}
|
1541
1588
|
|
1542
1589
|
// Update DataTables special `DT_*` attributes for the row
|
1543
|
-
_fnRowAttributes( row );
|
1590
|
+
_fnRowAttributes( settings, row );
|
1544
1591
|
}
|
1545
1592
|
}
|
1546
1593
|
|
@@ -1572,7 +1619,11 @@
|
|
1572
1619
|
objectRead = settings._rowReadObject;
|
1573
1620
|
|
1574
1621
|
// Allow the data object to be passed in, or construct
|
1575
|
-
d = d
|
1622
|
+
d = d !== undefined ?
|
1623
|
+
d :
|
1624
|
+
objectRead ?
|
1625
|
+
{} :
|
1626
|
+
[];
|
1576
1627
|
|
1577
1628
|
var attr = function ( str, td ) {
|
1578
1629
|
if ( typeof str === 'string' ) {
|
@@ -1635,12 +1686,23 @@
|
|
1635
1686
|
else {
|
1636
1687
|
// Existing row object passed in
|
1637
1688
|
tds = row.anCells;
|
1638
|
-
|
1689
|
+
|
1639
1690
|
for ( var j=0, jen=tds.length ; j<jen ; j++ ) {
|
1640
1691
|
cellProcess( tds[j] );
|
1641
1692
|
}
|
1642
1693
|
}
|
1643
1694
|
|
1695
|
+
// Read the ID from the DOM if present
|
1696
|
+
var rowNode = td ? row : row.nTr;
|
1697
|
+
|
1698
|
+
if ( rowNode ) {
|
1699
|
+
var id = rowNode.getAttribute( 'id' );
|
1700
|
+
|
1701
|
+
if ( id ) {
|
1702
|
+
_fnSetObjectDataFn( settings.rowId )( d, id );
|
1703
|
+
}
|
1704
|
+
}
|
1705
|
+
|
1644
1706
|
return {
|
1645
1707
|
data: d,
|
1646
1708
|
cells: tds
|
@@ -1678,7 +1740,7 @@
|
|
1678
1740
|
nTr._DT_RowIndex = iRow;
|
1679
1741
|
|
1680
1742
|
/* Special parameters can be given by the data source to be used on the row */
|
1681
|
-
_fnRowAttributes( row );
|
1743
|
+
_fnRowAttributes( oSettings, row );
|
1682
1744
|
|
1683
1745
|
/* Process each column */
|
1684
1746
|
for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
@@ -1730,17 +1792,20 @@
|
|
1730
1792
|
/**
|
1731
1793
|
* Add attributes to a row based on the special `DT_*` parameters in a data
|
1732
1794
|
* source object.
|
1795
|
+
* @param {object} settings DataTables settings object
|
1733
1796
|
* @param {object} DataTables row object for the row to be modified
|
1734
1797
|
* @memberof DataTable#oApi
|
1735
1798
|
*/
|
1736
|
-
function _fnRowAttributes( row )
|
1799
|
+
function _fnRowAttributes( settings, row )
|
1737
1800
|
{
|
1738
1801
|
var tr = row.nTr;
|
1739
1802
|
var data = row._aData;
|
1740
1803
|
|
1741
1804
|
if ( tr ) {
|
1742
|
-
|
1743
|
-
|
1805
|
+
var id = settings.rowIdFn( data );
|
1806
|
+
|
1807
|
+
if ( id ) {
|
1808
|
+
tr.id = id;
|
1744
1809
|
}
|
1745
1810
|
|
1746
1811
|
if ( data.DT_RowClass ) {
|
@@ -1805,7 +1870,7 @@
|
|
1805
1870
|
}
|
1806
1871
|
}
|
1807
1872
|
|
1808
|
-
if ( column.sTitle != cell.
|
1873
|
+
if ( column.sTitle != cell[0].innerHTML ) {
|
1809
1874
|
cell.html( column.sTitle );
|
1810
1875
|
}
|
1811
1876
|
|
@@ -2277,6 +2342,7 @@
|
|
2277
2342
|
|
2278
2343
|
/* Built our DOM structure - replace the holding div with what we want */
|
2279
2344
|
holding.replaceWith( insert );
|
2345
|
+
oSettings.nHolding = null;
|
2280
2346
|
}
|
2281
2347
|
|
2282
2348
|
|
@@ -2435,7 +2501,7 @@
|
|
2435
2501
|
var ajax = oSettings.ajax;
|
2436
2502
|
var instance = oSettings.oInstance;
|
2437
2503
|
var callback = function ( json ) {
|
2438
|
-
_fnCallbackFire( oSettings, null, 'xhr', [oSettings, json] );
|
2504
|
+
_fnCallbackFire( oSettings, null, 'xhr', [oSettings, json, oSettings.jqXHR] );
|
2439
2505
|
fn( json );
|
2440
2506
|
};
|
2441
2507
|
|
@@ -2462,7 +2528,7 @@
|
|
2462
2528
|
"success": function (json) {
|
2463
2529
|
var error = json.error || json.sError;
|
2464
2530
|
if ( error ) {
|
2465
|
-
|
2531
|
+
_fnLog( oSettings, 0, error );
|
2466
2532
|
}
|
2467
2533
|
|
2468
2534
|
oSettings.json = json;
|
@@ -2472,13 +2538,15 @@
|
|
2472
2538
|
"cache": false,
|
2473
2539
|
"type": oSettings.sServerMethod,
|
2474
2540
|
"error": function (xhr, error, thrown) {
|
2475
|
-
var
|
2541
|
+
var ret = _fnCallbackFire( oSettings, null, 'xhr', [oSettings, null, oSettings.jqXHR] );
|
2476
2542
|
|
2477
|
-
if (
|
2478
|
-
|
2479
|
-
|
2480
|
-
|
2481
|
-
|
2543
|
+
if ( $.inArray( true, ret ) === -1 ) {
|
2544
|
+
if ( error == "parsererror" ) {
|
2545
|
+
_fnLog( oSettings, 0, 'Invalid JSON response', 1 );
|
2546
|
+
}
|
2547
|
+
else if ( xhr.readyState === 4 ) {
|
2548
|
+
_fnLog( oSettings, 0, 'Ajax error', 7 );
|
2549
|
+
}
|
2482
2550
|
}
|
2483
2551
|
|
2484
2552
|
_fnProcessingDisplay( oSettings, false );
|
@@ -2907,7 +2975,7 @@
|
|
2907
2975
|
// So the array reference doesn't break set the results into the
|
2908
2976
|
// existing array
|
2909
2977
|
displayRows.length = 0;
|
2910
|
-
|
2978
|
+
$.merge( displayRows, rows );
|
2911
2979
|
}
|
2912
2980
|
}
|
2913
2981
|
|
@@ -3018,7 +3086,7 @@
|
|
3018
3086
|
*
|
3019
3087
|
* ^(?=.*?\bone\b)(?=.*?\btwo three\b)(?=.*?\bfour\b).*$
|
3020
3088
|
*/
|
3021
|
-
var a = $.map( search.match( /"[^"]+"|[^ ]+/g ) || '', function ( word ) {
|
3089
|
+
var a = $.map( search.match( /"[^"]+"|[^ ]+/g ) || [''], function ( word ) {
|
3022
3090
|
if ( word.charAt(0) === '"' ) {
|
3023
3091
|
var m = word.match( /^"(.*)"$/ );
|
3024
3092
|
word = m ? m[1] : word;
|
@@ -3263,6 +3331,7 @@
|
|
3263
3331
|
var i, iLen, iAjaxStart=settings.iInitDisplayStart;
|
3264
3332
|
var columns = settings.aoColumns, column;
|
3265
3333
|
var features = settings.oFeatures;
|
3334
|
+
var deferLoading = settings.bDeferLoading; // value modified by the draw
|
3266
3335
|
|
3267
3336
|
/* Ensure that the table data is fully initialised */
|
3268
3337
|
if ( ! settings.bInitialised ) {
|
@@ -3294,6 +3363,8 @@
|
|
3294
3363
|
}
|
3295
3364
|
}
|
3296
3365
|
|
3366
|
+
_fnCallbackFire( settings, null, 'preInit', [settings] );
|
3367
|
+
|
3297
3368
|
// If there is default sorting required - let's do it. The sort function
|
3298
3369
|
// will do the drawing for us. Otherwise we draw the table regardless of the
|
3299
3370
|
// Ajax source - this allows the table to look initialised for Ajax sourcing
|
@@ -3302,7 +3373,7 @@
|
|
3302
3373
|
|
3303
3374
|
// Server-side processing init complete is done by _fnAjaxUpdateDraw
|
3304
3375
|
var dataSrc = _fnDataSource( settings );
|
3305
|
-
if ( dataSrc != 'ssp' ) {
|
3376
|
+
if ( dataSrc != 'ssp' || deferLoading ) {
|
3306
3377
|
// if there is an ajax source load the data
|
3307
3378
|
if ( dataSrc == 'ajax' ) {
|
3308
3379
|
_fnBuildAjax( settings, [], function(json) {
|
@@ -3343,9 +3414,9 @@
|
|
3343
3414
|
{
|
3344
3415
|
settings._bInitComplete = true;
|
3345
3416
|
|
3346
|
-
//
|
3347
|
-
// sizing
|
3348
|
-
if ( json ) {
|
3417
|
+
// When data was added after the initialisation (data or Ajax) we need to
|
3418
|
+
// calculate the column sizing
|
3419
|
+
if ( json || settings.oInit.aaData ) {
|
3349
3420
|
_fnAdjustColumnSizing( settings );
|
3350
3421
|
}
|
3351
3422
|
|
@@ -3685,8 +3756,8 @@
|
|
3685
3756
|
.append(
|
3686
3757
|
$(_div, { 'class': classes.sScrollBody } )
|
3687
3758
|
.css( {
|
3759
|
+
position: 'relative',
|
3688
3760
|
overflow: 'auto',
|
3689
|
-
height: size( scrollY ),
|
3690
3761
|
width: size( scrollX )
|
3691
3762
|
} )
|
3692
3763
|
.append( table )
|
@@ -3733,6 +3804,11 @@
|
|
3733
3804
|
} );
|
3734
3805
|
}
|
3735
3806
|
|
3807
|
+
$(scrollBody).css(
|
3808
|
+
scrollY && scroll.bCollapse ? 'max-height' : 'height',
|
3809
|
+
scrollY
|
3810
|
+
);
|
3811
|
+
|
3736
3812
|
settings.nScrollHead = scrollHead;
|
3737
3813
|
settings.nScrollBody = scrollBody;
|
3738
3814
|
settings.nScrollFoot = scrollFoot;
|
@@ -3849,13 +3925,6 @@
|
|
3849
3925
|
}, footerSrcEls );
|
3850
3926
|
}
|
3851
3927
|
|
3852
|
-
// If scroll collapse is enabled, when we put the headers back into the body for sizing, we
|
3853
|
-
// will end up forcing the scrollbar to appear, making our measurements wrong for when we
|
3854
|
-
// then hide it (end of this function), so add the header height to the body scroller.
|
3855
|
-
if ( scroll.bCollapse && scrollY !== "" ) {
|
3856
|
-
divBodyStyle.height = (divBody[0].offsetHeight + header[0].offsetHeight)+"px";
|
3857
|
-
}
|
3858
|
-
|
3859
3928
|
// Size the table as a whole
|
3860
3929
|
sanityWidth = table.outerWidth();
|
3861
3930
|
if ( scrollX === "" ) {
|
@@ -3870,32 +3939,17 @@
|
|
3870
3939
|
) {
|
3871
3940
|
tableStyle.width = _fnStringToCss( table.outerWidth() - barWidth);
|
3872
3941
|
}
|
3942
|
+
|
3943
|
+
// Recalculate the sanity width
|
3944
|
+
sanityWidth = table.outerWidth();
|
3873
3945
|
}
|
3874
|
-
else
|
3875
|
-
|
3876
|
-
|
3877
|
-
if ( scrollXInner !== "" ) {
|
3878
|
-
// x scroll inner has been given - use it
|
3879
|
-
tableStyle.width = _fnStringToCss(scrollXInner);
|
3880
|
-
}
|
3881
|
-
else if ( sanityWidth == divBody.width() && divBody.height() < table.height() ) {
|
3882
|
-
// There is y-scrolling - try to take account of the y scroll bar
|
3883
|
-
tableStyle.width = _fnStringToCss( sanityWidth-barWidth );
|
3884
|
-
if ( table.outerWidth() > sanityWidth-barWidth ) {
|
3885
|
-
// Not possible to take account of it
|
3886
|
-
tableStyle.width = _fnStringToCss( sanityWidth );
|
3887
|
-
}
|
3888
|
-
}
|
3889
|
-
else {
|
3890
|
-
// When all else fails
|
3891
|
-
tableStyle.width = _fnStringToCss( sanityWidth );
|
3892
|
-
}
|
3893
|
-
}
|
3946
|
+
else if ( scrollXInner !== "" ) {
|
3947
|
+
// legacy x scroll inner has been given - use it
|
3948
|
+
tableStyle.width = _fnStringToCss(scrollXInner);
|
3894
3949
|
|
3895
|
-
|
3896
|
-
|
3897
|
-
|
3898
|
-
sanityWidth = table.outerWidth();
|
3950
|
+
// Recalculate the sanity width
|
3951
|
+
sanityWidth = table.outerWidth();
|
3952
|
+
}
|
3899
3953
|
|
3900
3954
|
// Hidden header should have zero height, so remove padding and borders. Then
|
3901
3955
|
// set the width based on the real headers
|
@@ -4003,18 +4057,6 @@
|
|
4003
4057
|
}
|
4004
4058
|
}
|
4005
4059
|
|
4006
|
-
if ( scrollY && scroll.bCollapse ) {
|
4007
|
-
divBodyStyle.height = _fnStringToCss( scrollY );
|
4008
|
-
|
4009
|
-
var iExtra = (scrollX && tableEl.offsetWidth > divBodyEl.offsetWidth) ?
|
4010
|
-
barWidth :
|
4011
|
-
0;
|
4012
|
-
|
4013
|
-
if ( tableEl.offsetHeight < divBodyEl.offsetHeight ) {
|
4014
|
-
divBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+iExtra );
|
4015
|
-
}
|
4016
|
-
}
|
4017
|
-
|
4018
4060
|
/* Finally set the width's of the header and footer tables */
|
4019
4061
|
var iOuterWidth = table.outerWidth();
|
4020
4062
|
divHeaderTable[0].style.width = _fnStringToCss( iOuterWidth );
|
@@ -4106,7 +4148,9 @@
|
|
4106
4148
|
tableWidthAttr = table.getAttribute('width'), // from DOM element
|
4107
4149
|
tableContainer = table.parentNode,
|
4108
4150
|
userInputs = false,
|
4109
|
-
i, column, columnIdx, width, outerWidth
|
4151
|
+
i, column, columnIdx, width, outerWidth,
|
4152
|
+
browser = oSettings.oBrowser,
|
4153
|
+
ie67 = browser.bScrollOversize;
|
4110
4154
|
|
4111
4155
|
var styleWidth = table.style.width;
|
4112
4156
|
if ( styleWidth && styleWidth.indexOf('%') !== -1 ) {
|
@@ -4129,32 +4173,43 @@
|
|
4129
4173
|
* the web- browser. No custom sizes can be set in order for this to happen,
|
4130
4174
|
* nor scrolling used
|
4131
4175
|
*/
|
4132
|
-
if ( ! userInputs && ! scrollX && ! scrollY &&
|
4133
|
-
|
4134
|
-
|
4176
|
+
if ( ie67 || ! userInputs && ! scrollX && ! scrollY &&
|
4177
|
+
columnCount == _fnVisbleColumns( oSettings ) &&
|
4178
|
+
columnCount == headerCells.length
|
4135
4179
|
) {
|
4136
4180
|
for ( i=0 ; i<columnCount ; i++ ) {
|
4137
|
-
|
4181
|
+
var colIdx = _fnVisibleToColumnIndex( oSettings, i );
|
4182
|
+
|
4183
|
+
if ( colIdx ) {
|
4184
|
+
columns[ colIdx ].sWidth = _fnStringToCss( headerCells.eq(i).width() );
|
4185
|
+
}
|
4138
4186
|
}
|
4139
4187
|
}
|
4140
4188
|
else
|
4141
4189
|
{
|
4142
|
-
// Otherwise construct a single row table with the widest
|
4143
|
-
// data, assign any user defined widths, then insert it into
|
4144
|
-
// allow the browser to do all the hard work of calculating
|
4190
|
+
// Otherwise construct a single row, worst case, table with the widest
|
4191
|
+
// node in the data, assign any user defined widths, then insert it into
|
4192
|
+
// the DOM and allow the browser to do all the hard work of calculating
|
4193
|
+
// table widths
|
4145
4194
|
var tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table
|
4146
|
-
.empty()
|
4147
4195
|
.css( 'visibility', 'hidden' )
|
4148
|
-
.removeAttr( 'id' )
|
4149
|
-
|
4150
|
-
|
4151
|
-
|
4196
|
+
.removeAttr( 'id' );
|
4197
|
+
|
4198
|
+
// Clean up the table body
|
4199
|
+
tmpTable.find('tbody tr').remove();
|
4200
|
+
var tr = $('<tr/>').appendTo( tmpTable.find('tbody') );
|
4201
|
+
|
4202
|
+
// Clone the table header and footer - we can't use the header / footer
|
4203
|
+
// from the cloned table, since if scrolling is active, the table's
|
4204
|
+
// real header and footer are contained in different table tags
|
4205
|
+
tmpTable.find('thead, tfoot').remove();
|
4206
|
+
tmpTable
|
4207
|
+
.append( $(oSettings.nTHead).clone() )
|
4208
|
+
.append( $(oSettings.nTFoot).clone() );
|
4152
4209
|
|
4153
4210
|
// Remove any assigned widths from the footer (from scrolling)
|
4154
4211
|
tmpTable.find('tfoot th, tfoot td').css('width', '');
|
4155
4212
|
|
4156
|
-
var tr = tmpTable.find( 'tbody tr' );
|
4157
|
-
|
4158
4213
|
// Apply custom sizing to the cloned header
|
4159
4214
|
headerCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] );
|
4160
4215
|
|
@@ -4179,8 +4234,24 @@
|
|
4179
4234
|
}
|
4180
4235
|
}
|
4181
4236
|
|
4182
|
-
// Table has been built, attach to the document so we can work with it
|
4183
|
-
|
4237
|
+
// Table has been built, attach to the document so we can work with it.
|
4238
|
+
// A holding element is used, positioned at the top of the container
|
4239
|
+
// with minimal height, so it has no effect on if the container scrolls
|
4240
|
+
// or not. Otherwise it might trigger scrolling when it actually isn't
|
4241
|
+
// needed
|
4242
|
+
var holder = $('<div/>').css( scrollX || scrollY ?
|
4243
|
+
{
|
4244
|
+
position: 'absolute',
|
4245
|
+
top: 0,
|
4246
|
+
left: 0,
|
4247
|
+
height: 1,
|
4248
|
+
right: 0,
|
4249
|
+
overflow: 'hidden'
|
4250
|
+
} :
|
4251
|
+
{}
|
4252
|
+
)
|
4253
|
+
.append( tmpTable )
|
4254
|
+
.appendTo( tableContainer );
|
4184
4255
|
|
4185
4256
|
// When scrolling (X or Y) we want to set the width of the table as
|
4186
4257
|
// appropriate. However, when not scrolling leave the table width as it
|
@@ -4191,20 +4262,17 @@
|
|
4191
4262
|
else if ( scrollX ) {
|
4192
4263
|
tmpTable.css( 'width', 'auto' );
|
4193
4264
|
|
4194
|
-
if ( tmpTable.width() < tableContainer.
|
4195
|
-
tmpTable.width( tableContainer.
|
4265
|
+
if ( tmpTable.width() < tableContainer.clientWidth ) {
|
4266
|
+
tmpTable.width( tableContainer.clientWidth );
|
4196
4267
|
}
|
4197
4268
|
}
|
4198
4269
|
else if ( scrollY ) {
|
4199
|
-
tmpTable.width( tableContainer.
|
4270
|
+
tmpTable.width( tableContainer.clientWidth );
|
4200
4271
|
}
|
4201
4272
|
else if ( tableWidthAttr ) {
|
4202
4273
|
tmpTable.width( tableWidthAttr );
|
4203
4274
|
}
|
4204
4275
|
|
4205
|
-
// Take into account the y scrollbar
|
4206
|
-
_fnScrollingWidthAdjust( oSettings, tmpTable[0] );
|
4207
|
-
|
4208
4276
|
// Browsers need a bit of a hand when a width is assigned to any columns
|
4209
4277
|
// when x-scrolling as they tend to collapse the table to the min-width,
|
4210
4278
|
// even if we sent the column widths. So we need to keep track of what
|
@@ -4216,7 +4284,12 @@
|
|
4216
4284
|
|
4217
4285
|
for ( i=0 ; i<visibleColumns.length ; i++ ) {
|
4218
4286
|
column = columns[ visibleColumns[i] ];
|
4219
|
-
|
4287
|
+
|
4288
|
+
// Much prefer to use getBoundingClientRect due to its sub-pixel
|
4289
|
+
// resolution, but IE8- do not support the width property.
|
4290
|
+
outerWidth = browser.bBounding ?
|
4291
|
+
headerCells[i].getBoundingClientRect().width :
|
4292
|
+
$(headerCells[i]).outerWidth();
|
4220
4293
|
|
4221
4294
|
total += column.sWidthOrig === null ?
|
4222
4295
|
outerWidth :
|
@@ -4240,7 +4313,7 @@
|
|
4240
4313
|
table.style.width = _fnStringToCss( tmpTable.css('width') );
|
4241
4314
|
|
4242
4315
|
// Finished with the table - ditch it
|
4243
|
-
|
4316
|
+
holder.remove();
|
4244
4317
|
}
|
4245
4318
|
|
4246
4319
|
// If there is a width attr, we want to attach an event listener which
|
@@ -4252,9 +4325,20 @@
|
|
4252
4325
|
}
|
4253
4326
|
|
4254
4327
|
if ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) {
|
4255
|
-
|
4256
|
-
|
4257
|
-
|
4328
|
+
var bindResize = function () {
|
4329
|
+
$(window).bind('resize.DT-'+oSettings.sInstance, _fnThrottle( function () {
|
4330
|
+
_fnAdjustColumnSizing( oSettings );
|
4331
|
+
} ) );
|
4332
|
+
};
|
4333
|
+
|
4334
|
+
// IE6/7 will crash if we bind a resize event handler on page load.
|
4335
|
+
// To be removed in 1.11 which drops IE6/7 support
|
4336
|
+
if ( ie67 ) {
|
4337
|
+
setTimeout( bindResize, 1000 );
|
4338
|
+
}
|
4339
|
+
else {
|
4340
|
+
bindResize();
|
4341
|
+
}
|
4258
4342
|
|
4259
4343
|
oSettings._reszEvt = true;
|
4260
4344
|
}
|
@@ -4321,27 +4405,6 @@
|
|
4321
4405
|
}
|
4322
4406
|
|
4323
4407
|
|
4324
|
-
/**
|
4325
|
-
* Adjust a table's width to take account of vertical scroll bar
|
4326
|
-
* @param {object} oSettings dataTables settings object
|
4327
|
-
* @param {node} n table node
|
4328
|
-
* @memberof DataTable#oApi
|
4329
|
-
*/
|
4330
|
-
|
4331
|
-
function _fnScrollingWidthAdjust ( settings, n )
|
4332
|
-
{
|
4333
|
-
var scroll = settings.oScroll;
|
4334
|
-
|
4335
|
-
if ( scroll.sX || scroll.sY ) {
|
4336
|
-
// When y-scrolling only, we want to remove the width of the scroll bar
|
4337
|
-
// so the table + scroll bar will fit into the area available, otherwise
|
4338
|
-
// we fix the table at its current size with no adjustment
|
4339
|
-
var correction = ! scroll.sX ? scroll.iBarWidth : 0;
|
4340
|
-
n.style.width = _fnStringToCss( $(n).outerWidth() - correction );
|
4341
|
-
}
|
4342
|
-
}
|
4343
|
-
|
4344
|
-
|
4345
4408
|
/**
|
4346
4409
|
* Get the widest node
|
4347
4410
|
* @param {object} settings dataTables settings object
|
@@ -4413,40 +4476,6 @@
|
|
4413
4476
|
}
|
4414
4477
|
|
4415
4478
|
|
4416
|
-
/**
|
4417
|
-
* Get the width of a scroll bar in this browser being used
|
4418
|
-
* @returns {int} width in pixels
|
4419
|
-
* @memberof DataTable#oApi
|
4420
|
-
*/
|
4421
|
-
function _fnScrollBarWidth ()
|
4422
|
-
{
|
4423
|
-
// On first run a static variable is set, since this is only needed once.
|
4424
|
-
// Subsequent runs will just use the previously calculated value
|
4425
|
-
var width = DataTable.__scrollbarWidth;
|
4426
|
-
|
4427
|
-
if ( width === undefined ) {
|
4428
|
-
var sizer = $('<p/>').css( {
|
4429
|
-
position: 'absolute',
|
4430
|
-
top: 0,
|
4431
|
-
left: 0,
|
4432
|
-
width: '100%',
|
4433
|
-
height: 150,
|
4434
|
-
padding: 0,
|
4435
|
-
overflow: 'scroll',
|
4436
|
-
visibility: 'hidden'
|
4437
|
-
} )
|
4438
|
-
.appendTo('body');
|
4439
|
-
|
4440
|
-
width = sizer[0].offsetWidth - sizer[0].clientWidth;
|
4441
|
-
DataTable.__scrollbarWidth = width;
|
4442
|
-
|
4443
|
-
sizer.remove();
|
4444
|
-
}
|
4445
|
-
|
4446
|
-
return width;
|
4447
|
-
}
|
4448
|
-
|
4449
|
-
|
4450
4479
|
|
4451
4480
|
function _fnSortFlatten ( settings )
|
4452
4481
|
{
|
@@ -4466,7 +4495,7 @@
|
|
4466
4495
|
}
|
4467
4496
|
else {
|
4468
4497
|
// 2D array
|
4469
|
-
|
4498
|
+
$.merge( nestedSort, a );
|
4470
4499
|
}
|
4471
4500
|
};
|
4472
4501
|
|
@@ -5043,7 +5072,7 @@
|
|
5043
5072
|
function _fnLog( settings, level, msg, tn )
|
5044
5073
|
{
|
5045
5074
|
msg = 'DataTables warning: '+
|
5046
|
-
(settings
|
5075
|
+
(settings ? 'table id='+settings.sTableId+' - ' : '')+msg;
|
5047
5076
|
|
5048
5077
|
if ( tn ) {
|
5049
5078
|
msg += '. For more information about this error, please see '+
|
@@ -5055,7 +5084,9 @@
|
|
5055
5084
|
var ext = DataTable.ext;
|
5056
5085
|
var type = ext.sErrMode || ext.errMode;
|
5057
5086
|
|
5058
|
-
|
5087
|
+
if ( settings ) {
|
5088
|
+
_fnCallbackFire( settings, null, 'error', [ settings, tn, msg ] );
|
5089
|
+
}
|
5059
5090
|
|
5060
5091
|
if ( type == 'alert' ) {
|
5061
5092
|
alert( msg );
|
@@ -5208,13 +5239,13 @@
|
|
5208
5239
|
* @param {object} settings dataTables settings object
|
5209
5240
|
* @param {string} callbackArr Name of the array storage for the callbacks in
|
5210
5241
|
* oSettings
|
5211
|
-
* @param {string}
|
5212
|
-
* trigger is fired
|
5242
|
+
* @param {string} eventName Name of the jQuery custom event to trigger. If
|
5243
|
+
* null no trigger is fired
|
5213
5244
|
* @param {array} args Array of arguments to pass to the callback function /
|
5214
5245
|
* trigger
|
5215
5246
|
* @memberof DataTable#oApi
|
5216
5247
|
*/
|
5217
|
-
function _fnCallbackFire( settings, callbackArr,
|
5248
|
+
function _fnCallbackFire( settings, callbackArr, eventName, args )
|
5218
5249
|
{
|
5219
5250
|
var ret = [];
|
5220
5251
|
|
@@ -5224,8 +5255,12 @@
|
|
5224
5255
|
} );
|
5225
5256
|
}
|
5226
5257
|
|
5227
|
-
if (
|
5228
|
-
|
5258
|
+
if ( eventName !== null ) {
|
5259
|
+
var e = $.Event( eventName+'.dt' );
|
5260
|
+
|
5261
|
+
$(settings.nTable).trigger( e, args );
|
5262
|
+
|
5263
|
+
ret.push( e.result );
|
5229
5264
|
}
|
5230
5265
|
|
5231
5266
|
return ret;
|
@@ -6226,6 +6261,7 @@
|
|
6226
6261
|
"fnStateSaveCallback",
|
6227
6262
|
"renderer",
|
6228
6263
|
"searchDelay",
|
6264
|
+
"rowId",
|
6229
6265
|
[ "iCookieDuration", "iStateDuration" ], // backwards compat
|
6230
6266
|
[ "oSearch", "oPreviousSearch" ],
|
6231
6267
|
[ "aoSearchCols", "aoPreSearchCols" ],
|
@@ -6253,6 +6289,11 @@
|
|
6253
6289
|
_fnCallbackReg( oSettings, 'aoInitComplete', oInit.fnInitComplete, 'user' );
|
6254
6290
|
_fnCallbackReg( oSettings, 'aoPreDrawCallback', oInit.fnPreDrawCallback, 'user' );
|
6255
6291
|
|
6292
|
+
oSettings.rowIdFn = _fnGetObjectDataFn( oInit.rowId );
|
6293
|
+
|
6294
|
+
/* Browser support detection */
|
6295
|
+
_fnBrowserDetect( oSettings );
|
6296
|
+
|
6256
6297
|
var oClasses = oSettings.oClasses;
|
6257
6298
|
|
6258
6299
|
// @todo Remove in 1.11
|
@@ -6282,14 +6323,6 @@
|
|
6282
6323
|
}
|
6283
6324
|
$this.addClass( oClasses.sTable );
|
6284
6325
|
|
6285
|
-
/* Calculate the scroll bar width and cache it for use later on */
|
6286
|
-
if ( oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "" )
|
6287
|
-
{
|
6288
|
-
oSettings.oScroll.iBarWidth = _fnScrollBarWidth();
|
6289
|
-
}
|
6290
|
-
if ( oSettings.oScroll.sX === true ) { // Easy initialisation of x-scrolling
|
6291
|
-
oSettings.oScroll.sX = '100%';
|
6292
|
-
}
|
6293
6326
|
|
6294
6327
|
if ( oSettings.iInitDisplayStart === undefined )
|
6295
6328
|
{
|
@@ -6400,7 +6433,7 @@
|
|
6400
6433
|
return cell.getAttribute( 'data-'+name ) !== null ? name : null;
|
6401
6434
|
};
|
6402
6435
|
|
6403
|
-
|
6436
|
+
$( rowOne[0] ).children('th, td').each( function (i, cell) {
|
6404
6437
|
var col = oSettings.aoColumns[i];
|
6405
6438
|
|
6406
6439
|
if ( col.mData === i ) {
|
@@ -6482,9 +6515,6 @@
|
|
6482
6515
|
* Cache the header, body and footer as required, creating them if needed
|
6483
6516
|
*/
|
6484
6517
|
|
6485
|
-
/* Browser support detection */
|
6486
|
-
_fnBrowserDetect( oSettings );
|
6487
|
-
|
6488
6518
|
// Work around for Webkit bug 83867 - store the caption-side before removing from doc
|
6489
6519
|
var captions = $this.children('caption').each( function () {
|
6490
6520
|
this._captionSide = $this.css('caption-side');
|
@@ -6722,17 +6752,15 @@
|
|
6722
6752
|
*/
|
6723
6753
|
_Api = function ( context, data )
|
6724
6754
|
{
|
6725
|
-
if ( ! this instanceof _Api ) {
|
6726
|
-
|
6727
|
-
// or should it do the 'new' for the caller?
|
6728
|
-
// return new _Api.apply( this, arguments );
|
6755
|
+
if ( ! (this instanceof _Api) ) {
|
6756
|
+
return new _Api( context, data );
|
6729
6757
|
}
|
6730
6758
|
|
6731
6759
|
var settings = [];
|
6732
6760
|
var ctxSettings = function ( o ) {
|
6733
6761
|
var a = _toSettings( o );
|
6734
6762
|
if ( a ) {
|
6735
|
-
settings.
|
6763
|
+
settings = settings.concat( a );
|
6736
6764
|
}
|
6737
6765
|
};
|
6738
6766
|
|
@@ -6750,7 +6778,7 @@
|
|
6750
6778
|
|
6751
6779
|
// Initial data
|
6752
6780
|
if ( data ) {
|
6753
|
-
|
6781
|
+
$.merge( this, data );
|
6754
6782
|
}
|
6755
6783
|
|
6756
6784
|
// selector
|
@@ -6765,25 +6793,27 @@
|
|
6765
6793
|
|
6766
6794
|
DataTable.Api = _Api;
|
6767
6795
|
|
6768
|
-
|
6769
|
-
|
6770
|
-
|
6771
|
-
|
6772
|
-
|
6773
|
-
|
6774
|
-
|
6775
|
-
|
6776
|
-
|
6777
|
-
* @param {*} [...] Additional arrays and/or values to concatenate.
|
6778
|
-
* @returns {DataTables.Api} New API instance, comprising of the combined
|
6779
|
-
* array.
|
6780
|
-
*/
|
6796
|
+
// Don't destroy the existing prototype, just extend it. Required for jQuery 2's
|
6797
|
+
// isPlainObject.
|
6798
|
+
$.extend( _Api.prototype, {
|
6799
|
+
any: function ()
|
6800
|
+
{
|
6801
|
+
return this.count() !== 0;
|
6802
|
+
},
|
6803
|
+
|
6804
|
+
|
6781
6805
|
concat: __arrayProto.concat,
|
6782
6806
|
|
6783
6807
|
|
6784
6808
|
context: [], // array of table settings objects
|
6785
6809
|
|
6786
6810
|
|
6811
|
+
count: function ()
|
6812
|
+
{
|
6813
|
+
return this.flatten().length;
|
6814
|
+
},
|
6815
|
+
|
6816
|
+
|
6787
6817
|
each: function ( fn )
|
6788
6818
|
{
|
6789
6819
|
for ( var i=0, ien=this.length ; i<ien; i++ ) {
|
@@ -6844,7 +6874,6 @@
|
|
6844
6874
|
return -1;
|
6845
6875
|
},
|
6846
6876
|
|
6847
|
-
// Note that `alwaysNew` is internal - use iteratorNew externally
|
6848
6877
|
iterator: function ( flatten, type, fn, alwaysNew ) {
|
6849
6878
|
var
|
6850
6879
|
a = [], ret,
|
@@ -7012,7 +7041,7 @@
|
|
7012
7041
|
|
7013
7042
|
|
7014
7043
|
unshift: __arrayProto.unshift
|
7015
|
-
};
|
7044
|
+
} );
|
7016
7045
|
|
7017
7046
|
|
7018
7047
|
_Api.extend = function ( scope, obj, ext )
|
@@ -7267,15 +7296,21 @@
|
|
7267
7296
|
|
7268
7297
|
/**
|
7269
7298
|
* Redraw the tables in the current context.
|
7270
|
-
*
|
7271
|
-
* @param {boolean} [reset=true] Reset (default) or hold the current paging
|
7272
|
-
* position. A full re-sort and re-filter is performed when this method is
|
7273
|
-
* called, which is why the pagination reset is the default action.
|
7274
|
-
* @returns {DataTables.Api} this
|
7275
7299
|
*/
|
7276
|
-
_api_register( 'draw()', function (
|
7300
|
+
_api_register( 'draw()', function ( paging ) {
|
7277
7301
|
return this.iterator( 'table', function ( settings ) {
|
7278
|
-
|
7302
|
+
if ( paging === 'page' ) {
|
7303
|
+
_fnDraw( settings );
|
7304
|
+
}
|
7305
|
+
else {
|
7306
|
+
if ( typeof paging === 'string' ) {
|
7307
|
+
paging = paging === 'full-hold' ?
|
7308
|
+
false :
|
7309
|
+
true;
|
7310
|
+
}
|
7311
|
+
|
7312
|
+
_fnReDraw( settings, paging===false );
|
7313
|
+
}
|
7279
7314
|
} );
|
7280
7315
|
} );
|
7281
7316
|
|
@@ -7349,7 +7384,8 @@
|
|
7349
7384
|
"end": settings.fnDisplayEnd(),
|
7350
7385
|
"length": len,
|
7351
7386
|
"recordsTotal": settings.fnRecordsTotal(),
|
7352
|
-
"recordsDisplay": visRecords
|
7387
|
+
"recordsDisplay": visRecords,
|
7388
|
+
"serverSide": _fnDataSource( settings ) === 'ssp'
|
7353
7389
|
};
|
7354
7390
|
} );
|
7355
7391
|
|
@@ -7397,9 +7433,15 @@
|
|
7397
7433
|
_fnReDraw( settings, holdPosition );
|
7398
7434
|
}
|
7399
7435
|
else {
|
7400
|
-
// Trigger xhr
|
7401
7436
|
_fnProcessingDisplay( settings, true );
|
7402
7437
|
|
7438
|
+
// Cancel an existing request
|
7439
|
+
var xhr = settings.jqXHR;
|
7440
|
+
if ( xhr && xhr.readyState !== 4 ) {
|
7441
|
+
xhr.abort();
|
7442
|
+
}
|
7443
|
+
|
7444
|
+
// Trigger xhr
|
7403
7445
|
_fnBuildAjax( settings, [], function( json ) {
|
7404
7446
|
_fnClearTable( settings );
|
7405
7447
|
|
@@ -7527,7 +7569,7 @@
|
|
7527
7569
|
|
7528
7570
|
|
7529
7571
|
|
7530
|
-
var _selector_run = function ( selector,
|
7572
|
+
var _selector_run = function ( type, selector, selectFn, settings, opts )
|
7531
7573
|
{
|
7532
7574
|
var
|
7533
7575
|
out = [], res,
|
@@ -7546,15 +7588,23 @@
|
|
7546
7588
|
[ selector[i] ];
|
7547
7589
|
|
7548
7590
|
for ( j=0, jen=a.length ; j<jen ; j++ ) {
|
7549
|
-
res =
|
7591
|
+
res = selectFn( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] );
|
7550
7592
|
|
7551
7593
|
if ( res && res.length ) {
|
7552
|
-
out.
|
7594
|
+
out = out.concat( res );
|
7553
7595
|
}
|
7554
7596
|
}
|
7555
7597
|
}
|
7556
7598
|
|
7557
|
-
|
7599
|
+
// selector extensions
|
7600
|
+
var ext = _ext.selector[ type ];
|
7601
|
+
if ( ext.length ) {
|
7602
|
+
for ( i=0, ien=ext.length ; i<ien ; i++ ) {
|
7603
|
+
out = ext[i]( settings, opts, out );
|
7604
|
+
}
|
7605
|
+
}
|
7606
|
+
|
7607
|
+
return _unique( out );
|
7558
7608
|
};
|
7559
7609
|
|
7560
7610
|
|
@@ -7566,15 +7616,15 @@
|
|
7566
7616
|
|
7567
7617
|
// Backwards compatibility for 1.9- which used the terminology filter rather
|
7568
7618
|
// than search
|
7569
|
-
if ( opts.filter &&
|
7619
|
+
if ( opts.filter && opts.search === undefined ) {
|
7570
7620
|
opts.search = opts.filter;
|
7571
7621
|
}
|
7572
7622
|
|
7573
|
-
return {
|
7574
|
-
search:
|
7575
|
-
order:
|
7576
|
-
page:
|
7577
|
-
};
|
7623
|
+
return $.extend( {
|
7624
|
+
search: 'none',
|
7625
|
+
order: 'current',
|
7626
|
+
page: 'all'
|
7627
|
+
}, opts );
|
7578
7628
|
};
|
7579
7629
|
|
7580
7630
|
|
@@ -7586,6 +7636,7 @@
|
|
7586
7636
|
// Assign the first element to the first item in the instance
|
7587
7637
|
// and truncate the instance and context
|
7588
7638
|
inst[0] = inst[i];
|
7639
|
+
inst[0].length = 1;
|
7589
7640
|
inst.length = 1;
|
7590
7641
|
inst.context = [ inst.context[i] ];
|
7591
7642
|
|
@@ -7672,7 +7723,7 @@
|
|
7672
7723
|
|
7673
7724
|
var __row_selector = function ( settings, selector, opts )
|
7674
7725
|
{
|
7675
|
-
|
7726
|
+
var run = function ( sel ) {
|
7676
7727
|
var selInt = _intVal( sel );
|
7677
7728
|
var i, ien;
|
7678
7729
|
|
@@ -7715,6 +7766,26 @@
|
|
7715
7766
|
}
|
7716
7767
|
}
|
7717
7768
|
|
7769
|
+
// ID selector. Want to always be able to select rows by id, regardless
|
7770
|
+
// of if the tr element has been created or not, so can't rely upon
|
7771
|
+
// jQuery here - hence a custom implementation. This does not match
|
7772
|
+
// Sizzle's fast selector or HTML4 - in HTML5 the ID can be anything,
|
7773
|
+
// but to select it using a CSS selector engine (like Sizzle or
|
7774
|
+
// querySelect) it would need to need to be escaped for some characters.
|
7775
|
+
// DataTables simplifies this for row selectors since you can select
|
7776
|
+
// only a row. A # indicates an id any anything that follows is the id -
|
7777
|
+
// unescaped.
|
7778
|
+
if ( typeof sel === 'string' && sel.charAt(0) === '#' ) {
|
7779
|
+
// get row index from id
|
7780
|
+
var rowObj = settings.aIds[ sel.replace( /^#/, '' ) ];
|
7781
|
+
if ( rowObj !== undefined ) {
|
7782
|
+
return [ rowObj.idx ];
|
7783
|
+
}
|
7784
|
+
|
7785
|
+
// need to fall through to jQuery in case there is DOM id that
|
7786
|
+
// matches
|
7787
|
+
}
|
7788
|
+
|
7718
7789
|
// Selector - jQuery selector string, array of nodes or jQuery object/
|
7719
7790
|
// As jQuery's .filter() allows jQuery objects to be passed in filter,
|
7720
7791
|
// it also allows arrays, so this will cope with all three options
|
@@ -7724,7 +7795,9 @@
|
|
7724
7795
|
return this._DT_RowIndex;
|
7725
7796
|
} )
|
7726
7797
|
.toArray();
|
7727
|
-
}
|
7798
|
+
};
|
7799
|
+
|
7800
|
+
return _selector_run( 'row', selector, run, settings, opts );
|
7728
7801
|
};
|
7729
7802
|
|
7730
7803
|
|
@@ -7782,11 +7855,27 @@
|
|
7782
7855
|
}, 1 );
|
7783
7856
|
} );
|
7784
7857
|
|
7858
|
+
_api_registerPlural( 'rows().ids()', 'row().id()', function ( hash ) {
|
7859
|
+
var a = [];
|
7860
|
+
var context = this.context;
|
7861
|
+
|
7862
|
+
// `iterator` will drop undefined values, but in this case we want them
|
7863
|
+
for ( var i=0, ien=context.length ; i<ien ; i++ ) {
|
7864
|
+
for ( var j=0, jen=this[i].length ; j<jen ; j++ ) {
|
7865
|
+
var id = context[i].rowIdFn( context[i].aoData[ this[i][j] ]._aData );
|
7866
|
+
a.push( (hash === true ? '#' : '' )+ id );
|
7867
|
+
}
|
7868
|
+
}
|
7869
|
+
|
7870
|
+
return new _Api( context, a );
|
7871
|
+
} );
|
7872
|
+
|
7785
7873
|
_api_registerPlural( 'rows().remove()', 'row().remove()', function () {
|
7786
7874
|
var that = this;
|
7787
7875
|
|
7788
|
-
|
7876
|
+
this.iterator( 'row', function ( settings, row, thatIdx ) {
|
7789
7877
|
var data = settings.aoData;
|
7878
|
+
var rowData = data[ row ];
|
7790
7879
|
|
7791
7880
|
data.splice( row, 1 );
|
7792
7881
|
|
@@ -7797,9 +7886,6 @@
|
|
7797
7886
|
}
|
7798
7887
|
}
|
7799
7888
|
|
7800
|
-
// Remove the target row from the search array
|
7801
|
-
var displayIndex = $.inArray( row, settings.aiDisplay );
|
7802
|
-
|
7803
7889
|
// Delete from the display arrays
|
7804
7890
|
_fnDeleteIndex( settings.aiDisplayMaster, row );
|
7805
7891
|
_fnDeleteIndex( settings.aiDisplay, row );
|
@@ -7807,7 +7893,21 @@
|
|
7807
7893
|
|
7808
7894
|
// Check for an 'overflow' they case for displaying the table
|
7809
7895
|
_fnLengthOverflow( settings );
|
7896
|
+
|
7897
|
+
// Remove the row's ID reference if there is one
|
7898
|
+
var id = settings.rowIdFn( rowData._aData );
|
7899
|
+
if ( id !== undefined ) {
|
7900
|
+
delete settings.aIds[ id ];
|
7901
|
+
}
|
7810
7902
|
} );
|
7903
|
+
|
7904
|
+
this.iterator( 'table', function ( settings ) {
|
7905
|
+
for ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {
|
7906
|
+
settings.aoData[i].idx = i;
|
7907
|
+
}
|
7908
|
+
} );
|
7909
|
+
|
7910
|
+
return this;
|
7811
7911
|
} );
|
7812
7912
|
|
7813
7913
|
|
@@ -7833,7 +7933,7 @@
|
|
7833
7933
|
// Return an Api.rows() extended instance, so rows().nodes() etc can be used
|
7834
7934
|
var modRows = this.rows( -1 );
|
7835
7935
|
modRows.pop();
|
7836
|
-
|
7936
|
+
$.merge( modRows, newRows );
|
7837
7937
|
|
7838
7938
|
return modRows;
|
7839
7939
|
} );
|
@@ -7951,7 +8051,7 @@
|
|
7951
8051
|
if ( ctx.length ) {
|
7952
8052
|
var row = ctx[0].aoData[ idx !== undefined ? idx : api[0] ];
|
7953
8053
|
|
7954
|
-
if ( row._details ) {
|
8054
|
+
if ( row && row._details ) {
|
7955
8055
|
row._details.remove();
|
7956
8056
|
|
7957
8057
|
row._detailsShow = undefined;
|
@@ -8154,7 +8254,7 @@
|
|
8154
8254
|
names = _pluck( columns, 'sName' ),
|
8155
8255
|
nodes = _pluck( columns, 'nTh' );
|
8156
8256
|
|
8157
|
-
|
8257
|
+
var run = function ( s ) {
|
8158
8258
|
var selInt = _intVal( s );
|
8159
8259
|
|
8160
8260
|
// Selector - all
|
@@ -8220,7 +8320,9 @@
|
|
8220
8320
|
} )
|
8221
8321
|
.toArray();
|
8222
8322
|
}
|
8223
|
-
}
|
8323
|
+
};
|
8324
|
+
|
8325
|
+
return _selector_run( 'column', selector, run, settings, opts );
|
8224
8326
|
};
|
8225
8327
|
|
8226
8328
|
|
@@ -8395,7 +8497,7 @@
|
|
8395
8497
|
var columns = settings.aoColumns.length;
|
8396
8498
|
var a, i, ien, j, o, host;
|
8397
8499
|
|
8398
|
-
|
8500
|
+
var run = function ( s ) {
|
8399
8501
|
var fnSelector = typeof s === 'function';
|
8400
8502
|
|
8401
8503
|
if ( s === null || s === undefined || fnSelector ) {
|
@@ -8413,9 +8515,9 @@
|
|
8413
8515
|
|
8414
8516
|
if ( fnSelector ) {
|
8415
8517
|
// Selector - function
|
8416
|
-
host =
|
8518
|
+
host = data[ row ];
|
8417
8519
|
|
8418
|
-
if ( s( o, _fnGetCellData(settings, row, j), host.anCells[j] ) ) {
|
8520
|
+
if ( s( o, _fnGetCellData(settings, row, j), host.anCells ? host.anCells[j] : null ) ) {
|
8419
8521
|
a.push( o );
|
8420
8522
|
}
|
8421
8523
|
}
|
@@ -8438,7 +8540,19 @@
|
|
8438
8540
|
return allCells
|
8439
8541
|
.filter( s )
|
8440
8542
|
.map( function (i, el) {
|
8441
|
-
|
8543
|
+
if ( el.parentNode ) {
|
8544
|
+
row = el.parentNode._DT_RowIndex;
|
8545
|
+
}
|
8546
|
+
else {
|
8547
|
+
// If no parent node, then the cell is hidden and we'll need
|
8548
|
+
// to traverse the array to find it
|
8549
|
+
for ( i=0, ien=data.length ; i<ien ; i++ ) {
|
8550
|
+
if ( $.inArray( el, data[i].anCells ) !== -1 ) {
|
8551
|
+
row = i;
|
8552
|
+
break;
|
8553
|
+
}
|
8554
|
+
}
|
8555
|
+
}
|
8442
8556
|
|
8443
8557
|
return {
|
8444
8558
|
row: row,
|
@@ -8446,7 +8560,9 @@
|
|
8446
8560
|
};
|
8447
8561
|
} )
|
8448
8562
|
.toArray();
|
8449
|
-
}
|
8563
|
+
};
|
8564
|
+
|
8565
|
+
return _selector_run( 'cell', selector, run, settings, opts );
|
8450
8566
|
};
|
8451
8567
|
|
8452
8568
|
|
@@ -8856,11 +8972,22 @@
|
|
8856
8972
|
*/
|
8857
8973
|
DataTable.tables = DataTable.fnTables = function ( visible )
|
8858
8974
|
{
|
8859
|
-
|
8975
|
+
var api = false;
|
8976
|
+
|
8977
|
+
if ( $.isPlainObject( visible ) ) {
|
8978
|
+
api = visible.api;
|
8979
|
+
visible = visible.visible;
|
8980
|
+
}
|
8981
|
+
|
8982
|
+
var a = $.map( DataTable.settings, function (o) {
|
8860
8983
|
if ( !visible || (visible && $(o.nTable).is(':visible')) ) {
|
8861
8984
|
return o.nTable;
|
8862
8985
|
}
|
8863
8986
|
} );
|
8987
|
+
|
8988
|
+
return api ?
|
8989
|
+
new _Api( a ) :
|
8990
|
+
a;
|
8864
8991
|
};
|
8865
8992
|
|
8866
8993
|
|
@@ -9015,10 +9142,6 @@
|
|
9015
9142
|
jqTable.append( tfoot );
|
9016
9143
|
}
|
9017
9144
|
|
9018
|
-
// Remove the DataTables generated nodes, events and classes
|
9019
|
-
jqTable.detach();
|
9020
|
-
jqWrapper.detach();
|
9021
|
-
|
9022
9145
|
settings.aaSorting = [];
|
9023
9146
|
settings.aaSortingFixed = [];
|
9024
9147
|
_fnSortingClasses( settings );
|
@@ -9038,30 +9161,36 @@
|
|
9038
9161
|
} );
|
9039
9162
|
}
|
9040
9163
|
|
9041
|
-
if ( ! remove && orig ) {
|
9042
|
-
// insertBefore acts like appendChild if !arg[1]
|
9043
|
-
orig.insertBefore( table, settings.nTableReinsertBefore );
|
9044
|
-
}
|
9045
|
-
|
9046
9164
|
// Add the TR elements back into the table in their original order
|
9047
9165
|
jqTbody.children().detach();
|
9048
9166
|
jqTbody.append( rows );
|
9049
9167
|
|
9050
|
-
//
|
9051
|
-
|
9052
|
-
jqTable
|
9053
|
-
|
9054
|
-
.removeClass( classes.sTable );
|
9168
|
+
// Remove the DataTables generated nodes, events and classes
|
9169
|
+
var removedMethod = remove ? 'remove' : 'detach';
|
9170
|
+
jqTable[ removedMethod ]();
|
9171
|
+
jqWrapper[ removedMethod ]();
|
9055
9172
|
|
9056
|
-
// If
|
9057
|
-
|
9058
|
-
|
9059
|
-
|
9173
|
+
// If we need to reattach the table to the document
|
9174
|
+
if ( ! remove && orig ) {
|
9175
|
+
// insertBefore acts like appendChild if !arg[1]
|
9176
|
+
orig.insertBefore( table, settings.nTableReinsertBefore );
|
9060
9177
|
|
9061
|
-
|
9062
|
-
|
9063
|
-
|
9064
|
-
|
9178
|
+
// Restore the width of the original table - was read from the style property,
|
9179
|
+
// so we can restore directly to that
|
9180
|
+
jqTable
|
9181
|
+
.css( 'width', settings.sDestroyWidth )
|
9182
|
+
.removeClass( classes.sTable );
|
9183
|
+
|
9184
|
+
// If the were originally stripe classes - then we add them back here.
|
9185
|
+
// Note this is not fool proof (for example if not all rows had stripe
|
9186
|
+
// classes - but it's a good effort without getting carried away
|
9187
|
+
ien = settings.asDestroyStripes.length;
|
9188
|
+
|
9189
|
+
if ( ien ) {
|
9190
|
+
jqTbody.children().each( function (i) {
|
9191
|
+
$(this).addClass( settings.asDestroyStripes[i % ien] );
|
9192
|
+
} );
|
9193
|
+
}
|
9065
9194
|
}
|
9066
9195
|
|
9067
9196
|
/* Remove the settings object from the settings array */
|
@@ -9076,13 +9205,44 @@
|
|
9076
9205
|
// Add the `every()` method for rows, columns and cells in a compact form
|
9077
9206
|
$.each( [ 'column', 'row', 'cell' ], function ( i, type ) {
|
9078
9207
|
_api_register( type+'s().every()', function ( fn ) {
|
9079
|
-
return this.iterator( type, function ( settings,
|
9080
|
-
//
|
9081
|
-
|
9208
|
+
return this.iterator( type, function ( settings, arg1, arg2, arg3, arg4 ) {
|
9209
|
+
// Rows and columns:
|
9210
|
+
// arg1 - index
|
9211
|
+
// arg2 - table counter
|
9212
|
+
// arg3 - loop counter
|
9213
|
+
// arg4 - undefined
|
9214
|
+
// Cells:
|
9215
|
+
// arg1 - row index
|
9216
|
+
// arg2 - column index
|
9217
|
+
// arg3 - table counter
|
9218
|
+
// arg4 - loop counter
|
9219
|
+
fn.call(
|
9220
|
+
new _Api( settings )[ type ]( arg1, type==='cell' ? arg2 : undefined ),
|
9221
|
+
arg1, arg2, arg3, arg4
|
9222
|
+
);
|
9082
9223
|
} );
|
9083
9224
|
} );
|
9084
9225
|
} );
|
9085
9226
|
|
9227
|
+
|
9228
|
+
// i18n method for extensions to be able to use the language object from the
|
9229
|
+
// DataTable
|
9230
|
+
_api_register( 'i18n()', function ( token, def, plural ) {
|
9231
|
+
var ctx = this.context[0];
|
9232
|
+
var resolved = _fnGetObjectDataFn( token )( ctx.oLanguage );
|
9233
|
+
|
9234
|
+
if ( resolved === undefined ) {
|
9235
|
+
resolved = def;
|
9236
|
+
}
|
9237
|
+
|
9238
|
+
if ( plural !== undefined && $.isPlainObject( resolved ) ) {
|
9239
|
+
resolved = resolved[ plural ] !== undefined ?
|
9240
|
+
resolved[ plural ] :
|
9241
|
+
resolved._;
|
9242
|
+
}
|
9243
|
+
|
9244
|
+
return resolved.replace( '%d', plural ); // nb: plural might be undefined,
|
9245
|
+
} );
|
9086
9246
|
|
9087
9247
|
/**
|
9088
9248
|
* Version string for plug-ins to check compatibility. Allowed format is
|
@@ -9092,7 +9252,7 @@
|
|
9092
9252
|
* @type string
|
9093
9253
|
* @default Version number
|
9094
9254
|
*/
|
9095
|
-
DataTable.version = "1.10.
|
9255
|
+
DataTable.version = "1.10.9";
|
9096
9256
|
|
9097
9257
|
/**
|
9098
9258
|
* Private data store, containing all of the settings objects that are
|
@@ -9244,7 +9404,16 @@
|
|
9244
9404
|
* @default null
|
9245
9405
|
* @private
|
9246
9406
|
*/
|
9247
|
-
"src": null
|
9407
|
+
"src": null,
|
9408
|
+
|
9409
|
+
/**
|
9410
|
+
* Index in the aoData array. This saves an indexOf lookup when we have the
|
9411
|
+
* object, but want to know the index
|
9412
|
+
* @type integer
|
9413
|
+
* @default -1
|
9414
|
+
* @private
|
9415
|
+
*/
|
9416
|
+
"idx": -1
|
9248
9417
|
};
|
9249
9418
|
|
9250
9419
|
|
@@ -11685,7 +11854,18 @@
|
|
11685
11854
|
* @name DataTable.defaults.renderer
|
11686
11855
|
*
|
11687
11856
|
*/
|
11688
|
-
"renderer": null
|
11857
|
+
"renderer": null,
|
11858
|
+
|
11859
|
+
|
11860
|
+
/**
|
11861
|
+
* Set the data property name that DataTables should use to get a row's id
|
11862
|
+
* to set as the `id` property in the node.
|
11863
|
+
* @type string
|
11864
|
+
* @default DT_RowId
|
11865
|
+
*
|
11866
|
+
* @name DataTable.defaults.rowId
|
11867
|
+
*/
|
11868
|
+
"rowId": "DT_RowId"
|
11689
11869
|
};
|
11690
11870
|
|
11691
11871
|
_fnHungarianMap( DataTable.defaults );
|
@@ -12784,7 +12964,21 @@
|
|
12784
12964
|
* @type boolean
|
12785
12965
|
* @default false
|
12786
12966
|
*/
|
12787
|
-
"bScrollbarLeft": false
|
12967
|
+
"bScrollbarLeft": false,
|
12968
|
+
|
12969
|
+
/**
|
12970
|
+
* Flag for if `getBoundingClientRect` is fully supported or not
|
12971
|
+
* @type boolean
|
12972
|
+
* @default false
|
12973
|
+
*/
|
12974
|
+
"bBounding": false,
|
12975
|
+
|
12976
|
+
/**
|
12977
|
+
* Browser scrollbar width
|
12978
|
+
* @type integer
|
12979
|
+
* @default 0
|
12980
|
+
*/
|
12981
|
+
"barWidth": 0
|
12788
12982
|
},
|
12789
12983
|
|
12790
12984
|
|
@@ -12829,6 +13023,13 @@
|
|
12829
13023
|
*/
|
12830
13024
|
"aiDisplayMaster": [],
|
12831
13025
|
|
13026
|
+
/**
|
13027
|
+
* Map of row ids to data indexes
|
13028
|
+
* @type object
|
13029
|
+
* @default {}
|
13030
|
+
*/
|
13031
|
+
"aIds": {},
|
13032
|
+
|
12832
13033
|
/**
|
12833
13034
|
* Store information about each column that is in use
|
12834
13035
|
* @type array
|
@@ -13437,7 +13638,21 @@
|
|
13437
13638
|
* @type object
|
13438
13639
|
* @default {}
|
13439
13640
|
*/
|
13440
|
-
"oPlugins": {}
|
13641
|
+
"oPlugins": {},
|
13642
|
+
|
13643
|
+
/**
|
13644
|
+
* Function used to get a row's id from the row's data
|
13645
|
+
* @type function
|
13646
|
+
* @default null
|
13647
|
+
*/
|
13648
|
+
"rowIdFn": null,
|
13649
|
+
|
13650
|
+
/**
|
13651
|
+
* Data location where to store a row's id
|
13652
|
+
* @type string
|
13653
|
+
* @default null
|
13654
|
+
*/
|
13655
|
+
"rowId": null
|
13441
13656
|
};
|
13442
13657
|
|
13443
13658
|
/**
|
@@ -13599,6 +13814,37 @@
|
|
13599
13814
|
search: [],
|
13600
13815
|
|
13601
13816
|
|
13817
|
+
/**
|
13818
|
+
* Selector extensions
|
13819
|
+
*
|
13820
|
+
* The `selector` option can be used to extend the options available for the
|
13821
|
+
* selector modifier options (`selector-modifier` object data type) that
|
13822
|
+
* each of the three built in selector types offer (row, column and cell +
|
13823
|
+
* their plural counterparts). For example the Select extension uses this
|
13824
|
+
* mechanism to provide an option to select only rows, columns and cells
|
13825
|
+
* that have been marked as selected by the end user (`{selected: true}`),
|
13826
|
+
* which can be used in conjunction with the existing built in selector
|
13827
|
+
* options.
|
13828
|
+
*
|
13829
|
+
* Each property is an array to which functions can be pushed. The functions
|
13830
|
+
* take three attributes:
|
13831
|
+
*
|
13832
|
+
* * Settings object for the host table
|
13833
|
+
* * Options object (`selector-modifier` object type)
|
13834
|
+
* * Array of selected item indexes
|
13835
|
+
*
|
13836
|
+
* The return is an array of the resulting item indexes after the custom
|
13837
|
+
* selector has been applied.
|
13838
|
+
*
|
13839
|
+
* @type object
|
13840
|
+
*/
|
13841
|
+
selector: {
|
13842
|
+
cell: [],
|
13843
|
+
column: [],
|
13844
|
+
row: []
|
13845
|
+
},
|
13846
|
+
|
13847
|
+
|
13602
13848
|
/**
|
13603
13849
|
* Internal functions, exposed for used in plug-ins.
|
13604
13850
|
*
|
@@ -14113,6 +14359,10 @@
|
|
14113
14359
|
return [ 'first', 'previous', 'next', 'last' ];
|
14114
14360
|
},
|
14115
14361
|
|
14362
|
+
numbers: function ( page, pages ) {
|
14363
|
+
return [ _numbers(page, pages) ];
|
14364
|
+
},
|
14365
|
+
|
14116
14366
|
simple_numbers: function ( page, pages ) {
|
14117
14367
|
return [ 'previous', _numbers(page, pages), 'next' ];
|
14118
14368
|
},
|
@@ -14151,7 +14401,7 @@
|
|
14151
14401
|
attach( inner, button );
|
14152
14402
|
}
|
14153
14403
|
else {
|
14154
|
-
btnDisplay =
|
14404
|
+
btnDisplay = null;
|
14155
14405
|
btnClass = '';
|
14156
14406
|
|
14157
14407
|
switch ( button ) {
|
@@ -14190,7 +14440,7 @@
|
|
14190
14440
|
break;
|
14191
14441
|
}
|
14192
14442
|
|
14193
|
-
if ( btnDisplay ) {
|
14443
|
+
if ( btnDisplay !== null ) {
|
14194
14444
|
node = $('<a>', {
|
14195
14445
|
'class': classes.sPageButton+' '+btnClass,
|
14196
14446
|
'aria-controls': settings.sTableId,
|
@@ -14223,7 +14473,7 @@
|
|
14223
14473
|
// elements, focus is lost on the select button which is bad for
|
14224
14474
|
// accessibility. So we want to restore focus once the draw has
|
14225
14475
|
// completed
|
14226
|
-
activeEl = $(document.activeElement).data('dt-idx');
|
14476
|
+
activeEl = $(host).find(document.activeElement).data('dt-idx');
|
14227
14477
|
}
|
14228
14478
|
catch (e) {}
|
14229
14479
|
|
@@ -14521,11 +14771,12 @@
|
|
14521
14771
|
*
|
14522
14772
|
* * `number` - Will format numeric data (defined by `columns.data`) for
|
14523
14773
|
* display, retaining the original unformatted data for sorting and filtering.
|
14524
|
-
* It takes
|
14774
|
+
* It takes 5 parameters:
|
14525
14775
|
* * `string` - Thousands grouping separator
|
14526
14776
|
* * `string` - Decimal point indicator
|
14527
14777
|
* * `integer` - Number of decimal points to show
|
14528
14778
|
* * `string` (optional) - Prefix.
|
14779
|
+
* * `string` (optional) - Postfix (/suffix).
|
14529
14780
|
*
|
14530
14781
|
* @example
|
14531
14782
|
* // Column definition using the number renderer
|
@@ -14537,7 +14788,7 @@
|
|
14537
14788
|
* @namespace
|
14538
14789
|
*/
|
14539
14790
|
DataTable.render = {
|
14540
|
-
number: function ( thousands, decimal, precision, prefix ) {
|
14791
|
+
number: function ( thousands, decimal, precision, prefix, postfix ) {
|
14541
14792
|
return {
|
14542
14793
|
display: function ( d ) {
|
14543
14794
|
if ( typeof d !== 'number' && typeof d !== 'string' ) {
|
@@ -14556,7 +14807,8 @@
|
|
14556
14807
|
intPart.toString().replace(
|
14557
14808
|
/\B(?=(\d{3})+(?!\d))/g, thousands
|
14558
14809
|
) +
|
14559
|
-
floatPart
|
14810
|
+
floatPart +
|
14811
|
+
(postfix||'');
|
14560
14812
|
}
|
14561
14813
|
};
|
14562
14814
|
}
|
@@ -14660,11 +14912,9 @@
|
|
14660
14912
|
_fnCalculateColumnWidths: _fnCalculateColumnWidths,
|
14661
14913
|
_fnThrottle: _fnThrottle,
|
14662
14914
|
_fnConvertToWidth: _fnConvertToWidth,
|
14663
|
-
_fnScrollingWidthAdjust: _fnScrollingWidthAdjust,
|
14664
14915
|
_fnGetWidestNode: _fnGetWidestNode,
|
14665
14916
|
_fnGetMaxLenString: _fnGetMaxLenString,
|
14666
14917
|
_fnStringToCss: _fnStringToCss,
|
14667
|
-
_fnScrollBarWidth: _fnScrollBarWidth,
|
14668
14918
|
_fnSortFlatten: _fnSortFlatten,
|
14669
14919
|
_fnSort: _fnSort,
|
14670
14920
|
_fnSortAria: _fnSortAria,
|