diff --git a/awx/ui/static/js/controllers/Groups.js b/awx/ui/static/js/controllers/Groups.js
index cc0c774c1c..52eb78ce64 100644
--- a/awx/ui/static/js/controllers/Groups.js
+++ b/awx/ui/static/js/controllers/Groups.js
@@ -10,7 +10,7 @@
function InventoryGroups ($scope, $rootScope, $compile, $location, $log, $routeParams, InventoryGroupsForm,
GenerateForm, Rest, Alert, ProcessErrors, LoadBreadCrumbs, ReturnToCaller, ClearScope, Prompt,
BuildTree, GetBasePath, GroupsList, GroupsAdd, GroupsEdit, LoadInventory,
- GroupsDelete, RefreshGroupName, EditInventory, InventoryStatus)
+ GroupsDelete, EditInventory, InventoryStatus)
{
ClearScope('htmlTemplate'); //Garbage collection. Don't leave behind any listeners/watchers from the prior
@@ -159,6 +159,6 @@ InventoryGroups.$inject = [
'$scope', '$rootScope', '$compile', '$location', '$log', '$routeParams', 'InventoryGroupsForm',
'GenerateForm', 'Rest', 'Alert', 'ProcessErrors', 'LoadBreadCrumbs', 'ReturnToCaller', 'ClearScope', 'Prompt',
'BuildTree', 'GetBasePath', 'GroupsList', 'GroupsAdd', 'GroupsEdit', 'LoadInventory',
- 'GroupsDelete', 'RefreshGroupName', 'EditInventory', 'InventoryStatus'
+ 'GroupsDelete', 'EditInventory', 'InventoryStatus'
];
\ No newline at end of file
diff --git a/awx/ui/static/js/helpers/Groups.js b/awx/ui/static/js/helpers/Groups.js
index e76ef4cd58..c9d0131837 100644
--- a/awx/ui/static/js/helpers/Groups.js
+++ b/awx/ui/static/js/helpers/Groups.js
@@ -78,9 +78,9 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
}])
.factory('GroupsList', ['$rootScope', '$location', '$log', '$routeParams', 'Rest', 'Alert', 'GroupList', 'GenerateList',
- 'Prompt', 'SearchInit', 'PaginateInit', 'ProcessErrors', 'GetBasePath', 'GroupsAdd', 'RefreshTree', 'SelectionInit',
+ 'Prompt', 'SearchInit', 'PaginateInit', 'ProcessErrors', 'GetBasePath', 'GroupsAdd', 'SelectionInit',
function($rootScope, $location, $log, $routeParams, Rest, Alert, GroupList, GenerateList, Prompt, SearchInit, PaginateInit,
- ProcessErrors, GetBasePath, GroupsAdd, RefreshTree, SelectionInit) {
+ ProcessErrors, GetBasePath, GroupsAdd, SelectionInit) {
return function(params) {
// build and present the list of groups we can add to an existing group
@@ -180,7 +180,7 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
scope.removeModalClosed();
}
scope.removeModalClosed = scope.$on('modalClosed', function() {
- RefreshTree({ scope: scope });
+ /* RefreshTree({ scope: scope }); */
});
}
}])
@@ -188,9 +188,9 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
.factory('InventoryStatus', [ '$rootScope', '$routeParams', 'Rest', 'Alert', 'ProcessErrors', 'GetBasePath', 'FormatDate', 'InventorySummary',
'GenerateList', 'ClearScope', 'SearchInit', 'PaginateInit', 'Refresh', 'InventoryUpdate', 'GroupsEdit', 'ShowUpdateStatus', 'HelpDialog',
- 'ShowGroupHelp', 'InventorySummaryHelp', 'BuildTree', 'ClickNode',
+ 'InventorySummaryHelp', 'BuildTree', 'ClickNode',
function($rootScope, $routeParams, Rest, Alert, ProcessErrors, GetBasePath, FormatDate, InventorySummary, GenerateList, ClearScope, SearchInit,
- PaginateInit, Refresh, InventoryUpdate, GroupsEdit, ShowUpdateStatus, HelpDialog, ShowGroupHelp, InventorySummaryHelp, BuildTree, ClickNode) {
+ PaginateInit, Refresh, InventoryUpdate, GroupsEdit, ShowUpdateStatus, HelpDialog, InventorySummaryHelp, BuildTree, ClickNode) {
return function(params) {
//Build a summary of a given inventory
@@ -516,8 +516,6 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
}
}
}
-
- ShowGroupHelp({ scope: scope });
}
}])
@@ -653,7 +651,7 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
GetSourceTypeOptions({ scope: scope, variable: 'source_type_options' });
scope.update_interval_options = GetUpdateIntervalOptions();
- scope.source = null;
+ scope.source = form.fields.source['default'];
scope.parseType = 'yaml';
scope[form.fields['source_vars'].parseTypeName] = 'yaml';
scope.sourcePasswordRequired = false;
diff --git a/awx/ui/static/js/helpers/inventory.js b/awx/ui/static/js/helpers/inventory.js
index 2f7f45d04d..0cf040a43e 100644
--- a/awx/ui/static/js/helpers/inventory.js
+++ b/awx/ui/static/js/helpers/inventory.js
@@ -14,253 +14,6 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
'InventoryFormDefinition', 'ParseHelper', 'InventorySummaryDefinition'
])
- .factory('LoadTreeData', ['Alert', 'Rest', 'Authorization', '$http', 'Wait', 'SortNodes', 'HideElement',
- function(Alert, Rest, Authorization, $http, Wait, SortNodes, HideElement) {
- return function(params) {
-
- var scope = params.scope;
- var inventory = params.inventory;
- var group_id = params.group_id;
- var group_idx;
- var groups = inventory.related.root_groups;
- var hosts = inventory.related.hosts;
- var inventory_name = inventory.name;
- var inventory_url = inventory.url;
- var inventory_id = inventory.id;
- var has_active_failures = inventory.has_active_failures;
- var inventory_descr = inventory.description;
- var idx=0;
- var treeData =
- [{
- data: {
- title: inventory_name
- },
- attr: {
- type: 'inventory',
- id: 'inventory-node',
- url: inventory_url,
- 'inventory_id': inventory_id,
- name: inventory_name,
- description: inventory_descr,
- "data-failures": inventory.has_active_failures
- },
- state: 'open',
- children:[]
- }];
-
- function addNodes(tree, data) {
- var sorted = SortNodes(data);
- for (var i=0; i < sorted.length; i++) {
- tree.children.push({
- data: {
- title: sorted[i].name
- },
- attr: {
- id: idx,
- group_id: sorted[i].id,
- type: 'group',
- name: sorted[i].name,
- description: sorted[i].description,
- "data-failures": sorted[i].has_active_failures,
- inventory: sorted[i].inventory
- },
- state: 'open',
- children:[]
- });
- if (sorted[i].id == group_id) {
- group_idx = idx;
- }
- idx++;
- if (sorted[i].children.length > 0) {
- var node = tree.children.length - 1;
- addNodes(tree.children[node], sorted[i].children);
- }
- }
- }
-
- Rest.setUrl(scope.treeData);
- Rest.get()
- .success( function(data, status, headers, config) {
- var sorted = SortNodes(data);
- addNodes(treeData[0], sorted);
- scope.$emit('buildTree', treeData, idx, group_idx);
- })
- .error( function(data, status, headers, config) {
- ProcessErrors(scope, data, status, form,
- { hdr: 'Error!', msg: 'Failed to retrieve inventory tree data. GET returned status: ' + status });
- });
-
- }
- }])
-
-
- .factory('TreeInit', ['Alert', 'Rest', 'Authorization', '$http', 'LoadTreeData', 'GetBasePath', 'ProcessErrors', 'Wait',
- 'LoadRootGroups', 'ShowElement',
- function(Alert, Rest, Authorization, $http, LoadTreeData, GetBasePath, ProcessErrors, Wait, LoadRootGroups, ShowElement) {
- return function(params) {
-
- var scope = params.scope;
- var inventory = params.inventory;
- var group_id = params.group_id;
-
- var groups = inventory.related.root_groups;
- var hosts = inventory.related.hosts;
- var inventory_name = inventory.name;
- var inventory_url = inventory.url;
- var inventory_id = inventory.id;
- var inventory_descr = inventory.description;
- var tree_id = '#tree-view';
- var json_tree_data;
-
- // After loading the Inventory top-level data, initialize the tree
- if (scope.buildTreeRemove) {
- scope.buildTreeRemove();
- }
- scope.buildTreeRemove = scope.$on('buildTree', function(e, treeData, index, group_idx) {
- var idx = index;
- var selected = (group_idx !== undefined && group_idx !== null) ? group_idx : 'inventory-node';
- json_tree_data = treeData;
- $(tree_id).jstree({
- "core": { //"initially_open":['inventory-node'],
- "html_titles": true
- },
- "plugins": ['themes', 'json_data', 'ui', 'dnd', 'crrm', 'sort'],
- "themes": {
- "theme": "ansible",
- "dots": false,
- "icons": true
- },
- "ui": {
- "initially_select": [ selected ],
- "select_limit": 1
- },
- "json_data": {
- data: json_tree_data
- },
- "dnd": { },
- "crrm": {
- "move": {
- "check_move": function(m) {
- if (m.np.attr('id') == 'tree-view') {
- return false;
- }
- if (m.op.attr('id') == m.np.attr('id')) {
- // old parent and new parent cannot be the same
- return false;
- }
- return true;
- }
- }
- },
- "crrm" : { }
- });
- });
-
- $(tree_id).bind("loaded.jstree", function () {
- // Force root node styling changes
- $('#tree-view').prepend("
Group Selector:
");
- $('#inventory-node ins').first().remove();
- //$('#inventory-node a ins').first().css('background-image', 'none').append('').css('margin-right','10px');
-
- $('#tree-view ul').first().css('opacity','100'); // all our changes are done. display the tree
- scope['treeLoading'] = false;
- Wait('stop');
-
- scope.$emit('treeLoaded');
- });
-
- $(tree_id).bind('move_node.jstree', function(e, data) {
- // When user drags-n-drops a node, update the API
- Wait('start');
-
- var node, target, url, parent, inv_id, variables;
- node = $('#tree-view li[id="' + data.rslt.o[0].id + '"]'); // node being moved
- parent = $('#tree-view li[id="' + data.args[0].op[0].id + '"]'); //node moving from
- target = $('#tree-view li[id="' + data.rslt.np[0].id + '"]'); // node moving to
- inv_id = inventory_id;
-
- function cleanUp() {
- LoadRootGroups({ scope: scope });
- Wait('stop');
- }
-
- // disassociate the group from the original parent
- if (scope.removeGroupRemove) {
- scope.removeGroupRemove();
- }
- scope.removeGroupRemove = scope.$on('removeGroup', function() {
- var url = (parent.attr('type') == 'group') ? GetBasePath('base') + 'groups/' + parent.attr('group_id') + '/children/' :
- GetBasePath('inventory') + inv_id + '/groups/';
- Rest.setUrl(url);
- Rest.post({ id: node.attr('group_id'), disassociate: 1 })
- .success( function(data, status, headers, config) {
- cleanUp();
- })
- .error( function(data, status, headers, config) {
- cleanUp();
- ProcessErrors(scope, data, status, null,
- { hdr: 'Error!', msg: 'Failed to remove ' + node.attr('name') + ' from ' +
- parent.attr('name') + '. POST returned status: ' + status });
- });
- });
-
- if (scope['addToTargetRemove']) {
- scope.addToTargetRemove();
- }
- scope.addToTargetRemove = scope.$on('addToTarget', function() {
- // add the new group to the target parent
- var url = (target.attr('type') == 'group') ? GetBasePath('base') + 'groups/' + target.attr('group_id') + '/children/' :
- GetBasePath('inventory') + inv_id + '/groups/';
- var group = {
- id: node.attr('group_id'),
- name: node.attr('name'),
- description: node.attr('description'),
- inventory: node.attr('inventory')
- }
- Rest.setUrl(url);
- Rest.post(group)
- .success( function(data, status, headers, config) {
- scope.$emit('removeGroup');
- })
- .error( function(data, status, headers, config) {
- cleanUp();
- ProcessErrors(scope, data, status, null,
- { hdr: 'Error!', msg: 'Failed to add ' + node.attr('name') + ' to ' +
- target.attr('name') + '. POST returned status: ' + status });
- });
- });
-
-
- // Lookup the inventory. We already have what we need except for variables.
- Rest.setUrl(GetBasePath('base') + 'groups/' + node.attr('group_id') + '/');
- Rest.get()
- .success( function(data, status, headers, config) {
- variables = (data.variables) ? JSON.parse(data.variables) : "";
- scope.$emit('addToTarget');
- })
- .error( function(data, status, headers, config) {
- cleanUp();
- ProcessErrors(scope, data, status, null,
- { hdr: 'Error!', msg: 'Failed to lookup group ' + node.attr('name') +
- '. GET returned status: ' + status });
- });
-
- if (!scope.$$phase) {
- scope.$digest();
- }
- });
-
- // When user clicks on a group
- $(tree_id).bind("select_node.jstree", function(e, data){
- scope.$emit('NodeSelect', data.inst.get_json()[0]);
- });
-
- Wait('start');
- LoadTreeData(params);
-
- }
- }])
-
.factory('LoadRootGroups', ['Rest', 'ProcessErrors', function(Rest, ProcessErrors) {
return function(params) {
@@ -352,48 +105,10 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
}
}])
-
- .factory('RefreshGroupName', [ function() {
- return function(node, name, description) {
- // Call after GroupsEdit controller saves changes
- $('#tree-view').jstree('rename_node', node, name);
- node.attr('description', description);
- scope = angular.element(document.getElementById('htmlTemplate')).scope();
- scope['selectedNodeName'] = name;
- }
- }])
-
-
- .factory('RefreshTree', ['Alert', 'Rest', 'Authorization', '$http', 'TreeInit', 'LoadInventory', 'HideElement',
- function(Alert, Rest, Authorization, $http, TreeInit, LoadInventory, HideElement) {
- return function(params) {
-
- // Call after an Edit or Add to refresh tree data
-
- var scope = params.scope;
- var group_id = params.group_id;
-
- if (scope.inventoryLoadedRemove) {
- scope.inventoryLoadedRemove();
- }
- scope.inventoryLoadedRemove = scope.$on('inventoryLoaded', function() {
- $('#tree-view').jstree('destroy');
- scope.TreeParams.group_id = group_id;
- TreeInit(scope.TreeParams);
- });
-
- $('#tree-view ul').first().css('opacity','0'); //Hide the tree until all the changes are made
- scope.treeLoading = true;
- LoadInventory({ scope: scope, doPostSteps: true });
-
- }
- }])
-
-
.factory('SaveInventory', ['InventoryForm', 'Rest', 'Alert', 'ProcessErrors', 'LookUpInit', 'OrganizationList',
- 'GetBasePath', 'ParseTypeChange', 'LoadInventory', 'RefreshGroupName',
+ 'GetBasePath', 'ParseTypeChange', 'LoadInventory',
function(InventoryForm, Rest, Alert, ProcessErrors, LookUpInit, OrganizationList, GetBasePath, ParseTypeChange,
- LoadInventory, RefreshGroupName) {
+ LoadInventory) {
return function(params) {
// Save inventory property modifications
@@ -454,8 +169,8 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
catch(err) {
Alert("Error", "Error parsing inventory variables. Parser returned: " + err);
}
- }
- }])
+ }
+ }])
.factory('PostLoadInventory', ['InventoryForm', 'Rest', 'Alert', 'ProcessErrors', 'LookUpInit', 'OrganizationList', 'GetBasePath',
function(InventoryForm, Rest, Alert, ProcessErrors, LookUpInit, OrganizationList, GetBasePath) {
@@ -495,13 +210,14 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
if (!scope.$$phase) {
scope.$digest();
}
- }
- }])
+
+ }
+ }])
.factory('EditInventory', ['InventoryForm', 'GenerateForm', 'Rest', 'Alert', 'ProcessErrors', 'LookUpInit', 'OrganizationList',
- 'GetBasePath', 'ParseTypeChange', 'LoadInventory', 'RefreshGroupName', 'SaveInventory', 'PostLoadInventory',
+ 'GetBasePath', 'ParseTypeChange', 'LoadInventory', 'SaveInventory', 'PostLoadInventory',
function(InventoryForm, GenerateForm, Rest, Alert, ProcessErrors, LookUpInit, OrganizationList, GetBasePath, ParseTypeChange,
- LoadInventory, RefreshGroupName, SaveInventory, PostLoadInventory) {
+ LoadInventory, SaveInventory, PostLoadInventory) {
return function(params) {
var generator = GenerateForm;
@@ -549,55 +265,12 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
}
scope.removeInventorySaved = scope.$on('inventorySaved', function() {
$('#form-modal').modal('hide');
- // Make sure the inventory name appears correctly in the tree and the navbar
- RefreshGroupName($('#inventory-node'), scope['inventory_name'], scope['inventory_description']);
- });
+ });
scope.formModalAction = function() {
SaveInventory({ scope: scope });
- }
+ }
- }
- }])
-
- .factory('ShowGroupHelp', ['Rest', 'ProcessErrors', 'GetBasePath', function(Rest, ProcessErrors, GetBasePath) {
- return function(params) {
- // Check if inventory has groups. If not, turn on hints to let user know groups are required
- // before hosts can be added
- var scope = params.scope;
- var url = GetBasePath('inventory') + scope.inventory_id + '/groups/?page=1';
- Rest.setUrl(url);
- Rest.get()
- .success( function(data, status, headers, config) {
- if (data.count == 0) {
- // no groups exist, show help
- scope.$emit('ShowHelp');
- }
- })
- .error( function(data, status, headers, config) {
- ProcessErrors(scope, data, status, form,
- { hdr: 'Error!', msg: 'Failed to retrieve inventory group count. ' + url + ' GET status: ' + status });
- });
- }
- }])
-
- .factory('SortNodes', [ function() {
- return function(data) {
- //Sort nodes by name
- var names = [];
- var newData = [];
- for (var i=0; i < data.length; i++) {
- names.push(data[i].name);
}
- names.sort();
- for (var j=0; j < names.length; j++) {
- for (i=0; i < data.length; i++) {
- if (data[i].name == names[j]) {
- newData.push(data[i]);
- }
- }
- }
- return newData;
- }
- }]);
+ }]);
diff --git a/awx/ui/static/lib/ansible/TreeSelector.js b/awx/ui/static/lib/ansible/TreeSelector.js
index 0adabc0e8c..92ca2ddcb3 100644
--- a/awx/ui/static/lib/ansible/TreeSelector.js
+++ b/awx/ui/static/lib/ansible/TreeSelector.js
@@ -7,11 +7,31 @@
*
*/
-angular.module('TreeSelector', ['Utilities', 'RestServices'])
+angular.module('TreeSelector', ['Utilities', 'RestServices', 'TreeSelector'])
+
+ .factory('SortNodes', [ function() {
+ return function(data) {
+ //Sort nodes by name
+ var names = [];
+ var newData = [];
+ for (var i=0; i < data.length; i++) {
+ names.push(data[i].name);
+ }
+ names.sort();
+ for (var j=0; j < names.length; j++) {
+ for (i=0; i < data.length; i++) {
+ if (data[i].name == names[j]) {
+ newData.push(data[i]);
+ }
+ }
+ }
+ return newData;
+ }
+ }])
+
.factory('BuildTree', ['Rest', 'GetBasePath', 'ProcessErrors', '$compile', '$rootScope', 'Wait', 'SortNodes',
function(Rest, GetBasePath, ProcessErrors, $compile, $rootScope, Wait, SortNodes) {
return function(params) {
-
var scope = params.scope;
var inventory_id = params.inventory_id;
var emit_on_select = params.emit_on_select;
@@ -359,7 +379,7 @@ angular.module('TreeSelector', ['Utilities', 'RestServices'])
}
}
html += "\n";
- }
+ }
// Build the HTML for our tree
if (scope.buildAllGroupsRemove) {
@@ -475,6 +495,3 @@ angular.module('TreeSelector', ['Utilities', 'RestServices'])
$(selector).first().detach();
}
}]);
-
-
-