diff --git a/packages/web/src/elements/ObjectListControl.svelte b/packages/web/src/elements/ObjectListControl.svelte index 41366ea2b..341bcd3ca 100644 --- a/packages/web/src/elements/ObjectListControl.svelte +++ b/packages/web/src/elements/ObjectListControl.svelte @@ -5,6 +5,7 @@ export let collection; export let columns; export let showIfEmpty = false; + export let clickable; @@ -24,6 +25,8 @@ }, ...columns, ]} + {clickable} + on:clickrow > @@ -75,4 +78,5 @@ .body { margin: 20px; } + diff --git a/packages/web/src/tableeditor/ColumnEditorModal.svelte b/packages/web/src/tableeditor/ColumnEditorModal.svelte index e33e768aa..7df02a2a0 100644 --- a/packages/web/src/tableeditor/ColumnEditorModal.svelte +++ b/packages/web/src/tableeditor/ColumnEditorModal.svelte @@ -1,4 +1,5 @@ - + + {columnInfo ? 'Edit column' : 'Add new column'} + @@ -27,12 +32,36 @@ { + on:click={e => { closeCurrentModal(); + if (columnInfo) { + setTableInfo(tbl => ({ + ...tbl, + columns: tbl.columns.map(col => (col.groupId == columnInfo.groupId ? e.detail : col)), + })); + } else { + setTableInfo(tbl => ({ + ...tbl, + columns: [...tbl.columns, { ...e.detail, groupId: uuidv1() }], + })); + } // onConfirm(); }} /> + {#if columnInfo} + { + closeCurrentModal(); + setTableInfo(tbl => ({ + ...tbl, + columns: tbl.columns.filter(col => col.groupId != columnInfo.groupId), + })); + }} + /> + {/if} diff --git a/packages/web/src/tableeditor/TableEditor.svelte b/packages/web/src/tableeditor/TableEditor.svelte index 1c4ec3a66..210d9afea 100644 --- a/packages/web/src/tableeditor/TableEditor.svelte +++ b/packages/web/src/tableeditor/TableEditor.svelte @@ -40,7 +40,7 @@ } export function addColumn() { - showModal(ColumnEditorModal, {}); + showModal(ColumnEditorModal, { setTableInfo }); } $: columns = tableInfo?.columns; @@ -54,6 +54,8 @@ ({ ...x, ordinal: index + 1 }))} title="Columns" + clickable={writable()} + on:clickrow={e => showModal(ColumnEditorModal, { columnInfo: e.detail, setTableInfo })} columns={[ { fieldName: 'notNull', diff --git a/packages/web/src/tabs/TableStructureTab.svelte b/packages/web/src/tabs/TableStructureTab.svelte index 3934e451c..a57ba4f95 100644 --- a/packages/web/src/tabs/TableStructureTab.svelte +++ b/packages/web/src/tabs/TableStructureTab.svelte @@ -35,4 +35,13 @@ - + + setEditorData(tbl => { + if (tbl) return tableInfoUpdater(tbl); + return tableInfoUpdater(tableInfoWithGroupId); + }) + : null} +/>