feat(calendar_view): allow rendering by custom attribute

This commit is contained in:
Elian Doran 2025-02-15 11:13:44 +02:00
parent 8111352300
commit 10b2d19710
No known key found for this signature in database

View File

@ -1,6 +1,7 @@
import type { EventSourceInput } from "@fullcalendar/core"; import type { EventSourceInput } from "@fullcalendar/core";
import froca from "../../services/froca.js"; import froca from "../../services/froca.js";
import ViewMode, { type ViewModeArgs } from "./view_mode.js"; import ViewMode, { type ViewModeArgs } from "./view_mode.js";
import type FNote from "../../entities/fnote.js";
const TPL = ` const TPL = `
<div class="calendar-view"> <div class="calendar-view">
@ -58,12 +59,14 @@ export default class CalendarView extends ViewMode {
for (const note of notes) { for (const note of notes) {
const startDate = note.getAttributeValue("label", "startDate"); const startDate = note.getAttributeValue("label", "startDate");
const customTitle = note.getAttributeValue("label", "calendar:title");
if (!startDate) { if (!startDate) {
continue; continue;
} }
const eventData: typeof events[0] = { const eventData: typeof events[0] = {
title: note.title, title: CalendarView.#parseCustomTitle(customTitle, note),
start: startDate start: startDate
}; };
@ -80,4 +83,15 @@ export default class CalendarView extends ViewMode {
return events; return events;
} }
static #parseCustomTitle(customTitleValue: string | null, note: FNote) {
if (customTitleValue && customTitleValue.startsWith("#")) {
const labelValue = note.getAttributeValue("label", customTitleValue.substring(1));
if (labelValue) {
return labelValue;
}
}
return note.title;
}
} }