From 8c73b88eaa95fe43b8fd983707a00322a380126e Mon Sep 17 00:00:00 2001
From: John Chilton
Date: Fri, 6 Dec 2024 09:32:21 -0500
Subject: [PATCH 1/4] Improve language in collection builders...
---
.../Collections/CollectionCreatorModal.vue | 21 +++++++++++--------
.../Collections/ListCollectionCreator.vue | 2 +-
.../Collections/PairCollectionCreator.vue | 3 ++-
.../PairedListCollectionCreator.vue | 3 ++-
.../Collections/common/CollectionCreator.vue | 18 ++++++++++++++--
.../Form/Elements/FormData/FormData.vue | 12 ++++++++++-
6 files changed, 44 insertions(+), 15 deletions(-)
diff --git a/client/src/components/Collections/CollectionCreatorModal.vue b/client/src/components/Collections/CollectionCreatorModal.vue
index 334f6586e0da..8db25d243c6d 100644
--- a/client/src/components/Collections/CollectionCreatorModal.vue
+++ b/client/src/components/Collections/CollectionCreatorModal.vue
@@ -113,22 +113,25 @@ watch(
}
);
+const extensionInTitle = computed(() => {
+ const extensions = props.extensions;
+ if (!extensions || extensions.length == 0 || extensions.indexOf("data") >= 0) {
+ return "";
+ } else {
+ return orList(extensions);
+ }
+});
+
const modalTitle = computed(() => {
if (props.collectionType === "list") {
- return localize(
- `Create a collection from a list of ${fromSelection.value ? "selected" : ""} ${
- props.extensions?.length ? orList(props.extensions) : ""
- } datasets`
- );
+ return localize(`Create a list of ${fromSelection.value ? "selected" : ""} ${extensionInTitle.value} datasets`);
} else if (props.collectionType === "list:paired") {
return localize(
- `Create a collection of ${fromSelection.value ? "selected" : ""} ${
- props.extensions?.length ? orList(props.extensions) : ""
- } dataset pairs`
+ `Create a list of ${fromSelection.value ? "selected" : ""} ${extensionInTitle.value} paired datasets`
);
} else if (props.collectionType === "paired") {
return localize(
- `Create a ${props.extensions?.length ? orList(props.extensions) : ""} dataset pair collection ${
+ `Create a ${extensionInTitle.value} paired dataset collection ${
fromSelection.value ? "from selected items" : ""
}`
);
diff --git a/client/src/components/Collections/ListCollectionCreator.vue b/client/src/components/Collections/ListCollectionCreator.vue
index 841a206a3635..b68f573c76ae 100644
--- a/client/src/components/Collections/ListCollectionCreator.vue
+++ b/client/src/components/Collections/ListCollectionCreator.vue
@@ -412,13 +412,13 @@ function renameElement(element: any, name: string) {
:history-id="props.historyId"
:hide-source-items="hideSourceItems"
:extensions="extensions"
+ collectionType="list"
:no-items="props.initialElements.length == 0 && !props.fromSelection"
@add-uploaded-files="addUploadedFiles"
@on-update-datatype-toggle="changeDatatypeFilter"
@onUpdateHideSourceItems="onUpdateHideSourceItems"
@clicked-create="clickedCreate">
-
{{
localize(
diff --git a/client/src/components/Collections/PairCollectionCreator.vue b/client/src/components/Collections/PairCollectionCreator.vue
index 38ee98f530c9..1d3e5922f315 100644
--- a/client/src/components/Collections/PairCollectionCreator.vue
+++ b/client/src/components/Collections/PairCollectionCreator.vue
@@ -374,6 +374,7 @@ function _naiveStartingAndEndingLCS(s1: string, s2: string) {
:suggested-name="initialSuggestedName"
:extensions="props.extensions"
:extensions-toggle="removeExtensions"
+ collection-type="paired"
:no-items="props.initialElements.length == 0 && !props.fromSelection"
@add-uploaded-files="addUploadedFiles"
@onUpdateHideSourceItems="onUpdateHideSourceItems"
@@ -423,7 +424,7 @@ function _naiveStartingAndEndingLCS(s1: string, s2: string) {
{{ localize("name") }}
{{ localize("and click ") }}
- {{ localize("Create list") }}
+ {{ localize("Create dataset pair") }}
{{ localize(".") }}
diff --git a/client/src/components/Collections/PairedListCollectionCreator.vue b/client/src/components/Collections/PairedListCollectionCreator.vue
index ba46d2139934..c6ed19bfc384 100644
--- a/client/src/components/Collections/PairedListCollectionCreator.vue
+++ b/client/src/components/Collections/PairedListCollectionCreator.vue
@@ -864,6 +864,7 @@ function _naiveStartingAndEndingLCS(s1: string, s2: string) {
render-extensions-toggle
:extensions-toggle="removeExtensions"
:extensions="extensions"
+ collection-type="list:paired"
:no-items="props.initialElements.length == 0 && !props.fromSelection"
@add-uploaded-files="addUploadedFiles"
@onUpdateHideSourceItems="hideSourceItems = $event"
@@ -994,7 +995,7 @@ function _naiveStartingAndEndingLCS(s1: string, s2: string) {
{{ localize("and click ") }}
- {{ localize("Create list") }}
+ {{ localize("Create list or pairs") }}
{{ localize(". (Note: you do not have to pair all unpaired datasets to finish.)") }}
diff --git a/client/src/components/Collections/common/CollectionCreator.vue b/client/src/components/Collections/common/CollectionCreator.vue
index 7e2401d0bd7b..c60e80099fd2 100644
--- a/client/src/components/Collections/common/CollectionCreator.vue
+++ b/client/src/components/Collections/common/CollectionCreator.vue
@@ -39,6 +39,7 @@ interface Props {
extensions?: string[];
extensionsToggle?: boolean;
noItems?: boolean;
+ collectionType?: string;
}
const props = withDefaults(defineProps(), {
@@ -102,6 +103,19 @@ const defaultExtension = computed(() => {
}
});
+const shortWhatIsBeingCreated = computed(() => {
+ // plain language for what is being created
+ if (props.collectionType === "list") {
+ return "list";
+ } else if (props.collectionType === "list:paired") {
+ return "list of pairs";
+ } else if (props.collectionType == "paired") {
+ return "dataset pair";
+ } else {
+ return "collection";
+ }
+});
+
function addUploadedFiles(value: HDASummary[]) {
// TODO: We really need to wait for each of these items to get `state = 'ok'`
// before we can add them to the collection.
@@ -222,7 +236,7 @@ watch(
id="collection-name"
v-model="collectionName"
class="collection-name"
- :placeholder="localize('Enter a name for your new collection')"
+ :placeholder="localize('Enter a name for your new ' + shortWhatIsBeingCreated)"
size="sm"
required
:state="!collectionName ? false : null" />
@@ -240,7 +254,7 @@ watch(
variant="primary"
:disabled="!validInput"
@click="emit('clicked-create', collectionName)">
- {{ localize("Create collection") }}
+ {{ localize("Create " + shortWhatIsBeingCreated) }}
diff --git a/client/src/components/Form/Elements/FormData/FormData.vue b/client/src/components/Form/Elements/FormData/FormData.vue
index de820ccef641..0695af21369b 100644
--- a/client/src/components/Form/Elements/FormData/FormData.vue
+++ b/client/src/components/Form/Elements/FormData/FormData.vue
@@ -607,10 +607,20 @@ watch(
const formatsVisible = ref(false);
const formatsButtonId = useUid("form-data-formats-");
+function collectionTypeToText(collectionType: string): string {
+ if (collectionType == "list:paired") {
+ return "list of pairs";
+ } else {
+ return collectionType;
+ }
+}
+
const warningListAmount = 4;
const noOptionsWarningMessage = computed(() => {
const itemType = props.type === "data" ? "datasets" : "dataset collections";
- const collectionTypeLabel = props.collectionTypes?.length ? `${orList(props.collectionTypes)} ` : "";
+ const collectionTypeLabel = props.collectionTypes?.length
+ ? `${orList(props.collectionTypes.map(collectionTypeToText))} `
+ : "";
if (!props.extensions || props.extensions.length === 0 || props.extensions.includes("data")) {
return `No ${collectionTypeLabel}${itemType} available`;
} else if (props.extensions.length <= warningListAmount) {
From 42cf8596bd3220a822e360489fc1cd92b6eb6475 Mon Sep 17 00:00:00 2001
From: John Chilton
Date: Fri, 6 Dec 2024 09:39:58 -0500
Subject: [PATCH 2/4] Fix list collection creator usage instructions.
This was describing the "selection" mode instructions for the free build from history version - if that makes any sense.
---
.../Collections/ListCollectionCreator.vue | 29 ++++++++++++++-----
.../PairedListCollectionCreator.vue | 6 ++--
2 files changed, 24 insertions(+), 11 deletions(-)
diff --git a/client/src/components/Collections/ListCollectionCreator.vue b/client/src/components/Collections/ListCollectionCreator.vue
index b68f573c76ae..c3ffe858690e 100644
--- a/client/src/components/Collections/ListCollectionCreator.vue
+++ b/client/src/components/Collections/ListCollectionCreator.vue
@@ -423,17 +423,27 @@ function renameElement(element: any, name: string) {
{{
localize(
[
- "Collections of datasets are permanent, ordered lists of datasets that can be passed to tools ",
+ "Lists are a type of Galaxy dataset collection that are a permanent, ordered lists of datasets that can be passed to tools ",
"and workflows in order to have analyses done on each member of the entire group. This interface allows ",
- "you to create a collection and re-order the final collection.",
+ "you to create and re-order a list of datasets. The datasets in a Galaxy collection have an identifier that is preserved accross ",
+ "tool executions and server as a form of sample tracking - setting the name in this form will pick the identifier for that element ",
+ "of the list but will not change the dataset's actual name in Galaxy.",
].join("")
)
}}
+ -
+ Move datsets from the "Unselected" column to the "Selected" column below to compose the
+ list in the intended order and with the intended datasets.
+
+
+ -
+ The filter textbox can be used to rapidly find the datasets of interest by name.
+
-
- {{ localize("Rename elements in the list by clicking on") }}
+ {{ localize("Change the identifier of elements in the list by clicking on") }}
{{ localize("the existing name") }}
@@ -442,13 +452,16 @@ function renameElement(element: any, name: string) {
-
{{ localize("Discard elements from the final created list by clicking on the ") }}
-
- {{ localize("Discard") }}
+
+ {{ localize("Remove") }}
+
+
+ {{ localize("discard") }}
{{ localize("button.") }}
- -
+
-
{{
localize(
"Reorder the list by clicking and dragging elements. Select multiple elements by clicking on"
@@ -468,7 +481,7 @@ function renameElement(element: any, name: string) {
{{ localize("link.") }}
- -
+
-
{{ localize("Click ") }}
@@ -476,7 +489,7 @@ function renameElement(element: any, name: string) {
{{ localize("to begin again as if you had just opened the interface.") }}
- -
+
-
{{ localize("Click ") }}
diff --git a/client/src/components/Collections/PairedListCollectionCreator.vue b/client/src/components/Collections/PairedListCollectionCreator.vue
index c6ed19bfc384..6ef21d44056e 100644
--- a/client/src/components/Collections/PairedListCollectionCreator.vue
+++ b/client/src/components/Collections/PairedListCollectionCreator.vue
@@ -876,9 +876,9 @@ function _naiveStartingAndEndingLCS(s1: string, s2: string) {
{{
localize(
[
- "Collections of paired datasets are ordered lists of dataset pairs (often forward and reverse reads). ",
- "These collections can be passed to tools and workflows in order to have analyses done on each member of ",
- "the entire group. This interface allows you to create a collection, choose which datasets are paired, ",
+ "Lists of pairs are an ordered list of individual dataset paired together in their own collection (often forward and reverse reads). ",
+ "These lists can be passed to tools and workflows in order to have analyses done on each member of ",
+ "the entire group. This interface allows you to create such a list of paired datasets, choose which datasets are paired, ",
"and re-order the final collection.",
].join("")
)
From 830c7649e38e959ee42ffe5a8c60af1016887dc5 Mon Sep 17 00:00:00 2001
From: John Chilton
Date: Wed, 4 Dec 2024 11:34:33 -0500
Subject: [PATCH 3/4] Update
client/src/components/Collections/ListCollectionCreator.vue
Co-authored-by: Martin Cech
---
client/src/components/Collections/ListCollectionCreator.vue | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/client/src/components/Collections/ListCollectionCreator.vue b/client/src/components/Collections/ListCollectionCreator.vue
index c3ffe858690e..b8e9b24cdb82 100644
--- a/client/src/components/Collections/ListCollectionCreator.vue
+++ b/client/src/components/Collections/ListCollectionCreator.vue
@@ -426,7 +426,7 @@ function renameElement(element: any, name: string) {
"Lists are a type of Galaxy dataset collection that are a permanent, ordered lists of datasets that can be passed to tools ",
"and workflows in order to have analyses done on each member of the entire group. This interface allows ",
"you to create and re-order a list of datasets. The datasets in a Galaxy collection have an identifier that is preserved accross ",
- "tool executions and server as a form of sample tracking - setting the name in this form will pick the identifier for that element ",
+ "tool executions and serves as a form of sample tracking - setting the name in this form will pick the identifier for that element ",
"of the list but will not change the dataset's actual name in Galaxy.",
].join("")
)
@@ -438,7 +438,6 @@ function renameElement(element: any, name: string) {
Move datsets from the "Unselected" column to the "Selected" column below to compose the
list in the intended order and with the intended datasets.
-
-
The filter textbox can be used to rapidly find the datasets of interest by name.
From 83c19e035202af424429bec9053810a31212b93d Mon Sep 17 00:00:00 2001
From: John Chilton
Date: Fri, 6 Dec 2024 09:44:06 -0500
Subject: [PATCH 4/4] Trying to integrate PR comments.
---
.../src/components/Collections/ListCollectionCreator.vue | 9 +++++----
.../Collections/PairedListCollectionCreator.vue | 3 ++-
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/client/src/components/Collections/ListCollectionCreator.vue b/client/src/components/Collections/ListCollectionCreator.vue
index b8e9b24cdb82..ca9e25aec416 100644
--- a/client/src/components/Collections/ListCollectionCreator.vue
+++ b/client/src/components/Collections/ListCollectionCreator.vue
@@ -412,7 +412,7 @@ function renameElement(element: any, name: string) {
:history-id="props.historyId"
:hide-source-items="hideSourceItems"
:extensions="extensions"
- collectionType="list"
+ collection-type="list"
:no-items="props.initialElements.length == 0 && !props.fromSelection"
@add-uploaded-files="addUploadedFiles"
@on-update-datatype-toggle="changeDatatypeFilter"
@@ -423,7 +423,8 @@ function renameElement(element: any, name: string) {
{{
localize(
[
- "Lists are a type of Galaxy dataset collection that are a permanent, ordered lists of datasets that can be passed to tools ",
+ "This interface allows you to build a new Galaxy list of datasets. ",
+ "A list is a type of Galaxy dataset collection that is a permanent, ordered list of datasets that can be passed to tools ",
"and workflows in order to have analyses done on each member of the entire group. This interface allows ",
"you to create and re-order a list of datasets. The datasets in a Galaxy collection have an identifier that is preserved accross ",
"tool executions and serves as a form of sample tracking - setting the name in this form will pick the identifier for that element ",
@@ -435,8 +436,8 @@ function renameElement(element: any, name: string) {
-
- Move datsets from the "Unselected" column to the "Selected" column below to compose the
- list in the intended order and with the intended datasets.
+ Move datsets from the "Unselected" column to the "Selected" column below to compose the list
+ in the intended order and with the intended datasets.
-
The filter textbox can be used to rapidly find the datasets of interest by name.
diff --git a/client/src/components/Collections/PairedListCollectionCreator.vue b/client/src/components/Collections/PairedListCollectionCreator.vue
index 6ef21d44056e..e5b33c5b108e 100644
--- a/client/src/components/Collections/PairedListCollectionCreator.vue
+++ b/client/src/components/Collections/PairedListCollectionCreator.vue
@@ -876,7 +876,8 @@ function _naiveStartingAndEndingLCS(s1: string, s2: string) {
{{
localize(
[
- "Lists of pairs are an ordered list of individual dataset paired together in their own collection (often forward and reverse reads). ",
+ "This interface allows you to build a new Galaxy list of pairs. List of pairs are an ordered list of ",
+ "individual dataset paired together in their own paired collection (often forward and reverse reads). ",
"These lists can be passed to tools and workflows in order to have analyses done on each member of ",
"the entire group. This interface allows you to create such a list of paired datasets, choose which datasets are paired, ",
"and re-order the final collection.",