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(