Latest UI changes. Credential List and Edit working -need to add ask pw option and validation around team vs. user. Lookup dialog is now a generic helper that can be shared by all controllers. Credentials controller is first to use api-loader which reads the \/api and \/api\/v1 to determine base set of urls. And more...

This commit is contained in:
chouseknecht
2013-05-09 23:49:51 -04:00
parent 2cbed11034
commit fdceb46c12
25 changed files with 1218 additions and 65 deletions

View File

@@ -0,0 +1,137 @@
/*********************************************
* Copyright (c) 2013 AnsibleWorks, Inc.
*
* Credentials.js
* Form definition for Credential model
*
*
*/
angular.module('CredentialFormDefinition', [])
.value(
'CredentialForm', {
addTitle: 'Create Credential', //Legend in add mode
editTitle: '{{ name }}', //Legend in edit mode
name: 'team',
well: true,
fields: {
name: {
label: 'Name',
type: 'text',
addRequired: true,
editRequired: true
},
description: {
label: 'Description',
type: 'text',
addRequired: false,
editRequired: false
},
"ssh_username": {
label: 'SSH Username',
type: 'text',
addRequired: false,
editRequired: false
},
"ssh_password": {
label: 'SSH Password',
type: 'password',
addRequired: false,
editRequired: false,
ngChange: "clearPWConfirm('ssh_password_confirm')"
},
"ssh_password_confirm": {
label: 'Confirm SSH Password',
type: 'password',
addRequired: false,
editRequired: false,
awPassMatch: true,
associated: 'ssh_password'
},
"ssh_key_data": {
label: 'SSH Key',
type: 'textarea',
addRequired: false,
editRequired: false,
rows: 10
},
"ssh_key_unlock": {
label: 'Key Password',
type: 'password',
addRequired: false,
editRequired: false,
ngChange: "clearPWConfirm('ssh_key_unlock_confirm')"
},
"ssh_key_unlock_confirm": {
label: 'Confirm Key Password',
type: 'password',
addRequired: false,
editRequired: false,
awPassMatch: true,
associated: 'ssh_key_unlock'
},
"sudo_username": {
label: 'Sudo Username',
type: 'text',
addRequired: false,
editRequired: false
},
"sudo_password": {
label: 'Sudo Password',
type: 'text',
addRequired: false,
editRequired: false,
ngChange: "clearPWConfirm('sudo_password_confirm')"
},
"sudo_password_confirm": {
label: 'Confirm Sudo Password',
type: 'password',
addRequired: false,
editRequired: false,
awPassMatch: true,
associated: 'sudo_password'
},
user: {
label: 'User',
type: 'lookup',
sourceModel: 'user',
sourceField: 'username',
addRequired: false,
editRequired: false,
ngClick: 'lookUpUser()'
},
team: {
label: 'Team',
type: 'lookup',
sourceModel: 'team',
sourceField: 'name',
addRequired: false,
editRequired: false,
ngClick: 'lookUpTeam()'
}
},
buttons: { //for now always generates <button> tags
save: {
label: 'Save',
icon: 'icon-ok',
class: 'btn btn-success',
ngClick: 'formSave()', //$scope.function to call on click, optional
ngDisabled: true //Disable when $pristine or $invalid, optional
},
reset: {
ngClick: 'formReset()',
label: 'Reset',
icon: 'icon-remove',
class: 'btn',
ngDisabled: true //Disabled when $pristine
}
},
related: { //related colletions (and maybe items?)
}
}); //InventoryForm

View File

@@ -58,6 +58,117 @@ angular.module('TeamFormDefinition', [])
},
related: { //related colletions (and maybe items?)
users: {
type: 'collection',
title: 'Users',
iterator: 'user',
open: false,
actions: {
add: {
ngClick: "add('users')",
icon: 'icon-plus'
},
},
fields: {
username: {
key: true,
label: 'Username'
},
first_name: {
label: 'First Name'
},
last_name: {
label: 'Last Name'
}
},
fieldActions: {
edit: {
ngClick: "edit('users', \{\{ user.id \}\}, '\{\{ user.username \}\}')",
icon: 'icon-edit'
},
delete: {
ngClick: "delete('users', \{\{ user.id \}\}, '\{\{ user.username \}\}', 'users')",
icon: 'icon-remove',
class: 'btn-danger'
}
}
},
credentials: {
type: 'collection',
title: 'Credentials',
iterator: 'credential',
open: false,
actions: {
add: {
ngClick: "add('credentials')",
icon: 'icon-plus'
},
},
fields: {
name: {
key: true,
label: 'Name'
},
description: {
label: 'Description'
}
},
fieldActions: {
edit: {
ngClick: "edit('credentials', \{\{ credential.id \}\}, '\{\{ credential.name \}\}')",
icon: 'icon-edit'
},
delete: {
ngClick: "delete('credentials', \{\{ credential.id \}\}, '\{\{ credential.name \}\}', 'credentials')",
icon: 'icon-remove',
class: 'btn-danger'
}
}
},
projects: {
type: 'collection',
title: 'Projects',
iterator: 'project',
open: false,
actions: {
add: {
ngClick: "add('projects')",
icon: 'icon-plus'
},
},
fields: {
name: {
key: true,
label: 'Name'
},
description: {
label: 'Description'
}
},
fieldActions: {
edit: {
ngClick: "edit('projects', \{\{ project.id \}\}, '\{\{ project.name \}\}')",
icon: 'icon-edit'
},
delete: {
ngClick: "delete('projects', \{\{ project.id \}\}, '\{\{ project.name \}\}', 'projects')",
icon: 'icon-remove',
class: 'btn-danger'
}
}
}
}

View File

@@ -47,14 +47,15 @@ angular.module('UserFormDefinition', [])
type: 'password',
addRequired: true,
editRequired: false,
ngChange: 'clearPWConfirm()'
ngChange: "clearPWConfirm('password_confirm')"
},
password_confirm: {
label: 'Confirm Password',
type: 'password',
addRequired: false,
editRequired: false,
awPassMatch: true
awPassMatch: true,
associated: 'password'
},
is_superuser: {
label: 'Superuser?',