| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  | import noteService = require('./notes'); | 
					
						
							|  |  |  | import attributeService = require('./attributes'); | 
					
						
							|  |  |  | import dateUtils = require('./date_utils'); | 
					
						
							|  |  |  | import sql = require('./sql'); | 
					
						
							|  |  |  | import protectedSessionService = require('./protected_session'); | 
					
						
							|  |  |  | import searchService = require('../services/search/services/search'); | 
					
						
							|  |  |  | import SearchContext = require('../services/search/search_context'); | 
					
						
							|  |  |  | import hoistedNoteService = require('./hoisted_note'); | 
					
						
							|  |  |  | import BNote = require('../becca/entities/bnote'); | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-02 21:56:55 -04:00
										 |  |  | const CALENDAR_ROOT_LABEL = 'calendarRoot'; | 
					
						
							| 
									
										
										
										
											2018-04-04 23:04:31 -04:00
										 |  |  | const YEAR_LABEL = 'yearNote'; | 
					
						
							|  |  |  | const MONTH_LABEL = 'monthNote'; | 
					
						
							|  |  |  | const DATE_LABEL = 'dateNote'; | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 13:53:35 -05:00
										 |  |  | const DAYS = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; | 
					
						
							|  |  |  | const MONTHS = ['January','February','March','April','May','June','July','August','September','October','November','December']; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  | type StartOfWeek = "monday" | "sunday"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function createNote(parentNote: BNote, noteTitle: string) { | 
					
						
							| 
									
										
										
										
											2020-12-21 23:00:39 +01:00
										 |  |  |     return noteService.createNewNote({ | 
					
						
							|  |  |  |         parentNoteId: parentNote.noteId, | 
					
						
							| 
									
										
										
										
											2018-01-28 19:30:14 -05:00
										 |  |  |         title: noteTitle, | 
					
						
							| 
									
										
										
										
											2019-11-21 21:12:07 +01:00
										 |  |  |         content: '', | 
					
						
							| 
									
										
										
										
											2020-12-21 23:00:39 +01:00
										 |  |  |         isProtected: parentNote.isProtected && protectedSessionService.isProtectedSessionAvailable(), | 
					
						
							| 
									
										
										
										
											2019-11-21 21:12:07 +01:00
										 |  |  |         type: 'text' | 
					
						
							| 
									
										
										
										
											2020-12-21 23:00:39 +01:00
										 |  |  |     }).note; | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  | function getRootCalendarNote(): BNote { | 
					
						
							| 
									
										
										
										
											2022-07-31 09:33:14 +02:00
										 |  |  |     let rootNote; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-23 15:07:48 +01:00
										 |  |  |     const workspaceNote = hoistedNoteService.getWorkspaceNote(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  |     if (!workspaceNote || !workspaceNote.isRoot()) { | 
					
						
							| 
									
										
										
										
											2022-07-31 09:33:14 +02:00
										 |  |  |         rootNote = searchService.findFirstNoteWithQuery('#workspaceCalendarRoot', new SearchContext({ignoreHoistedNote: false})); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-02 18:25:05 +02:00
										 |  |  |     if (!rootNote) { | 
					
						
							| 
									
										
										
										
											2022-07-31 09:33:14 +02:00
										 |  |  |         rootNote = attributeService.getNoteWithLabel(CALENDAR_ROOT_LABEL); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-07 13:03:16 -04:00
										 |  |  |     if (!rootNote) { | 
					
						
							| 
									
										
										
										
											2020-08-18 21:32:45 +02:00
										 |  |  |         sql.transactional(() => { | 
					
						
							|  |  |  |             rootNote = noteService.createNewNote({ | 
					
						
							|  |  |  |                 parentNoteId: 'root', | 
					
						
							|  |  |  |                 title: 'Calendar', | 
					
						
							|  |  |  |                 target: 'into', | 
					
						
							|  |  |  |                 isProtected: false, | 
					
						
							|  |  |  |                 type: 'text', | 
					
						
							|  |  |  |                 content: '' | 
					
						
							|  |  |  |             }).note; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             attributeService.createLabel(rootNote.noteId, CALENDAR_ROOT_LABEL); | 
					
						
							|  |  |  |             attributeService.createLabel(rootNote.noteId, 'sorted'); | 
					
						
							|  |  |  |         }); | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  |     return rootNote as BNote; | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  | function getYearNote(dateStr: string, _rootNote: BNote | null = null): BNote { | 
					
						
							|  |  |  |     const rootNote = _rootNote || getRootCalendarNote(); | 
					
						
							| 
									
										
										
										
											2019-02-19 22:49:57 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-27 20:48:14 +01:00
										 |  |  |     const yearStr = dateStr.trim().substr(0, 4); | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-31 09:33:14 +02:00
										 |  |  |     let yearNote = searchService.findFirstNoteWithQuery(`#${YEAR_LABEL}="${yearStr}"`, | 
					
						
							|  |  |  |             new SearchContext({ancestorNoteId: rootNote.noteId})); | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |     if (yearNote) { | 
					
						
							|  |  |  |         return yearNote; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |     sql.transactional(() => { | 
					
						
							|  |  |  |         yearNote = createNote(rootNote, yearStr); | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |         attributeService.createLabel(yearNote.noteId, YEAR_LABEL, yearStr); | 
					
						
							|  |  |  |         attributeService.createLabel(yearNote.noteId, 'sorted'); | 
					
						
							| 
									
										
										
										
											2019-09-07 21:40:18 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |         const yearTemplateAttr = rootNote.getOwnedAttribute('relation', 'yearTemplate'); | 
					
						
							| 
									
										
										
										
											2019-09-07 21:40:18 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |         if (yearTemplateAttr) { | 
					
						
							|  |  |  |             attributeService.createRelation(yearNote.noteId, 'template', yearTemplateAttr.value); | 
					
						
							| 
									
										
										
										
											2019-09-07 21:40:18 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  |     return yearNote as unknown as BNote; | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  | function getMonthNoteTitle(rootNote: BNote, monthNumber: string, dateObj: Date) { | 
					
						
							| 
									
										
										
										
											2020-06-20 12:31:38 +02:00
										 |  |  |     const pattern = rootNote.getOwnedLabelValue("monthPattern") || "{monthNumberPadded} - {month}"; | 
					
						
							| 
									
										
										
										
											2019-05-19 11:30:17 +02:00
										 |  |  |     const monthName = MONTHS[dateObj.getMonth()]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return pattern | 
					
						
							| 
									
										
										
										
											2023-09-12 07:35:46 +10:00
										 |  |  |         .replace(/{shortMonth3}/g, monthName.slice(0,3)) | 
					
						
							|  |  |  |         .replace(/{shortMonth4}/g, monthName.slice(0,4)) | 
					
						
							| 
									
										
										
										
											2019-05-19 11:30:17 +02:00
										 |  |  |         .replace(/{monthNumberPadded}/g, monthNumber) | 
					
						
							|  |  |  |         .replace(/{month}/g, monthName); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  | function getMonthNote(dateStr: string, _rootNote: BNote | null = null): BNote { | 
					
						
							|  |  |  |     const rootNote = _rootNote || getRootCalendarNote(); | 
					
						
							| 
									
										
										
										
											2019-09-07 21:40:18 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-01-15 23:46:01 +01:00
										 |  |  |     const monthStr = dateStr.substr(0, 7); | 
					
						
							|  |  |  |     const monthNumber = dateStr.substr(5, 2); | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-31 09:33:14 +02:00
										 |  |  |     let monthNote = searchService.findFirstNoteWithQuery(`#${MONTH_LABEL}="${monthStr}"`, | 
					
						
							|  |  |  |         new SearchContext({ancestorNoteId: rootNote.noteId})); | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |     if (monthNote) { | 
					
						
							|  |  |  |         return monthNote; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const dateObj = dateUtils.parseLocalDate(dateStr); | 
					
						
							| 
									
										
										
										
											2018-02-10 13:53:35 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |     const noteTitle = getMonthNoteTitle(rootNote, monthNumber, dateObj); | 
					
						
							| 
									
										
										
										
											2018-02-10 13:53:35 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-11 14:15:38 +01:00
										 |  |  |     const yearNote = getYearNote(dateStr, rootNote); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |     sql.transactional(() => { | 
					
						
							|  |  |  |         monthNote = createNote(yearNote, noteTitle); | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |         attributeService.createLabel(monthNote.noteId, MONTH_LABEL, monthStr); | 
					
						
							|  |  |  |         attributeService.createLabel(monthNote.noteId, 'sorted'); | 
					
						
							| 
									
										
										
										
											2019-09-07 21:40:18 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |         const monthTemplateAttr = rootNote.getOwnedAttribute('relation', 'monthTemplate'); | 
					
						
							| 
									
										
										
										
											2019-09-07 21:40:18 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |         if (monthTemplateAttr) { | 
					
						
							|  |  |  |             attributeService.createRelation(monthNote.noteId, 'template', monthTemplateAttr.value); | 
					
						
							| 
									
										
										
										
											2019-09-07 21:40:18 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  |     return monthNote as unknown as BNote; | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  | function getDayNoteTitle(rootNote: BNote, dayNumber: string, dateObj: Date) { | 
					
						
							| 
									
										
										
										
											2020-06-20 12:31:38 +02:00
										 |  |  |     const pattern = rootNote.getOwnedLabelValue("datePattern") || "{dayInMonthPadded} - {weekDay}"; | 
					
						
							| 
									
										
										
										
											2019-05-19 11:30:17 +02:00
										 |  |  |     const weekDay = DAYS[dateObj.getDay()]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return pattern | 
					
						
							| 
									
										
										
										
											2023-09-12 07:30:30 +10:00
										 |  |  |         .replace(/{ordinal}/g, ordinal(parseInt(dayNumber))) | 
					
						
							| 
									
										
										
										
											2019-05-19 11:30:17 +02:00
										 |  |  |         .replace(/{dayInMonthPadded}/g, dayNumber) | 
					
						
							| 
									
										
										
										
											2021-11-04 19:56:45 +01:00
										 |  |  |         .replace(/{isoDate}/g, dateUtils.utcDateStr(dateObj)) | 
					
						
							| 
									
										
										
										
											2019-05-19 11:30:17 +02:00
										 |  |  |         .replace(/{weekDay}/g, weekDay) | 
					
						
							|  |  |  |         .replace(/{weekDay3}/g, weekDay.substr(0, 3)) | 
					
						
							|  |  |  |         .replace(/{weekDay2}/g, weekDay.substr(0, 2)); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-11-03 13:49:18 +01:00
										 |  |  | /** produces 1st, 2nd, 3rd, 4th, 21st, 31st for 1, 2, 3, 4, 21, 31 */ | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  | function ordinal(dayNumber: number) { | 
					
						
							| 
									
										
										
										
											2023-11-03 13:49:18 +01:00
										 |  |  |     const suffixes = ["th", "st", "nd", "rd"]; | 
					
						
							|  |  |  |     const suffix = suffixes[(dayNumber - 20) % 10] || suffixes[dayNumber] || suffixes[0]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return `${dayNumber}${suffix}`; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  | function getDayNote(dateStr: string, _rootNote: BNote | null = null): BNote { | 
					
						
							|  |  |  |     const rootNote = _rootNote || getRootCalendarNote(); | 
					
						
							| 
									
										
										
										
											2022-10-26 14:23:56 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-27 20:48:14 +01:00
										 |  |  |     dateStr = dateStr.trim().substr(0, 10); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-31 09:33:14 +02:00
										 |  |  |     let dateNote = searchService.findFirstNoteWithQuery(`#${DATE_LABEL}="${dateStr}"`, | 
					
						
							|  |  |  |         new SearchContext({ancestorNoteId: rootNote.noteId})); | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |     if (dateNote) { | 
					
						
							|  |  |  |         return dateNote; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |     const monthNote = getMonthNote(dateStr, rootNote); | 
					
						
							|  |  |  |     const dayNumber = dateStr.substr(8, 2); | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |     const dateObj = dateUtils.parseLocalDate(dateStr); | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-10 17:09:20 +01:00
										 |  |  |     const noteTitle = getDayNoteTitle(rootNote, dayNumber, dateObj); | 
					
						
							| 
									
										
										
										
											2019-09-07 21:40:18 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |     sql.transactional(() => { | 
					
						
							|  |  |  |         dateNote = createNote(monthNote, noteTitle); | 
					
						
							| 
									
										
										
										
											2019-09-07 21:40:18 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |         attributeService.createLabel(dateNote.noteId, DATE_LABEL, dateStr.substr(0, 10)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         const dateTemplateAttr = rootNote.getOwnedAttribute('relation', 'dateTemplate'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (dateTemplateAttr) { | 
					
						
							|  |  |  |             attributeService.createRelation(dateNote.noteId, 'template', dateTemplateAttr.value); | 
					
						
							| 
									
										
										
										
											2019-09-07 21:40:18 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-07-24 11:28:47 +02:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  |     return dateNote as unknown as BNote; | 
					
						
							| 
									
										
										
										
											2018-01-24 23:08:14 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-26 14:23:56 +02:00
										 |  |  | function getTodayNote(rootNote = null) { | 
					
						
							|  |  |  |     return getDayNote(dateUtils.localNowDate(), rootNote); | 
					
						
							| 
									
										
										
										
											2019-11-27 23:07:10 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  | function getStartOfTheWeek(date: Date, startOfTheWeek: StartOfWeek) { | 
					
						
							| 
									
										
										
										
											2019-02-19 22:49:57 +01:00
										 |  |  |     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 { | 
					
						
							| 
									
										
										
										
											2022-12-21 15:19:05 +01:00
										 |  |  |         throw new Error(`Unrecognized start of the week ${startOfTheWeek}`); | 
					
						
							| 
									
										
										
										
											2019-02-19 22:49:57 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return new Date(date.setDate(diff)); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  | interface WeekNoteOpts { | 
					
						
							|  |  |  |     startOfTheWeek?: StartOfWeek | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function getWeekNote(dateStr: string, options: WeekNoteOpts = {}, rootNote = null) { | 
					
						
							| 
									
										
										
										
											2019-02-19 22:49:57 +01:00
										 |  |  |     const startOfTheWeek = options.startOfTheWeek || "monday"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const dateObj = getStartOfTheWeek(dateUtils.parseLocalDate(dateStr), startOfTheWeek); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-04 19:52:00 +01:00
										 |  |  |     dateStr = dateUtils.utcDateTimeStr(dateObj); | 
					
						
							| 
									
										
										
										
											2019-02-19 22:49:57 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-26 14:23:56 +02:00
										 |  |  |     return getDayNote(dateStr, rootNote); | 
					
						
							| 
									
										
										
										
											2019-02-19 22:49:57 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-18 13:42:05 +02:00
										 |  |  | export = { | 
					
						
							| 
									
										
										
										
											2018-04-07 13:03:16 -04:00
										 |  |  |     getRootCalendarNote, | 
					
						
							|  |  |  |     getYearNote, | 
					
						
							|  |  |  |     getMonthNote, | 
					
						
							| 
									
										
										
										
											2019-02-19 22:49:57 +01:00
										 |  |  |     getWeekNote, | 
					
						
							| 
									
										
										
										
											2022-01-10 17:09:20 +01:00
										 |  |  |     getDayNote, | 
					
						
							| 
									
										
										
										
											2019-11-27 23:07:10 +01:00
										 |  |  |     getTodayNote | 
					
						
							| 
									
										
										
										
											2020-06-20 12:31:38 +02:00
										 |  |  | }; |