import { t } from "../services/i18n.js"; import NoteContextAwareWidget from "./note_context_aware_widget.js"; import NoteListRenderer from "../services/note_list_renderer.js"; import type FNote from "../entities/fnote.js"; import type { EventData } from "../components/app_context.js"; const TPL = /*html*/`
${t("search_result.no_notes_found")}
${t("search_result.search_not_executed")}
`; export default class SearchResultWidget extends NoteContextAwareWidget { private $content!: JQuery; private $noResults!: JQuery; private $notExecutedYet!: JQuery; isEnabled() { return super.isEnabled() && this.note?.type === "search"; } doRender() { this.$widget = $(TPL); this.contentSized(); this.$content = this.$widget.find(".search-result-widget-content"); this.$noResults = this.$widget.find(".search-no-results"); this.$notExecutedYet = this.$widget.find(".search-not-executed-yet"); } async refreshWithNote(note: FNote) { const noResults = note.getChildNoteIds().length === 0 && !!note.searchResultsLoaded; this.$content.empty(); this.$noResults.toggle(noResults); this.$notExecutedYet.toggle(!note.searchResultsLoaded); if (noResults || !note.searchResultsLoaded) { return; } const noteListRenderer = new NoteListRenderer(this.$content, note, note.getChildNoteIds(), true); await noteListRenderer.renderList(); } searchRefreshedEvent({ ntxId }: EventData<"searchRefreshed">) { if (!this.isNoteContext(ntxId)) { return; } this.refresh(); } notesReloadedEvent({ noteIds }: EventData<"notesReloaded">) { if (this.noteId && noteIds.includes(this.noteId)) { this.refresh(); } } }