From 5b2ef9e2e3e1489e5b214f0293d94155cff76974 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Thu, 2 Aug 2018 17:36:57 +0200 Subject: [PATCH] lost promise is back in the flow --- frontend-js/src/main/css/global.css | 2 +- .../main/js/gui/admin/AbstractAdminPanel.js | 11 +++++- .../js/gui/admin/ConfigurationAdminPanel.js | 38 +++++++++++-------- 3 files changed, 32 insertions(+), 19 deletions(-) diff --git a/frontend-js/src/main/css/global.css b/frontend-js/src/main/css/global.css index feb97f677a..7acaa90659 100644 --- a/frontend-js/src/main/css/global.css +++ b/frontend-js/src/main/css/global.css @@ -522,7 +522,7 @@ h1 { font-weight: 400; } -.minerva-projects-tab, .minerva-users-tab, .minerva-configuration-tab, .minerva-genome-tab { +.minerva-projects-tab, .minerva-users-tab, .minerva-configuration-tab .tab-pane, .minerva-genome-tab { margin-left: 10px; margin-top: 10px; } diff --git a/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js b/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js index 6d0c3434a8..fd6ec59613 100644 --- a/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js +++ b/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js @@ -50,6 +50,7 @@ AbstractAdminPanel.prototype._createHeader = function (name) { * @returns {Promise} */ AbstractAdminPanel.prototype.init = function () { + this._initialized = true; return Promise.all(this._initPromises); }; @@ -77,12 +78,18 @@ AbstractAdminPanel.prototype.bindUserGuiPreference = function (params) { } }).catch(GuiConnector.alert); }); - this._initPromises.push(ServerConnector.getLoggedUser().then(function (user) { + var promise = ServerConnector.getLoggedUser().then(function (user) { var value = user.getPreferences().getGuiPreference(params.preferenceName, params.defaultValue); return params.setter(value); - })); + }); this._eventBinds.push(params); + if (!this._initialized) { + this._initPromises.push(promise); + } else { + return promise; + } + }; /** diff --git a/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js b/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js index 425efcb4bc..1d0a6c1c4d 100644 --- a/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js +++ b/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js @@ -112,18 +112,6 @@ ConfigurationAdminPanel.prototype.createOptionsTable = function (options, type) }], order: [[1, "asc"]] }); - self.bindUserGuiPreference({ - jQueryObject: $(configurationTable), - event: 'length.dt', - preferenceName: 'admin-configuration-datatable-length', - defaultValue: '10', - getter: function () { - return $(configurationTable).DataTable().page.len() + ''; - }, - setter: function (value) { - return $(configurationTable).DataTable().page.len(value).draw(); - } - }); var data = []; @@ -138,6 +126,19 @@ ConfigurationAdminPanel.prototype.createOptionsTable = function (options, type) dataTable.clear().rows.add(data).draw(); self.getGuiUtils().addTab(self, {name: type, content: configurationDiv}); + + return self.bindUserGuiPreference({ + jQueryObject: $(configurationTable), + event: 'length.dt', + preferenceName: 'admin-configuration-datatable-length', + defaultValue: '10', + getter: function () { + return $(configurationTable).DataTable().page.len() + ''; + }, + setter: function (value) { + return $(configurationTable).DataTable().page.len(value).draw(); + } + }); }; /** @@ -146,35 +147,40 @@ ConfigurationAdminPanel.prototype.createOptionsTable = function (options, type) */ ConfigurationAdminPanel.prototype.init = function () { var self = this; - return self.getServerConnector().getLoggedUser().then(function (user) { + return AbstractAdminPanel.prototype.init.call(this).then(function () { + return self.getServerConnector().getLoggedUser(); + }).then(function (user) { var configuration = self.getConfiguration(); var privilege = configuration.getPrivilegeType(PrivilegeType.CONFIGURATION_MANAGE); if (user.hasPrivilege(privilege)) { - self.setOptions(configuration.getOptions()); + return self.setOptions(configuration.getOptions()); } else { self.disablePanel("You have no privilege to manage configuration"); } - }).then(function(){ }); }; /** * * @param {ConfigurationOption[]} options + * + * @returns {Promise} */ ConfigurationAdminPanel.prototype.setOptions = function (options) { var self = this; var categories = {"": true}; + var promises = []; for (var i = 0; i < options.length; i++) { var option = options[i]; var group = option.getGroup(); if (categories[group] === undefined && group !== undefined) { categories[group] = true; - self.createOptionsTable(options, group); + promises.push(self.createOptionsTable(options, group)); } } + return Promise.all(promises); }; /** -- GitLab