From 083572dfe3b322b94d1d4aab3df191cdabc8d31c Mon Sep 17 00:00:00 2001 From: jdg Date: Sat, 25 Jun 2022 10:28:39 +0000 Subject: [PATCH] Added events to know when a content is changed/saved --- js/WikiContent.js | 10 ++++++++++ js/WikiPages.js | 16 ++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/js/WikiContent.js b/js/WikiContent.js index 705e6b4..0064664 100644 --- a/js/WikiContent.js +++ b/js/WikiContent.js @@ -44,7 +44,13 @@ class WikiContent { this.timeout = null; this.mde.codemirror.on("change", (instance, changeObj) => { + if(self.loading) return; + console.log(changeObj); + + var event = new CustomEvent("myWiki::change", {myWiki:{ wikiId:self.wikiId,pageId:self.pageId }}); + document.dispatchEvent(event); + clearTimeout(self.timeout); self.timeout = setTimeout(()=>self._mde_save(), this.waitSecondsToAutoSave); }); @@ -55,8 +61,10 @@ class WikiContent { this.save(this.mde.value()); } _mde_set(content) { + this.loading = true; this.mde.clearAutosavedValue(); this.mde.value(content); + this.loading = false; } _mde_get() { return this.mde.value(); @@ -128,6 +136,8 @@ class WikiContent { data: JSON.stringify({title:null, content:content}) }).done(function (response) { console.info(`JDG :: WikiContent.save(${self.wikiId}, ${self.pageId})`, response); + var event = new CustomEvent("myWiki::saved", {myWiki:{ wikiId:self.wikiId,pageId:self.pageId }}); + document.dispatchEvent(event); }).fail(function (response, code) { OC.dialogs.alert('Error', t(appName,'Error saving wiki page({wikiId}, {pageId})',{wikiId:self.wikiId,pageId:self.pageId})); console.error(`JDG :: WikiContent.save(${self.wikiId}, ${self.pageId})`, response); diff --git a/js/WikiPages.js b/js/WikiPages.js index 1eda561..c191e98 100644 --- a/js/WikiPages.js +++ b/js/WikiPages.js @@ -7,6 +7,14 @@ class WikiPages { constructor(container, onClickLoadPage) { this.ul = container; this._onClickLoadPage = onClickLoadPage; + + document.addEventListener("myWiki::change", function(e) { + console.log("myWiki::change",e.myWiki); + }); + document.addEventListener("myWiki::saved", function(e) { + console.log("myWiki::saved", e.myWiki); + }); + } clear() { @@ -55,6 +63,11 @@ class WikiPages { }); } + highlightSelectedPage(pageId) { + this.ul.querySelectorAll('li[data-page-id]').forEach( x=>x.querySelector('a').classList.remove('active') ); + this.ul.querySelector(`li[data-page-id="${pageId}"] a`).classList.add('active'); + } + // ----------------------------------------------------------------------------------------- addListener(root) { const self = this; @@ -69,9 +82,12 @@ class WikiPages { onClickLoadPage(e) { const li = e.target.closest("li[data-page-id]"); let pageId = li.dataset.pageId; + this.highlightSelectedPage(pageId); this._onClickLoadPage(this.wikiId, pageId); } + + onClickEdit(e) { const li = e.target.closest("li[data-page-id]"); li.querySelector("input").value = li.querySelector("a").innerText;