From f01d409f4a5b1db17463ec3a10feb2401828bf3f Mon Sep 17 00:00:00 2001 From: guerler Date: Mon, 9 Mar 2020 17:47:09 -0400 Subject: [PATCH 1/6] Revise dataset error reporting page, remove email option, remove long help text --- .../scripts/mvc/dataset/dataset-error.js | 81 +++++-------------- 1 file changed, 21 insertions(+), 60 deletions(-) diff --git a/client/galaxy/scripts/mvc/dataset/dataset-error.js b/client/galaxy/scripts/mvc/dataset/dataset-error.js index efb2af6a857..63d2caffbe4 100644 --- a/client/galaxy/scripts/mvc/dataset/dataset-error.js +++ b/client/galaxy/scripts/mvc/dataset/dataset-error.js @@ -23,7 +23,6 @@ var View = Backbone.View.extend({ // Fetch data for the selected dataset and render: function() { var data_url = `${getAppRoot()}api/datasets/${this.model.get("dataset_id")}`; - Utils.get({ url: data_url, success: dataset => { @@ -34,7 +33,7 @@ var View = Backbone.View.extend({ this.render_error_page(dataset, job); this.find_common_problems(job); }, - error: response => { + error: () => { var error_response = { status: "error", message: "Error occurred while loading the job.", @@ -45,7 +44,7 @@ var View = Backbone.View.extend({ } }); }, - error: response => { + error: () => { var error_response = { status: "error", message: "Error occurred while loading the dataset.", @@ -62,7 +61,7 @@ var View = Backbone.View.extend({ Utils.get({ url: job_url, success: common_problems => { - this.render_common_problems(job, common_problems); + this.render_common_problems(common_problems); }, error: response => { console.log("error"); @@ -72,7 +71,7 @@ var View = Backbone.View.extend({ return; }, - render_common_problems: function(job, common_problems) { + render_common_problems: function(common_problems) { const has_duplicate_inputs = common_problems.has_duplicate_inputs; const has_empty_inputs = common_problems.has_empty_inputs; if (has_duplicate_inputs || has_empty_inputs) { @@ -99,10 +98,10 @@ var View = Backbone.View.extend({ render_error_page: function(dataset, job) { this.$el.empty().append(` ${this._templateHeader()} -

Dataset Error

+

Dataset Error Report

An error occurred while running the tool ${job.tool_id}.

${this.job_summary(job)} -

Troubleshoot This Error

+

Troubleshooting

There are a number of help resources to self diagnose and correct problems. @@ -110,15 +109,7 @@ var View = Backbone.View.extend({ href="https://galaxyproject.org/support/tool-error/" target="_blank"> My job ended with an error. What can I do?

- -

Report This Error

-

- Usually the local Galaxy administrators regularly review errors - that occur on the server However, if you would like to provide - additional information (such as what you were trying to do when - the error occurred) and a contact e-mail address, we will be - better able to investigate your problem and get back to you. -

`); +

Issue Report

`); this.$el.append(this._getBugFormTemplate(dataset, job)); }, @@ -129,7 +120,7 @@ var View = Backbone.View.extend({ if (!tool_stderr && !job_stderr && !job_messages) { return '

'; } - var message = "

Error Details

"; + var message = "

Details

"; if (job_messages) { message += "

Execution resulted in the following messages:

"; for (const job_message of job_messages) { @@ -138,7 +129,7 @@ var View = Backbone.View.extend({ } if (tool_stderr) { message += "

Tool generated the following standard error:

"; - message += `
${_.escape(tool_stderr)}
`; + message += `
${_.escape(tool_stderr)}
`; } if (job_stderr) { message += "

Galaxy job runner generated the following standard error:

"; @@ -172,51 +163,21 @@ var View = Backbone.View.extend({ /** Convert tab template */ _getBugFormTemplate: function(dataset, job) { - const Galaxy = getGalaxyInstance(); - var inputs = [ - { - help: _l("Your email address"), - options: [], - type: "text", - name: "email", - label: "Your email", - value: Galaxy.user.get("email") - }, - { - help: _l( - "Any additional comments you can provide regarding what you were doing at the time of the bug." - ), - options: [], - type: "text", - area: true, - name: "message", - label: "Message" - } - ]; - - // TODO - /* - if (false && response.any_public) { - inputs.push({ - name: "public_consent", - label: "Public Disclosure Consent", - help: - "This Galaxy is configured to report to one or more error reporting backends that public to the world. By selecting 'yes', you acknowledge that this bug report will be made public.", - value: String(Boolean(false)), - options: [], - type: "boolean" - }); - } - */ - - var form = new Form({ - title: _l("Error Report"), - inputs: inputs, + const form = new Form({ + inputs: [ + { + options: [], + type: "text", + area: true, + name: "message", + label: "Please provide detailed information on the activities leading to this issue:" + } + ], buttons: { save: new Ui.Button({ icon: "fa-bug", title: _l("Report"), - cls: "ui-button btn btn-primary", + cls: "btn btn-primary", floating: "clear", onclick: () => { var form_data = form.data.create(); @@ -254,7 +215,7 @@ var View = Backbone.View.extend({ ); }); }, - error: response => { + error: () => { var error_response = { status: "error", message: "Error occurred while saving. Please fill all the required fields and try again.", From 92df119804bd5be6c0220fdc3415358704859cd7 Mon Sep 17 00:00:00 2001 From: guerler Date: Mon, 9 Mar 2020 18:08:19 -0400 Subject: [PATCH 2/6] Disable error reporting for anonymous users, refer to public resources instead --- client/galaxy/scripts/mvc/dataset/dataset-error.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/client/galaxy/scripts/mvc/dataset/dataset-error.js b/client/galaxy/scripts/mvc/dataset/dataset-error.js index 63d2caffbe4..e6d73a606d3 100644 --- a/client/galaxy/scripts/mvc/dataset/dataset-error.js +++ b/client/galaxy/scripts/mvc/dataset/dataset-error.js @@ -108,9 +108,11 @@ var View = Backbone.View.extend({ Start here: My job ended with an error. What can I do? -

-

Issue Report

`); - this.$el.append(this._getBugFormTemplate(dataset, job)); +

`); + const Galaxy = getGalaxyInstance(); + if (Galaxy.user.id) { + this.$el.append("

Issue Report

").append(this._getBugFormTemplate(dataset, job)); + } }, job_summary: function(job) { From 6af2eb432c63575347041bb1d2af82ea803cddc5 Mon Sep 17 00:00:00 2001 From: guerler Date: Mon, 9 Mar 2020 18:12:44 -0400 Subject: [PATCH 3/6] Highlight public help resources link in dataset error report --- client/galaxy/scripts/mvc/dataset/dataset-error.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/client/galaxy/scripts/mvc/dataset/dataset-error.js b/client/galaxy/scripts/mvc/dataset/dataset-error.js index e6d73a606d3..9c8169730e4 100644 --- a/client/galaxy/scripts/mvc/dataset/dataset-error.js +++ b/client/galaxy/scripts/mvc/dataset/dataset-error.js @@ -103,11 +103,15 @@ var View = Backbone.View.extend({ ${this.job_summary(job)}

Troubleshooting

- There are a number of help resources to self diagnose and + There are a number of helpful resources to self diagnose and correct problems. - Start here: My job ended with an error. What can I do? +
+ Start here: + + + My job ended with an error. What can I do? + +

`); const Galaxy = getGalaxyInstance(); if (Galaxy.user.id) { From 49da637f7158d3f69a8680a868e9d324e40e9d6b Mon Sep 17 00:00:00 2001 From: guerler Date: Mon, 9 Mar 2020 19:37:58 -0400 Subject: [PATCH 4/6] Explicitly specify user email on client as hidden field for dataset error reporting --- client/galaxy/scripts/mvc/dataset/dataset-error.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/client/galaxy/scripts/mvc/dataset/dataset-error.js b/client/galaxy/scripts/mvc/dataset/dataset-error.js index 9c8169730e4..6bf8d2ead99 100644 --- a/client/galaxy/scripts/mvc/dataset/dataset-error.js +++ b/client/galaxy/scripts/mvc/dataset/dataset-error.js @@ -169,10 +169,16 @@ var View = Backbone.View.extend({ /** Convert tab template */ _getBugFormTemplate: function(dataset, job) { + const Galaxy = getGalaxyInstance(); const form = new Form({ inputs: [ { - options: [], + type: "text", + hidden: true, + name: "email", + value: Galaxy.user.email + }, + { type: "text", area: true, name: "message", From 9ab7a94aacfc94e6fc90a0e90565b59f5b7eb4aa Mon Sep 17 00:00:00 2001 From: guerler Date: Mon, 9 Mar 2020 20:20:24 -0400 Subject: [PATCH 5/6] Retrieve user email through model get helper in dataset issue report form --- client/galaxy/scripts/mvc/dataset/dataset-error.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/galaxy/scripts/mvc/dataset/dataset-error.js b/client/galaxy/scripts/mvc/dataset/dataset-error.js index 6bf8d2ead99..32533a20625 100644 --- a/client/galaxy/scripts/mvc/dataset/dataset-error.js +++ b/client/galaxy/scripts/mvc/dataset/dataset-error.js @@ -176,7 +176,7 @@ var View = Backbone.View.extend({ type: "text", hidden: true, name: "email", - value: Galaxy.user.email + value: Galaxy.user.get("email") }, { type: "text", From 92987e38e5067a25d6cd54db15bb1dc945bb3940 Mon Sep 17 00:00:00 2001 From: guerler Date: Tue, 10 Mar 2020 01:22:19 -0400 Subject: [PATCH 6/6] Allow anonymous users to report dataset errors --- client/galaxy/scripts/mvc/dataset/dataset-error.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/client/galaxy/scripts/mvc/dataset/dataset-error.js b/client/galaxy/scripts/mvc/dataset/dataset-error.js index 32533a20625..175934dec52 100644 --- a/client/galaxy/scripts/mvc/dataset/dataset-error.js +++ b/client/galaxy/scripts/mvc/dataset/dataset-error.js @@ -113,10 +113,7 @@ var View = Backbone.View.extend({

`); - const Galaxy = getGalaxyInstance(); - if (Galaxy.user.id) { - this.$el.append("

Issue Report

").append(this._getBugFormTemplate(dataset, job)); - } + this.$el.append("

Issue Report

").append(this._getBugFormTemplate(dataset, job)); }, job_summary: function(job) { @@ -170,13 +167,15 @@ var View = Backbone.View.extend({ /** Convert tab template */ _getBugFormTemplate: function(dataset, job) { const Galaxy = getGalaxyInstance(); + const userEmail = Galaxy.user.get("email"); const form = new Form({ inputs: [ { type: "text", - hidden: true, + hidden: !!userEmail, name: "email", - value: Galaxy.user.get("email") + value: userEmail, + label: "Please provide your email:" }, { type: "text",