Start of inventory re-write

This commit is contained in:
Chris Houseknecht
2013-12-06 03:06:15 +00:00
parent 1dd0634c8a
commit f1b99f12b6
29 changed files with 676 additions and 213 deletions

View File

@@ -50,7 +50,7 @@ angular.module('CloudCredentialsListDefinition', [])
label: 'Create New',
mode: 'all', // One of: edit, select, all
ngClick: 'addCredential()',
"class": 'btn-success btn-xs',
"class": 'btn-sm',
awToolTip: 'Create a new credential'
}
},
@@ -60,7 +60,7 @@ angular.module('CloudCredentialsListDefinition', [])
ngClick: "editCredential(\{\{ credential.id \}\})",
icon: 'icon-edit',
label: 'Edit',
"class": 'btn-xs btn-default',
"class": 'btn-sm',
awToolTip: 'View/Edit credential'
},
@@ -68,7 +68,7 @@ angular.module('CloudCredentialsListDefinition', [])
ngClick: "deleteCredential(\{\{ credential.id \}\},'\{\{ credential.name \}\}')",
icon: 'icon-trash',
label: 'Delete',
"class": 'btn-xs btn-danger',
"class": 'btn-sm',
awToolTip: 'Delete credential'
}
}

View File

@@ -59,11 +59,11 @@ angular.module('CredentialsListDefinition', [])
label: 'Create New',
mode: 'all', // One of: edit, select, all
ngClick: 'addCredential()',
"class": 'btn-success btn-xs',
"class": 'btn-sm',
awToolTip: 'Create a new credential'
},
stream: {
'class': "btn-primary btn-xs activity-btn",
'class': "btn-sm activity-btn",
ngClick: "showActivity()",
awToolTip: "View Activity Stream",
dataPlacement: "top",
@@ -79,7 +79,7 @@ angular.module('CredentialsListDefinition', [])
ngClick: "editCredential(\{\{ credential.id \}\})",
icon: 'icon-edit',
label: 'Edit',
"class": 'btn-xs btn-default',
"class": 'btn-sm',
awToolTip: 'View/Edit credential'
},
@@ -87,7 +87,7 @@ angular.module('CredentialsListDefinition', [])
ngClick: "deleteCredential(\{\{ credential.id \}\},'\{\{ credential.name \}\}')",
icon: 'icon-trash',
label: 'Delete',
"class": 'btn-xs btn-danger',
"class": 'btn-sm',
awToolTip: 'Delete credential'
}
}

View File

@@ -35,7 +35,7 @@ angular.module('GroupListDefinition', [])
dataContainer: '#form-modal .modal-content',
icon: "icon-question-sign",
mode: 'all',
'class': 'btn-xs btn-info btn-help pull-right',
'class': 'btn-xs btn-help pull-right',
awToolTip: 'Click for help',
dataTitle: 'Adding Groups',
iconSize: 'large'
@@ -47,7 +47,7 @@ angular.module('GroupListDefinition', [])
label: 'Edit',
ngClick: "editGroup(\{\{ group.id \}\})",
icon: 'icon-edit',
"class": 'btn-xs btn-default',
"class": 'btn-xs',
awToolTip: 'View/Edit group'
},
@@ -55,7 +55,7 @@ angular.module('GroupListDefinition', [])
label: 'Delete',
ngClick: "deleteGroup(\{\{ group.id \}\},'\{\{ group.name \}\}')",
icon: 'icon-trash',
"class": 'btn-xs btn-danger',
"class": 'btn-xs',
awToolTip: 'Delete group'
}
}

View File

@@ -111,7 +111,7 @@ angular.module('HomeGroupListDefinition', [])
actions: {
stream: {
'class': "btn-primary btn-xs activity-btn",
'class': "btn-xs activity-btn",
ngClick: "showActivity()",
awToolTip: "View Activity Stream",
dataPlacement: "top",

View File

@@ -82,7 +82,7 @@ angular.module('HomeHostListDefinition', [])
actions: {
stream: {
'class': "btn-primary btn-xs activity-btn",
'class': "btn-xs activity-btn",
ngClick: "showActivity()",
awToolTip: "View Activity Stream",
dataPlacement: "top",

View File

@@ -47,7 +47,7 @@ angular.module('HostListDefinition', [])
label: 'Edit',
ngClick: "editHost(\{\{ host.id \}\})",
icon: 'icon-edit',
"class": 'btn-xs btn-default',
"class": 'btn-xs',
awToolTip: 'View/Edit host'
},
@@ -55,7 +55,7 @@ angular.module('HostListDefinition', [])
label: 'Delete',
ngClick: "deleteHost(\{\{ host.id \}\},'\{\{ host.name \}\}')",
icon: 'icon-trash',
"class": 'btn-xs btn-danger',
"class": 'btn-xs',
awToolTip: 'Delete host'
}
}

View File

@@ -82,28 +82,39 @@ angular.module('InventoriesListDefinition', [])
actions: {
add: {
label: 'Create New',
label: 'Add',
icon: 'icon-plus',
mode: 'all', // One of: edit, select, all
ngClick: 'addInventory()',
"class": 'btn-xs btn-success',
awToolTip: 'Create a new inventory'
},
stream: {
'class': "btn-primary btn-xs activity-btn",
label: 'Activity',
ngClick: "showActivity()",
awToolTip: "View Activity Stream",
dataPlacement: "top",
icon: "icon-comments-alt",
mode: 'all',
iconSize: 'large',
ngShow: "user_is_superuser"
}
},
fieldActions: {
dropdown: {
edit: {
label: 'Edit',
ngClick: "editInventory(\{\{ inventory.id \}\})",
icon: 'icon-edit',
"class": 'btn-xs btn-default',
awToolTip: 'Edit inventory'
},
"delete": {
label: 'Delete',
ngClick: "deleteInventory(\{\{ inventory.id \}\},'\{\{ inventory.name \}\}')",
icon: 'icon-trash',
"class": 'btn-xs btn-danger',
awToolTip: 'Delete inventory'
},
dropdown: {
type: 'DropDown',
label: 'Jobs',
icon: 'icon-zoom-in',
@@ -112,24 +123,6 @@ angular.module('InventoriesListDefinition', [])
{ ngClick: 'viewJobs(\{\{ inventory.id \}\})', label: 'All' },
{ ngClick: "viewFailedJobs(\{\{ inventory.id \}\})", label: 'Failed' }
]
},
edit: {
type: 'DropDown',
label: 'Edit',
icon: 'icon-edit',
'class': 'btn-default btn-xs',
options: [
{ ngClick: "editInventory(\{\{ inventory.id \}\})", label: 'Properties' },
{ ngClick: "editHosts(\{\{ inventory.id \}\})", label: 'Hosts' },
{ ngClick: "editGroups(\{\{ inventory.id \}\})", label: 'Groups' }
]
},
"delete": {
label: 'Delete',
ngClick: "deleteInventory(\{\{ inventory.id \}\},'\{\{ inventory.name \}\}')",
icon: 'icon-trash',
"class": 'btn-xs btn-danger',
awToolTip: 'Delete inventory'
}
}
});

View File

@@ -0,0 +1,186 @@
/*********************************************
* Copyright (c) 2013 AnsibleWorks, Inc.
*
* InventorySummary.js
*
* Summary of groups contained within an inventory
*
*/
angular.module('InventoryGroupsDefinition', [])
.value(
'InventoryGroups', {
name: 'groups',
iterator: 'group',
editTitle: '{{ inventory_name | capitalize }}',
showTitle: false,
well: true,
index: false,
hover: true,
hasChildren: true,
class: 'table-condensed',
fields: {
name: {
key: true,
label: 'name',
ngClick: "\{\{ 'GroupsEdit(' + group.id + ')' \}\}",
//ngClass: "\{\{ 'level' + group.level \}\}",
hasChildren: true
},
status: {
label: 'Sync Status',
ngClick: "viewUpdateStatus(\{\{ group.id \}\})",
searchType: 'select',
badgeIcon: "\{\{ 'icon-cloud-' + group.status_badge_class \}\}",
badgeToolTip: "\{\{ group.status_badge_tooltip \}\}",
awToolTip: "\{\{ group.status_badge_tooltip \}\}",
dataPlacement: 'top',
badgeTipPlacement: 'top',
badgePlacement: 'left',
searchOptions: [
{ name: "failed", value: "failed" },
{ name: "never", value: "never updated" },
{ name: "n/a", value: "none" },
{ name: "successful", value: "successful" },
{ name: "updating", value: "updating" }],
sourceModel: 'inventory_source',
sourceField: 'status'
},
failed_hosts: {
label: 'Failed Hosts',
ngHref: "\{\{ group.failed_hosts_link \}\}",
badgeIcon: "\{\{ 'icon-failures-' + group.failed_hosts_class \}\}",
badgeNgHref: "\{\{ group.failed_hosts_link \}\}",
badgePlacement: 'left',
badgeToolTip: "\{\{ group.failed_hosts_tip \}\}",
badgeTipPlacement: 'top',
awToolTip: "\{\{ group.failed_hosts_tip \}\}",
dataPlacement: "top",
searchable: false,
excludeModal: true,
sortField: "hosts_with_active_failures"
},
source: {
label: 'Source',
searchType: 'select',
searchOptions: [
{ name: "ec2", value: "ec2" },
{ name: "none", value: "" },
{ name: "rax", value: "rax" }],
sourceModel: 'inventory_source',
sourceField: 'source',
searchOnly: true
},
has_external_source: {
label: 'Has external source?',
searchType: 'in',
searchValue: 'ec2,rax',
searchOnly: true,
sourceModel: 'inventory_source',
sourceField: 'source'
},
has_active_failures: {
label: 'Has failed hosts?',
searchSingleValue: true,
searchType: 'boolean',
searchValue: 'true',
searchOnly: true
},
last_update_failed: {
label: 'Update failed?',
searchType: 'select',
searchSingleValue: true,
searchValue: 'failed',
searchOnly: true,
sourceModel: 'inventory_source',
sourceField: 'status'
}
},
actions: {
create: {
label: 'Add',
mode: 'all',
icon: 'icon-plus',
'class': "btn-sm",
ngClick: "createGroup()",
ngHide: "groupCreateHide",
ngDisabled: 'grpBtnDisabled',
awToolTip: "Create a new top-level group",
dataPlacement: 'top',
iconSize: 'large'
},
refresh: {
label: 'Refresh',
dataPlacement: 'top',
icon: "icon-refresh",
mode: 'all',
'class': 'btn-sm',
awToolTip: "Refresh the page",
ngClick: "refresh()",
iconSize: 'large'
},
stream: {
label: 'Activity',
'class': "btn-sm activity-btn",
ngClick: "showActivity()",
awToolTip: "View Activity Stream",
dataPlacement: "top",
icon: "icon-comments-alt",
mode: 'all',
iconSize: 'large',
ngShow: "user_is_superuser"
},
help: {
label: 'Help',
dataPlacement: 'top',
icon: "icon-question-sign",
mode: 'all',
'class': 'btn-sm btn-help',
awToolTip:
//"<div style=\"text-align:left;\"><img src=\"/static/img/cow.png\" style=\"width:50px; height:56px; float:left; padding-right:5px;\">" +
//"<p>Need help getting started creating your inventory?</p><p>Click here for help.</p></div>",
"<div style=\"text-align:left;\"><p>Need help getting started creating your inventory?</p><p>Click here for help.</p></div>",
iconSize: 'large',
ngClick: "showHelp()",
id: "inventory-summary-help"
}
},
fieldActions: {
group_update: {
label: 'Update',
icon: 'icon-cloud-download',
"class": 'btn-xs btn-primary',
ngClick: 'updateGroup(\{\{ group.id \}\})',
awToolTip: "\{\{ group.update_tooltip \}\}",
ngClass: "group.update_class",
awToolTip: "Start inventory sync"
},
cancel: {
label: 'Cancel',
icon: 'icon-minus-sign',
ngClick: "cancelUpdate(\{\{ group.id \}\}, '\{\{ group.name \}\}')",
"class": 'btn-xs btn-primary',
awToolTip: "\{\{ group.cancel_tooltip \}\}",
ngClass: "group.cancel_class",
ngShow: "group.status == 'running' || group.status == 'pending'"
},
edit: {
label: 'Edit',
ngClick: "editGroup(\{\{ group.id \}\})",
icon: 'icon-edit',
"class": 'btn-xs btn-primary',
awToolTip: 'Edit group'
},
"delete": {
label: 'Delete',
ngClick: "deleteGroup(\{\{ group.id \}\},'\{\{ group.name \}\}')",
icon: 'icon-trash',
"class": 'btn-xs btn-primary',
awToolTip: 'Delete group'
}
}
});

View File

@@ -89,7 +89,7 @@ angular.module('JobEventsListDefinition', [])
dataPlacement: 'top',
icon: "icon-refresh",
mode: 'all',
'class': 'btn-xs btn-primary',
'class': 'btn-xs',
awToolTip: "Refresh the page",
ngClick: "refresh()",
iconSize: 'large'

View File

@@ -113,7 +113,7 @@ angular.module('JobHostDefinition', [])
dataContainer: "body",
icon: "icon-question-sign",
mode: 'all',
'class': 'btn-info btn-xs btn-help',
'class': 'btn-xs btn-help',
awToolTip: 'Click for help',
dataTitle: 'Job Host Summary',
id: 'jobhost-help-button',
@@ -123,7 +123,7 @@ angular.module('JobHostDefinition', [])
dataPlacement: 'top',
icon: "icon-refresh",
mode: 'all',
'class': 'btn-xs btn-primary',
'class': 'btn-xs',
awToolTip: "Refresh the page",
ngClick: "refresh()",
iconSize: 'large',

View File

@@ -34,12 +34,12 @@ angular.module('JobTemplatesListDefinition', [])
icon: 'icon-plus',
mode: 'all', // One of: edit, select, all
ngClick: 'addJobTemplate()',
"class": 'btn-success btn-xs',
"class": 'btn-xs',
basePaths: ['job_templates'],
awToolTip: 'Create a new template'
},
stream: {
'class': "btn-primary btn-xs activity-btn",
'class': "btn-xs activity-btn",
ngClick: "showActivity()",
awToolTip: "View Activity Stream",
dataPlacement: "top",

View File

@@ -79,7 +79,7 @@ angular.module('JobsListDefinition', [])
dataPlacement: 'top',
icon: "icon-refresh",
mode: 'all',
'class': 'btn-xs btn-primary',
'class': 'btn-xs',
awToolTip: "Refresh the page",
ngClick: "refresh()",
iconSize: 'large'

View File

@@ -33,11 +33,11 @@ angular.module('OrganizationListDefinition', [])
icon: 'icon-plus',
mode: 'all', // One of: edit, select, all
ngClick: 'addOrganization()',
"class": 'btn-success btn-xs',
"class": 'btn-xs',
awToolTip: 'Create a new organization'
},
stream: {
'class': "btn-primary btn-xs activity-btn",
'class': "btn-xs activity-btn",
ngClick: "showActivity()",
awToolTip: "View Activity Stream",
dataPlacement: "top",

View File

@@ -47,12 +47,12 @@ angular.module('PermissionListDefinition', [])
label: 'Create New',
mode: 'all', // One of: edit, select, all
ngClick: 'addPermission()',
"class": 'btn-success btn-xs',
"class": 'btn-xs',
awToolTip: 'Add a new permission',
ngShow: 'PermissionAddAllowed'
},
stream: {
'class': "btn-primary btn-xs activity-btn",
'class': "btn-xs activity-btn",
ngClick: "showActivity()",
awToolTip: "View Activity Stream",
dataPlacement: "top",

View File

@@ -61,7 +61,7 @@ angular.module('ProjectsListDefinition', [])
icon: 'icon-plus',
mode: 'all', // One of: edit, select, all
ngClick: 'addProject()',
"class": 'btn-success btn-xs',
"class": 'btn-xs',
awToolTip: 'Create a new project'
},
help: {
@@ -77,7 +77,7 @@ angular.module('ProjectsListDefinition', [])
dataContainer: 'body',
icon: "icon-question-sign",
mode: 'all',
'class': 'btn-xs btn-info btn-help',
'class': 'btn-xs btn-help',
awToolTip: 'Click for help',
awTipPlacement: 'top',
dataTitle: 'Project Status',
@@ -87,13 +87,13 @@ angular.module('ProjectsListDefinition', [])
dataPlacement: 'top',
icon: "icon-refresh",
mode: 'all',
'class': 'btn-xs btn-primary',
'class': 'btn-xs',
awToolTip: "Refresh the page",
ngClick: "refresh()",
iconSize: 'large'
},
stream: {
'class': "btn-primary btn-xs activity-btn",
'class': "btn-xs activity-btn",
ngClick: "showActivity()",
awToolTip: "View Activity Stream",
dataPlacement: "top",

View File

@@ -208,7 +208,7 @@ angular.module('StreamListDefinition', [])
dataPlacement: 'top',
icon: "icon-refresh",
mode: 'all',
'class': 'btn-xs btn-primary',
'class': 'btn-xs',
awToolTip: "Refresh the page",
ngClick: "refreshStream()",
iconSize: 'large'
@@ -217,7 +217,7 @@ angular.module('StreamListDefinition', [])
dataPlacement: 'top',
icon: "icon-arrow-left",
mode: 'all',
'class': 'btn-xs btn-primary',
'class': 'btn-xs',
awToolTip: "Close Activity Stream view",
ngClick: "closeStream()",
iconSize: 'large'

View File

@@ -40,11 +40,11 @@ angular.module('TeamsListDefinition', [])
icon: 'icon-plus',
mode: 'all', // One of: edit, select, all
ngClick: 'addTeam()',
"class": 'btn-xs btn-success',
"class": 'btn-xs',
awToolTip: 'Create a new team'
},
stream: {
'class': "btn-primary btn-xs activity-btn",
'class': "btn-xs activity-btn",
ngClick: "showActivity()",
awToolTip: "View Activity Stream",
dataPlacement: "top",

View File

@@ -40,11 +40,11 @@ angular.module('UserListDefinition', [])
mode: 'all', // One of: edit, select, all
ngClick: 'addUser()',
basePaths: ['organizations','users'], // base path must be in list, or action not available
"class": 'btn-success btn-xs',
"class": 'btn-xs',
awToolTip: 'Create a new user'
},
stream: {
'class': "btn-primary btn-xs activity-btn",
'class': "btn-xs activity-btn",
ngClick: "showActivity()",
awToolTip: "View Activity Stream",
dataPlacement: "top",