diff --git a/packages/web/src/celldata/TableCellView.svelte b/packages/web/src/celldata/TableCellView.svelte new file mode 100644 index 000000000..11e2ed021 --- /dev/null +++ b/packages/web/src/celldata/TableCellView.svelte @@ -0,0 +1,356 @@ + + +
+
+ {#if rowData} +
+ + + + +
+ {/if} +
+ {#if !rowData} +
{_t('tableCell.noDataSelected', { defaultMessage: "No data selected" })}
+ {:else} + {#each filteredFields as field (field.uniqueName)} +
+
{field.columnName}
+
handleDoubleClick(field)} + > + {#if editingColumn === field.uniqueName} +
+ isChangedRef.set(true)} + on:keydown={e => handleKeyDown(e, field)} + on:blur={() => handleBlur(field)} + class="inline-editor" + /> + {#if editable && !field.hasMultipleValues} + { + editingColumn = null; + openEditModal(field); + }} + /> + {/if} +
+ {:else if field.hasMultipleValues} + ({_t('tableCell.multipleValues', { defaultMessage: "Multiple values" })}) + {:else} + + {#if isJsonValue(field.value)} + openJsonInNewTab(field)} + /> + {/if} + {/if} +
+
+ {/each} + {/if} +
+
+
+ + diff --git a/packages/web/src/datagrid/DataGridCore.svelte b/packages/web/src/datagrid/DataGridCore.svelte index 7eb775059..c3f1c07af 100644 --- a/packages/web/src/datagrid/DataGridCore.svelte +++ b/packages/web/src/datagrid/DataGridCore.svelte @@ -1258,9 +1258,27 @@ condition: display?.getChangeSetCondition(rowData), insertedRowIndex: grider?.getInsertedRowIndex(row), rowStatus: grider.getRowStatus(row), + onSetValue: value => grider.setCellValue(row, column, value), + editable: grider.editable, + editorTypes: display?.driver?.dataEditorTypesBehaviour, }; }) .filter(x => x.column); + + res.columns = columns; + res.realColumnUniqueNames = realColumnUniqueNames; + + if (res.length > 0) { + const uniqueRowIndices = _.uniq(res.map(x => x.row)); + res.setCellValue = (columnName, value) => { + grider.beginUpdate(); + for (const row of uniqueRowIndices) { + grider.setCellValue(row, columnName, value); + } + grider.endUpdate(); + }; + } + return res; } diff --git a/packages/web/src/widgets/CellDataWidget.svelte b/packages/web/src/widgets/CellDataWidget.svelte index 8175b86e8..22eb15d96 100644 --- a/packages/web/src/widgets/CellDataWidget.svelte +++ b/packages/web/src/widgets/CellDataWidget.svelte @@ -14,6 +14,12 @@ component: TextCellViewNoWrap, single: false, }, + { + type: 'table', + title: 'Table - Row', + component: TableCellView, + single: false, + }, { type: 'json', title: 'Json', @@ -92,6 +98,7 @@ import JsonRowView from '../celldata/JsonRowView.svelte'; import MapCellView from '../celldata/MapCellView.svelte'; import PictureCellView from '../celldata/PictureCellView.svelte'; + import TableCellView from '../celldata/TableCellView.svelte'; import TextCellViewNoWrap from '../celldata/TextCellViewNoWrap.svelte'; import TextCellViewWrap from '../celldata/TextCellViewWrap.svelte'; import ErrorInfo from '../elements/ErrorInfo.svelte';