2025-02-15 10:13:47 +02:00
|
|
|
import ViewMode, { type ViewModeArgs } from "./view_mode.js";
|
2025-02-13 23:46:20 +02:00
|
|
|
|
|
|
|
const TPL = `
|
|
|
|
<div class="calendar-view">
|
|
|
|
<style>
|
|
|
|
.calendar-view {
|
|
|
|
overflow: hidden;
|
|
|
|
position: relative;
|
|
|
|
height: 100%;
|
2025-02-15 10:23:57 +02:00
|
|
|
user-select: none;
|
2025-02-15 10:35:14 +02:00
|
|
|
padding: 10px;
|
2025-02-13 23:46:20 +02:00
|
|
|
}
|
2025-02-15 10:24:40 +02:00
|
|
|
|
|
|
|
.calendar-view a {
|
|
|
|
color: unset;
|
|
|
|
}
|
2025-02-13 23:46:20 +02:00
|
|
|
</style>
|
|
|
|
|
2025-02-15 10:23:33 +02:00
|
|
|
<div class="calendar-container">
|
|
|
|
</div>
|
2025-02-13 23:46:20 +02:00
|
|
|
</div>
|
|
|
|
`;
|
|
|
|
|
|
|
|
export default class CalendarView extends ViewMode {
|
|
|
|
|
|
|
|
private $root: JQuery<HTMLElement>;
|
2025-02-15 10:23:33 +02:00
|
|
|
private $calendarContainer: JQuery<HTMLElement>;
|
2025-02-13 23:46:20 +02:00
|
|
|
|
2025-02-15 10:13:47 +02:00
|
|
|
constructor(args: ViewModeArgs) {
|
|
|
|
super(args);
|
2025-02-13 23:46:20 +02:00
|
|
|
|
|
|
|
this.$root = $(TPL);
|
2025-02-15 10:23:33 +02:00
|
|
|
this.$calendarContainer = this.$root.find(".calendar-container");
|
2025-02-15 10:13:47 +02:00
|
|
|
args.$parent.append(this.$root);
|
2025-02-13 23:46:20 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
async renderList(): Promise<JQuery<HTMLElement> | undefined> {
|
2025-02-15 10:23:33 +02:00
|
|
|
const { Calendar } = await import("@fullcalendar/core");
|
|
|
|
const dayGridPlugin = (await import("@fullcalendar/daygrid")).default;
|
|
|
|
|
|
|
|
const calendar = new Calendar(this.$calendarContainer[0], {
|
|
|
|
plugins: [ dayGridPlugin ],
|
|
|
|
initialView: "dayGridMonth"
|
|
|
|
});
|
|
|
|
calendar.render();
|
|
|
|
|
2025-02-13 23:46:20 +02:00
|
|
|
return this.$root;
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|