(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.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.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.teamRoles = [ { 'id': 'member', 'title': 'Member', 'kind': 'default' }, { 'id': 'creator', 'title': 'Creator', 'kind': 'success' }, { 'id': 'admin', 'title': 'Admin', 'kind': 'primary' } ]; $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(); } })();