diff --git a/awx/ui/client/src/job-detail/host-events/host-events.controller.js b/awx/ui/client/src/job-detail/host-events/host-events.controller.js index 2edea0a622..55abf51e04 100644 --- a/awx/ui/client/src/job-detail/host-events/host-events.controller.js +++ b/awx/ui/client/src/job-detail/host-events/host-events.controller.js @@ -18,93 +18,49 @@ $scope.search = function(){ Wait('start'); - if ($scope.searchStr === undefined){ - return; - } //http://docs.ansible.com/ansible-tower/latest/html/towerapi/intro.html#filtering // SELECT WHERE host_name LIKE str OR WHERE play LIKE str OR WHERE task LIKE str AND host_name NOT "" // selecting non-empty host_name fields prevents us from displaying non-runner events, like playbook_on_task_start - JobDetailService.getRelatedJobEvents($stateParams.id, { - or__host_name__icontains: $scope.searchStr, - or__play__icontains: $scope.searchStr, - or__task__icontains: $scope.searchStr, - not__host_name: "" , - page_size: $scope.pageSize}) - .success(function(res){ - $scope.results = res.results; - Wait('stop'); - }); + var params = { + host_name: $scope.hostName, + }; + if ($scope.searchStr && $scope.searchStr !== ''){ + params.or__play__icontains = $scope.searchStr; + params.or__task__icontains = $scope.searchStr; + } + + switch($scope.activeFilter){ + case 'skipped': + params.event = 'runner_on_skipped'; + break; + case 'unreachable': + params.event = 'runner_on_unreachable'; + break; + case 'ok': + params.event = 'runner_on_ok'; + break; + case 'failed': + params.failed = true; + break; + case 'changed': + params.changed = true; + break; + default: + break; + } + JobDetailService.getRelatedJobEvents($stateParams.id, params) + .success(function(res){ + $scope.results = res.results; + Wait('stop'); + }); }; $scope.filters = ['all', 'changed', 'failed', 'ok', 'unreachable', 'skipped']; - var filter = function(filter){ - Wait('start'); - - if (filter === 'all'){ - return JobDetailService.getRelatedJobEvents($stateParams.id, { - host_name: $stateParams.hostName, - page_size: $scope.pageSize}) - .success(function(res){ - $scope.results = res.results; - Wait('stop'); - }); - } - // handle runner cases - if (filter === 'skipped'){ - return JobDetailService.getRelatedJobEvents($stateParams.id, { - host_name: $stateParams.hostName, - event: 'runner_on_skipped'}) - .success(function(res){ - $scope.results = res.results; - Wait('stop'); - }); - } - if (filter === 'unreachable'){ - return JobDetailService.getRelatedJobEvents($stateParams.id, { - host_name: $stateParams.hostName, - event: 'runner_on_unreachable'}) - .success(function(res){ - $scope.results = res.results; - Wait('stop'); - }); - } - if (filter === 'ok'){ - return JobDetailService.getRelatedJobEvents($stateParams.id, { - host_name: $stateParams.hostName, - event__startswith: 'runner_on_ok' - }) - .success(function(res){ - $scope.results = res.results; - Wait('stop'); - }); - } - // handle convience properties .changed .failed - if (filter === 'changed'){ - return JobDetailService.getRelatedJobEvents($stateParams.id, { - host_name: $stateParams.hostName, - changed: true}) - .success(function(res){ - $scope.results = res.results; - Wait('stop'); - }); - } - if (filter === 'failed'){ - return JobDetailService.getRelatedJobEvents($stateParams.id, { - host_name: $stateParams.hostName, - failed: true, - event__startswith: 'runner_on_failed' - }) - .success(function(res){ - $scope.results = res.results; - Wait('stop'); - }); - } - }; - // watch select2 for changes $('.HostEvents-select').on("select2:select", function () { - filter($('.HostEvents-select').val()); + $scope.activeFilter = $('.HostEvents-select').val(); + $scope.search(); }); var init = function(){ @@ -116,12 +72,9 @@ }); // process the filter if one was passed if ($stateParams.filter){ - Wait('start'); - filter($stateParams.filter).success(function(res){ - $scope.results = res.results; - Wait('stop'); - $('#HostEvents').modal('show'); - }); + $scope.activeFilter = $stateParams.filter; + $scope.search(); + $('#HostEvents').modal('show'); } else{ $scope.results = hosts.data.results;