diff --git a/dist/index.js b/dist/index.js index a4118a28..95988e12 100644 --- a/dist/index.js +++ b/dist/index.js @@ -689,6 +689,11 @@ const paddedMonth = month.padStart(2, "0"); return `${paddedYear}-${paddedMonth}`; }; + static getISODateString = (year, month, date) => { + const monthString = _CalendarModel.getMonthString(year, month); + const paddedDate = date.padStart(2, "0"); + return `${monthString}-${paddedDate}`; + }; }; // src/colors.ts @@ -1582,7 +1587,7 @@ selectedTaskViewModel = new State(void 0); taskViewModels = new MapState(); // methods - createTask = (boardId) => { + createTaskFromBoardId = (boardId) => { const taskFileContent = this.boardsAndTasksModel.createTask(boardId); const taskViewModel = new TaskViewModel( this.coreViewModel, @@ -1656,6 +1661,23 @@ selectedMonth = new State(0); selectedDate = new State(0); monthGrid = new State(void 0); + // methods + createEvent = () => { + const taskFileContent = this.boardsAndTasksModel.createTask("events"); + taskFileContent.date = CalendarModel.getISODateString( + this.selectedYear.value.toString(), + this.selectedMonth.value.toString(), + this.selectedDate.value.toString() + ); + const taskViewModel = new TaskViewModel( + this.coreViewModel, + this.boardsAndTasksModel, + this, + taskFileContent + ); + this.selectTask(taskViewModel); + this.updateTaskIndices(); + }; // view getTaskMapState = (taskFileContent) => { if (this.monthGrid.value == null) return null; @@ -1997,6 +2019,9 @@ this.close(); }; // methods + createTask = () => { + this.createTaskFromBoardId(this.boardInfo.fileId); + }; handleDropWithinBoard = (category, status) => { const draggedObject = this.coreViewModel.draggedObject.value; if (draggedObject instanceof TaskViewModel == false) return; @@ -2522,7 +2547,9 @@ yearInputPlaceholder: "2000", monthInputPlaceholder: "01", /// - searchEventsHeadline: "Search Events" + searchEventsHeadline: "Search Events", + /// + events: "Events" } } }; @@ -2792,7 +2819,8 @@ "button", { class: "ghost", - "aria-label": translations.chatPage.task.createTaskButtonAudioLabel + "aria-label": translations.chatPage.task.createTaskButtonAudioLabel, + "on:click": calendarPageViewModel.createEvent }, /* @__PURE__ */ createElement("span", { class: "icon" }, "add") ))), /* @__PURE__ */ createElement("div", { class: "content", "children:set": mainContent }))), /* @__PURE__ */ createElement( diff --git a/src/Model/Files/calendarModel.ts b/src/Model/Files/calendarModel.ts index b5270118..50126694 100644 --- a/src/Model/Files/calendarModel.ts +++ b/src/Model/Files/calendarModel.ts @@ -112,6 +112,12 @@ export default class CalendarModel { const paddedMonth: string = month.padStart(2, "0"); return `${paddedYear}-${paddedMonth}`; }; + + static getISODateString = (year: string, month: string, date: string): string => { + const monthString: string = CalendarModel.getMonthString(year, month); + const paddedDate: string = date.padStart(2, "0"); + return `${monthString}-${paddedDate}`; + }; } export enum CalendarModelSubPaths { diff --git a/src/View/ChatPages/calendarPage.tsx b/src/View/ChatPages/calendarPage.tsx index 9fae6032..11e23bea 100644 --- a/src/View/ChatPages/calendarPage.tsx +++ b/src/View/ChatPages/calendarPage.tsx @@ -129,6 +129,7 @@ export function CalendarPage(calendarPageViewModel: CalendarPageViewModel) { aria-label={ translations.chatPage.task.createTaskButtonAudioLabel } + on:click={calendarPageViewModel.createEvent} > add diff --git a/src/View/translations.ts b/src/View/translations.ts index e71b4e07..d005b73b 100644 --- a/src/View/translations.ts +++ b/src/View/translations.ts @@ -200,7 +200,11 @@ const englishTranslations = { /// - searchEventsHeadline: "Search Events" + searchEventsHeadline: "Search Events", + + /// + + events: "Events", }, }, }; diff --git a/src/ViewModel/Pages/boardViewModel.ts b/src/ViewModel/Pages/boardViewModel.ts index 34419046..8d9160c4 100644 --- a/src/ViewModel/Pages/boardViewModel.ts +++ b/src/ViewModel/Pages/boardViewModel.ts @@ -7,7 +7,6 @@ import BoardsAndTasksModel, { import { Color } from "../../colors"; import CoreViewModel from "../Global/coreViewModel"; -import { IndexManager } from "../../Model/Utility/utility"; import StorageModel from "../../Model/Global/storageModel"; import TaskContainingPageViewModel from "./taskContainingPageViewModel"; import TaskPageViewModel from "./taskPageViewModel"; @@ -69,6 +68,10 @@ export default class BoardViewModel extends TaskContainingPageViewModel { }; // methods + createTask = (): void => { + this.createTaskFromBoardId(this.boardInfo.fileId); + } + handleDropWithinBoard = (category?: string, status?: string): void => { const draggedObject: any = this.coreViewModel.draggedObject.value; if (draggedObject instanceof TaskViewModel == false) return; diff --git a/src/ViewModel/Pages/calendarPageViewModel.ts b/src/ViewModel/Pages/calendarPageViewModel.ts index cf0e92b5..cb4daec7 100644 --- a/src/ViewModel/Pages/calendarPageViewModel.ts +++ b/src/ViewModel/Pages/calendarPageViewModel.ts @@ -39,6 +39,27 @@ export default class CalendarPageViewModel extends TaskContainingPageViewModel { monthGrid: React.State> | undefined> = new React.State(undefined); + // methods + createEvent = (): void => { + const taskFileContent: TaskFileContent = + this.boardsAndTasksModel.createTask("events"); + taskFileContent.date = CalendarModel.getISODateString( + this.selectedYear.value.toString(), + this.selectedMonth.value.toString(), + this.selectedDate.value.toString() + ); + + const taskViewModel: TaskViewModel = new TaskViewModel( + this.coreViewModel, + this.boardsAndTasksModel, + this, + taskFileContent + ); + + this.selectTask(taskViewModel); + this.updateTaskIndices(); + }; + // view getTaskMapState = ( taskFileContent: TaskFileContent @@ -70,7 +91,7 @@ export default class CalendarPageViewModel extends TaskContainingPageViewModel { const mapState: React.MapState | null = this.getTaskMapState(taskFileContent); mapState?.set(taskFileContent.fileId, taskViewModel); - + this.taskViewModels.set(taskFileContent.fileId, taskViewModel); }; diff --git a/src/ViewModel/Pages/taskContainingPageViewModel.ts b/src/ViewModel/Pages/taskContainingPageViewModel.ts index 493da890..6debfbf0 100644 --- a/src/ViewModel/Pages/taskContainingPageViewModel.ts +++ b/src/ViewModel/Pages/taskContainingPageViewModel.ts @@ -25,7 +25,7 @@ export default class TaskContainingPageViewModel { taskViewModels: React.MapState = new React.MapState(); // methods - createTask = (boardId: string): void => { + createTaskFromBoardId = (boardId: string): void => { const taskFileContent: TaskFileContent = this.boardsAndTasksModel.createTask(boardId); const taskViewModel: TaskViewModel = new TaskViewModel(