mirror of
https://github.com/goharbor/harbor.git
synced 2024-10-09 02:38:34 +02:00
102 lines
2.9 KiB
JavaScript
102 lines
2.9 KiB
JavaScript
(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();
|
|
}
|
|
}
|
|
}
|
|
|
|
})(); |