From a076ca7122a1aa2fb1eb7e481e4bff2a62e1002c Mon Sep 17 00:00:00 2001 From: ivmartel Date: Fri, 6 Oct 2023 18:06:17 +0200 Subject: [PATCH] Protect member access, fix tests --- src/gui/drawLayer.js | 18 +++++++++++++----- src/gui/layerGroup.js | 21 +++++++++++++-------- 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/gui/drawLayer.js b/src/gui/drawLayer.js index c75da6946c..e8b1e7e857 100644 --- a/src/gui/drawLayer.js +++ b/src/gui/drawLayer.js @@ -93,7 +93,7 @@ export class DrawLayer { * * @type {object} */ - #drawController = null; + #drawController; /** * The plane helper. @@ -516,7 +516,9 @@ export class DrawLayer { * DeleteCommand has been executed. */ deleteDraw(id, exeCallback) { - this.#drawController.deleteDraw(id, this.#fireEvent, exeCallback); + if (typeof this.#drawController !== 'undefined') { + this.#drawController.deleteDraw(id, this.#fireEvent, exeCallback); + } } /** @@ -526,17 +528,23 @@ export class DrawLayer { * DeleteCommand has been executed. */ deleteDraws(exeCallback) { - this.#drawController.deleteDraws(this.#fireEvent, exeCallback); + if (typeof this.#drawController !== 'undefined') { + this.#drawController.deleteDraws(this.#fireEvent, exeCallback); + } } /** * Get the total number of draws of this layer * (at all positions). * - * @returns {number} The total number of draws. + * @returns {number|undefined} The total number of draws. */ getNumberOfDraws() { - return this.#drawController.getNumberOfDraws(); + let res; + if (typeof this.#drawController !== 'undefined') { + res = this.#drawController.getNumberOfDraws(); + } + return res; } /** diff --git a/src/gui/layerGroup.js b/src/gui/layerGroup.js index b4c9265599..bb24612e09 100644 --- a/src/gui/layerGroup.js +++ b/src/gui/layerGroup.js @@ -731,15 +731,20 @@ export class LayerGroup { } else { // delete layer draws const numberOfDraws = layer.getNumberOfDraws(); - let count = 0; - layer.addEventListener('drawdelete', (_event) => { - ++count; - // unbind when all draw are deleted - if (count === numberOfDraws) { - this.#unbindDrawLayer(layer); - } - }); + if (typeof numberOfDraws !== 'undefined') { + let count = 0; + layer.addEventListener('drawdelete', (_event) => { + ++count; + // unbind when all draw are deleted + if (count === numberOfDraws) { + this.#unbindDrawLayer(layer); + } + }); + } layer.deleteDraws(); + if (typeof numberOfDraws === 'undefined') { + this.#unbindDrawLayer(layer); + } // reset active index if (this.#activeDrawLayerIndex === index) { this.#activeDrawLayerIndex = undefined;