diff --git a/client/src/components/Workflow/WorkflowFilters.js b/client/src/components/Workflow/WorkflowFilters.js index 1280b6e450a..a7c1f3f3b3c 100644 --- a/client/src/components/Workflow/WorkflowFilters.js +++ b/client/src/components/Workflow/WorkflowFilters.js @@ -116,6 +116,13 @@ export function WorkflowFilters(activeList = "my") { handler: equals("deleted", "deleted", toBool), menuItem: true, }, + bookmarked: { + placeholder: "Bookmarked", + type: Boolean, + boolType: "is", + handler: equals("bookmarked", "bookmarked", toBool), + menuItem: true, + }, }, undefined, false, diff --git a/client/src/components/Workflow/WorkflowList.vue b/client/src/components/Workflow/WorkflowList.vue index 3cbda017cc0..5de798bf580 100644 --- a/client/src/components/Workflow/WorkflowList.vue +++ b/client/src/components/Workflow/WorkflowList.vue @@ -44,7 +44,6 @@ const overlay = ref(false); const filterText = ref(""); const totalWorkflows = ref(0); const showAdvanced = ref(false); -const showBookmarked = ref(false); const listHeader = ref(null); const workflowsLoaded = ref([]); @@ -65,6 +64,7 @@ const searchPlaceHolder = computed(() => { const published = computed(() => props.activeList === "published"); const sharedWithMe = computed(() => props.activeList === "shared_with_me"); const showDeleted = computed(() => filterText.value.includes("is:deleted")); +const showBookmarked = computed(() => filterText.value.includes("is:bookmarked")); const currentPage = computed(() => Math.floor(offset.value / limit.value) + 1); const view = computed(() => (userStore.preferredListViewMode as ListView) || "grid"); const sortDesc = computed(() => (listHeader.value && listHeader.value.sortDesc) ?? true); @@ -91,17 +91,12 @@ function updateFilterValue(filterKey: string, newValue: any) { filterText.value = workflowFilters.value.setFilterValue(currentFilterText, filterKey, newValue); } -function toggleBookmarked(bookmarked?: boolean) { - showBookmarked.value = bookmarked ?? !showBookmarked.value; -} - function onToggleBookmarked() { - toggleBookmarked(); + updateFilterValue("bookmarked", true); } function onToggleDeleted() { updateFilterValue("deleted", true); - toggleBookmarked(false); } async function load(overlayLoading = false, silent = false) { @@ -141,9 +136,7 @@ async function load(overlayLoading = false, silent = false) { skipStepCounts: true, }); - let filteredWorkflows = showBookmarked.value - ? filter(data, (workflow: any) => workflow.show_in_tool_panel) - : data; + let filteredWorkflows = data; if (props.activeList === "my") { filteredWorkflows = filter(filteredWorkflows, (w: any) => w.owner === userStore.currentUser?.username); @@ -151,11 +144,7 @@ async function load(overlayLoading = false, silent = false) { workflowsLoaded.value = filteredWorkflows; - if (showBookmarked.value) { - totalWorkflows.value = filteredWorkflows.length; - } else { - totalWorkflows.value = parseInt(headers.get("Total_matches") || "0", 10) || 0; - } + totalWorkflows.value = parseInt(headers.get("Total_matches") || "0", 10) || 0; } catch (e) { Toast.error(`Failed to load workflows: ${e}`); } finally { @@ -181,7 +170,7 @@ function validatedFilterText() { return workflowFilters.value.getFilterText(validFilters.value, true); } -watch([filterText, sortBy, sortDesc, showBookmarked], async () => { +watch([filterText, sortBy, sortDesc], async () => { offset.value = 0; await load(true); }); @@ -261,7 +250,6 @@ onMounted(() => { size="sm" :title="bookmarkButtonTitle" :pressed="showBookmarked" - :disabled="showDeleted" variant="outline-primary" @click="onToggleBookmarked">