mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 02:16:05 +01:00 
			
		
		
		
	add possibility to create week note, closes #416
This commit is contained in:
		| @@ -214,6 +214,16 @@ function BackendScriptApi(currentNote, apiParams) { | |||||||
|      */ |      */ | ||||||
|     this.getDateNote = dateNoteService.getDateNote; |     this.getDateNote = dateNoteService.getDateNote; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Returns note for the first date of the week of the given date. | ||||||
|  |      * | ||||||
|  |      * @method | ||||||
|  |      * @param {string} date in YYYY-MM-DD format | ||||||
|  |      * @param {object} options - "startOfTheWeek" - either "monday" (default) or "sunday" | ||||||
|  |      * @returns {Promise<Note|null>} | ||||||
|  |      */ | ||||||
|  |     this.getWeekNote = dateNoteService.getWeekNote; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Returns month note for given date. If such note doesn't exist, it is created. |      * Returns month note for given date. If such note doesn't exist, it is created. | ||||||
|      * |      * | ||||||
|   | |||||||
| @@ -48,6 +48,10 @@ async function getRootCalendarNote() { | |||||||
| } | } | ||||||
|  |  | ||||||
| async function getYearNote(dateStr, rootNote) { | async function getYearNote(dateStr, rootNote) { | ||||||
|  |     if (!rootNote) { | ||||||
|  |         rootNote = await getRootCalendarNote(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     const yearStr = dateStr.substr(0, 4); |     const yearStr = dateStr.substr(0, 4); | ||||||
|  |  | ||||||
|     let yearNote = await attributeService.getNoteWithLabel(YEAR_LABEL, yearStr); |     let yearNote = await attributeService.getNoteWithLabel(YEAR_LABEL, yearStr); | ||||||
| @@ -118,9 +122,37 @@ async function getDateNote(dateStr) { | |||||||
|     return dateNote; |     return dateNote; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | function getStartOfTheWeek(date, startOfTheWeek) { | ||||||
|  |     const day = date.getDay(); | ||||||
|  |     let diff; | ||||||
|  |  | ||||||
|  |     if (startOfTheWeek === 'monday') { | ||||||
|  |         diff = date.getDate() - day + (day === 0 ? -6 : 1); // adjust when day is sunday | ||||||
|  |     } | ||||||
|  |     else if (startOfTheWeek === 'sunday') { | ||||||
|  |         diff = date.getDate() - day; | ||||||
|  |     } | ||||||
|  |     else { | ||||||
|  |         throw new Error("Unrecognized start of the week " + startOfTheWeek); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     return new Date(date.setDate(diff)); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | async function getWeekNote(dateStr, options = {}) { | ||||||
|  |     const startOfTheWeek = options.startOfTheWeek || "monday"; | ||||||
|  |  | ||||||
|  |     const dateObj = getStartOfTheWeek(dateUtils.parseLocalDate(dateStr), startOfTheWeek); | ||||||
|  |  | ||||||
|  |     dateStr = dateUtils.dateStr(dateObj); | ||||||
|  |  | ||||||
|  |     return getDateNote(dateStr); | ||||||
|  | } | ||||||
|  |  | ||||||
| module.exports = { | module.exports = { | ||||||
|     getRootCalendarNote, |     getRootCalendarNote, | ||||||
|     getYearNote, |     getYearNote, | ||||||
|     getMonthNote, |     getMonthNote, | ||||||
|  |     getWeekNote, | ||||||
|     getDateNote |     getDateNote | ||||||
| }; | }; | ||||||
		Reference in New Issue
	
	Block a user