1
0
mirror of https://github.com/DataTables/DataTables.git synced 2024-12-04 16:24:11 +01:00
Commit Graph

387 Commits

Author SHA1 Message Date
Allan Jardine
269bf01da0 Fix: Improve column selector when used with a complex jQuery selector for pseudo selectors
- Many thanks to chrisaeg for pointing this out!
2016-08-09 17:55:19 +01:00
Allan Jardine
15baf23757 Dev: Revert 6f6b3d4b14fbba4a8818d8a24dc71763f9e92c80 - it was completely wrong! 2016-08-09 17:52:59 +01:00
Allan Jardine
dfd7241083 Dev: Correct internal parameter names - they we misleading in the code 2016-08-09 17:51:07 +01:00
Allan Jardine
66e1e89ed7 Merge branch 'master' of https://github.com/DataTables/DataTablesSrc 2016-08-09 17:48:56 +01:00
Allan Jardine
429b623190 Added new test
Callbacks- createRow.js
2016-08-09 17:48:40 +01:00
Allan Jardine
00682a585e Merge pull request #80 from aij/master
Fix: When sorting a date column, an empty string would be incorrectly used as 1970-01-01.
2016-08-09 17:47:52 +01:00
Allan Jardine
50d14fc06c Added new tests for columns options.
Includes-

columns.orderable
columns.className
columns.name
columns.orderData
columns.searchable
columns.title
columns.visible
columns.width
2016-08-09 17:47:19 +01:00
Allan Jardine
df8192e3be Fix date sorting of empty fields
Previously, date sorting of values that
failed to parse as a date were sorted as
if they were 1970-01-01 (Unix and JS epoch).

Now, they sort before other dates.

Example:
https://jsfiddle.net/qae6zjty/1/
2016-08-09 17:47:03 +01:00
Allan Jardine
3a432c5db3 DataTables 1.10.12! 2016-05-20 14:09:02 +01:00
Allan Jardine
e25a106ecc New: $.fn.dataTable.util methods are now overridable (throttle and escapeRegex)
- It is useful to be able to replace some of the utility methods with
  your own custom ones - for example a debounce rather than tha throttle
  for filtering.
- This commit reorders the code a little to make that possible. No new
  code is present at such - its really about reordering the current code
  to make `$.fn.dataTable.util` the host for the original functions.
  Backwards compatiblity is provided by assigning the util methods to
  their old variables. With the next major update they should be removed
  and the util methods used directly.
- Other util methods should be added at the same time, escapeHtml,
  unique, etc.
- Fixes DataTables/DataTables #810
2016-05-09 15:25:20 +01:00
Allan Jardine
73abf82c1d Fix: dt-api order() called with an empty array would cause a JS error
- Fixes DataTables/DataTables #800
- Its safe to check for `.length` on `orders` at this point since it can
  be either a number, an array or undefined. The number and undefined
  conditions have already been checked, so it must be an array (of
  whatever length).
2016-04-19 17:51:22 +01:00
Allan Jardine
e6d8429987 Dev: Fix recursion error with Responsive from last commit. Need to be
more selective about when we fire `column-visiblity`!
2016-04-19 17:50:49 +01:00
Allan Jardine
938289db93 Dev: A JS error was introduced with the column visiblity change - undefined variable.
- Need to use two iterators for the columns visible unfortunately
2016-04-19 17:49:39 +01:00
Allan Jardine
1749cb2b1b Fix: Performance issue when using columns.visible() as a setter.
The column resize was being called for every column.
2016-04-18 15:09:38 +01:00
Allan Jardine
e350e155d2 Fix: Column visiblity count was only correct if the table was actually visble itself. We want to be able to count columns even when the table is not visible.
- Thread 33203
2016-02-15 15:14:16 +00:00
Allan Jardine
45ed4f3973 Dev: Version bump 2016-02-15 15:13:38 +00:00
Allan Jardine
d0163e24a0 DataTables 1.10.11 release 2016-02-11 14:30:12 +00:00
Allan Jardine
cf37b3bcfc Fix: Visible column count should take account of display:none columns as well as those removed from the DOM by DataTables core. This improves compatiblity with Responsive 2. 2016-02-10 15:05:41 +00:00
Allan Jardine
4ce6614977 Fix: Clear the cached data setter for DOM sourced tables when setting column options. This fixes issues with ColReorder and DOM sourced tables
- Fixes DataTables/ColReorder #50.
2016-02-09 15:29:26 +00:00
Allan Jardine
f734cdb672 Dev: Add example ordering information for FixedColumns
- Really must make some dynamic logic for this...
2016-02-05 12:15:50 +00:00
Allan Jardine
bc5adb493c Initial integration work for the uikit framework.
Updated the mit license with a comment on additional author Google Inc.
2016-02-05 12:15:16 +00:00
Allan Jardine
c0f3242d0d Dev: Remove trailing comma 2016-02-04 15:46:23 +00:00
Allan Jardine
e253006207 New: Greatly improve the utility of the row, column and cell selectors:
* `dt-api rows()` and `dt-api row()` can now be used with a cell from
    the table body (not limited to only the `tr` elements
  * `dt-api columns()` and `dt-api column()` can now be used with a cell
    from the table body (not just the column headers as before)
  * All three selector types can use an element with the `data-dt-row`
    and / or `data-dt-column` (as approrirate) attributes on them or a
    parent. This is useful for API integration with FixedColumns and
    Responsive. For example you can now pass a cell in a fixed column
    into the `dt-api cell()` method to select the original cell.
2016-02-04 14:44:38 +00:00
Allan Jardine
61fdeb0b9b Fix: When using data-* attributes for orthogonal data with a DOM sourced table, don't write to the DOM if the data hasn't changed.
- Fixes DataTables/DataTables #684
2016-02-03 15:40:44 +00:00
Allan Jardine
ff3bccad58 Fix: Checked radio boxes could be incorrectly unchecked if autowidth was enabled (which it is by default)
- Fix is to remove the name attribute. This would have no effect on the
  column width and means the radio element isn't in a group.
- See thread 32931
- Fixes DataTables/DataTables #569
2016-02-03 11:44:24 +00:00
Allan Jardine
c4986625c8 Fix: Improved DOM ordering for scrolling tables - colgroup, thead, tfoot
- Fixes DataTables/FixedColumns #8
2016-02-03 11:43:48 +00:00
Allan Jardine
386150893a Fix: Javascript error would occur if trying to use dt-api cells().nodes() on a cell that doesn't exisit in the DataTable
- Fixes DataTables/KeyTable #23.
2016-02-03 11:41:22 +00:00
Allan Jardine
af95119318 Dev: Version bump to dev 2016-01-07 15:33:02 +00:00
Allan Jardine
9563278a4a Fix: Potential column misalignment when scrolling with footer content that defines the width
- The scrolling body used to have the header content retained but
  hidden, while the footer was just emptied. But if the footer content
  is long enough to define the width of the column this results in
  column misalignment.
- Fix is to treat the footer in the same way as the header is.
2016-01-07 15:32:39 +00:00
Allan Jardine
f3fc3cd64e Fix: Remove redundant code in column visibility. Could cause slower performance
- Thanks sameeralikhan - thread 32212
2016-01-07 15:28:39 +00:00
Allan Jardine
344565a03d Fix: Column widths are not only applied to the DataTables detected headers when scrolling is activated. This will have no change on most tables, but for those with complex headers it prevents potentially contradictory sizes being applied which can result in column misalignment. 2016-01-07 15:28:13 +00:00
Allan Jardine
6c9c5433eb Fix: dt-api cell().data() would not return null values for cells if defaultContent was set. It should return the original data point for that cell, even if it is null. This also effects dt-api column().data() and their plural counterparts. 2016-01-07 15:26:52 +00:00
Allan Jardine
b7c671444d Fix: The number rendering helper will now automatically escape HTML entities to help prevent possible XSS attacks if using a number renderer.
Rational for this is that the number renderer expects a number
input, not HTML, but if non-numeric input is given the value is just
returned (now escaped) - for example an empty string.
2016-01-07 15:24:53 +00:00
Allan Jardine
e245645544 Version - 1.10.10 ready 2015-11-06 15:34:24 +00:00
Allan Jardine
6f67df2d21 New: $.fn.dataTable.render.text renderer method that can be used to help prevent against possible XSS attacks. It will basically encode HTML entities so they are shown in the rendered view rather than being written directly as HTML.
Update: `$.fn.dataTable.render.number` will now return the original value rather than NaN if the value cannot be parsed as a number.
2015-11-06 10:40:50 +00:00
Allan Jardine
06a6a0c429 Dev: Add a plugin-init event which is triggered immediately prior to init
- This is so that Buttons (and others) can listen for this event and
  create the buttons before the user init functions. Otherwise they
  would need a setTimeoutout to be able to access the Buttons methods
  immediately.
2015-11-04 16:33:00 +00:00
Allan Jardine
b36cbc745b Update: Allow a window to be passed in for CommonJS factory which gives DataTables the ability to be used in a headless environment (server-side rendering for example)
- Factory builder redesigned to pass in window and document to the
  factory method, mandating a small update to the AMD and Browser
  loaders
- Main change in is the CommonJS loader which can now optionally have a
  window object passed in - if it is not passed in `window` will be used
  (if this is the case in a CommonJS environment without a root object
  being passed in an error will occur).
- DataTables caches a reference to the jQuery instance so the plug-ins
  can easily reference jQuery while retaining their current return of
  the module they define. This basically means that DataTables core will
  include jQuery for the plug-ins.
- This does increase the core library size by ~160 bytes which is rather
  frustrating, but I think this is the correct way to go about it
- With thanks to Evan Carroll for input on this:
  https://github.com/DataTables/Plugins/issues/199
2015-11-03 16:32:39 +00:00
Allan Jardine
8fe17acf82 Update: A dt-init scrollX table is now allowed to collapse horizontally - simply don't specify style="width: 100%" or width="100%" for your table in the HTML and it will be allowed to collapse if the columns are smaller than the space required.
Fix: Force a column width if `dt-init scrollX` is specified and a column width is given. This can be overruled if the width given is too small for the content

- We already use the width attribute to determine if the table should
  resize dynamically to 100% width, so it makes sense to use that when
  scroll-x is enabled as well.
- This still isn't perfect as Chrome seems to change between a
  box-sizing calculation depending if scrolling is required or not so
  there can be a shift in column widths when changing between a
  scrolling state and not (column visibility) which is ugly, but is
  proving to be difficult to deal with.
2015-11-03 16:32:10 +00:00
Allan Jardine
ab982a537e New: dt-init language.aria.paginate options which can be used to specify ARIA label attributes for the pagination buttons. Particularly useful if you wish to use icons in place of the button text. 2015-10-28 11:38:01 +00:00
Allan Jardine
b9bdc5eb11 Fix: dt-api page.info() reported the page length as 10 when paging was disabled - should be -1 2015-10-28 09:03:41 +00:00
Allan Jardine
66893ae170 Update: Add column index information to the Requested unknown parameter error message to provide additional debug info 2015-10-28 09:03:15 +00:00
Allan Jardine
8adcf16743 Fix: Column alignment errors in IE due to sub-pixel rendering issues. Basically this came down to the width of the table not equalling the width of the cells in the table and if the column widths assigned and the table width assigned did not match perfectly, IE would ignore the column widths assigning and layout as it saw best. Now the column width calculation will remove this sub-pixel issue by rounding up and also keep a track of the table width itself rather than reading from the DOM.
Fix: ` ` in cells could cause column alignment errors as it was being counted as 6 characters rather than 1 in the find longest string method.
2015-10-27 12:05:03 +00:00
Allan Jardine
c55f460e6d Dev: Removing the Chrome workaround - this appears to be extremely hard
to reproduce the error and it is only occuring on Chrome Mac with a
combination of the CSS in the DataTables demos specifically. This is an
edge case that I'd rather not add code for at the moment.
2015-10-22 11:39:02 +01:00
Allan Jardine
40dda9c24f Fix: If dt-init scrollX is enabled for a table that doesn't need horizontal scrolling, but does have vertical scrolling, when the table is filtered to have no vertical scrolling the columns would be misaligned due to the column widths not being recalculated for the new table width.
Fix: Chrome has an odd bug whereby the max-height needs a reflow in order to be correctly calculated - otherwise a gap could appear at the bottom of the table

- Haven't been able to reproduce the Chrome issue in a simple test case
  - its something to do with the scrollbars being shown while the scroll
  column calculations / updates are being done and then no longer
  being needed ater that point.
2015-10-22 11:18:39 +01:00
Allan Jardine
727937c836 Dev: Fix whitespace issues from #57 - looks like a merge diff error
Dev: Code style updated to match DataTables (unwritten!) standard
Dev: Removed some of the protection on the cell index update on row
  delete - it is safe to assume that since we have a cell node, we've
  assigned an index to it.
2015-10-13 15:31:07 +01:00
Allan Jardine
00100f5afe Merge pull request #57 from strang91/master
Updated: Performance improvement by caching cell indexes for use with cell selectors
2015-10-13 15:30:38 +01:00
Allan Jardine
3b867f209c New: Pass the recalculation parameter through to the dt-event column-visibility event allowing listeners to optimise for it 2015-10-13 15:30:18 +01:00
Allan Jardine
08d61efa63 Dev: Naming for AMD and CommonJS loaders set to a unique value that will be useable on bower and npm due to no conflicts.
- Using just `datatables` would be difficult since I and others already
  publish packages with that name. Anyone using those packages already
  would run into real issues if I were to change their meaning and
  contents!
2015-10-13 15:28:14 +01:00
Allan Jardine
954a3b080b Update cell node indexes when removing a row 2015-10-13 15:26:36 +01:00
Allan Jardine
d481e0d441 Update: Updating the AMD and CommonJS loaders
- Cannot pass in a `dt` instance - will always use the one from the
  jQuery instance given
- Don't check for reinitialisation or for jQuery when working in the
  browser - will throw an error if in browser and no jQuery, which is
  correct, DataTables needs jQuery
2015-10-06 12:06:06 +01:00
Allan Jardine
dd5ddd46a0 Fix: Performance improvement for the every() methods. Rather than a new API instance being excplicitly created for every item, use the exisiting instance as the basis for the selector.
- The item selector returns a new instance, so there is no impact upon
  compatiblity
2015-10-06 12:05:19 +01:00
Allan Jardine
c0cb3db92f New: DataTables no longer defines itself as a named AMD module
New: CommonJS will load jQuery if it wasn't passed in
Fix: Bootstrap, Foundation and jQuery UI integration Javascript files use module.exports correctly
Dev: Change the file include "function" name to not conflict with `require`

- AMD / RequireJS - The Require documentation strongly discorages using
  a named module, but I've used this in the past as the plug-ins need a
  name to depend upon themselves. This is still `datatables` but if the
  developer is using Require and it resolves automatically to a
  different name (which it may depending upon their configuration) they
  can use a map option to map their name to `datatables`. See
  https://github.com/moment/moment/issues/1095

- CommonJS - Based on the disscussion in
  https://github.com/DataTables/Plugins/issues/199 it seems that some
  developers like to pass a certain version of jQuery in. This
  modification allows them to do so while retaining backwards
  compatiblity.

- Integration files - The UMD wrapper for these files have been
  restructured to be easier to follow. Also, based on the discussion in
  the Plugins issue noted above you can now pass in a jQuery instance or
  not and likewise a DataTables object or not.

- To avoid direct conflict with `require()` the build scripts have been
  updated to use a "function" called `_buildInclude`. Ultimatily this
  should really be updated to use grunt or similar.
2015-10-06 12:03:36 +01:00
Allan Jardine
9fe4110826 Fix: Improve integration for NPM / CommonJS - jQuery object to augment can now be passed in. This applies to DataTables core as well as the integration files for Bootstrap, Foundation and jQuery UI 2015-10-06 12:02:51 +01:00
Allan Jardine
5e34369a56 Fix: Column width calculation could be incorrect when not using any user defined widths or hidden columns
- All credit to @montrothstein for finding and fixing this -
  DataTables/DataTables #681
2015-10-06 12:02:08 +01:00
Allan Jardine
ea9e926b53 Dev: Output a warning if html tidy is not installed
- I just updated my PHP and HTML Tidy was not installed which resulted
  in the examples in the dist repo all being rewritten unfortunately.
  This should stop that happening again.
2015-09-25 10:08:52 +01:00
Allan Jardine
b84cc6063e Fix: The every() method did not have the selector options applied to it - this was particularly noticable with the dt-api columns().every() method
- See DataTables/DataTables #679 and https://jsfiddle.net/7mgny9gb/2/
- Thanks @mpryvkin for noting this bug and the test cases
2015-09-25 09:50:54 +01:00
Allan Jardine
52b30868a1 New: dt-api order.fixed() to get / set the fixed ordering of the table 2015-09-16 15:55:05 +01:00
Allan Jardine
898cdca4ff Fix: If x-scrolling is enabled using $.fn.dataTable.defaults.scrollX=true; an error would occur
- Fixes thread 30084
- Error introduced by commit 67ed583159419cec6fee14c5ecaafc5f75e7cf5c
2015-09-10 10:00:00 +01:00
Allan Jardine
561b88551e Fix: Adding a default builder string into the ext object to allow builder sourced files to work with require.js
- This comes about from thread 29819 which highlights that inserting the
  buidler string as a variable into the static file causes issues.
- This will only take effect once 1.10.10 has been released
2015-09-09 14:02:25 +01:00
Allan Jardine
a75f0a7057 Fix: Row ids were not being automatically picked up from DOM sourced tables 2015-09-07 15:54:36 +01:00
Allan Jardine
c40604d2c1 Moving on to 1.10.10 development 2015-09-07 15:54:09 +01:00
Allan Jardine
b1bca78111 DataTables 1.10.9 release 2015-09-01 09:51:29 +01:00
Allan Jardine
648726b19e Fix: When using a cell selector, if the element doesn't have a parent node (caused by it being hidden and a jQuery selector being used) an error would be thrown.
- The fix is to loop over the data array to find the cell. Slower, but
  for an edge case I think this is an approriate fix.
- This fixes DataTables/DataTables #653
2015-09-01 08:38:38 +01:00
Allan Jardine
119a355970 Fix: It was possible to select an item multiple times using redundant selectors.
- Example: table.rows( ['', '', '', ''] ) would have selected all rows 4
  times!
2015-09-01 08:38:09 +01:00
Allan Jardine
8a4dc8a9d7 Fix: Using Array.prototype.push.apply can fail on larger tables / queries due to limits on the number of arguments that can be passed to a function, imposed by the various Javascript engines.
- The fix is to replace with more approriate options. The jquery
 `$.merge` function in particular is useful and array concat when we
 don't need to maintain a refernce.
- This fixes DataTables/DataTables #651
2015-08-31 14:26:04 +01:00
Allan Jardine
e48efdf316 Fix: Setting non-array data when DataTables has been told to expect an array results in a Javascript error. Although this is somewhat unexpected input, it is reasonable to expect DataTables to handle null values here, even although an empty array is much prefered.
- THis fixes DataTables/DataTablesSrc #55
2015-08-31 14:25:09 +01:00
Allan Jardine
4f27154fe4 Fix: Clear cache of row ids when the table is cleared. This is particularly important when server-side processing since the rows should no longer exist on the client-side when paging between records. 2015-08-28 12:20:41 +01:00
Allan Jardine
726bfe5ebb Fix: Rows could still be selected by id after they had been removed from the table. This could result in a memory leak as well as rows being selectable when they shouldn't be. 2015-08-28 12:20:11 +01:00
Allan Jardine
3a43de4224 Fix: Column data setter function would be called twice for the first row in the table
- This was caused by using `_fnGetRowElements` to get the cells. While
  it was good for performance with large number or rows to do so, it
  isn't needed for a single row and a single line of jQuery is simpliler
  and doesn't trigger the set function
- Fixes DataTables/DataTables #638
2015-08-27 10:54:28 +01:00
Allan Jardine
03dc5a31ac Fix: When using a DOM data source, the cell's data function, as a setter, would be called twice
- The issue was effectively duplicate code - for 1.9- compatiblity when
  I introduced 1.10 I had the set function run specifically if a DOM
  node was given. But later in the 1.10 series when it became possible
  to have the data written to an object rather than an array, that code
  would itself call the setter, thus leading to two calls when there is
  a DOM node present for the row.
- The first is simply to remove the code that was running the setter for
  the DOM specific case.
- This fixes DataTables/DataTables #638 and thread 25846. Thanks to
  @Jamaur and @strang91 for following up on this.
2015-08-25 15:10:06 +01:00
Allan Jardine
17d0ce4cce Fix: Columns could be set to 0 width in IE6/7 when there are hidden columns in the table
- This fix also comes out of DataTables/DataTables #633. Thanks again to
  @nddery and @epitaphmike.
2015-08-25 14:18:58 +01:00
Allan Jardine
7d3c5cc276 Fix: Browsers on Macs with zero width scrollbars would be incorrected treated the same way as IE6/7 causing column width calculations to be incorrect.
- The issue was caused by the check for the `bScrollOversize` option
  which looks for the container being the same width as its inner
  content area. Obviously that happens to be true if there is no
  scrollbar. Adding a check for the clientWidth not being 100 as well
  resolves this.
- I've also combined the scrollbar width detection with the other
  browser detect functions. The two functions were performing very
  similar operations and so easily combined
- The browser detect DOM creation will only run once, rather than for
  every table initialisation, optimising multi-table loading
- Fixes DataTables/DataTables #633 - Thanks to @nddery and @epitaphmike
  for the input
2015-08-25 14:18:30 +01:00
Allan Jardine
e7e439dd0a Fix: Cell invalidation would fail due to incorrect logic
- If d or objectRead were truthful then the row's data object would be
  replaced with an empty object. This was one shortcut in code too many!

- Relates to thread 29530 with thanks to idleog.
2015-08-19 14:40:22 +01:00
Allan Jardine
9ef7f1ad20 Fix: Compatibility with jQuery 2's isPlainObject. API instances were returning as plain objects
- This appears to be caused by setting the prototype chain as an object
  directly. For example:

  var test = function () {};
  test.prototype = {};
  $.isPlainObject( new test() );

  will return `true` with jQuery 2.1.4 (and `false` for 1.11.3).

  If an item is added to the prototype object then it will return
  `false`, although for some reason that wasn't the case with
  DataTables' API prototype.

  More investigation required, but for full compatiblity with exisiting
  jQuery releases, the correct thing to do here is to build on the
  exisiting prototype, which we can do with `$.extend`.
2015-08-19 12:25:28 +01:00
Allan Jardine
3950e119e2 Fix - docs: Add note to dt-api draw() that the string options require 1.10.8 or newer 2015-08-19 09:54:48 +01:00
Allan Jardine
a6e75123eb Update rows().ids().xml
Spell mistake
2015-08-19 09:54:19 +01:00
Allan Jardine
7898f4e585 Merge branch 'master' of github.com:DataTables/DataTablesSrc 2015-08-19 09:53:47 +01:00
Allan Jardine
52531db870 Update selector-modifier.xml
Just a small spell mistake
2015-08-19 09:52:44 +01:00
Allan Jardine
085d7f3137 Fix: Row invalidation would throw an error when reading from a DOM row
- Fixes DataTables/DataTables #623
2015-08-17 09:34:39 +01:00
Allan Jardine
44b1402fa6 DataTables 1.10.9 development starts 2015-08-17 09:34:10 +01:00
Allan Jardine
f91373337b DataTables 1.10.8 release 2015-08-12 19:49:47 +01:00
Allan Jardine
60273a0a75 Dev: Update the new rowId option to be able to read the id from the DOM 2015-08-12 19:49:29 +01:00
Allan Jardine
9cc3be030f Fix: Calculation for horizontal scroll bar adjustment when the dt-init scrollCollapse parameter is set could be incorrect when the standard height exceeds the window height.
- This is an interesting one, and I suspect a bit of an edge case in the
  browsers - what is happening is that the window is going from having a
  scrollbar to not having a scrollbar when the scrolling viewport is
  collapsed. This causes the browser to show the scrollbars in the
  viewport for an instant, even although they aren't actually required.
  If the height of the viewport is 53px and you up it to 80 so there are
  no scrollbars and reduce it back to 53 the scrollbars are gone! The
  browser must be stopping a race condition once the scrollbars are
  shown.

- The fix is to use `max-height` for the scrolling container if the
  scroll collapse is set and `height` otherwise. The browser native
  methods makes the code _much_ easier to work with, more performant and
  easier to understand.
2015-08-10 17:47:34 +01:00
Allan Jardine
07c04c69f8 Dev fix: Commit f2df0716 removed a check for IE6/7 to disable the smart
column width for these tables. However, that was in error - it is in
fact required still as the smart width calculations cause the browser to
crash (APPCRASH). There is no indication as to why this is, not is it as
simple as just disabling one or two pieces of code to stop the crash.
This leads me to suspect that it is the number of operations being
performed - particularly to do with the cloning of the elements. If this
is the case, then its just never going to work. Also IE6/7 are such a
small market now (thank goodness) this is just a feature that won't be
available in those browsers.

If anyone is interested in working on fixing it, or paying me to do so,
I'm happy to hear from you :-)
2015-08-10 17:47:12 +01:00
Allan Jardine
d0e9e78db4 Fix: Horizontal scrolling could incorrectly be triggered in Firefox when there is lots of room available and scrolling is not required. This was due to sub-pixel rendering of the columns, but the widths being rounded up to integer values. Using getBoundingClientRect addresses this. IE8- have to continue using the old method.
Fix: The auto width calculation table, when scrolling is enabled, being inserted into the scrolling container could cause the viewport to scroll, even when the main table doesn't actually need scrolling. This causes the column width calculations to be incorrect by the scrollbar's width. The fix is to have the calculation table `position:absolute` in the scrolling container and height:1px so it has no effect on the vewport's scrolling.

- These two fixes address DataTables/DataTables #612. Kudos to @Delgan
  for reporting these issues and supplying test cases - thanks!
2015-08-10 14:59:04 +01:00
Allan Jardine
201cc7fb69 Fix: If dt-init deferRender was enabled, the dt-event init event wouldn't trigger until after the table's second draw.
- This could be seen specifically when using Responsive with a defer
  rendered table - Responsive wouldn't kick in until after the second
  draw.
2015-08-06 20:42:01 +01:00
Allan Jardine
a2948e4c1e Fix: Simplification and improvement of table widths when scrolling
Fix: Table could overscroll if `dt-init data` is used to populate the table

This is a fairly significant change to how DataTables operates for the
scrolling width calculations and primarily is due to a simplification
with the use of `clientWidth` to get the scrolling container width.
Rather than getting the offsetWidth and then removing the scrollbar
width if required the `clientWidth` will give us the value directly.

With the scrollbar width already accounted for the scrolling draw code
can be updated to not need to account for it itself.

Finally, when using the `data` property to add data to the table we need
to recalculate the column widths after the first draw, just like with
Ajax loaded data, otherwise the data added won't be taken into account
and we can get an error in the scrolling.
2015-07-24 15:38:59 +01:00
Allan Jardine
534e281b39 New: dt-api draw() now accepts a string parameter which can be used to perform a simple redraw without the need to reorder / research the table. This is useful for paging where, otherwise, it would be a performance hit. 2015-07-24 11:44:34 +01:00
Allan Jardine
d1352ac898 Merge branch 'master' of github.com:DataTables/DataTablesSrc 2015-07-24 11:43:09 +01:00
Allan Jardine
fcd96cc5e3 Fix - docs: dt-api rows().every() example was missing a parameter
- This fixes DataTables/DataTables #608
2015-07-24 11:42:49 +01:00
Allan Jardine
b61ac2a9db Resolve issue with focusing when there are multiple graphs updating on the same page 2015-07-24 11:42:12 +01:00
Allan Jardine
4222dec97d Merge branch 'master' of github.com:DataTables/DataTablesSrc 2015-07-15 17:10:41 +01:00
Allan Jardine
4b378ff787 Dev: Updating the XML for the external styling examples to use the new example build framework 2015-07-15 17:10:24 +01:00
Allan Jardine
821e866ac0 fix for incorrect calculation in _fnBrowserDetect
when body's position is changed (left: 375px) _fnBrowserDetect incorrecly calculates offsets. thus header is a bit misaligned. commit changes test object's position to fixed. in this case it's position will
be relative to the viewport not to the body.
2015-07-15 17:09:48 +01:00
Allan Jardine
1447c26a78 Fix: Potential memory leak when using static events on table elements and destroying tables
When the table was being destroyed and the remove parameter was passed
in as `true` to remove the table from the DOM there was potential for
bound events to not be unbound from the table elements. This was caused
by the use of the `detach` jQuery method which will not remove events.
Furthermore, rows would not be added to the table before this method (or
`remove()`) was called. As such we need to reorder the code slightly -
attach the rows back into the DOM and then remove them (or detach if the
table is left in the DOM) - otherwise rows which were hidden by paging
would not have their events unbound.

Many thanks for KnowledgeNet ( http://kn-it.com/ ) for their support in
finding and allowing this bug to be addressed!
2015-07-09 10:21:10 +01:00
Allan Jardine
549bd19854 New: Optimised ID selectors - Also works when rows have not yet been rendered.
Being able to get and keep a reference to each row is quite important.
You can't use the DataTables row index for this as it can potentially
change, but we can use IDs, based on a unique value for each row in the
data - `dt-init rowId`.

I've made the decision to not require escaping of data in the ID. This
means that selectors can be ID selectors with a cobontation of other
things (#div.class for example) as that really doesn't make much sense
in this contact - you only have rows that you can select from. Not
requiring escaping makes both the client and library code much easier.
This is documented.

The implemention is to store a reference to each row's data object based
on its id allowing for a trivial lookup. The object has its own index
in the `aoData` array, so there is no `indexOf` required. The only
downside is that the index must be updated when a row is deleted. This
is done with a trivial for loop.
2015-07-06 21:05:27 +01:00
Allan Jardine
abc683d393 Dev: dt-api rows().ids() and dt-api row().id() methods should return undefined if a row's id is undefined 2015-07-06 21:05:08 +01:00
Allan Jardine
7e2c6b4d0f New: dt-api page.info() includes a new parameter to indicate if server-side processing is being used or not for the table 2015-07-06 21:03:56 +01:00
Allan Jardine
dda351a54e Fix: Row details could potentially throw an error if used on an row that doesn't exist (might have been removed) 2015-07-06 21:03:39 +01:00
Allan Jardine
29fd57569a New - dt-api $.fn.dataTable.tables() can now return an API instance which makes for easy chaining to call methods on the selected tables. This is done by now being able to provide an object (providing two booleans is confusing unless you have the manual right next to you!) 2015-07-06 21:01:47 +01:00
Allan Jardine
36929eade3 Fix: Initialisation on an element other than table would result in a Javascript error
* Issue was that an `error` event was being triggered before the
  settings object had been configured. There is no option to trigger an
  error event in this case.
* Fixes DataTables/DataTables #572
2015-06-10 09:48:45 +01:00
Allan Jardine
5a47fe5a9b Merge branch 'master' of github.com:DataTables/DataTablesSrc 2015-06-10 09:48:26 +01:00
Allan Jardine
dd6612f24a New: dt-event preInit event - emitted while a table is being initialised, allowing developers to modify the data being requested by DataTables for the first draw of the table. Used by Scroller 1.3.0 and likely will be by other extensions soon. 2015-06-10 09:48:06 +01:00
Allan Jardine
a5613441dc Dev: Add Scroller as a framework library 2015-06-10 09:47:23 +01:00
Allan Jardine
1effb64cfa Fixed event handlers in table headers in IE8
On line 605, column.sTitle is set to the TH's innerHTML.
On line 1816, column.sTitle is compared with cell.html().

If you have child elements with event handlers on them inside the TH, these are not the same in IE8 (see https://gist.github.com/simonbrent/933e552739477f4be3ab#file-test-html)

As a result, the check on 1816 fails, the contents of the cell is replaced, and the event handlers are removed.

Comparing instead with cell[0].innerHTML fixes this issue.
2015-06-10 09:45:55 +01:00
Allan Jardine
cf1e9d1fab Fix: dt-api ajax.reload() should cancel an exisiting request if that request has not yet completed
- Thread 28197. Thank you _womplify_!
2015-06-08 11:13:56 +01:00
Allan Jardine
f9cdaead17 Dev: Fix trailing comma 2015-06-04 15:35:06 +01:00
Allan Jardine
801e4bedf1 New: dt-init rowId option to specify what property should be used from the row's data source object to read the row's id and then set it as the DOM id (previously this was static as the DT_RowId option)
New: `dt-api row().id()` and `dt-api rows().ids()` to get the id from one or multiple rows, based on the new `dt-init rowId` option
2015-06-04 15:26:45 +01:00
Allan Jardine
759ea3d733 Update: The dt-api rows().every(), dt-api columns().every() and dt-api cells().every() methods are now passed index and loop counter parameters 2015-06-03 17:07:55 +01:00
Allan Jardine
d95820dd2a New: dt-api count() method. This provides a short cut method to determine how many items have been selected by the API. This can be useful to count the number of selected rows, etc. 2015-06-03 17:07:17 +01:00
Allan Jardine
4f3525786d Update: Add postfix option to the number renderer option 2015-06-03 17:06:58 +01:00
Allan Jardine
f817194a09 Fix: If the paging language options were set to be an empty string, the button wouldn't render. This is not correct as it doesn't allow CSS icons to be used rather than the strings. 2015-05-30 14:10:31 +01:00
Allan Jardine
3de8e7c3fe Merge branch 'master' of github.com:DataTables/DataTablesSrc 2015-05-30 14:10:12 +01:00
Allan Jardine
04598f91ff Fix - docs: dt-api row.add() and dt-api rows.add() will accept tr elements 2015-05-30 14:09:54 +01:00
Allan Jardine
feccbc5968 jq 2.1.4 sppt 2015-05-30 14:09:19 +01:00
Allan Jardine
09ff48a486 New: Add numbers paging option for dt-init pagingType to round off the full set of basic options
Thank you `rubenduiveman` for suggesting this enhancement
2015-05-13 13:51:23 +01:00
Allan Jardine
c61947f5f3 Fix: dt-init scrollX could not be given as false - it still enabled x-scrolling 2015-05-06 16:18:28 +01:00
Allan Jardine
7081a1a7c6 1.10.8-dev version flag 2015-05-06 11:31:46 +01:00
Allan Jardine
768f7cdc46 Fix: Disabling smart column width for IE67 as it can cause the browser to crash 2015-05-06 11:30:27 +01:00
Allan Jardine
17130d2fd5 Fix: When scrolling is enabled and column visiblity is toggled a Javascript error would occur due to the column width calculation method cloning the wrong header element.
This fixes thread 27612 and DataTables/DataTables issue #553
2015-05-06 11:30:10 +01:00
Allan Jardine
ded5ee322c Dev: Bringing the integration files for the various frameworks that DataTables supports into the repo
This is so each repo defines its own integration files, ensuring that
they are both easy to update and that they are up-to-date. I will be
blogging about this change next week.
2015-05-06 11:27:47 +01:00
Allan Jardine
fc64e71e1c DataTables 1.10.7 release 2015-04-30 15:08:43 +01:00
Allan Jardine
2f85ace4a1 Fix: IE6/7 could crash completely when using auto width due to a clone of a clone occuring. This was bad for performance anyway and has been rewritten to resolve both the IE crash and performance issue
See thread 27428 for further information
2015-04-30 14:01:55 +01:00
Allan Jardine
5484fdaec3 Fix: For convenience $.fn.dataTable.Api() will now automatically construct a new DataTables API instance (i.e. it is functionality identical to calling new $.fn.dataTable.Api(). This addresses an outstanding todo item and an error in instanceof logic for the exisiting constructor 2015-04-30 14:01:16 +01:00
Allan Jardine
432a0dc18a New: dt-event xhr can now return true to have DataTables not trigger the dt-event error event for cases where you've handled the error yourself now that dt-event xhr is triggered on error as well 2015-04-30 10:02:16 +01:00
Allan Jardine
e4a12ed19d New: Always trigger the dt-event xhr event on completion of an Ajax request, regardless of whether it was successful or in error
New: The jQuery XHR object is passed into the `dt-event xhr` event as the fourth parameter

* This fixes DataTables/DataTables #542
2015-04-29 21:52:34 +01:00
Allan Jardine
8376ac8412 Fix: IE6/7 could crash when loading a DataTable on page load due to the binding of a resize event listener on the window object
* Reported in thread 27428
* This SO thread was helpful: http://stackoverflow.com/questions/1264443
2015-04-29 21:19:40 +01:00
Allan Jardine
2176acf2fb Fix: $.map() expects an array, but a string could be passed in during smart search, which could cause an error with the latest jQuery libraries
This fixes DataTables/DataTables #546
2015-04-29 11:13:38 +01:00
Allan Jardine
b2adfad09c New - API: dt-api i18n() method to provide easy i18n support for developers working on extensions for DataTables and to allow dt-init language to be used as a central point of configuration for the language strings used by the table. 2015-04-29 11:13:16 +01:00
Allan Jardine
0234e9e502 Fix: Singular selectors (dt-api row() for example) did not reduce their result sets to a single item 2015-04-16 12:43:43 +01:00
Allan Jardine
c8b924772d New: External interface to allow the selector options -type selector-modifier object be extended by plug-ins, providing additional selector options. In the first instance this will be used by the new Selector extension that will add the ability to select rows, columns and cells by their selected status.
The main change here is to modify `_selector_run` to loop over the
extension functions (if there are any). This involves passing extra
information to the function (selector type so the correct extension can
be used, settings object and selector modifier to pass on to the
extension method).

The _selector_opts function has also been updated to give the ability to
use unknown properteries through a $.extend, rather than writing a three
property object.
2015-04-16 12:43:24 +01:00
Allan Jardine
b7c5f8c07f New - API: dt-api any() method which can be used to check if the API result set contains any results or not
This is useful for the multi-table aware API as it may contain inner
arrays, which themselves may or may not be empty
2015-04-15 17:05:13 +01:00
Allan Jardine
caa9f2f84b DataTables 1.10.7 development underway 2015-04-15 17:04:55 +01:00
Allan Jardine
2d6108d00c Fix - docs: dt-api row().child() should have the class name as optional 2015-04-15 17:02:08 +01:00
Allan Jardine
34abc58d70 Release 1.10.6 2015-04-03 14:47:53 +01:00
Allan Jardine
ba42edc3f1 Fix: If a loaded state does not contain a parameter it could throw an error. This could occur when the stateSave event removed parameters from the state object
This fixes DataTables/DataTables #24
2015-04-03 14:16:57 +01:00
Allan Jardine
acf989695e Fix: $.fn.dataTable.ext.pager.numbers_length was not taken into account when showing ellipsis on both sides of the current number in the paging controller
Fix: Ellipsis elements didn't have padding which could be jarring when shifting between paging that does and doesn't show ellipsis

This fixes DataTables/DataTables #26
2015-04-03 14:16:33 +01:00
Allan Jardine
cbb5a5d6e9 Fix: dt-init row().child() couldn't accept an array of jQuery objects
See https://www.datatables.net/forums/discussion/26441 for details
2015-04-03 12:21:50 +01:00
Allan Jardine
5c919423c1 Fix - docs: dt-api row().child() notes that className is not added to pre-existing node 2015-04-03 12:21:27 +01:00
Allan Jardine
565b639c34 Fix: Scrollbar width wasn't correctly detected in IE9
Fix: Scrollbar width was being calculated everytime requested on machines with zero width scrollbars

The scrollbar width calculation method has been rewritten to use a
single element with use of `offsetWidth` and `clientWidth` to calculate
the scrollbar width. This works all the way back to IE6.
2015-04-03 12:12:15 +01:00
Allan Jardine
220ae99e08 Updated: Extend currency support to include all top 20 internationally traded currencies. This includes the Russian ruble, South Korean Won, Turkish Lira, India Rupee, Brazilian real, South African rand, Swiss franc, Swedish korona, Norwegian krone and Danish krone.
Any additional currancies should be added as a plug-in, not to the core!

Fixes DataTables/DataTablesSrc #38
2015-04-03 10:45:41 +01:00
Allan Jardine
294a32f8d0 Fix docs: Add reference to dt-init columns.orderSequence from dt-init order 2015-04-03 09:50:06 +01:00
Allan Jardine
e0f2cfd81e Fix: When holding shift and clicking on a single sorted column it was possible to attempt to remove the sort (the internal sorting array was []). This shouldn't be possible, and now isn't.
* This fixes DataTables/DataTables #526
2015-03-31 20:05:23 +01:00
Allan Jardine
1e10603810 Fix: Update numebr render to return the original data point if the data passed in is not a number or a string. This allows dt-init columns.defaultContent to be used. 2015-03-20 10:49:34 +00:00
Allan Jardine
7851a6a204 Fix: If async:false is used in the Ajax configuration, callbacks assigned with dt-api ajax.reload() would not trigger until another draw has been executed.
This was due simply to the code ordering for how the callback is
triggered. See https://www.datatables.net/forums/discussion/26474 for
more information.
2015-03-19 16:20:34 +00:00
Allan Jardine
79f969ef58 Fix: dt-api $.fn.dataTable.isDataTable() could give incorrect results if a table did not have scrolling enabled 2015-03-18 16:53:25 +00:00
Allan Jardine
2ee5b3e7f6 New: dt-api init() method for plug-in developers to get the initialisation options configured for the DataTable 2015-03-18 16:53:07 +00:00
Allan Jardine
9896d0295d Fix: If the thead contained a table the selector that was looking to find the first row in the table was selected the row from the header table rather than the tbody. This could cause errors such as HTML5 data-* attributes not being detected.
This fixes DataTables/DataTables #508
2015-03-12 10:29:16 +00:00
Allan Jardine
825877f157 New: dt-api rows().every(), dt-api columns().every() and dt-api cells().every() iterator methods to make it easier to perform operations on the table elements. This is done by setting the context of the callback provided to be the singular expression for the table elemtn in question. This basically means you can access the singular methods from this - e.g. this.data() will get the data for the element, this.node() will get the cell when using dt-api cells().every() etc. The exisiting interator methods of dt-api each() and dt-api iterator() remain, and each has its own place for optimial usage of the API, but it is likely that the majority of use will switch to focus on these new methods. The examples in the rest of hte documentation has been updated to reflect this fact. 2015-03-03 15:42:36 +00:00
Allan Jardine
0942fa38a6 Fix: dt-api cells() when given a selector options object in the first parameter was incorrectly applying the selector for the cells. 2015-03-03 15:42:22 +00:00
Allan Jardine
7ef92e4f56 Fix: The initalisation object was being cloned on init which could cause a major performance hit if you pass in a large data set into dt-init data. The table node and internal API reference also should not be cloned.
* Thank you to B Lyon for spotting this issue and writing it up:
  http://www.nowherenearithaca.com/2015/03/avoiding-performance-gotcha-with-jquery.html
2015-03-02 13:25:51 +00:00
Allan Jardine
16c48ad4bf Fix: dt-event xhr was not being emitted when dt-init ajax was being given as a function 2015-02-27 15:12:46 +00:00
Allan Jardine
ee9ca0336e Fix: Scrollbar left detection wasn't allowing for sub-pixel rendering which occurs when browsers are zoomed
* This refers to DataTables/DataTables #479 and DataTables/Scroller #44
2015-02-27 12:00:43 +00:00
Allan Jardine
b1ff92a274 Fix: Error in the detection of style="width:..." attributes. DataTables was reading the pixel value that it had written if the columns were recalculated. Now only percentage values are used from the style width.
* This fixes DataTables/DataTables #501
2015-02-25 10:48:22 +00:00
Allan Jardine
c6be28ef8f Call _fnAjaxDataSrc before setting recordsTotal
_fnAjaxDataSrc will in turn call _fnGetObjectDataFn, which
can be specified by the dataSrc method.

This way the dataSrc can set the recordsTotal parameter on
the json data and the changes will be read into the
recordsTotal/recordsFiltered variables.
2015-02-19 13:38:14 +00:00
Allan Jardine
62da8efbca New: The dt-init ajax.data option, when used as a function, now has the DataTables' settings object passed in as the second parameter, which can be useful to access the API if needed 2015-02-19 13:37:57 +00:00
Allan Jardine
a1458bf80c Fix: Legacy API fnDraw was incorrectly handling the case when false was passed in.
* See DataTables/DataTables #499
2015-02-17 15:00:24 +00:00
Allan Jardine
b433f105a3 Fix: Due to use of an HTML entity, DataTables could fail on XHTML pages 2015-02-17 10:29:09 +00:00
Allan Jardine
f1b561ec53 Fix: dt-init columns.orderData wasn't working if given as an integer 2015-02-12 14:11:37 +00:00
Allan Jardine
15991a26eb Dev: 1.10.5 version 2015-02-12 14:11:18 +00:00
Allan Jardine
6fbd6a9c46 Dev: Firebase database in example documentation rather than AIR (outdated) 2015-02-12 14:10:38 +00:00
Allan Jardine
2c67caad44 Fix: Exit out of the extend API method if possible, for performance 2015-02-10 14:26:37 +00:00
Allan Jardine
34fb1cb18a Dev: Add buttons object to .ext for future buttons extension 2015-02-10 14:25:57 +00:00
Allan Jardine
c98854def4 Fix - example: Dro the http protocol from the i18n CDN file loder example so it works over https 2015-02-10 14:25:16 +00:00
Allan Jardine
d6f46dffbb New: DataTables intialisation options can now be specified using HTML data-* attributes on the HTML <table> tag and on the cells of the column headers in the table.
* A new example of this is included
* Fixes DataTables/DataTablesSrc #9
2015-02-06 16:35:34 +00:00
Allan Jardine
4039e77a6f Fix: In IE9 where the table is in an iframe paging elements were not added until after the first draw
* See thread 23915 for details and kudos to helenm for the research into the issue
2015-02-04 16:11:59 +00:00
Allan Jardine
7a26c5d4c8 Fix: When detecting is the table has a width attribute we can also use style.width to check if a width as been assigned using the style attribute. This doesn't work for reading CSS assigned information, that would require parsing the stylesheet` but it does mean there is a way of doing this with using deprecated attributes. 2015-02-04 10:55:43 +00:00
Allan Jardine
c7e18c4236 move eq jQuery selector outside of selector 2015-01-22 10:21:30 +00:00
Allan Jardine
d65dd47fe6 New: where condition controls for the example PHP server-side processing class (SSP). This takes the form of a new complex method (to compliment the exisiting simple method) which accepts where parameters that can be used for either user based filtering, or server based filtering. 2015-01-11 16:26:59 +00:00
Allan Jardine
be061edb7b Dev: Remove accidentally committed debug 2014-12-22 17:14:02 +00:00
Allan Jardine
7c07b80222 New: Improved error handling - $.fn.dataTable.ext.errMode can now be:
* `alert` - Alert the error
 * `throw` - Throw an error
 * `none` - Do nothing
 * A function that is called

New: `dt-event error` event that is triggered when an error occurs (regardless of the value of `$.fn.dataTable.ext.errMode`
2014-12-22 16:15:10 +00:00
Allan Jardine
1c95f9fe06 Dev: Remove debug 2014-12-15 15:46:24 +00:00
Allan Jardine
25ceef46ab Fix: When initialising a table and checking it it already exists, we should check against header and footer elements as well, so they can be used as the selectors
This fixes DataTables/DataTables #467
2014-12-15 15:13:08 +00:00
Allan Jardine
90ce3773f5 Fix: When detecting HTML5 attributes need to check for null from getAttribute, since otherwise empty strings would fail.
See thread 24802
2014-12-02 10:37:40 +00:00
Allan Jardine
31670cc1c5 Fix: dt-api $.fn.dataTable.isDataTable() wasn't working correctly on scrolling tables when the header or footer table was passed in 2014-11-24 10:51:01 +00:00
Allan Jardine
cb957c019e Merge pull request #22 from bjmiller/master
Fix for CommonJS/Browserify
2014-11-18 17:10:50 +00:00
Allan Jardine
cd2423d21a Fix #23: Attach the scroll event for the header alignment using the DT namespace to ensure that it is removed on destroy 2014-11-18 17:10:34 +00:00
Allan Jardine
dd7fbeb0a7 Fix for CommonJS/Browserify
I'm not sure whether this breaks any other CJS implementation, but the only one you're likely to have to worry about is Browserify.

This relates to https://github.com/DataTables/DataTables/issues/434
2014-11-18 17:10:18 +00:00
Allan Jardine
3a22a082c3 New: DT_RowAttr special parameter for row data to be able to set abstract parameters for the row. This compliments the exisiting DT_RowId, DT_RowClass and DT_RowData parameters.
Thanks to Jifer in thread 24534 for this suggestion
2014-11-12 10:09:17 +00:00
Allan Jardine
d83f47cfb5 Fix: dt-api $.fn.dataTable.util.throttle() was missing the first call.
Dev: Moving on to 1.10.5-dev
2014-11-11 14:14:11 +00:00
Allan Jardine
06c1cbebde DataTables 1.10.4 release 2014-11-07 15:17:44 +00:00
Allan Jardine
9841c3f038 Dev: Fix return case for column visiblity: 2014-11-07 15:17:29 +00:00
Allan Jardine
f4d1495a2c Dev: Tests for the cell invalidation update 2014-11-07 15:17:14 +00:00
Allan Jardine
24761003f3 Fix: dt-api cell().invalidate() and dt-api cells().invalidate() now invalidate only the cell(s) in question and not the whole row.
Previously the whole row was invalidated as a quick workaround for what
I would would be a complex task, but the solution is actually relatively
simple and small in code size, reusing much of the current invalidation
code. The cache data for the whole row is still removed, but the
important part of minimising the DOM interaction is in place.
2014-11-07 12:28:44 +00:00
Allan Jardine
fb6a7be880 Fix: Selector errors when using jQuery selectors with dt-init deferRender enabled
Fix: Incorrect returns from sub-methods if a selector does not contain any results (DataTables/DataTables #431)
Update: `dt-api iterator()` has a fourth parameter to indicate that a return value is expected

The basic issue here was the `iterator()`'s automatic check to see if a
new API instance should be returned or not. If there are no results from
a selector the iterator will just use the original API instance to
return, but this isn't correct as we expect an empty result set in this
case. This is partly due to the fact that the top level methods (`row()`
for example) will return 2D arrays, while the child methods will flatten
the results, this is parhaps an error in the API, but too late to fix
now.

To address this, `iterator()` now has a parameter to tell it if a new
instance should be used or not. I debated about a new method
`iteratorNew()`, but I think this is just as clear (which isn't very
clear unfortunatly, but just needs to be made clear in the
documentation, which I've updated for this change).

I've added tests for the selectors with `deferRender` enabled. The test
suite is still in desperate need of update...
2014-11-03 15:18:18 +00:00
Allan Jardine
e92582b45a Fix: Page length change will now attempt to keep the start point on the current page, but will shift that row's position away from the start point, so that the paging is always consistent in its display. Without this changing the page length could result in landing on page "1.4" (or some other partial page) that you could never get to with just paging alone. That is no longer possible in DataTables.
This is something that has been in DataTables since the version first
vresion and was contentious at that point so while this is a minor code
change, for me it is quite a big change! I feel that this is the correct
operation now, although it does result in rows being moved around where
they might not be needed to if partial pages could be used.
2014-10-30 15:15:20 +00:00
Allan Jardine
e62a747c2e New: dt-api $.fn.dataTable.util.escapeRegex() utility method for escaping regular expressions
Update example: Use the new `dt-api $.fn.dataTable.util.escapeRegex()` method to escape regex characters in the search input filter example
2014-10-30 11:26:34 +00:00
Allan Jardine
5c77a02f29 Fix: -tag caption was being inserted into the wrong elements when scrolling is enabled 2014-10-21 16:35:48 +01:00
Allan Jardine
eed543f566 Fix: jQuery references should be made to the aliased $.
Originally from DataTables/DataTables/pull/437
2014-10-21 09:31:24 +01:00
Allan Jardine
50d1466cfe Fix: If the language file fails to load, continue on as best we can. See thread 24046
Dev: Update the language init code to be a little more compact
2014-10-16 10:50:33 +01:00
Allan Jardine
744b6a901b Fix: When filtering HTML tags should be striped and were for a simple html type, but the html numeric types were not also receiving this treatment and thus the tags were included in the filter. This resolves that issue by adding search formatters along with sort formatters when the decimal place is known 2014-10-10 11:20:05 +01:00
Allan Jardine
1c3f7edfc2 Fix: Columns with mixed string and HTML types were not being detected as HTML type due to an early break 2014-10-10 10:54:25 +01:00
Allan Jardine
e06931ee0b Fix example: Improve code for multi-column select example 2014-10-10 10:54:11 +01:00
Allan Jardine
fa89685d8b DataTables 1.10.3 2014-10-09 16:21:39 +01:00
Allan Jardine
0d92daf10f Dev: Remove debug line 2014-10-09 16:21:24 +01:00
Allan Jardine
9fa68d564f New: The row, column and cell selectors now all accept a function as a selector. The function will return true or false based on the defined logic to indiciate if the item should be included in the result set. This is particularly useful for searching the table for items of data. 2014-10-09 14:55:19 +01:00
Allan Jardine
d7a9aefb6f New: dt-api cells().render() and dt-api cell().render() methods to trigger the rendering methods for the orthogonal data types. Similar to the cache() methods but this will specifically trigger a render and also provides access to the type and display options which cache() does not. Generally it is expected that this will replace the cache() methods 2014-10-08 16:04:44 +01:00
Allan Jardine
b2ac7fa0f2 Dev: Fix previous commit for HTML5 attributes. The object constructed wasn't being correctly written 2014-10-08 16:04:27 +01:00
Allan Jardine
00c69698e3 Fix: Javascript error when using smart filtering with quotes for exact matching 2014-10-08 14:19:29 +01:00
Allan Jardine
a6b871d660 New: Ability to use dt-init columns.data with a DOM sourced data to read the row information into an object rather than an array (the default) 2014-10-08 14:19:14 +01:00