From 3030fbe60b0a76c54afd9f1c3be691010336aaf1 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 18 Feb 2024 13:42:05 +0200 Subject: [PATCH] server-ts: Port services/notes --- src/etapi/special_notes.js | 2 +- src/routes/api/clipper.js | 2 +- src/routes/api/special_notes.js | 2 +- src/services/backend_script_api.js | 2 +- src/services/{date_notes.js => date_notes.ts} | 71 +++++++++---------- src/services/notes.ts | 1 + src/services/special_notes.js | 2 +- 7 files changed, 40 insertions(+), 42 deletions(-) rename src/services/{date_notes.js => date_notes.ts} (78%) diff --git a/src/etapi/special_notes.js b/src/etapi/special_notes.js index e6408b251..ac605ec67 100644 --- a/src/etapi/special_notes.js +++ b/src/etapi/special_notes.js @@ -1,5 +1,5 @@ const specialNotesService = require('../services/special_notes.js'); -const dateNotesService = require('../services/date_notes.js'); +const dateNotesService = require('../services/date_notes'); const eu = require('./etapi_utils'); const mappers = require('./mappers.js'); diff --git a/src/routes/api/clipper.js b/src/routes/api/clipper.js index ec98b31a7..54532a039 100644 --- a/src/routes/api/clipper.js +++ b/src/routes/api/clipper.js @@ -3,7 +3,7 @@ const attributeService = require('../../services/attributes'); const cloneService = require('../../services/cloning'); const noteService = require('../../services/notes'); -const dateNoteService = require('../../services/date_notes.js'); +const dateNoteService = require('../../services/date_notes'); const dateUtils = require('../../services/date_utils'); const imageService = require('../../services/image.js'); const appInfo = require('../../services/app_info'); diff --git a/src/routes/api/special_notes.js b/src/routes/api/special_notes.js index 9c80f507f..76f41a01f 100644 --- a/src/routes/api/special_notes.js +++ b/src/routes/api/special_notes.js @@ -1,6 +1,6 @@ "use strict"; -const dateNoteService = require('../../services/date_notes.js'); +const dateNoteService = require('../../services/date_notes'); const sql = require('../../services/sql'); const cls = require('../../services/cls'); const specialNotesService = require('../../services/special_notes.js'); diff --git a/src/services/backend_script_api.js b/src/services/backend_script_api.js index 915dd7637..e86efa8a9 100644 --- a/src/services/backend_script_api.js +++ b/src/services/backend_script_api.js @@ -3,7 +3,7 @@ const noteService = require('./notes'); const sql = require('./sql'); const utils = require('./utils'); const attributeService = require('./attributes'); -const dateNoteService = require('./date_notes.js'); +const dateNoteService = require('./date_notes'); const treeService = require('./tree'); const config = require('./config'); const axios = require('axios'); diff --git a/src/services/date_notes.js b/src/services/date_notes.ts similarity index 78% rename from src/services/date_notes.js rename to src/services/date_notes.ts index 1c187ef5a..5ae1f8366 100644 --- a/src/services/date_notes.js +++ b/src/services/date_notes.ts @@ -1,13 +1,14 @@ "use strict"; -const noteService = require('./notes'); -const attributeService = require('./attributes'); -const dateUtils = require('./date_utils'); -const sql = require('./sql'); -const protectedSessionService = require('./protected_session'); -const searchService = require('../services/search/services/search'); -const SearchContext = require('../services/search/search_context'); -const hoistedNoteService = require('./hoisted_note'); +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'); const CALENDAR_ROOT_LABEL = 'calendarRoot'; const YEAR_LABEL = 'yearNote'; @@ -17,7 +18,9 @@ const DATE_LABEL = 'dateNote'; const DAYS = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']; const MONTHS = ['January','February','March','April','May','June','July','August','September','October','November','December']; -function createNote(parentNote, noteTitle) { +type StartOfWeek = "monday" | "sunday"; + +function createNote(parentNote: BNote, noteTitle: string) { return noteService.createNewNote({ parentNoteId: parentNote.noteId, title: noteTitle, @@ -27,13 +30,12 @@ function createNote(parentNote, noteTitle) { }).note; } -/** @returns {BNote} */ -function getRootCalendarNote() { +function getRootCalendarNote(): BNote { let rootNote; const workspaceNote = hoistedNoteService.getWorkspaceNote(); - if (!workspaceNote.isRoot()) { + if (!workspaceNote || !workspaceNote.isRoot()) { rootNote = searchService.findFirstNoteWithQuery('#workspaceCalendarRoot', new SearchContext({ignoreHoistedNote: false})); } @@ -57,14 +59,11 @@ function getRootCalendarNote() { }); } - return rootNote; + return rootNote as BNote; } -/** @returns {BNote} */ -function getYearNote(dateStr, rootNote = null) { - if (!rootNote) { - rootNote = getRootCalendarNote(); - } +function getYearNote(dateStr: string, _rootNote: BNote | null = null): BNote { + const rootNote = _rootNote || getRootCalendarNote(); const yearStr = dateStr.trim().substr(0, 4); @@ -88,10 +87,10 @@ function getYearNote(dateStr, rootNote = null) { } }); - return yearNote; + return yearNote as unknown as BNote; } -function getMonthNoteTitle(rootNote, monthNumber, dateObj) { +function getMonthNoteTitle(rootNote: BNote, monthNumber: string, dateObj: Date) { const pattern = rootNote.getOwnedLabelValue("monthPattern") || "{monthNumberPadded} - {month}"; const monthName = MONTHS[dateObj.getMonth()]; @@ -102,11 +101,8 @@ function getMonthNoteTitle(rootNote, monthNumber, dateObj) { .replace(/{month}/g, monthName); } -/** @returns {BNote} */ -function getMonthNote(dateStr, rootNote = null) { - if (!rootNote) { - rootNote = getRootCalendarNote(); - } +function getMonthNote(dateStr: string, _rootNote: BNote | null = null): BNote { + const rootNote = _rootNote || getRootCalendarNote(); const monthStr = dateStr.substr(0, 7); const monthNumber = dateStr.substr(5, 2); @@ -137,10 +133,10 @@ function getMonthNote(dateStr, rootNote = null) { } }); - return monthNote; + return monthNote as unknown as BNote; } -function getDayNoteTitle(rootNote, dayNumber, dateObj) { +function getDayNoteTitle(rootNote: BNote, dayNumber: string, dateObj: Date) { const pattern = rootNote.getOwnedLabelValue("datePattern") || "{dayInMonthPadded} - {weekDay}"; const weekDay = DAYS[dateObj.getDay()]; @@ -154,18 +150,15 @@ function getDayNoteTitle(rootNote, dayNumber, dateObj) { } /** produces 1st, 2nd, 3rd, 4th, 21st, 31st for 1, 2, 3, 4, 21, 31 */ -function ordinal(dayNumber) { +function ordinal(dayNumber: number) { const suffixes = ["th", "st", "nd", "rd"]; const suffix = suffixes[(dayNumber - 20) % 10] || suffixes[dayNumber] || suffixes[0]; return `${dayNumber}${suffix}`; } -/** @returns {BNote} */ -function getDayNote(dateStr, rootNote = null) { - if (!rootNote) { - rootNote = getRootCalendarNote(); - } +function getDayNote(dateStr: string, _rootNote: BNote | null = null): BNote { + const rootNote = _rootNote || getRootCalendarNote(); dateStr = dateStr.trim().substr(0, 10); @@ -195,14 +188,14 @@ function getDayNote(dateStr, rootNote = null) { } }); - return dateNote; + return dateNote as unknown as BNote; } function getTodayNote(rootNote = null) { return getDayNote(dateUtils.localNowDate(), rootNote); } -function getStartOfTheWeek(date, startOfTheWeek) { +function getStartOfTheWeek(date: Date, startOfTheWeek: StartOfWeek) { const day = date.getDay(); let diff; @@ -219,7 +212,11 @@ function getStartOfTheWeek(date, startOfTheWeek) { return new Date(date.setDate(diff)); } -function getWeekNote(dateStr, options = {}, rootNote = null) { +interface WeekNoteOpts { + startOfTheWeek?: StartOfWeek +} + +function getWeekNote(dateStr: string, options: WeekNoteOpts = {}, rootNote = null) { const startOfTheWeek = options.startOfTheWeek || "monday"; const dateObj = getStartOfTheWeek(dateUtils.parseLocalDate(dateStr), startOfTheWeek); @@ -229,7 +226,7 @@ function getWeekNote(dateStr, options = {}, rootNote = null) { return getDayNote(dateStr, rootNote); } -module.exports = { +export = { getRootCalendarNote, getYearNote, getMonthNote, diff --git a/src/services/notes.ts b/src/services/notes.ts index c03c96a1e..d223eda2e 100644 --- a/src/services/notes.ts +++ b/src/services/notes.ts @@ -173,6 +173,7 @@ interface NoteParams { dateCreated?: string; utcDateCreated?: string; ignoreForbiddenParents?: boolean; + target?: "into"; } function createNewNote(params: NoteParams): { diff --git a/src/services/special_notes.js b/src/services/special_notes.js index ceedc05f6..cb4108cc4 100644 --- a/src/services/special_notes.js +++ b/src/services/special_notes.js @@ -1,5 +1,5 @@ const attributeService = require('./attributes'); -const dateNoteService = require('./date_notes.js'); +const dateNoteService = require('./date_notes'); const becca = require('../becca/becca'); const noteService = require('./notes'); const dateUtils = require('./date_utils');