From 52b9eef54cd881c7b6d2767a383cc2028f649622 Mon Sep 17 00:00:00 2001 From: marlon-erler Date: Tue, 23 Jul 2024 13:51:27 +0200 Subject: [PATCH] consider board ids for selection --- dist/index.js | 32 +++++++++++++----------- src/View/ChatPages/taskPage.tsx | 31 +++++++++++++++-------- src/View/translations.ts | 1 + src/ViewModel/Pages/boardViewModel.ts | 5 ++-- src/ViewModel/Pages/taskPageViewModel.ts | 8 +++--- 5 files changed, 46 insertions(+), 31 deletions(-) diff --git a/dist/index.js b/dist/index.js index ba1074d1..63ed8887 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1438,8 +1438,8 @@ this.boardInfo = boardInfo; this.loadListRelevantData(); this.isSelected = createProxyState( - [this.taskPageViewModel.selectedBoard], - () => this.taskPageViewModel.selectedBoard.value == this + [this.taskPageViewModel.selectedBoardId], + () => this.taskPageViewModel.selectedBoardId.value == this.boardInfo.fileId ); this.color.subscribeSilent((newColor) => { this.applyColor(newColor); @@ -1455,7 +1455,7 @@ // state newBoardNameInput = new State(""); boardViewModels = new MapState(); - selectedBoard = new State(void 0); + selectedBoardId = new State(void 0); // guards cannotCreateBoard = createProxyState( [this.newBoardNameInput], @@ -1483,11 +1483,11 @@ this.boardViewModels.set(boardInfo.fileId, boardViewModel); }; selectBoard = (boardViewModel) => { - this.selectedBoard.value = boardViewModel; + this.selectedBoardId.value = boardViewModel.boardInfo.fileId; this.chatViewModel.displayedColor.value = boardViewModel.color.value; }; closeBoard = () => { - this.selectedBoard.value = void 0; + this.selectedBoardId.value = void 0; this.chatViewModel.resetColor(); }; // load @@ -1766,6 +1766,7 @@ createBoardButtonAudioLabel: "create board", /// noBoardSelected: "No board selected", + boardNotFound: "Board not found", /// closeBoard: "close board", showBoardSettingsButtonAudioLabel: "show board settigns", @@ -2085,16 +2086,17 @@ function TaskPage(taskPageViewModel) { taskPageViewModel.loadData(); const paneContent = createProxyState( - [taskPageViewModel.selectedBoard], + [taskPageViewModel.selectedBoardId], () => { - const selectedBoard = taskPageViewModel.selectedBoard.value; - if (selectedBoard == void 0) { - return [ - /* @__PURE__ */ createElement("div", { class: "pane align-center justify-center" }, /* @__PURE__ */ createElement("span", { class: "secondary" }, translations.chatPage.task.noBoardSelected)) - ]; - } else { - return BoardPage(selectedBoard); + const selectedBoardId = taskPageViewModel.selectedBoardId.value; + if (selectedBoardId == void 0) { + return /* @__PURE__ */ createElement("div", { class: "pane align-center justify-center" }, /* @__PURE__ */ createElement("span", { class: "secondary" }, translations.chatPage.task.noBoardSelected)); } + const selectedBoard = taskPageViewModel.boardViewModels.value.get(selectedBoardId); + if (selectedBoard == void 0) { + return /* @__PURE__ */ createElement("div", { class: "pane align-center justify-center" }, /* @__PURE__ */ createElement("span", { class: "secondary" }, translations.chatPage.task.boardNotFound)); + } + return BoardPage(selectedBoard); } ); const listPaneWrapper = /* @__PURE__ */ createElement("div", { class: "pane-wrapper side" }, /* @__PURE__ */ createElement("div", { class: "pane" }, /* @__PURE__ */ createElement("div", { class: "toolbar" }, /* @__PURE__ */ createElement("div", { class: "flex-row width-input" }, /* @__PURE__ */ createElement( @@ -2125,8 +2127,8 @@ } )))); const mainPageWrapper = /* @__PURE__ */ createElement("div", { class: "pane-wrapper", "children:set": paneContent }); - bulkSubscribe([taskPageViewModel.selectedBoard], () => { - const selectedBoard = taskPageViewModel.selectedBoard.value; + bulkSubscribe([taskPageViewModel.selectedBoardId], () => { + const selectedBoard = taskPageViewModel.selectedBoardId.value; if (selectedBoard == void 0) { listPaneWrapper.scrollIntoView(); } else { diff --git a/src/View/ChatPages/taskPage.tsx b/src/View/ChatPages/taskPage.tsx index a20f3f20..0d8a29be 100644 --- a/src/View/ChatPages/taskPage.tsx +++ b/src/View/ChatPages/taskPage.tsx @@ -9,20 +9,31 @@ export function TaskPage(taskPageViewModel: TaskPageViewModel) { taskPageViewModel.loadData(); const paneContent = React.createProxyState( - [taskPageViewModel.selectedBoard], + [taskPageViewModel.selectedBoardId], () => { - const selectedBoard = taskPageViewModel.selectedBoard.value; - if (selectedBoard == undefined) { - return [ + const selectedBoardId = taskPageViewModel.selectedBoardId.value; + if (selectedBoardId == undefined) { + return (
{translations.chatPage.task.noBoardSelected} -
, - ]; - } else { - return BoardPage(selectedBoard); + + ); } + const selectedBoard = + taskPageViewModel.boardViewModels.value.get(selectedBoardId); + if (selectedBoard == undefined) { + return ( +
+ + {translations.chatPage.task.boardNotFound} + +
+ ); + } + + return BoardPage(selectedBoard); } ); @@ -66,8 +77,8 @@ export function TaskPage(taskPageViewModel: TaskPageViewModel) {
); - React.bulkSubscribe([taskPageViewModel.selectedBoard], () => { - const selectedBoard = taskPageViewModel.selectedBoard.value; + React.bulkSubscribe([taskPageViewModel.selectedBoardId], () => { + const selectedBoard = taskPageViewModel.selectedBoardId.value; if (selectedBoard == undefined) { listPaneWrapper.scrollIntoView(); } else { diff --git a/src/View/translations.ts b/src/View/translations.ts index c97bf8a6..485746f5 100644 --- a/src/View/translations.ts +++ b/src/View/translations.ts @@ -134,6 +134,7 @@ const englishTranslations = { /// noBoardSelected: "No board selected", + boardNotFound: "Board not found", /// diff --git a/src/ViewModel/Pages/boardViewModel.ts b/src/ViewModel/Pages/boardViewModel.ts index b0e74051..1fd69d61 100644 --- a/src/ViewModel/Pages/boardViewModel.ts +++ b/src/ViewModel/Pages/boardViewModel.ts @@ -69,8 +69,9 @@ export default class BoardViewModel { this.loadListRelevantData(); this.isSelected = React.createProxyState( - [this.taskPageViewModel.selectedBoard], - () => this.taskPageViewModel.selectedBoard.value == this + [this.taskPageViewModel.selectedBoardId], + () => + this.taskPageViewModel.selectedBoardId.value == this.boardInfo.fileId ); this.color.subscribeSilent((newColor) => { diff --git a/src/ViewModel/Pages/taskPageViewModel.ts b/src/ViewModel/Pages/taskPageViewModel.ts index bdc71182..0fe78e04 100644 --- a/src/ViewModel/Pages/taskPageViewModel.ts +++ b/src/ViewModel/Pages/taskPageViewModel.ts @@ -22,8 +22,8 @@ export default class TaskPageViewModel { boardViewModels: React.MapState = new React.MapState(); - selectedBoard: React.State = new React.State< - BoardViewModel | undefined + selectedBoardId: React.State = new React.State< + string | undefined >(undefined); // guards @@ -64,12 +64,12 @@ export default class TaskPageViewModel { }; selectBoard = (boardViewModel: BoardViewModel): void => { - this.selectedBoard.value = boardViewModel; + this.selectedBoardId.value = boardViewModel.boardInfo.fileId; this.chatViewModel.displayedColor.value = boardViewModel.color.value; }; closeBoard = (): void => { - this.selectedBoard.value = undefined; + this.selectedBoardId.value = undefined; this.chatViewModel.resetColor(); };