Removed address from footer. Made copyright a link. Refactored layout to use TB columns. Added media queries to stack columns and center things on small viewports.

This commit is contained in:
Chris Houseknecht
2013-12-20 15:22:06 +00:00
parent af5bb93864
commit 44574de083
9 changed files with 151 additions and 116 deletions

View File

@@ -30,14 +30,15 @@ angular.module('ansible', [
'InventoriesListDefinition', 'InventoriesListDefinition',
'InventoryFormDefinition', 'InventoryFormDefinition',
'InventoryHelper', 'InventoryHelper',
'InventoryHostsFormDefinition',
'InventoryGroupsFormDefinition',
'InventoryGroupsDefinition', 'InventoryGroupsDefinition',
'InventoryHostsDefinition',
'HostsHelper',
'AWFilters', 'AWFilters',
'HostFormDefinition', 'HostFormDefinition',
'HostListDefinition', 'HostListDefinition',
'GroupFormDefinition', 'GroupFormDefinition',
'GroupListDefinition', 'GroupListDefinition',
'GroupsHelper',
'TeamsListDefinition', 'TeamsListDefinition',
'TeamFormDefinition', 'TeamFormDefinition',
'TeamHelper', 'TeamHelper',

View File

@@ -314,31 +314,39 @@ InventoriesAdd.$inject = [ '$scope', '$rootScope', '$compile', '$location', '$lo
'OrganizationList', 'SearchInit', 'PaginateInit', 'LookUpInit', 'GetBasePath', 'ParseTypeChange', 'Wait']; 'OrganizationList', 'SearchInit', 'PaginateInit', 'LookUpInit', 'GetBasePath', 'ParseTypeChange', 'Wait'];
function InventoriesEdit ($rootScope, $location, $routeParams, GenerateList, ClearScope, InventoryGroups, BuildTree, Wait) function InventoriesEdit ($rootScope, $location, $routeParams, GenerateList, ClearScope, InventoryGroups, InventoryHosts, BuildTree, Wait,
UpdateStatusMsg, InjectHosts)
{ {
ClearScope('htmlTemplate'); //Garbage collection. Don't leave behind any listeners/watchers from the prior ClearScope('htmlTemplate'); //Garbage collection. Don't leave behind any listeners/watchers from the prior
//scope. //scope.
var generator = GenerateList; var generator = GenerateList;
var list = InventoryGroups; var list = InventoryGroups;
var base = $location.path().replace(/^\//,'').split('/')[0]; var base = $location.path().replace(/^\//,'').split('/')[0];
var scope = $rootScope.$new(); var scope = $rootScope.$new();
var groupScope; var groupScope;
scope.$on('searchTreeReady', function(e, inventory_name, groups) { scope.$on('searchTreeReady', function(e, inventory_name, groups) {
// After the tree data loads, generate the groups list // After the tree data loads, generate the groups list
groupScope = generator.inject(list, { mode: 'edit', id: 'groups-container', breadCrumbs: false, searchSize: 'col-lg-5' }); groupScope = generator.inject(list, { mode: 'edit', id: 'groups-container', breadCrumbs: false, searchSize: 'col-lg-5' });
Wait('stop'); groupScope.groups = groups;
groupScope.groups = groups; for (var i=0; i < groupScope.groups.length; i++) {
groupScope.inventory_name = inventory_name; var stat = UpdateStatusMsg({ status: groupScope.groups[i].status });
groupScope.inventory_id = $routeParams.inventory_id; groupScope.groups[i].status_badge_class = stat['class'];
}); groupScope.groups[i].status_badge_tooltip = stat['tooltip'];
groupScope.groups[i].status = stat['status'];
}
groupScope.inventory_name = inventory_name;
groupScope.inventory_id = $routeParams.inventory_id;
InjectHosts({ scope: groupScope });
Wait('stop');
});
BuildTree({ scope: scope, inventory_id: $routeParams.inventory_id }); BuildTree({ scope: scope, inventory_id: $routeParams.inventory_id });
} }
InventoriesEdit.$inject = [ '$rootScope','$location', '$routeParams', 'GenerateList', 'ClearScope', 'InventoryGroups', 'BuildTree', InventoriesEdit.$inject = [ '$rootScope','$location', '$routeParams', 'GenerateList', 'ClearScope', 'InventoryGroups', 'InventoryHosts', 'BuildTree',
'Wait' 'Wait', 'UpdateStatusMsg', 'InjectHosts'
]; ];

View File

@@ -10,7 +10,7 @@
angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', 'GroupListDefinition', angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', 'GroupListDefinition',
'SearchHelper', 'PaginateHelper', 'ListGenerator', 'AuthService', 'GroupsHelper', 'SearchHelper', 'PaginateHelper', 'ListGenerator', 'AuthService', 'GroupsHelper',
'InventoryHelper', 'SelectionHelper', 'JobSubmissionHelper', 'RefreshHelper', 'InventoryHelper', 'SelectionHelper', 'JobSubmissionHelper', 'RefreshHelper',
'PromptDialog', 'InventorySummaryHelpDefinition', 'TreeSelector', 'CredentialsListDefinition' 'PromptDialog', 'InventorySummaryHelpDefinition', 'CredentialsListDefinition'
]) ])
.factory('GetSourceTypeOptions', [ 'Rest', 'ProcessErrors', 'GetBasePath', function(Rest, ProcessErrors, GetBasePath) { .factory('GetSourceTypeOptions', [ 'Rest', 'ProcessErrors', 'GetBasePath', function(Rest, ProcessErrors, GetBasePath) {
@@ -209,9 +209,9 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
}]) }])
.factory('GroupsList', ['$rootScope', '$location', '$log', '$routeParams', 'Rest', 'Alert', 'GroupList', 'GenerateList', .factory('GroupsList', ['$rootScope', '$location', '$log', '$routeParams', 'Rest', 'Alert', 'GroupList', 'GenerateList',
'Prompt', 'SearchInit', 'PaginateInit', 'ProcessErrors', 'GetBasePath', 'GroupsAdd', 'SelectionInit', 'BuildTree', 'Prompt', 'SearchInit', 'PaginateInit', 'ProcessErrors', 'GetBasePath', 'GroupsAdd', 'SelectionInit',
function($rootScope, $location, $log, $routeParams, Rest, Alert, GroupList, GenerateList, Prompt, SearchInit, PaginateInit, function($rootScope, $location, $log, $routeParams, Rest, Alert, GroupList, GenerateList, Prompt, SearchInit, PaginateInit,
ProcessErrors, GetBasePath, GroupsAdd, SelectionInit, BuildTree) { ProcessErrors, GetBasePath, GroupsAdd, SelectionInit) {
return function(params) { return function(params) {
// build and present the list of groups we can add to an existing group // build and present the list of groups we can add to an existing group
@@ -300,23 +300,23 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
scope.removeModalClosed(); scope.removeModalClosed();
} }
scope.removeModalClosed = scope.$on('modalClosed', function() { scope.removeModalClosed = scope.$on('modalClosed', function() {
BuildTree({ /*BuildTree({
scope: scope, scope: scope,
inventory_id: inventory_id, inventory_id: inventory_id,
emit_on_select: 'NodeSelect', emit_on_select: 'NodeSelect',
target_id: 'search-tree-container', target_id: 'search-tree-container',
refresh: true, refresh: true,
moveable: true moveable: true
}); });*/
}); });
} }
}]) }])
.factory('InventoryStatus', [ '$rootScope', '$routeParams', 'Rest', 'Alert', 'ProcessErrors', 'GetBasePath', 'FormatDate', 'InventorySummary', .factory('InventoryStatus', [ '$rootScope', '$routeParams', 'Rest', 'Alert', 'ProcessErrors', 'GetBasePath', 'FormatDate', 'InventorySummary',
'GenerateList', 'ClearScope', 'SearchInit', 'PaginateInit', 'Refresh', 'InventoryUpdate', 'GroupsEdit', 'HelpDialog', 'GenerateList', 'ClearScope', 'SearchInit', 'PaginateInit', 'Refresh', 'InventoryUpdate', 'GroupsEdit', 'HelpDialog',
'InventorySummaryHelp', 'BuildTree', 'ClickNode', 'HostsStatusMsg', 'UpdateStatusMsg', 'ViewUpdateStatus', 'Wait', 'InventorySummaryHelp', 'ClickNode', 'HostsStatusMsg', 'UpdateStatusMsg', 'ViewUpdateStatus', 'Wait',
function($rootScope, $routeParams, Rest, Alert, ProcessErrors, GetBasePath, FormatDate, InventorySummary, GenerateList, ClearScope, function($rootScope, $routeParams, Rest, Alert, ProcessErrors, GetBasePath, FormatDate, InventorySummary, GenerateList, ClearScope,
SearchInit, PaginateInit, Refresh, InventoryUpdate, GroupsEdit, HelpDialog, InventorySummaryHelp, BuildTree, ClickNode, SearchInit, PaginateInit, Refresh, InventoryUpdate, GroupsEdit, HelpDialog, InventorySummaryHelp, ClickNode,
HostsStatusMsg, UpdateStatusMsg, ViewUpdateStatus, Wait) { HostsStatusMsg, UpdateStatusMsg, ViewUpdateStatus, Wait) {
return function(params) { return function(params) {
//Build a summary of a given inventory //Build a summary of a given inventory
@@ -522,7 +522,7 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
// Respond to refresh button // Respond to refresh button
scope.refresh = function() { scope.refresh = function() {
scope.search(list.iterator, false, true); /*scope.search(list.iterator, false, true);
BuildTree({ BuildTree({
scope: scope, scope: scope,
inventory_id: scope['inventory_id'], inventory_id: scope['inventory_id'],
@@ -530,7 +530,7 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
target_id: 'search-tree-container', target_id: 'search-tree-container',
refresh: true, refresh: true,
moveable: true moveable: true
}); });*/
} }
// Start the update process // Start the update process
@@ -584,9 +584,9 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
}]) }])
.factory('GroupsAdd', ['$rootScope', '$location', '$log', '$routeParams', 'Rest', 'Alert', 'GroupForm', 'GenerateForm', .factory('GroupsAdd', ['$rootScope', '$location', '$log', '$routeParams', 'Rest', 'Alert', 'GroupForm', 'GenerateForm',
'Prompt', 'ProcessErrors', 'GetBasePath', 'ParseTypeChange', 'GroupsEdit', 'BuildTree', 'ClickNode', 'Wait', 'Prompt', 'ProcessErrors', 'GetBasePath', 'ParseTypeChange', 'GroupsEdit', 'ClickNode', 'Wait',
function($rootScope, $location, $log, $routeParams, Rest, Alert, GroupForm, GenerateForm, Prompt, ProcessErrors, function($rootScope, $location, $log, $routeParams, Rest, Alert, GroupForm, GenerateForm, Prompt, ProcessErrors,
GetBasePath, ParseTypeChange, GroupsEdit, BuildTree, ClickNode, Wait) { GetBasePath, ParseTypeChange, GroupsEdit, ClickNode, Wait) {
return function(params) { return function(params) {
var inventory_id = params.inventory_id; var inventory_id = params.inventory_id;
@@ -664,7 +664,7 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
scope.formModalActionDisabled = false; scope.formModalActionDisabled = false;
scope.showGroupHelp = false; //get rid of the Hint scope.showGroupHelp = false; //get rid of the Hint
$('#form-modal').modal('hide'); $('#form-modal').modal('hide');
BuildTree({ /*BuildTree({
scope: scope, scope: scope,
inventory_id: scope['inventory_id'], inventory_id: scope['inventory_id'],
emit_on_select: 'NodeSelect', emit_on_select: 'NodeSelect',
@@ -672,7 +672,7 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
refresh: true, refresh: true,
moveable: true, moveable: true,
group_id: data.id group_id: data.id
}); });*/
}) })
.error( function(data, status, headers, config) { .error( function(data, status, headers, config) {
Wait('stop'); Wait('stop');
@@ -1158,9 +1158,9 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
.factory('GroupsDelete', ['$rootScope', '$location', '$log', '$routeParams', 'Rest', 'Alert', 'GroupForm', 'GenerateForm', .factory('GroupsDelete', ['$rootScope', '$location', '$log', '$routeParams', 'Rest', 'Alert', 'GroupForm', 'GenerateForm',
'Prompt', 'ProcessErrors', 'GetBasePath', 'BuildTree', 'Wait', 'ClickNode', 'Prompt', 'ProcessErrors', 'GetBasePath', 'Wait', 'ClickNode',
function($rootScope, $location, $log, $routeParams, Rest, Alert, GroupForm, GenerateForm, Prompt, ProcessErrors, function($rootScope, $location, $log, $routeParams, Rest, Alert, GroupForm, GenerateForm, Prompt, ProcessErrors,
GetBasePath, BuildTree, Wait, ClickNode) { GetBasePath, Wait, ClickNode) {
return function(params) { return function(params) {
// Delete the selected group node. Disassociates it from its parent. // Delete the selected group node. Disassociates it from its parent.
var scope = params.scope; var scope = params.scope;
@@ -1183,7 +1183,7 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
Rest.post({ id: group_id, disassociate: 1 }) Rest.post({ id: group_id, disassociate: 1 })
.success( function(data, status, headers, config) { .success( function(data, status, headers, config) {
//DeleteNode({ selector: '#' + obj.attr('id') }); //DeleteNode({ selector: '#' + obj.attr('id') });
BuildTree({ /*BuildTree({
scope: scope, scope: scope,
inventory_id: scope['inventory_id'], inventory_id: scope['inventory_id'],
emit_on_select: 'NodeSelect', emit_on_select: 'NodeSelect',
@@ -1191,7 +1191,7 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
refresh: true, refresh: true,
id: parent.attr('id'), id: parent.attr('id'),
moveable: true moveable: true
}); });*/
$('#prompt-modal').off(); $('#prompt-modal').off();
}) })
.error( function(data, status, headers, config) { .error( function(data, status, headers, config) {

View File

@@ -11,10 +11,37 @@ angular.module('HostsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', 'H
'SearchHelper', 'PaginateHelper', 'ListGenerator', 'AuthService', 'HostsHelper', 'SearchHelper', 'PaginateHelper', 'ListGenerator', 'AuthService', 'HostsHelper',
'InventoryHelper', 'RelatedSearchHelper','RelatedPaginateHelper', 'InventoryHelper', 'RelatedSearchHelper','RelatedPaginateHelper',
'InventoryFormDefinition', 'SelectionHelper', 'HostGroupsFormDefinition', 'InventoryFormDefinition', 'SelectionHelper', 'HostGroupsFormDefinition',
'InventoryHostsFormDefinition'
]) ])
.factory('HostsReload', [ 'Empty', 'InventoryHosts', 'GetBasePath', 'SearchInit', 'PaginateInit',
function(Empty, InventoryHosts, GetBasePath, SearchInit, PaginateInit) {
return function(params) {
var group_id = params.group_id;
var scope = params.scope;
var url = ( !Empty(group_id) ) ? GetBasePath('groups') + group_id + '/all_hosts/' :
GetBasePath('inventory') + params.inventory_id + '/hosts/';
SearchInit({ scope: scope, set: 'hosts', list: InventoryHosts, url: url });
PaginateInit({ scope: scope, list: InventoryHosts, url: url });
scope.search(InventoryHosts.iterator);
}
}])
.factory('InjectHosts', ['GenerateList', 'InventoryHosts', 'HostsReload',
function(GenerateList, InventoryHosts, HostsReload) {
return function(params) {
var scope = params.scope;
var generator = GenerateList;
generator.inject(InventoryHosts, { mode: 'edit', id: 'hosts-container', breadCrumbs: false, searchSize: 'col-lg-5' });
HostsReload({ scope: scope, group_id: null });
}
}])
.factory('SetHostStatus', [ function() { .factory('SetHostStatus', [ function() {
return function(host) { return function(host) {
// Set status related fields on a host object // Set status related fields on a host object
@@ -496,7 +523,7 @@ angular.module('HostsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', 'H
} }
}]) }])
/*
.factory('HostsReload', ['$location', '$routeParams', 'SearchInit', 'PaginateInit', 'InventoryHostsForm', 'GetBasePath', 'Wait', .factory('HostsReload', ['$location', '$routeParams', 'SearchInit', 'PaginateInit', 'InventoryHostsForm', 'GetBasePath', 'Wait',
'SetHostStatus', 'SetHostStatus',
function($location, $routeParams, SearchInit, PaginateInit, InventoryHostsForm, GetBasePath, Wait, SetHostStatus) { function($location, $routeParams, SearchInit, PaginateInit, InventoryHostsForm, GetBasePath, Wait, SetHostStatus) {
@@ -577,6 +604,8 @@ angular.module('HostsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', 'H
} }
}]) }])
*/
.factory('EditHostGroups', ['$rootScope', '$location', '$log', '$routeParams', 'Rest', 'Alert', 'GenerateForm', .factory('EditHostGroups', ['$rootScope', '$location', '$log', '$routeParams', 'Rest', 'Alert', 'GenerateForm',
'Prompt', 'ProcessErrors', 'GetBasePath', 'HostsReload', 'ParseTypeChange', 'Wait', 'Prompt', 'ProcessErrors', 'GetBasePath', 'HostsReload', 'ParseTypeChange', 'Wait',
function($rootScope, $location, $log, $routeParams, Rest, Alert, GenerateForm, Prompt, ProcessErrors, function($rootScope, $location, $log, $routeParams, Rest, Alert, GenerateForm, Prompt, ProcessErrors,

View File

@@ -22,8 +22,8 @@ angular.module('InventoryGroupsDefinition', [])
fields: { fields: {
name: { name: {
label: 'Group',
key: true, key: true,
label: 'name',
ngClick: "\{\{ 'GroupsEdit(' + group.id + ')' \}\}", ngClick: "\{\{ 'GroupsEdit(' + group.id + ')' \}\}",
//ngClass: "\{\{ 'level' + group.level \}\}", //ngClass: "\{\{ 'level' + group.level \}\}",
hasChildren: true hasChildren: true
@@ -103,13 +103,21 @@ angular.module('InventoryGroupsDefinition', [])
label: 'Add', label: 'Add',
mode: 'all', mode: 'all',
icon: 'icon-plus', icon: 'icon-plus',
'class': "btn-sm",
ngClick: "createGroup()", ngClick: "createGroup()",
ngHide: "groupCreateHide", ngHide: "groupCreateHide",
ngDisabled: 'grpBtnDisabled', ngDisabled: 'grpBtnDisabled',
awToolTip: "Create a new top-level group", awToolTip: "Create a new group",
dataPlacement: 'top', dataPlacement: 'top'
iconSize: 'large' },
edit: {
label: 'Edit',
mode: 'all',
icon: 'icon-wrench',
'class': "btn-sm",
ngHide: "groupEditHide",
ngDisabled: 'grpBtnDisabled',
awToolTip: "Edit inventory properties",
dataPlacement: 'top'
}, },
refresh: { refresh: {
label: 'Refresh', label: 'Refresh',
@@ -118,18 +126,16 @@ angular.module('InventoryGroupsDefinition', [])
mode: 'all', mode: 'all',
'class': 'btn-sm', 'class': 'btn-sm',
awToolTip: "Refresh the page", awToolTip: "Refresh the page",
ngClick: "refresh()", ngClick: "refresh()"
iconSize: 'large'
}, },
stream: { stream: {
label: 'Activity', label: 'Activity',
'class': "btn-sm activity-btn", 'class': "activity-btn",
ngClick: "showActivity()", ngClick: "showActivity()",
awToolTip: "View Activity Stream", awToolTip: "View Activity Stream",
dataPlacement: "top", dataPlacement: "top",
icon: "icon-comments-alt", icon: "icon-comments-alt",
mode: 'all', mode: 'all',
iconSize: 'large',
ngShow: "user_is_superuser" ngShow: "user_is_superuser"
}, },
help: { help: {
@@ -142,7 +148,6 @@ angular.module('InventoryGroupsDefinition', [])
//"<div style=\"text-align:left;\"><img src=\"/static/img/cow.png\" style=\"width:50px; height:56px; float:left; padding-right:5px;\">" + //"<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>", //"<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>", "<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()", ngClick: "showHelp()",
id: "inventory-summary-help" id: "inventory-summary-help"
} }
@@ -150,7 +155,7 @@ angular.module('InventoryGroupsDefinition', [])
fieldActions: { fieldActions: {
group_update: { group_update: {
label: 'Update', label: 'Sync',
icon: 'icon-cloud-download', icon: 'icon-cloud-download',
"class": 'btn-xs btn-primary', "class": 'btn-xs btn-primary',
ngClick: 'updateGroup(\{\{ group.id \}\})', ngClick: 'updateGroup(\{\{ group.id \}\})',

View File

@@ -87,19 +87,6 @@ angular.module('JobsListDefinition', [])
}, },
fieldActions: { fieldActions: {
dropdown: {
type: 'DropDown',
label: 'View',
icon: 'icon-zoom-in',
'class': 'btn-default btn-xs',
options: [
{ ngClick: "editJob(\{\{ job.id \}\}, '\{\{ job.summary_fields.job_template.name \}\}')", label: 'Status' },
{ ngClick: "viewEvents(\{{ job.id \}\}, '\{\{ job.summary_fields.job_template.name \}\}')", label: 'Events',
ngHide: "job.status == 'new'" },
{ ngClick: "viewSummary(\{{ job.id \}\}, '\{\{ job.summary_fields.job_template.name \}\}')", label: 'Host Summary',
ngHide: "job.status == 'new'" }
]
},
rerun: { rerun: {
label: 'Launch', label: 'Launch',
icon: 'icon-rocket', icon: 'icon-rocket',
@@ -125,6 +112,19 @@ angular.module('JobsListDefinition', [])
"class": 'btn-danger btn-xs delete-btn', "class": 'btn-danger btn-xs delete-btn',
awToolTip: 'Remove the selected job from the database', awToolTip: 'Remove the selected job from the database',
ngShow: "job.status != 'pending' && job.status != 'running' && job.status != 'waiting'" ngShow: "job.status != 'pending' && job.status != 'running' && job.status != 'waiting'"
} },
dropdown: {
type: 'DropDown',
label: 'View',
icon: 'icon-zoom-in',
'class': 'btn-default btn-xs',
options: [
{ ngClick: "editJob(\{\{ job.id \}\}, '\{\{ job.summary_fields.job_template.name \}\}')", label: 'Status' },
{ ngClick: "viewEvents(\{{ job.id \}\}, '\{\{ job.summary_fields.job_template.name \}\}')", label: 'Events',
ngHide: "job.status == 'new'" },
{ ngClick: "viewSummary(\{{ job.id \}\}, '\{\{ job.summary_fields.job_template.name \}\}')", label: 'Host Summary',
ngHide: "job.status == 'new'" }
]
},
} }
}); });

View File

@@ -8,6 +8,7 @@
*/ */
@black: #171717; @black: #171717;
@white: #FFF;
@warning: #FF9900; @warning: #FF9900;
@red: #da4f49; @red: #da4f49;
@red-hover: #AE3F3A; @red-hover: #AE3F3A;
@@ -336,49 +337,46 @@ a:hover {
} }
.site-footer { .site-footer {
width: 100%; width: 100%;
padding-top: 20px; padding-top: 20px;
padding-bottom: 40px; padding-bottom: 20px;
margin-top: 60px; margin-top: 60px;
color: @grey;
text-align: center;
background-color: @black;
a,
a:active,
a:visited {
margin-right: 15px;
color: @grey; color: @grey;
} text-align: center;
background-color: @black;
a:hover { a,
color: @blue; a:active,
} a:visited {
margin-right: 15px;
color: @grey;
}
.help { a:hover {
font-weight: normal; color: @white;
fon-size: 12px; }
}
.social { .help {
display: inline-block; padding-top: 15px;
} font-weight: normal;
}
.logo { .logo {
display: inline-block; display: inline-block;
} }
.logo img { .logo img {
max-width: 125px; max-width: 125px;
} }
.copyright {
padding-top: 15px;
display: inline-block;
font-weight: normal;
text-align: center;
}
} }
.copyright {
display: inline-block;
font-size: 11px;
font-weight: normal;
text-align: center;
}
.login-header { .login-header {
text-align: center; text-align: center;

View File

@@ -5,7 +5,7 @@
* *
* InventoryTree.js * InventoryTree.js
* *
* Build data for the tree selector table used on inventory detail page. * Build data for the tree selector table used on inventory detail page.
* *
*/ */
@@ -197,7 +197,8 @@ angular.module('InventoryTree', ['Utilities', 'RestServices'])
id: id, id: id,
event_level: level, event_level: level,
ngicon: (sorted[i].children.length > 0) ? 'icon-collapse-alt' : null, ngicon: (sorted[i].children.length > 0) ? 'icon-collapse-alt' : null,
related: { children: (sorted[i].children.length > 0) ? sorted[i].related.children : '' } related: { children: (sorted[i].children.length > 0) ? sorted[i].related.children : '' },
status: sorted[i].summary_fields.inventory_source.status
} }
groups.push(group); groups.push(group);
id++; id++;

View File

@@ -62,8 +62,6 @@
<script src="{{ STATIC_URL }}js/forms/Users.js"></script> <script src="{{ STATIC_URL }}js/forms/Users.js"></script>
<script src="{{ STATIC_URL }}js/forms/Organizations.js"></script> <script src="{{ STATIC_URL }}js/forms/Organizations.js"></script>
<script src="{{ STATIC_URL }}js/forms/Inventories.js"></script> <script src="{{ STATIC_URL }}js/forms/Inventories.js"></script>
<script src="{{ STATIC_URL }}js/forms/InventoryHosts.js"></script>
<script src="{{ STATIC_URL }}js/forms/InventoryGroups.js"></script>
<script src="{{ STATIC_URL }}js/forms/Teams.js"></script> <script src="{{ STATIC_URL }}js/forms/Teams.js"></script>
<script src="{{ STATIC_URL }}js/forms/Hosts.js"></script> <script src="{{ STATIC_URL }}js/forms/Hosts.js"></script>
<script src="{{ STATIC_URL }}js/forms/Groups.js"></script> <script src="{{ STATIC_URL }}js/forms/Groups.js"></script>
@@ -83,9 +81,8 @@
<script src="{{ STATIC_URL }}js/lists/Admins.js"></script> <script src="{{ STATIC_URL }}js/lists/Admins.js"></script>
<script src="{{ STATIC_URL }}js/lists/Inventories.js"></script> <script src="{{ STATIC_URL }}js/lists/Inventories.js"></script>
<script src="{{ STATIC_URL }}js/lists/Teams.js"></script> <script src="{{ STATIC_URL }}js/lists/Teams.js"></script>
<script src="{{ STATIC_URL }}js/lists/Hosts.js"></script>
<script src="{{ STATIC_URL }}js/lists/InventoryGroups.js"></script> <script src="{{ STATIC_URL }}js/lists/InventoryGroups.js"></script>
<script src="{{ STATIC_URL }}js/lists/Groups.js"></script> <script src="{{ STATIC_URL }}js/lists/InventoryHosts.js"></script>
<script src="{{ STATIC_URL }}js/lists/Credentials.js"></script> <script src="{{ STATIC_URL }}js/lists/Credentials.js"></script>
<script src="{{ STATIC_URL }}js/lists/JobTemplates.js"></script> <script src="{{ STATIC_URL }}js/lists/JobTemplates.js"></script>
<script src="{{ STATIC_URL }}js/lists/Projects.js"></script> <script src="{{ STATIC_URL }}js/lists/Projects.js"></script>
@@ -96,6 +93,8 @@
<script src="{{ STATIC_URL }}js/lists/Streams.js"></script> <script src="{{ STATIC_URL }}js/lists/Streams.js"></script>
<script src="{{ STATIC_URL }}js/lists/HomeGroups.js"></script> <script src="{{ STATIC_URL }}js/lists/HomeGroups.js"></script>
<script src="{{ STATIC_URL }}js/lists/HomeHosts.js"></script> <script src="{{ STATIC_URL }}js/lists/HomeHosts.js"></script>
<script src="{{ STATIC_URL }}js/lists/Groups.js"></script>
<script src="{{ STATIC_URL }}js/lists/Hosts.js"></script>
<script src="{{ STATIC_URL }}js/helpers/refresh-related.js"></script> <script src="{{ STATIC_URL }}js/helpers/refresh-related.js"></script>
<script src="{{ STATIC_URL }}js/helpers/related-paginate.js"></script> <script src="{{ STATIC_URL }}js/helpers/related-paginate.js"></script>
<script src="{{ STATIC_URL }}js/helpers/related-search.js"></script> <script src="{{ STATIC_URL }}js/helpers/related-search.js"></script>
@@ -118,6 +117,8 @@
<script src="{{ STATIC_URL }}js/helpers/Jobs.js"></script> <script src="{{ STATIC_URL }}js/helpers/Jobs.js"></script>
<script src="{{ STATIC_URL }}js/helpers/Credentials.js"></script> <script src="{{ STATIC_URL }}js/helpers/Credentials.js"></script>
<script src="{{ STATIC_URL }}js/helpers/Permissions.js"></script> <script src="{{ STATIC_URL }}js/helpers/Permissions.js"></script>
<script src="{{ STATIC_URL }}js/helpers/Groups.js"></script>
<script src="{{ STATIC_URL }}js/helpers/Hosts.js"></script>
<script src="{{ STATIC_URL }}js/widgets/JobStatus.js"></script> <script src="{{ STATIC_URL }}js/widgets/JobStatus.js"></script>
<script src="{{ STATIC_URL }}js/widgets/InventorySyncStatus.js"></script> <script src="{{ STATIC_URL }}js/widgets/InventorySyncStatus.js"></script>
<script src="{{ STATIC_URL }}js/widgets/SCMSyncStatus.js"></script> <script src="{{ STATIC_URL }}js/widgets/SCMSyncStatus.js"></script>
@@ -361,17 +362,9 @@
<div class="site-footer"> <div class="site-footer">
<div class="container"> <div class="container">
<div class="help pull-left"> <div class="help pull-left">
<!-- <a href="https://github.com/ansible" target="_blank"><i class="icon-github"></i></a>
<a href="https://www.facebook.com/pages/Ansibleworks/258737970923512?ref=hl" target="_blank"><i class="icon-facebook"></i></a>
<a href="http://www.twitter.com/ansibleworks" target="_blank"><i class="icon-twitter"></i></a>
<a href="http://www.linkedin.com/company/ansibleworks" target="_blank"><i class="icon-linkedin"></i></a> -->
<a href="https://ansibleworks.zendesk.com/anonymous_requests/new" target="_blank"><i class="icon-question-sign"></i> Contact Support</a> <a href="https://ansibleworks.zendesk.com/anonymous_requests/new" target="_blank"><i class="icon-question-sign"></i> Contact Support</a>
</div> </div>
<div class="copyright"> <div class="copyright"><a href="http://www.ansibleworks.com">Copyright &copy; 2013 AnsibleWorks, Inc. All rights reserved.</a></div>
Copyright &copy; 2013 AnsibleWorks, Inc. All rights reserved.<br />
1482 East Valley Road, Suite 888 &middot; Santa Barbara, California 93108 &middot; +1-800-825-0212<br />
<a href="http://www.ansibleworks.com" target="_blank">www.ansibleworks.com</a>
</div>
<div class="logo pull-right"> <div class="logo pull-right">
<a href="http://www.ansibleworks.com" target="_blank"><img src="{{ STATIC_URL }}img/AWX_logo.png" /></a> <a href="http://www.ansibleworks.com" target="_blank"><img src="{{ STATIC_URL }}img/AWX_logo.png" /></a>
</div> </div>