mirror of
https://github.com/ansible/awx.git
synced 2026-02-20 12:40:06 -03:30
Job event detail page now working. Search expanded to work with boolean an integer types. Added new form generator layout. Fixed pagination bugs. Job cancel/delete working.
This commit is contained in:
@@ -24,7 +24,7 @@ angular.module('JobTemplateHelper', [ 'RestServices', 'Utilities', 'CredentialFo
|
||||
Rest.setUrl(start_url);
|
||||
Rest.post(pswd)
|
||||
.success( function(data, status, headers, config) {
|
||||
$location.path(GetBasPath('jobs'));
|
||||
$location.path('/jobs');
|
||||
})
|
||||
.error( function(data, status, headers, config) {
|
||||
ProcessErrors(scope, data, status, null,
|
||||
@@ -37,6 +37,7 @@ angular.module('JobTemplateHelper', [ 'RestServices', 'Utilities', 'CredentialFo
|
||||
// Add the password field
|
||||
field = form.fields[passwords[i]];
|
||||
fld = passwords[i];
|
||||
scope[fld] = '';
|
||||
html += "<div class=\"control-group\">\n";
|
||||
html += "<label class=\"control-label\" for=\"" + fld + '">' + field.label + '</label>' + "\n";
|
||||
html += "<div class=\"controls\">\n";
|
||||
@@ -57,6 +58,7 @@ angular.module('JobTemplateHelper', [ 'RestServices', 'Utilities', 'CredentialFo
|
||||
// Add the related confirm field
|
||||
fld = field.associated;
|
||||
field = form.fields[field.associated];
|
||||
scope[fld] = '';
|
||||
html += "<div class=\"control-group\">\n";
|
||||
html += "<label class=\"control-label\" for=\"" + fld + '">' + field.label + '</label>' + "\n";
|
||||
html += "<div class=\"controls\">\n";
|
||||
|
||||
@@ -20,32 +20,44 @@ angular.module('PaginateHelper', ['RefreshHelper'])
|
||||
|
||||
var scope = params.scope;
|
||||
var list = params.list;
|
||||
var iterator = (params.iterator) ? params.iterator : list.iterator;
|
||||
var url = params.url;
|
||||
var mode = (params.mode) ? params.mode : null;
|
||||
|
||||
scope[list.iterator + 'Page'] = 0;
|
||||
scope[iterator + 'Page'] = 0;
|
||||
|
||||
if (mode == 'lookup') {
|
||||
scope[list.iterator + 'PageSize'] = 5;
|
||||
if (params.pageSize) {
|
||||
scope[iterator + 'PageSize'] = params.pageSize;
|
||||
}
|
||||
else if (mode == 'lookup') {
|
||||
scope[iterator + 'PageSize'] = 5;
|
||||
}
|
||||
else {
|
||||
scope[list.iterator + 'PageSize'] = 20;
|
||||
scope[iterator + 'PageSize'] = 20;
|
||||
}
|
||||
|
||||
scope.nextSet = function(set, iterator) {
|
||||
scope[iterator + 'Page']++;
|
||||
Refresh({ scope: scope, set: set, iterator: iterator, url: scope[iterator + 'NextUrl'] });
|
||||
if (scope[iterator + 'NextUrl']) {
|
||||
scope[iterator + 'Page']++;
|
||||
Refresh({ scope: scope, set: set, iterator: iterator, url: scope[iterator + 'NextUrl'] });
|
||||
}
|
||||
};
|
||||
|
||||
scope.prevSet = function(set, iterator) {
|
||||
scope[iterator + 'Page']--;
|
||||
Refresh({ scope: scope, set: set, iterator: iterator, url: scope[iterator + 'PrevUrl'] });
|
||||
if (scope[iterator + 'PrevUrl']) {
|
||||
scope[iterator + 'Page']--;
|
||||
Refresh({ scope: scope, set: set, iterator: iterator, url: scope[iterator + 'PrevUrl'] });
|
||||
}
|
||||
};
|
||||
|
||||
scope.changePageSize = function(set, iterator) {
|
||||
// Called when a new page size is selected
|
||||
scope[iterator + 'Page'] = 0;
|
||||
url += (scope[iterator + 'SearchParams']) ? scope[iterator + 'SearchParams'] : '';
|
||||
console.log(url);
|
||||
url = url.replace(/\/\?.*$/,'/');
|
||||
console.log(url);
|
||||
url += (scope[iterator + 'SearchParams']) ? scope[iterator + 'SearchParams'] + '&page_size=' + scope[iterator + 'PageSize' ] :
|
||||
'?page_size=' + scope[iterator + 'PageSize' ];
|
||||
Refresh({ scope: scope, set: set, iterator: iterator, url: url });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ angular.module('RefreshHelper', ['RestServices', 'Utilities'])
|
||||
var set = params.set;
|
||||
var iterator = params.iterator;
|
||||
var url = params.url;
|
||||
|
||||
Rest.setUrl(url);
|
||||
Rest.get()
|
||||
.success( function(data, status, headers, config) {
|
||||
@@ -32,6 +31,7 @@ angular.module('RefreshHelper', ['RestServices', 'Utilities'])
|
||||
scope[iterator + 'PageCount'] = Math.ceil((data.count / scope[iterator + 'PageSize']));
|
||||
scope[iterator + 'SearchSpin'] = false;
|
||||
scope[set] = data['results'];
|
||||
scope.$emit('PostRefresh');
|
||||
})
|
||||
.error ( function(data, status, headers, config) {
|
||||
scope[iterator + 'SearchSpin'] = false;
|
||||
|
||||
@@ -21,12 +21,12 @@ angular.module('SearchHelper', ['RestServices', 'Utilities', 'RefreshHelper'])
|
||||
return function(params) {
|
||||
|
||||
var scope = params.scope;
|
||||
var set = params.set;
|
||||
var set = params.set;
|
||||
var defaultUrl = params.url;
|
||||
var list = params.list;
|
||||
var iterator = list.iterator;
|
||||
var iterator = (params.iterator) ? params.iterator : list.iterator;
|
||||
var default_order;
|
||||
|
||||
|
||||
// Set default values
|
||||
for (fld in list.fields) {
|
||||
if (list.fields[fld].key) {
|
||||
@@ -40,11 +40,34 @@ angular.module('SearchHelper', ['RestServices', 'Utilities', 'RefreshHelper'])
|
||||
scope[iterator + 'SearchTypeLabel'] = 'Contains';
|
||||
scope[iterator + 'SearchParams'] = '';
|
||||
scope[iterator + 'SearchValue'] = '';
|
||||
scope[iterator + 'SelectShow'] = false; // show/hide the Select
|
||||
scope[iterator + 'HideSearchType'] = false;
|
||||
|
||||
var f = scope[iterator + 'SearchField']
|
||||
if (list.fields[f].searchType && list.fields[f].searchType == 'boolean') {
|
||||
scope[iterator + 'SelectShow'] = true;
|
||||
scope[iterator + 'SearchSelectOpts'] = list.fields[fld].searchOptions;
|
||||
}
|
||||
if (list.fields[f].searchType && list.fields[f].searchType == 'int') {
|
||||
scope[iterator + 'HideSearchType'] = true;
|
||||
}
|
||||
|
||||
// Functions to handle search widget changes
|
||||
scope.setSearchField = function(iterator, fld, label) {
|
||||
scope[iterator + 'SearchFieldLabel'] = label;
|
||||
scope[iterator + 'SearchField'] = fld;
|
||||
scope[iterator + 'SearchValue'] = '';
|
||||
scope[iterator + 'SelectShow'] = false;
|
||||
scope[iterator + 'HideSearchType'] = false;
|
||||
|
||||
if (list.fields[fld].searchType && list.fields[fld].searchType == 'boolean') {
|
||||
scope[iterator + 'SelectShow'] = true;
|
||||
scope[iterator + 'SearchSelectOpts'] = list.fields[f].searchOptions;
|
||||
}
|
||||
if (list.fields[fld].searchType && list.fields[fld].searchType == 'int') {
|
||||
scope[iterator + 'HideSearchType'] = true;
|
||||
}
|
||||
|
||||
scope.search(iterator);
|
||||
}
|
||||
|
||||
@@ -60,19 +83,37 @@ angular.module('SearchHelper', ['RestServices', 'Utilities', 'RefreshHelper'])
|
||||
//
|
||||
scope[iterator + 'SearchSpin'] = true;
|
||||
var url = defaultUrl;
|
||||
if (scope[iterator + 'SearchValue'] != '' && scope[iterator + 'SearchValue'] != undefined) {
|
||||
if ( (scope[iterator + 'SelectShow'] == false && scope[iterator + 'SearchValue'] != '' && scope[iterator + 'SearchValue'] != undefined) ||
|
||||
(scope[iterator + 'SelectShow'] && scope[iterator + 'SearchSelectValue']) ) {
|
||||
if (list.fields[scope[iterator + 'SearchField']].sourceModel) {
|
||||
// handle fields whose source is a related model e.g. inventories.organization
|
||||
scope[iterator + 'SearchParams'] = '?' + list.fields[scope[iterator + 'SearchField']].sourceModel + '__' +
|
||||
list.fields[scope[iterator + 'SearchField']].sourceField + '__' +
|
||||
scope[iterator + 'SearchType'] + '=' + escape(scope[iterator + 'SearchValue']);
|
||||
scope[iterator + 'SearchParams'] += (default_order) ? '&order_by=' + escape(default_order) : '';
|
||||
list.fields[scope[iterator + 'SearchField']].sourceField + '__';
|
||||
}
|
||||
else if (list.fields[scope[iterator + 'SearchField']].searchField) {
|
||||
scope[iterator + 'SearchParams'] = '?' + list.fields[scope[iterator + 'SearchField']].searchField + '__';
|
||||
}
|
||||
else {
|
||||
scope[iterator + 'SearchParams'] = '?' + scope[iterator + 'SearchField'] + '__' +
|
||||
scope[iterator + 'SearchType'] + '=' + escape(scope[iterator + 'SearchValue']);
|
||||
scope[iterator + 'SearchParams'] += (default_order) ? '&order_by=' + escape(default_order) : '';
|
||||
scope[iterator + 'SearchParams'] = '?' + scope[iterator + 'SearchField'] + '__';
|
||||
}
|
||||
|
||||
if ( list.fields[scope[iterator + 'SearchField']].searchType &&
|
||||
(list.fields[scope[iterator + 'SearchField']].searchType == 'int' ||
|
||||
list.fields[scope[iterator + 'SearchField']].searchType == 'boolean') ) {
|
||||
scope[iterator + 'SearchParams'] += 'int=';
|
||||
}
|
||||
else {
|
||||
scope[iterator + 'SearchParams'] += scope[iterator + 'SearchType'] + '=';
|
||||
}
|
||||
|
||||
if ( list.fields[scope[iterator + 'SearchField']].searchType &&
|
||||
list.fields[scope[iterator + 'SearchField']].searchType == 'boolean' ) {
|
||||
scope[iterator + 'SearchParams'] += scope[iterator + 'SearchSelectValue'].value;
|
||||
}
|
||||
else {
|
||||
scope[iterator + 'SearchParams'] += escape(scope[iterator + 'SearchValue']);
|
||||
}
|
||||
scope[iterator + 'SearchParams'] += (default_order) ? '&order_by=' + escape(default_order) : '';
|
||||
}
|
||||
else {
|
||||
scope[iterator + 'SearchParams'] = '';
|
||||
|
||||
Reference in New Issue
Block a user