From 147710ed8fe281d6375e48ad5dccbcee106ff908 Mon Sep 17 00:00:00 2001 From: Johannes Wilm Date: Thu, 29 Mar 2018 09:59:24 +0200 Subject: [PATCH 01/21] fix tests --- tests/index.html | 4 ++-- tests/index.js | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/index.html b/tests/index.html index a9f24a0..792a951 100644 --- a/tests/index.html +++ b/tests/index.html @@ -6,13 +6,13 @@ QUnit Example - +
- + diff --git a/tests/index.js b/tests/index.js index 113a1ba..624ce30 100644 --- a/tests/index.js +++ b/tests/index.js @@ -10,7 +10,7 @@ "Email", "Phone No." ], - "rows": [ + "data": [ [ "Hedwig F. Nguyen", "Arcu Vel Foundation", @@ -114,21 +114,21 @@ "09/19/2016", "condimentum@eleifend.com", "056 1551 7431" - ], + ] ] }; - + document.body.appendChild(t); - + var log = []; var testName; var dt = new DataTable(t, { data: data }); - + QUnit.module('General'); QUnit.test( "init", function( assert ) { assert.ok( Object.prototype.toString.call(dt) === '[object Object]', "Passed!" ); - }); - + }); + QUnit.done(function (test_results) { var tests = []; for(var i = 0, len = log.length; i < len; i++) { @@ -152,5 +152,5 @@ log.push(details); } }); - }); + }); })(); From eab7b69e8859c96725a4ae0f666f50d3cbb78f86 Mon Sep 17 00:00:00 2001 From: Johannes Wilm Date: Thu, 29 Mar 2018 10:09:04 +0200 Subject: [PATCH 02/21] implement paging=false --- src/vanilla-dataTables.js | 25 +++++++++++++++---------- tests/index.js | 2 +- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/src/vanilla-dataTables.js b/src/vanilla-dataTables.js index aed4e42..a3f5e77 100644 --- a/src/vanilla-dataTables.js +++ b/src/vanilla-dataTables.js @@ -28,6 +28,7 @@ * @typ {Object} */ var defaultConfig = { + paging: true, perPage: 10, perPageSelect: [5, 10, 15, 20, 25], @@ -1216,10 +1217,10 @@ template += ""; // Info placement - template = template.replace("{info}", "
"); + template = template.replace("{info}", o.paging ? "
" : ""); // Per Page Select - if (o.perPageSelect) { + if (o.paging && o.perPageSelect) { var wrap = "
"; @@ -1703,14 +1704,18 @@ }, this); } - // Check for hidden columns - this.pages = rows - .map(function (tr, i) { - return i % perPage === 0 ? rows.slice(i, i + perPage) : null; - }) - .filter(function (page) { - return page; - }); + if (this.options.paging) { + // Check for hidden columns + this.pages = rows + .map(function (tr, i) { + return i % perPage === 0 ? rows.slice(i, i + perPage) : null; + }) + .filter(function (page) { + return page; + }); + } else { + this.pages = [rows]; + } this.totalPages = this.lastPage = this.pages.length; diff --git a/tests/index.js b/tests/index.js index 624ce30..0d8e120 100644 --- a/tests/index.js +++ b/tests/index.js @@ -122,7 +122,7 @@ var log = []; var testName; - var dt = new DataTable(t, { data: data }); + var dt = new DataTable(t, { data: data}); QUnit.module('General'); QUnit.test( "init", function( assert ) { From b42be7acf9993f5bb58e8374e1cade37147f69eb Mon Sep 17 00:00:00 2001 From: Johannes Wilm Date: Thu, 29 Mar 2018 14:40:34 +0200 Subject: [PATCH 03/21] implement scrollY --- src/vanilla-dataTables.js | 61 ++++++++++++++++++++++++++++++++++----- tests/index.js | 2 +- 2 files changed, 55 insertions(+), 8 deletions(-) diff --git a/src/vanilla-dataTables.js b/src/vanilla-dataTables.js index a3f5e77..d58b656 100644 --- a/src/vanilla-dataTables.js +++ b/src/vanilla-dataTables.js @@ -28,14 +28,13 @@ * @typ {Object} */ var defaultConfig = { - paging: true, - perPage: 10, - perPageSelect: [5, 10, 15, 20, 25], - sortable: true, searchable: true, // Pagination + paging: true, + perPage: 10, + perPageSelect: [5, 10, 15, 20, 25], nextPrev: true, firstLast: false, prevText: "‹", @@ -48,6 +47,8 @@ truncatePager: true, pagerDelta: 2, + scrollY: "", + fixedColumns: true, fixedHeight: false, @@ -1211,7 +1212,11 @@ template += "
"; template += o.layout.top; template += "
"; - template += "
"; + if (o.scrollY.length) { + template += "
"; + } else { + template += "
"; + } template += "
"; template += o.layout.bottom; template += "
"; @@ -1728,7 +1733,7 @@ */ proto.fixColumns = function () { - if (this.options.fixedColumns && this.activeHeadings && this.activeHeadings.length) { + if ((this.options.scrollY.length || this.options.fixedColumns) && this.activeHeadings && this.activeHeadings.length) { var cells, hd = false; @@ -1743,12 +1748,54 @@ cell.style.width = ""; }, this); - each(this.activeHeadings, function (cell, i) { + if (this.options.scrollY.length) { + hd = createElement("thead"); + hd.appendChild(createElement("tr")); + hd.style.height = '0px'; + if (this.headerTable) { + // move real header back into place + this.table.tHead = this.headerTable.tHead; + } + } + + each(this.table.tHead.firstElementChild.children, function (cell, i) { var ow = cell.offsetWidth; var w = ow / this.rect.width * 100; cell.style.width = w + "%"; this.columnWidths[i] = ow; + if (this.options.scrollY.length) { + var th = createElement("th"); + hd.firstElementChild.appendChild(th); + th.style.width = w + "%"; + th.style.padding = "0"; + th.style.border = "0"; + } }, this); + + if (this.options.scrollY.length) { + var container = this.table.parentElement; + if (!this.headerTable) { + this.headerTable = createElement("table", { + class: "dataTable-table" + }); + var headercontainer = createElement("div", { + class: "dataTable-headercontainer" + }); + headercontainer.appendChild(this.headerTable); + container.parentElement.insertBefore(headercontainer, container); + } + var thd = this.table.tHead; + this.table.replaceChild(hd, thd); + this.headerTable.tHead = thd; + + // Compensate for scrollbars. + this.headerTable.style.width = this.table.clientWidth + "px"; + if (container.scrollHeight > container.clientHeight) { + // scrollbars on one page means scrollbars on all pages. + container.style.overflowY = 'scroll'; + } + } + } else { cells = []; diff --git a/tests/index.js b/tests/index.js index 0d8e120..624ce30 100644 --- a/tests/index.js +++ b/tests/index.js @@ -122,7 +122,7 @@ var log = []; var testName; - var dt = new DataTable(t, { data: data}); + var dt = new DataTable(t, { data: data }); QUnit.module('General'); QUnit.test( "init", function( assert ) { From 623b625045c36bdd641af7610021aa8f0228cbf1 Mon Sep 17 00:00:00 2001 From: Johannes Wilm Date: Thu, 29 Mar 2018 14:49:56 +0200 Subject: [PATCH 04/21] change link in test --- tests/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/index.html b/tests/index.html index 792a951..6e6146c 100644 --- a/tests/index.html +++ b/tests/index.html @@ -6,7 +6,7 @@ QUnit Example - +
From 4a0a4f869f5c9c97a441e6a829f38651aeb824a7 Mon Sep 17 00:00:00 2001 From: Johannes Wilm Date: Thu, 29 Mar 2018 18:11:08 +0200 Subject: [PATCH 05/21] deal with window resize --- src/vanilla-dataTables.js | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/vanilla-dataTables.js b/src/vanilla-dataTables.js index d58b656..8183c1d 100644 --- a/src/vanilla-dataTables.js +++ b/src/vanilla-dataTables.js @@ -1561,6 +1561,11 @@ } } }); + + on(win, "resize", function(e){ + that.rect = that.container.getBoundingClientRect(); + that.fixColumns(); + }); }; /** @@ -1734,7 +1739,6 @@ proto.fixColumns = function () { if ((this.options.scrollY.length || this.options.fixedColumns) && this.activeHeadings && this.activeHeadings.length) { - var cells, hd = false; @@ -1743,10 +1747,6 @@ // If we have headings we need only set the widths on them // otherwise we need a temp header and the widths need applying to all cells if (this.table.tHead) { - // Reset widths - each(this.activeHeadings, function (cell) { - cell.style.width = ""; - }, this); if (this.options.scrollY.length) { hd = createElement("thead"); @@ -1755,10 +1755,16 @@ if (this.headerTable) { // move real header back into place this.table.tHead = this.headerTable.tHead; + this.activeHeadings = this.table.tHead.firstElementChild.children; } } - each(this.table.tHead.firstElementChild.children, function (cell, i) { + // Reset widths + each(this.activeHeadings, function (cell) { + cell.style.width = ""; + }, this); + + each(this.activeHeadings, function (cell, i) { var ow = cell.offsetWidth; var w = ow / this.rect.width * 100; cell.style.width = w + "%"; @@ -1767,7 +1773,8 @@ var th = createElement("th"); hd.firstElementChild.appendChild(th); th.style.width = w + "%"; - th.style.padding = "0"; + th.style.paddingTop = "0"; + th.style.paddingBottom = "0"; th.style.border = "0"; } }, this); @@ -1789,7 +1796,8 @@ this.headerTable.tHead = thd; // Compensate for scrollbars. - this.headerTable.style.width = this.table.clientWidth + "px"; + this.headerTable.style.paddingRight = this.headerTable.clientWidth - this.table.clientWidth + "px"; + if (container.scrollHeight > container.clientHeight) { // scrollbars on one page means scrollbars on all pages. container.style.overflowY = 'scroll'; From 10c3d38b89db909d9ab2d46f093905f8e9d9b253 Mon Sep 17 00:00:00 2001 From: Johannes Wilm Date: Fri, 30 Mar 2018 21:53:04 +0200 Subject: [PATCH 06/21] activate headings when adding through insert --- src/vanilla-dataTables.js | 6 ++++-- tests/index.js | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/vanilla-dataTables.js b/src/vanilla-dataTables.js index 8183c1d..32ec64b 100644 --- a/src/vanilla-dataTables.js +++ b/src/vanilla-dataTables.js @@ -1741,7 +1741,6 @@ if ((this.options.scrollY.length || this.options.fixedColumns) && this.activeHeadings && this.activeHeadings.length) { var cells, hd = false; - this.columnWidths = []; // If we have headings we need only set the widths on them @@ -1797,7 +1796,7 @@ // Compensate for scrollbars. this.headerTable.style.paddingRight = this.headerTable.clientWidth - this.table.clientWidth + "px"; - + if (container.scrollHeight > container.clientHeight) { // scrollbars on one page means scrollbars on all pages. container.style.overflowY = 'scroll'; @@ -1993,6 +1992,9 @@ // Allow sorting on new header that.render("header"); + + // Activate newly added headings + that.activeHeadings = that.headings.slice(); } } diff --git a/tests/index.js b/tests/index.js index 624ce30..a727dd5 100644 --- a/tests/index.js +++ b/tests/index.js @@ -122,7 +122,7 @@ var log = []; var testName; - var dt = new DataTable(t, { data: data }); + window.dt = new DataTable(t, { data: data }); QUnit.module('General'); QUnit.test( "init", function( assert ) { From f54de5d7477f201ffa9c5423ba07df6c0608a01a Mon Sep 17 00:00:00 2001 From: Johannes Wilm Date: Fri, 30 Mar 2018 22:06:49 +0200 Subject: [PATCH 07/21] set border-collapse to separate to enable padding --- src/vanilla-dataTables.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/vanilla-dataTables.css b/src/vanilla-dataTables.css index 19007d7..16e4407 100644 --- a/src/vanilla-dataTables.css +++ b/src/vanilla-dataTables.css @@ -98,6 +98,7 @@ max-width: 100%; width: 100%; border-spacing: 0; + border-collapse: separate; } .dataTable-table > tbody > tr > td, @@ -175,4 +176,4 @@ clear: both; content: " "; display: table; -} \ No newline at end of file +} From 5f0b1b216998775e771e8187c57462ccc44d321a Mon Sep 17 00:00:00 2001 From: Johannes Wilm Date: Fri, 30 Mar 2018 23:07:10 +0200 Subject: [PATCH 08/21] don't mess with activeHeadings if not necessary --- src/vanilla-dataTables.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/vanilla-dataTables.js b/src/vanilla-dataTables.js index 32ec64b..1a1677a 100644 --- a/src/vanilla-dataTables.js +++ b/src/vanilla-dataTables.js @@ -1754,7 +1754,6 @@ if (this.headerTable) { // move real header back into place this.table.tHead = this.headerTable.tHead; - this.activeHeadings = this.table.tHead.firstElementChild.children; } } From 9caf141874a0f9e754095f223e3e4918804d2145 Mon Sep 17 00:00:00 2001 From: Johannes Wilm Date: Sat, 31 Mar 2018 10:13:13 +0200 Subject: [PATCH 09/21] fix hidden option --- src/vanilla-dataTables.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vanilla-dataTables.js b/src/vanilla-dataTables.js index 1a1677a..47d4ce5 100644 --- a/src/vanilla-dataTables.js +++ b/src/vanilla-dataTables.js @@ -1618,7 +1618,7 @@ if (data.hasOwnProperty("hidden")) { if (data.hidden !== false) { - that.columns().hide(column); + that.columns().hide([column]); } } From 466e7edb0c41e26656c3c1fc1c22650a395c49a3 Mon Sep 17 00:00:00 2001 From: Johannes Wilm Date: Sat, 31 Mar 2018 12:25:45 +0200 Subject: [PATCH 10/21] fix sort direction, and make sort have same column index as rest of app --- src/vanilla-dataTables.js | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/vanilla-dataTables.js b/src/vanilla-dataTables.js index 47d4ce5..e8ecb8f 100644 --- a/src/vanilla-dataTables.js +++ b/src/vanilla-dataTables.js @@ -671,37 +671,30 @@ /** * Sort by column * @param {int} column - The column no. - * @param {string} direction - asc or desc + * @param {string} dir - asc or desc * @return {void} */ - Columns.prototype.sort = function (column, direction, init) { - + Columns.prototype.sort = function (column, dir, init) { var dt = this.dt; // Check column is present - if (dt.hasHeadings && (column < 1 || column > dt.activeHeadings.length)) { + if (dt.hasHeadings && (column < 0 || column > dt.headings.length)) { return false; } dt.sorting = true; - // Convert to zero-indexed - column = column - 1; - - var dir, - rows = dt.data, + var rows = dt.data, alpha = [], numeric = [], a = 0, n = 0, - th = dt.activeHeadings[column]; - - column = th.originalCellIndex; + th = dt.headings[column]; each(rows, function (tr) { var cell = tr.cells[column]; - var content = cell.hasAttribute('data-content') ? cell.getAttribute('data-content') : cell.data; - var num = content.replace(/(\$|\,|\s|%)/g, ""); + var content = cell.hasAttribute('data-content') ? cell.getAttribute('data-content') : cell.innerText; + var num = typeof content==="string" ? content.replace(/(\$|\,|\s|%)/g, "") : content; // Check for date format and moment.js if (th.getAttribute("data-type") === "date" && win.moment) { @@ -729,17 +722,22 @@ }); /* Sort according to direction (ascending or descending) */ + if (!dir) { + if (classList.contains(th, "asc")) { + dir = "desc"; + } else { + dir = "asc"; + } + } var top, btm; - if (classList.contains(th, "asc") || direction == "asc") { + if (dir == "desc") { top = sortItems(alpha, -1); btm = sortItems(numeric, -1); - dir = "descending"; classList.remove(th, "asc"); classList.add(th, "desc"); } else { top = sortItems(numeric, 1); btm = sortItems(alpha, 1); - dir = "ascending"; classList.remove(th, "desc"); classList.add(th, "asc"); } From c20da68e8a539cd0cf4132af33231f1887233d08 Mon Sep 17 00:00:00 2001 From: Johannes Wilm Date: Mon, 2 Apr 2018 22:00:25 +0200 Subject: [PATCH 11/21] respect hide header rules, even if table is empty --- src/vanilla-dataTables.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/vanilla-dataTables.js b/src/vanilla-dataTables.js index e8ecb8f..d45c387 100644 --- a/src/vanilla-dataTables.js +++ b/src/vanilla-dataTables.js @@ -1372,6 +1372,14 @@ this.onFirstPage = this.currentPage === 1; this.onLastPage = this.currentPage === this.lastPage; } else { + if (this.hasHeadings) { + flush(this.header, this.isIE); + + each(this.activeHeadings, function (th) { + this.header.appendChild(th); + }, this); + } + this.clear(); } From 575bcb2574b8735cd8d6815a3d54dac3323b7af2 Mon Sep 17 00:00:00 2001 From: Johannes Wilm Date: Mon, 2 Apr 2018 22:13:31 +0200 Subject: [PATCH 12/21] refactor to unduplicate code --- src/vanilla-dataTables.js | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/src/vanilla-dataTables.js b/src/vanilla-dataTables.js index d45c387..762740b 100644 --- a/src/vanilla-dataTables.js +++ b/src/vanilla-dataTables.js @@ -1346,6 +1346,15 @@ * @return {Void} */ proto.renderPage = function () { + if (this.hasHeadings) { + flush(this.header, this.isIE); + + each(this.activeHeadings, function (th) { + this.header.appendChild(th); + }, this); + } + + if (this.hasRows && this.totalPages) { if (this.currentPage > this.totalPages) { this.currentPage = 1; @@ -1355,14 +1364,6 @@ var index = this.currentPage - 1, frag = doc.createDocumentFragment(); - if (this.hasHeadings) { - flush(this.header, this.isIE); - - each(this.activeHeadings, function (th) { - this.header.appendChild(th); - }, this); - } - each(this.pages[index], function (row) { frag.appendChild(this.rows().render(row)); }, this); @@ -1372,13 +1373,6 @@ this.onFirstPage = this.currentPage === 1; this.onLastPage = this.currentPage === this.lastPage; } else { - if (this.hasHeadings) { - flush(this.header, this.isIE); - - each(this.activeHeadings, function (th) { - this.header.appendChild(th); - }, this); - } this.clear(); } From e5f66afef699d2c917f629dfcf8d86ef37bff9a0 Mon Sep 17 00:00:00 2001 From: Johannes Wilm Date: Mon, 2 Apr 2018 22:30:48 +0200 Subject: [PATCH 13/21] set no rows message also if table is entirely empty --- src/vanilla-dataTables.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/vanilla-dataTables.js b/src/vanilla-dataTables.js index 762740b..52bae63 100644 --- a/src/vanilla-dataTables.js +++ b/src/vanilla-dataTables.js @@ -1373,8 +1373,7 @@ this.onFirstPage = this.currentPage === 1; this.onLastPage = this.currentPage === this.lastPage; } else { - - this.clear(); + this.setMessage(this.options.labels.noRows); } // Update the info @@ -2413,6 +2412,8 @@ if (this.hasRows) { colspan = this.data[0].cells.length; + } else if (this.activeHeadings.length) { + colspan = this.activeHeadings.length; } this.clear( From a0239a481eecea9cac6ed8caac59dd8cf2811941 Mon Sep 17 00:00:00 2001 From: sudwebdesign Date: Mon, 30 Apr 2018 08:37:46 +0200 Subject: [PATCH 14/21] =?UTF-8?q?Fix:=20Columns=20rebuild=20row.cloneNode:?= =?UTF-8?q?=20TD's=20duplicated=20(TD=C2=B2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After few hours to solve mystery "doublons" and sort don't work in my old Chomium browser ( chromium.31) Test with other version Same result (2.0.0.a23, 1.6.10,) and ... In v1.2.2 nothing TDs duplicated on init but atfer sorting yes ;) Forward to Present ... And After more tests & logs for find where TD is duplicated In dataTable vanilla Columns.prototype.rebuild Before // Loop over the rows and reorder the cells dt.data are ok but after each() : a & b clones TD is duplicated! Only cloneNode(false) remove dublicated TDs chrome: default param deep is false (maybe not) Tested with true (TDs duplicated) https://developer.mozilla.org/fr/docs/Web/API/Node/cloneNode Rest of update code seems more speedy, with src file :) ##Info Solve my problems callback modify td content in event : sort dataTable.on('datatable.'+events i use events init, refresh & sort just an impression or lost important data? cell -> c is maybe more logic for chain object? It's just an intiuition, but if possible not (used in a test). work fine with no doublons with original code ``` if (dt.hiddenColumns.indexOf(cell.cellIndex) < 0) { d = cell.cloneNode(true); d.data = cell.data; ``` Why td create an element tr & then unused before each()? probably oups :) work fine with no doublons with original code ``` var td, tr = createElement("tr"); ``` In One moment Chromium say : data is undefined in Columns.prototype.sort var content ... cell.data is undefined : Chromium 31 && test with cell.innertext is undefined in Firefox 43 I have used this to solve the trouble ``` var content = cell.hasAttribute('data-content') ? cell.getAttribute ('data-content') : cell.data; ``` replaced by ``` var content = cell.hasAttribute('data-content') ? cell.getAttribute ('data-content') : cell.data || cell.textContent || cell.innerText;//CrossBrowser Fix ``` [MDN textContent](https://developer.mozilla.org/en- US/docs/Web/API/Node/textContent) But, with this update, now, all work fine in all levels, but why? :D Tested ok with QUnit: Firefox 43 & 59 Mozilla/5.0 (X11; Linux x86_64; rv:43.0) Gecko/20100101 Firefox/43.0 Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0 Chromium 31 ;) Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 --- src/vanilla-dataTables.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/vanilla-dataTables.js b/src/vanilla-dataTables.js index e757876..e65a801 100644 --- a/src/vanilla-dataTables.js +++ b/src/vanilla-dataTables.js @@ -796,8 +796,8 @@ // Loop over the rows and reorder the cells each(dt.data, function (row, i) { - a = row.cloneNode(); - b = row.cloneNode(); + a = row.cloneNode(false); + b = row.cloneNode(false); a.dataIndex = b.dataIndex = i; @@ -811,9 +811,9 @@ c.data = cell.data; a.appendChild(c); - if (dt.hiddenColumns.indexOf(cell.cellIndex) < 0) { - d = cell.cloneNode(true); - d.data = cell.data; + if (dt.hiddenColumns.indexOf(c.cellIndex) < 0) { + d = c.cloneNode(true); + d.data = c.data; b.appendChild(d); } }); @@ -846,7 +846,7 @@ * @return {HTMLElement} */ Rows.prototype.build = function (row) { - var td, tr = createElement("tr"); + var tr = createElement("tr"); var headings = this.dt.headings; @@ -857,7 +857,7 @@ } each(headings, function (h, i) { - td = createElement("td"); + var td = createElement("td"); // Fixes #29 if (!row[i] && !row[i].length) { From f59faa709d0d22b9dca826d986a36b2b806b5167 Mon Sep 17 00:00:00 2001 From: sudwebdesign Date: Mon, 30 Apr 2018 09:11:29 +0200 Subject: [PATCH 15/21] same thing ? --- src/vanilla-dataTables.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vanilla-dataTables.js b/src/vanilla-dataTables.js index e65a801..189de7a 100644 --- a/src/vanilla-dataTables.js +++ b/src/vanilla-dataTables.js @@ -476,8 +476,8 @@ // Order the row cells each(dt.data, function (row, i) { - c = row.cloneNode(); - d = row.cloneNode(); + c = row.cloneNode(false); + d = row.cloneNode(false); c.dataIndex = d.dataIndex = i; From 6fe9fc5813a8dfe10c5f0e92a70751db0678fb7e Mon Sep 17 00:00:00 2001 From: Ryan Olson Date: Wed, 13 Jun 2018 10:23:14 -0500 Subject: [PATCH 16/21] manually encode "#" when exporting to csv in firefox, if the csv data has a "#" in it, the file ends at the index of the first occurrence. additionally, encodeURI doesn't encode "#" since it's a valid uri character. --- src/vanilla-dataTables.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/vanilla-dataTables.js b/src/vanilla-dataTables.js index e757876..94e749a 100644 --- a/src/vanilla-dataTables.js +++ b/src/vanilla-dataTables.js @@ -2085,6 +2085,8 @@ text = text.replace(/\s{2,}/g, ' '); text = text.replace(/\n/g, ' '); text = text.replace(/"/g, '""'); + //have to manually encode "#" as encodeURI leaves it as is. + text = text.replace(/#/g, "%23"); if (text.indexOf(",") > -1) text = '"' + text + '"'; From 70e6131a7c4a34ed1ea193d5d963cdb0cc96dbfd Mon Sep 17 00:00:00 2001 From: huyz Date: Wed, 27 Jun 2018 15:19:59 -0700 Subject: [PATCH 17/21] Fix for the fix for #29: handle null/undefined cells --- src/vanilla-dataTables.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vanilla-dataTables.js b/src/vanilla-dataTables.js index e757876..b916590 100644 --- a/src/vanilla-dataTables.js +++ b/src/vanilla-dataTables.js @@ -860,7 +860,7 @@ td = createElement("td"); // Fixes #29 - if (!row[i] && !row[i].length) { + if (!row[i] || !row[i].length) { row[i] = ""; } From a7914f346b3e4cbfe55ee1255d1cea94f90a57c5 Mon Sep 17 00:00:00 2001 From: Eidan Spiegel Date: Mon, 9 Jul 2018 15:13:38 -0400 Subject: [PATCH 18/21] We will update the chart even if there are no search results so that the pagination message changes. --- src/vanilla-dataTables.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vanilla-dataTables.js b/src/vanilla-dataTables.js index e757876..d3ca64d 100644 --- a/src/vanilla-dataTables.js +++ b/src/vanilla-dataTables.js @@ -1860,10 +1860,10 @@ classList.remove(that.wrapper, "search-results"); that.setMessage(that.options.labels.noRows); - } else { - that.update(); } + that.update(); + this.emit("datatable.search", query, this.searchData); }; From 9e5710c9b870d380e245fdf3fefc75e25ceedbce Mon Sep 17 00:00:00 2001 From: Eidan Spiegel Date: Mon, 9 Jul 2018 15:19:29 -0400 Subject: [PATCH 19/21] Added minified version of datatables --- Gruntfile.js | 9 ++++++++- dist/vanilla-dataTables.min.js | 5 +++-- package.json | 11 ++++++----- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Gruntfile.js b/Gruntfile.js index 28b5468..3d4d6f3 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -6,11 +6,18 @@ module.exports = function (grunt) { qunit: { all: ['tests/index.html'] }, + uglify: { + my_target: { + files: { + 'dist/vanilla-dataTables.min.js': ['src/vanilla-dataTables.js'] + } + } + } }); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-qunit'); - + grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.registerTask('test', ['jshint', 'qunit']); grunt.registerTask('default', ['test']); diff --git a/dist/vanilla-dataTables.min.js b/dist/vanilla-dataTables.min.js index a8cdaac..11b3284 100644 --- a/dist/vanilla-dataTables.min.js +++ b/dist/vanilla-dataTables.min.js @@ -4,7 +4,8 @@ * Copyright (c) 2015-2017 Karl Saunders (http://mobius.ovh) * Licensed under MIT (http://www.opensource.org/licenses/mit-license.php) * - * Version: 1.6.14 + * Base on Version: 1.6.14 + * Edited version: https://github.com/espiegel/Vanilla-DataTables/tree/bugfix/search_no_results_minified * */ -(function(m,q){var u="DataTable";"object"==typeof exports?module.exports=q(u):"function"==typeof define&&define.amd?define([],q(u)):m[u]=q(u)})("undefined"==typeof global?this.window||this.global:global,function(){"use strict";var q=window,u=document,z=u.body,A={perPage:10,perPageSelect:[5,10,15,20,25],sortable:!0,searchable:!0,nextPrev:!0,firstLast:!1,prevText:"‹",nextText:"›",firstText:"«",lastText:"»",ellipsisText:"…",ascText:"\u25B4",descText:"\u25BE",truncatePager:!0,pagerDelta:2,fixedColumns:!0,fixedHeight:!1,header:!0,footer:!1,labels:{placeholder:"Search...",perPage:"{select} entries per page",noRows:"No entries found",info:"Showing {start} to {end} of {rows} entries"},layout:{top:"{select}{search}",bottom:"{info}{pager}"}},B=function(T){return"[object Object]"===Object.prototype.toString.call(T)},C=function(T){return Array.isArray(T)},D=function(T){var U=!1;try{U=JSON.parse(T)}catch(V){return!1}return null!==U&&(C(U)||B(U))&&U},E=function(T,U){for(var V in U)if(U.hasOwnProperty(V)){var W=U[V];W&&B(W)?(T[V]=T[V]||{},E(T[V],W)):T[V]=W}return T},F=function(T,U,V){if(B(T))for(var W in T)Object.prototype.hasOwnProperty.call(T,W)&&U.call(V,T[W],W);else for(W=0;W"+V+""})},K={add:function(T,U){T.classList?T.classList.add(U):!K.contains(T,U)&&(T.className=T.className.trim()+" "+U)},remove:function(T,U){T.classList?T.classList.remove(U):K.contains(T,U)&&(T.className=T.className.replace(new RegExp("(^|\\s)"+U.split(" ").join("|")+"(\\s|$)","gi")," "))},contains:function(T,U){if(T)return T.classList?T.classList.contains(U):!!T.className&&!!T.className.match(new RegExp("(\\s|^)"+U+"(\\s|$)"))}},L=function(T,U){var V,W;1===U?(V=0,W=T.length):-1==U&&(V=T.length-1,W=-1);for(var X=!0;X;){X=!1;for(var Y=V;Y!=W;Y+=U)if(T[Y+U]&&T[Y].value>T[Y+U].value){var Z=T[Y],$=T[Y+U];T[Y]=$,T[Y+U]=Z,X=!0}}return T},M=function(T,U,V,W,X){W=W||2;var Y,Z=2*W,$=U-W,_=U+W,aa=[],ba=[];U<4-W+Z?_=3+Z:U>V-(3-W+Z)&&($=V-(2+Z));for(var ca=1;ca<=V;ca++)if(1==ca||ca==V||ca>=$&&ca<=_){var da=T[ca-1];K.remove(da,"active"),aa.push(da)}return F(aa,function(ea){var fa=ea.children[0].getAttribute("data-page");if(Y){var ga=Y.children[0].getAttribute("data-page");if(2==fa-ga)ba.push(T[ga]);else if(1!=fa-ga){var ha=H("li",{class:"ellipsis",html:""+X+""});ba.push(ha)}}ba.push(ea),Y=ea}),ba},N=function(T){var U=!1,V=!1;if(T=T||this.options.data,T.headings){U=H("thead");var W=H("tr");F(T.headings,function(X){var Y=H("th",{html:X});W.appendChild(Y)}),U.appendChild(W)}T.data&&T.data.length&&(V=H("tbody"),F(T.data,function(X){if(T.headings&&T.headings.length!==X.length)throw new Error("The number of rows do not match the number of headings.");var Y=H("tr");F(X,function(Z){var $=H("td",{html:Z});Y.appendChild($)}),V.appendChild(Y)})),U&&(null!==this.table.tHead&&this.table.removeChild(this.table.tHead),this.table.appendChild(U)),V&&(this.table.tBodies.length&&this.table.removeChild(this.table.tBodies[0]),this.table.appendChild(V))},O=function(T,U){var V=!1;return U&&(V="ISO_8601"===U?moment(T,moment.ISO_8601).format("YYYYMMDD"):"RFC_2822"===U?moment(T,"ddd, MM MMM YYYY HH:mm:ss ZZ").format("YYYYMMDD"):"MYSQL"===U?moment(T,"YYYY-MM-DD hh:mm:ss").format("YYYYMMDD"):"UNIX"===U?moment(T).unix():moment(T,U).format("YYYYMMDD")),V},P=function(T){return this.dt=T,this};P.prototype.swap=function(T){if(T.length&&2===T.length){var U=[];F(this.dt.headings,function(Y,Z){U.push(Z)});var V=T[0],W=T[1],X=U[W];U[W]=U[V],U[V]=X,this.order(U)}},P.prototype.order=function(T){var U,V,W,X,Y,Z,$,_=[[],[],[],[]],aa=this.dt;F(T,function(ba,ca){Y=aa.headings[ba],Z="false"!==Y.getAttribute("data-sortable"),U=Y.cloneNode(!0),U.originalCellIndex=ca,U.sortable=Z,_[0].push(U),0>aa.hiddenColumns.indexOf(ba)&&(V=Y.cloneNode(!0),V.originalCellIndex=ca,V.sortable=Z,_[1].push(V))}),F(aa.data,function(ba,ca){W=ba.cloneNode(),X=ba.cloneNode(),W.dataIndex=X.dataIndex=ca,null!==ba.searchIndex&&void 0!==ba.searchIndex&&(W.searchIndex=X.searchIndex=ba.searchIndex),F(T,function(da){$=ba.cells[da].cloneNode(!0),$.data=ba.cells[da].data,W.appendChild($),0>aa.hiddenColumns.indexOf(da)&&($=ba.cells[da].cloneNode(!0),$.data=ba.cells[da].data,X.appendChild($))}),_[2].push(W),_[3].push(X)}),aa.headings=_[0],aa.activeHeadings=_[1],aa.data=_[2],aa.activeRows=_[3],aa.update()},P.prototype.hide=function(T){if(T.length){var U=this.dt;F(T,function(V){0>U.hiddenColumns.indexOf(V)&&U.hiddenColumns.push(V)}),this.rebuild()}},P.prototype.show=function(T){if(T.length){var U,V=this.dt;F(T,function(W){U=V.hiddenColumns.indexOf(W),-1V.hiddenColumns.indexOf(W))})):U=0>V.hiddenColumns.indexOf(T),U},P.prototype.add=function(T){var V,U=this,W=document.createElement("th");return this.dt.headings.length?void(this.dt.hiddenHeader?W.innerHTML="":T.heading.nodeName?W.appendChild(T.heading):W.innerHTML=T.heading,this.dt.headings.push(W),F(this.dt.data,function(X,Y){T.data[Y]&&(V=document.createElement("td"),T.data[Y].nodeName?V.appendChild(T.data[Y]):V.innerHTML=T.data[Y],V.data=V.innerHTML,T.render&&(V.innerHTML=T.render.call(U,V.data,V,X)),X.appendChild(V))}),T.type&&W.setAttribute("data-type",T.type),T.format&&W.setAttribute("data-format",T.format),T.hasOwnProperty("sortable")&&(W.sortable=T.sortable,W.setAttribute("data-sortable",!0===T.sortable?"true":"false")),this.rebuild(),this.dt.renderHeader()):(this.dt.insert({headings:[T.heading],data:T.data.map(function(X){return[X]})}),void this.rebuild())},P.prototype.remove=function(T){C(T)?(T.sort(function(U,V){return V-U}),F(T,function(U){this.remove(U)},this)):(this.dt.headings.splice(T,1),F(this.dt.data,function(U){U.removeChild(U.cells[T])})),this.rebuild()},P.prototype.sort=function(T,U,V){var W=this.dt;if(W.hasHeadings&&(1>T||T>W.activeHeadings.length))return!1;W.sorting=!0,--T;var X,Y=W.data,Z=[],$=[],_=0,aa=0,ba=W.activeHeadings[T];T=ba.originalCellIndex,F(Y,function(fa){var ga=fa.cells[T],ha=ga.hasAttribute("data-content")?ga.getAttribute("data-content"):ga.data,ia=ha.replace(/(\$|\,|\s|%)/g,"");if("date"===ba.getAttribute("data-type")&&q.moment){var ja=!1,ka=ba.hasAttribute("data-format");ka&&(ja=ba.getAttribute("data-format")),ia=O(ha,ja)}parseFloat(ia)==ia?$[aa++]={value:+ia,row:fa}:Z[_++]={value:ha,row:fa}});var ca,da;K.contains(ba,"asc")||"asc"==U?(ca=L(Z,-1),da=L($,-1),X="descending",K.remove(ba,"asc"),K.add(ba,"desc")):(ca=L($,1),da=L(Z,1),X="ascending",K.remove(ba,"desc"),K.add(ba,"asc")),W.lastTh&&ba!=W.lastTh&&(K.remove(W.lastTh,"desc"),K.remove(W.lastTh,"asc")),W.lastTh=ba,Y=ca.concat(da),W.data=[];var ea=[];F(Y,function(fa,ga){W.data.push(fa.row),null!==fa.row.searchIndex&&void 0!==fa.row.searchIndex&&ea.push(ga)},W),W.searchData=ea,this.rebuild(),W.update(),V||W.emit("datatable.sort",T,X)},P.prototype.rebuild=function(){var T,U,V,W,X=this.dt,Y=[];X.activeRows=[],X.activeHeadings=[],F(X.headings,function(Z,$){Z.originalCellIndex=$,Z.sortable="false"!==Z.getAttribute("data-sortable"),0>X.hiddenColumns.indexOf($)&&X.activeHeadings.push(Z)},this),F(X.data,function(Z,$){T=Z.cloneNode(),U=Z.cloneNode(),T.dataIndex=U.dataIndex=$,null!==Z.searchIndex&&void 0!==Z.searchIndex&&(T.searchIndex=U.searchIndex=Z.searchIndex),F(Z.cells,function(_){V=_.cloneNode(!0),V.data=_.data,T.appendChild(V),0>X.hiddenColumns.indexOf(_.cellIndex)&&(W=_.cloneNode(!0),W.data=_.data,U.appendChild(W))}),Y.push(T),X.activeRows.push(U)}),X.data=Y,X.update()};var Q=function(T,U){return this.dt=T,this.rows=U,this};Q.prototype.build=function(T){var U,V=H("tr"),W=this.dt.headings;return W.length||(W=T.map(function(){return""})),F(W,function(X,Y){U=H("td"),T[Y]||T[Y].length||(T[Y]=""),U.innerHTML=T[Y],U.data=T[Y],V.appendChild(U)}),V},Q.prototype.render=function(T){return T},Q.prototype.add=function(T){if(C(T)){var U=this.dt;C(T[0])?F(T,function(V){U.data.push(this.build(V))},this):U.data.push(this.build(T)),U.data.length&&(U.hasRows=!0),this.update(),U.columns().rebuild()}},Q.prototype.remove=function(T){var U=this.dt;C(T)?(T.sort(function(V,W){return W-V}),F(T,function(V){U.data.splice(V,1)})):U.data.splice(T,1),this.update(),U.columns().rebuild()},Q.prototype.update=function(){F(this.dt.data,function(T,U){T.dataIndex=U})};var R=function(T,U){if(this.initialized=!1,this.options=E(A,U),"string"==typeof T&&(T=document.querySelector(T)),this.initialLayout=T.innerHTML,this.initialSortable=this.options.sortable,this.options.header||(this.options.sortable=!1),null!==T.tHead||this.options.data&&(!this.options.data||this.options.data.headings)||(this.options.sortable=!1),T.tBodies.length&&!T.tBodies[0].rows.length&&this.options.data&&!this.options.data.data)throw new Error("You seem to be using the data option, but you've not defined any rows.");this.table=T,this.init()};R.extend=function(T,U){"function"==typeof U?R.prototype[T]=U:R[T]=U};var S=R.prototype;return S.init=function(T){if(this.initialized||K.contains(this.table,"dataTable-table"))return!1;var U=this;this.options=E(this.options,T||{}),this.isIE=!!/(msie|trident)/i.test(navigator.userAgent),this.currentPage=1,this.onFirstPage=!0,this.hiddenColumns=[],this.columnRenderers=[],this.selectedColumns=[],this.render(),setTimeout(function(){U.emit("datatable.init"),U.initialized=!0,U.options.plugins&&F(U.options.plugins,function(V,W){U[W]&&"function"==typeof U[W]&&(U[W]=U[W](V,{each:F,extend:E,classList:K,createElement:H}),V.enabled&&U[W].init&&"function"==typeof U[W].init&&U[W].init())})},10)},S.render=function(T){if(T)return"page"===T?this.renderPage():"pager"===T?this.renderPager():"header"===T?this.renderHeader():void 0,!1;var U=this,V=U.options,W="";if(V.data&&N.call(U),V.ajax){var X=V.ajax,Y=new XMLHttpRequest,Z=function(ia){U.emit("datatable.ajax.progress",ia,Y)},$=function(ia){if(4===Y.readyState)if(U.emit("datatable.ajax.loaded",ia,Y),200===Y.status){var ja={};ja.data=X.load?X.load.call(U,Y):Y.responseText,ja.type="json",X.content&&X.content.type&&(ja.type=X.content.type,ja=E(ja,X.content)),U.import(ja),U.setColumns(!0),U.emit("datatable.ajax.success",ia,Y)}else U.emit("datatable.ajax.error",ia,Y)},_=function(ia){U.emit("datatable.ajax.error",ia,Y)},aa=function(ia){U.emit("datatable.ajax.abort",ia,Y)};G(Y,"progress",Z),G(Y,"load",$),G(Y,"error",_),G(Y,"abort",aa),U.emit("datatable.ajax.loading",Y),Y.open("GET","string"==typeof X?V.ajax:V.ajax.url),Y.send()}if(U.body=U.table.tBodies[0],U.head=U.table.tHead,U.foot=U.table.tFoot,U.body||(U.body=H("tbody"),U.table.appendChild(U.body)),U.hasRows=0",W+="
",W+="
",W+=V.layout.bottom,W+="
",W=W.replace("{info}","
"),V.perPageSelect){var da="
";var ea=H("select",{class:"dataTable-selector"});F(V.perPageSelect,function(ia){var ja=ia===V.perPage,ka=new Option(ia,ia,ja,ja);ea.add(ka)}),da=da.replace("{select}",ea.outerHTML),W=W.replace("{select}",da)}else W=W.replace("{select}","");if(V.searchable){var fa="";W=W.replace("{search}",fa)}else W=W.replace("{search}","");U.hasHeadings&&this.render("header"),K.add(U.table,"dataTable-table");var ga=H("div",{class:"dataTable-pagination"}),ha=H("ul");ga.appendChild(ha),W=W.replace(/\{pager\}/g,ga.outerHTML),U.wrapper.innerHTML=W,U.container=U.wrapper.querySelector(".dataTable-container"),U.pagers=U.wrapper.querySelectorAll(".dataTable-pagination"),U.label=U.wrapper.querySelector(".dataTable-info"),U.table.parentNode.replaceChild(U.wrapper,U.table),U.container.appendChild(U.table),U.rect=U.table.getBoundingClientRect(),U.data=[].slice.call(U.body.rows),U.activeRows=U.data.slice(),U.activeHeadings=U.headings.slice(),U.update(),V.ajax||U.setColumns(),this.fixHeight(),U.fixColumns(),V.header||K.add(U.wrapper,"no-header"),V.footer||K.add(U.wrapper,"no-footer"),V.sortable&&K.add(U.wrapper,"sortable"),V.searchable&&K.add(U.wrapper,"searchable"),V.fixedHeight&&K.add(U.wrapper,"fixed-height"),V.fixedColumns&&K.add(U.wrapper,"fixed-columns"),U.bindEvents()},S.renderPage=function(){if(this.hasRows&&this.totalPages){this.currentPage>this.totalPages&&(this.currentPage=1);var T=this.currentPage-1,U=u.createDocumentFragment();this.hasHeadings&&(I(this.header,this.isIE),F(this.activeHeadings,function($){this.header.appendChild($)},this)),F(this.pages[T],function($){U.appendChild(this.rows().render($))},this),this.clear(U),this.onFirstPage=1===this.currentPage,this.onLastPage=this.currentPage===this.lastPage}else this.clear();var Y,V=0,W=0,X=0;if(this.totalPages&&(V=this.currentPage-1,W=V*this.options.perPage,X=W+this.pages[V].length,++W,Y=this.searching?this.searchData.length:this.data.length),this.label&&this.options.labels.info.length){var Z=this.options.labels.info.replace("{start}",W).replace("{end}",X).replace("{page}",this.currentPage).replace("{pages}",this.totalPages).replace("{rows}",Y);this.label.innerHTML=Y?Z:""}1==this.currentPage&&this.fixHeight()},S.renderPager=function(){if(I(this.pagers,this.isIE),1this.pages.length||0>T?!1:void(this.render("page"),this.render("pager"),this.emit("datatable.page",T)))},S.sortColumn=function(T,U){this.columns().sort(T,U)},S.insert=function(T){var U=this,V=[];if(B(T)){if(T.headings&&!U.hasHeadings&&!U.hasRows){var X,W=H("tr");F(T.headings,function(Y){X=H("th",{html:Y}),W.appendChild(X)}),U.head.appendChild(W),U.header=W,U.headings=[].slice.call(W.cells),U.hasHeadings=!0,U.options.sortable=U.initialSortable,U.render("header")}T.data&&C(T.data)&&(V=T.data)}else C(T)&&F(T,function(Y){var Z=[];F(Y,function($,_){var aa=U.labels.indexOf(_);-1aa.skipColumn.indexOf(U[Y].originalCellIndex)&&this.columns(U[Y].originalCellIndex).visible()){var ba=V[X].cells[Y].textContent;ba=ba.trim(),ba=ba.replace(/\s{2,}/g," "),ba=ba.replace(/\n/g," "),ba=ba.replace(/"/g,"\"\""),-1aa.skipColumn.indexOf(U[X].originalCellIndex)&&this.columns(U[X].originalCellIndex).visible()&&(Z+="`"+U[X].textContent+"`,");for(Z=Z.trim().substring(0,Z.length-1),Z+=") VALUES ",X=0;Xaa.skipColumn.indexOf(U[Y].originalCellIndex)&&this.columns(U[Y].originalCellIndex).visible()&&(Z+="\""+V[X].cells[Y].textContent+"\",");Z=Z.trim().substring(0,Z.length-1),Z+="),"}Z=Z.trim().substring(0,Z.length-1),Z+=";",aa.download&&(Z="data:application/sql;charset=utf-8,"+Z)}else if("json"===aa.type){for(Y=0;Yaa.skipColumn.indexOf(U[X].originalCellIndex)&&this.columns(U[X].originalCellIndex).visible()&&(W[Y][U[X].textContent]=V[Y].cells[X].textContent);Z=JSON.stringify(W,aa.replacer,aa.space),aa.download&&(Z="data:application/json;charset=utf-8,"+Z)}return aa.download&&(aa.filename=aa.filename||"datatable_export",aa.filename+="."+aa.type,Z=encodeURI(Z),$=document.createElement("a"),$.href=Z,$.download=aa.filename,z.appendChild($),$.click(),z.removeChild($)),Z}}return!1},S.import=function(T){var U=!1;if(!B(T))return!1;if(T=E({lineDelimiter:"\n",columnDelimiter:","},T),T.data.length||B(T.data)){if("csv"===T.type){U={data:[]};var W=T.data.split(T.lineDelimiter);W.length&&(T.headings&&(U.headings=W[0].split(T.columnDelimiter),W.shift()),F(W,function(Y,Z){U.data[Z]=[];var $=Y.split(T.columnDelimiter);$.length&&F($,function(_){U.data[Z].push(_)})}))}else if("json"===T.type){var X=D(T.data);X?(U={headings:[],data:[]},F(X,function(Y,Z){U.data[Z]=[],F(Y,function($,_){0>U.headings.indexOf(_)&&U.headings.push(_),U.data[Z].push($)})})):console.warn("That's not valid JSON!")}B(T.data)&&(U=T.data),U&&this.insert(U)}return!1},S.print=function(){var T=this.activeHeadings,U=this.activeRows,V=H("table"),W=H("thead"),X=H("tbody"),Y=H("tr");F(T,function($){Y.appendChild(H("th",{html:$.textContent}))}),W.appendChild(Y),F(U,function($){var _=H("tr");F($.cells,function(aa){_.appendChild(H("td",{html:aa.textContent}))}),X.appendChild(_)}),V.appendChild(W),V.appendChild(X);var Z=q.open();Z.document.body.appendChild(V),Z.print()},S.setMessage=function(T){var U=1;this.hasRows&&(U=this.data[0].cells.length),K.add(this.wrapper,"dataTable-empty"),this.clear(H("tr",{html:""+T+""}))},S.columns=function(T){return new P(this,T)},S.rows=function(T){return new Q(this,T)},S.on=function(T,U){this.events=this.events||{},this.events[T]=this.events[T]||[],this.events[T].push(U)},S.off=function(T,U){this.events=this.events||{},!1==T in this.events||this.events[T].splice(this.events[T].indexOf(U),1)},S.emit=function(T){if(this.events=this.events||{},!1!=T in this.events)for(var U=0;U'+a+""})},v={add:function(e,t){e.classList?e.classList.add(t):v.contains(e,t)||(e.className=e.className.trim()+" "+t)},remove:function(e,t){e.classList?e.classList.remove(t):v.contains(e,t)&&(e.className=e.className.replace(new RegExp("(^|\\s)"+t.split(" ").join("|")+"(\\s|$)","gi")," "))},contains:function(e,t){if(e)return e.classList?e.classList.contains(t):!!e.className&&!!e.className.match(new RegExp("(\\s|^)"+t+"(\\s|$)"))}},x=function(e,t){var a,i;1===t?(a=0,i=e.length):-1===t&&(a=e.length-1,i=-1);for(var n=!0;n;){n=!1;for(var s=a;s!=i;s+=t)if(e[s+t]&&e[s].value>e[s+t].value){var r=e[s],o=e[s+t],l=r;e[s]=o,e[s+t]=l,n=!0}}return e},t=function(e){return this.dt=e,this};t.prototype.swap=function(e){if(e.length&&2===e.length){var a=[];g(this.dt.headings,function(e,t){a.push(t)});var t=e[0],i=e[1],n=a[i];a[i]=a[t],a[t]=n,this.order(a)}},t.prototype.order=function(t){var a,i,n,s,r,o,l,d=[[],[],[],[]],h=this.dt;g(t,function(e,t){r=h.headings[e],o="false"!==r.getAttribute("data-sortable"),(a=r.cloneNode(!0)).originalCellIndex=t,a.sortable=o,d[0].push(a),h.hiddenColumns.indexOf(e)<0&&((i=r.cloneNode(!0)).originalCellIndex=t,i.sortable=o,d[1].push(i))}),g(h.data,function(a,e){n=a.cloneNode(),s=a.cloneNode(),n.dataIndex=s.dataIndex=e,null!==a.searchIndex&&void 0!==a.searchIndex&&(n.searchIndex=s.searchIndex=a.searchIndex),g(t,function(e,t){(l=a.cells[e].cloneNode(!0)).data=a.cells[e].data,n.appendChild(l),h.hiddenColumns.indexOf(e)<0&&((l=a.cells[e].cloneNode(!0)).data=a.cells[e].data,s.appendChild(l))}),d[2].push(n),d[3].push(s)}),h.headings=d[0],h.activeHeadings=d[1],h.data=d[2],h.activeRows=d[3],h.update()},t.prototype.hide=function(e){if(e.length){var t=this.dt;g(e,function(e){t.hiddenColumns.indexOf(e)<0&&t.hiddenColumns.push(e)}),this.rebuild()}},t.prototype.show=function(e){if(e.length){var t,a=this.dt;g(e,function(e){-1<(t=a.hiddenColumns.indexOf(e))&&a.hiddenColumns.splice(t,1)}),this.rebuild()}},t.prototype.visible=function(e){var t,a=this.dt;return e=e||a.headings.map(function(e){return e.originalCellIndex}),isNaN(e)?p(e)&&(t=[],g(e,function(e){t.push(a.hiddenColumns.indexOf(e)<0)})):t=a.hiddenColumns.indexOf(e)<0,t},t.prototype.add=function(a){var i,n=this,e=document.createElement("th");if(!this.dt.headings.length)return this.dt.insert({headings:[a.heading],data:a.data.map(function(e){return[e]})}),void this.rebuild();this.dt.hiddenHeader?e.innerHTML="":a.heading.nodeName?e.appendChild(a.heading):e.innerHTML=a.heading,this.dt.headings.push(e),g(this.dt.data,function(e,t){a.data[t]&&(i=document.createElement("td"),a.data[t].nodeName?i.appendChild(a.data[t]):i.innerHTML=a.data[t],i.data=i.innerHTML,a.render&&(i.innerHTML=a.render.call(n,i.data,i,e)),e.appendChild(i))}),a.type&&e.setAttribute("data-type",a.type),a.format&&e.setAttribute("data-format",a.format),a.hasOwnProperty("sortable")&&(e.sortable=a.sortable,e.setAttribute("data-sortable",!0===a.sortable?"true":"false")),this.rebuild(),this.dt.renderHeader()},t.prototype.remove=function(t){p(t)?(t.sort(function(e,t){return t-e}),g(t,function(e){this.remove(e)},this)):(this.dt.headings.splice(t,1),g(this.dt.data,function(e){e.removeChild(e.cells[t])})),this.rebuild()},t.prototype.sort=function(s,e,t){var a=this.dt;if(a.hasHeadings&&(s<1||s>a.activeHeadings.length))return!1;a.sorting=!0,s-=1;var i,n,r,o=a.data,l=[],d=[],h=0,c=0,p=a.activeHeadings[s];s=p.originalCellIndex,g(o,function(e){var t=e.cells[s],a=t.hasAttribute("data-content")?t.getAttribute("data-content"):t.data,i=a.replace(/(\$|\,|\s|%)/g,"");if("date"===p.getAttribute("data-type")&&f.moment){var n=!1;p.hasAttribute("data-format")&&(n=p.getAttribute("data-format")),i=function(e,t){var a=!1;if(t)switch(t){case"ISO_8601":a=moment(e,moment.ISO_8601).format("YYYYMMDD");break;case"RFC_2822":a=moment(e,"ddd, MM MMM YYYY HH:mm:ss ZZ").format("YYYYMMDD");break;case"MYSQL":a=moment(e,"YYYY-MM-DD hh:mm:ss").format("YYYYMMDD");break;case"UNIX":a=moment(e).unix();break;default:a=moment(e,t).format("YYYYMMDD")}return a}(a,n)}parseFloat(i)==i?d[c++]={value:Number(i),row:e}:l[h++]={value:a,row:e}}),v.contains(p,"asc")||"asc"==e?(n=x(l,-1),r=x(d,-1),i="descending",v.remove(p,"asc"),v.add(p,"desc")):(n=x(d,1),r=x(l,1),i="ascending",v.remove(p,"desc"),v.add(p,"asc")),a.lastTh&&p!=a.lastTh&&(v.remove(a.lastTh,"desc"),v.remove(a.lastTh,"asc")),a.lastTh=p,o=n.concat(r),a.data=[];var u=[];g(o,function(e,t){a.data.push(e.row),null!==e.row.searchIndex&&void 0!==e.row.searchIndex&&u.push(t)},a),a.searchData=u,this.rebuild(),a.update(),t||a.emit("datatable.sort",s,i)},t.prototype.rebuild=function(){var a,i,n,s,r=this.dt,o=[];r.activeRows=[],r.activeHeadings=[],g(r.headings,function(e,t){e.originalCellIndex=t,e.sortable="false"!==e.getAttribute("data-sortable"),r.hiddenColumns.indexOf(t)<0&&r.activeHeadings.push(e)},this),g(r.data,function(e,t){a=e.cloneNode(),i=e.cloneNode(),a.dataIndex=i.dataIndex=t,null!==e.searchIndex&&void 0!==e.searchIndex&&(a.searchIndex=i.searchIndex=e.searchIndex),g(e.cells,function(e){(n=e.cloneNode(!0)).data=e.data,a.appendChild(n),r.hiddenColumns.indexOf(e.cellIndex)<0&&((s=e.cloneNode(!0)).data=e.data,i.appendChild(s))}),o.push(a),r.activeRows.push(i)}),r.data=o,r.update()};var i=function(e,t){return this.dt=e,this.rows=t,this};i.prototype.build=function(a){var i,n=m("tr"),e=this.dt.headings;return e.length||(e=a.map(function(){return""})),g(e,function(e,t){i=m("td"),a[t]||a[t].length||(a[t]=""),i.innerHTML=a[t],i.data=a[t],n.appendChild(i)}),n},i.prototype.render=function(e){return e},i.prototype.add=function(e){if(p(e)){var a=this.dt;p(e[0])?g(e,function(e,t){a.data.push(this.build(e))},this):a.data.push(this.build(e)),a.data.length&&(a.hasRows=!0),this.update(),a.columns().rebuild()}},i.prototype.remove=function(e){var a=this.dt;p(e)?(e.sort(function(e,t){return t-e}),g(e,function(e,t){a.data.splice(e,1)})):a.data.splice(e,1),this.update(),a.columns().rebuild()},i.prototype.update=function(){g(this.dt.data,function(e,t){e.dataIndex=t})};var n=function(e,t){if(this.initialized=!1,this.options=u(a,t),"string"==typeof e&&(e=document.querySelector(e)),this.initialLayout=e.innerHTML,this.initialSortable=this.options.sortable,this.options.header||(this.options.sortable=!1),null===e.tHead&&(!this.options.data||this.options.data&&!this.options.data.headings)&&(this.options.sortable=!1),e.tBodies.length&&!e.tBodies[0].rows.length&&this.options.data&&!this.options.data.data)throw new Error("You seem to be using the data option, but you've not defined any rows.");this.table=e,this.init()};n.extend=function(e,t){"function"==typeof t?n.prototype[e]=t:n[e]=t};var r=n.prototype;return r.init=function(e){if(this.initialized||v.contains(this.table,"dataTable-table"))return!1;var a=this;this.options=u(this.options,e||{}),this.isIE=!!/(msie|trident)/i.test(navigator.userAgent),this.currentPage=1,this.onFirstPage=!0,this.hiddenColumns=[],this.columnRenderers=[],this.selectedColumns=[],this.render(),setTimeout(function(){a.emit("datatable.init"),a.initialized=!0,a.options.plugins&&g(a.options.plugins,function(e,t){a[t]&&"function"==typeof a[t]&&(a[t]=a[t](e,{each:g,extend:u,classList:v,createElement:m}),e.enabled&&a[t].init&&"function"==typeof a[t].init&&a[t].init())})},10)},r.render=function(e){if(e){switch(e){case"page":this.renderPage();break;case"pager":this.renderPager();break;case"header":this.renderHeader()}return!1}var a=this,i=a.options,t="";if(i.data&&function(t){var e=!1,i=!1;if((t=t||this.options.data).headings){e=m("thead");var a=m("tr");g(t.headings,function(e){var t=m("th",{html:e});a.appendChild(t)}),e.appendChild(a)}t.data&&t.data.length&&(i=m("tbody"),g(t.data,function(e){if(t.headings&&t.headings.length!==e.length)throw new Error("The number of rows do not match the number of headings.");var a=m("tr");g(e,function(e){var t=m("td",{html:e});a.appendChild(t)}),i.appendChild(a)})),e&&(null!==this.table.tHead&&this.table.removeChild(this.table.tHead),this.table.appendChild(e)),i&&(this.table.tBodies.length&&this.table.removeChild(this.table.tBodies[0]),this.table.appendChild(i))}.call(a),i.ajax){var n=i.ajax,s=new XMLHttpRequest;b(s,"progress",function(e){a.emit("datatable.ajax.progress",e,s)}),b(s,"load",function(e){if(4===s.readyState)if(a.emit("datatable.ajax.loaded",e,s),200===s.status){var t={};t.data=n.load?n.load.call(a,s):s.responseText,t.type="json",n.content&&n.content.type&&(t.type=n.content.type,t=u(t,n.content)),a.import(t),a.setColumns(!0),a.emit("datatable.ajax.success",e,s)}else a.emit("datatable.ajax.error",e,s)}),b(s,"error",function(e){a.emit("datatable.ajax.error",e,s)}),b(s,"abort",function(e){a.emit("datatable.ajax.abort",e,s)}),a.emit("datatable.ajax.loading",s),s.open("GET","string"==typeof n?i.ajax:i.ajax.url),s.send()}if(a.body=a.table.tBodies[0],a.head=a.table.tHead,a.foot=a.table.tFoot,a.body||(a.body=m("tbody"),a.table.appendChild(a.body)),a.hasRows=0",t+="
",t+="
",t+=i.layout.bottom,t=(t+="
").replace("{info}","
"),i.perPageSelect){var l="
";var d=m("select",{class:"dataTable-selector"});g(i.perPageSelect,function(e){var t=e===i.perPage,a=new Option(e,e,t,t);d.add(a)}),l=l.replace("{select}",d.outerHTML),t=t.replace("{select}",l)}else t=t.replace("{select}","");if(i.searchable){var h="";t=t.replace("{search}",h)}else t=t.replace("{search}","");a.hasHeadings&&this.render("header"),v.add(a.table,"dataTable-table");var c=m("div",{class:"dataTable-pagination"}),p=m("ul");c.appendChild(p),t=t.replace(/\{pager\}/g,c.outerHTML),a.wrapper.innerHTML=t,a.container=a.wrapper.querySelector(".dataTable-container"),a.pagers=a.wrapper.querySelectorAll(".dataTable-pagination"),a.label=a.wrapper.querySelector(".dataTable-info"),a.table.parentNode.replaceChild(a.wrapper,a.table),a.container.appendChild(a.table),a.rect=a.table.getBoundingClientRect(),a.data=[].slice.call(a.body.rows),a.activeRows=a.data.slice(),a.activeHeadings=a.headings.slice(),a.update(),i.ajax||a.setColumns(),this.fixHeight(),a.fixColumns(),i.header||v.add(a.wrapper,"no-header"),i.footer||v.add(a.wrapper,"no-footer"),i.sortable&&v.add(a.wrapper,"sortable"),i.searchable&&v.add(a.wrapper,"searchable"),i.fixedHeight&&v.add(a.wrapper,"fixed-height"),i.fixedColumns&&v.add(a.wrapper,"fixed-columns"),a.bindEvents()},r.renderPage=function(){if(this.hasRows&&this.totalPages){this.currentPage>this.totalPages&&(this.currentPage=1);var e=this.currentPage-1,t=o.createDocumentFragment();this.hasHeadings&&(l(this.header,this.isIE),g(this.activeHeadings,function(e){this.header.appendChild(e)},this)),g(this.pages[e],function(e){t.appendChild(this.rows().render(e))},this),this.clear(t),this.onFirstPage=1===this.currentPage,this.onLastPage=this.currentPage===this.lastPage}else this.clear();var a,i=0,n=0,s=0;if(this.totalPages&&(s=(n=(i=this.currentPage-1)*this.options.perPage)+this.pages[i].length,n+=1,a=this.searching?this.searchData.length:this.data.length),this.label&&this.options.labels.info.length){var r=this.options.labels.info.replace("{start}",n).replace("{end}",s).replace("{page}",this.currentPage).replace("{pages}",this.totalPages).replace("{rows}",a);this.label.innerHTML=a?r:""}1==this.currentPage&&this.fixHeight()},r.renderPager=function(){if(l(this.pagers,this.isIE),1'+s+""});h.push(i)}}h.push(e),r=e}),h}(this.links,this.currentPage,this.pages.length,this.options.pagerDelta,this.options.ellipsisText)),v.add(this.links[this.currentPage-1],"active"),g(n,function(e){v.remove(e,"active"),t.appendChild(e)}),v.add(this.links[this.currentPage-1],"active"),this.options.nextPrev&&t.appendChild(s(e,i,this.options.nextText)),this.options.firstLast&&t.appendChild(s(e,this.totalPages,this.options.lastText)),g(this.pagers,function(e){e.appendChild(t.cloneNode(!0))})}},r.renderHeader=function(){var i=this;i.labels=[],i.headings&&i.headings.length&&g(i.headings,function(e,t){if(i.labels[t]=e.textContent,v.contains(e.firstElementChild,"dataTable-sorter")&&(e.innerHTML=e.firstElementChild.innerHTML),e.sortable="false"!==e.getAttribute("data-sortable"),e.originalCellIndex=t,i.options.sortable&&e.sortable){var a=m("a",{href:"#",class:"dataTable-sorter",html:e.innerHTML});e.innerHTML="",e.setAttribute("data-sortable",""),e.appendChild(a)}}),i.fixColumns()},r.bindEvents=function(){var a=this,i=a.options;if(i.perPageSelect){var e=a.wrapper.querySelector(".dataTable-selector");e&&b(e,"change",function(e){i.perPage=parseInt(this.value,10),a.update(),a.fixHeight(),a.emit("datatable.perpage",i.perPage)})}i.searchable&&(a.input=a.wrapper.querySelector(".dataTable-input"),a.input&&b(a.input,"keyup",function(e){a.search(this.value)})),b(a.wrapper,"click",function(e){var t=e.target;"a"===t.nodeName.toLowerCase()&&(t.hasAttribute("data-page")?(a.page(t.getAttribute("data-page")),e.preventDefault()):i.sortable&&v.contains(t,"dataTable-sorter")&&"false"!=t.parentNode.getAttribute("data-sortable")&&(a.columns().sort(a.activeHeadings.indexOf(t.parentNode)+1),e.preventDefault()))})},r.setColumns=function(e){var n=this;e||g(n.data,function(e){g(e.cells,function(e){e.data=e.innerHTML})}),n.options.columns&&n.headings.length&&g(n.options.columns,function(a){p(a.select)||(a.select=[a.select]),a.hasOwnProperty("render")&&"function"==typeof a.render&&(n.selectedColumns=n.selectedColumns.concat(a.select),n.columnRenderers.push({columns:a.select,renderer:a.render})),g(a.select,function(e){var t=n.headings[e];a.type&&t.setAttribute("data-type",a.type),a.format&&t.setAttribute("data-format",a.format),a.hasOwnProperty("sortable")&&t.setAttribute("data-sortable",a.sortable),a.hasOwnProperty("hidden")&&!1!==a.hidden&&n.columns().hide(e),a.hasOwnProperty("sort")&&1===a.select.length&&n.columns().sort(a.select[0]+1,a.sort,!0)})}),n.hasRows&&(g(n.data,function(e,t){e.dataIndex=t,g(e.cells,function(e){e.data=e.innerHTML})}),n.selectedColumns.length&&g(n.data,function(i){g(i.cells,function(t,a){-1this.pages.length||e<0)&&(this.render("page"),this.render("pager"),void this.emit("datatable.page",e)))},r.sortColumn=function(e,t){this.columns().sort(e,t)},r.insert=function(e){var n=this,t=[];if(c(e)){if(e.headings&&!n.hasHeadings&&!n.hasRows){var a,i=m("tr");g(e.headings,function(e){a=m("th",{html:e}),i.appendChild(a)}),n.head.appendChild(i),n.header=i,n.headings=[].slice.call(i.cells),n.hasHeadings=!0,n.options.sortable=n.initialSortable,n.render("header")}e.data&&p(e.data)&&(t=e.data)}else p(e)&&g(e,function(e){var i=[];g(e,function(e,t){var a=n.labels.indexOf(t);-1'+e+""}))},r.columns=function(e){return new t(this,e)},r.rows=function(e){return new i(this,e)},r.on=function(e,t){this.events=this.events||{},this.events[e]=this.events[e]||[],this.events[e].push(t)},r.off=function(e,t){this.events=this.events||{},e in this.events!=!1&&this.events[e].splice(this.events[e].indexOf(t),1)},r.emit=function(e){if(this.events=this.events||{},e in this.events!=!1)for(var t=0;t Date: Tue, 10 Jul 2018 12:52:25 -0400 Subject: [PATCH 20/21] Fixing the download link functionality --- dist/vanilla-dataTables.min.js | 4 ++-- src/vanilla-dataTables.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dist/vanilla-dataTables.min.js b/dist/vanilla-dataTables.min.js index 11b3284..4b4470b 100644 --- a/dist/vanilla-dataTables.min.js +++ b/dist/vanilla-dataTables.min.js @@ -4,8 +4,8 @@ * Copyright (c) 2015-2017 Karl Saunders (http://mobius.ovh) * Licensed under MIT (http://www.opensource.org/licenses/mit-license.php) * - * Base on Version: 1.6.14 + * Based on Version: 1.6.14 (https://github.com/Mobius1/Vanilla-DataTables) * Edited version: https://github.com/espiegel/Vanilla-DataTables/tree/bugfix/search_no_results_minified * */ -!function(e,t){var a="DataTable";"object"==typeof exports?module.exports=t(a):"function"==typeof define&&define.amd?define([],t(a)):e[a]=t(a)}("undefined"!=typeof global?global:this.window||this.global,function(e){"use strict";var f=window,o=document,h=o.body,a={perPage:10,perPageSelect:[5,10,15,20,25],sortable:!0,searchable:!0,nextPrev:!0,firstLast:!1,prevText:"‹",nextText:"›",firstText:"«",lastText:"»",ellipsisText:"…",ascText:"▴",descText:"▾",truncatePager:!0,pagerDelta:2,fixedColumns:!0,fixedHeight:!1,header:!0,footer:!1,labels:{placeholder:"Search...",perPage:"{select} entries per page",noRows:"No entries found",info:"Showing {start} to {end} of {rows} entries"},layout:{top:"{select}{search}",bottom:"{info}{pager}"}},c=function(e){return"[object Object]"===Object.prototype.toString.call(e)},p=function(e){return Array.isArray(e)},u=function(e,t){for(var a in t)if(t.hasOwnProperty(a)){var i=t[a];i&&c(i)?(e[a]=e[a]||{},u(e[a],i)):e[a]=i}return e},g=function(e,t,a){var i;if(c(e))for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(a,e[i],i);else for(i=0;i'+a+""})},v={add:function(e,t){e.classList?e.classList.add(t):v.contains(e,t)||(e.className=e.className.trim()+" "+t)},remove:function(e,t){e.classList?e.classList.remove(t):v.contains(e,t)&&(e.className=e.className.replace(new RegExp("(^|\\s)"+t.split(" ").join("|")+"(\\s|$)","gi")," "))},contains:function(e,t){if(e)return e.classList?e.classList.contains(t):!!e.className&&!!e.className.match(new RegExp("(\\s|^)"+t+"(\\s|$)"))}},x=function(e,t){var a,i;1===t?(a=0,i=e.length):-1===t&&(a=e.length-1,i=-1);for(var n=!0;n;){n=!1;for(var s=a;s!=i;s+=t)if(e[s+t]&&e[s].value>e[s+t].value){var r=e[s],o=e[s+t],l=r;e[s]=o,e[s+t]=l,n=!0}}return e},t=function(e){return this.dt=e,this};t.prototype.swap=function(e){if(e.length&&2===e.length){var a=[];g(this.dt.headings,function(e,t){a.push(t)});var t=e[0],i=e[1],n=a[i];a[i]=a[t],a[t]=n,this.order(a)}},t.prototype.order=function(t){var a,i,n,s,r,o,l,d=[[],[],[],[]],h=this.dt;g(t,function(e,t){r=h.headings[e],o="false"!==r.getAttribute("data-sortable"),(a=r.cloneNode(!0)).originalCellIndex=t,a.sortable=o,d[0].push(a),h.hiddenColumns.indexOf(e)<0&&((i=r.cloneNode(!0)).originalCellIndex=t,i.sortable=o,d[1].push(i))}),g(h.data,function(a,e){n=a.cloneNode(),s=a.cloneNode(),n.dataIndex=s.dataIndex=e,null!==a.searchIndex&&void 0!==a.searchIndex&&(n.searchIndex=s.searchIndex=a.searchIndex),g(t,function(e,t){(l=a.cells[e].cloneNode(!0)).data=a.cells[e].data,n.appendChild(l),h.hiddenColumns.indexOf(e)<0&&((l=a.cells[e].cloneNode(!0)).data=a.cells[e].data,s.appendChild(l))}),d[2].push(n),d[3].push(s)}),h.headings=d[0],h.activeHeadings=d[1],h.data=d[2],h.activeRows=d[3],h.update()},t.prototype.hide=function(e){if(e.length){var t=this.dt;g(e,function(e){t.hiddenColumns.indexOf(e)<0&&t.hiddenColumns.push(e)}),this.rebuild()}},t.prototype.show=function(e){if(e.length){var t,a=this.dt;g(e,function(e){-1<(t=a.hiddenColumns.indexOf(e))&&a.hiddenColumns.splice(t,1)}),this.rebuild()}},t.prototype.visible=function(e){var t,a=this.dt;return e=e||a.headings.map(function(e){return e.originalCellIndex}),isNaN(e)?p(e)&&(t=[],g(e,function(e){t.push(a.hiddenColumns.indexOf(e)<0)})):t=a.hiddenColumns.indexOf(e)<0,t},t.prototype.add=function(a){var i,n=this,e=document.createElement("th");if(!this.dt.headings.length)return this.dt.insert({headings:[a.heading],data:a.data.map(function(e){return[e]})}),void this.rebuild();this.dt.hiddenHeader?e.innerHTML="":a.heading.nodeName?e.appendChild(a.heading):e.innerHTML=a.heading,this.dt.headings.push(e),g(this.dt.data,function(e,t){a.data[t]&&(i=document.createElement("td"),a.data[t].nodeName?i.appendChild(a.data[t]):i.innerHTML=a.data[t],i.data=i.innerHTML,a.render&&(i.innerHTML=a.render.call(n,i.data,i,e)),e.appendChild(i))}),a.type&&e.setAttribute("data-type",a.type),a.format&&e.setAttribute("data-format",a.format),a.hasOwnProperty("sortable")&&(e.sortable=a.sortable,e.setAttribute("data-sortable",!0===a.sortable?"true":"false")),this.rebuild(),this.dt.renderHeader()},t.prototype.remove=function(t){p(t)?(t.sort(function(e,t){return t-e}),g(t,function(e){this.remove(e)},this)):(this.dt.headings.splice(t,1),g(this.dt.data,function(e){e.removeChild(e.cells[t])})),this.rebuild()},t.prototype.sort=function(s,e,t){var a=this.dt;if(a.hasHeadings&&(s<1||s>a.activeHeadings.length))return!1;a.sorting=!0,s-=1;var i,n,r,o=a.data,l=[],d=[],h=0,c=0,p=a.activeHeadings[s];s=p.originalCellIndex,g(o,function(e){var t=e.cells[s],a=t.hasAttribute("data-content")?t.getAttribute("data-content"):t.data,i=a.replace(/(\$|\,|\s|%)/g,"");if("date"===p.getAttribute("data-type")&&f.moment){var n=!1;p.hasAttribute("data-format")&&(n=p.getAttribute("data-format")),i=function(e,t){var a=!1;if(t)switch(t){case"ISO_8601":a=moment(e,moment.ISO_8601).format("YYYYMMDD");break;case"RFC_2822":a=moment(e,"ddd, MM MMM YYYY HH:mm:ss ZZ").format("YYYYMMDD");break;case"MYSQL":a=moment(e,"YYYY-MM-DD hh:mm:ss").format("YYYYMMDD");break;case"UNIX":a=moment(e).unix();break;default:a=moment(e,t).format("YYYYMMDD")}return a}(a,n)}parseFloat(i)==i?d[c++]={value:Number(i),row:e}:l[h++]={value:a,row:e}}),v.contains(p,"asc")||"asc"==e?(n=x(l,-1),r=x(d,-1),i="descending",v.remove(p,"asc"),v.add(p,"desc")):(n=x(d,1),r=x(l,1),i="ascending",v.remove(p,"desc"),v.add(p,"asc")),a.lastTh&&p!=a.lastTh&&(v.remove(a.lastTh,"desc"),v.remove(a.lastTh,"asc")),a.lastTh=p,o=n.concat(r),a.data=[];var u=[];g(o,function(e,t){a.data.push(e.row),null!==e.row.searchIndex&&void 0!==e.row.searchIndex&&u.push(t)},a),a.searchData=u,this.rebuild(),a.update(),t||a.emit("datatable.sort",s,i)},t.prototype.rebuild=function(){var a,i,n,s,r=this.dt,o=[];r.activeRows=[],r.activeHeadings=[],g(r.headings,function(e,t){e.originalCellIndex=t,e.sortable="false"!==e.getAttribute("data-sortable"),r.hiddenColumns.indexOf(t)<0&&r.activeHeadings.push(e)},this),g(r.data,function(e,t){a=e.cloneNode(),i=e.cloneNode(),a.dataIndex=i.dataIndex=t,null!==e.searchIndex&&void 0!==e.searchIndex&&(a.searchIndex=i.searchIndex=e.searchIndex),g(e.cells,function(e){(n=e.cloneNode(!0)).data=e.data,a.appendChild(n),r.hiddenColumns.indexOf(e.cellIndex)<0&&((s=e.cloneNode(!0)).data=e.data,i.appendChild(s))}),o.push(a),r.activeRows.push(i)}),r.data=o,r.update()};var i=function(e,t){return this.dt=e,this.rows=t,this};i.prototype.build=function(a){var i,n=m("tr"),e=this.dt.headings;return e.length||(e=a.map(function(){return""})),g(e,function(e,t){i=m("td"),a[t]||a[t].length||(a[t]=""),i.innerHTML=a[t],i.data=a[t],n.appendChild(i)}),n},i.prototype.render=function(e){return e},i.prototype.add=function(e){if(p(e)){var a=this.dt;p(e[0])?g(e,function(e,t){a.data.push(this.build(e))},this):a.data.push(this.build(e)),a.data.length&&(a.hasRows=!0),this.update(),a.columns().rebuild()}},i.prototype.remove=function(e){var a=this.dt;p(e)?(e.sort(function(e,t){return t-e}),g(e,function(e,t){a.data.splice(e,1)})):a.data.splice(e,1),this.update(),a.columns().rebuild()},i.prototype.update=function(){g(this.dt.data,function(e,t){e.dataIndex=t})};var n=function(e,t){if(this.initialized=!1,this.options=u(a,t),"string"==typeof e&&(e=document.querySelector(e)),this.initialLayout=e.innerHTML,this.initialSortable=this.options.sortable,this.options.header||(this.options.sortable=!1),null===e.tHead&&(!this.options.data||this.options.data&&!this.options.data.headings)&&(this.options.sortable=!1),e.tBodies.length&&!e.tBodies[0].rows.length&&this.options.data&&!this.options.data.data)throw new Error("You seem to be using the data option, but you've not defined any rows.");this.table=e,this.init()};n.extend=function(e,t){"function"==typeof t?n.prototype[e]=t:n[e]=t};var r=n.prototype;return r.init=function(e){if(this.initialized||v.contains(this.table,"dataTable-table"))return!1;var a=this;this.options=u(this.options,e||{}),this.isIE=!!/(msie|trident)/i.test(navigator.userAgent),this.currentPage=1,this.onFirstPage=!0,this.hiddenColumns=[],this.columnRenderers=[],this.selectedColumns=[],this.render(),setTimeout(function(){a.emit("datatable.init"),a.initialized=!0,a.options.plugins&&g(a.options.plugins,function(e,t){a[t]&&"function"==typeof a[t]&&(a[t]=a[t](e,{each:g,extend:u,classList:v,createElement:m}),e.enabled&&a[t].init&&"function"==typeof a[t].init&&a[t].init())})},10)},r.render=function(e){if(e){switch(e){case"page":this.renderPage();break;case"pager":this.renderPager();break;case"header":this.renderHeader()}return!1}var a=this,i=a.options,t="";if(i.data&&function(t){var e=!1,i=!1;if((t=t||this.options.data).headings){e=m("thead");var a=m("tr");g(t.headings,function(e){var t=m("th",{html:e});a.appendChild(t)}),e.appendChild(a)}t.data&&t.data.length&&(i=m("tbody"),g(t.data,function(e){if(t.headings&&t.headings.length!==e.length)throw new Error("The number of rows do not match the number of headings.");var a=m("tr");g(e,function(e){var t=m("td",{html:e});a.appendChild(t)}),i.appendChild(a)})),e&&(null!==this.table.tHead&&this.table.removeChild(this.table.tHead),this.table.appendChild(e)),i&&(this.table.tBodies.length&&this.table.removeChild(this.table.tBodies[0]),this.table.appendChild(i))}.call(a),i.ajax){var n=i.ajax,s=new XMLHttpRequest;b(s,"progress",function(e){a.emit("datatable.ajax.progress",e,s)}),b(s,"load",function(e){if(4===s.readyState)if(a.emit("datatable.ajax.loaded",e,s),200===s.status){var t={};t.data=n.load?n.load.call(a,s):s.responseText,t.type="json",n.content&&n.content.type&&(t.type=n.content.type,t=u(t,n.content)),a.import(t),a.setColumns(!0),a.emit("datatable.ajax.success",e,s)}else a.emit("datatable.ajax.error",e,s)}),b(s,"error",function(e){a.emit("datatable.ajax.error",e,s)}),b(s,"abort",function(e){a.emit("datatable.ajax.abort",e,s)}),a.emit("datatable.ajax.loading",s),s.open("GET","string"==typeof n?i.ajax:i.ajax.url),s.send()}if(a.body=a.table.tBodies[0],a.head=a.table.tHead,a.foot=a.table.tFoot,a.body||(a.body=m("tbody"),a.table.appendChild(a.body)),a.hasRows=0",t+="
",t+="
",t+=i.layout.bottom,t=(t+="
").replace("{info}","
"),i.perPageSelect){var l="
";var d=m("select",{class:"dataTable-selector"});g(i.perPageSelect,function(e){var t=e===i.perPage,a=new Option(e,e,t,t);d.add(a)}),l=l.replace("{select}",d.outerHTML),t=t.replace("{select}",l)}else t=t.replace("{select}","");if(i.searchable){var h="";t=t.replace("{search}",h)}else t=t.replace("{search}","");a.hasHeadings&&this.render("header"),v.add(a.table,"dataTable-table");var c=m("div",{class:"dataTable-pagination"}),p=m("ul");c.appendChild(p),t=t.replace(/\{pager\}/g,c.outerHTML),a.wrapper.innerHTML=t,a.container=a.wrapper.querySelector(".dataTable-container"),a.pagers=a.wrapper.querySelectorAll(".dataTable-pagination"),a.label=a.wrapper.querySelector(".dataTable-info"),a.table.parentNode.replaceChild(a.wrapper,a.table),a.container.appendChild(a.table),a.rect=a.table.getBoundingClientRect(),a.data=[].slice.call(a.body.rows),a.activeRows=a.data.slice(),a.activeHeadings=a.headings.slice(),a.update(),i.ajax||a.setColumns(),this.fixHeight(),a.fixColumns(),i.header||v.add(a.wrapper,"no-header"),i.footer||v.add(a.wrapper,"no-footer"),i.sortable&&v.add(a.wrapper,"sortable"),i.searchable&&v.add(a.wrapper,"searchable"),i.fixedHeight&&v.add(a.wrapper,"fixed-height"),i.fixedColumns&&v.add(a.wrapper,"fixed-columns"),a.bindEvents()},r.renderPage=function(){if(this.hasRows&&this.totalPages){this.currentPage>this.totalPages&&(this.currentPage=1);var e=this.currentPage-1,t=o.createDocumentFragment();this.hasHeadings&&(l(this.header,this.isIE),g(this.activeHeadings,function(e){this.header.appendChild(e)},this)),g(this.pages[e],function(e){t.appendChild(this.rows().render(e))},this),this.clear(t),this.onFirstPage=1===this.currentPage,this.onLastPage=this.currentPage===this.lastPage}else this.clear();var a,i=0,n=0,s=0;if(this.totalPages&&(s=(n=(i=this.currentPage-1)*this.options.perPage)+this.pages[i].length,n+=1,a=this.searching?this.searchData.length:this.data.length),this.label&&this.options.labels.info.length){var r=this.options.labels.info.replace("{start}",n).replace("{end}",s).replace("{page}",this.currentPage).replace("{pages}",this.totalPages).replace("{rows}",a);this.label.innerHTML=a?r:""}1==this.currentPage&&this.fixHeight()},r.renderPager=function(){if(l(this.pagers,this.isIE),1'+s+""});h.push(i)}}h.push(e),r=e}),h}(this.links,this.currentPage,this.pages.length,this.options.pagerDelta,this.options.ellipsisText)),v.add(this.links[this.currentPage-1],"active"),g(n,function(e){v.remove(e,"active"),t.appendChild(e)}),v.add(this.links[this.currentPage-1],"active"),this.options.nextPrev&&t.appendChild(s(e,i,this.options.nextText)),this.options.firstLast&&t.appendChild(s(e,this.totalPages,this.options.lastText)),g(this.pagers,function(e){e.appendChild(t.cloneNode(!0))})}},r.renderHeader=function(){var i=this;i.labels=[],i.headings&&i.headings.length&&g(i.headings,function(e,t){if(i.labels[t]=e.textContent,v.contains(e.firstElementChild,"dataTable-sorter")&&(e.innerHTML=e.firstElementChild.innerHTML),e.sortable="false"!==e.getAttribute("data-sortable"),e.originalCellIndex=t,i.options.sortable&&e.sortable){var a=m("a",{href:"#",class:"dataTable-sorter",html:e.innerHTML});e.innerHTML="",e.setAttribute("data-sortable",""),e.appendChild(a)}}),i.fixColumns()},r.bindEvents=function(){var a=this,i=a.options;if(i.perPageSelect){var e=a.wrapper.querySelector(".dataTable-selector");e&&b(e,"change",function(e){i.perPage=parseInt(this.value,10),a.update(),a.fixHeight(),a.emit("datatable.perpage",i.perPage)})}i.searchable&&(a.input=a.wrapper.querySelector(".dataTable-input"),a.input&&b(a.input,"keyup",function(e){a.search(this.value)})),b(a.wrapper,"click",function(e){var t=e.target;"a"===t.nodeName.toLowerCase()&&(t.hasAttribute("data-page")?(a.page(t.getAttribute("data-page")),e.preventDefault()):i.sortable&&v.contains(t,"dataTable-sorter")&&"false"!=t.parentNode.getAttribute("data-sortable")&&(a.columns().sort(a.activeHeadings.indexOf(t.parentNode)+1),e.preventDefault()))})},r.setColumns=function(e){var n=this;e||g(n.data,function(e){g(e.cells,function(e){e.data=e.innerHTML})}),n.options.columns&&n.headings.length&&g(n.options.columns,function(a){p(a.select)||(a.select=[a.select]),a.hasOwnProperty("render")&&"function"==typeof a.render&&(n.selectedColumns=n.selectedColumns.concat(a.select),n.columnRenderers.push({columns:a.select,renderer:a.render})),g(a.select,function(e){var t=n.headings[e];a.type&&t.setAttribute("data-type",a.type),a.format&&t.setAttribute("data-format",a.format),a.hasOwnProperty("sortable")&&t.setAttribute("data-sortable",a.sortable),a.hasOwnProperty("hidden")&&!1!==a.hidden&&n.columns().hide(e),a.hasOwnProperty("sort")&&1===a.select.length&&n.columns().sort(a.select[0]+1,a.sort,!0)})}),n.hasRows&&(g(n.data,function(e,t){e.dataIndex=t,g(e.cells,function(e){e.data=e.innerHTML})}),n.selectedColumns.length&&g(n.data,function(i){g(i.cells,function(t,a){-1this.pages.length||e<0)&&(this.render("page"),this.render("pager"),void this.emit("datatable.page",e)))},r.sortColumn=function(e,t){this.columns().sort(e,t)},r.insert=function(e){var n=this,t=[];if(c(e)){if(e.headings&&!n.hasHeadings&&!n.hasRows){var a,i=m("tr");g(e.headings,function(e){a=m("th",{html:e}),i.appendChild(a)}),n.head.appendChild(i),n.header=i,n.headings=[].slice.call(i.cells),n.hasHeadings=!0,n.options.sortable=n.initialSortable,n.render("header")}e.data&&p(e.data)&&(t=e.data)}else p(e)&&g(e,function(e){var i=[];g(e,function(e,t){var a=n.labels.indexOf(t);-1'+e+""}))},r.columns=function(e){return new t(this,e)},r.rows=function(e){return new i(this,e)},r.on=function(e,t){this.events=this.events||{},this.events[e]=this.events[e]||[],this.events[e].push(t)},r.off=function(e,t){this.events=this.events||{},e in this.events!=!1&&this.events[e].splice(this.events[e].indexOf(t),1)},r.emit=function(e){if(this.events=this.events||{},e in this.events!=!1)for(var t=0;t'+a+""})},v={add:function(e,t){e.classList?e.classList.add(t):v.contains(e,t)||(e.className=e.className.trim()+" "+t)},remove:function(e,t){e.classList?e.classList.remove(t):v.contains(e,t)&&(e.className=e.className.replace(new RegExp("(^|\\s)"+t.split(" ").join("|")+"(\\s|$)","gi")," "))},contains:function(e,t){if(e)return e.classList?e.classList.contains(t):!!e.className&&!!e.className.match(new RegExp("(\\s|^)"+t+"(\\s|$)"))}},x=function(e,t){var a,i;1===t?(a=0,i=e.length):-1===t&&(a=e.length-1,i=-1);for(var n=!0;n;){n=!1;for(var s=a;s!=i;s+=t)if(e[s+t]&&e[s].value>e[s+t].value){var r=e[s],o=e[s+t],l=r;e[s]=o,e[s+t]=l,n=!0}}return e},t=function(e){return this.dt=e,this};t.prototype.swap=function(e){if(e.length&&2===e.length){var a=[];g(this.dt.headings,function(e,t){a.push(t)});var t=e[0],i=e[1],n=a[i];a[i]=a[t],a[t]=n,this.order(a)}},t.prototype.order=function(t){var a,i,n,s,r,o,l,d=[[],[],[],[]],h=this.dt;g(t,function(e,t){r=h.headings[e],o="false"!==r.getAttribute("data-sortable"),(a=r.cloneNode(!0)).originalCellIndex=t,a.sortable=o,d[0].push(a),h.hiddenColumns.indexOf(e)<0&&((i=r.cloneNode(!0)).originalCellIndex=t,i.sortable=o,d[1].push(i))}),g(h.data,function(a,e){n=a.cloneNode(),s=a.cloneNode(),n.dataIndex=s.dataIndex=e,null!==a.searchIndex&&void 0!==a.searchIndex&&(n.searchIndex=s.searchIndex=a.searchIndex),g(t,function(e,t){(l=a.cells[e].cloneNode(!0)).data=a.cells[e].data,n.appendChild(l),h.hiddenColumns.indexOf(e)<0&&((l=a.cells[e].cloneNode(!0)).data=a.cells[e].data,s.appendChild(l))}),d[2].push(n),d[3].push(s)}),h.headings=d[0],h.activeHeadings=d[1],h.data=d[2],h.activeRows=d[3],h.update()},t.prototype.hide=function(e){if(e.length){var t=this.dt;g(e,function(e){t.hiddenColumns.indexOf(e)<0&&t.hiddenColumns.push(e)}),this.rebuild()}},t.prototype.show=function(e){if(e.length){var t,a=this.dt;g(e,function(e){-1<(t=a.hiddenColumns.indexOf(e))&&a.hiddenColumns.splice(t,1)}),this.rebuild()}},t.prototype.visible=function(e){var t,a=this.dt;return e=e||a.headings.map(function(e){return e.originalCellIndex}),isNaN(e)?c(e)&&(t=[],g(e,function(e){t.push(a.hiddenColumns.indexOf(e)<0)})):t=a.hiddenColumns.indexOf(e)<0,t},t.prototype.add=function(a){var i,n=this,e=document.createElement("th");if(!this.dt.headings.length)return this.dt.insert({headings:[a.heading],data:a.data.map(function(e){return[e]})}),void this.rebuild();this.dt.hiddenHeader?e.innerHTML="":a.heading.nodeName?e.appendChild(a.heading):e.innerHTML=a.heading,this.dt.headings.push(e),g(this.dt.data,function(e,t){a.data[t]&&(i=document.createElement("td"),a.data[t].nodeName?i.appendChild(a.data[t]):i.innerHTML=a.data[t],i.data=i.innerHTML,a.render&&(i.innerHTML=a.render.call(n,i.data,i,e)),e.appendChild(i))}),a.type&&e.setAttribute("data-type",a.type),a.format&&e.setAttribute("data-format",a.format),a.hasOwnProperty("sortable")&&(e.sortable=a.sortable,e.setAttribute("data-sortable",!0===a.sortable?"true":"false")),this.rebuild(),this.dt.renderHeader()},t.prototype.remove=function(t){c(t)?(t.sort(function(e,t){return t-e}),g(t,function(e){this.remove(e)},this)):(this.dt.headings.splice(t,1),g(this.dt.data,function(e){e.removeChild(e.cells[t])})),this.rebuild()},t.prototype.sort=function(s,e,t){var a=this.dt;if(a.hasHeadings&&(s<1||s>a.activeHeadings.length))return!1;a.sorting=!0,s-=1;var i,n,r,o=a.data,l=[],d=[],h=0,c=0,p=a.activeHeadings[s];s=p.originalCellIndex,g(o,function(e){var t=e.cells[s],a=t.hasAttribute("data-content")?t.getAttribute("data-content"):t.data,i=a.replace(/(\$|\,|\s|%)/g,"");if("date"===p.getAttribute("data-type")&&f.moment){var n=!1;p.hasAttribute("data-format")&&(n=p.getAttribute("data-format")),i=function(e,t){var a=!1;if(t)switch(t){case"ISO_8601":a=moment(e,moment.ISO_8601).format("YYYYMMDD");break;case"RFC_2822":a=moment(e,"ddd, MM MMM YYYY HH:mm:ss ZZ").format("YYYYMMDD");break;case"MYSQL":a=moment(e,"YYYY-MM-DD hh:mm:ss").format("YYYYMMDD");break;case"UNIX":a=moment(e).unix();break;default:a=moment(e,t).format("YYYYMMDD")}return a}(a,n)}parseFloat(i)==i?d[c++]={value:Number(i),row:e}:l[h++]={value:a,row:e}}),v.contains(p,"asc")||"asc"==e?(n=x(l,-1),r=x(d,-1),i="descending",v.remove(p,"asc"),v.add(p,"desc")):(n=x(d,1),r=x(l,1),i="ascending",v.remove(p,"desc"),v.add(p,"asc")),a.lastTh&&p!=a.lastTh&&(v.remove(a.lastTh,"desc"),v.remove(a.lastTh,"asc")),a.lastTh=p,o=n.concat(r),a.data=[];var u=[];g(o,function(e,t){a.data.push(e.row),null!==e.row.searchIndex&&void 0!==e.row.searchIndex&&u.push(t)},a),a.searchData=u,this.rebuild(),a.update(),t||a.emit("datatable.sort",s,i)},t.prototype.rebuild=function(){var a,i,n,s,r=this.dt,o=[];r.activeRows=[],r.activeHeadings=[],g(r.headings,function(e,t){e.originalCellIndex=t,e.sortable="false"!==e.getAttribute("data-sortable"),r.hiddenColumns.indexOf(t)<0&&r.activeHeadings.push(e)},this),g(r.data,function(e,t){a=e.cloneNode(),i=e.cloneNode(),a.dataIndex=i.dataIndex=t,null!==e.searchIndex&&void 0!==e.searchIndex&&(a.searchIndex=i.searchIndex=e.searchIndex),g(e.cells,function(e){(n=e.cloneNode(!0)).data=e.data,a.appendChild(n),r.hiddenColumns.indexOf(e.cellIndex)<0&&((s=e.cloneNode(!0)).data=e.data,i.appendChild(s))}),o.push(a),r.activeRows.push(i)}),r.data=o,r.update()};var i=function(e,t){return this.dt=e,this.rows=t,this};i.prototype.build=function(a){var i,n=m("tr"),e=this.dt.headings;return e.length||(e=a.map(function(){return""})),g(e,function(e,t){i=m("td"),a[t]||a[t].length||(a[t]=""),i.innerHTML=a[t],i.data=a[t],n.appendChild(i)}),n},i.prototype.render=function(e){return e},i.prototype.add=function(e){if(c(e)){var a=this.dt;c(e[0])?g(e,function(e,t){a.data.push(this.build(e))},this):a.data.push(this.build(e)),a.data.length&&(a.hasRows=!0),this.update(),a.columns().rebuild()}},i.prototype.remove=function(e){var a=this.dt;c(e)?(e.sort(function(e,t){return t-e}),g(e,function(e,t){a.data.splice(e,1)})):a.data.splice(e,1),this.update(),a.columns().rebuild()},i.prototype.update=function(){g(this.dt.data,function(e,t){e.dataIndex=t})};var n=function(e,t){if(this.initialized=!1,this.options=u(a,t),"string"==typeof e&&(e=document.querySelector(e)),this.initialLayout=e.innerHTML,this.initialSortable=this.options.sortable,this.options.header||(this.options.sortable=!1),null===e.tHead&&(!this.options.data||this.options.data&&!this.options.data.headings)&&(this.options.sortable=!1),e.tBodies.length&&!e.tBodies[0].rows.length&&this.options.data&&!this.options.data.data)throw new Error("You seem to be using the data option, but you've not defined any rows.");this.table=e,this.init()};n.extend=function(e,t){"function"==typeof t?n.prototype[e]=t:n[e]=t};var r=n.prototype;return r.init=function(e){if(this.initialized||v.contains(this.table,"dataTable-table"))return!1;var a=this;this.options=u(this.options,e||{}),this.isIE=!!/(msie|trident)/i.test(navigator.userAgent),this.currentPage=1,this.onFirstPage=!0,this.hiddenColumns=[],this.columnRenderers=[],this.selectedColumns=[],this.render(),setTimeout(function(){a.emit("datatable.init"),a.initialized=!0,a.options.plugins&&g(a.options.plugins,function(e,t){a[t]&&"function"==typeof a[t]&&(a[t]=a[t](e,{each:g,extend:u,classList:v,createElement:m}),e.enabled&&a[t].init&&"function"==typeof a[t].init&&a[t].init())})},10)},r.render=function(e){if(e){switch(e){case"page":this.renderPage();break;case"pager":this.renderPager();break;case"header":this.renderHeader()}return!1}var a=this,i=a.options,t="";if(i.data&&function(t){var e=!1,i=!1;if((t=t||this.options.data).headings){e=m("thead");var a=m("tr");g(t.headings,function(e){var t=m("th",{html:e});a.appendChild(t)}),e.appendChild(a)}t.data&&t.data.length&&(i=m("tbody"),g(t.data,function(e){if(t.headings&&t.headings.length!==e.length)throw new Error("The number of rows do not match the number of headings.");var a=m("tr");g(e,function(e){var t=m("td",{html:e});a.appendChild(t)}),i.appendChild(a)})),e&&(null!==this.table.tHead&&this.table.removeChild(this.table.tHead),this.table.appendChild(e)),i&&(this.table.tBodies.length&&this.table.removeChild(this.table.tBodies[0]),this.table.appendChild(i))}.call(a),i.ajax){var n=i.ajax,s=new XMLHttpRequest;b(s,"progress",function(e){a.emit("datatable.ajax.progress",e,s)}),b(s,"load",function(e){if(4===s.readyState)if(a.emit("datatable.ajax.loaded",e,s),200===s.status){var t={};t.data=n.load?n.load.call(a,s):s.responseText,t.type="json",n.content&&n.content.type&&(t.type=n.content.type,t=u(t,n.content)),a.import(t),a.setColumns(!0),a.emit("datatable.ajax.success",e,s)}else a.emit("datatable.ajax.error",e,s)}),b(s,"error",function(e){a.emit("datatable.ajax.error",e,s)}),b(s,"abort",function(e){a.emit("datatable.ajax.abort",e,s)}),a.emit("datatable.ajax.loading",s),s.open("GET","string"==typeof n?i.ajax:i.ajax.url),s.send()}if(a.body=a.table.tBodies[0],a.head=a.table.tHead,a.foot=a.table.tFoot,a.body||(a.body=m("tbody"),a.table.appendChild(a.body)),a.hasRows=0",t+="
",t+="
",t+=i.layout.bottom,t=(t+="
").replace("{info}","
"),i.perPageSelect){var l="
";var d=m("select",{class:"dataTable-selector"});g(i.perPageSelect,function(e){var t=e===i.perPage,a=new Option(e,e,t,t);d.add(a)}),l=l.replace("{select}",d.outerHTML),t=t.replace("{select}",l)}else t=t.replace("{select}","");if(i.searchable){var h="";t=t.replace("{search}",h)}else t=t.replace("{search}","");a.hasHeadings&&this.render("header"),v.add(a.table,"dataTable-table");var c=m("div",{class:"dataTable-pagination"}),p=m("ul");c.appendChild(p),t=t.replace(/\{pager\}/g,c.outerHTML),a.wrapper.innerHTML=t,a.container=a.wrapper.querySelector(".dataTable-container"),a.pagers=a.wrapper.querySelectorAll(".dataTable-pagination"),a.label=a.wrapper.querySelector(".dataTable-info"),a.table.parentNode.replaceChild(a.wrapper,a.table),a.container.appendChild(a.table),a.rect=a.table.getBoundingClientRect(),a.data=[].slice.call(a.body.rows),a.activeRows=a.data.slice(),a.activeHeadings=a.headings.slice(),a.update(),i.ajax||a.setColumns(),this.fixHeight(),a.fixColumns(),i.header||v.add(a.wrapper,"no-header"),i.footer||v.add(a.wrapper,"no-footer"),i.sortable&&v.add(a.wrapper,"sortable"),i.searchable&&v.add(a.wrapper,"searchable"),i.fixedHeight&&v.add(a.wrapper,"fixed-height"),i.fixedColumns&&v.add(a.wrapper,"fixed-columns"),a.bindEvents()},r.renderPage=function(){if(this.hasRows&&this.totalPages){this.currentPage>this.totalPages&&(this.currentPage=1);var e=this.currentPage-1,t=o.createDocumentFragment();this.hasHeadings&&(l(this.header,this.isIE),g(this.activeHeadings,function(e){this.header.appendChild(e)},this)),g(this.pages[e],function(e){t.appendChild(this.rows().render(e))},this),this.clear(t),this.onFirstPage=1===this.currentPage,this.onLastPage=this.currentPage===this.lastPage}else this.clear();var a,i=0,n=0,s=0;if(this.totalPages&&(s=(n=(i=this.currentPage-1)*this.options.perPage)+this.pages[i].length,n+=1,a=this.searching?this.searchData.length:this.data.length),this.label&&this.options.labels.info.length){var r=this.options.labels.info.replace("{start}",n).replace("{end}",s).replace("{page}",this.currentPage).replace("{pages}",this.totalPages).replace("{rows}",a);this.label.innerHTML=a?r:""}1==this.currentPage&&this.fixHeight()},r.renderPager=function(){if(l(this.pagers,this.isIE),1'+s+""});h.push(i)}}h.push(e),r=e}),h}(this.links,this.currentPage,this.pages.length,this.options.pagerDelta,this.options.ellipsisText)),v.add(this.links[this.currentPage-1],"active"),g(n,function(e){v.remove(e,"active"),t.appendChild(e)}),v.add(this.links[this.currentPage-1],"active"),this.options.nextPrev&&t.appendChild(s(e,i,this.options.nextText)),this.options.firstLast&&t.appendChild(s(e,this.totalPages,this.options.lastText)),g(this.pagers,function(e){e.appendChild(t.cloneNode(!0))})}},r.renderHeader=function(){var i=this;i.labels=[],i.headings&&i.headings.length&&g(i.headings,function(e,t){if(i.labels[t]=e.textContent,v.contains(e.firstElementChild,"dataTable-sorter")&&(e.innerHTML=e.firstElementChild.innerHTML),e.sortable="false"!==e.getAttribute("data-sortable"),e.originalCellIndex=t,i.options.sortable&&e.sortable){var a=m("a",{href:"#",class:"dataTable-sorter",html:e.innerHTML});e.innerHTML="",e.setAttribute("data-sortable",""),e.appendChild(a)}}),i.fixColumns()},r.bindEvents=function(){var a=this,i=a.options;if(i.perPageSelect){var e=a.wrapper.querySelector(".dataTable-selector");e&&b(e,"change",function(e){i.perPage=parseInt(this.value,10),a.update(),a.fixHeight(),a.emit("datatable.perpage",i.perPage)})}i.searchable&&(a.input=a.wrapper.querySelector(".dataTable-input"),a.input&&b(a.input,"keyup",function(e){a.search(this.value)})),b(a.wrapper,"click",function(e){var t=e.target;"a"===t.nodeName.toLowerCase()&&(t.hasAttribute("data-page")?(a.page(t.getAttribute("data-page")),e.preventDefault()):i.sortable&&v.contains(t,"dataTable-sorter")&&"false"!=t.parentNode.getAttribute("data-sortable")&&(a.columns().sort(a.activeHeadings.indexOf(t.parentNode)+1),e.preventDefault()))})},r.setColumns=function(e){var n=this;e||g(n.data,function(e){g(e.cells,function(e){e.data=e.innerHTML})}),n.options.columns&&n.headings.length&&g(n.options.columns,function(a){c(a.select)||(a.select=[a.select]),a.hasOwnProperty("render")&&"function"==typeof a.render&&(n.selectedColumns=n.selectedColumns.concat(a.select),n.columnRenderers.push({columns:a.select,renderer:a.render})),g(a.select,function(e){var t=n.headings[e];a.type&&t.setAttribute("data-type",a.type),a.format&&t.setAttribute("data-format",a.format),a.hasOwnProperty("sortable")&&t.setAttribute("data-sortable",a.sortable),a.hasOwnProperty("hidden")&&!1!==a.hidden&&n.columns().hide(e),a.hasOwnProperty("sort")&&1===a.select.length&&n.columns().sort(a.select[0]+1,a.sort,!0)})}),n.hasRows&&(g(n.data,function(e,t){e.dataIndex=t,g(e.cells,function(e){e.data=e.innerHTML})}),n.selectedColumns.length&&g(n.data,function(i){g(i.cells,function(t,a){-1this.pages.length||e<0)&&(this.render("page"),this.render("pager"),void this.emit("datatable.page",e)))},r.sortColumn=function(e,t){this.columns().sort(e,t)},r.insert=function(e){var n=this,t=[];if(h(e)){if(e.headings&&!n.hasHeadings&&!n.hasRows){var a,i=m("tr");g(e.headings,function(e){a=m("th",{html:e}),i.appendChild(a)}),n.head.appendChild(i),n.header=i,n.headings=[].slice.call(i.cells),n.hasHeadings=!0,n.options.sortable=n.initialSortable,n.render("header")}e.data&&c(e.data)&&(t=e.data)}else c(e)&&g(e,function(e){var i=[];g(e,function(e,t){var a=n.labels.indexOf(t);-1'+e+""}))},r.columns=function(e){return new t(this,e)},r.rows=function(e){return new i(this,e)},r.on=function(e,t){this.events=this.events||{},this.events[e]=this.events[e]||[],this.events[e].push(t)},r.off=function(e,t){this.events=this.events||{},e in this.events!=!1&&this.events[e].splice(this.events[e].indexOf(t),1)},r.emit=function(e){if(this.events=this.events||{},e in this.events!=!1)for(var t=0;t Date: Thu, 16 Aug 2018 20:35:37 +0200 Subject: [PATCH 21/21] remove dist files from repo --- .gitignore | 1 + dist/vanilla-dataTables.min.css | 9 --------- dist/vanilla-dataTables.min.js | 11 ----------- 3 files changed, 1 insertion(+), 20 deletions(-) create mode 100644 .gitignore delete mode 100644 dist/vanilla-dataTables.min.css delete mode 100644 dist/vanilla-dataTables.min.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..849ddff --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +dist/ diff --git a/dist/vanilla-dataTables.min.css b/dist/vanilla-dataTables.min.css deleted file mode 100644 index b04120f..0000000 --- a/dist/vanilla-dataTables.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * - * Vanilla-DataTables - * Copyright (c) 2015-2017 Karl Saunders (http://mobius.ovh) - * Licensed under MIT (http://www.opensource.org/licenses/mit-license.php) - * - * Version: 1.6.14 - * - */.dataTable-wrapper.no-header .dataTable-container{border-top:1px solid #d9d9d9}.dataTable-wrapper.no-footer .dataTable-container{border-bottom:1px solid #d9d9d9}.dataTable-bottom,.dataTable-top{padding:8px 10px}.dataTable-bottom>div:first-child,.dataTable-top>div:first-child{float:left}.dataTable-bottom>div:last-child,.dataTable-top>div:last-child{float:right}.dataTable-selector{padding:6px}.dataTable-input{padding:6px 12px}.dataTable-info{margin:7px 0}.dataTable-pagination ul{margin:0;padding-left:0}.dataTable-pagination li{list-style:none;float:left}.dataTable-pagination a{border:1px solid transparent;float:left;margin-left:2px;padding:6px 12px;position:relative;text-decoration:none;color:#333}.dataTable-pagination a:hover{background-color:#d9d9d9}.dataTable-pagination .active a,.dataTable-pagination .active a:focus,.dataTable-pagination .active a:hover{background-color:#d9d9d9;cursor:default}.dataTable-pagination .disabled a,.dataTable-pagination .disabled a:focus,.dataTable-pagination .disabled a:hover,.dataTable-pagination .ellipsis a{cursor:not-allowed}.dataTable-pagination .disabled a,.dataTable-pagination .disabled a:focus,.dataTable-pagination .disabled a:hover{cursor:not-allowed;opacity:.4}.dataTable-pagination .pager a{font-weight:700}.dataTable-table{max-width:100%;width:100%;border-spacing:0}.dataTable-table>tbody>tr>td,.dataTable-table>tbody>tr>th,.dataTable-table>tfoot>tr>td,.dataTable-table>tfoot>tr>th,.dataTable-table>thead>tr>td,.dataTable-table>thead>tr>th{vertical-align:top;padding:8px 10px}.dataTable-table th,.dataTable-table>tfoot>tr>th,.dataTable-table>thead>tr>th{vertical-align:bottom;text-align:left}.dataTable-table>thead>tr>th{border-bottom:1px solid #d9d9d9}.dataTable-table>tfoot>tr>th{border-top:1px solid #d9d9d9}.dataTable-table th a{text-decoration:none;color:inherit}.dataTable-sorter{display:inline-block;height:100%;position:relative;width:100%}.dataTable-sorter::after,.dataTable-sorter::before{content:"";height:0;width:0;position:absolute;right:4px;border-left:4px solid transparent;border-right:4px solid transparent;opacity:.2}.dataTable-sorter::before{border-top:4px solid #000;bottom:10px}.dataTable-sorter::after{border-bottom:4px solid #000;border-top:4px solid transparent;top:0}.asc .dataTable-sorter::after,.desc .dataTable-sorter::before{opacity:.6}.dataTables-empty{text-align:center}.dataTable-bottom::after,.dataTable-top::after{clear:both;content:" ";display:table} \ No newline at end of file diff --git a/dist/vanilla-dataTables.min.js b/dist/vanilla-dataTables.min.js deleted file mode 100644 index 4b4470b..0000000 --- a/dist/vanilla-dataTables.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! - * - * Vanilla-DataTables - * Copyright (c) 2015-2017 Karl Saunders (http://mobius.ovh) - * Licensed under MIT (http://www.opensource.org/licenses/mit-license.php) - * - * Based on Version: 1.6.14 (https://github.com/Mobius1/Vanilla-DataTables) - * Edited version: https://github.com/espiegel/Vanilla-DataTables/tree/bugfix/search_no_results_minified - * - */ -!function(e,t){var a="DataTable";"object"==typeof exports?module.exports=t(a):"function"==typeof define&&define.amd?define([],t(a)):e[a]=t(a)}("undefined"!=typeof global?global:this.window||this.global,function(e){"use strict";var f=window,o=document,a=(o.body,{perPage:10,perPageSelect:[5,10,15,20,25],sortable:!0,searchable:!0,nextPrev:!0,firstLast:!1,prevText:"‹",nextText:"›",firstText:"«",lastText:"»",ellipsisText:"…",ascText:"▴",descText:"▾",truncatePager:!0,pagerDelta:2,fixedColumns:!0,fixedHeight:!1,header:!0,footer:!1,labels:{placeholder:"Search...",perPage:"{select} entries per page",noRows:"No entries found",info:"Showing {start} to {end} of {rows} entries"},layout:{top:"{select}{search}",bottom:"{info}{pager}"}}),h=function(e){return"[object Object]"===Object.prototype.toString.call(e)},c=function(e){return Array.isArray(e)},u=function(e,t){for(var a in t)if(t.hasOwnProperty(a)){var i=t[a];i&&h(i)?(e[a]=e[a]||{},u(e[a],i)):e[a]=i}return e},g=function(e,t,a){var i;if(h(e))for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.call(a,e[i],i);else for(i=0;i'+a+""})},v={add:function(e,t){e.classList?e.classList.add(t):v.contains(e,t)||(e.className=e.className.trim()+" "+t)},remove:function(e,t){e.classList?e.classList.remove(t):v.contains(e,t)&&(e.className=e.className.replace(new RegExp("(^|\\s)"+t.split(" ").join("|")+"(\\s|$)","gi")," "))},contains:function(e,t){if(e)return e.classList?e.classList.contains(t):!!e.className&&!!e.className.match(new RegExp("(\\s|^)"+t+"(\\s|$)"))}},x=function(e,t){var a,i;1===t?(a=0,i=e.length):-1===t&&(a=e.length-1,i=-1);for(var n=!0;n;){n=!1;for(var s=a;s!=i;s+=t)if(e[s+t]&&e[s].value>e[s+t].value){var r=e[s],o=e[s+t],l=r;e[s]=o,e[s+t]=l,n=!0}}return e},t=function(e){return this.dt=e,this};t.prototype.swap=function(e){if(e.length&&2===e.length){var a=[];g(this.dt.headings,function(e,t){a.push(t)});var t=e[0],i=e[1],n=a[i];a[i]=a[t],a[t]=n,this.order(a)}},t.prototype.order=function(t){var a,i,n,s,r,o,l,d=[[],[],[],[]],h=this.dt;g(t,function(e,t){r=h.headings[e],o="false"!==r.getAttribute("data-sortable"),(a=r.cloneNode(!0)).originalCellIndex=t,a.sortable=o,d[0].push(a),h.hiddenColumns.indexOf(e)<0&&((i=r.cloneNode(!0)).originalCellIndex=t,i.sortable=o,d[1].push(i))}),g(h.data,function(a,e){n=a.cloneNode(),s=a.cloneNode(),n.dataIndex=s.dataIndex=e,null!==a.searchIndex&&void 0!==a.searchIndex&&(n.searchIndex=s.searchIndex=a.searchIndex),g(t,function(e,t){(l=a.cells[e].cloneNode(!0)).data=a.cells[e].data,n.appendChild(l),h.hiddenColumns.indexOf(e)<0&&((l=a.cells[e].cloneNode(!0)).data=a.cells[e].data,s.appendChild(l))}),d[2].push(n),d[3].push(s)}),h.headings=d[0],h.activeHeadings=d[1],h.data=d[2],h.activeRows=d[3],h.update()},t.prototype.hide=function(e){if(e.length){var t=this.dt;g(e,function(e){t.hiddenColumns.indexOf(e)<0&&t.hiddenColumns.push(e)}),this.rebuild()}},t.prototype.show=function(e){if(e.length){var t,a=this.dt;g(e,function(e){-1<(t=a.hiddenColumns.indexOf(e))&&a.hiddenColumns.splice(t,1)}),this.rebuild()}},t.prototype.visible=function(e){var t,a=this.dt;return e=e||a.headings.map(function(e){return e.originalCellIndex}),isNaN(e)?c(e)&&(t=[],g(e,function(e){t.push(a.hiddenColumns.indexOf(e)<0)})):t=a.hiddenColumns.indexOf(e)<0,t},t.prototype.add=function(a){var i,n=this,e=document.createElement("th");if(!this.dt.headings.length)return this.dt.insert({headings:[a.heading],data:a.data.map(function(e){return[e]})}),void this.rebuild();this.dt.hiddenHeader?e.innerHTML="":a.heading.nodeName?e.appendChild(a.heading):e.innerHTML=a.heading,this.dt.headings.push(e),g(this.dt.data,function(e,t){a.data[t]&&(i=document.createElement("td"),a.data[t].nodeName?i.appendChild(a.data[t]):i.innerHTML=a.data[t],i.data=i.innerHTML,a.render&&(i.innerHTML=a.render.call(n,i.data,i,e)),e.appendChild(i))}),a.type&&e.setAttribute("data-type",a.type),a.format&&e.setAttribute("data-format",a.format),a.hasOwnProperty("sortable")&&(e.sortable=a.sortable,e.setAttribute("data-sortable",!0===a.sortable?"true":"false")),this.rebuild(),this.dt.renderHeader()},t.prototype.remove=function(t){c(t)?(t.sort(function(e,t){return t-e}),g(t,function(e){this.remove(e)},this)):(this.dt.headings.splice(t,1),g(this.dt.data,function(e){e.removeChild(e.cells[t])})),this.rebuild()},t.prototype.sort=function(s,e,t){var a=this.dt;if(a.hasHeadings&&(s<1||s>a.activeHeadings.length))return!1;a.sorting=!0,s-=1;var i,n,r,o=a.data,l=[],d=[],h=0,c=0,p=a.activeHeadings[s];s=p.originalCellIndex,g(o,function(e){var t=e.cells[s],a=t.hasAttribute("data-content")?t.getAttribute("data-content"):t.data,i=a.replace(/(\$|\,|\s|%)/g,"");if("date"===p.getAttribute("data-type")&&f.moment){var n=!1;p.hasAttribute("data-format")&&(n=p.getAttribute("data-format")),i=function(e,t){var a=!1;if(t)switch(t){case"ISO_8601":a=moment(e,moment.ISO_8601).format("YYYYMMDD");break;case"RFC_2822":a=moment(e,"ddd, MM MMM YYYY HH:mm:ss ZZ").format("YYYYMMDD");break;case"MYSQL":a=moment(e,"YYYY-MM-DD hh:mm:ss").format("YYYYMMDD");break;case"UNIX":a=moment(e).unix();break;default:a=moment(e,t).format("YYYYMMDD")}return a}(a,n)}parseFloat(i)==i?d[c++]={value:Number(i),row:e}:l[h++]={value:a,row:e}}),v.contains(p,"asc")||"asc"==e?(n=x(l,-1),r=x(d,-1),i="descending",v.remove(p,"asc"),v.add(p,"desc")):(n=x(d,1),r=x(l,1),i="ascending",v.remove(p,"desc"),v.add(p,"asc")),a.lastTh&&p!=a.lastTh&&(v.remove(a.lastTh,"desc"),v.remove(a.lastTh,"asc")),a.lastTh=p,o=n.concat(r),a.data=[];var u=[];g(o,function(e,t){a.data.push(e.row),null!==e.row.searchIndex&&void 0!==e.row.searchIndex&&u.push(t)},a),a.searchData=u,this.rebuild(),a.update(),t||a.emit("datatable.sort",s,i)},t.prototype.rebuild=function(){var a,i,n,s,r=this.dt,o=[];r.activeRows=[],r.activeHeadings=[],g(r.headings,function(e,t){e.originalCellIndex=t,e.sortable="false"!==e.getAttribute("data-sortable"),r.hiddenColumns.indexOf(t)<0&&r.activeHeadings.push(e)},this),g(r.data,function(e,t){a=e.cloneNode(),i=e.cloneNode(),a.dataIndex=i.dataIndex=t,null!==e.searchIndex&&void 0!==e.searchIndex&&(a.searchIndex=i.searchIndex=e.searchIndex),g(e.cells,function(e){(n=e.cloneNode(!0)).data=e.data,a.appendChild(n),r.hiddenColumns.indexOf(e.cellIndex)<0&&((s=e.cloneNode(!0)).data=e.data,i.appendChild(s))}),o.push(a),r.activeRows.push(i)}),r.data=o,r.update()};var i=function(e,t){return this.dt=e,this.rows=t,this};i.prototype.build=function(a){var i,n=m("tr"),e=this.dt.headings;return e.length||(e=a.map(function(){return""})),g(e,function(e,t){i=m("td"),a[t]||a[t].length||(a[t]=""),i.innerHTML=a[t],i.data=a[t],n.appendChild(i)}),n},i.prototype.render=function(e){return e},i.prototype.add=function(e){if(c(e)){var a=this.dt;c(e[0])?g(e,function(e,t){a.data.push(this.build(e))},this):a.data.push(this.build(e)),a.data.length&&(a.hasRows=!0),this.update(),a.columns().rebuild()}},i.prototype.remove=function(e){var a=this.dt;c(e)?(e.sort(function(e,t){return t-e}),g(e,function(e,t){a.data.splice(e,1)})):a.data.splice(e,1),this.update(),a.columns().rebuild()},i.prototype.update=function(){g(this.dt.data,function(e,t){e.dataIndex=t})};var n=function(e,t){if(this.initialized=!1,this.options=u(a,t),"string"==typeof e&&(e=document.querySelector(e)),this.initialLayout=e.innerHTML,this.initialSortable=this.options.sortable,this.options.header||(this.options.sortable=!1),null===e.tHead&&(!this.options.data||this.options.data&&!this.options.data.headings)&&(this.options.sortable=!1),e.tBodies.length&&!e.tBodies[0].rows.length&&this.options.data&&!this.options.data.data)throw new Error("You seem to be using the data option, but you've not defined any rows.");this.table=e,this.init()};n.extend=function(e,t){"function"==typeof t?n.prototype[e]=t:n[e]=t};var r=n.prototype;return r.init=function(e){if(this.initialized||v.contains(this.table,"dataTable-table"))return!1;var a=this;this.options=u(this.options,e||{}),this.isIE=!!/(msie|trident)/i.test(navigator.userAgent),this.currentPage=1,this.onFirstPage=!0,this.hiddenColumns=[],this.columnRenderers=[],this.selectedColumns=[],this.render(),setTimeout(function(){a.emit("datatable.init"),a.initialized=!0,a.options.plugins&&g(a.options.plugins,function(e,t){a[t]&&"function"==typeof a[t]&&(a[t]=a[t](e,{each:g,extend:u,classList:v,createElement:m}),e.enabled&&a[t].init&&"function"==typeof a[t].init&&a[t].init())})},10)},r.render=function(e){if(e){switch(e){case"page":this.renderPage();break;case"pager":this.renderPager();break;case"header":this.renderHeader()}return!1}var a=this,i=a.options,t="";if(i.data&&function(t){var e=!1,i=!1;if((t=t||this.options.data).headings){e=m("thead");var a=m("tr");g(t.headings,function(e){var t=m("th",{html:e});a.appendChild(t)}),e.appendChild(a)}t.data&&t.data.length&&(i=m("tbody"),g(t.data,function(e){if(t.headings&&t.headings.length!==e.length)throw new Error("The number of rows do not match the number of headings.");var a=m("tr");g(e,function(e){var t=m("td",{html:e});a.appendChild(t)}),i.appendChild(a)})),e&&(null!==this.table.tHead&&this.table.removeChild(this.table.tHead),this.table.appendChild(e)),i&&(this.table.tBodies.length&&this.table.removeChild(this.table.tBodies[0]),this.table.appendChild(i))}.call(a),i.ajax){var n=i.ajax,s=new XMLHttpRequest;b(s,"progress",function(e){a.emit("datatable.ajax.progress",e,s)}),b(s,"load",function(e){if(4===s.readyState)if(a.emit("datatable.ajax.loaded",e,s),200===s.status){var t={};t.data=n.load?n.load.call(a,s):s.responseText,t.type="json",n.content&&n.content.type&&(t.type=n.content.type,t=u(t,n.content)),a.import(t),a.setColumns(!0),a.emit("datatable.ajax.success",e,s)}else a.emit("datatable.ajax.error",e,s)}),b(s,"error",function(e){a.emit("datatable.ajax.error",e,s)}),b(s,"abort",function(e){a.emit("datatable.ajax.abort",e,s)}),a.emit("datatable.ajax.loading",s),s.open("GET","string"==typeof n?i.ajax:i.ajax.url),s.send()}if(a.body=a.table.tBodies[0],a.head=a.table.tHead,a.foot=a.table.tFoot,a.body||(a.body=m("tbody"),a.table.appendChild(a.body)),a.hasRows=0",t+="
",t+="
",t+=i.layout.bottom,t=(t+="
").replace("{info}","
"),i.perPageSelect){var l="
";var d=m("select",{class:"dataTable-selector"});g(i.perPageSelect,function(e){var t=e===i.perPage,a=new Option(e,e,t,t);d.add(a)}),l=l.replace("{select}",d.outerHTML),t=t.replace("{select}",l)}else t=t.replace("{select}","");if(i.searchable){var h="";t=t.replace("{search}",h)}else t=t.replace("{search}","");a.hasHeadings&&this.render("header"),v.add(a.table,"dataTable-table");var c=m("div",{class:"dataTable-pagination"}),p=m("ul");c.appendChild(p),t=t.replace(/\{pager\}/g,c.outerHTML),a.wrapper.innerHTML=t,a.container=a.wrapper.querySelector(".dataTable-container"),a.pagers=a.wrapper.querySelectorAll(".dataTable-pagination"),a.label=a.wrapper.querySelector(".dataTable-info"),a.table.parentNode.replaceChild(a.wrapper,a.table),a.container.appendChild(a.table),a.rect=a.table.getBoundingClientRect(),a.data=[].slice.call(a.body.rows),a.activeRows=a.data.slice(),a.activeHeadings=a.headings.slice(),a.update(),i.ajax||a.setColumns(),this.fixHeight(),a.fixColumns(),i.header||v.add(a.wrapper,"no-header"),i.footer||v.add(a.wrapper,"no-footer"),i.sortable&&v.add(a.wrapper,"sortable"),i.searchable&&v.add(a.wrapper,"searchable"),i.fixedHeight&&v.add(a.wrapper,"fixed-height"),i.fixedColumns&&v.add(a.wrapper,"fixed-columns"),a.bindEvents()},r.renderPage=function(){if(this.hasRows&&this.totalPages){this.currentPage>this.totalPages&&(this.currentPage=1);var e=this.currentPage-1,t=o.createDocumentFragment();this.hasHeadings&&(l(this.header,this.isIE),g(this.activeHeadings,function(e){this.header.appendChild(e)},this)),g(this.pages[e],function(e){t.appendChild(this.rows().render(e))},this),this.clear(t),this.onFirstPage=1===this.currentPage,this.onLastPage=this.currentPage===this.lastPage}else this.clear();var a,i=0,n=0,s=0;if(this.totalPages&&(s=(n=(i=this.currentPage-1)*this.options.perPage)+this.pages[i].length,n+=1,a=this.searching?this.searchData.length:this.data.length),this.label&&this.options.labels.info.length){var r=this.options.labels.info.replace("{start}",n).replace("{end}",s).replace("{page}",this.currentPage).replace("{pages}",this.totalPages).replace("{rows}",a);this.label.innerHTML=a?r:""}1==this.currentPage&&this.fixHeight()},r.renderPager=function(){if(l(this.pagers,this.isIE),1'+s+""});h.push(i)}}h.push(e),r=e}),h}(this.links,this.currentPage,this.pages.length,this.options.pagerDelta,this.options.ellipsisText)),v.add(this.links[this.currentPage-1],"active"),g(n,function(e){v.remove(e,"active"),t.appendChild(e)}),v.add(this.links[this.currentPage-1],"active"),this.options.nextPrev&&t.appendChild(s(e,i,this.options.nextText)),this.options.firstLast&&t.appendChild(s(e,this.totalPages,this.options.lastText)),g(this.pagers,function(e){e.appendChild(t.cloneNode(!0))})}},r.renderHeader=function(){var i=this;i.labels=[],i.headings&&i.headings.length&&g(i.headings,function(e,t){if(i.labels[t]=e.textContent,v.contains(e.firstElementChild,"dataTable-sorter")&&(e.innerHTML=e.firstElementChild.innerHTML),e.sortable="false"!==e.getAttribute("data-sortable"),e.originalCellIndex=t,i.options.sortable&&e.sortable){var a=m("a",{href:"#",class:"dataTable-sorter",html:e.innerHTML});e.innerHTML="",e.setAttribute("data-sortable",""),e.appendChild(a)}}),i.fixColumns()},r.bindEvents=function(){var a=this,i=a.options;if(i.perPageSelect){var e=a.wrapper.querySelector(".dataTable-selector");e&&b(e,"change",function(e){i.perPage=parseInt(this.value,10),a.update(),a.fixHeight(),a.emit("datatable.perpage",i.perPage)})}i.searchable&&(a.input=a.wrapper.querySelector(".dataTable-input"),a.input&&b(a.input,"keyup",function(e){a.search(this.value)})),b(a.wrapper,"click",function(e){var t=e.target;"a"===t.nodeName.toLowerCase()&&(t.hasAttribute("data-page")?(a.page(t.getAttribute("data-page")),e.preventDefault()):i.sortable&&v.contains(t,"dataTable-sorter")&&"false"!=t.parentNode.getAttribute("data-sortable")&&(a.columns().sort(a.activeHeadings.indexOf(t.parentNode)+1),e.preventDefault()))})},r.setColumns=function(e){var n=this;e||g(n.data,function(e){g(e.cells,function(e){e.data=e.innerHTML})}),n.options.columns&&n.headings.length&&g(n.options.columns,function(a){c(a.select)||(a.select=[a.select]),a.hasOwnProperty("render")&&"function"==typeof a.render&&(n.selectedColumns=n.selectedColumns.concat(a.select),n.columnRenderers.push({columns:a.select,renderer:a.render})),g(a.select,function(e){var t=n.headings[e];a.type&&t.setAttribute("data-type",a.type),a.format&&t.setAttribute("data-format",a.format),a.hasOwnProperty("sortable")&&t.setAttribute("data-sortable",a.sortable),a.hasOwnProperty("hidden")&&!1!==a.hidden&&n.columns().hide(e),a.hasOwnProperty("sort")&&1===a.select.length&&n.columns().sort(a.select[0]+1,a.sort,!0)})}),n.hasRows&&(g(n.data,function(e,t){e.dataIndex=t,g(e.cells,function(e){e.data=e.innerHTML})}),n.selectedColumns.length&&g(n.data,function(i){g(i.cells,function(t,a){-1this.pages.length||e<0)&&(this.render("page"),this.render("pager"),void this.emit("datatable.page",e)))},r.sortColumn=function(e,t){this.columns().sort(e,t)},r.insert=function(e){var n=this,t=[];if(h(e)){if(e.headings&&!n.hasHeadings&&!n.hasRows){var a,i=m("tr");g(e.headings,function(e){a=m("th",{html:e}),i.appendChild(a)}),n.head.appendChild(i),n.header=i,n.headings=[].slice.call(i.cells),n.hasHeadings=!0,n.options.sortable=n.initialSortable,n.render("header")}e.data&&c(e.data)&&(t=e.data)}else c(e)&&g(e,function(e){var i=[];g(e,function(e,t){var a=n.labels.indexOf(t);-1'+e+""}))},r.columns=function(e){return new t(this,e)},r.rows=function(e){return new i(this,e)},r.on=function(e,t){this.events=this.events||{},this.events[e]=this.events[e]||[],this.events[e].push(t)},r.off=function(e,t){this.events=this.events||{},e in this.events!=!1&&this.events[e].splice(this.events[e].indexOf(t),1)},r.emit=function(e){if(this.events=this.events||{},e in this.events!=!1)for(var t=0;t