diff --git a/apps/client/src/widgets/view_widgets/board_view/api.ts b/apps/client/src/widgets/view_widgets/board_view/api.ts index 2cf6b8cc2..e579af428 100644 --- a/apps/client/src/widgets/view_widgets/board_view/api.ts +++ b/apps/client/src/widgets/view_widgets/board_view/api.ts @@ -14,18 +14,23 @@ export default class BoardApi { private _parentNoteId: string, private viewStorage: ViewModeStorage, private byColumn: ColumnMap, - private persistedData: BoardData) {} + private persistedData: BoardData, + private _statusAttribute: string) {} get columns() { return this._columns; } + get statusAttribute() { + return this._statusAttribute; + } + getColumn(column: string) { return this.byColumn.get(column); } async changeColumn(noteId: string, newColumn: string) { - await attributes.setLabel(noteId, "status", newColumn); + await attributes.setLabel(noteId, this._statusAttribute, newColumn); } openNote(noteId: string) { @@ -62,7 +67,7 @@ export default class BoardApi { await executeBulkActions(noteIds, [ { name: "updateLabelValue", - labelName: "status", + labelName: this._statusAttribute, labelValue: newValue } ]); @@ -82,7 +87,7 @@ export default class BoardApi { await executeBulkActions(noteIds, [ { name: "deleteLabel", - labelName: "status" + labelName: this._statusAttribute } ]); @@ -106,8 +111,10 @@ export default class BoardApi { } static async build(parentNote: FNote, viewStorage: ViewModeStorage) { + const statusAttribute = "status"; // This should match the attribute used for grouping + let persistedData = await viewStorage.restore() ?? {}; - const { byColumn, newPersistedData } = await getBoardData(parentNote, "status", persistedData); + const { byColumn, newPersistedData } = await getBoardData(parentNote, statusAttribute, persistedData); const columns = Array.from(byColumn.keys()) || []; if (newPersistedData) { @@ -115,7 +122,7 @@ export default class BoardApi { viewStorage.store(persistedData); } - return new BoardApi(columns, parentNote.noteId, viewStorage, byColumn, persistedData); + return new BoardApi(columns, parentNote.noteId, viewStorage, byColumn, persistedData, statusAttribute); } } diff --git a/apps/client/src/widgets/view_widgets/board_view/index.ts b/apps/client/src/widgets/view_widgets/board_view/index.ts index 8d28051dc..19f7f9bd9 100644 --- a/apps/client/src/widgets/view_widgets/board_view/index.ts +++ b/apps/client/src/widgets/view_widgets/board_view/index.ts @@ -425,7 +425,7 @@ export default class BoardView extends ViewMode { if (newNote) { // Set the status label to place it in the correct column - await attributeService.setLabel(newNote.noteId, "status", column); + await this.api?.changeColumn(newNote.noteId, column); // Refresh the board to show the new item await this.renderList(); @@ -442,7 +442,7 @@ export default class BoardView extends ViewMode { try { // Create the note without opening it const newNote = await this.api?.insertRowAtPosition(column, relativeToBranchId, direction, false); - + if (newNote) { // Refresh the board to show the new item await this.renderList(); @@ -540,8 +540,8 @@ export default class BoardView extends ViewMode { async onEntitiesReloaded({ loadResults }: EventData<"entitiesReloaded">) { // Check if any changes affect our board const hasRelevantChanges = - // React to changes in "status" attribute for notes in this board - loadResults.getAttributeRows().some(attr => attr.name === "status" && this.noteIds.includes(attr.noteId!)) || + // React to changes in status attribute for notes in this board + loadResults.getAttributeRows().some(attr => attr.name === this.api?.statusAttribute && this.noteIds.includes(attr.noteId!)) || // React to changes in note title loadResults.getNoteIds().some(noteId => this.noteIds.includes(noteId)) || // React to changes in branches for subchildren (e.g., moved, added, or removed notes)