fix project cred lookups when many credential types exist

This commit is contained in:
Jake McDermott 2018-11-06 22:20:51 -05:00
parent 33dfb6bf76
commit 0f85c867a0
No known key found for this signature in database
GPG Key ID: 9A6F084352C3A0B7
3 changed files with 46 additions and 17 deletions

View File

@ -7,10 +7,10 @@
export default ['$scope', '$location', '$stateParams', 'GenerateForm',
'ProjectsForm', 'Rest', 'Alert', 'ProcessErrors', 'GetBasePath',
'GetProjectPath', 'GetChoices', 'Wait', '$state', 'CreateSelect2', 'i18n',
'CredentialTypes', 'ConfigData', 'resolvedModels',
'ConfigData', 'resolvedModels', 'scmCredentialType',
function($scope, $location, $stateParams, GenerateForm, ProjectsForm, Rest,
Alert, ProcessErrors, GetBasePath, GetProjectPath, GetChoices, Wait, $state,
CreateSelect2, i18n, CredentialTypes, ConfigData, resolvedModels) {
CreateSelect2, i18n, ConfigData, resolvedModels, scmCredentialType) {
let form = ProjectsForm(),
base = $location.path().replace(/^\//, '').split('/')[0],
@ -191,13 +191,9 @@ export default ['$scope', '$location', '$stateParams', 'GenerateForm',
$scope.lookupCredential = function(){
// Perform a lookup on the credential_type. Git, Mercurial, and Subversion
// all use SCM as their credential type.
let credType = _.filter(CredentialTypes, function(credType){
return ($scope.scm_type.value !== "insights" && credType.kind === "scm" ||
$scope.scm_type.value === "insights" && credType.kind === "insights");
});
$state.go('.credential', {
credential_search: {
credential_type: credType[0].id,
credential_type: scmCredentialType,
page_size: '5',
page: '1'
}

View File

@ -8,12 +8,12 @@ export default ['$scope', '$rootScope', '$stateParams', 'ProjectsForm', 'Rest',
'Alert', 'ProcessErrors', 'GenerateForm', 'Prompt',
'GetBasePath', 'GetProjectPath', 'Authorization', 'GetChoices', 'Empty',
'Wait', 'ProjectUpdate', '$state', 'CreateSelect2', 'ToggleNotification',
'i18n', 'CredentialTypes', 'OrgAdminLookup', 'ConfigData',
'i18n', 'OrgAdminLookup', 'ConfigData', 'scmCredentialType',
function($scope, $rootScope, $stateParams, ProjectsForm, Rest, Alert,
ProcessErrors, GenerateForm, Prompt, GetBasePath,
GetProjectPath, Authorization, GetChoices, Empty, Wait, ProjectUpdate,
$state, CreateSelect2, ToggleNotification, i18n, CredentialTypes,
OrgAdminLookup, ConfigData) {
$state, CreateSelect2, ToggleNotification, i18n, OrgAdminLookup,
ConfigData, scmCredentialType) {
let form = ProjectsForm(),
defaultUrl = GetBasePath('projects') + $stateParams.project_id + '/',
@ -321,13 +321,10 @@ export default ['$scope', '$rootScope', '$stateParams', 'ProjectsForm', 'Rest',
$scope.lookupCredential = function(){
// Perform a lookup on the credential_type. Git, Mercurial, and Subversion
// all use SCM as their credential type.
let credType = _.filter(CredentialTypes, function(credType){
return ($scope.scm_type.value !== "insights" && credType.kind === "scm" ||
$scope.scm_type.value === "insights" && credType.kind === "insights");
});
$state.go('.credential', {
credential_search: {
credential_type: credType[0].id,
credential_type: scmCredentialType,
page_size: '5',
page: '1'
}

View File

@ -20,6 +20,25 @@ import {
import ProjectsTemplatesRoute from '~features/templates/routes/projectsTemplatesList.route';
import projectsListRoute from '~features/projects/routes/projectsList.route.js';
function ResolveScmCredentialType (GetBasePath, Rest, ProcessErrors) {
Rest.setUrl(GetBasePath('credential_types') + '?kind=scm');
return Rest.get()
.then(({ data }) => {
return data.results[0].id;
})
.catch(({ data, status }) => {
ProcessErrors(null, data, status, null, {
hdr: 'Error!',
msg: 'Failed to get credential type data: ' + status
});
});
}
ResolveScmCredentialType.$inject = ['GetBasePath', 'Rest', 'ProcessErrors'];
export default
angular.module('Projects', [])
.controller('ProjectsAdd', ProjectsAdd)
@ -34,19 +53,29 @@ angular.module('Projects', [])
let stateDefinitions = stateDefinitionsProvider.$get();
let stateExtender = $stateExtenderProvider.$get();
const projectsAddName = 'projects.add';
const projectsEditName = 'projects.edit';
function generateStateTree() {
let projectAdd = stateDefinitions.generateTree({
name: 'projects.add',
name: projectsAddName,
url: '/add',
modes: ['add'],
form: 'ProjectsForm',
controllers: {
add: 'ProjectsAdd',
},
})
.then(res => {
const stateIndex = res.states.findIndex(s => s.name === projectsAddName);
res.states[stateIndex].resolve.scmCredentialType = ResolveScmCredentialType;
return res;
});
let projectEdit = stateDefinitions.generateTree({
name: 'projects.edit',
name: projectsEditName,
url: '/:project_id',
modes: ['edit'],
form: 'ProjectsForm',
@ -61,6 +90,13 @@ angular.module('Projects', [])
breadcrumbs: {
edit: '{{breadcrumb.project_name}}'
},
})
.then(res => {
const stateIndex = res.states.findIndex(s => s.name === projectsEditName);
res.states[stateIndex].resolve.scmCredentialType = ResolveScmCredentialType;
return res;
});
return Promise.all([