From c54051335a258a50863ba0cadced10e84e114249 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Wed, 16 Aug 2017 15:32:42 +0200
Subject: [PATCH] modal edit window caused unexpected problems

---
 .../main/js/gui/admin/EditProjectDialog.js    |  4 ---
 .../src/main/js/gui/admin/MapsAdminPanel.js   | 30 +++++++++++++++----
 2 files changed, 24 insertions(+), 10 deletions(-)

diff --git a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js
index da8a57fb20..0fdb83742b 100644
--- a/frontend-js/src/main/js/gui/admin/EditProjectDialog.js
+++ b/frontend-js/src/main/js/gui/admin/EditProjectDialog.js
@@ -373,10 +373,6 @@ EditProjectDialog.prototype.open = function() {
       title : self.getProject().getProjectId(),
       width : window.innerWidth / 2,
       height : window.innerHeight / 2,
-      modal : true,
-      close : function(event, ui) {
-        $(this).dialog('destroy').remove();
-      },
     });
   }
   $(div).dialog("open");
diff --git a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
index c956c68be3..c57b920340 100644
--- a/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
+++ b/frontend-js/src/main/js/gui/admin/MapsAdminPanel.js
@@ -205,10 +205,13 @@ MapsAdminPanel.prototype.onRefreshClicked = function() {
   });
 };
 
-MapsAdminPanel.prototype.showEditDialog = function(id) {
-  GuiConnector.showProcessing();
-  var dialog;
-  return ServerConnector.getProject(id).then(function(project) {
+MapsAdminPanel.prototype.getDialog = function(project) {
+  var self = this;
+  if (self._dialogs === undefined) {
+    self._dialogs = [];
+  }
+  var dialog = self._dialogs[project.getProjectId()];
+  if (dialog === undefined) {
     dialog = new EditProjectDialog({
       element : Functions.createElement({
         type : "div"
@@ -216,8 +219,23 @@ MapsAdminPanel.prototype.showEditDialog = function(id) {
       project : project,
       customMap : null,
     });
-    return dialog.init();
-  }).then(function() {
+    self._dialogs[project.getProjectId()] = dialog;
+    return dialog.init().then(function() {
+      return dialog;
+    });
+  } else {
+    return Promise.resolve(dialog);
+  }
+};
+
+MapsAdminPanel.prototype.showEditDialog = function(id) {
+  var self = this;
+  GuiConnector.showProcessing();
+  var dialog;
+  return ServerConnector.getProject(id).then(function(project) {
+    return self.getDialog(project);
+  }).then(function(dialog) {
+
     dialog.open();
     GuiConnector.hideProcessing();
   }).then(null, function(error) {
-- 
GitLab