From b7c613bdf83a2c21ef84a8c3a2fd60004bc3a1ee Mon Sep 17 00:00:00 2001 From: Darshan Date: Fri, 19 Sep 2025 20:07:01 +0530 Subject: [PATCH] fix: data not persisting, options not loading. --- .../rows/columns/columnForm.svelte | 14 +- .../rows/columns/columnItem.svelte | 23 ++- .../rows/columns/types/relationship.svelte | 141 +++++++++++------- .../table-[table]/rows/create.svelte | 3 +- .../table-[table]/spreadsheet.svelte | 18 +-- 5 files changed, 114 insertions(+), 85 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/columnForm.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/columnForm.svelte index 0bb7fcf44..bc18cc0f1 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/columnForm.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/columnForm.svelte @@ -5,11 +5,17 @@ import ColumnItem from './columnItem.svelte'; import { IconPencil } from '@appwrite.io/pink-icons-svelte'; - export let columns: Columns[] = []; - export let formValues: object = {}; - export let customId: string | null | undefined = undefined; + let { + columns = [], + formValues = $bindable({}), + customId = $bindable(undefined) + }: { + columns: Columns[]; + formValues: object; + customId: string | null | undefined; + } = $props(); - let showCustomId = false; + let showCustomId = $state(false); {#if columns.length} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/columnItem.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/columnItem.svelte index b8dc1dd58..f9214261a 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/columnItem.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/columnItem.svelte @@ -28,22 +28,18 @@ function removeArrayItem(key: string, index: number) { const currentArray = Array.isArray($formStore[key]) ? $formStore[key] : []; const filteredArray = currentArray.filter((_: object, i: number) => i !== index); - const next = { - ...formValues, - [key]: filteredArray.length === 0 ? [] : filteredArray - }; - - formStore.set(next); + formStore.update((values) => { + values[key] = filteredArray.length === 0 ? [] : filteredArray; + return values; + }); } function addArrayItem(key: string) { const currentArray = Array.isArray($formStore[key]) ? $formStore[key] : null; - const next = { - ...formValues, - [key]: currentArray ? [...currentArray, null] : [null] - }; - - formStore.set(next); + formStore.update((values) => { + values[key] = currentArray ? [...currentArray, null] : [null]; + return values; + }); } function getColumnType(column: Columns) { @@ -58,8 +54,7 @@ case 'enum': return 'Enum'; default: - 'String'; - break; + return 'String'; } } return `${capitalize(column.type)}${column.array ? '[]' : ''}`; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/types/relationship.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/types/relationship.svelte index a40747bf6..8c611102a 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/types/relationship.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/types/relationship.svelte @@ -69,7 +69,8 @@ } else { if (value && typeof value === 'object') { row = value as Models.Row; - singleRel = row?.$id; + // set for combobox and select. + newItemValue = singleRel = row?.$id; } } }); @@ -368,23 +369,26 @@ {#if showInput} - - + {@const availableOptions = getAvailableOptions()} + {#key availableOptions} + + -
- -
-
+
+ +
+
+ {/key} {/if} @@ -400,44 +404,75 @@ {:else} - { - if (newItemValue === null) { - value = null; - singleRel = null; - } else { - const selectedRow = rowList.rows.find((row) => row.$id === newItemValue); + {#key options} + {#if limited} + + { + if (newItemValue === null) { + value = null; + singleRel = null; + } else { + const selectedRow = rowList.rows.find( + (row) => row.$id === newItemValue + ); - if (selectedRow) { - value = selectedRow; - singleRel = newItemValue; - } - } + if (selectedRow) { + value = selectedRow; + singleRel = newItemValue; + } + } + }} + leadingIcon={!limited ? IconRelationship : undefined} /> + {:else} + { + if (newItemValue === null) { + value = null; + singleRel = null; + } else { + const selectedRow = rowList.rows.find( + (row) => row.$id === newItemValue + ); - newItemValue = null; - }} - leadingIcon={!limited ? IconRelationship : undefined} /> + if (selectedRow) { + value = selectedRow; + singleRel = newItemValue; + } + } + }} + leadingIcon={!limited ? IconRelationship : undefined} /> + {/if} - {#if !limited && singleRel} -
- -
- {/if} + {#if !limited && singleRel} +
+ +
+ {/if} + {/key}
{/if} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/create.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/create.svelte index 0f1e77295..ca59db0d5 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/create.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/create.svelte @@ -109,7 +109,8 @@ trackEvent(Submit.RowCreate, { customId: !!$createRow.id }); - await invalidate(Dependencies.ROW); + + await invalidate(Dependencies.ROWS); if (createMore) { resetCreateRow(); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte index 6f1ea8681..9dccc828e 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte @@ -4,7 +4,7 @@ import { Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { Confirm, Id, SortButton } from '$lib/components'; import { Dependencies, SPREADSHEET_PAGE_LIMIT } from '$lib/constants'; - import { Button as ConsoleButton, InputChoice, InputSelect } from '$lib/elements/forms'; + import { Button as ConsoleButton, InputSelect } from '$lib/elements/forms'; import { addNotification } from '$lib/stores/notifications'; import { preferences } from '$lib/stores/preferences'; import { sdk } from '$lib/stores/sdk'; @@ -121,7 +121,6 @@ let showDelete = false; let showColumnDelete = false; - let deleteConfirmationChecked = false; let selectedRowForDelete: Models.Row['$id'] | null = null; onMount(async () => { @@ -1087,8 +1086,12 @@ {@const isSingle = selectedRowForDelete !== null} @@ -1139,17 +1142,6 @@ To change the selection edit the relationship settings. - -
    - - Delete {isSingle ? 'row' : 'rows'} from - {$table.name} - -
{:else}

This action is irreversible.