/
advancedSettings.controller.js
60 lines (52 loc) · 1.73 KB
/
advancedSettings.controller.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
'use strict';
const angular = require('angular');
module.exports = angular
.module('spinnaker.openstack.serverGroup.configure.wizard.advancedSettings', [
require('@uirouter/angularjs').default,
require('angular-ui-bootstrap'),
require('../../../../common/cacheBackedMultiSelectField.directive').name,
])
.controller('openstackServerGroupAdvancedSettingsCtrl', [
'$scope',
function($scope) {
$scope.selectedAZs = $scope.command.zones
? $scope.command.zones.map(i => {
return { id: i, name: i };
})
: [];
$scope.updateAvailabilityZones = function() {
$scope.allAvailabilityZones = getAvailabilityZones();
};
$scope.selectedAZsChanged = function() {
$scope.command.zones = _.map($scope.selectedAZs, 'id');
};
$scope.$watch('selectedAZs', $scope.selectedAZsChanged);
$scope.$watch(
function() {
return _.map(getAvailabilityZones(), 'id').join(',');
},
function() {
$scope.selectedAZs = [];
$scope.updateAvailabilityZones();
},
);
$scope.$watch('command.credentials', $scope.updateAvailabilityZones);
$scope.$watch('command.region', $scope.updateAvailabilityZones);
function getAvailabilityZones() {
var account = $scope.command.credentials;
var region = $scope.command.region;
if (!account || !region) {
return [];
} else {
var ids = _.get(
$scope.command,
['backingData', 'credentialsKeyedByAccount', account, 'regionToZones', region],
[],
);
return ids.map(i => {
return { id: i, name: i };
});
}
}
},
]);