diff options
Diffstat (limited to 'ext/mixed/js')
-rw-r--r-- | ext/mixed/js/display.js | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index 2ee5b608..cdff9389 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -69,12 +69,13 @@ class Display extends EventDispatcher { this._defaultTitleMaxLength = 1000; this._fullQuery = ''; this._documentUtil = new DocumentUtil(); + this._progressIndicatorVisible = new DynamicProperty(false); this._queryParserVisible = false; this._queryParserVisibleOverride = null; this._queryParserContainer = document.querySelector('#query-parser-container'); this._queryParser = new QueryParser({ getOptionsContext: this.getOptionsContext.bind(this), - setSpinnerVisible: this.setSpinnerVisible.bind(this), + progressIndicatorVisible: this._progressIndicatorVisible, documentUtil: this._documentUtil }); this._mode = null; @@ -182,6 +183,7 @@ class Display extends EventDispatcher { ['popupMessage', {async: 'dynamic', handler: this._onDirectMessage.bind(this)}] ]); window.addEventListener('focus', this._onWindowFocus.bind(this), false); + this._progressIndicatorVisible.on('change', this._onProgressIndicatorVisibleChanged.bind(this)); } initializeState() { @@ -337,12 +339,6 @@ class Display extends EventDispatcher { return document.title; } - setSpinnerVisible(visible) { - if (this._spinner !== null) { - this._spinner.hidden = !visible; - } - } - registerActions(actions) { for (const [name, handler] of actions) { this._actions.set(name, handler); @@ -566,6 +562,11 @@ class Display extends EventDispatcher { this._nextTermView(); } + _onProgressIndicatorVisibleChanged({value}) { + if (this._spinner === null) { return; } + this._spinner.hidden = !value; + } + _onWindowFocus() { const target = this._contentScrollFocusElement; if (target === null) { return; } @@ -1133,9 +1134,8 @@ class Display extends EventDispatcher { } async _noteAdd(definition, mode) { + const overrideToken = this._progressIndicatorVisible.setOverride(true); try { - this.setSpinnerVisible(true); - const noteContext = await this._getNoteContext(); const noteId = await this._addDefinition(definition, mode, noteContext); if (noteId) { @@ -1151,14 +1151,13 @@ class Display extends EventDispatcher { } catch (e) { this.onError(e); } finally { - this.setSpinnerVisible(false); + this._progressIndicatorVisible.clearOverride(overrideToken); } } async _audioPlay(definition, expressionIndex, entryIndex) { + const overrideToken = this._progressIndicatorVisible.setOverride(true); try { - this.setSpinnerVisible(true); - const {expression, reading} = expressionIndex === -1 ? definition : definition.expressions[expressionIndex]; this._stopPlayingAudio(); @@ -1204,7 +1203,7 @@ class Display extends EventDispatcher { } catch (e) { this.onError(e); } finally { - this.setSpinnerVisible(false); + this._progressIndicatorVisible.clearOverride(overrideToken); } } |