From a14a275f1f61f6f262e88167ddafd098469f9a3e Mon Sep 17 00:00:00 2001 From: marlon-erler Date: Fri, 26 Jul 2024 03:52:05 +0200 Subject: [PATCH] dynamically update calendar --- dist/index.js | 15 ++++++++++++++- src/ViewModel/Pages/calendarPageViewModel.ts | 19 +++++++++++++++++-- src/ViewModel/Pages/taskViewModel.ts | 2 ++ 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/dist/index.js b/dist/index.js index 0dde02a6..50f69da9 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1522,6 +1522,7 @@ this.boardViewModel.updateTaskIndices(); } if (this.calendarPageViewModel != null) { + this.calendarPageViewModel.showTask(newTaskFileContent); } }; deleteTask = () => { @@ -1531,6 +1532,7 @@ this.boardViewModel.removeTaskFromList(this.task.fileId); } if (this.calendarPageViewModel != null) { + this.calendarPageViewModel.removeTaskFromView(this.task); } }; // load @@ -1591,6 +1593,11 @@ bulkSubscribe([this.selectedYear, this.selectedMonth], () => { this.loadTasks(); }); + boardAndTasksModel.taskHandlerManager.addHandler( + (taskFileContent) => { + this.showTask(taskFileContent); + } + ); } storageModel; calendarModel; @@ -1621,6 +1628,12 @@ return this.monthGrid.value.days[dateString]; }; showTask = (taskFileContent) => { + const monthString = CalendarModel.isoToMonthString( + taskFileContent.date ?? "" + ); + if (monthString == void 0 || monthString != this.monthString) { + return; + } const taskViewModel = new TaskViewModel( this.coreViewModel, this.boardsAndTasksModel, @@ -1631,7 +1644,7 @@ const mapState = this.getTaskMapState(taskFileContent); mapState?.set(taskFileContent.fileId, taskViewModel); }; - removeTaskFromList = (taskFileContent) => { + removeTaskFromView = (taskFileContent) => { const mapState = this.getTaskMapState(taskFileContent); mapState?.remove(taskFileContent.fileId); }; diff --git a/src/ViewModel/Pages/calendarPageViewModel.ts b/src/ViewModel/Pages/calendarPageViewModel.ts index 4f5b6159..d730a9fd 100644 --- a/src/ViewModel/Pages/calendarPageViewModel.ts +++ b/src/ViewModel/Pages/calendarPageViewModel.ts @@ -49,6 +49,14 @@ export default class CalendarPageViewModel { }; showTask = (taskFileContent: TaskFileContent): void => { + const monthString: string | undefined = CalendarModel.isoToMonthString( + taskFileContent.date ?? "" + ); + if (monthString == undefined || monthString != this.monthString) { + // TODO remove + return; + } + const taskViewModel: TaskViewModel = new TaskViewModel( this.coreViewModel, this.boardsAndTasksModel, @@ -61,7 +69,7 @@ export default class CalendarPageViewModel { mapState?.set(taskFileContent.fileId, taskViewModel); }; - removeTaskFromList = (taskFileContent: TaskFileContent): void => { + removeTaskFromView = (taskFileContent: TaskFileContent): void => { const mapState: React.MapState | null = this.getTaskMapState(taskFileContent); mapState?.remove(taskFileContent.fileId); @@ -121,7 +129,7 @@ export default class CalendarPageViewModel { public coreViewModel: CoreViewModel, storageModel: StorageModel, calendarModel: CalendarModel, - boardAndTasksModel: BoardsAndTasksModel, + boardAndTasksModel: BoardsAndTasksModel ) { this.storageModel = storageModel; this.calendarModel = calendarModel; @@ -130,6 +138,13 @@ export default class CalendarPageViewModel { React.bulkSubscribe([this.selectedYear, this.selectedMonth], () => { this.loadTasks(); }); + + // handlers + boardAndTasksModel.taskHandlerManager.addHandler( + (taskFileContent: TaskFileContent) => { + this.showTask(taskFileContent); + } + ); } } diff --git a/src/ViewModel/Pages/taskViewModel.ts b/src/ViewModel/Pages/taskViewModel.ts index 70f877aa..94d52878 100644 --- a/src/ViewModel/Pages/taskViewModel.ts +++ b/src/ViewModel/Pages/taskViewModel.ts @@ -121,6 +121,7 @@ export default class TaskViewModel { this.boardViewModel.updateTaskIndices(); } if (this.calendarPageViewModel != null) { + this.calendarPageViewModel.showTask(newTaskFileContent); } }; @@ -132,6 +133,7 @@ export default class TaskViewModel { this.boardViewModel.removeTaskFromList(this.task.fileId); } if (this.calendarPageViewModel != null) { + this.calendarPageViewModel.removeTaskFromView(this.task); } };