harbor/static/ng/resources/js/components/replication/create-policy.directive.js

102 lines
2.9 KiB
JavaScript
Raw Normal View History

(function() {
'use strict';
angular
.module('harbor.replication')
.directive('createPolicy', createPolicy);
CreatePolicyController.$inject = ['$scope', 'ListDestinationService', 'CreateReplicationPolicyService', '$location', 'getParameterByName'];
function CreatePolicyController($scope, ListDestinationService, CreateReplicationPolicyService, $location, getParameterByName) {
var vm = this;
//Since can not set value for textarea by using vm
//use $scope for instead.
$scope.replication = {};
$scope.replication.policy = {};
var vm0 = $scope.replication;
var vm1 = $scope.replication.policy;
vm.projectId = getParameterByName('project_id', $location.absUrl());
vm.prepare = prepare;
vm.prepare();
vm.createPolicy = createPolicy;
$scope.$watch('vm.destinations', function(current) {
if(current) {
console.log('destination:' + angular.toJson(current));
vm0.destination = current[0];
}
});
function prepare() {
vm1.name = 'name';
vm1.description = 'test';
vm1.enabled = true;
ListDestinationService()
.success(listDestinationSuccess)
.error(listDestinationFailed);
}
function createPolicy(policy) {
CreateReplicationPolicyService(policy)
.success(createReplicationPolicySuccess)
.error(createReplicationPolicyFailed);
}
function listDestinationSuccess(data, status) {
vm.destinations = data;
}
function listDestinationFailed(data, status) {
console.log('Failed list destination:' + data);
}
function createReplicationPolicySuccess(data, status) {
console.log('Successful create replication policy.');
vm.clearUp();
}
function createReplicationPolicyFailed(data, status) {
console.log('Failed create replication policy.');
}
}
function createPolicy() {
var directive = {
'restrict': 'E',
'templateUrl': '/static/ng/resources/js/components/replication/create-policy.directive.html',
'scope': {
'reload': '&'
},
'link': link,
'controller': CreatePolicyController,
'controllerAs': 'vm',
'bindToController': true
};
return directive;
function link(scope, element, attr, ctrl) {
ctrl.save = save;
ctrl.clearUp = clearUp;
function save(form) {
console.log(angular.toJson(form));
var postPayload = {
'projectId': Number(ctrl.projectId),
'targetId': form.destination.id,
'name': form.policy.name,
'enabled': form.policy.enabled ? 1 : 0,
'description': form.policy.description,
'cron_str': '',
'start_time': ''
};
ctrl.createPolicy(postPayload, clearUp);
}
function clearUp() {
element.find('#createPolicyModal').modal('hide');
ctrl.reload();
}
}
}
})();