From 5d52f406c94f5ed8f8502862a7e5eef28085d6de Mon Sep 17 00:00:00 2001 From: danielghost Date: Mon, 10 Mar 2025 17:42:54 +0000 Subject: [PATCH 1/2] Fix: stop restored event trigger for subsets created from query intersections (fixes #15). --- js/ScoringSet.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/js/ScoringSet.js b/js/ScoringSet.js index 7df8cf2..51d1635 100644 --- a/js/ScoringSet.js +++ b/js/ScoringSet.js @@ -45,8 +45,9 @@ export default class ScoringSet extends Backbone.Controller { this._title = title; this._isScoreIncluded = _isScoreIncluded; this._isCompletionRequired = _isCompletionRequired; - // only register root sets as subsets are dynamically created when required - if (!this.subsetParent) this.register(); + // exclude registration and restoration for dynamically created sets (via query intersections) + if (this.subsetParent) return; + this.register(); this._setupListeners(); } From e604d926499c8c90fcceed0382b18f9c81a4e47c Mon Sep 17 00:00:00 2001 From: danielghost Date: Tue, 17 Jun 2025 18:12:26 +0100 Subject: [PATCH 2/2] Added early method returns if the set has been created via query intersections. --- js/ScoringSet.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/js/ScoringSet.js b/js/ScoringSet.js index 51d1635..78d4669 100644 --- a/js/ScoringSet.js +++ b/js/ScoringSet.js @@ -45,8 +45,6 @@ export default class ScoringSet extends Backbone.Controller { this._title = title; this._isScoreIncluded = _isScoreIncluded; this._isCompletionRequired = _isCompletionRequired; - // exclude registration and restoration for dynamically created sets (via query intersections) - if (this.subsetParent) return; this.register(); this._setupListeners(); } @@ -57,6 +55,7 @@ export default class ScoringSet extends Backbone.Controller { * @fires Adapt#scoring:set:register */ register() { + if (this.subsetParent) return; Adapt.scoring.register(this); Adapt.trigger(`scoring:${this.type}:register scoring:set:register`, this); } @@ -65,6 +64,7 @@ export default class ScoringSet extends Backbone.Controller { * @protected */ _setupListeners() { + if (this.subsetParent) return; if (OfflineStorage.ready) return this.restore(); this.listenTo(Adapt, 'offlineStorage:ready', this.restore); } @@ -76,6 +76,7 @@ export default class ScoringSet extends Backbone.Controller { * @fires Adapt#scoring:set:restored */ restore() { + if (this.subsetParent) return; Adapt.trigger(`scoring:${this.type}:restored scoring:set:restored`, this); } @@ -103,6 +104,7 @@ export default class ScoringSet extends Backbone.Controller { * @fires Adapt#scoring:set:reset */ reset() { + if (this.subsetParent) return; Adapt.trigger(`scoring:${this.type}:reset scoring:set:reset`, this); Logging.debug(`${this.id} reset`); this._resetObjective(); @@ -446,6 +448,7 @@ export default class ScoringSet extends Backbone.Controller { * @fires Adapt#scoring:set:complete */ onCompleted() { + if (this.subsetParent) return; Adapt.trigger(`scoring:${this.type}:complete scoring:set:complete`, this); Logging.debug(`${this.id} completed`); this._completeObjective(); @@ -456,6 +459,7 @@ export default class ScoringSet extends Backbone.Controller { * @fires Adapt#scoring:set:passed */ onPassed() { + if (this.subsetParent) return; Adapt.trigger(`scoring:${this.type}:passed scoring:set:passed`, this); Logging.debug(`${this.id} passed`); }