From 85c749aac36d316d553a1669a1d188081a8a0456 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 31 Aug 2025 17:51:12 +0530 Subject: [PATCH 1/4] update: open side sheet when `many` type relationships. --- .../table-[table]/rows/cell/edit.svelte | 7 +++++++ .../table-[table]/rows/store.ts | 8 ++++++-- .../table-[table]/spreadsheet.svelte | 17 +++++------------ 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/cell/edit.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/cell/edit.svelte index e50ca76c63..fe051b226a 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/cell/edit.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/cell/edit.svelte @@ -10,11 +10,13 @@ row = $bindable(null), onChange = null, onRevert = null, + noInlineEdit = false, openSideSheet = null, onRowStructureUpdate = null }: { row: Models.Row; column: Columns; + noInlineEdit?: boolean; openSideSheet?: () => void; onChange?: (row: Models.DefaultRow) => void; onRevert?: (row: Models.DefaultRow) => void; @@ -27,6 +29,11 @@ onMount(() => { original = structuredClone(row); + if (noInlineEdit) { + openSideSheet?.(); + return; + } + const trigger = wrapperEl.querySelector('button.input') as HTMLButtonElement; if (trigger) { trigger.click(); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts index 97e6694c53..76ffa95caf 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts @@ -2,8 +2,12 @@ import { page } from '$app/state'; import type { Columns } from '../store'; import { type Models, Query } from '@appwrite.io/console'; -export function isRelationshipToMany(column: Models.ColumnRelationship) { - if (!column) return false; +export function isRelationshipToMany(col: Columns) { + if (!col) return false; + if (!isRelationship(col)) return false; + + const column = col as Models.ColumnRelationship; + if (!column?.relationType) return false; if (column?.side === 'child') { return !['oneToOne', 'oneToMany'].includes(column?.relationType); 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 3a03032bf8..c913349851 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 @@ -899,18 +899,10 @@ {/if} {:else} {@const itemsNum = row[columnId]?.length} - { - $databaseRelatedRowSheetOptions.show = true; - $databaseRelatedRowSheetOptions.rows = - row[columnId]; - $databaseRelatedRowSheetOptions.tableId = columnId; - }}> - Items - + Items {/if} {:else} {@const value = row[columnId]} @@ -960,6 +952,7 @@ {row} column={rowColumn} onRowStructureUpdate={updateRowContents} + noInlineEdit={isRelationshipToMany(rowColumn)} onChange={(row) => paginatedRows.update(index, row)} onRevert={(row) => paginatedRows.update(index, row)} openSideSheet={() => { From 5856c0951ae23323863086614ba5ce5ec5da3fb4 Mon Sep 17 00:00:00 2001 From: Darshan Date: Tue, 2 Sep 2025 18:08:12 +0530 Subject: [PATCH 2/4] update: show correct sidebar. --- .../table-[table]/spreadsheet.svelte | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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 c913349851..faef39c35d 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 @@ -468,6 +468,12 @@ } } + function openSideSheetForRelationsToMany(tableId: string, rows: string | Models.Row[]) { + $databaseRelatedRowSheetOptions.tableId = tableId; + $databaseRelatedRowSheetOptions.rows = rows; + $databaseRelatedRowSheetOptions.show = true; + } + async function onSelectSheetOption( action: HeaderCellAction | RowCellAction, columnId: string, @@ -957,7 +963,15 @@ onRevert={(row) => paginatedRows.update(index, row)} openSideSheet={() => { close(); /* closes the editor */ - onSelectSheetOption('update', null, 'row', row); + + if (isRelationshipToMany(rowColumn)) { + openSideSheetForRelationsToMany( + columnId, + row[columnId] + ); + } else { + onSelectSheetOption('update', null, 'row', row); + } }} /> From 995995314ca1c7eed8b6e1b7a4b7018abcb2af75 Mon Sep 17 00:00:00 2001 From: Darshan Date: Tue, 2 Sep 2025 18:46:42 +0530 Subject: [PATCH 3/4] fix: edit more in sheet for numbers. --- .../table-[table]/rows/columns/types/integer.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/types/integer.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/types/integer.svelte index e8da1e99e4..23e19cd3b5 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/types/integer.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/columns/types/integer.svelte @@ -15,7 +15,7 @@ label = undefined; } - $: if (limited) { + $: { column.min = isWithinSafeRange(column.min) ? column.min : Number.MIN_SAFE_INTEGER; column.max = isWithinSafeRange(column.max) ? column.max : Number.MAX_SAFE_INTEGER; } From eae4abd9d63e018373ee32d5659807e6c315af16 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 4 Sep 2025 09:28:57 +0530 Subject: [PATCH 4/4] address: rabbit's comment. --- .../database-[database]/table-[table]/rows/cell/edit.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/cell/edit.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/cell/edit.svelte index fe051b226a..4f1689ea39 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/cell/edit.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/cell/edit.svelte @@ -69,5 +69,5 @@ fromSpreadsheet label={undefined} bind:formValues={row} - on:click={openSideSheet} /> + on:click={() => openSideSheet?.()} />