mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-08-11 11:02:27 +08:00
feat: 🎸 clone week note when it cross month
This commit is contained in:
parent
198842de31
commit
fc84729229
@ -241,11 +241,6 @@ interface Api {
|
|||||||
*/
|
*/
|
||||||
getWeekFirstDayNote(
|
getWeekFirstDayNote(
|
||||||
date: string,
|
date: string,
|
||||||
options: {
|
|
||||||
// TODO: Deduplicate type with date_notes.ts once ES modules are added.
|
|
||||||
/** either "monday" (default) or "sunday" */
|
|
||||||
startOfTheWeek: "monday" | "sunday";
|
|
||||||
},
|
|
||||||
rootNote: BNote
|
rootNote: BNote
|
||||||
): BNote | null;
|
): BNote | null;
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ import { t } from "i18next";
|
|||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import type { Dayjs } from "dayjs";
|
import type { Dayjs } from "dayjs";
|
||||||
import isSameOrAfter from "dayjs/plugin/isSameOrAfter.js";
|
import isSameOrAfter from "dayjs/plugin/isSameOrAfter.js";
|
||||||
|
import cloningService from "./cloning.js";
|
||||||
|
|
||||||
dayjs.extend(isSameOrAfter);
|
dayjs.extend(isSameOrAfter);
|
||||||
|
|
||||||
@ -353,8 +354,13 @@ function getWeekNote(weekStr: string, _rootNote: BNote | null = null): BNote | n
|
|||||||
weekStartDate.setDate(firstDayOfYear.getDate() + (weekNumber - 1) * 7);
|
weekStartDate.setDate(firstDayOfYear.getDate() + (weekNumber - 1) * 7);
|
||||||
|
|
||||||
const startDate = getWeekStartDate(weekStartDate, optionService.getOption("firstDayOfWeek") === '0' ? 'sunday' : 'monday');
|
const startDate = getWeekStartDate(weekStartDate, optionService.getOption("firstDayOfWeek") === '0' ? 'sunday' : 'monday');
|
||||||
const monthNote = getMonthNote(dateUtils.utcDateStr(startDate), rootNote);
|
const endDate = new Date(startDate);
|
||||||
|
endDate.setDate(startDate.getDate() + 6);
|
||||||
|
|
||||||
|
const startMonth = startDate.getMonth();
|
||||||
|
const endMonth = endDate.getMonth();
|
||||||
|
|
||||||
|
const monthNote = getMonthNote(dateUtils.utcDateStr(startDate), rootNote);
|
||||||
const noteTitle = getWeekNoteTitle(rootNote, weekNumber);
|
const noteTitle = getWeekNoteTitle(rootNote, weekNumber);
|
||||||
|
|
||||||
sql.transactional(() => {
|
sql.transactional(() => {
|
||||||
@ -368,6 +374,12 @@ function getWeekNote(weekStr: string, _rootNote: BNote | null = null): BNote | n
|
|||||||
if (weekTemplateAttr) {
|
if (weekTemplateAttr) {
|
||||||
attributeService.createRelation(weekNote.noteId, "template", weekTemplateAttr.value);
|
attributeService.createRelation(weekNote.noteId, "template", weekTemplateAttr.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If the week spans different months, clone the week note in the other month as well
|
||||||
|
if (startMonth !== endMonth) {
|
||||||
|
const secondMonthNote = getMonthNote(dateUtils.utcDateStr(endDate), rootNote);
|
||||||
|
cloningService.cloneNoteToParentNote(weekNote.noteId, secondMonthNote.noteId);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return weekNote as unknown as BNote;
|
return weekNote as unknown as BNote;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user