From 0c4e5d2a1934d1334896e174d6e2284ae93bae56 Mon Sep 17 00:00:00 2001 From: zadam Date: Sun, 10 Jul 2022 22:01:21 +0200 Subject: [PATCH] find box can be used also on render notes --- src/public/app/widgets/find.js | 30 ++++++++++++------- src/public/app/widgets/type_widgets/render.js | 18 ++++++++++- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/public/app/widgets/find.js b/src/public/app/widgets/find.js index fd8c793c2..f165c3e5f 100644 --- a/src/public/app/widgets/find.js +++ b/src/public/app/widgets/find.js @@ -142,19 +142,11 @@ export default class FindWidget extends NoteContextAwareWidget { return; } - if (!['text', 'code'].includes(this.note.type) || !this.$findBox.is(":hidden")) { + if (!['text', 'code', 'render'].includes(this.note.type) || !this.$findBox.is(":hidden")) { return; } - const readOnly = await this.noteContext.isReadOnly(); - - if (readOnly) { - this.handler = this.htmlHandler; - } else { - this.handler = this.note.type === "code" - ? this.codeHandler - : this.textHandler; - } + this.handler = await this.getHandler(); this.$findBox.show(); this.$input.focus(); @@ -173,6 +165,22 @@ export default class FindWidget extends NoteContextAwareWidget { } } + async getHandler() { + if (this.note.type === 'render') { + return this.htmlHandler; + } + + const readOnly = await this.noteContext.isReadOnly(); + + if (readOnly) { + return this.htmlHandler; + } else { + return this.note.type === "code" + ? this.codeHandler + : this.textHandler; + } + } + startSearch() { // XXX This should clear the previous search immediately in all cases // (the search is stale when waitforenter but also while the @@ -250,6 +258,6 @@ export default class FindWidget extends NoteContextAwareWidget { } isEnabled() { - return super.isEnabled() && ['text', 'code'].includes(this.note.type); + return super.isEnabled() && ['text', 'code', 'render'].includes(this.note.type); } } diff --git a/src/public/app/widgets/type_widgets/render.js b/src/public/app/widgets/type_widgets/render.js index 0a6224891..46784db37 100644 --- a/src/public/app/widgets/type_widgets/render.js +++ b/src/public/app/widgets/type_widgets/render.js @@ -3,13 +3,19 @@ import TypeWidget from "./type_widget.js"; const TPL = `
+ +

This help note is shown because this note of type Render HTML doesn't have required relation to function properly.

Render HTML note type is used for scripting. In short, you have a HTML code note (optionally with some JavaScript) and this note will render it. To make it work, you need to define a relation called "renderNote" pointing to the HTML note to render.

-
+
`; export default class RenderTypeWidget extends TypeWidget { @@ -43,4 +49,14 @@ export default class RenderTypeWidget extends TypeWidget { this.refresh(); } } + + async executeWithContentElementEvent({resolve, ntxId}) { + if (!this.isNoteContext(ntxId)) { + return; + } + + await this.initialized; + + resolve(this.$noteDetailRenderContent); + } }