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