This commit is contained in:
Mo Bitar
2017-12-21 12:31:56 -06:00
parent 5714a63a78
commit 81b392bdaa
6 changed files with 87 additions and 2 deletions

View File

@@ -7,7 +7,7 @@ class GlobalExtensionsMenu {
};
}
controller($scope, extensionManager, syncManager, modelManager, themeManager, componentManager) {
controller($scope, extensionManager, syncManager, modelManager, themeManager, componentManager, packageManager) {
'ngInject';
$scope.formData = {};
@@ -176,6 +176,8 @@ class GlobalExtensionsMenu {
$scope.handleThemeLink(link, completion);
} else if(type == "component") {
$scope.handleComponentLink(link, completion);
} else if(type == "package") {
$scope.handlePackageLink(link, completion);
}
else {
@@ -184,6 +186,10 @@ class GlobalExtensionsMenu {
}
}
$scope.handlePackageLink = function(link, completion) {
packageManager.installPackage(link, completion);
}
$scope.handleSyncAdapterLink = function(link, completion) {
var params = parametersFromURL(link);
params["url"] = link;

View File

@@ -0,0 +1,28 @@
class RoomBar {
constructor() {
this.restrict = "E";
this.templateUrl = "frontend/directives/room-bar.html";
this.scope = {
};
}
controller($rootScope, $scope, extensionManager, syncManager, modelManager, componentManager, $timeout) {
'ngInject';
$scope.extensionManager = extensionManager;
$scope.componentManager = componentManager;
$rootScope.$on("initial-data-loaded", () => {
$timeout(() => {
$scope.rooms = componentManager.componentsForArea("rooms");
console.log("Rooms:", $scope.rooms);
})
});
}
}
angular.module('app.frontend').directive('roomBar', () => new RoomBar);

View File

@@ -0,0 +1,35 @@
class PackageManager {
constructor(httpManager, modelManager, syncManager) {
this.httpManager = httpManager;
this.modelManager = modelManager;
this.syncManager = syncManager;
}
installPackage(url, callback) {
this.httpManager.getAbsolute(url, {}, function(aPackage){
console.log("Got package data", aPackage);
if(typeof aPackage !== 'object') {
callback(null);
return;
}
var assembled = this.modelManager.createItem(aPackage);
this.modelManager.addItem(assembled);
assembled.setDirty(true);
this.syncManager.sync();
console.log("Created assembled", assembled);
callback && callback(assembled);
}.bind(this), function(response){
console.error("Error retrieving package", response);
callback(null);
})
}
}
angular.module('app.frontend').service('packageManager', PackageManager);