From 5c34dce06de917f7635b836ccf8c37e3e0f9112c Mon Sep 17 00:00:00 2001
From: sherzinger <sascha.herzinger@uni.lu>
Date: Fri, 18 Jan 2019 10:12:47 +0100
Subject: [PATCH] fixed an issue where the dialog was only opened once

---
 frontend-js/src/main/js/GuiConnector.js | 130 ++++++++++++------------
 1 file changed, 66 insertions(+), 64 deletions(-)

diff --git a/frontend-js/src/main/js/GuiConnector.js b/frontend-js/src/main/js/GuiConnector.js
index 92cde283cf..7705a2399e 100644
--- a/frontend-js/src/main/js/GuiConnector.js
+++ b/frontend-js/src/main/js/GuiConnector.js
@@ -293,73 +293,75 @@ GuiConnector.prototype.alert = function (error, redirectIfSecurityError) {
   } else {
     var self = returnThisOrSingleton(this);
     logger.error(error);
-    if (self._errorDialog === undefined) {
-      var errorData = self.getErrorMessageForError(error);
-      var message = errorData.message;
-      var stacktrace = {
-        value: errorData.stack,
-        tooltip: 'The error stacktrace. The sequence of events that triggered this particular error.'
-      };
-      self._errorDialog = document.createElement('div');
-      self._errorDialog.innerHTML = '<span class="ui-icon ui-icon-info" style="float: right;" title="The error message. This might not be human readable. If this issue persists you should should contact your administrator."></span>' +
-          '<span>' + message + '</span>';
-      self.gatherReportData().then(function (data) {
-        self._errorDialog.innerHTML += '<p class="report-dialog-warning">If you agree to submit the following information to the Minerva maintainers please uncheck all boxes that might contain sensitive data.</p>';
-        self._errorDialogData = document.createElement('div');
-        self._errorDialog.appendChild(self._errorDialogData);
-        self._errorDialogData.innerHTML += '<textarea class="report-comment" placeholder="Add comment..."></textarea>';
-        Object.keys(data).forEach(function (key) {
-          self._errorDialogData.innerHTML += '<label>' +
-              data[key].value +
-              '<input class="report-check" type="checkbox" data-key="' + key + '" data-value="' + data[key].value + '"/>' +
-              '<span class="ui-icon ui-icon-info" title="' + data[key].tooltip + '"></span>' +
-              '</label>';
-        });
-        if (typeof stacktrace.value !== 'undefined') {
-            self._errorDialogData.innerHTML += '<div id="report-stacktrace">' +
-                '<h3>Stacktrace<span class="ui-icon ui-icon-info" title="' + stacktrace.tooltip + '"></span></h3>' +
-                '<div><p>' + stacktrace.value + '</p></div>' +
-                '</div>';
-            $('#report-stacktrace')
-                .accordion({active: false, collapsible: true});
-        }
-        $('.report-check')
-            .checkboxradio()
-            .prop('checked', true)
-            .button('refresh');
-        $(self._errorDialogData)
-            .controlgroup({direction: 'vertical'});
-        $(self._errorDialog)
-            .tooltip();
+
+    var errorData = self.getErrorMessageForError(error);
+    var message = errorData.message;
+    var stacktrace = {
+      value: errorData.stack,
+      tooltip: 'The error stacktrace. The sequence of events that triggered this particular error.'
+    };
+    self._errorDialog = document.createElement('div');
+    self._errorDialog.innerHTML = '<span class="ui-icon ui-icon-info" style="float: right;" title="The error message. This might not be human readable. If this issue persists you should should contact your administrator."></span>' +
+      '<span>' + message + '</span>';
+    self.gatherReportData().then(function (data) {
+      self._errorDialog.innerHTML += '<p class="report-dialog-warning">If you agree to submit the following information to the Minerva maintainers please uncheck all boxes that might contain sensitive data.</p>';
+      self._errorDialogData = document.createElement('div');
+      self._errorDialog.appendChild(self._errorDialogData);
+      self._errorDialogData.innerHTML += '<textarea id="report-comment" placeholder="Add comment..."></textarea>';
+      Object.keys(data).forEach(function (key) {
+        self._errorDialogData.innerHTML += '<label>' +
+          data[key].value +
+          '<input class="report-check" type="checkbox" data-key="' + key + '" data-value="' + data[key].value + '"/>' +
+          '<span class="ui-icon ui-icon-info" title="' + data[key].tooltip + '"></span>' +
+          '</label>';
       });
-      document.body.appendChild(self._errorDialog);
-      $(self._errorDialog).dialog({
-        classes: {'ui-dialog': 'report-dialog'},
-        title: 'An error occurred!',
-        resizable: true,
-        height: 'auto',
-        width: '500px',
-        modal: true,
-        buttons: {
-          'Submit': function () {
-            var report = {stacktrace: stacktrace.value};
-            $('.report-check').each(function () {
-              var check = $(this);
-              if (check.is(':checked')) {
-                report[check.attr('data-key')] = check.attr('data-value');
-              }
-            });
-            ServerConnector.submitErrorToMinervaNet(report);
-            $(this).dialog('close');
-          },
-          'Cancel': function () {
-            $(this).dialog('close');
-          }
+      if (typeof stacktrace.value !== 'undefined') {
+        self._errorDialogData.innerHTML += '<div id="report-stacktrace">' +
+          '<h3>Stacktrace<span class="ui-icon ui-icon-info" title="' + stacktrace.tooltip + '"></span></h3>' +
+          '<div><p>' + stacktrace.value + '</p></div>' +
+          '</div>';
+        $('#report-stacktrace')
+          .accordion({active: false, collapsible: true});
+      }
+      $('.report-check')
+        .checkboxradio()
+        .prop('checked', true)
+        .button('refresh');
+      $(self._errorDialogData)
+        .controlgroup({direction: 'vertical'});
+      $(self._errorDialog)
+        .tooltip();
+    });
+    document.body.appendChild(self._errorDialog);
+    $(self._errorDialog).dialog({
+      classes: {'ui-dialog': 'report-dialog'},
+      title: 'An error occurred!',
+      resizable: true,
+      height: 'auto',
+      width: '500px',
+      modal: true,
+      buttons: {
+        'Submit': function () {
+          var report = {
+            stacktrace: stacktrace.value,
+            comment: $('#report-comment').val()
+          };
+          $('.report-check').each(function () {
+            var check = $(this);
+            if (check.is(':checked')) {
+              report[check.attr('data-key')] = check.attr('data-value');
+            }
+          });
+          ServerConnector.submitErrorToMinervaNet(report);
+          $(this).dialog('destroy').remove();
+        },
+        'Cancel': function () {
+          $(this).dialog('destroy').remove();
         }
-      }).dialog("open");
-    }
-
+      }
+    }).dialog("open");
   }
+
 };
 
 /**
-- 
GitLab