188 lines
No EOL
5.2 KiB
JavaScript
188 lines
No EOL
5.2 KiB
JavaScript
(function() {
|
|
/**
|
|
* Page that displays details about an organization, such as its teams.
|
|
*/
|
|
angular.module('quayPages').config(['pages', function(pages) {
|
|
pages.create('org-view', 'org-view.html', OrgViewCtrl, {
|
|
'newLayout': true,
|
|
'title': 'Organization {{ organization.name }}',
|
|
'description': 'Organization {{ organization.name }}'
|
|
}, ['layout'])
|
|
|
|
pages.create('org-view', 'old-org-view.html', OldOrgViewCtrl, {
|
|
}, ['old-layout']);
|
|
}]);
|
|
|
|
function OrgViewCtrl($scope, $routeParams, $timeout, ApiService, UIService, AvatarService) {
|
|
var orgname = $routeParams.orgname;
|
|
|
|
$scope.showLogsCounter = 0;
|
|
$scope.showApplicationsCounter = 0;
|
|
$scope.showInvoicesCounter = 0;
|
|
$scope.showRobotsCounter = 0;
|
|
$scope.showTeamsCounter = 0;
|
|
|
|
$scope.orgScope = {
|
|
'changingOrganization': false,
|
|
'organizationEmail': ''
|
|
};
|
|
|
|
$scope.$watch('orgScope.organizationEmail', function(e) {
|
|
UIService.hidePopover('#changeEmailForm input');
|
|
});
|
|
|
|
var loadRepositories = function() {
|
|
var options = {
|
|
'namespace_only': true,
|
|
'namespace': orgname,
|
|
};
|
|
|
|
$scope.repositoriesResource = ApiService.listReposAsResource().withOptions(options).get(function(resp) {
|
|
return resp.repositories;
|
|
});
|
|
};
|
|
|
|
var loadOrganization = function() {
|
|
$scope.orgResource = ApiService.getOrganizationAsResource({'orgname': orgname}).get(function(org) {
|
|
$scope.organization = org;
|
|
$scope.orgScope.organizationEmail = org.email;
|
|
$scope.isAdmin = org.is_admin;
|
|
$scope.isMember = org.is_member;
|
|
|
|
// Load the repositories.
|
|
$timeout(function() {
|
|
loadRepositories();
|
|
}, 10);
|
|
});
|
|
};
|
|
|
|
// Load the organization.
|
|
loadOrganization();
|
|
|
|
$scope.showRobots = function() {
|
|
$scope.showRobotsCounter++;
|
|
};
|
|
|
|
$scope.showTeams = function() {
|
|
$scope.showTeamsCounter++;
|
|
};
|
|
|
|
$scope.showInvoices = function() {
|
|
$scope.showInvoicesCounter++;
|
|
};
|
|
|
|
$scope.showApplications = function() {
|
|
$scope.showApplicationsCounter++;
|
|
};
|
|
|
|
$scope.showLogs = function() {
|
|
$scope.showLogsCounter++;
|
|
};
|
|
|
|
$scope.changeEmail = function() {
|
|
UIService.hidePopover('#changeEmailForm input');
|
|
|
|
$scope.orgScope.changingOrganization = true;
|
|
var params = {
|
|
'orgname': orgname
|
|
};
|
|
|
|
var data = {
|
|
'email': $scope.orgScope.organizationEmail
|
|
};
|
|
|
|
ApiService.changeOrganizationDetails(data, params).then(function(org) {
|
|
$scope.orgScope.changingOrganization = false;
|
|
$scope.organization = org;
|
|
}, function(result) {
|
|
$scope.orgScope.changingOrganization = false;
|
|
UIService.showFormError('#changeEmailForm input', result, 'right');
|
|
});
|
|
};
|
|
}
|
|
|
|
function OldOrgViewCtrl($rootScope, $scope, ApiService, $routeParams, CreateService) {
|
|
var orgname = $routeParams.orgname;
|
|
|
|
$scope.TEAM_PATTERN = TEAM_PATTERN;
|
|
$rootScope.title = 'Loading...';
|
|
|
|
$scope.setRole = function(role, teamname) {
|
|
var previousRole = $scope.organization.teams[teamname].role;
|
|
$scope.organization.teams[teamname].role = role;
|
|
|
|
var params = {
|
|
'orgname': orgname,
|
|
'teamname': teamname
|
|
};
|
|
|
|
var data = $scope.organization.teams[teamname];
|
|
|
|
ApiService.updateOrganizationTeam(data, params).then(function(resp) {
|
|
}, function(resp) {
|
|
$scope.organization.teams[teamname].role = previousRole;
|
|
$scope.roleError = resp.data || '';
|
|
$('#cannotChangeTeamModal').modal({});
|
|
});
|
|
};
|
|
|
|
$scope.createTeam = function(teamname) {
|
|
if (!teamname) {
|
|
return;
|
|
}
|
|
|
|
if ($scope.organization.teams[teamname]) {
|
|
$('#team-' + teamname).removeClass('highlight');
|
|
setTimeout(function() {
|
|
$('#team-' + teamname).addClass('highlight');
|
|
}, 10);
|
|
return;
|
|
}
|
|
|
|
CreateService.createOrganizationTeam(ApiService, orgname, teamname, function(created) {
|
|
$scope.organization.teams[teamname] = created;
|
|
});
|
|
};
|
|
|
|
$scope.askDeleteTeam = function(teamname) {
|
|
$scope.currentDeleteTeam = teamname;
|
|
$('#confirmdeleteModal').modal({});
|
|
};
|
|
|
|
$scope.deleteTeam = function() {
|
|
$('#confirmdeleteModal').modal('hide');
|
|
if (!$scope.currentDeleteTeam) { return; }
|
|
|
|
var teamname = $scope.currentDeleteTeam;
|
|
var params = {
|
|
'orgname': orgname,
|
|
'teamname': teamname
|
|
};
|
|
|
|
var errorHandler = ApiService.errorDisplay('Cannot delete team', function() {
|
|
$scope.currentDeleteTeam = null;
|
|
});
|
|
|
|
ApiService.deleteOrganizationTeam(null, params).then(function() {
|
|
delete $scope.organization.teams[teamname];
|
|
$scope.currentDeleteTeam = null;
|
|
}, errorHandler);
|
|
};
|
|
|
|
var loadOrganization = function() {
|
|
$scope.orgResource = ApiService.getOrganizationAsResource({'orgname': orgname}).get(function(org) {
|
|
$scope.organization = org;
|
|
$rootScope.title = orgname;
|
|
$rootScope.description = 'Viewing organization ' + orgname;
|
|
|
|
$('.info-icon').popover({
|
|
'trigger': 'hover',
|
|
'html': true
|
|
});
|
|
});
|
|
};
|
|
|
|
// Load the organization.
|
|
loadOrganization();
|
|
}
|
|
})(); |