From 4f3bb3e2a07b8977de808403defe1569bab10ea1 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Tue, 5 Nov 2019 10:11:20 +0100
Subject: [PATCH] common functionality exrtacted to separate method

---
 .../main/js/gui/admin/AbstractAdminPanel.js   | 25 +++++++++++++++++++
 .../js/gui/admin/ConfigurationAdminPanel.js   | 14 +++--------
 .../src/main/js/gui/admin/GenomeAdminPanel.js | 14 +++--------
 .../src/main/js/gui/admin/MapsAdminPanel.js   | 18 ++++---------
 .../src/main/js/gui/admin/PluginAdminPanel.js | 14 +++--------
 .../src/main/js/gui/admin/UsersAdminPanel.js  | 14 +++--------
 6 files changed, 42 insertions(+), 57 deletions(-)

diff --git a/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js b/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js
index b7a15daccb..eafd327e11 100644
--- a/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/AbstractAdminPanel.js
@@ -1,5 +1,7 @@
 "use strict";
 
+var $ = require('jquery');
+
 /* exported logger */
 /* exported Promise*/
 
@@ -85,6 +87,29 @@ AbstractAdminPanel.prototype.bindUserGuiPreference = function (params) {
 
 };
 
+/**
+ *
+ * @param {Object} param
+ * @param {HTMLElement} param.element
+ * @param {string} param.preferenceName
+ */
+AbstractAdminPanel.prototype.bindDataTablePageLengthToUserPreference = function (param) {
+  var jQueryObject = $(param.element);
+  return this.bindUserGuiPreference({
+    jQueryObject: jQueryObject,
+    event: 'length.dt',
+    preferenceName: param.preferenceName,
+    defaultValue: '10',
+    getter: function () {
+      return jQueryObject.DataTable().page.len() + '';
+    },
+    setter: function (value) {
+      return jQueryObject.DataTable().page.len(value).draw();
+    }
+  })
+};
+
+
 /**
  *
  * @returns {Promise}
diff --git a/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js b/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js
index 58752e135c..8bd3770e96 100644
--- a/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/ConfigurationAdminPanel.js
@@ -141,17 +141,9 @@ ConfigurationAdminPanel.prototype.createOptionsTable = function (options, type)
 
   self.getGuiUtils().addTab(self, {name: type, content: configurationDiv});
 
-  return Promise.all([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();
-    }
+  return Promise.all([self.bindDataTablePageLengthToUserPreference({
+    element: configurationTable,
+    preferenceName: 'admin-configuration-datatable-length'
   }), self.bindUserGuiPreference({
     jQueryObject: $(configurationTable),
     event: 'order.dt',
diff --git a/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js b/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js
index e9c7256370..f2f57eb863 100644
--- a/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/GenomeAdminPanel.js
@@ -90,17 +90,9 @@ GenomeAdminPanel.prototype._createGui = function () {
     }],
     order: [[1, "asc"], [4, "asc"]]
   });
-  self.bindUserGuiPreference({
-    jQueryObject: $(genomesTable),
-    event: 'length.dt',
-    preferenceName: 'admin-genome-datatable-length',
-    defaultValue: '10',
-    getter: function () {
-      return $(genomesTable).DataTable().page.len() + '';
-    },
-    setter: function (value) {
-      return $(genomesTable).DataTable().page.len(value).draw();
-    }
+  self.bindDataTablePageLengthToUserPreference({
+    element: genomesTable,
+    preferenceName: 'admin-genome-datatable-length'
   });
 
   $(genomesTable).on("click", "[name='removeGenome']", function () {
diff --git a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
index 89dd2ebe50..80e60bbc8a 100644
--- a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
@@ -142,22 +142,14 @@ MapsAdminPanel.prototype._createProjectTableRow = function () {
     }, {
       title: 'Remove'
     }],
-    order: [[ 0, "asc" ]],
+    order: [[0, "asc"]],
     columnDefs: [
       {"orderable": false, "targets": [7, 8]}
     ]
   });
-  self.bindUserGuiPreference({
-    jQueryObject: $(projectsTable),
-    event: 'length.dt',
-    preferenceName: 'admin-projects-datatable-length',
-    defaultValue: '10',
-    getter: function () {
-      return $(projectsTable).DataTable().page.len() + '';
-    },
-    setter: function (value) {
-      return $(projectsTable).DataTable().page.len(value).draw();
-    }
+  self.bindDataTablePageLengthToUserPreference({
+    element: projectsTable,
+    preferenceName: 'admin-projects-datatable-length'
   });
 
   $(projectsTable).on("click", "[name='removeProject']", function () {
@@ -191,7 +183,7 @@ MapsAdminPanel.prototype._createProjectTableRow = function () {
  */
 MapsAdminPanel.prototype.init = function () {
   var self = this;
-  return AbstractAdminPanel.prototype.init.call(self).then(function() {
+  return AbstractAdminPanel.prototype.init.call(self).then(function () {
     return self.getServerConnector().getProjects();
   }).then(function (projects) {
     return self.setProjects(projects);
diff --git a/frontend-js/src/main/js/gui/admin/PluginAdminPanel.js b/frontend-js/src/main/js/gui/admin/PluginAdminPanel.js
index 82e6b0dacb..57dbefbbd6 100644
--- a/frontend-js/src/main/js/gui/admin/PluginAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/PluginAdminPanel.js
@@ -69,17 +69,9 @@ PluginAdminPanel.prototype._createGui = function () {
     }],
     order: [[1, "asc"]]
   });
-  self.bindUserGuiPreference({
-    jQueryObject: $(pluginsTable),
-    event: 'length.dt',
-    preferenceName: 'admin-plugins-datatable-length',
-    defaultValue: '10',
-    getter: function () {
-      return $(pluginsTable).DataTable().page.len() + '';
-    },
-    setter: function (value) {
-      return $(pluginsTable).DataTable().page.len(value).draw();
-    }
+  self.bindDataTablePageLengthToUserPreference({
+    element: pluginsTable,
+    preferenceName: 'admin-plugins-datatable-length'
   });
 
   $(pluginsTable).on("click", "[name='removePlugin']", function () {
diff --git a/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js b/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
index 34bc6cec1f..4d82ff4b55 100644
--- a/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/UsersAdminPanel.js
@@ -137,17 +137,9 @@ UsersAdminPanel.prototype._createUsersTableRow = function () {
     ]
   });
 
-  self.bindUserGuiPreference({
-    jQueryObject: $(usersTable),
-    event: 'length.dt',
-    preferenceName: 'admin-users-datatable-length',
-    defaultValue: '10',
-    getter: function () {
-      return $(usersTable).DataTable().page.len() + '';
-    },
-    setter: function (value) {
-      return $(usersTable).DataTable().page.len(value).draw();
-    }
+  self.bindDataTablePageLengthToUserPreference({
+    element: usersTable,
+    preferenceName: 'admin-users-datatable-length'
   });
 
   $(usersTable).on("click", "[name='removeUser']", function () {
-- 
GitLab