aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--uploader/static/js/datatables.js60
-rw-r--r--uploader/static/js/populations.js33
-rw-r--r--uploader/static/js/species.js32
-rw-r--r--uploader/templates/base.html7
-rw-r--r--uploader/templates/phenotypes/view-dataset.html38
5 files changed, 102 insertions, 68 deletions
diff --git a/uploader/static/js/datatables.js b/uploader/static/js/datatables.js
index 8d54a84..9782a60 100644
--- a/uploader/static/js/datatables.js
+++ b/uploader/static/js/datatables.js
@@ -54,4 +54,62 @@ var dtAddRowClickHandler = (tableId) => {
var dtAddCommonHandlers = (tableId) => {
dtAddRowSelectionHandler(tableId);
dtAddRowClickHandler(tableId);
-}
+};
+
+var addTableLength = (menuList, lengthToAdd, dataLength) => {
+ if(dataLength >= lengthToAdd) {
+ newList = structuredClone(menuList);//menuList.slice(0, menuList.length); // shallow copy
+ newList.push(lengthToAdd);
+ return newList;
+ }
+ return menuList;
+};
+
+var defaultLengthMenu = (data) => {
+ menuList = []
+ var lengths = [10, 25, 50, 100, 1000, data.length];
+ lengths.forEach((len) => {
+ menuList = addTableLength(menuList, len, data.length);
+ });
+ return menuList;
+};
+
+var buildDataTable = (tableId, data = [], columns = [], userSettings = {}) => {
+ var defaultSettings = {
+ responsive: true,
+ /* == Scroller settings == */
+ scroller: true,
+ paging: true, // MUST be true for scroller to work
+ sDom: "iti",
+ scrollY: "100vh",
+ scrollCollapse: true,
+ /* == END: Scroller settings == */
+ lengthMenu: defaultLengthMenu(data),
+ language: {
+ processing: "Processing… Please wait.",
+ loadingRecords: "Loading population — Please wait.",
+ lengthMenu: "Show _MENU_ populations",
+ info: "Showing _START_ to _END_ of _TOTAL_ populations"
+ },
+ data: data,
+ columns: columns,
+ drawCallback: (settings) => {
+ $(this[0]).find("tbody tr").each((idx, row) => {
+ var arow = $(row);
+ var checkboxOrRadio = arow.find(".chk-row-select");
+ if (checkboxOrRadio) {
+ if (arow.hasClass("selected")) {
+ checkboxOrRadio.prop("checked", true);
+ } else {
+ checkboxOrRadio.prop("checked", false);
+ }
+ }
+ });
+ }
+ }
+ var theDataTable = $(tableId).DataTable({
+ ...defaultSettings,
+ ...userSettings
+ });
+ return theDataTable;
+};
diff --git a/uploader/static/js/populations.js b/uploader/static/js/populations.js
index 5c1f848..73e298a 100644
--- a/uploader/static/js/populations.js
+++ b/uploader/static/js/populations.js
@@ -1,19 +1,10 @@
-var populationDataTable = (populationdata) => {
- var lengthMenu = [10, 25, 50, 100, 1000];
- if(populationdata.length > 1000) {
- lengthMenu.push(populationdata.length)
- }
- $("#tbl-select-population").DataTable({
- responsive: true,
- lengthMenu: lengthMenu,
- language: {
- processing: "Processing… Please wait.",
- loadingRecords: "Loading population — Please wait.",
- lengthMenu: "Show _MENU_ populations",
- info: "Showing _START_ to _END_ of _TOTAL_ populations"
- },
- data: populationdata,
- columns: [
+$(() => {
+ dtAddCommonHandlers("#tbl-select-population");
+ var populationsDataTable = buildDataTable(
+ "#tbl-select-population",
+ JSON.parse(
+ $("#tbl-select-population").attr("data-populations-list")),
+ [
{
data: (apopulation) => {
return `<input type="radio" name="population_id"`
@@ -27,13 +18,5 @@ var populationDataTable = (populationdata) => {
return `${apopulation.FullName} (${apopulation.InbredSetName})`;
}
}
- ]
- });
-};
-
-
-$(() => {
- dtAddCommonHandlers("#tbl-select-population");
- populationDataTable(JSON.parse(
- $("#tbl-select-population").attr("data-populations-list")));
+ ]);
});
diff --git a/uploader/static/js/species.js b/uploader/static/js/species.js
index 1f2aa3b..c1374c6 100644
--- a/uploader/static/js/species.js
+++ b/uploader/static/js/species.js
@@ -1,19 +1,10 @@
-var speciesDataTable = (speciesdata) => {
- var lengthMenu = [10, 25, 50, 100, 1000];
- if(speciesdata.length > 1000) {
- lengthMenu.push(speciesdata.length)
- }
- $("#tbl-select-species").DataTable({
- responsive: true,
- lengthMenu: lengthMenu,
- language: {
- processing: "Processing… Please wait.",
- loadingRecords: "Loading species — Please wait.",
- lengthMenu: "Show _MENU_ species",
- info: "Showing _START_ to _END_ of _TOTAL_ species"
- },
- data: speciesdata,
- columns: [
+$(() => {
+ dtAddCommonHandlers("#tbl-select-species");
+ var speciesDataTable = buildDataTable(
+ "#tbl-select-species",
+ JSON.parse(
+ $("#tbl-select-species").attr("data-species-list")),
+ [
{
data: (aspecies) => {
return `<input type="radio" name="species_id"`
@@ -26,12 +17,5 @@ var speciesDataTable = (speciesdata) => {
return `${aspecies.FullName} (${aspecies.SpeciesName})`;
}
}
- ]
- });
-};
-
-$(() => {
- dtAddCommonHandlers("#tbl-select-species");
- speciesDataTable(JSON.parse(
- $("#tbl-select-species").attr("data-species-list")));
+ ]);
});
diff --git a/uploader/templates/base.html b/uploader/templates/base.html
index dd97f5e..c9a75ad 100644
--- a/uploader/templates/base.html
+++ b/uploader/templates/base.html
@@ -132,11 +132,8 @@
filename='js/bootstrap.min.js')}}"></script>
<script type="text/javascript" src="/static/js/misc.js"></script>
<script type="text/javascript"
- src="{{url_for('base.datatables',
- filename='js/jquery.dataTables.js')}}"></script>
- <script type="text/javascript"
- src="{{url_for('base.datatables_extensions',
- filename='select/js/dataTables.select.min.js')}}"></script>
+ src="{{url_for('base.datatables',
+ filename='js/jquery.dataTables.js')}}"></script>
<script type="text/javascript"
src="{{url_for('base.datatables_extensions',
filename='scroller/js/dataTables.scroller.min.js')}}"></script>
diff --git a/uploader/templates/phenotypes/view-dataset.html b/uploader/templates/phenotypes/view-dataset.html
index 38a4d11..f171483 100644
--- a/uploader/templates/phenotypes/view-dataset.html
+++ b/uploader/templates/phenotypes/view-dataset.html
@@ -96,17 +96,10 @@
dtAddCommonHandlers("#tbl-phenotypes-list");
var data = {{phenotypes | tojson}};
- $("#tbl-phenotypes-list").DataTable({
- responsive: true,
- lengthMenu: [10, 25, 50, 100, 1000, data.length],
- language: {
- processing: "Processing results… Please wait.",
- loadingRecord: "Loading phenotypes — Please wait.",
- info: "_START_ to _END_ of _TOTAL_ phenotypes",
- lengthMenu: "Show _MENU_ phenotypes",
- },
- data: data,
- columns: [
+ var dtPhenotypesList = buildDataTable(
+ "#tbl-phenotypes-list",
+ data,
+ [
{
data: function(pheno) {
return `<input type="checkbox" name="selected-phenotypes" `
@@ -117,7 +110,7 @@
},
{data: "sequence_number"},
{
- data: function(pheno) {
+ data: function(pheno, type, set, meta) {
var spcs_id = {{species.SpeciesId}};
var pop_id = {{population.Id}};
var dtst_id = {{dataset.Id}};
@@ -137,7 +130,26 @@
pheno.Pre_publication_description);
}
}
- ]
+ ],
+ {
+ // select: true, // extension is causing trouble.
+ rowId: function(pheno) {
+ return `${pheno.InbredSetCode}_${pheno.xref_id}`;
+ }
+ });
+
+ $("#btn-phenotypes-list-select-all").on("click", (event) => {
+ dtPhenotypesList.rows().select();
+ dtPhenotypesList.rows().nodes().each((node, idx) => {
+ $(node).find(".chk-row-select").prop("checked", true);
+ });
+ });
+
+ $("#btn-phenotypes-list-deselect-all").on("click", (event) => {
+ dtPhenotypesList.rows().deselect();
+ dtPhenotypesList.rows().nodes().each((node, idx) => {
+ $(node).find(".chk-row-select").prop("checked", false);
+ });
});
});
</script>