mirror of
https://github.com/ansible/awx.git
synced 2024-10-31 06:51:10 +03:00
More inventory state setup. This should get basic/smart inventory forms working in conjunction
This commit is contained in:
parent
09f99b04f2
commit
e411d5c69b
@ -4,7 +4,7 @@
|
||||
* All Rights Reserved
|
||||
*************************************************/
|
||||
|
||||
export default ['i18n', function(i18n) {
|
||||
export default ['i18n', 'buildHostListState', function(i18n, buildHostListState) {
|
||||
return {
|
||||
|
||||
addTitle: i18n._('NEW SMART INVENTORY'),
|
||||
@ -126,35 +126,12 @@ export default ['i18n', function(i18n) {
|
||||
},
|
||||
hosts: {
|
||||
name: 'hosts',
|
||||
// awToolTip: i18n._('Please save before assigning permissions'),
|
||||
// dataPlacement: 'top',
|
||||
basePath: 'api/v2/inventories/{{$stateParams.inventory_id}}/hosts/',
|
||||
type: 'collection',
|
||||
include: "RelatedHostsListDefinition",
|
||||
title: i18n._('Hosts'),
|
||||
iterator: 'host',
|
||||
index: false,
|
||||
open: false,
|
||||
// search: {
|
||||
// order_by: 'username'
|
||||
// },
|
||||
actions: {
|
||||
add: {
|
||||
label: i18n._('Add'),
|
||||
ngClick: "$state.go('.add')",
|
||||
awToolTip: i18n._('Add a permission'),
|
||||
actionClass: 'btn List-buttonSubmit',
|
||||
buttonContent: '+ ADD',
|
||||
// ngShow: '(inventory_obj.summary_fields.user_capabilities.edit || canAdd)'
|
||||
|
||||
}
|
||||
},
|
||||
fields: {
|
||||
name: {
|
||||
label: i18n._('Name'),
|
||||
// linkBase: 'users',
|
||||
class: 'col-lg-3 col-md-3 col-sm-3 col-xs-4'
|
||||
}
|
||||
}
|
||||
listState: buildHostListState,
|
||||
// addState: buildGroupsAddState,
|
||||
// editState: buildGroupsEditState
|
||||
},
|
||||
//this is a placeholder for when we're ready for completed jobs
|
||||
completed_jobs: {
|
||||
|
@ -34,129 +34,219 @@ angular.module('inventory', [
|
||||
let stateDefinitions = stateDefinitionsProvider.$get(),
|
||||
stateExtender = $stateExtenderProvider.$get();
|
||||
|
||||
function generateInventoryStates() {
|
||||
|
||||
let smartInventoryAdd = {
|
||||
name: 'inventories.addSmartInventory',
|
||||
url: '/smartinventory',
|
||||
form: 'SmartInventoryForm',
|
||||
ncyBreadcrumb: {
|
||||
label: "CREATE SMART INVENTORY"
|
||||
},
|
||||
views: {
|
||||
'form@inventories': {
|
||||
templateProvider: function(SmartInventoryForm, GenerateForm) {
|
||||
return GenerateForm.buildHTML(SmartInventoryForm, {
|
||||
mode: 'add',
|
||||
related: false
|
||||
});
|
||||
function generateInventoryStates() {
|
||||
|
||||
let basicInventoryAdd = stateDefinitions.generateTree({
|
||||
name: 'inventories.add', // top-most node in the generated tree (will replace this state definition)
|
||||
url: '/basic_inventory/add',
|
||||
modes: ['add'],
|
||||
form: 'InventoryForm',
|
||||
controllers: {
|
||||
add: 'InventoryAddController'
|
||||
}
|
||||
});
|
||||
|
||||
let basicInventoryEdit = stateDefinitions.generateTree({
|
||||
name: 'inventories.edit',
|
||||
url: '/basic_inventory/:inventory_id',
|
||||
modes: ['edit'],
|
||||
form: 'InventoryForm',
|
||||
controllers: {
|
||||
edit: 'InventoryEditController'
|
||||
}
|
||||
});
|
||||
|
||||
let smartInventoryAdd = stateDefinitions.generateTree({
|
||||
name: 'inventories.addSmartInventory', // top-most node in the generated tree (will replace this state definition)
|
||||
url: '/smart_inventory/add',
|
||||
modes: ['add'],
|
||||
form: 'SmartInventoryForm',
|
||||
controllers: {
|
||||
add: 'SmartInventoryAddController'
|
||||
}
|
||||
});
|
||||
|
||||
let smartInventoryEdit = stateDefinitions.generateTree({
|
||||
name: 'inventories.editSmartInventory',
|
||||
url: '/smart_inventory/:inventory_id',
|
||||
modes: ['edit'],
|
||||
form: 'SmartInventoryForm',
|
||||
controllers: {
|
||||
edit: 'SmartInventoryEditController'
|
||||
}
|
||||
});
|
||||
|
||||
return Promise.all([
|
||||
basicInventoryAdd,
|
||||
basicInventoryEdit,
|
||||
smartInventoryAdd,
|
||||
smartInventoryEdit
|
||||
]).then((generated) => {
|
||||
return {
|
||||
states: _.reduce(generated, (result, definition) => {
|
||||
return result.concat(definition.states);
|
||||
}, [
|
||||
stateExtender.buildDefinition({
|
||||
name: 'inventories', // top-most node in the generated tree (will replace this state definition)
|
||||
route: '/inventories',
|
||||
ncyBreadcrumb: {
|
||||
label: N_('INVENTORIES')
|
||||
},
|
||||
controller: 'SmartInventoryAddController'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
let smartInventoryAddOrgLookup = {
|
||||
searchPrefix: 'organization',
|
||||
name: 'inventories.addSmartInventory.organization',
|
||||
url: '/organization',
|
||||
data: {
|
||||
formChildState: true
|
||||
},
|
||||
params: {
|
||||
organization_search: {
|
||||
value: {
|
||||
page_size: '5'
|
||||
views: {
|
||||
'@': {
|
||||
templateUrl: templateUrl('inventories/inventories')
|
||||
},
|
||||
'list@inventories': {
|
||||
templateProvider: function(InventoryList, generateList) {
|
||||
let html = generateList.build({
|
||||
list: InventoryList,
|
||||
mode: 'edit'
|
||||
});
|
||||
return html;
|
||||
},
|
||||
controller: 'InventoryListController'
|
||||
}
|
||||
},
|
||||
squash: true,
|
||||
dynamic: true
|
||||
}
|
||||
},
|
||||
ncyBreadcrumb: {
|
||||
skip: true
|
||||
},
|
||||
views: {
|
||||
'related': {
|
||||
templateProvider: function(ListDefinition, generateList) {
|
||||
let list_html = generateList.build({
|
||||
mode: 'lookup',
|
||||
list: ListDefinition,
|
||||
input_type: 'radio'
|
||||
});
|
||||
return `<lookup-modal>${list_html}</lookup-modal>`;
|
||||
|
||||
searchPrefix: 'inventory',
|
||||
resolve: {
|
||||
Dataset: ['InventoryList', 'QuerySet', '$stateParams', 'GetBasePath',
|
||||
function(list, qs, $stateParams, GetBasePath) {
|
||||
let path = GetBasePath(list.basePath) || GetBasePath(list.name);
|
||||
return qs.search(path, $stateParams[`${list.iterator}_search`]);
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
resolve: {
|
||||
ListDefinition: ['OrganizationList', function(OrganizationList) {
|
||||
let list = _.cloneDeep(OrganizationList);
|
||||
list.lookupConfirmText = 'SELECT';
|
||||
return list;
|
||||
}],
|
||||
Dataset: ['ListDefinition', 'QuerySet', '$stateParams', 'GetBasePath',
|
||||
(list, qs, $stateParams, GetBasePath) => {
|
||||
let path = GetBasePath(list.name) || GetBasePath(list.basePath);
|
||||
return qs.search(path, $stateParams[`${list.iterator}_search`]);
|
||||
}
|
||||
]
|
||||
},
|
||||
onExit: function($state) {
|
||||
if ($state.transition) {
|
||||
$('#form-modal').modal('hide');
|
||||
$('.modal-backdrop').remove();
|
||||
$('body').removeClass('modal-open');
|
||||
}
|
||||
},
|
||||
})
|
||||
])
|
||||
};
|
||||
});
|
||||
|
||||
let inventories = stateDefinitions.generateTree({
|
||||
parent: 'inventories', // top-most node in the generated tree (will replace this state definition)
|
||||
modes: ['add', 'edit'],
|
||||
list: 'InventoryList',
|
||||
form: 'InventoryForm',
|
||||
controllers: {
|
||||
list: 'InventoryListController',
|
||||
add: 'InventoryAddController',
|
||||
edit: 'InventoryEditController'
|
||||
},
|
||||
urls: {
|
||||
list: '/inventories'
|
||||
},
|
||||
ncyBreadcrumb: {
|
||||
label: N_('INVENTORIES')
|
||||
},
|
||||
views: {
|
||||
'@': {
|
||||
templateUrl: templateUrl('inventories/inventories')
|
||||
},
|
||||
'list@inventories': {
|
||||
templateProvider: function(InventoryList, generateList) {
|
||||
let html = generateList.build({
|
||||
list: InventoryList,
|
||||
mode: 'edit'
|
||||
});
|
||||
return html;
|
||||
},
|
||||
controller: 'InventoryListController'
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return Promise.all([
|
||||
inventories
|
||||
]).then((generated) => {
|
||||
return {
|
||||
states: _.reduce(generated, (result, definition) => {
|
||||
return result.concat(definition.states);
|
||||
}, [
|
||||
stateExtender.buildDefinition(smartInventoryAdd),
|
||||
stateExtender.buildDefinition(smartInventoryAddOrgLookup)
|
||||
])
|
||||
};
|
||||
});
|
||||
|
||||
}
|
||||
// function generateInventoryStates() {
|
||||
//
|
||||
// let smartInventoryAdd = {
|
||||
// name: 'inventories.addSmartInventory',
|
||||
// url: '/smartinventory',
|
||||
// form: 'SmartInventoryForm',
|
||||
// ncyBreadcrumb: {
|
||||
// label: "CREATE SMART INVENTORY"
|
||||
// },
|
||||
// views: {
|
||||
// 'form@inventories': {
|
||||
// templateProvider: function(SmartInventoryForm, GenerateForm) {
|
||||
// return GenerateForm.buildHTML(SmartInventoryForm, {
|
||||
// mode: 'add',
|
||||
// related: false
|
||||
// });
|
||||
// },
|
||||
// controller: 'SmartInventoryAddController'
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
//
|
||||
// let smartInventoryAddOrgLookup = {
|
||||
// searchPrefix: 'organization',
|
||||
// name: 'inventories.addSmartInventory.organization',
|
||||
// url: '/organization',
|
||||
// data: {
|
||||
// formChildState: true
|
||||
// },
|
||||
// params: {
|
||||
// organization_search: {
|
||||
// value: {
|
||||
// page_size: '5'
|
||||
// },
|
||||
// squash: true,
|
||||
// dynamic: true
|
||||
// }
|
||||
// },
|
||||
// ncyBreadcrumb: {
|
||||
// skip: true
|
||||
// },
|
||||
// views: {
|
||||
// 'related': {
|
||||
// templateProvider: function(ListDefinition, generateList) {
|
||||
// let list_html = generateList.build({
|
||||
// mode: 'lookup',
|
||||
// list: ListDefinition,
|
||||
// input_type: 'radio'
|
||||
// });
|
||||
// return `<lookup-modal>${list_html}</lookup-modal>`;
|
||||
//
|
||||
// }
|
||||
// }
|
||||
// },
|
||||
// resolve: {
|
||||
// ListDefinition: ['OrganizationList', function(OrganizationList) {
|
||||
// let list = _.cloneDeep(OrganizationList);
|
||||
// list.lookupConfirmText = 'SELECT';
|
||||
// return list;
|
||||
// }],
|
||||
// Dataset: ['ListDefinition', 'QuerySet', '$stateParams', 'GetBasePath',
|
||||
// (list, qs, $stateParams, GetBasePath) => {
|
||||
// let path = GetBasePath(list.name) || GetBasePath(list.basePath);
|
||||
// return qs.search(path, $stateParams[`${list.iterator}_search`]);
|
||||
// }
|
||||
// ]
|
||||
// },
|
||||
// onExit: function($state) {
|
||||
// if ($state.transition) {
|
||||
// $('#form-modal').modal('hide');
|
||||
// $('.modal-backdrop').remove();
|
||||
// $('body').removeClass('modal-open');
|
||||
// }
|
||||
// },
|
||||
// };
|
||||
//
|
||||
// let inventories = stateDefinitions.generateTree({
|
||||
// parent: 'inventories', // top-most node in the generated tree (will replace this state definition)
|
||||
// modes: ['add', 'edit'],
|
||||
// list: 'InventoryList',
|
||||
// form: 'InventoryForm',
|
||||
// controllers: {
|
||||
// list: 'InventoryListController',
|
||||
// add: 'InventoryAddController',
|
||||
// edit: 'InventoryEditController'
|
||||
// },
|
||||
// urls: {
|
||||
// list: '/inventories'
|
||||
// },
|
||||
// ncyBreadcrumb: {
|
||||
// label: N_('INVENTORIES')
|
||||
// },
|
||||
// views: {
|
||||
// '@': {
|
||||
// templateUrl: templateUrl('inventories/inventories')
|
||||
// },
|
||||
// 'list@inventories': {
|
||||
// templateProvider: function(InventoryList, generateList) {
|
||||
// let html = generateList.build({
|
||||
// list: InventoryList,
|
||||
// mode: 'edit'
|
||||
// });
|
||||
// return html;
|
||||
// },
|
||||
// controller: 'InventoryListController'
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// return Promise.all([
|
||||
// inventories
|
||||
// ]).then((generated) => {
|
||||
// return {
|
||||
// states: _.reduce(generated, (result, definition) => {
|
||||
// return result.concat(definition.states);
|
||||
// }, [
|
||||
// stateExtender.buildDefinition(smartInventoryAdd),
|
||||
// stateExtender.buildDefinition(smartInventoryAddOrgLookup)
|
||||
// ])
|
||||
// };
|
||||
// });
|
||||
//
|
||||
// }
|
||||
|
||||
$stateProvider.state({
|
||||
name: 'hosts',
|
||||
|
Loading…
Reference in New Issue
Block a user