From 9291173c77e0f81a9eb8ab3f3e856be9e6b52445 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Wed, 10 Apr 2024 22:42:04 -0400 Subject: [PATCH 1/9] In HistoryDatasetDisplay markdown element, display images in iframe --- .../Markdown/Elements/HistoryDatasetDisplay.vue | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/client/src/components/Markdown/Elements/HistoryDatasetDisplay.vue b/client/src/components/Markdown/Elements/HistoryDatasetDisplay.vue index 547f6bcc935..08aebe4aba5 100644 --- a/client/src/components/Markdown/Elements/HistoryDatasetDisplay.vue +++ b/client/src/components/Markdown/Elements/HistoryDatasetDisplay.vue @@ -61,7 +61,13 @@
{{ error }}
From c15b6e0fd3cdb7c53660bdbe58a31c8fa98f9a1a Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Wed, 10 Apr 2024 22:48:25 -0400 Subject: [PATCH 2/9] Allow abstract parent class lookup by classname for isSubType. --- client/src/components/Datatypes/model.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/components/Datatypes/model.ts b/client/src/components/Datatypes/model.ts index 45334ba8d25..28e55257daa 100644 --- a/client/src/components/Datatypes/model.ts +++ b/client/src/components/Datatypes/model.ts @@ -17,7 +17,8 @@ export class DatatypesMapperModel { isSubType(child: string, parent: string): boolean { const mapping = this.datatypesMapping; const childClassName = mapping.ext_to_class_name[child]; - const parentClassName = mapping.ext_to_class_name[parent]; + const parentClassName = mapping.ext_to_class_name[parent] || parent; + if (!childClassName || !parentClassName) { return false; } From dd9af46effe1067168a7bbdbda7c0c2dec0be6f3 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 11 Apr 2024 07:44:21 -0400 Subject: [PATCH 3/9] Document isSubType --- client/src/components/Datatypes/model.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/client/src/components/Datatypes/model.ts b/client/src/components/Datatypes/model.ts index 28e55257daa..797d0349e19 100644 --- a/client/src/components/Datatypes/model.ts +++ b/client/src/components/Datatypes/model.ts @@ -14,6 +14,13 @@ export class DatatypesMapperModel { this.datatypesMapping = typesAndMapping.datatypes_mapping; } + /** + * Checks if a given child datatype is a subtype of a parent datatype. + * @param child - The child datatype extension as registered in the datatypes registry. + * @param parent - The parent datatype, which can be an extension or explicit class name + * Can also be used with extensionless abstract datatypes (e.g. "galaxy.datatypes.images.Image") + * @returns A boolean indicating whether the child is a subtype of the parent. + */ isSubType(child: string, parent: string): boolean { const mapping = this.datatypesMapping; const childClassName = mapping.ext_to_class_name[child]; From ea455b382399c4e6e1dd75766656bee8c2a2ee51 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 11 Apr 2024 07:37:04 -0400 Subject: [PATCH 4/9] Reuse datasetimage display for appropriate datatypes Minor tweaking of pre --- .../Elements/HistoryDatasetDisplay.vue | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/client/src/components/Markdown/Elements/HistoryDatasetDisplay.vue b/client/src/components/Markdown/Elements/HistoryDatasetDisplay.vue index 08aebe4aba5..d44e22d74b4 100644 --- a/client/src/components/Markdown/Elements/HistoryDatasetDisplay.vue +++ b/client/src/components/Markdown/Elements/HistoryDatasetDisplay.vue @@ -61,16 +61,13 @@
{{ error }}
+
-                                    {{ itemContent.item_data }}
-                                
+ {{ itemContent.item_data }} +
No content found.
Show More... @@ -105,10 +102,13 @@ import LoadingSpan from "components/LoadingSpan"; import { UrlDataProvider } from "components/providers/UrlDataProvider"; import { getAppRoot } from "onload/loadConfig"; +import HistoryDatasetAsImage from "./HistoryDatasetAsImage.vue"; + export default { components: { LoadingSpan, UrlDataProvider, + HistoryDatasetAsImage, }, props: { args: { From 4551d50ddaf99a9aa231bdddf0533e2f3e0cd0df Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Thu, 11 Apr 2024 15:12:44 +0200 Subject: [PATCH 5/9] Fix notification display time Prioritize the publication date over the creation date to accurately reflect possible scheduled notifications --- client/src/components/Notifications/NotificationActions.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/Notifications/NotificationActions.vue b/client/src/components/Notifications/NotificationActions.vue index ebcd9a46989..fe161b7ddba 100644 --- a/client/src/components/Notifications/NotificationActions.vue +++ b/client/src/components/Notifications/NotificationActions.vue @@ -37,7 +37,7 @@ function getNotificationExpirationTitle(notification: UserNotification) {
- + From 7e2bd277b4ed21a3afd4d7d1af3f7f4d7b2885cc Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Thu, 11 Apr 2024 15:31:57 +0200 Subject: [PATCH 6/9] Fix message input type for notifications Otherwise, is not possible to use line breaks in the message which are supported by the API with full markdown support. --- client/src/components/admin/Notifications/NotificationForm.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/components/admin/Notifications/NotificationForm.vue b/client/src/components/admin/Notifications/NotificationForm.vue index 86e4c98efc2..027649bc067 100644 --- a/client/src/components/admin/Notifications/NotificationForm.vue +++ b/client/src/components/admin/Notifications/NotificationForm.vue @@ -153,7 +153,8 @@ async function sendNewNotification() { :optional="false" help="The message can be written in markdown." placeholder="Enter message" - required /> + required + area /> Date: Thu, 11 Apr 2024 13:00:33 -0400 Subject: [PATCH 7/9] Update _thanks.rst to include new socials and remove inactive ones Updating the _thanks.rst that is associated with the User Release Notes to reflect Galaxy's new social media presence. Galaxy is no longer active on Twitter and has joined Bluesky and LinkedIn. The new 'thanks' message has been updated to reflect this with the appropriate links to the new socials. --- doc/source/releases/_thanks.rst | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/source/releases/_thanks.rst b/doc/source/releases/_thanks.rst index ac233ef7dd7..35cb0ccc90c 100644 --- a/doc/source/releases/_thanks.rst +++ b/doc/source/releases/_thanks.rst @@ -1,7 +1,5 @@ -To stay up to date with Galaxy's progress, watch our `screencasts `__, -visit our community `Hub `__, and follow -`@galaxyproject@mstdn.science `__ on Mastodon or -`@galaxyproject `__ on Twitter. +To stay up to date with Galaxy's progress, watch our `screencasts `__; +visit our community `Hub `__; and follow us on `Bluesky `__, `Mastodon `__, and `LinkedIn `__. You can always chat with us on `Matrix `__. From e2d737ff2b33443bfa2cda56d18b715c4430ade2 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 11 Apr 2024 19:31:39 +0200 Subject: [PATCH 8/9] Don't save in test_integer_input Reproduces https://github.com/galaxyproject/galaxy/issues/17970 --- lib/galaxy/selenium/navigates_galaxy.py | 13 +++++++------ lib/galaxy_test/selenium/test_workflow_editor.py | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/galaxy/selenium/navigates_galaxy.py b/lib/galaxy/selenium/navigates_galaxy.py index f156f348703..ac13d0fbe60 100644 --- a/lib/galaxy/selenium/navigates_galaxy.py +++ b/lib/galaxy/selenium/navigates_galaxy.py @@ -1510,7 +1510,7 @@ class NavigatesGalaxy(HasDriver): workflow_run.expand_form_link.wait_for_and_click() workflow_run.expanded_form.wait_for_visible() - def workflow_create_new(self, annotation=None, clear_placeholder=False): + def workflow_create_new(self, annotation=None, clear_placeholder=False, save_workflow=True): self.workflow_index_open() self.sleep_for(self.wait_types.UX_RENDER) self.click_button_new_workflow() @@ -1522,11 +1522,12 @@ class NavigatesGalaxy(HasDriver): name_component.wait_for_and_send_keys(name) annotation = annotation or self._get_random_name() self.components.workflow_editor.edit_annotation.wait_for_and_send_keys(annotation) - save_button = self.components.workflow_editor.save_button - save_button.wait_for_visible() - assert not save_button.has_class("disabled") - save_button.wait_for_and_click() - self.sleep_for(self.wait_types.UX_RENDER) + if save_workflow: + save_button = self.components.workflow_editor.save_button + save_button.wait_for_visible() + assert not save_button.has_class("disabled") + save_button.wait_for_and_click() + self.sleep_for(self.wait_types.UX_RENDER) return name def invocation_index_table_elements(self): diff --git a/lib/galaxy_test/selenium/test_workflow_editor.py b/lib/galaxy_test/selenium/test_workflow_editor.py index a98e5f3b756..39471e88726 100644 --- a/lib/galaxy_test/selenium/test_workflow_editor.py +++ b/lib/galaxy_test/selenium/test_workflow_editor.py @@ -224,7 +224,7 @@ steps: def test_integer_input(self): editor = self.components.workflow_editor - name = self.workflow_create_new() + name = self.workflow_create_new(save_workflow=False) self.workflow_editor_add_input(item_name="parameter_input") self.screenshot("workflow_editor_parameter_input_new") editor.label_input.wait_for_and_send_keys("input1") From 0ec987faa111b52305933608141b7929190cd228 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Thu, 11 Apr 2024 19:17:35 +0200 Subject: [PATCH 9/9] Set from_tool_form: true when saving new workflow Fixes https://github.com/galaxyproject/galaxy/issues/17963 and https://github.com/galaxyproject/galaxy/issues/17970 --- client/src/components/Workflow/services.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/Workflow/services.js b/client/src/components/Workflow/services.js index d354fda8182..ab0f1f4acaf 100644 --- a/client/src/components/Workflow/services.js +++ b/client/src/components/Workflow/services.js @@ -32,7 +32,7 @@ export class Services { async createWorkflow(workflow) { const url = withPrefix("/api/workflows"); try { - const { data } = await axios.post(url, { workflow: toSimple(workflow.id, workflow) }); + const { data } = await axios.post(url, { workflow: toSimple(workflow.id, workflow), from_tool_form: true }); return data; } catch (e) { rethrowSimple(e);