diff --git a/src/public/app/widgets/ribbon_widgets/note_info_widget.js b/src/public/app/widgets/ribbon_widgets/note_info_widget.ts similarity index 75% rename from src/public/app/widgets/ribbon_widgets/note_info_widget.js rename to src/public/app/widgets/ribbon_widgets/note_info_widget.ts index 5d5c47bf0..de24c5f33 100644 --- a/src/public/app/widgets/ribbon_widgets/note_info_widget.js +++ b/src/public/app/widgets/ribbon_widgets/note_info_widget.ts @@ -3,6 +3,8 @@ import { t } from "../../services/i18n.js"; import NoteContextAwareWidget from "../note_context_aware_widget.js"; import server from "../../services/server.js"; import utils from "../../services/utils.js"; +import type { EventData } from "../../components/app_context.js"; +import type FNote from "../../entities/fnote.js"; const TPL = `
@@ -10,18 +12,18 @@ const TPL = ` .note-info-widget { padding: 12px; } - + .note-info-widget-table { - max-width: 100%; + max-width: 100%; display: block; overflow-x: auto; white-space: nowrap; - } - + } + .note-info-widget-table td, .note-info-widget-table th { padding: 5px; } - + .note-info-mime { max-width: 13em; overflow: hidden; @@ -61,7 +63,33 @@ const TPL = `
`; +// TODO: Deduplicate with server +interface NoteSizeResponse { + noteSize: number; +} + +interface SubtreeSizeResponse { + subTreeNoteCount: number; + subTreeSize: number; +} + +interface MetadataResponse { + dateCreated: number; + dateModified: number; +} + export default class NoteInfoWidget extends NoteContextAwareWidget { + + private $noteId!: JQuery; + private $dateCreated!: JQuery; + private $dateModified!: JQuery; + private $type!: JQuery; + private $mime!: JQuery; + private $noteSizesWrapper!: JQuery; + private $noteSize!: JQuery; + private $subTreeSize!: JQuery; + private $calculateButton!: JQuery; + get name() { return "noteInfo"; } @@ -71,7 +99,7 @@ export default class NoteInfoWidget extends NoteContextAwareWidget { } isEnabled() { - return this.note; + return !!this.note; } getTitle() { @@ -104,10 +132,10 @@ export default class NoteInfoWidget extends NoteContextAwareWidget { this.$noteSize.empty().append($('')); this.$subTreeSize.empty().append($('')); - const noteSizeResp = await server.get(`stats/note-size/${this.noteId}`); + const noteSizeResp = await server.get(`stats/note-size/${this.noteId}`); this.$noteSize.text(utils.formatSize(noteSizeResp.noteSize)); - const subTreeResp = await server.get(`stats/subtree-size/${this.noteId}`); + const subTreeResp = await server.get(`stats/subtree-size/${this.noteId}`); if (subTreeResp.subTreeNoteCount > 1) { this.$subTreeSize.text(t("note_info_widget.subtree_size", { size: utils.formatSize(subTreeResp.subTreeSize), count: subTreeResp.subTreeNoteCount })); @@ -117,8 +145,8 @@ export default class NoteInfoWidget extends NoteContextAwareWidget { }); } - async refreshWithNote(note) { - const metadata = await server.get(`notes/${this.noteId}/metadata`); + async refreshWithNote(note: FNote) { + const metadata = await server.get(`notes/${this.noteId}/metadata`); this.$noteId.text(note.noteId); this.$dateCreated.text(formatDateTime(metadata.dateCreated)).attr("title", metadata.dateCreated); @@ -137,8 +165,8 @@ export default class NoteInfoWidget extends NoteContextAwareWidget { this.$noteSizesWrapper.hide(); } - entitiesReloadedEvent({ loadResults }) { - if (loadResults.isNoteReloaded(this.noteId) || loadResults.isNoteContentReloaded(this.noteId)) { + entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded">) { + if (this.noteId && (loadResults.isNoteReloaded(this.noteId) || loadResults.isNoteContentReloaded(this.noteId))) { this.refresh(); } }