diff --git a/CHANGELOG b/CHANGELOG index cd0d0115d5a4e3194d4ab7b13624c823249e5508..494b81d535191f26552aa8780a2d881648da6626 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +minerva (15.0.0~alpha.1) stable; urgency=medium + * Small improvement: sort order of tables in admin panel is preserved among + sessions (#836) + minerva (15.0.0~alpha.0) stable; urgency=medium * Improvement: logs provided for validation data model are structurized (#325) * Improvement: import/export of GPML implemented @@ -19,6 +23,8 @@ minerva (15.0.0~alpha.0) stable; urgency=medium file (#671) * Bug fix: problematic notes doesn't crash CellDesigner upload (#968) + -- Piotr Gawron <piotr.gawron@uni.lu> Wed, 4 Nov 2019 11:00:00 +0200 + minerva (14.0.3) stable; urgency=medium * Bug fix: default zoom level on main map works even when x or y are undefined (#993) diff --git a/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js b/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js index bebc8f95f6b81b0bb3d5c911dd1a2b7cb585a789..58752e135caa6bd6472aacef9c4bf4799425889c 100644 --- a/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js +++ b/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js @@ -141,7 +141,7 @@ ConfigurationAdminPanel.prototype.createOptionsTable = function (options, type) self.getGuiUtils().addTab(self, {name: type, content: configurationDiv}); - return self.bindUserGuiPreference({ + return Promise.all([self.bindUserGuiPreference({ jQueryObject: $(configurationTable), event: 'length.dt', preferenceName: 'admin-configuration-datatable-length', @@ -152,7 +152,26 @@ ConfigurationAdminPanel.prototype.createOptionsTable = function (options, type) setter: function (value) { return $(configurationTable).DataTable().page.len(value).draw(); } - }); + }), self.bindUserGuiPreference({ + jQueryObject: $(configurationTable), + event: 'order.dt', + preferenceName: 'admin-configuration-' + type + '-datatable-order', + defaultValue: '0-asc', + getter: function () { + var order = $(configurationTable).DataTable().order(); + return order[0][0] + "-" + order[0][1]; + }, + setter: function (value) { + var tmp = value.split("-"); + var column = parseInt(tmp[0]); + var order = tmp[1]; + if (Functions.isInt(column) && (order === "asc" || order === "desc")) { + return $(configurationTable).DataTable().order([column, order]).draw(); + } else { + logger.warn("Invalid order: " + column + "; " + order); + } + } + })]); }; /** diff --git a/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js b/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js index 5aacb3a37a9dd97ed5cd599ad3ef519596076d9f..e9c725637036de01df906a0b67b61992af86d43f 100644 --- a/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js +++ b/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js @@ -177,6 +177,30 @@ GenomeAdminPanel.prototype.init = function () { } else { self.disablePanel("You have no privilege to manage genomes"); } + + }).then(function () { + var genomesTable = $("[name='genomeTable']", self.getElement())[0]; + + return self.bindUserGuiPreference({ + jQueryObject: $(genomesTable), + event: 'order.dt', + preferenceName: 'admin-genome-datatable-order', + defaultValue: '0-asc', + getter: function () { + var order = $(genomesTable).DataTable().order(); + return order[0][0] + "-" + order[0][1]; + }, + setter: function (value) { + var tmp = value.split("-"); + var column = parseInt(tmp[0]); + var order = tmp[1]; + if (Functions.isInt(column) && (order === "asc" || order === "desc")) { + return $(genomesTable).DataTable().order([column, order]).draw(); + } else { + logger.warn("Invalid order: " + column + "; " + order); + } + } + }); }); }; @@ -267,7 +291,7 @@ GenomeAdminPanel.prototype.destroy = function () { /** * * @param {ReferenceGenome} [genome] - * @returns {Promise} + * @returns {Promise<EditGenomeDialog>} */ GenomeAdminPanel.prototype.getDialog = function (genome) { var self = this; diff --git a/frontend-js/src/main/js/gui/admin/PluginAdminPanel.js b/frontend-js/src/main/js/gui/admin/PluginAdminPanel.js index 02103ff2ba143463aafddca5f5faaaa9b316cf35..82e6b0dacbbadf75a20174a3c0911fa07677b2f1 100644 --- a/frontend-js/src/main/js/gui/admin/PluginAdminPanel.js +++ b/frontend-js/src/main/js/gui/admin/PluginAdminPanel.js @@ -150,6 +150,29 @@ PluginAdminPanel.prototype.init = function () { } else { self.disablePanel("You have no privilege to manage plugins"); } + }).then(function () { + var pluginsTable = $("[name='pluginsTable']", self.getElement())[0]; + + return self.bindUserGuiPreference({ + jQueryObject: $(pluginsTable), + event: 'order.dt', + preferenceName: 'admin-plugins-datatable-order', + defaultValue: '0-asc', + getter: function () { + var order = $(pluginsTable).DataTable().order(); + return order[0][0] + "-" + order[0][1]; + }, + setter: function (value) { + var tmp = value.split("-"); + var column = parseInt(tmp[0]); + var order = tmp[1]; + if (Functions.isInt(column) && (order === "asc" || order === "desc")) { + return $(pluginsTable).DataTable().order([column, order]).draw(); + } else { + logger.warn("Invalid order: " + column + "; " + order); + } + } + }); }); }; diff --git a/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js b/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js index 03f58b48837f8825699a62388270a45e7463eea0..34bc6cec1f9cec1559788f77be3c54c746343119 100644 --- a/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js +++ b/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js @@ -265,6 +265,30 @@ UsersAdminPanel.prototype.init = function () { } else { self.disablePanel("You have no privilege to manage users"); } + + }).then(function () { + var usersTable = $("[name='usersTable']", self.getElement())[0]; + + return self.bindUserGuiPreference({ + jQueryObject: $(usersTable), + event: 'order.dt', + preferenceName: 'admin-users-datatable-order', + defaultValue: '0-asc', + getter: function () { + var order = $(usersTable).DataTable().order(); + return order[0][0] + "-" + order[0][1]; + }, + setter: function (value) { + var tmp = value.split("-"); + var column = parseInt(tmp[0]); + var order = tmp[1]; + if (Functions.isInt(column) && (order === "asc" || order === "desc")) { + return $(usersTable).DataTable().order([column, order]).draw(); + } else { + logger.warn("Invalid order: " + column + "; " + order); + } + } + }); }); };