webapp/app/js/controllers/projects.js (89 lines of code) (raw):
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
KylinApp
.controller('ProjectCtrl', function ($scope, $modal, $q, ProjectService, MessageService,SweetAlert,$log,kylinConfig,projectConfig,ProjectModel, MessageBox) {
$scope.projects = [];
$scope.loading = false;
$scope.projectConfig = projectConfig;
$scope.state = { filterAttr: 'name', filterReverse: true, reverseColumn: 'name'};
$scope.list = function (offset, limit) {
offset = (!!offset) ? offset : 0;
limit = (!!limit) ? limit : 20;
var defer = $q.defer();
var queryParam = {offset: offset, limit: limit};
$scope.loading = true;
ProjectService.listReadable(queryParam, function (projects) {
$scope.projects = $scope.projects.concat(projects);
angular.forEach(projects, function (project) {
$scope.listAccess(project, 'ProjectInstance');
});
$scope.loading = false;
defer.resolve(projects.length);
});
return defer.promise;
}
$scope.toEdit = function(project) {
$modal.open({
templateUrl: 'project.html',
controller: projCtrl,
resolve: {
projects: function () {
return $scope.projects;
},
project: function(){
return project;
}
}
});
}
$scope.delete = function(project) {
SweetAlert.swal({
title: '',
text: 'Are you sure to delete ?',
type: '',
showCancelButton: true,
confirmButtonColor: '#DD6B55',
confirmButtonText: "Yes",
closeOnConfirm: true
}, function(isConfirm) {
if(isConfirm){
ProjectService.delete({projecId: project.name}, function(){
var pIndex = $scope.projects.indexOf(project);
if (pIndex > -1) {
$scope.projects.splice(pIndex, 1);
}
ProjectModel.removeProject(project.name);
MessageBox.successNotify("Project [" + project.name + "] has been deleted successfully!");
},function(e){
if(e.data&& e.data.exception){
var message =e.data.exception;
var msg = !!(message) ? message : 'Failed to take action.';
SweetAlert.swal('Oops...', msg, 'error');
}else{
SweetAlert.swal('Oops...', "Failed to take action.", 'error');
}
});
}
});
}
$scope.getMapLength = function(map) {
return Object.keys(map).length;
}
$scope.getOwnerString = function (project) {
project.newOwner = project.owner;
};
$scope.updateOwner = function (project) {
ProjectService.updateOwner({projecId: project.name}, project.newOwner, function () {
project.owner = project.newOwner;
MessageBox.successNotify('Owner updated successfully!');
},function(e){
if(e.data&& e.data.exception){
var message =e.data.exception;
var msg = !!(message) ? message : 'Failed to take action.';
SweetAlert.swal('Oops...', msg, 'error');
} else{
SweetAlert.swal('Oops...', "Failed to take action.", 'error');
}
});
};
}
);