diff --git a/client/src/components/Grid/GridList.vue b/client/src/components/Grid/GridList.vue index cb0402f8350f..acf7dd58d470 100644 --- a/client/src/components/Grid/GridList.vue +++ b/client/src/components/Grid/GridList.vue @@ -378,7 +378,7 @@ watch(operationMessage, () => { :value="rowData[fieldEntry.key]" :disabled="fieldEntry.disabled" @input="onTagInput(rowData, $event, fieldEntry.handler)" - @tag-click="applyFilter('tag', $event)" /> + @tag-click="applyFilter('tag', $event, true)" /> Not available. diff --git a/client/src/components/Workflow/WorkflowCard.vue b/client/src/components/Workflow/WorkflowCard.vue index f82a13870038..70b52af65315 100644 --- a/client/src/components/Workflow/WorkflowCard.vue +++ b/client/src/components/Workflow/WorkflowCard.vue @@ -37,6 +37,7 @@ const props = withDefaults(defineProps(), { const emit = defineEmits<{ (e: "tagClick", tag: string): void; (e: "refreshList", overlayLoading?: boolean, b?: boolean): void; + (e: "update-filter", key: string, value: any): void; }>(); const userStore = useUserStore(); @@ -126,7 +127,10 @@ async function onTagClick(tag: string) {
- + {{ workflow.name }} diff --git a/client/src/components/Workflow/WorkflowIndicators.vue b/client/src/components/Workflow/WorkflowIndicators.vue index 340361143de1..225295b91398 100644 --- a/client/src/components/Workflow/WorkflowIndicators.vue +++ b/client/src/components/Workflow/WorkflowIndicators.vue @@ -21,6 +21,10 @@ interface Props { const props = defineProps(); +const emit = defineEmits<{ + (e: "update-filter", key: string, value: any): void; +}>(); + const router = useRouter(); const userStore = useUserStore(); @@ -69,10 +73,12 @@ function onCopyLink() { function onViewMySharedByUser() { router.push(`/workflows/list_shared_with_me?owner=${props.workflow.owner}`); + emit("update-filter", "user", `'${props.workflow.owner}'`); } function onViewUserPublished() { router.push(`/workflows/list_published?owner=${props.workflow.owner}`); + emit("update-filter", "user", `'${props.workflow.owner}'`); } diff --git a/client/src/components/Workflow/WorkflowList.vue b/client/src/components/Workflow/WorkflowList.vue index 865515ca4e86..9d8abcc2f7e1 100644 --- a/client/src/components/Workflow/WorkflowList.vue +++ b/client/src/components/Workflow/WorkflowList.vue @@ -169,7 +169,7 @@ watch([filterText, sortBy, sortDesc, showBookmarked], async () => { onMounted(() => { if (router.currentRoute.query.owner) { - updateFilterValue("user", router.currentRoute.query.owner); + updateFilterValue("user", `'${router.currentRoute.query.owner}'`); } load(); }); @@ -273,9 +273,9 @@ onMounted(() => { >: {{ value }} - Remove invalid filters from query + + Remove invalid filters from query + @@ -294,7 +294,8 @@ onMounted(() => { :grid-view="view === 'grid'" :class="view === 'grid' ? 'grid-view' : 'list-view'" @refreshList="load" - @tagClick="(tag) => updateFilterValue('tag', tag)" /> + @tagClick="(tag) => updateFilterValue('tag', `'${tag}'`)" + @update-filter="updateFilterValue" /> (value: T): string { /** Converts name tags starting with '#' to 'name:' * @param value - * @returns Lowercase value with 'name:' replaced with '#' + * @returns String value with 'name:' replaced with '#' * */ export function expandNameTag(value: T): string { if (value && typeof value === "string") { @@ -114,7 +114,7 @@ export function expandNameTag(value: T): string { value = value.replace(/^#/, "name:") as T; } } - return toLower(value); + return value as string; } /** Converts string alias to string operator, e.g.: 'gt' to '>' @@ -233,7 +233,9 @@ export function compare(attribute: string, variant: string, converter?: Conve * @param validAliases: Array of valid aliases for filters * @param quoteStrings: Whether to auto quote filter strings in the query * @param nameMatching: Whether to apply name filter for unspecified filterText - * (e.g. filterText = 'foo' -> 'name:foo') + * (e.g. filterText = 'foo' -> 'name:foo'). + * Typically, when this is false, we index every field in + * the backend for unspecified filterText. * @returns Filtering object * */ export default class Filtering { @@ -588,11 +590,10 @@ export default class Filtering { if (converter) { if ( (converter == toBool && filterValue == "any") || - (!backendFormatted && /^(['"]).*\1$/.test(filterValue as string)) + (!backendFormatted && /^(['"]).*\1$/.test(filterValue as string)) || + (!backendFormatted && ([expandNameTag, toDate] as Converter[]).includes(converter)) ) { return filterValue; - } else if (!backendFormatted && ([expandNameTag, toDate] as Converter[]).includes(converter)) { - return toLower(filterValue) as T; } return converter(filterValue); } else {