mirror of
https://github.com/ansible/awx.git
synced 2026-03-10 14:09:28 -02:30
AC-379 Only a single node is selected whenever the tree is initialized. Also added a sort routine to the data load process so that nodes are now sorted by name.
This commit is contained in:
@@ -83,7 +83,7 @@ function Authenticate($window, $scope, $rootScope, $location, Authorization, Tog
|
|||||||
$rootScope.token = token;
|
$rootScope.token = token;
|
||||||
$rootScope.userLoggedIn = true;
|
$rootScope.userLoggedIn = true;
|
||||||
$rootScope.token_expire = today.getTime();
|
$rootScope.token_expire = today.getTime();
|
||||||
|
|
||||||
// Get all the profile/access info regarding the logged in user
|
// Get all the profile/access info regarding the logged in user
|
||||||
Authorization.getUser()
|
Authorization.getUser()
|
||||||
.success(function(data, status, headers, config) {
|
.success(function(data, status, headers, config) {
|
||||||
|
|||||||
@@ -138,13 +138,14 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
|
|||||||
Rest.setUrl(defaultUrl);
|
Rest.setUrl(defaultUrl);
|
||||||
Rest.post(data)
|
Rest.post(data)
|
||||||
.success( function(data, status, headers, config) {
|
.success( function(data, status, headers, config) {
|
||||||
|
var id = data.id;
|
||||||
scope.showGroupHelp = false; // get rid of the Hint
|
scope.showGroupHelp = false; // get rid of the Hint
|
||||||
if (scope.variables) {
|
if (scope.variables) {
|
||||||
Rest.setUrl(data.related.variable_data);
|
Rest.setUrl(data.related.variable_data);
|
||||||
Rest.put(json_data)
|
Rest.put(json_data)
|
||||||
.success( function(data, status, headers, config) {
|
.success( function(data, status, headers, config) {
|
||||||
$('#form-modal').modal('hide');
|
$('#form-modal').modal('hide');
|
||||||
RefreshTree({ scope: scope });
|
RefreshTree({ scope: scope, group_id: id });
|
||||||
})
|
})
|
||||||
.error( function(data, status, headers, config) {
|
.error( function(data, status, headers, config) {
|
||||||
ProcessErrors(scope, data, status, form,
|
ProcessErrors(scope, data, status, form,
|
||||||
@@ -153,7 +154,7 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', '
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$('#form-modal').modal('hide');
|
$('#form-modal').modal('hide');
|
||||||
RefreshTree({ scope: scope });
|
RefreshTree({ scope: scope, group_id: id });
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.error( function(data, status, headers, config) {
|
.error( function(data, status, headers, config) {
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
|
|||||||
|
|
||||||
var scope = params.scope;
|
var scope = params.scope;
|
||||||
var inventory = params.inventory;
|
var inventory = params.inventory;
|
||||||
|
var group_id = params.group_id;
|
||||||
|
var group_idx;
|
||||||
var groups = inventory.related.root_groups;
|
var groups = inventory.related.root_groups;
|
||||||
var hosts = inventory.related.hosts;
|
var hosts = inventory.related.hosts;
|
||||||
var inventory_name = inventory.name;
|
var inventory_name = inventory.name;
|
||||||
@@ -45,38 +47,61 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
|
|||||||
state: 'open',
|
state: 'open',
|
||||||
children:[]
|
children:[]
|
||||||
}];
|
}];
|
||||||
|
|
||||||
function addNodes(tree, data) {
|
function sortNodes(data) {
|
||||||
for (var i=0; i < data.length; i++) {
|
//Sort nodes by name
|
||||||
tree.children.push({
|
var names = [];
|
||||||
data: {
|
var newData = [];
|
||||||
title: data[i].name
|
for (var i=0; i < data.length; i++) {
|
||||||
},
|
names.push(data[i].name);
|
||||||
attr: {
|
}
|
||||||
id: idx,
|
names.sort();
|
||||||
group_id: data[i].id,
|
for (var j=0; j < names.length; j++) {
|
||||||
type: 'group',
|
for (i=0; i < data.length; i++) {
|
||||||
name: data[i].name,
|
if (data[i].name == names[j]) {
|
||||||
description: data[i].description,
|
newData.push(data[i]);
|
||||||
"data-failures": data[i].has_active_failures,
|
}
|
||||||
inventory: data[i].inventory
|
}
|
||||||
},
|
}
|
||||||
state: 'open',
|
return newData;
|
||||||
children:[]
|
}
|
||||||
});
|
|
||||||
idx++;
|
function addNodes(tree, data) {
|
||||||
if (data[i].children.length > 0) {
|
var sorted = sortNodes(data);
|
||||||
var node = tree.children.length - 1;
|
for (var i=0; i < sorted.length; i++) {
|
||||||
addNodes(tree.children[node], data[i].children);
|
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.setUrl(scope.treeData);
|
||||||
Rest.get()
|
Rest.get()
|
||||||
.success( function(data, status, headers, config) {
|
.success( function(data, status, headers, config) {
|
||||||
addNodes(treeData[0], data);
|
var sorted = sortNodes(data);
|
||||||
scope.$emit('buildTree', treeData, idx);
|
addNodes(treeData[0], sorted);
|
||||||
|
scope.$emit('buildTree', treeData, idx, group_idx);
|
||||||
})
|
})
|
||||||
.error( function(data, status, headers, config) {
|
.error( function(data, status, headers, config) {
|
||||||
ProcessErrors(scope, data, status, form,
|
ProcessErrors(scope, data, status, form,
|
||||||
@@ -93,6 +118,8 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
|
|||||||
|
|
||||||
var scope = params.scope;
|
var scope = params.scope;
|
||||||
var inventory = params.inventory;
|
var inventory = params.inventory;
|
||||||
|
var group_id = params.group_id;
|
||||||
|
|
||||||
var groups = inventory.related.root_groups;
|
var groups = inventory.related.root_groups;
|
||||||
var hosts = inventory.related.hosts;
|
var hosts = inventory.related.hosts;
|
||||||
var inventory_name = inventory.name;
|
var inventory_name = inventory.name;
|
||||||
@@ -105,10 +132,12 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
|
|||||||
if (scope.buildTreeRemove) {
|
if (scope.buildTreeRemove) {
|
||||||
scope.buildTreeRemove();
|
scope.buildTreeRemove();
|
||||||
}
|
}
|
||||||
scope.buildTreeRemove = scope.$on('buildTree', function(e, treeData, index) {
|
scope.buildTreeRemove = scope.$on('buildTree', function(e, treeData, index, group_idx) {
|
||||||
var idx = index;
|
var idx = index;
|
||||||
|
var selected = (group_idx !== undefined && group_idx !== null) ? group_idx : 'inventory-node';
|
||||||
|
|
||||||
$(tree_id).jstree({
|
$(tree_id).jstree({
|
||||||
"core": { "initially_open":['inventory_node'],
|
"core": { //"initially_open":['inventory-node'],
|
||||||
"html_titles": true
|
"html_titles": true
|
||||||
},
|
},
|
||||||
"plugins": ['themes', 'json_data', 'ui', 'contextmenu', 'dnd', 'crrm'],
|
"plugins": ['themes', 'json_data', 'ui', 'contextmenu', 'dnd', 'crrm'],
|
||||||
@@ -118,8 +147,8 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
|
|||||||
"icons": true
|
"icons": true
|
||||||
},
|
},
|
||||||
"ui": {
|
"ui": {
|
||||||
"initially_select": [ 'inventory-node' ],
|
"initially_select": [ selected ],
|
||||||
"select_limit": 1
|
"select_limit": 1
|
||||||
},
|
},
|
||||||
"json_data": {
|
"json_data": {
|
||||||
data: treeData
|
data: treeData
|
||||||
@@ -179,6 +208,7 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
|
|||||||
|
|
||||||
$(tree_id).bind("loaded.jstree", function () {
|
$(tree_id).bind("loaded.jstree", function () {
|
||||||
scope['treeLoading'] = false;
|
scope['treeLoading'] = false;
|
||||||
|
Wait('stop');
|
||||||
scope.$emit('treeLoaded');
|
scope.$emit('treeLoaded');
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -297,8 +327,6 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
|
|||||||
$(tree_id).bind("select_node.jstree", function(e, data){
|
$(tree_id).bind("select_node.jstree", function(e, data){
|
||||||
scope.$emit('NodeSelect', data.inst.get_json()[0]);
|
scope.$emit('NodeSelect', data.inst.get_json()[0]);
|
||||||
});
|
});
|
||||||
|
|
||||||
Wait('stop');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Wait('start');
|
Wait('start');
|
||||||
@@ -324,26 +352,28 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
|
|||||||
Rest.setUrl(GetBasePath('inventory') + scope['inventory_id'] + '/');
|
Rest.setUrl(GetBasePath('inventory') + scope['inventory_id'] + '/');
|
||||||
Rest.get()
|
Rest.get()
|
||||||
.success( function(data, status, headers, config) {
|
.success( function(data, status, headers, config) {
|
||||||
|
|
||||||
LoadBreadCrumbs({ path: '/inventories/' + $routeParams.id, title: data.name });
|
LoadBreadCrumbs({ path: '/inventories/' + $routeParams.id, title: data.name });
|
||||||
|
|
||||||
for (var fld in form.fields) {
|
for (var fld in form.fields) {
|
||||||
if (form.fields[fld].realName) {
|
if (form.fields[fld].realName) {
|
||||||
if (data[form.fields[fld].realName]) {
|
if (data[form.fields[fld].realName]) {
|
||||||
scope[fld] = data[form.fields[fld].realName];
|
scope[fld] = data[form.fields[fld].realName];
|
||||||
scope.master[fld] = scope[fld];
|
scope.master[fld] = scope[fld];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (data[fld]) {
|
if (data[fld]) {
|
||||||
scope[fld] = data[fld];
|
scope[fld] = data[fld];
|
||||||
scope.master[fld] = scope[fld];
|
scope.master[fld] = scope[fld];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (form.fields[fld].type == 'lookup' && data.summary_fields[form.fields[fld].sourceModel]) {
|
if (form.fields[fld].type == 'lookup' && data.summary_fields[form.fields[fld].sourceModel]) {
|
||||||
scope[form.fields[fld].sourceModel + '_' + form.fields[fld].sourceField] =
|
scope[form.fields[fld].sourceModel + '_' + form.fields[fld].sourceField] =
|
||||||
data.summary_fields[form.fields[fld].sourceModel][form.fields[fld].sourceField];
|
data.summary_fields[form.fields[fld].sourceModel][form.fields[fld].sourceField];
|
||||||
scope.master[form.fields[fld].sourceModel + '_' + form.fields[fld].sourceField] =
|
scope.master[form.fields[fld].sourceModel + '_' + form.fields[fld].sourceField] =
|
||||||
scope[form.fields[fld].sourceModel + '_' + form.fields[fld].sourceField];
|
scope[form.fields[fld].sourceModel + '_' + form.fields[fld].sourceField];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
scope.inventoryGroupsUrl = data.related.groups;
|
scope.inventoryGroupsUrl = data.related.groups;
|
||||||
@@ -382,8 +412,11 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
|
|||||||
return function(params) {
|
return function(params) {
|
||||||
|
|
||||||
// Call after an Edit or Add to refresh tree data
|
// Call after an Edit or Add to refresh tree data
|
||||||
|
|
||||||
var scope = params.scope;
|
var scope = params.scope;
|
||||||
|
var group_id = params.group_id;
|
||||||
|
|
||||||
|
/*
|
||||||
var openId = [];
|
var openId = [];
|
||||||
var selectedId;
|
var selectedId;
|
||||||
|
|
||||||
@@ -410,13 +443,15 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
|
|
||||||
if (scope.inventoryLoadedRemove) {
|
if (scope.inventoryLoadedRemove) {
|
||||||
scope.inventoryLoadedRemove();
|
scope.inventoryLoadedRemove();
|
||||||
}
|
}
|
||||||
scope.inventoryLoadedRemove = scope.$on('inventoryLoaded', function() {
|
scope.inventoryLoadedRemove = scope.$on('inventoryLoaded', function() {
|
||||||
// Get the list of open tree nodes starting with the current group and going up
|
// Get the list of open tree nodes starting with the current group and going up
|
||||||
// the tree until we hit the inventory or root node.
|
// the tree until we hit the inventory or root node.
|
||||||
|
/*
|
||||||
function findOpenNodes(node) {
|
function findOpenNodes(node) {
|
||||||
if (node.attr('id') != 'inventory-node') {
|
if (node.attr('id') != 'inventory-node') {
|
||||||
if (node.prop('tagName') == 'LI' && (node.hasClass('jstree-open') || node.find('.jstree-clicked'))) {
|
if (node.prop('tagName') == 'LI' && (node.hasClass('jstree-open') || node.find('.jstree-clicked'))) {
|
||||||
@@ -427,7 +462,9 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi
|
|||||||
}
|
}
|
||||||
selectedId = scope.selectedNode.attr('id');
|
selectedId = scope.selectedNode.attr('id');
|
||||||
findOpenNodes(scope.selectedNode);
|
findOpenNodes(scope.selectedNode);
|
||||||
|
*/
|
||||||
$('#tree-view').jstree('destroy');
|
$('#tree-view').jstree('destroy');
|
||||||
|
scope.TreeParams.group_id = group_id;
|
||||||
TreeInit(scope.TreeParams);
|
TreeInit(scope.TreeParams);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user