From 086bf23bfbf5bda4f62815748dfa9cf68fbe4189 Mon Sep 17 00:00:00 2001 From: Arman Date: Wed, 12 Mar 2025 15:58:43 +0100 Subject: [PATCH] fix: tags --- ...pliedFilter.svelte => pasedTagList.svelte} | 11 ++-- .../components/filters/quickFilters.svelte | 6 +- src/lib/components/filters/quickFilters.ts | 6 -- src/lib/components/filters/setFilters.ts | 59 +++++++++++++------ src/lib/components/filters/subMenu.svelte | 26 ++------ .../executions/execute-function/+page.ts | 1 - .../(components)/addCollaboratorModal.svelte | 2 - .../sites/site-[site]/logs/+page.svelte | 2 +- 8 files changed, 54 insertions(+), 59 deletions(-) rename src/lib/components/filters/{appliedFilter.svelte => pasedTagList.svelte} (77%) diff --git a/src/lib/components/filters/appliedFilter.svelte b/src/lib/components/filters/pasedTagList.svelte similarity index 77% rename from src/lib/components/filters/appliedFilter.svelte rename to src/lib/components/filters/pasedTagList.svelte index 86ae82694..4b1faa05d 100644 --- a/src/lib/components/filters/appliedFilter.svelte +++ b/src/lib/components/filters/pasedTagList.svelte @@ -1,22 +1,23 @@ {#if $parsedTags?.length} {#each $parsedTags as tag} - + { - queries.removeFilter(tag); + const t = $tags.filter((t) => t.tag.includes(tag.tag.split(' ')[0])); + t.forEach((t) => (t ? queries.removeFilter(t) : null)); queries.apply(); parsedTags.update((tags) => tags.filter((t) => t.tag !== tag.tag)); }}> diff --git a/src/lib/components/filters/quickFilters.svelte b/src/lib/components/filters/quickFilters.svelte index 7cdff80a7..0b8c541e7 100644 --- a/src/lib/components/filters/quickFilters.svelte +++ b/src/lib/components/filters/quickFilters.svelte @@ -6,8 +6,8 @@ import { type Writable } from 'svelte/store'; import Menu from '$lib/components/filters/menu.svelte'; import { CustomFilters } from '$lib/components/filters'; - import { setFiltersOnNavigate } from '$lib/components/filters/setFilters'; - import { addFilterAndApply, buildFilterCol } from '$lib/components/filters/quickFilters'; + import { addFilterAndApply, buildFilterCol } from './quickFilters'; + import { setFiltersOnNavigate } from './setFilters'; export let columns: Writable; export let analyticsSource: string; @@ -22,6 +22,7 @@ const localTags = Array.from(localQueries.keys()); setFiltersOnNavigate(localTags, filterCols, $columns); + filterCols = filterCols; }); @@ -47,7 +48,6 @@ ); }} on:clear={() => { - filter.tag = null; addFilterAndApply( filter.id, filter.title, diff --git a/src/lib/components/filters/quickFilters.ts b/src/lib/components/filters/quickFilters.ts index 0bbe84fe3..fc09619b0 100644 --- a/src/lib/components/filters/quickFilters.ts +++ b/src/lib/components/filters/quickFilters.ts @@ -61,12 +61,6 @@ export function addFilterAndApply( }); } -export function resetOptions(filter: FilterData) { - filter.options.forEach((option) => { - option.checked = false; - }); -} - export function addStatusCodeFilter(value: string, colId: string, columns: Column[]) { addFilter(columns, colId, ValidOperators.LessThanOrEqual, parseInt(value)); addFilter(columns, colId, ValidOperators.GreaterThanOrEqual, parseInt(value) - 99); diff --git a/src/lib/components/filters/setFilters.ts b/src/lib/components/filters/setFilters.ts index fe8aa4ad3..812bd3436 100644 --- a/src/lib/components/filters/setFilters.ts +++ b/src/lib/components/filters/setFilters.ts @@ -1,18 +1,19 @@ import type { Column } from '$lib/helpers/types'; import { get, writable } from 'svelte/store'; -import { resetOptions, type FilterData } from './quickFilters'; +import { type FilterData } from './quickFilters'; import { tags, type TagValue } from './store'; export const parsedTags = writable([]); export function setFiltersOnNavigate( - tags: TagValue[], + localTags: TagValue[], filterCols: FilterData[], $columns: Column[] ) { - if (!tags?.length) { + if (!localTags?.length) { filterCols.forEach((filter) => { resetOptions(filter); + cleanOldTags(filter.title); }); } else { filterCols.forEach((filter) => { @@ -37,26 +38,25 @@ export function setFiltersOnNavigate( export function setFilterData(filter: FilterData) { const tagData = get(tags).find((tag) => tag.tag.includes(`**${filter.title}**`)); if (tagData) { - cleanOldTags(filter.title); - - filter.tag = tagData.tag; if (Array.isArray(tagData.value) && tagData.value?.length) { const values = tagData.value as string[]; filter.options.forEach((option) => { option.checked = values.includes(option.value); }); } + cleanOldTags(filter.title); const newTag = { tag: tagData.tag.replace(',', ' or '), value: tagData.value }; + parsedTags.update((tags) => { tags.push(newTag); return tags; }); } else { - filter.tag = null; resetOptions(filter); + cleanOldTags(filter.title); } } @@ -64,7 +64,6 @@ export function setTimeFilter(filter: FilterData, columns: Column[]) { const col = columns.find((c) => c.id === filter.id); const timeTag = get(tags).find((tag) => tag.tag.includes(`**${filter.title}**`)); if (timeTag) { - cleanOldTags(filter.title); const now = new Date(); const diff = now.getTime() - new Date(timeTag.value as string).getTime(); @@ -80,15 +79,16 @@ export function setTimeFilter(filter: FilterData, columns: Column[]) { tag: `**${filter.title}** is **${dateRange.label}**`, value: timeTag.value }; - filter.tag = `**${filter.title}** is **${dateRange.label}**`; - filter = filter; + + cleanOldTags(filter.title); + parsedTags.update((tags) => { tags.push(newTag); return tags; }); } } else { - filter.tag = null; + cleanOldTags(filter.title); } } @@ -106,11 +106,19 @@ export function setSizeFilter(filter: FilterData, columns: Column[]) { return prev; }); if (sizeRange) { - filter.tag = `**${filter.title}** is **${sizeRange.label}**`; - filter = filter; + cleanOldTags(filter.title); + + const newTag = { + tag: `**${filter.title}** is **${sizeRange.label}**`, + value: sizeTag.value + }; + parsedTags.update((tags) => { + tags.push(newTag); + return tags; + }); } } else { - filter.tag = null; + cleanOldTags(filter.title); } } @@ -123,11 +131,18 @@ export function setStatusCodeFilter(filter: FilterData, columns: Column[]) { const codeRange = ranges.find((c) => c?.value && c.value === statusCodeTag.value); if (codeRange) { - filter.tag = `**${filter.title}** is **${codeRange.label}**`; - filter = filter; + cleanOldTags(filter.title); + const newTag = { + tag: `**${filter.title}** is **${codeRange.label}**`, + value: statusCodeTag.value + }; + parsedTags.update((tags) => { + tags.push(newTag); + return tags; + }); } } else { - filter.tag = null; + cleanOldTags(filter.title); } } @@ -135,7 +150,6 @@ export function setDateFilter(filter: FilterData, columns: Column[]) { const dateTag = get(tags).find((tag) => tag.tag.includes(`**${filter.title}**`)); const col = columns.find((c) => c.id === filter.id); if (dateTag) { - cleanOldTags(filter.title); const now = new Date(); const diff = now.getTime() - new Date(dateTag.value as string).getTime(); @@ -147,6 +161,7 @@ export function setDateFilter(filter: FilterData, columns: Column[]) { return prev; }); if (dateRange) { + cleanOldTags(filter.title); const newTag = { tag: `**${filter.title}** is **${dateRange.label}**`, value: dateTag.value @@ -157,7 +172,7 @@ export function setDateFilter(filter: FilterData, columns: Column[]) { }); } } else { - filter.tag = null; + cleanOldTags(filter.title); } } @@ -167,3 +182,9 @@ function cleanOldTags(title: string) { return tags; }); } + +export function resetOptions(filter: FilterData) { + filter.options.forEach((option) => { + option.checked = false; + }); +} diff --git a/src/lib/components/filters/subMenu.svelte b/src/lib/components/filters/subMenu.svelte index 0063578ef..4824859ec 100644 --- a/src/lib/components/filters/subMenu.svelte +++ b/src/lib/components/filters/subMenu.svelte @@ -4,17 +4,7 @@ import { ActionMenu, Card, Layout, Selector } from '@appwrite.io/pink-svelte'; import { createMenubar, melt } from '@melt-ui/svelte'; import { createEventDispatcher } from 'svelte'; - import type { ValidOperators } from './store'; - - type FilterData = { - title: string; - id: string; - array: boolean; - show: boolean; - tag: string; - operator: ValidOperators; - options: { value: string; label: string; checked: boolean }[]; - }; + import type { FilterData } from './quickFilters'; export let filter: FilterData; export let variant: 'checkbox' | 'radio' = 'checkbox'; @@ -61,11 +51,7 @@ on:click={() => { option.checked = !option.checked; dispatch('add', { - value: filter?.array - ? null - : option.checked - ? option.value - : null + value: option.value }); }}> {capitalize(option.label)} @@ -79,15 +65,11 @@ on:click={() => { option.checked = !option.checked; dispatch('add', { - value: filter?.array - ? null - : option.checked - ? option.value - : null + value: option.checked }); }}> - + {capitalize(option.label)} diff --git a/src/routes/(console)/project-[project]/functions/function-[function]/executions/execute-function/+page.ts b/src/routes/(console)/project-[project]/functions/function-[function]/executions/execute-function/+page.ts index 1839e3613..7ee66a5a4 100644 --- a/src/routes/(console)/project-[project]/functions/function-[function]/executions/execute-function/+page.ts +++ b/src/routes/(console)/project-[project]/functions/function-[function]/executions/execute-function/+page.ts @@ -1,7 +1,6 @@ import { sdk } from '$lib/stores/sdk'; import { Dependencies } from '$lib/constants'; import type { PageLoad } from './$types'; -import { proxyRuleList } from '../../store'; export const load: PageLoad = async ({ params, depends, parent }) => { const data = await parent(); diff --git a/src/routes/(console)/project-[project]/sites/(components)/addCollaboratorModal.svelte b/src/routes/(console)/project-[project]/sites/(components)/addCollaboratorModal.svelte index c4ee16c58..e4e7d1c5f 100644 --- a/src/routes/(console)/project-[project]/sites/(components)/addCollaboratorModal.svelte +++ b/src/routes/(console)/project-[project]/sites/(components)/addCollaboratorModal.svelte @@ -12,7 +12,6 @@ import { Submit, trackEvent, trackError } from '$lib/actions/analytics'; import { roles } from '$lib/stores/billing'; import InputSelect from '$lib/elements/forms/inputSelect.svelte'; - import Roles from '$lib/components/roles/roles.svelte'; import { Layout } from '@appwrite.io/pink-svelte'; import { isCloud, isSelfHosted } from '$lib/system'; @@ -76,7 +75,6 @@ bind:value={email} /> {#if isCloud}