From 1e718f88d0b3ab7bfcee029259937fc51edd242f Mon Sep 17 00:00:00 2001 From: Mo Bitar Date: Wed, 14 Feb 2018 13:57:03 -0600 Subject: [PATCH] Soft reload of component --- .../app/directives/views/componentView.js | 5 +-- .../app/services/componentManager.js | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/app/directives/views/componentView.js b/app/assets/javascripts/app/directives/views/componentView.js index dd67eadee..445b9b9ee 100644 --- a/app/assets/javascripts/app/directives/views/componentView.js +++ b/app/assets/javascripts/app/directives/views/componentView.js @@ -68,10 +68,7 @@ class ComponentView { $scope.reloadComponent = function() { console.log("Reloading component", $scope.component); - componentManager.deactivateComponent($scope.component); - $timeout(() => { - componentManager.activateComponent($scope.component); - }) + componentManager.reloadComponent($scope.component); } $scope.reloadStatus = function() { diff --git a/app/assets/javascripts/app/services/componentManager.js b/app/assets/javascripts/app/services/componentManager.js index 52cde7942..148c1593d 100644 --- a/app/assets/javascripts/app/services/componentManager.js +++ b/app/assets/javascripts/app/services/componentManager.js @@ -762,6 +762,44 @@ class ComponentManager { } } + reloadComponent(component) { + // + // Do soft deactivate + // + component.active = false; + + for(var handler of this.handlers) { + if(handler.areas.includes(component.area) || handler.areas.includes("*")) { + handler.activationHandler(component); + } + } + + if(component.area == "themes") { + this.postActiveThemeToAllComponents(); + } + + // + // Do soft activate + // + + this.timeout(() => { + component.active = true; + for(var handler of this.handlers) { + if(handler.areas.includes(component.area) || handler.areas.includes("*")) { + handler.activationHandler(component); + } + } + + if(!this.activeComponents.includes(component)) { + this.activeComponents.push(component); + } + + if(component.area == "themes") { + this.postActiveThemeToAllComponents(); + } + }) + } + deleteComponent(component) { this.modelManager.setItemToBeDeleted(component); this.syncManager.sync("deleteComponent");