summaryrefslogtreecommitdiff
path: root/public/assets/js/DataTables/Select-1.6.2
diff options
context:
space:
mode:
authorGeorge Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2023-04-18 01:11:37 +0300
committerGeorge Halkiadakis <gchalkiadakis@sklavenitis.co.gr>2023-04-18 01:11:37 +0300
commit2b6970d33afd75be5bfef951dc3691d492004d43 (patch)
tree39eba4206ca0c4cd3fecd5ead95580a74e50f3f9 /public/assets/js/DataTables/Select-1.6.2
parent68fc9e55e538e03f94509731ab41a0c8cf96710f (diff)
downloadclassroom-2b6970d33afd75be5bfef951dc3691d492004d43.tar.gz
classroom-2b6970d33afd75be5bfef951dc3691d492004d43.tar.bz2
classroom-2b6970d33afd75be5bfef951dc3691d492004d43.zip
admin back-office environment (skeleton); admin categories
Diffstat (limited to 'public/assets/js/DataTables/Select-1.6.2')
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap.css61
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap.min.css1
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap4.css61
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap4.min.css1
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap5.css64
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap5.min.css1
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.bulma.css61
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.bulma.min.css1
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.dataTables.css61
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.dataTables.min.css1
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.foundation.css61
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.foundation.min.css1
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.jqueryui.css61
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.jqueryui.min.css1
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.semanticui.css61
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/css/select.semanticui.min.css1
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/dataTables.select.js1366
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/dataTables.select.min.js4
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap.js58
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap.min.js4
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap4.js58
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap4.min.js4
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap5.js58
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap5.min.js4
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.bulma.js58
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.bulma.min.js4
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.dataTables.js58
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.dataTables.min.js4
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.foundation.js58
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.foundation.min.js4
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.jqueryui.js58
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.jqueryui.min.js4
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.semanticui.js58
-rw-r--r--public/assets/js/DataTables/Select-1.6.2/js/select.semanticui.min.js4
34 files changed, 2365 insertions, 0 deletions
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap.css b/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap.css
new file mode 100644
index 0000000..04c83e3
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap.css
@@ -0,0 +1,61 @@
+table.dataTable > tbody > tr > .selected {
+ background-color: rgba(0, 136, 204, 0.9);
+ color: white;
+}
+table.dataTable > tbody > tr > td.select-checkbox,
+table.dataTable > tbody > tr > th.select-checkbox {
+ position: relative;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before, table.dataTable > tbody > tr > td.select-checkbox:after,
+table.dataTable > tbody > tr > th.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:after {
+ display: block;
+ position: absolute;
+ top: 1.2em;
+ left: 50%;
+ width: 12px;
+ height: 12px;
+ box-sizing: border-box;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:before {
+ content: " ";
+ margin-top: -6px;
+ margin-left: -6px;
+ border: 1px solid black;
+ border-radius: 3px;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:before,
+table.dataTable > tbody > tr.selected > th.select-checkbox:before {
+ border: 1px solid white;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable > tbody > tr.selected > th.select-checkbox:after {
+ content: "✓";
+ font-size: 20px;
+ margin-top: -19px;
+ margin-left: -6px;
+ text-align: center;
+ text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
+}
+table.dataTable.compact > tbody > tr > td.select-checkbox:before,
+table.dataTable.compact > tbody > tr > th.select-checkbox:before {
+ margin-top: -12px;
+}
+table.dataTable.compact > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable.compact > tbody > tr.selected > th.select-checkbox:after {
+ margin-top: -16px;
+}
+
+div.dataTables_wrapper span.select-info,
+div.dataTables_wrapper span.select-item {
+ margin-left: 0.5em;
+}
+
+@media screen and (max-width: 640px) {
+ div.dataTables_wrapper span.select-info,
+ div.dataTables_wrapper span.select-item {
+ margin-left: 0;
+ display: block;
+ }
+}
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap.min.css b/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap.min.css
new file mode 100644
index 0000000..9cfdb16
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap.min.css
@@ -0,0 +1 @@
+table.dataTable>tbody>tr>.selected{background-color:rgba(0, 136, 204, 0.9);color:white}table.dataTable>tbody>tr>td.select-checkbox,table.dataTable>tbody>tr>th.select-checkbox{position:relative}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>td.select-checkbox:after,table.dataTable>tbody>tr>th.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:before{content:" ";margin-top:-6px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable>tbody>tr.selected>td.select-checkbox:before,table.dataTable>tbody>tr.selected>th.select-checkbox:before{border:1px solid white}table.dataTable>tbody>tr.selected>td.select-checkbox:after,table.dataTable>tbody>tr.selected>th.select-checkbox:after{content:"✓";font-size:20px;margin-top:-19px;margin-left:-6px;text-align:center;text-shadow:1px 1px #b0bed9,-1px -1px #b0bed9,1px -1px #b0bed9,-1px 1px #b0bed9}table.dataTable.compact>tbody>tr>td.select-checkbox:before,table.dataTable.compact>tbody>tr>th.select-checkbox:before{margin-top:-12px}table.dataTable.compact>tbody>tr.selected>td.select-checkbox:after,table.dataTable.compact>tbody>tr.selected>th.select-checkbox:after{margin-top:-16px}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap4.css b/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap4.css
new file mode 100644
index 0000000..b9218af
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap4.css
@@ -0,0 +1,61 @@
+table.dataTable > tbody > tr > .selected {
+ background-color: rgba(2, 117, 216, 0.9);
+ color: white;
+}
+table.dataTable > tbody > tr > td.select-checkbox,
+table.dataTable > tbody > tr > th.select-checkbox {
+ position: relative;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before, table.dataTable > tbody > tr > td.select-checkbox:after,
+table.dataTable > tbody > tr > th.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:after {
+ display: block;
+ position: absolute;
+ top: 1.2em;
+ left: 50%;
+ width: 12px;
+ height: 12px;
+ box-sizing: border-box;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:before {
+ content: " ";
+ margin-top: -2px;
+ margin-left: -6px;
+ border: 1px solid black;
+ border-radius: 3px;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:before,
+table.dataTable > tbody > tr.selected > th.select-checkbox:before {
+ border: 1px solid white;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable > tbody > tr.selected > th.select-checkbox:after {
+ content: "✓";
+ font-size: 20px;
+ margin-top: -19px;
+ margin-left: -6px;
+ text-align: center;
+ text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
+}
+table.dataTable.compact > tbody > tr > td.select-checkbox:before,
+table.dataTable.compact > tbody > tr > th.select-checkbox:before {
+ margin-top: -12px;
+}
+table.dataTable.compact > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable.compact > tbody > tr.selected > th.select-checkbox:after {
+ margin-top: -16px;
+}
+
+div.dataTables_wrapper span.select-info,
+div.dataTables_wrapper span.select-item {
+ margin-left: 0.5em;
+}
+
+@media screen and (max-width: 640px) {
+ div.dataTables_wrapper span.select-info,
+ div.dataTables_wrapper span.select-item {
+ margin-left: 0;
+ display: block;
+ }
+}
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap4.min.css b/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap4.min.css
new file mode 100644
index 0000000..7543c28
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap4.min.css
@@ -0,0 +1 @@
+table.dataTable>tbody>tr>.selected{background-color:rgba(2, 117, 216, 0.9);color:white}table.dataTable>tbody>tr>td.select-checkbox,table.dataTable>tbody>tr>th.select-checkbox{position:relative}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>td.select-checkbox:after,table.dataTable>tbody>tr>th.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:before{content:" ";margin-top:-2px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable>tbody>tr.selected>td.select-checkbox:before,table.dataTable>tbody>tr.selected>th.select-checkbox:before{border:1px solid white}table.dataTable>tbody>tr.selected>td.select-checkbox:after,table.dataTable>tbody>tr.selected>th.select-checkbox:after{content:"✓";font-size:20px;margin-top:-19px;margin-left:-6px;text-align:center;text-shadow:1px 1px #b0bed9,-1px -1px #b0bed9,1px -1px #b0bed9,-1px 1px #b0bed9}table.dataTable.compact>tbody>tr>td.select-checkbox:before,table.dataTable.compact>tbody>tr>th.select-checkbox:before{margin-top:-12px}table.dataTable.compact>tbody>tr.selected>td.select-checkbox:after,table.dataTable.compact>tbody>tr.selected>th.select-checkbox:after{margin-top:-16px}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap5.css b/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap5.css
new file mode 100644
index 0000000..d2128d3
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap5.css
@@ -0,0 +1,64 @@
+table.dataTable > tbody > tr > .selected {
+ background-color: rgba(13, 110, 253, 0.9);
+ color: white;
+}
+table.dataTable > tbody > tr > td.select-checkbox,
+table.dataTable > tbody > tr > th.select-checkbox {
+ position: relative;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before, table.dataTable > tbody > tr > td.select-checkbox:after,
+table.dataTable > tbody > tr > th.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:after {
+ display: block;
+ position: absolute;
+ top: 1.2em;
+ left: 50%;
+ width: 12px;
+ height: 12px;
+ box-sizing: border-box;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:before {
+ content: " ";
+ margin-top: -5px;
+ margin-left: -6px;
+ border: 1px solid black;
+ border-radius: 3px;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:before,
+table.dataTable > tbody > tr.selected > th.select-checkbox:before {
+ border: 1px solid white;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable > tbody > tr.selected > th.select-checkbox:after {
+ content: "✓";
+ font-size: 20px;
+ margin-top: -19px;
+ margin-left: -6px;
+ text-align: center;
+ text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
+}
+table.dataTable.compact > tbody > tr > td.select-checkbox:before,
+table.dataTable.compact > tbody > tr > th.select-checkbox:before {
+ margin-top: -12px;
+}
+table.dataTable.compact > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable.compact > tbody > tr.selected > th.select-checkbox:after {
+ margin-top: -16px;
+}
+
+div.dataTables_wrapper span.select-info,
+div.dataTables_wrapper span.select-item {
+ margin-left: 0.5em;
+}
+
+@media screen and (max-width: 640px) {
+ div.dataTables_wrapper span.select-info,
+ div.dataTables_wrapper span.select-item {
+ margin-left: 0;
+ display: block;
+ }
+}
+table.dataTable.table-sm tbody td.select-checkbox::before {
+ margin-top: -9px;
+}
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap5.min.css b/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap5.min.css
new file mode 100644
index 0000000..2d95ccf
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.bootstrap5.min.css
@@ -0,0 +1 @@
+table.dataTable>tbody>tr>.selected{background-color:rgba(13, 110, 253, 0.9);color:white}table.dataTable>tbody>tr>td.select-checkbox,table.dataTable>tbody>tr>th.select-checkbox{position:relative}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>td.select-checkbox:after,table.dataTable>tbody>tr>th.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:before{content:" ";margin-top:-5px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable>tbody>tr.selected>td.select-checkbox:before,table.dataTable>tbody>tr.selected>th.select-checkbox:before{border:1px solid white}table.dataTable>tbody>tr.selected>td.select-checkbox:after,table.dataTable>tbody>tr.selected>th.select-checkbox:after{content:"✓";font-size:20px;margin-top:-19px;margin-left:-6px;text-align:center;text-shadow:1px 1px #b0bed9,-1px -1px #b0bed9,1px -1px #b0bed9,-1px 1px #b0bed9}table.dataTable.compact>tbody>tr>td.select-checkbox:before,table.dataTable.compact>tbody>tr>th.select-checkbox:before{margin-top:-12px}table.dataTable.compact>tbody>tr.selected>td.select-checkbox:after,table.dataTable.compact>tbody>tr.selected>th.select-checkbox:after{margin-top:-16px}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}table.dataTable.table-sm tbody td.select-checkbox::before{margin-top:-9px}
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.bulma.css b/public/assets/js/DataTables/Select-1.6.2/css/select.bulma.css
new file mode 100644
index 0000000..ef5c4d5
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.bulma.css
@@ -0,0 +1,61 @@
+table.dataTable > tbody > tr > .selected {
+ background-color: rgba(0, 209, 178, 0.9);
+ color: white;
+}
+table.dataTable > tbody > tr > td.select-checkbox,
+table.dataTable > tbody > tr > th.select-checkbox {
+ position: relative;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before, table.dataTable > tbody > tr > td.select-checkbox:after,
+table.dataTable > tbody > tr > th.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:after {
+ display: block;
+ position: absolute;
+ top: 1.2em;
+ left: 50%;
+ width: 12px;
+ height: 12px;
+ box-sizing: border-box;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:before {
+ content: " ";
+ margin-top: -2px;
+ margin-left: -6px;
+ border: 1px solid black;
+ border-radius: 3px;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:before,
+table.dataTable > tbody > tr.selected > th.select-checkbox:before {
+ border: 1px solid white;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable > tbody > tr.selected > th.select-checkbox:after {
+ content: "✓";
+ font-size: 20px;
+ margin-top: -19px;
+ margin-left: -6px;
+ text-align: center;
+ text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
+}
+table.dataTable.compact > tbody > tr > td.select-checkbox:before,
+table.dataTable.compact > tbody > tr > th.select-checkbox:before {
+ margin-top: -12px;
+}
+table.dataTable.compact > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable.compact > tbody > tr.selected > th.select-checkbox:after {
+ margin-top: -16px;
+}
+
+div.dataTables_wrapper span.select-info,
+div.dataTables_wrapper span.select-item {
+ margin-left: 0.5em;
+}
+
+@media screen and (max-width: 640px) {
+ div.dataTables_wrapper span.select-info,
+ div.dataTables_wrapper span.select-item {
+ margin-left: 0;
+ display: block;
+ }
+}
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.bulma.min.css b/public/assets/js/DataTables/Select-1.6.2/css/select.bulma.min.css
new file mode 100644
index 0000000..eeabec8
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.bulma.min.css
@@ -0,0 +1 @@
+table.dataTable>tbody>tr>.selected{background-color:rgba(0, 209, 178, 0.9);color:white}table.dataTable>tbody>tr>td.select-checkbox,table.dataTable>tbody>tr>th.select-checkbox{position:relative}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>td.select-checkbox:after,table.dataTable>tbody>tr>th.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:before{content:" ";margin-top:-2px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable>tbody>tr.selected>td.select-checkbox:before,table.dataTable>tbody>tr.selected>th.select-checkbox:before{border:1px solid white}table.dataTable>tbody>tr.selected>td.select-checkbox:after,table.dataTable>tbody>tr.selected>th.select-checkbox:after{content:"✓";font-size:20px;margin-top:-19px;margin-left:-6px;text-align:center;text-shadow:1px 1px #b0bed9,-1px -1px #b0bed9,1px -1px #b0bed9,-1px 1px #b0bed9}table.dataTable.compact>tbody>tr>td.select-checkbox:before,table.dataTable.compact>tbody>tr>th.select-checkbox:before{margin-top:-12px}table.dataTable.compact>tbody>tr.selected>td.select-checkbox:after,table.dataTable.compact>tbody>tr.selected>th.select-checkbox:after{margin-top:-16px}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.dataTables.css b/public/assets/js/DataTables/Select-1.6.2/css/select.dataTables.css
new file mode 100644
index 0000000..26dd64a
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.dataTables.css
@@ -0,0 +1,61 @@
+table.dataTable > tbody > tr > .selected {
+ background-color: rgba(13, 110, 253, 0.9);
+ color: white;
+}
+table.dataTable > tbody > tr > td.select-checkbox,
+table.dataTable > tbody > tr > th.select-checkbox {
+ position: relative;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before, table.dataTable > tbody > tr > td.select-checkbox:after,
+table.dataTable > tbody > tr > th.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:after {
+ display: block;
+ position: absolute;
+ top: 1.2em;
+ left: 50%;
+ width: 12px;
+ height: 12px;
+ box-sizing: border-box;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:before {
+ content: " ";
+ margin-top: -6px;
+ margin-left: -6px;
+ border: 1px solid black;
+ border-radius: 3px;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:before,
+table.dataTable > tbody > tr.selected > th.select-checkbox:before {
+ border: 1px solid white;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable > tbody > tr.selected > th.select-checkbox:after {
+ content: "✓";
+ font-size: 20px;
+ margin-top: -19px;
+ margin-left: -6px;
+ text-align: center;
+ text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
+}
+table.dataTable.compact > tbody > tr > td.select-checkbox:before,
+table.dataTable.compact > tbody > tr > th.select-checkbox:before {
+ margin-top: -12px;
+}
+table.dataTable.compact > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable.compact > tbody > tr.selected > th.select-checkbox:after {
+ margin-top: -16px;
+}
+
+div.dataTables_wrapper span.select-info,
+div.dataTables_wrapper span.select-item {
+ margin-left: 0.5em;
+}
+
+@media screen and (max-width: 640px) {
+ div.dataTables_wrapper span.select-info,
+ div.dataTables_wrapper span.select-item {
+ margin-left: 0;
+ display: block;
+ }
+}
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.dataTables.min.css b/public/assets/js/DataTables/Select-1.6.2/css/select.dataTables.min.css
new file mode 100644
index 0000000..fb2791a
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.dataTables.min.css
@@ -0,0 +1 @@
+table.dataTable>tbody>tr>.selected{background-color:rgba(13, 110, 253, 0.9);color:white}table.dataTable>tbody>tr>td.select-checkbox,table.dataTable>tbody>tr>th.select-checkbox{position:relative}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>td.select-checkbox:after,table.dataTable>tbody>tr>th.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:before{content:" ";margin-top:-6px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable>tbody>tr.selected>td.select-checkbox:before,table.dataTable>tbody>tr.selected>th.select-checkbox:before{border:1px solid white}table.dataTable>tbody>tr.selected>td.select-checkbox:after,table.dataTable>tbody>tr.selected>th.select-checkbox:after{content:"✓";font-size:20px;margin-top:-19px;margin-left:-6px;text-align:center;text-shadow:1px 1px #b0bed9,-1px -1px #b0bed9,1px -1px #b0bed9,-1px 1px #b0bed9}table.dataTable.compact>tbody>tr>td.select-checkbox:before,table.dataTable.compact>tbody>tr>th.select-checkbox:before{margin-top:-12px}table.dataTable.compact>tbody>tr.selected>td.select-checkbox:after,table.dataTable.compact>tbody>tr.selected>th.select-checkbox:after{margin-top:-16px}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.foundation.css b/public/assets/js/DataTables/Select-1.6.2/css/select.foundation.css
new file mode 100644
index 0000000..74ac2f3
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.foundation.css
@@ -0,0 +1,61 @@
+table.dataTable > tbody > tr > .selected {
+ background-color: rgba(0, 137, 182, 0.9);
+ color: white;
+}
+table.dataTable > tbody > tr > td.select-checkbox,
+table.dataTable > tbody > tr > th.select-checkbox {
+ position: relative;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before, table.dataTable > tbody > tr > td.select-checkbox:after,
+table.dataTable > tbody > tr > th.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:after {
+ display: block;
+ position: absolute;
+ top: 1.2em;
+ left: 50%;
+ width: 12px;
+ height: 12px;
+ box-sizing: border-box;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:before {
+ content: " ";
+ margin-top: -6px;
+ margin-left: -6px;
+ border: 1px solid black;
+ border-radius: 3px;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:before,
+table.dataTable > tbody > tr.selected > th.select-checkbox:before {
+ border: 1px solid white;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable > tbody > tr.selected > th.select-checkbox:after {
+ content: "✓";
+ font-size: 20px;
+ margin-top: -19px;
+ margin-left: -6px;
+ text-align: center;
+ text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
+}
+table.dataTable.compact > tbody > tr > td.select-checkbox:before,
+table.dataTable.compact > tbody > tr > th.select-checkbox:before {
+ margin-top: -12px;
+}
+table.dataTable.compact > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable.compact > tbody > tr.selected > th.select-checkbox:after {
+ margin-top: -16px;
+}
+
+div.dataTables_wrapper span.select-info,
+div.dataTables_wrapper span.select-item {
+ margin-left: 0.5em;
+}
+
+@media screen and (max-width: 640px) {
+ div.dataTables_wrapper span.select-info,
+ div.dataTables_wrapper span.select-item {
+ margin-left: 0;
+ display: block;
+ }
+}
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.foundation.min.css b/public/assets/js/DataTables/Select-1.6.2/css/select.foundation.min.css
new file mode 100644
index 0000000..624d69f
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.foundation.min.css
@@ -0,0 +1 @@
+table.dataTable>tbody>tr>.selected{background-color:rgba(0, 137, 182, 0.9);color:white}table.dataTable>tbody>tr>td.select-checkbox,table.dataTable>tbody>tr>th.select-checkbox{position:relative}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>td.select-checkbox:after,table.dataTable>tbody>tr>th.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:before{content:" ";margin-top:-6px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable>tbody>tr.selected>td.select-checkbox:before,table.dataTable>tbody>tr.selected>th.select-checkbox:before{border:1px solid white}table.dataTable>tbody>tr.selected>td.select-checkbox:after,table.dataTable>tbody>tr.selected>th.select-checkbox:after{content:"✓";font-size:20px;margin-top:-19px;margin-left:-6px;text-align:center;text-shadow:1px 1px #b0bed9,-1px -1px #b0bed9,1px -1px #b0bed9,-1px 1px #b0bed9}table.dataTable.compact>tbody>tr>td.select-checkbox:before,table.dataTable.compact>tbody>tr>th.select-checkbox:before{margin-top:-12px}table.dataTable.compact>tbody>tr.selected>td.select-checkbox:after,table.dataTable.compact>tbody>tr.selected>th.select-checkbox:after{margin-top:-16px}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.jqueryui.css b/public/assets/js/DataTables/Select-1.6.2/css/select.jqueryui.css
new file mode 100644
index 0000000..26dd64a
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.jqueryui.css
@@ -0,0 +1,61 @@
+table.dataTable > tbody > tr > .selected {
+ background-color: rgba(13, 110, 253, 0.9);
+ color: white;
+}
+table.dataTable > tbody > tr > td.select-checkbox,
+table.dataTable > tbody > tr > th.select-checkbox {
+ position: relative;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before, table.dataTable > tbody > tr > td.select-checkbox:after,
+table.dataTable > tbody > tr > th.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:after {
+ display: block;
+ position: absolute;
+ top: 1.2em;
+ left: 50%;
+ width: 12px;
+ height: 12px;
+ box-sizing: border-box;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:before {
+ content: " ";
+ margin-top: -6px;
+ margin-left: -6px;
+ border: 1px solid black;
+ border-radius: 3px;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:before,
+table.dataTable > tbody > tr.selected > th.select-checkbox:before {
+ border: 1px solid white;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable > tbody > tr.selected > th.select-checkbox:after {
+ content: "✓";
+ font-size: 20px;
+ margin-top: -19px;
+ margin-left: -6px;
+ text-align: center;
+ text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
+}
+table.dataTable.compact > tbody > tr > td.select-checkbox:before,
+table.dataTable.compact > tbody > tr > th.select-checkbox:before {
+ margin-top: -12px;
+}
+table.dataTable.compact > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable.compact > tbody > tr.selected > th.select-checkbox:after {
+ margin-top: -16px;
+}
+
+div.dataTables_wrapper span.select-info,
+div.dataTables_wrapper span.select-item {
+ margin-left: 0.5em;
+}
+
+@media screen and (max-width: 640px) {
+ div.dataTables_wrapper span.select-info,
+ div.dataTables_wrapper span.select-item {
+ margin-left: 0;
+ display: block;
+ }
+}
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.jqueryui.min.css b/public/assets/js/DataTables/Select-1.6.2/css/select.jqueryui.min.css
new file mode 100644
index 0000000..fb2791a
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.jqueryui.min.css
@@ -0,0 +1 @@
+table.dataTable>tbody>tr>.selected{background-color:rgba(13, 110, 253, 0.9);color:white}table.dataTable>tbody>tr>td.select-checkbox,table.dataTable>tbody>tr>th.select-checkbox{position:relative}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>td.select-checkbox:after,table.dataTable>tbody>tr>th.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:before{content:" ";margin-top:-6px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable>tbody>tr.selected>td.select-checkbox:before,table.dataTable>tbody>tr.selected>th.select-checkbox:before{border:1px solid white}table.dataTable>tbody>tr.selected>td.select-checkbox:after,table.dataTable>tbody>tr.selected>th.select-checkbox:after{content:"✓";font-size:20px;margin-top:-19px;margin-left:-6px;text-align:center;text-shadow:1px 1px #b0bed9,-1px -1px #b0bed9,1px -1px #b0bed9,-1px 1px #b0bed9}table.dataTable.compact>tbody>tr>td.select-checkbox:before,table.dataTable.compact>tbody>tr>th.select-checkbox:before{margin-top:-12px}table.dataTable.compact>tbody>tr.selected>td.select-checkbox:after,table.dataTable.compact>tbody>tr.selected>th.select-checkbox:after{margin-top:-16px}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.semanticui.css b/public/assets/js/DataTables/Select-1.6.2/css/select.semanticui.css
new file mode 100644
index 0000000..4f5320c
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.semanticui.css
@@ -0,0 +1,61 @@
+table.dataTable > tbody > tr > .selected {
+ background-color: rgba(0, 0, 0, 0.05);
+ color: white;
+}
+table.dataTable > tbody > tr > td.select-checkbox,
+table.dataTable > tbody > tr > th.select-checkbox {
+ position: relative;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before, table.dataTable > tbody > tr > td.select-checkbox:after,
+table.dataTable > tbody > tr > th.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:after {
+ display: block;
+ position: absolute;
+ top: 1.2em;
+ left: 50%;
+ width: 12px;
+ height: 12px;
+ box-sizing: border-box;
+}
+table.dataTable > tbody > tr > td.select-checkbox:before,
+table.dataTable > tbody > tr > th.select-checkbox:before {
+ content: " ";
+ margin-top: -3px;
+ margin-left: -6px;
+ border: 1px solid black;
+ border-radius: 3px;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:before,
+table.dataTable > tbody > tr.selected > th.select-checkbox:before {
+ border: 1px solid white;
+}
+table.dataTable > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable > tbody > tr.selected > th.select-checkbox:after {
+ content: "✓";
+ font-size: 20px;
+ margin-top: -19px;
+ margin-left: -6px;
+ text-align: center;
+ text-shadow: 1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9;
+}
+table.dataTable.compact > tbody > tr > td.select-checkbox:before,
+table.dataTable.compact > tbody > tr > th.select-checkbox:before {
+ margin-top: -12px;
+}
+table.dataTable.compact > tbody > tr.selected > td.select-checkbox:after,
+table.dataTable.compact > tbody > tr.selected > th.select-checkbox:after {
+ margin-top: -16px;
+}
+
+div.dataTables_wrapper span.select-info,
+div.dataTables_wrapper span.select-item {
+ margin-left: 0.5em;
+}
+
+@media screen and (max-width: 640px) {
+ div.dataTables_wrapper span.select-info,
+ div.dataTables_wrapper span.select-item {
+ margin-left: 0;
+ display: block;
+ }
+}
diff --git a/public/assets/js/DataTables/Select-1.6.2/css/select.semanticui.min.css b/public/assets/js/DataTables/Select-1.6.2/css/select.semanticui.min.css
new file mode 100644
index 0000000..d6fdfe4
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/css/select.semanticui.min.css
@@ -0,0 +1 @@
+table.dataTable>tbody>tr>.selected{background-color:rgba(0, 0, 0, 0.05);color:white}table.dataTable>tbody>tr>td.select-checkbox,table.dataTable>tbody>tr>th.select-checkbox{position:relative}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>td.select-checkbox:after,table.dataTable>tbody>tr>th.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable>tbody>tr>td.select-checkbox:before,table.dataTable>tbody>tr>th.select-checkbox:before{content:" ";margin-top:-3px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable>tbody>tr.selected>td.select-checkbox:before,table.dataTable>tbody>tr.selected>th.select-checkbox:before{border:1px solid white}table.dataTable>tbody>tr.selected>td.select-checkbox:after,table.dataTable>tbody>tr.selected>th.select-checkbox:after{content:"✓";font-size:20px;margin-top:-19px;margin-left:-6px;text-align:center;text-shadow:1px 1px #b0bed9,-1px -1px #b0bed9,1px -1px #b0bed9,-1px 1px #b0bed9}table.dataTable.compact>tbody>tr>td.select-checkbox:before,table.dataTable.compact>tbody>tr>th.select-checkbox:before{margin-top:-12px}table.dataTable.compact>tbody>tr.selected>td.select-checkbox:after,table.dataTable.compact>tbody>tr.selected>th.select-checkbox:after{margin-top:-16px}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/dataTables.select.js b/public/assets/js/DataTables/Select-1.6.2/js/dataTables.select.js
new file mode 100644
index 0000000..7bb9e00
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/dataTables.select.js
@@ -0,0 +1,1366 @@
+/*! Select for DataTables 1.6.2
+ * © SpryMedia Ltd - datatables.net/license/mit
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+
+// Version information for debugger
+DataTable.select = {};
+
+DataTable.select.version = '1.6.2';
+
+DataTable.select.init = function ( dt ) {
+ var ctx = dt.settings()[0];
+
+ if (ctx._select) {
+ return;
+ }
+
+ var savedSelected = dt.state.loaded();
+
+ var selectAndSave = function(e, settings, data) {
+ if(data === null || data.select === undefined) {
+ return;
+ }
+
+ // Clear any currently selected rows, before restoring state
+ // None will be selected on first initialisation
+ if (dt.rows({selected: true}).any()) {
+ dt.rows().deselect();
+ }
+ if (data.select.rows !== undefined) {
+ dt.rows(data.select.rows).select();
+ }
+
+ if (dt.columns({selected: true}).any()) {
+ dt.columns().deselect();
+ }
+ if (data.select.columns !== undefined) {
+ dt.columns(data.select.columns).select();
+ }
+
+ if (dt.cells({selected: true}).any()) {
+ dt.cells().deselect();
+ }
+ if (data.select.cells !== undefined) {
+ for(var i = 0; i < data.select.cells.length; i++) {
+ dt.cell(data.select.cells[i].row, data.select.cells[i].column).select();
+ }
+ }
+
+ dt.state.save();
+ }
+
+ dt
+ .on('stateSaveParams', function(e, settings, data) {
+ data.select = {};
+ data.select.rows = dt.rows({selected:true}).ids(true).toArray();
+ data.select.columns = dt.columns({selected:true})[0];
+ data.select.cells = dt.cells({selected:true})[0].map(function(coords) {
+ return {row: dt.row(coords.row).id(true), column: coords.column}
+ });
+ })
+ .on('stateLoadParams', selectAndSave)
+ .one('init', function() {
+ selectAndSave(undefined, undefined, savedSelected);
+ });
+
+ var init = ctx.oInit.select;
+ var defaults = DataTable.defaults.select;
+ var opts = init === undefined ?
+ defaults :
+ init;
+
+ // Set defaults
+ var items = 'row';
+ var style = 'api';
+ var blurable = false;
+ var toggleable = true;
+ var info = true;
+ var selector = 'td, th';
+ var className = 'selected';
+ var setStyle = false;
+
+ ctx._select = {};
+
+ // Initialisation customisations
+ if ( opts === true ) {
+ style = 'os';
+ setStyle = true;
+ }
+ else if ( typeof opts === 'string' ) {
+ style = opts;
+ setStyle = true;
+ }
+ else if ( $.isPlainObject( opts ) ) {
+ if ( opts.blurable !== undefined ) {
+ blurable = opts.blurable;
+ }
+
+ if ( opts.toggleable !== undefined ) {
+ toggleable = opts.toggleable;
+ }
+
+ if ( opts.info !== undefined ) {
+ info = opts.info;
+ }
+
+ if ( opts.items !== undefined ) {
+ items = opts.items;
+ }
+
+ if ( opts.style !== undefined ) {
+ style = opts.style;
+ setStyle = true;
+ }
+ else {
+ style = 'os';
+ setStyle = true;
+ }
+
+ if ( opts.selector !== undefined ) {
+ selector = opts.selector;
+ }
+
+ if ( opts.className !== undefined ) {
+ className = opts.className;
+ }
+ }
+
+ dt.select.selector( selector );
+ dt.select.items( items );
+ dt.select.style( style );
+ dt.select.blurable( blurable );
+ dt.select.toggleable( toggleable );
+ dt.select.info( info );
+ ctx._select.className = className;
+
+
+ // Sort table based on selected rows. Requires Select Datatables extension
+ $.fn.dataTable.ext.order['select-checkbox'] = function ( settings, col ) {
+ return this.api().column( col, {order: 'index'} ).nodes().map( function ( td ) {
+ if ( settings._select.items === 'row' ) {
+ return $( td ).parent().hasClass( settings._select.className );
+ } else if ( settings._select.items === 'cell' ) {
+ return $( td ).hasClass( settings._select.className );
+ }
+ return false;
+ });
+ };
+
+ // If the init options haven't enabled select, but there is a selectable
+ // class name, then enable
+ if ( ! setStyle && $( dt.table().node() ).hasClass( 'selectable' ) ) {
+ dt.select.style( 'os' );
+ }
+};
+
+/*
+
+Select is a collection of API methods, event handlers, event emitters and
+buttons (for the `Buttons` extension) for DataTables. It provides the following
+features, with an overview of how they are implemented:
+
+## Selection of rows, columns and cells. Whether an item is selected or not is
+ stored in:
+
+* rows: a `_select_selected` property which contains a boolean value of the
+ DataTables' `aoData` object for each row
+* columns: a `_select_selected` property which contains a boolean value of the
+ DataTables' `aoColumns` object for each column
+* cells: a `_selected_cells` property which contains an array of boolean values
+ of the `aoData` object for each row. The array is the same length as the
+ columns array, with each element of it representing a cell.
+
+This method of using boolean flags allows Select to operate when nodes have not
+been created for rows / cells (DataTables' defer rendering feature).
+
+## API methods
+
+A range of API methods are available for triggering selection and de-selection
+of rows. Methods are also available to configure the selection events that can
+be triggered by an end user (such as which items are to be selected). To a large
+extent, these of API methods *is* Select. It is basically a collection of helper
+functions that can be used to select items in a DataTable.
+
+Configuration of select is held in the object `_select` which is attached to the
+DataTables settings object on initialisation. Select being available on a table
+is not optional when Select is loaded, but its default is for selection only to
+be available via the API - so the end user wouldn't be able to select rows
+without additional configuration.
+
+The `_select` object contains the following properties:
+
+```
+{
+ items:string - Can be `rows`, `columns` or `cells`. Defines what item
+ will be selected if the user is allowed to activate row
+ selection using the mouse.
+ style:string - Can be `none`, `single`, `multi` or `os`. Defines the
+ interaction style when selecting items
+ blurable:boolean - If row selection can be cleared by clicking outside of
+ the table
+ toggleable:boolean - If row selection can be cancelled by repeated clicking
+ on the row
+ info:boolean - If the selection summary should be shown in the table
+ information elements
+}
+```
+
+In addition to the API methods, Select also extends the DataTables selector
+options for rows, columns and cells adding a `selected` option to the selector
+options object, allowing the developer to select only selected items or
+unselected items.
+
+## Mouse selection of items
+
+Clicking on items can be used to select items. This is done by a simple event
+handler that will select the items using the API methods.
+
+ */
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Local functions
+ */
+
+/**
+ * Add one or more cells to the selection when shift clicking in OS selection
+ * style cell selection.
+ *
+ * Cell range is more complicated than row and column as we want to select
+ * in the visible grid rather than by index in sequence. For example, if you
+ * click first in cell 1-1 and then shift click in 2-2 - cells 1-2 and 2-1
+ * should also be selected (and not 1-3, 1-4. etc)
+ *
+ * @param {DataTable.Api} dt DataTable
+ * @param {object} idx Cell index to select to
+ * @param {object} last Cell index to select from
+ * @private
+ */
+function cellRange( dt, idx, last )
+{
+ var indexes;
+ var columnIndexes;
+ var rowIndexes;
+ var selectColumns = function ( start, end ) {
+ if ( start > end ) {
+ var tmp = end;
+ end = start;
+ start = tmp;
+ }
+
+ var record = false;
+ return dt.columns( ':visible' ).indexes().filter( function (i) {
+ if ( i === start ) {
+ record = true;
+ }
+
+ if ( i === end ) { // not else if, as start might === end
+ record = false;
+ return true;
+ }
+
+ return record;
+ } );
+ };
+
+ var selectRows = function ( start, end ) {
+ var indexes = dt.rows( { search: 'applied' } ).indexes();
+
+ // Which comes first - might need to swap
+ if ( indexes.indexOf( start ) > indexes.indexOf( end ) ) {
+ var tmp = end;
+ end = start;
+ start = tmp;
+ }
+
+ var record = false;
+ return indexes.filter( function (i) {
+ if ( i === start ) {
+ record = true;
+ }
+
+ if ( i === end ) {
+ record = false;
+ return true;
+ }
+
+ return record;
+ } );
+ };
+
+ if ( ! dt.cells( { selected: true } ).any() && ! last ) {
+ // select from the top left cell to this one
+ columnIndexes = selectColumns( 0, idx.column );
+ rowIndexes = selectRows( 0 , idx.row );
+ }
+ else {
+ // Get column indexes between old and new
+ columnIndexes = selectColumns( last.column, idx.column );
+ rowIndexes = selectRows( last.row , idx.row );
+ }
+
+ indexes = dt.cells( rowIndexes, columnIndexes ).flatten();
+
+ if ( ! dt.cells( idx, { selected: true } ).any() ) {
+ // Select range
+ dt.cells( indexes ).select();
+ }
+ else {
+ // Deselect range
+ dt.cells( indexes ).deselect();
+ }
+}
+
+/**
+ * Disable mouse selection by removing the selectors
+ *
+ * @param {DataTable.Api} dt DataTable to remove events from
+ * @private
+ */
+function disableMouseSelection( dt )
+{
+ var ctx = dt.settings()[0];
+ var selector = ctx._select.selector;
+
+ $( dt.table().container() )
+ .off( 'mousedown.dtSelect', selector )
+ .off( 'mouseup.dtSelect', selector )
+ .off( 'click.dtSelect', selector );
+
+ $('body').off( 'click.dtSelect' + _safeId(dt.table().node()) );
+}
+
+/**
+ * Attach mouse listeners to the table to allow mouse selection of items
+ *
+ * @param {DataTable.Api} dt DataTable to remove events from
+ * @private
+ */
+function enableMouseSelection ( dt )
+{
+ var container = $( dt.table().container() );
+ var ctx = dt.settings()[0];
+ var selector = ctx._select.selector;
+ var matchSelection;
+
+ container
+ .on( 'mousedown.dtSelect', selector, function(e) {
+ // Disallow text selection for shift clicking on the table so multi
+ // element selection doesn't look terrible!
+ if ( e.shiftKey || e.metaKey || e.ctrlKey ) {
+ container
+ .css( '-moz-user-select', 'none' )
+ .one('selectstart.dtSelect', selector, function () {
+ return false;
+ } );
+ }
+
+ if ( window.getSelection ) {
+ matchSelection = window.getSelection();
+ }
+ } )
+ .on( 'mouseup.dtSelect', selector, function() {
+ // Allow text selection to occur again, Mozilla style (tested in FF
+ // 35.0.1 - still required)
+ container.css( '-moz-user-select', '' );
+ } )
+ .on( 'click.dtSelect', selector, function ( e ) {
+ var items = dt.select.items();
+ var idx;
+
+ // If text was selected (click and drag), then we shouldn't change
+ // the row's selected state
+ if ( matchSelection ) {
+ var selection = window.getSelection();
+
+ // If the element that contains the selection is not in the table, we can ignore it
+ // This can happen if the developer selects text from the click event
+ if ( ! selection.anchorNode || $(selection.anchorNode).closest('table')[0] === dt.table().node() ) {
+ if ( selection !== matchSelection ) {
+ return;
+ }
+ }
+ }
+
+ var ctx = dt.settings()[0];
+ var wrapperClass = dt.settings()[0].oClasses.sWrapper.trim().replace(/ +/g, '.');
+
+ // Ignore clicks inside a sub-table
+ if ( $(e.target).closest('div.'+wrapperClass)[0] != dt.table().container() ) {
+ return;
+ }
+
+ var cell = dt.cell( $(e.target).closest('td, th') );
+
+ // Check the cell actually belongs to the host DataTable (so child
+ // rows, etc, are ignored)
+ if ( ! cell.any() ) {
+ return;
+ }
+
+ var event = $.Event('user-select.dt');
+ eventTrigger( dt, event, [ items, cell, e ] );
+
+ if ( event.isDefaultPrevented() ) {
+ return;
+ }
+
+ var cellIndex = cell.index();
+ if ( items === 'row' ) {
+ idx = cellIndex.row;
+ typeSelect( e, dt, ctx, 'row', idx );
+ }
+ else if ( items === 'column' ) {
+ idx = cell.index().column;
+ typeSelect( e, dt, ctx, 'column', idx );
+ }
+ else if ( items === 'cell' ) {
+ idx = cell.index();
+ typeSelect( e, dt, ctx, 'cell', idx );
+ }
+
+ ctx._select_lastCell = cellIndex;
+ } );
+
+ // Blurable
+ $('body').on( 'click.dtSelect' + _safeId(dt.table().node()), function ( e ) {
+ if ( ctx._select.blurable ) {
+ // If the click was inside the DataTables container, don't blur
+ if ( $(e.target).parents().filter( dt.table().container() ).length ) {
+ return;
+ }
+
+ // Ignore elements which have been removed from the DOM (i.e. paging
+ // buttons)
+ if ( $(e.target).parents('html').length === 0 ) {
+ return;
+ }
+
+ // Don't blur in Editor form
+ if ( $(e.target).parents('div.DTE').length ) {
+ return;
+ }
+
+ var event = $.Event('select-blur.dt');
+ eventTrigger( dt, event, [ e.target, e ] );
+
+ if ( event.isDefaultPrevented() ) {
+ return;
+ }
+
+ clear( ctx, true );
+ }
+ } );
+}
+
+/**
+ * Trigger an event on a DataTable
+ *
+ * @param {DataTable.Api} api DataTable to trigger events on
+ * @param {boolean} selected true if selected, false if deselected
+ * @param {string} type Item type acting on
+ * @param {boolean} any Require that there are values before
+ * triggering
+ * @private
+ */
+function eventTrigger ( api, type, args, any )
+{
+ if ( any && ! api.flatten().length ) {
+ return;
+ }
+
+ if ( typeof type === 'string' ) {
+ type = type +'.dt';
+ }
+
+ args.unshift( api );
+
+ $(api.table().node()).trigger( type, args );
+}
+
+/**
+ * Update the information element of the DataTable showing information about the
+ * items selected. This is done by adding tags to the existing text
+ *
+ * @param {DataTable.Api} api DataTable to update
+ * @private
+ */
+function info ( api )
+{
+ var ctx = api.settings()[0];
+
+ if ( ! ctx._select.info || ! ctx.aanFeatures.i ) {
+ return;
+ }
+
+ if ( api.select.style() === 'api' ) {
+ return;
+ }
+
+ var rows = api.rows( { selected: true } ).flatten().length;
+ var columns = api.columns( { selected: true } ).flatten().length;
+ var cells = api.cells( { selected: true } ).flatten().length;
+
+ var add = function ( el, name, num ) {
+ el.append( $('<span class="select-item"/>').append( api.i18n(
+ 'select.'+name+'s',
+ { _: '%d '+name+'s selected', 0: '', 1: '1 '+name+' selected' },
+ num
+ ) ) );
+ };
+
+ // Internal knowledge of DataTables to loop over all information elements
+ $.each( ctx.aanFeatures.i, function ( i, el ) {
+ el = $(el);
+
+ var output = $('<span class="select-info"/>');
+ add( output, 'row', rows );
+ add( output, 'column', columns );
+ add( output, 'cell', cells );
+
+ var exisiting = el.children('span.select-info');
+ if ( exisiting.length ) {
+ exisiting.remove();
+ }
+
+ if ( output.text() !== '' ) {
+ el.append( output );
+ }
+ } );
+}
+
+/**
+ * Initialisation of a new table. Attach event handlers and callbacks to allow
+ * Select to operate correctly.
+ *
+ * This will occur _after_ the initial DataTables initialisation, although
+ * before Ajax data is rendered, if there is ajax data
+ *
+ * @param {DataTable.settings} ctx Settings object to operate on
+ * @private
+ */
+function init ( ctx ) {
+ var api = new DataTable.Api( ctx );
+ ctx._select_init = true;
+
+ // Row callback so that classes can be added to rows and cells if the item
+ // was selected before the element was created. This will happen with the
+ // `deferRender` option enabled.
+ //
+ // This method of attaching to `aoRowCreatedCallback` is a hack until
+ // DataTables has proper events for row manipulation If you are reviewing
+ // this code to create your own plug-ins, please do not do this!
+ ctx.aoRowCreatedCallback.push( {
+ fn: function ( row, data, index ) {
+ var i, ien;
+ var d = ctx.aoData[ index ];
+
+ // Row
+ if ( d._select_selected ) {
+ $( row ).addClass( ctx._select.className );
+ }
+
+ // Cells and columns - if separated out, we would need to do two
+ // loops, so it makes sense to combine them into a single one
+ for ( i=0, ien=ctx.aoColumns.length ; i<ien ; i++ ) {
+ if ( ctx.aoColumns[i]._select_selected || (d._selected_cells && d._selected_cells[i]) ) {
+ $(d.anCells[i]).addClass( ctx._select.className );
+ }
+ }
+ },
+ sName: 'select-deferRender'
+ } );
+
+ // On Ajax reload we want to reselect all rows which are currently selected,
+ // if there is an rowId (i.e. a unique value to identify each row with)
+ api.on( 'preXhr.dt.dtSelect', function (e, settings) {
+ if (settings !== api.settings()[0]) {
+ // Not triggered by our DataTable!
+ return;
+ }
+
+ // note that column selection doesn't need to be cached and then
+ // reselected, as they are already selected
+ var rows = api.rows( { selected: true } ).ids( true ).filter( function ( d ) {
+ return d !== undefined;
+ } );
+
+ var cells = api.cells( { selected: true } ).eq(0).map( function ( cellIdx ) {
+ var id = api.row( cellIdx.row ).id( true );
+ return id ?
+ { row: id, column: cellIdx.column } :
+ undefined;
+ } ).filter( function ( d ) {
+ return d !== undefined;
+ } );
+
+ // On the next draw, reselect the currently selected items
+ api.one( 'draw.dt.dtSelect', function () {
+ api.rows( rows ).select();
+
+ // `cells` is not a cell index selector, so it needs a loop
+ if ( cells.any() ) {
+ cells.each( function ( id ) {
+ api.cells( id.row, id.column ).select();
+ } );
+ }
+ } );
+ } );
+
+ // Update the table information element with selected item summary
+ api.on( 'draw.dtSelect.dt select.dtSelect.dt deselect.dtSelect.dt info.dt', function () {
+ info( api );
+ api.state.save();
+ } );
+
+ // Clean up and release
+ api.on( 'destroy.dtSelect', function () {
+ // Remove class directly rather than calling deselect - which would trigger events
+ $(api.rows({selected: true}).nodes()).removeClass(api.settings()[0]._select.className);
+
+ disableMouseSelection( api );
+ api.off( '.dtSelect' );
+ $('body').off('.dtSelect' + _safeId(api.table().node()));
+ } );
+}
+
+/**
+ * Add one or more items (rows or columns) to the selection when shift clicking
+ * in OS selection style
+ *
+ * @param {DataTable.Api} dt DataTable
+ * @param {string} type Row or column range selector
+ * @param {object} idx Item index to select to
+ * @param {object} last Item index to select from
+ * @private
+ */
+function rowColumnRange( dt, type, idx, last )
+{
+ // Add a range of rows from the last selected row to this one
+ var indexes = dt[type+'s']( { search: 'applied' } ).indexes();
+ var idx1 = $.inArray( last, indexes );
+ var idx2 = $.inArray( idx, indexes );
+
+ if ( ! dt[type+'s']( { selected: true } ).any() && idx1 === -1 ) {
+ // select from top to here - slightly odd, but both Windows and Mac OS
+ // do this
+ indexes.splice( $.inArray( idx, indexes )+1, indexes.length );
+ }
+ else {
+ // reverse so we can shift click 'up' as well as down
+ if ( idx1 > idx2 ) {
+ var tmp = idx2;
+ idx2 = idx1;
+ idx1 = tmp;
+ }
+
+ indexes.splice( idx2+1, indexes.length );
+ indexes.splice( 0, idx1 );
+ }
+
+ if ( ! dt[type]( idx, { selected: true } ).any() ) {
+ // Select range
+ dt[type+'s']( indexes ).select();
+ }
+ else {
+ // Deselect range - need to keep the clicked on row selected
+ indexes.splice( $.inArray( idx, indexes ), 1 );
+ dt[type+'s']( indexes ).deselect();
+ }
+}
+
+/**
+ * Clear all selected items
+ *
+ * @param {DataTable.settings} ctx Settings object of the host DataTable
+ * @param {boolean} [force=false] Force the de-selection to happen, regardless
+ * of selection style
+ * @private
+ */
+function clear( ctx, force )
+{
+ if ( force || ctx._select.style === 'single' ) {
+ var api = new DataTable.Api( ctx );
+
+ api.rows( { selected: true } ).deselect();
+ api.columns( { selected: true } ).deselect();
+ api.cells( { selected: true } ).deselect();
+ }
+}
+
+/**
+ * Select items based on the current configuration for style and items.
+ *
+ * @param {object} e Mouse event object
+ * @param {DataTables.Api} dt DataTable
+ * @param {DataTable.settings} ctx Settings object of the host DataTable
+ * @param {string} type Items to select
+ * @param {int|object} idx Index of the item to select
+ * @private
+ */
+function typeSelect ( e, dt, ctx, type, idx )
+{
+ var style = dt.select.style();
+ var toggleable = dt.select.toggleable();
+ var isSelected = dt[type]( idx, { selected: true } ).any();
+
+ if ( isSelected && ! toggleable ) {
+ return;
+ }
+
+ if ( style === 'os' ) {
+ if ( e.ctrlKey || e.metaKey ) {
+ // Add or remove from the selection
+ dt[type]( idx ).select( ! isSelected );
+ }
+ else if ( e.shiftKey ) {
+ if ( type === 'cell' ) {
+ cellRange( dt, idx, ctx._select_lastCell || null );
+ }
+ else {
+ rowColumnRange( dt, type, idx, ctx._select_lastCell ?
+ ctx._select_lastCell[type] :
+ null
+ );
+ }
+ }
+ else {
+ // No cmd or shift click - deselect if selected, or select
+ // this row only
+ var selected = dt[type+'s']( { selected: true } );
+
+ if ( isSelected && selected.flatten().length === 1 ) {
+ dt[type]( idx ).deselect();
+ }
+ else {
+ selected.deselect();
+ dt[type]( idx ).select();
+ }
+ }
+ } else if ( style == 'multi+shift' ) {
+ if ( e.shiftKey ) {
+ if ( type === 'cell' ) {
+ cellRange( dt, idx, ctx._select_lastCell || null );
+ }
+ else {
+ rowColumnRange( dt, type, idx, ctx._select_lastCell ?
+ ctx._select_lastCell[type] :
+ null
+ );
+ }
+ }
+ else {
+ dt[ type ]( idx ).select( ! isSelected );
+ }
+ }
+ else {
+ dt[ type ]( idx ).select( ! isSelected );
+ }
+}
+
+function _safeId( node ) {
+ return node.id.replace(/[^a-zA-Z0-9\-\_]/g, '-');
+}
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables selectors
+ */
+
+// row and column are basically identical just assigned to different properties
+// and checking a different array, so we can dynamically create the functions to
+// reduce the code size
+$.each( [
+ { type: 'row', prop: 'aoData' },
+ { type: 'column', prop: 'aoColumns' }
+], function ( i, o ) {
+ DataTable.ext.selector[ o.type ].push( function ( settings, opts, indexes ) {
+ var selected = opts.selected;
+ var data;
+ var out = [];
+
+ if ( selected !== true && selected !== false ) {
+ return indexes;
+ }
+
+ for ( var i=0, ien=indexes.length ; i<ien ; i++ ) {
+ data = settings[ o.prop ][ indexes[i] ];
+
+ if ( (selected === true && data._select_selected === true) ||
+ (selected === false && ! data._select_selected )
+ ) {
+ out.push( indexes[i] );
+ }
+ }
+
+ return out;
+ } );
+} );
+
+DataTable.ext.selector.cell.push( function ( settings, opts, cells ) {
+ var selected = opts.selected;
+ var rowData;
+ var out = [];
+
+ if ( selected === undefined ) {
+ return cells;
+ }
+
+ for ( var i=0, ien=cells.length ; i<ien ; i++ ) {
+ rowData = settings.aoData[ cells[i].row ];
+
+ if ( (selected === true && rowData._selected_cells && rowData._selected_cells[ cells[i].column ] === true) ||
+ (selected === false && ( ! rowData._selected_cells || ! rowData._selected_cells[ cells[i].column ] ) )
+ ) {
+ out.push( cells[i] );
+ }
+ }
+
+ return out;
+} );
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables API
+ *
+ * For complete documentation, please refer to the docs/api directory or the
+ * DataTables site
+ */
+
+// Local variables to improve compression
+var apiRegister = DataTable.Api.register;
+var apiRegisterPlural = DataTable.Api.registerPlural;
+
+apiRegister( 'select()', function () {
+ return this.iterator( 'table', function ( ctx ) {
+ DataTable.select.init( new DataTable.Api( ctx ) );
+ } );
+} );
+
+apiRegister( 'select.blurable()', function ( flag ) {
+ if ( flag === undefined ) {
+ return this.context[0]._select.blurable;
+ }
+
+ return this.iterator( 'table', function ( ctx ) {
+ ctx._select.blurable = flag;
+ } );
+} );
+
+apiRegister( 'select.toggleable()', function ( flag ) {
+ if ( flag === undefined ) {
+ return this.context[0]._select.toggleable;
+ }
+
+ return this.iterator( 'table', function ( ctx ) {
+ ctx._select.toggleable = flag;
+ } );
+} );
+
+apiRegister( 'select.info()', function ( flag ) {
+ if ( flag === undefined ) {
+ return this.context[0]._select.info;
+ }
+
+ return this.iterator( 'table', function ( ctx ) {
+ ctx._select.info = flag;
+ } );
+} );
+
+apiRegister( 'select.items()', function ( items ) {
+ if ( items === undefined ) {
+ return this.context[0]._select.items;
+ }
+
+ return this.iterator( 'table', function ( ctx ) {
+ ctx._select.items = items;
+
+ eventTrigger( new DataTable.Api( ctx ), 'selectItems', [ items ] );
+ } );
+} );
+
+// Takes effect from the _next_ selection. None disables future selection, but
+// does not clear the current selection. Use the `deselect` methods for that
+apiRegister( 'select.style()', function ( style ) {
+ if ( style === undefined ) {
+ return this.context[0]._select.style;
+ }
+
+ return this.iterator( 'table', function ( ctx ) {
+ if ( ! ctx._select ) {
+ DataTable.select.init( new DataTable.Api(ctx) );
+ }
+
+ if ( ! ctx._select_init ) {
+ init(ctx);
+ }
+
+ ctx._select.style = style;
+
+ // Add / remove mouse event handlers. They aren't required when only
+ // API selection is available
+ var dt = new DataTable.Api( ctx );
+ disableMouseSelection( dt );
+
+ if ( style !== 'api' ) {
+ enableMouseSelection( dt );
+ }
+
+ eventTrigger( new DataTable.Api( ctx ), 'selectStyle', [ style ] );
+ } );
+} );
+
+apiRegister( 'select.selector()', function ( selector ) {
+ if ( selector === undefined ) {
+ return this.context[0]._select.selector;
+ }
+
+ return this.iterator( 'table', function ( ctx ) {
+ disableMouseSelection( new DataTable.Api( ctx ) );
+
+ ctx._select.selector = selector;
+
+ if ( ctx._select.style !== 'api' ) {
+ enableMouseSelection( new DataTable.Api( ctx ) );
+ }
+ } );
+} );
+
+
+
+apiRegisterPlural( 'rows().select()', 'row().select()', function ( select ) {
+ var api = this;
+
+ if ( select === false ) {
+ return this.deselect();
+ }
+
+ this.iterator( 'row', function ( ctx, idx ) {
+ clear( ctx );
+
+ ctx.aoData[ idx ]._select_selected = true;
+ $( ctx.aoData[ idx ].nTr ).addClass( ctx._select.className );
+ } );
+
+ this.iterator( 'table', function ( ctx, i ) {
+ eventTrigger( api, 'select', [ 'row', api[i] ], true );
+ } );
+
+ return this;
+} );
+
+apiRegister( 'row().selected()', function () {
+ var ctx = this.context[0];
+
+ if (
+ ctx &&
+ this.length &&
+ ctx.aoData[this[0]] &&
+ ctx.aoData[this[0]]._select_selected
+ ) {
+ return true;
+ }
+
+ return false;
+} );
+
+apiRegisterPlural( 'columns().select()', 'column().select()', function ( select ) {
+ var api = this;
+
+ if ( select === false ) {
+ return this.deselect();
+ }
+
+ this.iterator( 'column', function ( ctx, idx ) {
+ clear( ctx );
+
+ ctx.aoColumns[ idx ]._select_selected = true;
+
+ var column = new DataTable.Api( ctx ).column( idx );
+
+ $( column.header() ).addClass( ctx._select.className );
+ $( column.footer() ).addClass( ctx._select.className );
+
+ column.nodes().to$().addClass( ctx._select.className );
+ } );
+
+ this.iterator( 'table', function ( ctx, i ) {
+ eventTrigger( api, 'select', [ 'column', api[i] ], true );
+ } );
+
+ return this;
+} );
+
+apiRegister( 'column().selected()', function () {
+ var ctx = this.context[0];
+
+ if (
+ ctx &&
+ this.length &&
+ ctx.aoColumns[this[0]] &&
+ ctx.aoColumns[this[0]]._select_selected
+ ) {
+ return true;
+ }
+
+ return false;
+} );
+
+apiRegisterPlural( 'cells().select()', 'cell().select()', function ( select ) {
+ var api = this;
+
+ if ( select === false ) {
+ return this.deselect();
+ }
+
+ this.iterator( 'cell', function ( ctx, rowIdx, colIdx ) {
+ clear( ctx );
+
+ var data = ctx.aoData[ rowIdx ];
+
+ if ( data._selected_cells === undefined ) {
+ data._selected_cells = [];
+ }
+
+ data._selected_cells[ colIdx ] = true;
+
+ if ( data.anCells ) {
+ $( data.anCells[ colIdx ] ).addClass( ctx._select.className );
+ }
+ } );
+
+ this.iterator( 'table', function ( ctx, i ) {
+ eventTrigger( api, 'select', [ 'cell', api.cells(api[i]).indexes().toArray() ], true );
+ } );
+
+ return this;
+} );
+
+apiRegister( 'cell().selected()', function () {
+ var ctx = this.context[0];
+
+ if (ctx && this.length) {
+ var row = ctx.aoData[this[0][0].row];
+
+ if (row && row._selected_cells && row._selected_cells[this[0][0].column]) {
+ return true;
+ }
+ }
+
+ return false;
+} );
+
+
+apiRegisterPlural( 'rows().deselect()', 'row().deselect()', function () {
+ var api = this;
+
+ this.iterator( 'row', function ( ctx, idx ) {
+ ctx.aoData[ idx ]._select_selected = false;
+ ctx._select_lastCell = null;
+ $( ctx.aoData[ idx ].nTr ).removeClass( ctx._select.className );
+ } );
+
+ this.iterator( 'table', function ( ctx, i ) {
+ eventTrigger( api, 'deselect', [ 'row', api[i] ], true );
+ } );
+
+ return this;
+} );
+
+apiRegisterPlural( 'columns().deselect()', 'column().deselect()', function () {
+ var api = this;
+
+ this.iterator( 'column', function ( ctx, idx ) {
+ ctx.aoColumns[ idx ]._select_selected = false;
+
+ var api = new DataTable.Api( ctx );
+ var column = api.column( idx );
+
+ $( column.header() ).removeClass( ctx._select.className );
+ $( column.footer() ).removeClass( ctx._select.className );
+
+ // Need to loop over each cell, rather than just using
+ // `column().nodes()` as cells which are individually selected should
+ // not have the `selected` class removed from them
+ api.cells( null, idx ).indexes().each( function (cellIdx) {
+ var data = ctx.aoData[ cellIdx.row ];
+ var cellSelected = data._selected_cells;
+
+ if ( data.anCells && (! cellSelected || ! cellSelected[ cellIdx.column ]) ) {
+ $( data.anCells[ cellIdx.column ] ).removeClass( ctx._select.className );
+ }
+ } );
+ } );
+
+ this.iterator( 'table', function ( ctx, i ) {
+ eventTrigger( api, 'deselect', [ 'column', api[i] ], true );
+ } );
+
+ return this;
+} );
+
+apiRegisterPlural( 'cells().deselect()', 'cell().deselect()', function () {
+ var api = this;
+
+ this.iterator( 'cell', function ( ctx, rowIdx, colIdx ) {
+ var data = ctx.aoData[ rowIdx ];
+
+ if(data._selected_cells !== undefined) {
+ data._selected_cells[ colIdx ] = false;
+ }
+
+ // Remove class only if the cells exist, and the cell is not column
+ // selected, in which case the class should remain (since it is selected
+ // in the column)
+ if ( data.anCells && ! ctx.aoColumns[ colIdx ]._select_selected ) {
+ $( data.anCells[ colIdx ] ).removeClass( ctx._select.className );
+ }
+ } );
+
+ this.iterator( 'table', function ( ctx, i ) {
+ eventTrigger( api, 'deselect', [ 'cell', api[i] ], true );
+ } );
+
+ return this;
+} );
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Buttons
+ */
+function i18n( label, def ) {
+ return function (dt) {
+ return dt.i18n( 'buttons.'+label, def );
+ };
+}
+
+// Common events with suitable namespaces
+function namespacedEvents ( config ) {
+ var unique = config._eventNamespace;
+
+ return 'draw.dt.DT'+unique+' select.dt.DT'+unique+' deselect.dt.DT'+unique;
+}
+
+function enabled ( dt, config ) {
+ if ( $.inArray( 'rows', config.limitTo ) !== -1 && dt.rows( { selected: true } ).any() ) {
+ return true;
+ }
+
+ if ( $.inArray( 'columns', config.limitTo ) !== -1 && dt.columns( { selected: true } ).any() ) {
+ return true;
+ }
+
+ if ( $.inArray( 'cells', config.limitTo ) !== -1 && dt.cells( { selected: true } ).any() ) {
+ return true;
+ }
+
+ return false;
+}
+
+var _buttonNamespace = 0;
+
+$.extend( DataTable.ext.buttons, {
+ selected: {
+ text: i18n( 'selected', 'Selected' ),
+ className: 'buttons-selected',
+ limitTo: [ 'rows', 'columns', 'cells' ],
+ init: function ( dt, node, config ) {
+ var that = this;
+ config._eventNamespace = '.select'+(_buttonNamespace++);
+
+ // .DT namespace listeners are removed by DataTables automatically
+ // on table destroy
+ dt.on( namespacedEvents(config), function () {
+ that.enable( enabled(dt, config) );
+ } );
+
+ this.disable();
+ },
+ destroy: function ( dt, node, config ) {
+ dt.off( config._eventNamespace );
+ }
+ },
+ selectedSingle: {
+ text: i18n( 'selectedSingle', 'Selected single' ),
+ className: 'buttons-selected-single',
+ init: function ( dt, node, config ) {
+ var that = this;
+ config._eventNamespace = '.select'+(_buttonNamespace++);
+
+ dt.on( namespacedEvents(config), function () {
+ var count = dt.rows( { selected: true } ).flatten().length +
+ dt.columns( { selected: true } ).flatten().length +
+ dt.cells( { selected: true } ).flatten().length;
+
+ that.enable( count === 1 );
+ } );
+
+ this.disable();
+ },
+ destroy: function ( dt, node, config ) {
+ dt.off( config._eventNamespace );
+ }
+ },
+ selectAll: {
+ text: i18n( 'selectAll', 'Select all' ),
+ className: 'buttons-select-all',
+ action: function () {
+ var items = this.select.items();
+ this[ items+'s' ]().select();
+ }
+ },
+ selectNone: {
+ text: i18n( 'selectNone', 'Deselect all' ),
+ className: 'buttons-select-none',
+ action: function () {
+ clear( this.settings()[0], true );
+ },
+ init: function ( dt, node, config ) {
+ var that = this;
+ config._eventNamespace = '.select'+(_buttonNamespace++);
+
+ dt.on( namespacedEvents(config), function () {
+ var count = dt.rows( { selected: true } ).flatten().length +
+ dt.columns( { selected: true } ).flatten().length +
+ dt.cells( { selected: true } ).flatten().length;
+
+ that.enable( count > 0 );
+ } );
+
+ this.disable();
+ },
+ destroy: function ( dt, node, config ) {
+ dt.off( config._eventNamespace );
+ }
+ },
+ showSelected: {
+ text: i18n( 'showSelected', 'Show only selected' ),
+ className: 'buttons-show-selected',
+ action: function (e, dt, node, conf) {
+ // Works by having a filtering function which will reduce to the selected
+ // items only. So we can re-reference the function it gets stored in the
+ // `conf` object
+ if (conf._filter) {
+ var idx = DataTable.ext.search.indexOf(conf._filter);
+
+ if (idx !== -1) {
+ DataTable.ext.search.splice(idx, 1);
+ conf._filter = null;
+ }
+
+ this.active(false);
+ }
+ else {
+ var fn = function (s, data, idx) {
+ // Need to be sure we are operating on our table!
+ if (s !== dt.settings()[0]) {
+ return true;
+ }
+
+ let row = s.aoData[idx];
+
+ return row._select_selected;
+ }
+
+ conf._filter = fn;
+ DataTable.ext.search.push(fn);
+
+ this.active(true);
+ }
+
+ dt.draw();
+ }
+ }
+} );
+
+$.each( [ 'Row', 'Column', 'Cell' ], function ( i, item ) {
+ var lc = item.toLowerCase();
+
+ DataTable.ext.buttons[ 'select'+item+'s' ] = {
+ text: i18n( 'select'+item+'s', 'Select '+lc+'s' ),
+ className: 'buttons-select-'+lc+'s',
+ action: function () {
+ this.select.items( lc );
+ },
+ init: function ( dt ) {
+ var that = this;
+
+ dt.on( 'selectItems.dt.DT', function ( e, ctx, items ) {
+ that.active( items === lc );
+ } );
+ }
+ };
+} );
+
+
+$.fn.DataTable.select = DataTable.select;
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Initialisation
+ */
+
+// DataTables creation - check if select has been defined in the options. Note
+// this required that the table be in the document! If it isn't then something
+// needs to trigger this method unfortunately. The next major release of
+// DataTables will rework the events and address this.
+$(document).on( 'preInit.dt.dtSelect', function (e, ctx) {
+ if ( e.namespace !== 'dt' ) {
+ return;
+ }
+
+ DataTable.select.init( new DataTable.Api( ctx ) );
+} );
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/dataTables.select.min.js b/public/assets/js/DataTables/Select-1.6.2/js/dataTables.select.min.js
new file mode 100644
index 0000000..46031d4
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/dataTables.select.min.js
@@ -0,0 +1,4 @@
+/*! Select for DataTables 1.6.2
+ * © SpryMedia Ltd - datatables.net/license/mit
+ */
+!function(l){var s,c;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return l(e,window,document)}):"object"==typeof exports?(s=require("jquery"),c=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"!=typeof window?module.exports=function(e,t){return e=e||window,t=t||s(e),c(e,t),l(t,e,e.document)}:(c(window,s),module.exports=l(s,window,window.document))):l(jQuery,window,document)}(function(m,i,e,h){"use strict";var _=m.fn.dataTable;function r(n,e,t){function l(t,l){l<t&&(e=l,l=t,t=e);var e,s=!1;return n.columns(":visible").indexes().filter(function(e){return e===t&&(s=!0),e===l?!(s=!1):s})}function s(t,l){var e,s=n.rows({search:"applied"}).indexes(),c=(s.indexOf(t)>s.indexOf(l)&&(e=l,l=t,t=e),!1);return s.filter(function(e){return e===t&&(c=!0),e===l?!(c=!1):c})}var c,t=n.cells({selected:!0}).any()||t?(c=l(t.column,e.column),s(t.row,e.row)):(c=l(0,e.column),s(0,e.row)),t=n.cells(t,c).flatten();n.cells(e,{selected:!0}).any()?n.cells(t).deselect():n.cells(t).select()}function s(e){var t=e.settings()[0]._select.selector;m(e.table().container()).off("mousedown.dtSelect",t).off("mouseup.dtSelect",t).off("click.dtSelect",t),m("body").off("click.dtSelect"+p(e.table().node()))}function c(o){var a,t=m(o.table().container()),l=o.settings()[0],s=l._select.selector;t.on("mousedown.dtSelect",s,function(e){(e.shiftKey||e.metaKey||e.ctrlKey)&&t.css("-moz-user-select","none").one("selectstart.dtSelect",s,function(){return!1}),i.getSelection&&(a=i.getSelection())}).on("mouseup.dtSelect",s,function(){t.css("-moz-user-select","")}).on("click.dtSelect",s,function(e){var t,l=o.select.items();if(a){var s=i.getSelection();if((!s.anchorNode||m(s.anchorNode).closest("table")[0]===o.table().node())&&s!==a)return}var c,s=o.settings()[0],n=o.settings()[0].oClasses.sWrapper.trim().replace(/ +/g,".");m(e.target).closest("div."+n)[0]==o.table().container()&&(n=o.cell(m(e.target).closest("td, th"))).any()&&(c=m.Event("user-select.dt"),u(o,c,[l,n,e]),c.isDefaultPrevented()||(c=n.index(),"row"===l?(t=c.row,w(e,o,s,"row",t)):"column"===l?(t=n.index().column,w(e,o,s,"column",t)):"cell"===l&&(t=n.index(),w(e,o,s,"cell",t)),s._select_lastCell=c))}),m("body").on("click.dtSelect"+p(o.table().node()),function(e){var t;!l._select.blurable||m(e.target).parents().filter(o.table().container()).length||0===m(e.target).parents("html").length||m(e.target).parents("div.DTE").length||(t=m.Event("select-blur.dt"),u(o,t,[e.target,e]),t.isDefaultPrevented())||f(l,!0)})}function u(e,t,l,s){s&&!e.flatten().length||("string"==typeof t&&(t+=".dt"),l.unshift(e),m(e.table().node()).trigger(t,l))}function n(o){var i=new _.Api(o);o._select_init=!0,o.aoRowCreatedCallback.push({fn:function(e,t,l){var s,c,n=o.aoData[l];for(n._select_selected&&m(e).addClass(o._select.className),s=0,c=o.aoColumns.length;s<c;s++)(o.aoColumns[s]._select_selected||n._selected_cells&&n._selected_cells[s])&&m(n.anCells[s]).addClass(o._select.className)},sName:"select-deferRender"}),i.on("preXhr.dt.dtSelect",function(e,t){var l,s;t===i.settings()[0]&&(l=i.rows({selected:!0}).ids(!0).filter(function(e){return e!==h}),s=i.cells({selected:!0}).eq(0).map(function(e){var t=i.row(e.row).id(!0);return t?{row:t,column:e.column}:h}).filter(function(e){return e!==h}),i.one("draw.dt.dtSelect",function(){i.rows(l).select(),s.any()&&s.each(function(e){i.cells(e.row,e.column).select()})}))}),i.on("draw.dtSelect.dt select.dtSelect.dt deselect.dtSelect.dt info.dt",function(){var s,c,n,o,a,e;(e=(s=i).settings()[0])._select.info&&e.aanFeatures.i&&"api"!==s.select.style()&&(c=s.rows({selected:!0}).flatten().length,n=s.columns({selected:!0}).flatten().length,o=s.cells({selected:!0}).flatten().length,a=function(e,t,l){e.append(m('<span class="select-item"/>').append(s.i18n("select."+t+"s",{_:"%d "+t+"s selected",0:"",1:"1 "+t+" selected"},l)))},m.each(e.aanFeatures.i,function(e,t){t=m(t);var l=m('<span class="select-info"/>'),s=(a(l,"row",c),a(l,"column",n),a(l,"cell",o),t.children("span.select-info"));s.length&&s.remove(),""!==l.text()&&t.append(l)})),i.state.save()}),i.on("destroy.dtSelect",function(){m(i.rows({selected:!0}).nodes()).removeClass(i.settings()[0]._select.className),s(i),i.off(".dtSelect"),m("body").off(".dtSelect"+p(i.table().node()))})}function d(e,t,l,s){var c,n=e[t+"s"]({search:"applied"}).indexes(),s=m.inArray(s,n),o=m.inArray(l,n);e[t+"s"]({selected:!0}).any()||-1!==s?(o<s&&(c=o,o=s,s=c),n.splice(o+1,n.length),n.splice(0,s)):n.splice(m.inArray(l,n)+1,n.length),e[t](l,{selected:!0}).any()?(n.splice(m.inArray(l,n),1),e[t+"s"](n).deselect()):e[t+"s"](n).select()}function f(e,t){!t&&"single"!==e._select.style||((t=new _.Api(e)).rows({selected:!0}).deselect(),t.columns({selected:!0}).deselect(),t.cells({selected:!0}).deselect())}function w(e,t,l,s,c){var n=t.select.style(),o=t.select.toggleable(),a=t[s](c,{selected:!0}).any();a&&!o||("os"===n?e.ctrlKey||e.metaKey?t[s](c).select(!a):e.shiftKey?"cell"===s?r(t,c,l._select_lastCell||null):d(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):(o=t[s+"s"]({selected:!0}),a&&1===o.flatten().length?t[s](c).deselect():(o.deselect(),t[s](c).select())):"multi+shift"==n&&e.shiftKey?"cell"===s?r(t,c,l._select_lastCell||null):d(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):t[s](c).select(!a))}function p(e){return e.id.replace(/[^a-zA-Z0-9\-\_]/g,"-")}_.select={},_.select.version="1.6.2",_.select.init=function(c){var e,t,l,s,n,o,a,i,r,u,d,f=c.settings()[0];f._select||(e=c.state.loaded(),t=function(e,t,l){if(null!==l&&l.select!==h){if(c.rows({selected:!0}).any()&&c.rows().deselect(),l.select.rows!==h&&c.rows(l.select.rows).select(),c.columns({selected:!0}).any()&&c.columns().deselect(),l.select.columns!==h&&c.columns(l.select.columns).select(),c.cells({selected:!0}).any()&&c.cells().deselect(),l.select.cells!==h)for(var s=0;s<l.select.cells.length;s++)c.cell(l.select.cells[s].row,l.select.cells[s].column).select();c.state.save()}},c.on("stateSaveParams",function(e,t,l){l.select={},l.select.rows=c.rows({selected:!0}).ids(!0).toArray(),l.select.columns=c.columns({selected:!0})[0],l.select.cells=c.cells({selected:!0})[0].map(function(e){return{row:c.row(e.row).id(!0),column:e.column}})}).on("stateLoadParams",t).one("init",function(){t(0,0,e)}),s=f.oInit.select,l=_.defaults.select,l=s===h?l:s,s="row",i=a=!(o=!(n="api")),r="td, th",d=!(u="selected"),f._select={},!0===l?(n="os",d=!0):"string"==typeof l?(n=l,d=!0):m.isPlainObject(l)&&(l.blurable!==h&&(o=l.blurable),l.toggleable!==h&&(a=l.toggleable),l.info!==h&&(i=l.info),l.items!==h&&(s=l.items),d=(n=l.style!==h?l.style:"os",!0),l.selector!==h&&(r=l.selector),l.className!==h)&&(u=l.className),c.select.selector(r),c.select.items(s),c.select.style(n),c.select.blurable(o),c.select.toggleable(a),c.select.info(i),f._select.className=u,m.fn.dataTable.ext.order["select-checkbox"]=function(t,e){return this.api().column(e,{order:"index"}).nodes().map(function(e){return"row"===t._select.items?m(e).parent().hasClass(t._select.className):"cell"===t._select.items&&m(e).hasClass(t._select.className)})},!d&&m(c.table().node()).hasClass("selectable")&&c.select.style("os"))},m.each([{type:"row",prop:"aoData"},{type:"column",prop:"aoColumns"}],function(e,i){_.ext.selector[i.type].push(function(e,t,l){var s,c=t.selected,n=[];if(!0!==c&&!1!==c)return l;for(var o=0,a=l.length;o<a;o++)s=e[i.prop][l[o]],(!0===c&&!0===s._select_selected||!1===c&&!s._select_selected)&&n.push(l[o]);return n})}),_.ext.selector.cell.push(function(e,t,l){var s,c=t.selected,n=[];if(c===h)return l;for(var o=0,a=l.length;o<a;o++)s=e.aoData[l[o].row],(!0!==c||!s._selected_cells||!0!==s._selected_cells[l[o].column])&&(!1!==c||s._selected_cells&&s._selected_cells[l[o].column])||n.push(l[o]);return n});var t=_.Api.register,l=_.Api.registerPlural;function o(t,l){return function(e){return e.i18n("buttons."+t,l)}}function a(e){e=e._eventNamespace;return"draw.dt.DT"+e+" select.dt.DT"+e+" deselect.dt.DT"+e}t("select()",function(){return this.iterator("table",function(e){_.select.init(new _.Api(e))})}),t("select.blurable()",function(t){return t===h?this.context[0]._select.blurable:this.iterator("table",function(e){e._select.blurable=t})}),t("select.toggleable()",function(t){return t===h?this.context[0]._select.toggleable:this.iterator("table",function(e){e._select.toggleable=t})}),t("select.info()",function(t){return t===h?this.context[0]._select.info:this.iterator("table",function(e){e._select.info=t})}),t("select.items()",function(t){return t===h?this.context[0]._select.items:this.iterator("table",function(e){e._select.items=t,u(new _.Api(e),"selectItems",[t])})}),t("select.style()",function(l){return l===h?this.context[0]._select.style:this.iterator("table",function(e){e._select||_.select.init(new _.Api(e)),e._select_init||n(e),e._select.style=l;var t=new _.Api(e);s(t),"api"!==l&&c(t),u(new _.Api(e),"selectStyle",[l])})}),t("select.selector()",function(t){return t===h?this.context[0]._select.selector:this.iterator("table",function(e){s(new _.Api(e)),e._select.selector=t,"api"!==e._select.style&&c(new _.Api(e))})}),l("rows().select()","row().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("row",function(e,t){f(e),e.aoData[t]._select_selected=!0,m(e.aoData[t].nTr).addClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"select",["row",l[t]],!0)}),this)}),t("row().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoData[this[0]]&&e.aoData[this[0]]._select_selected)}),l("columns().select()","column().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("column",function(e,t){f(e),e.aoColumns[t]._select_selected=!0;t=new _.Api(e).column(t);m(t.header()).addClass(e._select.className),m(t.footer()).addClass(e._select.className),t.nodes().to$().addClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"select",["column",l[t]],!0)}),this)}),t("column().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoColumns[this[0]]&&e.aoColumns[this[0]]._select_selected)}),l("cells().select()","cell().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("cell",function(e,t,l){f(e);t=e.aoData[t];t._selected_cells===h&&(t._selected_cells=[]),t._selected_cells[l]=!0,t.anCells&&m(t.anCells[l]).addClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"select",["cell",l.cells(l[t]).indexes().toArray()],!0)}),this)}),t("cell().selected()",function(){var e=this.context[0];if(e&&this.length){e=e.aoData[this[0][0].row];if(e&&e._selected_cells&&e._selected_cells[this[0][0].column])return!0}return!1}),l("rows().deselect()","row().deselect()",function(){var l=this;return this.iterator("row",function(e,t){e.aoData[t]._select_selected=!1,e._select_lastCell=null,m(e.aoData[t].nTr).removeClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"deselect",["row",l[t]],!0)}),this}),l("columns().deselect()","column().deselect()",function(){var l=this;return this.iterator("column",function(s,e){s.aoColumns[e]._select_selected=!1;var t=new _.Api(s),l=t.column(e);m(l.header()).removeClass(s._select.className),m(l.footer()).removeClass(s._select.className),t.cells(null,e).indexes().each(function(e){var t=s.aoData[e.row],l=t._selected_cells;!t.anCells||l&&l[e.column]||m(t.anCells[e.column]).removeClass(s._select.className)})}),this.iterator("table",function(e,t){u(l,"deselect",["column",l[t]],!0)}),this}),l("cells().deselect()","cell().deselect()",function(){var l=this;return this.iterator("cell",function(e,t,l){t=e.aoData[t];t._selected_cells!==h&&(t._selected_cells[l]=!1),t.anCells&&!e.aoColumns[l]._select_selected&&m(t.anCells[l]).removeClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"deselect",["cell",l[t]],!0)}),this});var v=0;return m.extend(_.ext.buttons,{selected:{text:o("selected","Selected"),className:"buttons-selected",limitTo:["rows","columns","cells"],init:function(l,e,s){var c=this;s._eventNamespace=".select"+v++,l.on(a(s),function(){var e,t;c.enable((e=l,t=s,!(-1===m.inArray("rows",t.limitTo)||!e.rows({selected:!0}).any())||!(-1===m.inArray("columns",t.limitTo)||!e.columns({selected:!0}).any())||!(-1===m.inArray("cells",t.limitTo)||!e.cells({selected:!0}).any())))}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectedSingle:{text:o("selectedSingle","Selected single"),className:"buttons-selected-single",init:function(t,e,l){var s=this;l._eventNamespace=".select"+v++,t.on(a(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(1===e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectAll:{text:o("selectAll","Select all"),className:"buttons-select-all",action:function(){var e=this.select.items();this[e+"s"]().select()}},selectNone:{text:o("selectNone","Deselect all"),className:"buttons-select-none",action:function(){f(this.settings()[0],!0)},init:function(t,e,l){var s=this;l._eventNamespace=".select"+v++,t.on(a(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(0<e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},showSelected:{text:o("showSelected","Show only selected"),className:"buttons-show-selected",action:function(e,s,t,l){var c;l._filter?(-1!==(c=_.ext.search.indexOf(l._filter))&&(_.ext.search.splice(c,1),l._filter=null),this.active(!1)):(l._filter=c=function(e,t,l){return e!==s.settings()[0]||e.aoData[l]._select_selected},_.ext.search.push(c),this.active(!0)),s.draw()}}}),m.each(["Row","Column","Cell"],function(e,t){var c=t.toLowerCase();_.ext.buttons["select"+t+"s"]={text:o("select"+t+"s","Select "+c+"s"),className:"buttons-select-"+c+"s",action:function(){this.select.items(c)},init:function(e){var s=this;e.on("selectItems.dt.DT",function(e,t,l){s.active(l===c)})}}}),m.fn.DataTable.select=_.select,m(e).on("preInit.dt.dtSelect",function(e,t){"dt"===e.namespace&&_.select.init(new _.Api(t))}),_}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap.js b/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap.js
new file mode 100644
index 0000000..c230e07
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap.js
@@ -0,0 +1,58 @@
+/*! Bootstrap 3 styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-bs', 'datatables.net-select'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-bs')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.select ) {
+ require('datatables.net-select')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap.min.js b/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap.min.js
new file mode 100644
index 0000000..e61e521
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap.min.js
@@ -0,0 +1,4 @@
+/*! Bootstrap 3 styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(n){var d,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bs","datatables.net-select"],function(e){return n(e,window,document)}):"object"==typeof exports?(d=require("jquery"),o=function(e,t){t.fn.dataTable||require("datatables.net-bs")(e,t),t.fn.dataTable.select||require("datatables.net-select")(e,t)},"undefined"!=typeof window?module.exports=function(e,t){return e=e||window,t=t||d(e),o(e,t),n(t,0,e.document)}:(o(window,d),module.exports=n(d,window,window.document))):n(jQuery,window,document)}(function(e,t,n,d){"use strict";return e.fn.dataTable}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap4.js b/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap4.js
new file mode 100644
index 0000000..558f022
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap4.js
@@ -0,0 +1,58 @@
+/*! Bootstrap 4 styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-bs4', 'datatables.net-select'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-bs4')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.select ) {
+ require('datatables.net-select')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap4.min.js b/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap4.min.js
new file mode 100644
index 0000000..b9146ab
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap4.min.js
@@ -0,0 +1,4 @@
+/*! Bootstrap 4 styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(n){var d,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-select"],function(e){return n(e,window,document)}):"object"==typeof exports?(d=require("jquery"),o=function(e,t){t.fn.dataTable||require("datatables.net-bs4")(e,t),t.fn.dataTable.select||require("datatables.net-select")(e,t)},"undefined"!=typeof window?module.exports=function(e,t){return e=e||window,t=t||d(e),o(e,t),n(t,0,e.document)}:(o(window,d),module.exports=n(d,window,window.document))):n(jQuery,window,document)}(function(e,t,n,d){"use strict";return e.fn.dataTable}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap5.js b/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap5.js
new file mode 100644
index 0000000..cbd0f54
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap5.js
@@ -0,0 +1,58 @@
+/*! Bootstrap 5 styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-bs5', 'datatables.net-select'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-bs5')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.select ) {
+ require('datatables.net-select')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap5.min.js b/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap5.min.js
new file mode 100644
index 0000000..a93a641
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.bootstrap5.min.js
@@ -0,0 +1,4 @@
+/*! Bootstrap 5 styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(n){var d,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bs5","datatables.net-select"],function(e){return n(e,window,document)}):"object"==typeof exports?(d=require("jquery"),o=function(e,t){t.fn.dataTable||require("datatables.net-bs5")(e,t),t.fn.dataTable.select||require("datatables.net-select")(e,t)},"undefined"!=typeof window?module.exports=function(e,t){return e=e||window,t=t||d(e),o(e,t),n(t,0,e.document)}:(o(window,d),module.exports=n(d,window,window.document))):n(jQuery,window,document)}(function(e,t,n,d){"use strict";return e.fn.dataTable}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.bulma.js b/public/assets/js/DataTables/Select-1.6.2/js/select.bulma.js
new file mode 100644
index 0000000..c18080d
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.bulma.js
@@ -0,0 +1,58 @@
+/*! Bulma styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-bm', 'datatables.net-select'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-bm')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.select ) {
+ require('datatables.net-select')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.bulma.min.js b/public/assets/js/DataTables/Select-1.6.2/js/select.bulma.min.js
new file mode 100644
index 0000000..ce4afe7
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.bulma.min.js
@@ -0,0 +1,4 @@
+/*! Bulma styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(n){var d,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net-bm","datatables.net-select"],function(e){return n(e,window,document)}):"object"==typeof exports?(d=require("jquery"),o=function(e,t){t.fn.dataTable||require("datatables.net-bm")(e,t),t.fn.dataTable.select||require("datatables.net-select")(e,t)},"undefined"!=typeof window?module.exports=function(e,t){return e=e||window,t=t||d(e),o(e,t),n(t,0,e.document)}:(o(window,d),module.exports=n(d,window,window.document))):n(jQuery,window,document)}(function(e,t,n,d){"use strict";return e.fn.dataTable}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.dataTables.js b/public/assets/js/DataTables/Select-1.6.2/js/select.dataTables.js
new file mode 100644
index 0000000..a294627
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.dataTables.js
@@ -0,0 +1,58 @@
+/*! DataTables styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-dt', 'datatables.net-select'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-dt')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.select ) {
+ require('datatables.net-select')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.dataTables.min.js b/public/assets/js/DataTables/Select-1.6.2/js/select.dataTables.min.js
new file mode 100644
index 0000000..70856bc
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.dataTables.min.js
@@ -0,0 +1,4 @@
+/*! DataTables styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(n){var d,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net-dt","datatables.net-select"],function(e){return n(e,window,document)}):"object"==typeof exports?(d=require("jquery"),o=function(e,t){t.fn.dataTable||require("datatables.net-dt")(e,t),t.fn.dataTable.select||require("datatables.net-select")(e,t)},"undefined"!=typeof window?module.exports=function(e,t){return e=e||window,t=t||d(e),o(e,t),n(t,0,e.document)}:(o(window,d),module.exports=n(d,window,window.document))):n(jQuery,window,document)}(function(e,t,n,d){"use strict";return e.fn.dataTable}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.foundation.js b/public/assets/js/DataTables/Select-1.6.2/js/select.foundation.js
new file mode 100644
index 0000000..d485669
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.foundation.js
@@ -0,0 +1,58 @@
+/*! Foundation styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-zf', 'datatables.net-select'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-zf')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.select ) {
+ require('datatables.net-select')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.foundation.min.js b/public/assets/js/DataTables/Select-1.6.2/js/select.foundation.min.js
new file mode 100644
index 0000000..6d5d135
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.foundation.min.js
@@ -0,0 +1,4 @@
+/*! Foundation styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(n){var d,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net-zf","datatables.net-select"],function(e){return n(e,window,document)}):"object"==typeof exports?(d=require("jquery"),o=function(e,t){t.fn.dataTable||require("datatables.net-zf")(e,t),t.fn.dataTable.select||require("datatables.net-select")(e,t)},"undefined"!=typeof window?module.exports=function(e,t){return e=e||window,t=t||d(e),o(e,t),n(t,0,e.document)}:(o(window,d),module.exports=n(d,window,window.document))):n(jQuery,window,document)}(function(e,t,n,d){"use strict";return e.fn.dataTable}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.jqueryui.js b/public/assets/js/DataTables/Select-1.6.2/js/select.jqueryui.js
new file mode 100644
index 0000000..de37ed4
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.jqueryui.js
@@ -0,0 +1,58 @@
+/*! jQuery UI styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-jqui', 'datatables.net-select'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-jqui')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.select ) {
+ require('datatables.net-select')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.jqueryui.min.js b/public/assets/js/DataTables/Select-1.6.2/js/select.jqueryui.min.js
new file mode 100644
index 0000000..29b001c
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.jqueryui.min.js
@@ -0,0 +1,4 @@
+/*! jQuery UI styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(n){var d,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net-jqui","datatables.net-select"],function(e){return n(e,window,document)}):"object"==typeof exports?(d=require("jquery"),o=function(e,t){t.fn.dataTable||require("datatables.net-jqui")(e,t),t.fn.dataTable.select||require("datatables.net-select")(e,t)},"undefined"!=typeof window?module.exports=function(e,t){return e=e||window,t=t||d(e),o(e,t),n(t,0,e.document)}:(o(window,d),module.exports=n(d,window,window.document))):n(jQuery,window,document)}(function(e,t,n,d){"use strict";return e.fn.dataTable}); \ No newline at end of file
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.semanticui.js b/public/assets/js/DataTables/Select-1.6.2/js/select.semanticui.js
new file mode 100644
index 0000000..f38707a
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.semanticui.js
@@ -0,0 +1,58 @@
+/*! Semanic UI styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+
+(function( factory ){
+ if ( typeof define === 'function' && define.amd ) {
+ // AMD
+ define( ['jquery', 'datatables.net-se', 'datatables.net-select'], function ( $ ) {
+ return factory( $, window, document );
+ } );
+ }
+ else if ( typeof exports === 'object' ) {
+ // CommonJS
+ var jq = require('jquery');
+ var cjsRequires = function (root, $) {
+ if ( ! $.fn.dataTable ) {
+ require('datatables.net-se')(root, $);
+ }
+
+ if ( ! $.fn.dataTable.select ) {
+ require('datatables.net-select')(root, $);
+ }
+ };
+
+ if (typeof window !== 'undefined') {
+ module.exports = function (root, $) {
+ if ( ! root ) {
+ // CommonJS environments without a window global must pass a
+ // root. This will give an error otherwise
+ root = window;
+ }
+
+ if ( ! $ ) {
+ $ = jq( root );
+ }
+
+ cjsRequires( root, $ );
+ return factory( $, root, root.document );
+ };
+ }
+ else {
+ cjsRequires( window, jq );
+ module.exports = factory( jq, window, window.document );
+ }
+ }
+ else {
+ // Browser
+ factory( jQuery, window, document );
+ }
+}(function( $, window, document, undefined ) {
+'use strict';
+var DataTable = $.fn.dataTable;
+
+
+
+
+return DataTable;
+}));
diff --git a/public/assets/js/DataTables/Select-1.6.2/js/select.semanticui.min.js b/public/assets/js/DataTables/Select-1.6.2/js/select.semanticui.min.js
new file mode 100644
index 0000000..5ee404b
--- /dev/null
+++ b/public/assets/js/DataTables/Select-1.6.2/js/select.semanticui.min.js
@@ -0,0 +1,4 @@
+/*! Semanic UI styling wrapper for Select
+ * © SpryMedia Ltd - datatables.net/license
+ */
+!function(n){var d,o;"function"==typeof define&&define.amd?define(["jquery","datatables.net-se","datatables.net-select"],function(e){return n(e,window,document)}):"object"==typeof exports?(d=require("jquery"),o=function(e,t){t.fn.dataTable||require("datatables.net-se")(e,t),t.fn.dataTable.select||require("datatables.net-select")(e,t)},"undefined"!=typeof window?module.exports=function(e,t){return e=e||window,t=t||d(e),o(e,t),n(t,0,e.document)}:(o(window,d),module.exports=n(d,window,window.document))):n(jQuery,window,document)}(function(e,t,n,d){"use strict";return e.fn.dataTable}); \ No newline at end of file