Skip to content

Commit

Permalink
Merge branch 'release_24.0' into dev
Browse files Browse the repository at this point in the history
  • Loading branch information
mvdbeek committed Mar 19, 2024
2 parents 3083b5e + b9eed71 commit 113430f
Show file tree
Hide file tree
Showing 40 changed files with 577 additions and 460 deletions.
2 changes: 1 addition & 1 deletion client/src/api/schema/schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6938,7 +6938,7 @@ export interface components {
* Type
* @constant
*/
type: "parameter";
type: "parameter_input";
/** When */
when: string | null;
};
Expand Down
22 changes: 1 addition & 21 deletions client/src/components/Common/FilterMenu.vue
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { faAngleDoubleUp, faQuestion, faRedo, faSearch } from "@fortawesome/free
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { BButton, BModal } from "bootstrap-vue";
import { kebabCase } from "lodash";
import { computed, ref, watch } from "vue";
import { computed, ref } from "vue";
import type Filtering from "@/utils/filtering";
import { type Alias, getOperatorForAlias } from "@/utils/filtering";
Expand Down Expand Up @@ -68,7 +68,6 @@ const props = withDefaults(defineProps<Props>(), {
const emit = defineEmits<{
(e: "update:filter-text", filter: string): void;
(e: "on-backend-filter", filter: string): void;
(e: "update:show-advanced", showAdvanced: boolean): void;
(e: "on-search", filters: Record<string, string | boolean>, filterText?: string, backendFilter?: string): void;
}>();
Expand Down Expand Up @@ -127,25 +126,6 @@ function onToggle() {
function updateFilterText(newFilterText: string) {
emit("update:filter-text", newFilterText);
}
// as the filterText changes, emit a backend-filter that can be used as a backend query
watch(
() => props.filterText,
(newFilterText: string) => {
const defaultBackendFilter = props.filterClass.getFilterText(props.filterClass.defaultFilters, true);
const currentBackendFilter = props.filterClass.getFilterText(filters.value, true);
const backendFilter =
defaultBackendFilter === currentBackendFilter
? `${
defaultBackendFilter && !newFilterText.includes(defaultBackendFilter)
? defaultBackendFilter + " "
: ""
}` + newFilterText
: props.filterClass.getFilterText(filters.value, true);
emit("on-backend-filter", backendFilter);
}
);
</script>

<template>
Expand Down
270 changes: 161 additions & 109 deletions client/src/components/Grid/GridList.vue

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions client/src/components/Grid/configs/histories.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ type SortKeyLiteral = "create_time" | "name" | "update_time" | undefined;
async function getData(offset: number, limit: number, search: string, sort_by: string, sort_desc: boolean) {
const { data, headers } = await historiesFetcher({
view: "summary",
keys: "create_time",
limit,
offset,
search,
Expand Down
1 change: 1 addition & 0 deletions client/src/components/Grid/configs/historiesPublished.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ type SortKeyLiteral = "name" | "update_time" | undefined;
async function getData(offset: number, limit: number, search: string, sort_by: string, sort_desc: boolean) {
const { data, headers } = await historiesFetcher({
view: "summary",
keys: "username",
limit,
offset,
search,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ onMounted(() => {

<BModal
v-model="showPreferredObjectStoreModal"
title="History Preferred Object Store"
title="History Preferred Storage Location"
modal-class="history-preferred-object-store-modal"
title-tag="h3"
size="sm"
Expand Down
4 changes: 2 additions & 2 deletions client/src/components/History/CurrentHistory/HistoryPanel.vue
Original file line number Diff line number Diff line change
Expand Up @@ -412,9 +412,9 @@ async function onDrop() {
}
}
function updateFilterValue(newFilterText: string, newValue: any) {
function updateFilterValue(filterKey: string, newValue: any) {
const currentFilterText = filterText.value;
filterText.value = filterClass.setFilterValue(currentFilterText, newFilterText, newValue);
filterText.value = filterClass.setFilterValue(currentFilterText, filterKey, newValue);
}
function getItemKey(item: HistoryItem) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,14 @@ const preferredObjectStoreId = computed(() => {

<template>
<BPopover :target="`history-storage-${historyId}`" triggers="hover" placement="bottomleft" boundary="window">
<template v-slot:title>Preferred Target Object Store</template>
<template v-slot:title>Preferred Storage Location</template>
<div class="popover-wide">
<p v-if="historyPreferredObjectStoreId" class="history-preferred-object-store-inherited">
This target object store has been set at the history level.
This storage location has been set at the history level.
</p>
<p v-else class="history-preferred-object-store-not-inherited">
This target object store has been inherited from your user preferences (set in User -> Preferences ->
Preferred Object Store). If that option is updated, this history will target that new default.
This storage location has been inherited from your user preferences (set in User -> Preferences ->
Preferred Storage Location). If that option is updated, this history will target that new default.
</p>

<ShowSelectedObjectStore
Expand All @@ -39,7 +39,7 @@ const preferredObjectStoreId = computed(() => {
for-what="Galaxy will default to storing this history's datasets in " />

<div v-localize>
Change this preference object store target by clicking on the storage button in the history panel.
Change preferred storage location by clicking on the storage button in the history panel.
</div>
</div>
</BPopover>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ describe("ConfigurationMarkdown.vue", () => {
expect(wrapper.html()).toContain("<em>content</em>");
});

it("should allow HTML in configuration markdup explicitly set by the admin", () => {
it("should allow HTML in configuration markup explicitly set by the admin", () => {
wrapper = shallowMount(ConfigurationMarkdown, {
propsData: { markdown: "the <b>content</b>", admin: true },
localVue,
Expand Down
8 changes: 4 additions & 4 deletions client/src/components/ObjectStore/DescribeObjectStore.vue
Original file line number Diff line number Diff line change
Expand Up @@ -46,15 +46,15 @@ export default {
<div>
<span v-localize>{{ what }}</span>
<span v-if="storageInfo.name" class="display-os-by-name">
a Galaxy <ObjectStoreRestrictionSpan :is-private="isPrivate" /> object store named
a Galaxy <ObjectStoreRestrictionSpan :is-private="isPrivate" /> storage location named
<b>{{ storageInfo.name }}</b>
</span>
<span v-else-if="storageInfo.object_store_id" class="display-os-by-id">
a Galaxy <ObjectStoreRestrictionSpan :is-private="isPrivate" /> object store with id
a Galaxy <ObjectStoreRestrictionSpan :is-private="isPrivate" /> storage location with id
<b>{{ storageInfo.object_store_id }}</b>
</span>
<span v-else class="display-os-default">
the default configured Galaxy <ObjectStoreRestrictionSpan :is-private="isPrivate" /> object store </span
the default configured Galaxy <ObjectStoreRestrictionSpan :is-private="isPrivate" /> storage location </span
>.
</div>
<ObjectStoreBadges :badges="badges"> </ObjectStoreBadges>
Expand All @@ -66,7 +66,7 @@ export default {
<b-spinner v-if="isLoadingUsage" />
<QuotaUsageBar v-else-if="quotaUsage" :quota-usage="quotaUsage" :embedded="true" />
</QuotaSourceUsageProvider>
<div v-else>Galaxy has no quota configured for this object store.</div>
<div v-else>Galaxy has no quota configured for this storage location.</div>
<ConfigurationMarkdown v-if="storageInfo.description" :markdown="storageInfo.description" :admin="true" />
</div>
</template>
7 changes: 4 additions & 3 deletions client/src/components/ObjectStore/ObjectStoreBadge.vue
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ const MESSAGES = {
restricted:
"This dataset is stored on storage restricted to a single user. It can not be shared, published, or added to Galaxy data libraries.",
user_defined: "This storage was user defined and is not managed by the Galaxy administrator.",
quota: "A Galaxy quota is enabled for this object store.",
no_quota: "No Galaxy quota is enabled for this object store.",
quota: "A Galaxy quota is enabled for this storage location.",
no_quota: "No Galaxy quota is enabled for this storage location.",
faster: "This storage has been marked as a faster option by the Galaxy administrator.",
slower: "This storage has been marked as a slower option by the Galaxy administrator.",
short_term: "This storage has been marked routinely purged by the Galaxy administrator.",
short_term: "This storage has been marked as routinely purged by the Galaxy administrator.",
backed_up: "This storage has been marked as backed up by the Galaxy administrator.",
not_backed_up: "This storage has been marked as not backed up by the Galaxy administrator.",
more_secure:
Expand Down Expand Up @@ -136,6 +136,7 @@ const message = computed(() => {
"
triggers="hover"
placement="bottom"
variant="secondary"
class="object-store-badge-popover">
<p v-localize>{{ stockMessage }}</p>
<ConfigurationMarkdown v-if="message" :markdown="message" :admin="true" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ describe("ObjectStoreRestrictionSpan", () => {
propsData: { isPrivate: true },
localVue,
});
expect(wrapper.find(".stored-how").text()).toBe("private");
expect(wrapper.find(".stored-how").text()).toMatch("private");
expect(wrapper.find(".stored-how").attributes("title")).toBeTruthy();
});

Expand All @@ -22,7 +22,7 @@ describe("ObjectStoreRestrictionSpan", () => {
propsData: { isPrivate: false },
localVue,
});
expect(wrapper.find(".stored-how").text()).toBe("unrestricted");
expect(wrapper.find(".stored-how").text()).toMatch("sharable");
expect(wrapper.find(".stored-how").attributes("title")).toBeTruthy();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ const props = defineProps({
isPrivate: Boolean,
});
const text = computed(() => (props.isPrivate ? "private" : "unrestricted"));
const text = computed(() => (props.isPrivate ? "private" : "sharable"));
const title = computed(() => {
if (props.isPrivate) {
return "This dataset is stored on storage restricted to a single user. It can not be shared, published, or added to Galaxy data libraries.";
return "This dataset is stored on storage restricted to a single user. It cannot be shared, published, or added to Galaxy data libraries.";
} else {
return "This dataset is stored on unrestricted storage. With sufficient Galaxy permissions, this dataset can be published, shared, or added to Galaxy data libraries.";
return "This dataset is stored on storage that allows standard Galaxy sharing features. If you have sufficient Galaxy permissions to this dataset - the dataset can be published, shared, or added to data libraries within Galaxy.";
}
});
</script>
Expand Down
10 changes: 4 additions & 6 deletions client/src/components/ObjectStore/SelectObjectStore.vue
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,12 @@ const props = withDefaults(defineProps<SelectObjectStoreProps>(), {
const store = useObjectStoreStore();
const { isLoading, loadErrorMessage, selectableObjectStores } = storeToRefs(store);
const loadingObjectStoreInfoMessage = ref("Loading object store information");
const loadingObjectStoreInfoMessage = ref("Loading storage location information");
const whyIsSelectionPreferredText = ref(`
Selecting this will reset Galaxy to default behaviors configured by your Galaxy administrator.
Select a preferred object store for new datasets. This is should be thought of as a preferred
object store because depending the job and workflow configuration execution configuration of
this Galaxy instance - a different object store may be selected. After a dataset is created,
Select a preferred storage location for new datasets. Depending on the job and workflow execution configuration of
this Galaxy a different storage location may be ultimately used. After a dataset is created,
click on the info icon in the history panel to view information about where it is stored. If it
is not stored in the correct place, contact your Galaxy administrator for more information.
is not stored in the place you want, contact Galaxy administrator for more information.
`);
function variant(objectStoreId: string) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ describe("ShowSelectedObjectStore", () => {
});
let loadingEl = wrapper.findComponent(LoadingSpan);
expect(loadingEl.exists()).toBeTruthy();
expect(loadingEl.find(".loading-message").text()).toContainLocalizationOf("Loading object store details");
expect(loadingEl.find(".loading-message").text()).toContainLocalizationOf("Loading storage location details");
await flushPromises();
loadingEl = wrapper.findComponent(LoadingSpan);
expect(loadingEl.exists()).toBeFalsy();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ watch(
}
);
fetch();
const loadingMessage = "Loading object store details";
const loadingMessage = "Loading storage location details";
</script>

<template>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export default {
},
computed: {
title() {
return this.l(`Preferred Target Object Store ${this.titleSuffix || ""}`);
return this.l(`Preferred Target Storage Location ${this.titleSuffix || ""}`);
},
},
};
2 changes: 1 addition & 1 deletion client/src/components/Panels/Menus/PanelViewMenu.vue
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<b-button
v-if="showAdvanced"
variant="link"
class="w-100"
class="w-100 text-decoration-none"
size="sm"
@click="$emit('update:show-advanced', !showAdvanced)">
<slot name="panel-view-selector"></slot><span class="sr-only">Close advanced tool search menu</span>
Expand Down
2 changes: 1 addition & 1 deletion client/src/components/Tool/ToolCard.vue
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ const showHelpForum = computed(() => isConfigLoaded.value && config.value.enable
</ToolTargetPreferredObjectStorePopover>
<b-modal
v-model="showPreferredObjectStoreModal"
title="Tool Execution Preferred Object Store"
title="Tool Execution Preferred Storage Location"
modal-class="tool-preferred-object-store-modal"
title-tag="h3"
size="sm"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const props = withDefaults(defineProps<ToolSelectProps>(), {
});
const selectedObjectStoreId = ref<String | null>(props.toolPreferredObjectStoreId);
const newDatasetsDescription = "The default object store for the outputs of this tool";
const newDatasetsDescription = "The default storage location for the outputs of this tool";
const defaultOptionTitle = "Use Defaults";
const defaultOptionDescription =
"If the history has a default set, that will be used. If instead, you've set an option in your user preferences - that will be assumed to be your default selection. Finally, the Galaxy configuration will be used.";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<template v-slot:title>{{ title }}</template>
<div class="popover-wide">
<p v-if="toolPreferredObjectStoreId">
This target object store has been set at the tool level, by default history or user preferences will be
used and if those are not set Galaxy will pick an adminstrator configured default.
Preferred storage location has been set at the tool level, by default history or user preferences will
be used and if those are not set Galaxy will pick an administrator-configured default.
</p>
<ShowSelectedObjectStore
v-if="toolPreferredObjectStoreId"
Expand All @@ -15,7 +15,7 @@
No selection has been made for this tool execution. Defaults from history, user, or Galaxy will be used.
</div>
<div v-localize>
Change this preference object store target by clicking on the storage button in the tool header.
Change preferred storage location by clicking on the storage button in the tool header.
</div>
</div>
</b-popover>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ export default {
},
data() {
return {
loadingMessage: "Loading object store information",
loadingMessage: "Loading storage location information",
};
},
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ describe("UserPreferredObjectStore.vue", () => {
const wrapper = mountComponent();
expect(wrapper.vm.$refs["modal"].isHidden).toBeTruthy();
const el = await wrapper.find(ROOT_COMPONENT.preferences.object_store.selector);
expect(el.text()).toBeLocalizationOf("Preferred Object Store");
expect(el.text()).toBeLocalizationOf("Preferred Storage Location");
await el.trigger("click");
expect(wrapper.vm.$refs["modal"].isHidden).toBeFalsy();
});
Expand Down
6 changes: 3 additions & 3 deletions client/src/components/User/UserPreferredObjectStore.vue
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,17 @@
v-b-modal.modal-select-preferred-object-store
class="preferred-storage"
href="javascript:void(0)"
><b v-localize>Preferred Object Store</b></a
><b v-localize>Preferred Storage Location</b></a
>
<div v-localize class="form-text text-muted">
Select a preferred default object store for the outputs of new jobs to be created in.
Select a preferred storage location for the outputs of new jobs.
</div>
<BModal
id="modal-select-preferred-object-store"
ref="modal"
v-model="showModal"
centered
title="Preferred Object Store"
title="Preferred Storage Location"
:title-tag="titleTag"
hide-footer
static
Expand Down
23 changes: 19 additions & 4 deletions client/src/components/Workflow/InvocationsList.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,12 @@ describe("InvocationsList.vue", () => {
beforeEach(async () => {
axiosMock
.onGet("/api/invocations", {
params: { limit: 50, offset: 0, include_terminal: false, workflow_id: "abcde145678" },
params: {
limit: 50,
offset: 0,
include_terminal: false,
workflow_id: "abcde145678",
},
})
.reply(200, [], { total_matches: "0" });
const propsData = {
Expand Down Expand Up @@ -102,7 +107,13 @@ describe("InvocationsList.vue", () => {
beforeEach(async () => {
axiosMock
.onGet("/api/invocations", {
params: { limit: 50, offset: 0, include_terminal: false, history_id: "abcde145678" },
params: {
limit: 50,
offset: 0,
include_terminal: false,
history_id: "abcde145678",
include_nested_invocations: false,
},
})
.reply(200, [], { total_matches: "0" });
const propsData = {
Expand Down Expand Up @@ -132,7 +143,9 @@ describe("InvocationsList.vue", () => {
describe("with invocation", () => {
beforeEach(async () => {
axiosMock
.onGet("/api/invocations", { params: { limit: 50, offset: 0, include_terminal: false } })
.onGet("/api/invocations", {
params: { limit: 50, offset: 0, include_terminal: false, include_nested_invocations: false },
})
.reply(200, [mockInvocationData], { total_matches: "1" });
const propsData = {
ownerGrid: false,
Expand Down Expand Up @@ -202,7 +215,9 @@ describe("InvocationsList.vue", () => {
describe("paginations", () => {
beforeEach(async () => {
axiosMock
.onGet("/api/invocations", { params: { limit: 1, offset: 0, include_terminal: false } })
.onGet("/api/invocations", {
params: { limit: 1, offset: 0, include_terminal: false, include_nested_invocations: false },
})
.reply(200, [mockInvocationData], { total_matches: "3" });
const propsData = {
ownerGrid: false,
Expand Down
Loading

0 comments on commit 113430f

Please sign in to comment.