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) {
-
+
emit('update-filter', k, v)" />
{{ 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 {