diff --git a/awx/ui/static/js/controllers/Jobs.js b/awx/ui/static/js/controllers/Jobs.js index 05c49479ad..a83c19ddba 100644 --- a/awx/ui/static/js/controllers/Jobs.js +++ b/awx/ui/static/js/controllers/Jobs.js @@ -49,7 +49,7 @@ function JobsListController ($scope, $compile, ClearScope, Breadcrumbs, LoadBrea scope: completed_scope, list: CompletedJobsList, id: 'completed-jobs', - url: GetBasePath('unified_jobs') + '?or__status=successful&or__status=failed&or__status=error&or__status=canceled' + url: GetBasePath('unified_jobs') + '?or__status=successful&or__status=failed&or__status=error&or__status=canceled', }); running_scope = $scope.$new(true); LoadJobsScope({ diff --git a/awx/ui/static/js/helpers/JobSubmission.js b/awx/ui/static/js/helpers/JobSubmission.js index 95ed9f1b4d..176a9ba531 100644 --- a/awx/ui/static/js/helpers/JobSubmission.js +++ b/awx/ui/static/js/helpers/JobSubmission.js @@ -113,7 +113,6 @@ function($location, Wait, GetBasePath, LookUpInit, JobTemplateForm, CredentialLi function promptPassword() { var e, fld, field; - console.log(passwords); password = passwords.pop(); // Prompt for password diff --git a/awx/ui/static/js/helpers/Jobs.js b/awx/ui/static/js/helpers/Jobs.js index e3eb38eadd..c0565f3763 100644 --- a/awx/ui/static/js/helpers/Jobs.js +++ b/awx/ui/static/js/helpers/Jobs.js @@ -342,14 +342,15 @@ angular.module('JobsHelper', ['Utilities', 'RestServices', 'FormGenerator', 'Job * Called from JobsList controller to load each section or list on the page * */ -.factory('LoadJobsScope', ['SearchInit', 'PaginateInit', 'GenerateList', 'JobsControllerInit', 'JobsListUpdate', - function(SearchInit, PaginateInit, GenerateList, JobsControllerInit, JobsListUpdate) { +.factory('LoadJobsScope', ['$routeParams', '$location', 'SearchInit', 'PaginateInit', 'GenerateList', 'JobsControllerInit', 'JobsListUpdate', + function($routeParams, $location, SearchInit, PaginateInit, GenerateList, JobsControllerInit, JobsListUpdate) { return function(params) { var parent_scope = params.parent_scope, scope = params.scope, list = params.list, id = params.id, - url = params.url; + url = params.url, + base = $location.path().replace(/^\//, '').split('/')[0]; GenerateList.inject(list, { mode: 'edit', @@ -384,6 +385,14 @@ angular.module('JobsHelper', ['Utilities', 'RestServices', 'FormGenerator', 'Job JobsListUpdate({ scope: scope, parent_scope: parent_scope, list: list }); parent_scope.$emit('listLoaded'); }); + + if (base === 'jobs' && list.name === 'completed_jobs') { + if ($routeParams.id__int) { + scope[list.iterator + 'SearchField'] = 'id'; + scope[list.iterator + 'SearchValue'] = $routeParams.id__int; + scope[list.iterator + 'SearchFieldLabel'] = 'Job ID'; + } + } scope.search(list.iterator); }; }]) diff --git a/awx/ui/static/js/helpers/search.js b/awx/ui/static/js/helpers/search.js index 586f623bef..0071a47e04 100644 --- a/awx/ui/static/js/helpers/search.js +++ b/awx/ui/static/js/helpers/search.js @@ -282,7 +282,7 @@ angular.module('SearchHelper', ['RestServices', 'Utilities', 'RefreshHelper']) if (calcOnly) { scope.$emit('searchParamsReady', url); } - else if (defaultUrl) { + else if (defaultUrl && !/undefined/.test(url)) { Refresh({ scope: scope, set: set, diff --git a/awx/ui/static/js/lists/Streams.js b/awx/ui/static/js/lists/Streams.js index 33039954d2..2afd7d5e08 100644 --- a/awx/ui/static/js/lists/Streams.js +++ b/awx/ui/static/js/lists/Streams.js @@ -27,7 +27,8 @@ angular.module('StreamListDefinition', []) key: true, desc: true, noLink: true, - searchable: false + searchable: false, + filter: "date:'MM/dd/yy HH:mm:ss'" }, user: { label: 'Initiated by', @@ -109,7 +110,7 @@ angular.module('StreamListDefinition', []) searchOnly: true, searchObject: 'job', searchPlaceholder: 'Job name', - searchOnID: true, + //searchOnID: true, searchWidget: 2, searchField: 'object1' }, @@ -193,7 +194,7 @@ angular.module('StreamListDefinition', []) searchOnly: true, searchObject: 'job', searchPlaceholder: 'Related job name', - searchOnID: true, + //searchOnID: true, searchWidget: 3, searchField: 'object2' }, diff --git a/awx/ui/static/js/widgets/Stream.js b/awx/ui/static/js/widgets/Stream.js index 9b758383f2..7247e8aab5 100644 --- a/awx/ui/static/js/widgets/Stream.js +++ b/awx/ui/static/js/widgets/Stream.js @@ -155,7 +155,7 @@ angular.module('StreamWidget', ['RestServices', 'Utilities', 'StreamListDefiniti url += 'home/' + obj.base + 's/?id=' + obj.id; break; case 'job': - url += 'jobs/?id=' + obj.id; + url += 'jobs/?id__int=' + obj.id; break; case 'inventory': url += 'inventories/' + obj.id + '/'; @@ -202,7 +202,7 @@ angular.module('StreamWidget', ['RestServices', 'Utilities', 'StreamListDefiniti if (obj2_obj && obj2_obj.name && !/^_delete/.test(obj2_obj.name)) { obj2_obj.base = obj2; - descr += obj2 + ' ' + obj2_obj.name + '' + ((activity.operation === 'disassociate') ? ' from ' : ' to '); + descr += obj2 + " " + obj2_obj.name + '' + ((activity.operation === 'disassociate') ? ' from ' : ' to '); descr_nolink += obj2 + ' ' + obj2_obj.name + ((activity.operation === 'disassociate') ? ' from ' : ' to '); } else if (obj2) { name = ''; @@ -214,7 +214,7 @@ angular.module('StreamWidget', ['RestServices', 'Utilities', 'StreamListDefiniti } if (obj1_obj && obj1_obj.name && !/^\_delete/.test(obj1_obj.name)) { obj1_obj.base = obj1; - descr += obj1 + ' ' + obj1_obj.name + ''; + descr += obj1 + " " + obj1_obj.name + ''; descr_nolink += obj1 + ' ' + obj1_obj.name; } else if (obj1) { name = ''; @@ -229,7 +229,7 @@ angular.module('StreamWidget', ['RestServices', 'Utilities', 'StreamListDefiniti name = ' ' + activity.changes.name[0]; name_nolink = name; } - } else if (obj1 === 'job' && obj1_obj && activity.changes && activity.changes.job_template) { + /*} else if (obj1 === 'job' && obj1_obj && activity.changes && activity.changes.job_template) { // Hack for job activity where the template name is known if (activity.operation !== 'delete') { obj1_obj.base = obj1; @@ -248,7 +248,7 @@ angular.module('StreamWidget', ['RestServices', 'Utilities', 'StreamListDefiniti } else { name = ' ' + obj1_obj.id; name_nolink = name; - } + }*/ } } else if (obj1_obj && obj1_obj.name) { name = ' ' + stripDeleted(obj1_obj.name); @@ -263,9 +263,9 @@ angular.module('StreamWidget', ['RestServices', 'Utilities', 'StreamListDefiniti } ]) -.factory('ShowDetail', ['$rootScope', 'Rest', 'Alert', 'GenerateForm', 'ProcessErrors', 'GetBasePath', 'FormatDate', +.factory('ShowDetail', ['$filter', '$rootScope', 'Rest', 'Alert', 'GenerateForm', 'ProcessErrors', 'GetBasePath', 'FormatDate', 'ActivityDetailForm', 'Empty', 'Find', - function ($rootScope, Rest, Alert, GenerateForm, ProcessErrors, GetBasePath, FormatDate, ActivityDetailForm, Empty, Find) { + function ($filter, $rootScope, Rest, Alert, GenerateForm, ProcessErrors, GetBasePath, FormatDate, ActivityDetailForm, Empty, Find) { return function (params) { var activity_id = params.activity_id, @@ -287,7 +287,7 @@ angular.module('StreamWidget', ['RestServices', 'Utilities', 'StreamListDefiniti scope = generator.inject(form, { mode: 'edit', modal: true, related: false }); scope.changes = activity.changes_stringified; scope.user = ((activity.summary_fields.actor) ? activity.summary_fields.actor.username : 'system') + - ' on ' + FormatDate(new Date(activity.timestamps)); + ' on ' + $filter('date')(activity.timestamp, "MM/dd/yy HH:mm:ss"); scope.operation = activity.description_nolink; scope.formModalAction = function () { @@ -399,6 +399,7 @@ angular.module('StreamWidget', ['RestServices', 'Utilities', 'StreamListDefiniti if (inUrl) { $location.path(inUrl); } + scope.$destroy(); }; scope.refreshStream = function () { @@ -416,14 +417,14 @@ angular.module('StreamWidget', ['RestServices', 'Utilities', 'StreamListDefiniti scope.removeStreamPostRefresh(); } scope.removeStreamPostRefresh = scope.$on('PostRefresh', function () { - var i, cDate, href, deleted, obj1, obj2; + var i, href, deleted, obj1, obj2; for (i = 0; i < scope.activities.length; i++) { // Convert event_time date to local time zone - cDate = new Date(scope.activities[i].timestamp); - scope.activities[i].timestamp = FormatDate(cDate); + //cDate = new Date(scope.activities[i].timestamp); + //scope.activities[i].timestamp = FormatDate(cDate); if (scope.activities[i].summary_fields.actor) { - scope.activities[i].user = "" + + scope.activities[i].user = "" + scope.activities[i].summary_fields.actor.username + ""; } else { scope.activities[i].user = 'system';