From 0ded79d403d01752193e4250923b4a1a09040b52 Mon Sep 17 00:00:00 2001 From: FelisCatus Date: Sat, 4 Oct 2014 21:33:21 +0800 Subject: [PATCH] Remove attached profile on profile removal. Fix #38. --- omega-web/src/omega/app.coffee | 9 ++++++++ .../src/omega/controllers/profile.coffee | 23 +++++++++++++++---- .../omega/controllers/switch_profile.coffee | 6 ++--- 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/omega-web/src/omega/app.coffee b/omega-web/src/omega/app.coffee index 4931a5f..4f165e5 100644 --- a/omega-web/src/omega/app.coffee +++ b/omega-web/src/omega/app.coffee @@ -10,6 +10,15 @@ profileColorPalette = (colors.splice(0, 3) while colors.length) angular.module('omega').constant('profileColors', profileColors) angular.module('omega').constant('profileColorPalette', profileColorPalette) +attachedPrefix = '__ruleListOf_' +angular.module('omega').constant 'getAttachedName', (name) -> + attachedPrefix + name +angular.module('omega').constant 'getParentName', (name) -> + if name.indexOf(attachedPrefix) == 0 + name.substr(attachedPrefix.length) + else + undefined + angular.module('omega').config ($stateProvider, $urlRouterProvider, $httpProvider) -> $urlRouterProvider.otherwise '/ui' diff --git a/omega-web/src/omega/controllers/profile.coffee b/omega-web/src/omega/controllers/profile.coffee index 996fb9a..5d6b9f8 100644 --- a/omega-web/src/omega/controllers/profile.coffee +++ b/omega-web/src/omega/controllers/profile.coffee @@ -1,5 +1,6 @@ angular.module('omega').controller 'ProfileCtrl', ($scope, $stateParams, - $location, $rootScope, $modal, $state, profileColorPalette) -> + $location, $rootScope, $state, $modal, profileColorPalette, getAttachedName, + getParentName) -> name = $stateParams.name profileTemplates = 'FixedProfile': 'profile_fixed.html' @@ -19,24 +20,36 @@ angular.module('omega').controller 'ProfileCtrl', ($scope, $stateParams, $scope.deleteProfile = -> profileName = $scope.profile.name refs = OmegaPac.Profiles.referencedBySet(profileName, $rootScope.options) - refs = Object.keys(refs) scope = $rootScope.$new('isolate') scope.profile = $scope.profile scope.profileIcons = $scope.profileIcons - if refs.length > 0 - scope.refs = refs.map (p) -> OmegaPac.Profiles.byKey(p, - $rootScope.options) + if Object.keys(refs).length > 0 + refSet = {} + for own key, pname of refs + parent = getParentName(pname) + if parent + key = OmegaPac.Profiles.nameAsKey(parent) + pname = parent + refSet[key] = pname + + refProfiles = [] + for own key of refSet + refProfiles.push(OmegaPac.Profiles.byKey(key, $rootScope.options)) + scope.refs = refProfiles $modal.open( templateUrl: 'partials/cannot_delete_profile.html' scope: scope ) + return else $modal.open( templateUrl: 'partials/delete_profile.html' scope: scope ).result.then -> + attachedName = getAttachedName(profileName) + delete $rootScope.options[OmegaPac.Profiles.nameAsKey(attachedName)] delete $rootScope.options[OmegaPac.Profiles.nameAsKey(profileName)] if $rootScope.options['-startupProfileName'] == profileName $rootScope.options['-startupProfileName'] = "" diff --git a/omega-web/src/omega/controllers/switch_profile.coffee b/omega-web/src/omega/controllers/switch_profile.coffee index e36084e..9ac7fb6 100644 --- a/omega-web/src/omega/controllers/switch_profile.coffee +++ b/omega-web/src/omega/controllers/switch_profile.coffee @@ -1,5 +1,5 @@ angular.module('omega').controller 'SwitchProfileCtrl', ($scope, $modal, - profileIcons) -> + profileIcons, getAttachedName) -> $scope.conditionI18n = 'HostWildcardCondition': 'condition_hostWildcard' @@ -69,8 +69,8 @@ angular.module('omega').controller 'SwitchProfileCtrl', ($scope, $modal, $scope.ruleListFormats = OmegaPac.Profiles.ruleListFormats $scope.$watch 'profile.name', (name) -> - $scope.attachedName = '__ruleListOf_' + name - $scope.attachedKey = OmegaPac.Profiles.nameAsKey('__ruleListOf_' + name) + $scope.attachedName = getAttachedName(name) + $scope.attachedKey = OmegaPac.Profiles.nameAsKey($scope.attachedName) $scope.$watch 'options[attachedKey]', (attached) -> $scope.attached = attached