diff --git a/src/lib/components/filters/index.ts b/src/lib/components/filters/index.ts index 2aeeebec2..eb4bd0f3d 100644 --- a/src/lib/components/filters/index.ts +++ b/src/lib/components/filters/index.ts @@ -1,7 +1,6 @@ export { default as Filters } from './filters.svelte'; export { default as TagList } from './tagList.svelte'; -export { default as FilterMenu } from './menu.svelte'; -export { default as FilterSubMenu } from './subMenu.svelte'; export { default as CustomFilters } from './customFilters.svelte'; export { default as QuickFilters } from './quickFilters.svelte'; +export { default as ParsedTagList } from './parsedTagList.svelte'; export { hasPageQueries, queryParamToMap, queries } from '$lib/components/filters/store'; diff --git a/src/lib/components/filters/appliedFilter.svelte b/src/lib/components/filters/parsedTagList.svelte similarity index 77% rename from src/lib/components/filters/appliedFilter.svelte rename to src/lib/components/filters/parsedTagList.svelte index 86ae82694..4b1faa05d 100644 --- a/src/lib/components/filters/appliedFilter.svelte +++ b/src/lib/components/filters/parsedTagList.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..d57939731 100644 --- a/src/lib/components/filters/quickFilters.svelte +++ b/src/lib/components/filters/quickFilters.svelte @@ -1,13 +1,16 @@ - {#each filterCols as filter} - {#if filter.options} - { - addFilterAndApply( - filter.id, - filter.title, - filter.operator, - e.detail.value, - filter?.array - ? (filter.options - .filter((opt) => opt.checked) - .map((opt) => opt.value) ?? []) - : [], - $columns, - analyticsSource - ); - }} - on:clear={() => { - filter.tag = null; - addFilterAndApply( - filter.id, - filter.title, - filter.operator, - null, - [], - $columns, - analyticsSource - ); - }} /> - {/if} - {/each} + {#if $parsedTags?.length} + + {:else} + + {/if} + + {#each filterCols as filter} + {#if filter.options} + { + addFilterAndApply( + filter.id, + filter.title, + filter.operator, + e.detail.value, + filter?.array + ? (filter.options + .filter((opt) => opt.checked) + .map((opt) => opt.value) ?? []) + : [], + $columns, + analyticsSource + ); + }} + on:clear={() => { + addFilterAndApply( + filter.id, + filter.title, + filter.operator, + null, + [], + $columns, + analyticsSource + ); + }} /> + {/if} + {/each} + 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/subMenu.svelte b/src/lib/components/filters/quickfiltersSubMenu.svelte similarity index 77% rename from src/lib/components/filters/subMenu.svelte rename to src/lib/components/filters/quickfiltersSubMenu.svelte index 0063578ef..23159f67e 100644 --- a/src/lib/components/filters/subMenu.svelte +++ b/src/lib/components/filters/quickfiltersSubMenu.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'; @@ -44,7 +34,7 @@
- + {filter.title} @@ -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/lib/components/filters/setFilters.ts b/src/lib/components/filters/setFilters.ts index fe8aa4ad3..cea0ba2ba 100644 --- a/src/lib/components/filters/setFilters.ts +++ b/src/lib/components/filters/setFilters.ts @@ -1,24 +1,25 @@ 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) => { if (filter.id === 'buildDuration') { setTimeFilter(filter, $columns); - } else if (filter.id.includes('size')) { + } else if (filter.id.toLocaleLowerCase().includes('size')) { setSizeFilter(filter, $columns); } else if (filter.id === 'statusCode') { setStatusCodeFilter(filter, $columns); @@ -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/git/connectGit.svelte b/src/lib/components/git/connectGit.svelte index f2d4f5250..9dbca0fc7 100644 --- a/src/lib/components/git/connectGit.svelte +++ b/src/lib/components/git/connectGit.svelte @@ -20,7 +20,11 @@ environment variables are configured.

- +
diff --git a/src/lib/components/git/repositories.svelte b/src/lib/components/git/repositories.svelte index bc7d43b55..a75ec80cd 100644 --- a/src/lib/components/git/repositories.svelte +++ b/src/lib/components/git/repositories.svelte @@ -30,11 +30,13 @@ export let installationList = $installations; export let product: 'functions' | 'sites' = 'functions'; + let search = ''; + let selectedInstallation = null; + $: { hasInstallations = installationList?.total > 0; } - let selectedInstallation = null; async function loadInstallations() { if (installationList) { if (installationList.installations.length) { @@ -56,7 +58,6 @@ } } - let search = ''; async function loadRepositories(installationId: string, search: string) { if ( !$repositories || @@ -91,7 +92,7 @@ $repository = $repositories.repositories[0]; } - return $repositories.repositories.slice(0, 4); + return $repositories.repositories; } diff --git a/src/lib/components/menu/index.ts b/src/lib/components/menu/index.ts new file mode 100644 index 000000000..1ba6002f9 --- /dev/null +++ b/src/lib/components/menu/index.ts @@ -0,0 +1,2 @@ +export { default as Menu } from './menu.svelte'; +export { default as SubMenu } from './subMenu.svelte'; diff --git a/src/lib/components/filters/menu.svelte b/src/lib/components/menu/menu.svelte similarity index 52% rename from src/lib/components/filters/menu.svelte rename to src/lib/components/menu/menu.svelte index b0dd7fcd5..28e674e9e 100644 --- a/src/lib/components/filters/menu.svelte +++ b/src/lib/components/menu/menu.svelte @@ -1,8 +1,5 @@
- {#if $tags.length} - - {:else} - - {/if} +
diff --git a/src/routes/(console)/project-[project]/sites/site-[site]/deployments/+page.svelte b/src/routes/(console)/project-[project]/sites/site-[site]/deployments/+page.svelte index 50fb2025f..e2a82b9a4 100644 --- a/src/routes/(console)/project-[project]/sites/site-[site]/deployments/+page.svelte +++ b/src/routes/(console)/project-[project]/sites/site-[site]/deployments/+page.svelte @@ -18,7 +18,7 @@ import { invalidate } from '$app/navigation'; import { Dependencies } from '$lib/constants'; import CreateCliModal from './createCliModal.svelte'; - import { QuickFilters } from '$lib/components/filters'; + import { ParsedTagList, QuickFilters } from '$lib/components/filters'; export let data; @@ -45,54 +45,57 @@ - - - {#if data.deploymentList.total || data?.query} - - {/if} - + + + + {#if data.deploymentList.total || data?.query} + + {/if} + - - {#if data.deploymentList.total} - - {/if} - - - - - { - toggle(e); - if (!hasInstallation) { - showConnectRepo = true; - } else { - showCreateDeployment = true; - } - }}> - Git - - { - toggle(e); - showConnectCLI = true; - }}> - CLI - - { - toggle(e); - showConnectManual = true; - }}> - Manual - - - - + + {#if data.deploymentList.total} + + {/if} + + + + + { + toggle(e); + if (!hasInstallation) { + showConnectRepo = true; + } else { + showCreateDeployment = true; + } + }}> + Git + + { + toggle(e); + showConnectCLI = true; + }}> + CLI + + { + toggle(e); + showConnectManual = true; + }}> + Manual + + + + + + {#if data.deploymentList.total} diff --git a/src/routes/(console)/project-[project]/sites/site-[site]/logs/+page.svelte b/src/routes/(console)/project-[project]/sites/site-[site]/logs/+page.svelte index 3b8fc9d94..ec1935eaf 100644 --- a/src/routes/(console)/project-[project]/sites/site-[site]/logs/+page.svelte +++ b/src/routes/(console)/project-[project]/sites/site-[site]/logs/+page.svelte @@ -7,11 +7,10 @@ import { sdk } from '$lib/stores/sdk'; import { onMount } from 'svelte'; import Table from './table.svelte'; - import { QuickFilters } from '$lib/components/filters'; + import { ParsedTagList, QuickFilters } from '$lib/components/filters'; import { Card, Empty, Layout } from '@appwrite.io/pink-svelte'; import { View } from '$lib/helpers/load'; import { columns } from './store'; - import AppliedFilter from '$lib/components/filters/appliedFilter.svelte'; export let data; @@ -35,7 +34,7 @@ {/if} - + {#if data?.logs?.total} diff --git a/src/routes/(console)/project-[project]/sites/site-[site]/settings/disconnectRepo.svelte b/src/routes/(console)/project-[project]/sites/site-[site]/settings/disconnectRepo.svelte index 9f83b36c3..5029895a5 100644 --- a/src/routes/(console)/project-[project]/sites/site-[site]/settings/disconnectRepo.svelte +++ b/src/routes/(console)/project-[project]/sites/site-[site]/settings/disconnectRepo.svelte @@ -27,7 +27,7 @@ site.buildCommand || undefined, site.outputDirectory || undefined, (site?.buildRuntime as BuildRuntime) || undefined, - site.adapter as Adapter, + (site?.adapter as Adapter) || undefined, site.fallbackFile || undefined, '', '',