diff --git a/apps/client/src/widgets/view_widgets/table_view/columns.ts b/apps/client/src/widgets/view_widgets/table_view/columns.ts index 9c56a03ce..12e87c9d6 100644 --- a/apps/client/src/widgets/view_widgets/table_view/columns.ts +++ b/apps/client/src/widgets/view_widgets/table_view/columns.ts @@ -41,7 +41,15 @@ const labelTypeMappings: Record> = { } }; -export function buildColumnDefinitions(info: AttributeDefinitionInformation[], movableRows: boolean, existingColumnData: ColumnDefinition[] | undefined, rowNumberHint: number, position?: number) { +interface BuildColumnArgs { + info: AttributeDefinitionInformation[]; + movableRows: boolean; + existingColumnData: ColumnDefinition[] | undefined; + rowNumberHint: number; + position?: number; +} + +export function buildColumnDefinitions({ info, movableRows, existingColumnData, rowNumberHint, position }: BuildColumnArgs) { let columnDefs: ColumnDefinition[] = [ { title: "#", diff --git a/apps/client/src/widgets/view_widgets/table_view/formatters.ts b/apps/client/src/widgets/view_widgets/table_view/formatters.ts index 92cfda386..de1e8793f 100644 --- a/apps/client/src/widgets/view_widgets/table_view/formatters.ts +++ b/apps/client/src/widgets/view_widgets/table_view/formatters.ts @@ -7,7 +7,7 @@ import FNote from "../../../entities/fnote.js"; * * The value of the cell must be the note ID. */ -export function NoteFormatter(cell: CellComponent, _formatterParams, onRendered) { +export function NoteFormatter(cell: CellComponent, _formatterParams, onRendered): string { let noteId = cell.getValue(); if (!noteId) { return ""; @@ -30,7 +30,7 @@ export function NoteFormatter(cell: CellComponent, _formatterParams, onRendered) if (cachedNote) { // Cache hit, build the link immediately const el = buildLink(cachedNote); - return el?.outerHTML; + return el?.outerHTML ?? ""; } else { // Cache miss, load the note asynchronously onRendered(async () => { @@ -44,9 +44,9 @@ export function NoteFormatter(cell: CellComponent, _formatterParams, onRendered) cell.getElement().appendChild(el); } }); - } - return ""; + return ""; + } } /** diff --git a/apps/client/src/widgets/view_widgets/table_view/index.ts b/apps/client/src/widgets/view_widgets/table_view/index.ts index 49f9d5409..f59a37fb0 100644 --- a/apps/client/src/widgets/view_widgets/table_view/index.ts +++ b/apps/client/src/widgets/view_widgets/table_view/index.ts @@ -141,7 +141,12 @@ export default class TableView extends ViewMode { const { definitions: rowData, hasSubtree: hasChildren, rowNumber } = await buildRowDefinitions(this.parentNote, info, this.maxDepth); this.rowNumberHint = rowNumber; const movableRows = canReorderRows(this.parentNote) && !hasChildren; - const columnDefs = buildColumnDefinitions(info, movableRows, this.persistentData.columns, this.rowNumberHint); + const columnDefs = buildColumnDefinitions({ + info, + movableRows, + existingColumnData: this.persistentData.columns, + rowNumberHint: this.rowNumberHint + }); let opts: Options = { layout: "fitDataFill", index: "branchId", @@ -228,7 +233,13 @@ export default class TableView extends ViewMode { } const info = getAttributeDefinitionInformation(this.parentNote); - const columnDefs = buildColumnDefinitions(info, !!this.api.options.movableRows, this.persistentData?.columns, this.colEditing?.getNewAttributePosition(), this.rowNumberHint); + const columnDefs = buildColumnDefinitions({ + info, + movableRows: !!this.api.options.movableRows, + existingColumnData: this.persistentData?.columns, + rowNumberHint: this.rowNumberHint, + position: this.colEditing?.getNewAttributePosition() + }); this.api.setColumns(columnDefs); this.colEditing?.resetNewAttributePosition(); }