diff --git a/src/public/app/services/note_list_renderer.ts b/src/public/app/services/note_list_renderer.ts index 4229889a8..48a618598 100644 --- a/src/public/app/services/note_list_renderer.ts +++ b/src/public/app/services/note_list_renderer.ts @@ -1,6 +1,7 @@ import type FNote from "../entities/fnote.js"; import CalendarView from "../widgets/view_widgets/calendar_view.js"; import ListOrGridView from "../widgets/view_widgets/list_or_grid_view.js"; +import type { ViewModeArgs } from "../widgets/view_widgets/view_mode.js"; import type ViewMode from "../widgets/view_widgets/view_mode.js"; export default class NoteListRenderer { @@ -9,14 +10,18 @@ export default class NoteListRenderer { private viewMode: ViewMode | null; constructor($parent: JQuery, parentNote: FNote, noteIds: string[], showNotePath: boolean = false) { - console.log("Parent note is ", parentNote); this.viewType = this.#getViewType(parentNote); - console.log("View type is ", this.viewType); + const args: ViewModeArgs = { + $parent, + parentNote, + noteIds, + showNotePath + } if (this.viewType === "list" || this.viewType === "grid") { - this.viewMode = new ListOrGridView(this.viewType, $parent, parentNote, noteIds, showNotePath); + this.viewMode = new ListOrGridView(this.viewType, args); } else if (this.viewType === "calendar") { - this.viewMode = new CalendarView(this.viewType, $parent, parentNote, noteIds, showNotePath); + this.viewMode = new CalendarView(args); } else { this.viewMode = null; } diff --git a/src/public/app/widgets/view_widgets/calendar_view.ts b/src/public/app/widgets/view_widgets/calendar_view.ts index 6ae367735..7f02b7537 100644 --- a/src/public/app/widgets/view_widgets/calendar_view.ts +++ b/src/public/app/widgets/view_widgets/calendar_view.ts @@ -1,5 +1,5 @@ import type FNote from "../../entities/fnote.js"; -import ViewMode from "./view_mode.js"; +import ViewMode, { type ViewModeArgs } from "./view_mode.js"; const TPL = `
@@ -19,11 +19,11 @@ export default class CalendarView extends ViewMode { private $root: JQuery; - constructor(viewType: string, $parent: JQuery, parentNote: FNote, noteIds: string[], showNotePath: boolean = false) { - super($parent, parentNote, noteIds, showNotePath); + constructor(args: ViewModeArgs) { + super(args); this.$root = $(TPL); - $parent.append(this.$root); + args.$parent.append(this.$root); } async renderList(): Promise | undefined> { diff --git a/src/public/app/widgets/view_widgets/list_or_grid_view.ts b/src/public/app/widgets/view_widgets/list_or_grid_view.ts index b5ebc5e02..56ee00b86 100644 --- a/src/public/app/widgets/view_widgets/list_or_grid_view.ts +++ b/src/public/app/widgets/view_widgets/list_or_grid_view.ts @@ -6,7 +6,7 @@ import libraryLoader from "../../services/library_loader.js"; import treeService from "../../services/tree.js"; import utils from "../../services/utils.js"; import type FNote from "../../entities/fnote.js"; -import ViewMode from "./view_mode.js"; +import ViewMode, { type ViewModeArgs } from "./view_mode.js"; const TPL = `
@@ -172,24 +172,24 @@ class ListOrGridView extends ViewMode { /* * We're using noteIds so that it's not necessary to load all notes at once when paging */ - constructor(viewType: string, $parent: JQuery, parentNote: FNote, noteIds: string[], showNotePath: boolean = false) { - super($parent, parentNote, noteIds, showNotePath); + constructor(viewType: string, args: ViewModeArgs) { + super(args); this.$noteList = $(TPL); this.viewType = viewType; - this.parentNote = parentNote; + this.parentNote = args.parentNote; const includedNoteIds = this.getIncludedNoteIds(); - this.noteIds = noteIds.filter((noteId) => !includedNoteIds.has(noteId) && noteId !== "_hidden"); + this.noteIds = args.noteIds.filter((noteId) => !includedNoteIds.has(noteId) && noteId !== "_hidden"); if (this.noteIds.length === 0) { return; } - $parent.append(this.$noteList); + args.$parent.append(this.$noteList); this.page = 1; - this.pageSize = parseInt(parentNote.getLabelValue("pageSize") || ""); + this.pageSize = parseInt(args.parentNote.getLabelValue("pageSize") || ""); if (!this.pageSize || this.pageSize < 1) { this.pageSize = 20; @@ -197,7 +197,7 @@ class ListOrGridView extends ViewMode { this.$noteList.addClass(`${this.viewType}-view`); - this.showNotePath = showNotePath; + this.showNotePath = args.showNotePath; } /** @returns {Set} list of noteIds included (images, included notes) in the parent note and which diff --git a/src/public/app/widgets/view_widgets/view_mode.ts b/src/public/app/widgets/view_widgets/view_mode.ts index 31dfee8fd..df61b7977 100644 --- a/src/public/app/widgets/view_widgets/view_mode.ts +++ b/src/public/app/widgets/view_widgets/view_mode.ts @@ -1,10 +1,17 @@ import type FNote from "../../entities/fnote.js"; +export interface ViewModeArgs { + $parent: JQuery; + parentNote: FNote; + noteIds: string[]; + showNotePath?: boolean; +} + export default abstract class ViewMode { - constructor($parent: JQuery, parentNote: FNote, noteIds: string[], showNotePath: boolean = false) { + constructor(args: ViewModeArgs) { // note list must be added to the DOM immediately, otherwise some functionality scripting (canvas) won't work - $parent.empty(); + args.$parent.empty(); } abstract renderList(): Promise | undefined>;