From 1a7a4bad498b22b3a385fa04d60b7081a5e67a42 Mon Sep 17 00:00:00 2001 From: Chris Houseknecht Date: Mon, 7 Apr 2014 15:03:28 -0400 Subject: [PATCH] Fixed
 block wrapping in tooltips for Firefox. Fixed
 missing output/error/returncode on events page- required use of angular
 sanitizer.

---
 awx/ui/static/js/controllers/JobEvents.js      | 16 ++++++++++------
 awx/ui/static/js/forms/JobEvents.js            |  4 ++--
 awx/ui/static/less/ansible-ui.less             | 14 ++++++++++++++
 awx/ui/static/lib/ansible/generator-helpers.js |  2 +-
 4 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/awx/ui/static/js/controllers/JobEvents.js b/awx/ui/static/js/controllers/JobEvents.js
index 668be47066..12926c9495 100644
--- a/awx/ui/static/js/controllers/JobEvents.js
+++ b/awx/ui/static/js/controllers/JobEvents.js
@@ -10,7 +10,7 @@
 
 'use strict';
 
-function JobEventsList($filter, $scope, $rootScope, $location, $log, $routeParams, Rest, Alert, JobEventList, GenerateList,
+function JobEventsList($sce, $filter, $scope, $rootScope, $location, $log, $routeParams, Rest, Alert, JobEventList, GenerateList,
     LoadBreadCrumbs, Prompt, SearchInit, PaginateInit, ReturnToCaller, ClearScope, ProcessErrors, GetBasePath, LookUpInit, ToggleChildren,
     FormatDate, EventView, Refresh, Wait) {
     
@@ -79,11 +79,11 @@ function JobEventsList($filter, $scope, $rootScope, $location, $log, $routeParam
                         rows = (n) ? n.length : 1;
                         rows = (rows > 10) ? 10 : rows;
                         html += "\n";
+                        //html += "
" + eventData.res[fld] + "
\n"; html += "\n"; found = true; } if (fld === "results" && Array.isArray(eventData.res[fld]) && eventData.res[fld].length > 0) { - //html += "\n"; + //html += "
" + txt + "
\n"; html += "\n"; found = true; } } if (fld === "rc" && eventData.res[fld] !== '') { + html += "
\n"; - html += "\n"; - html += "\n"; + html += "
" + eventData.res[fld] + "
\n"; + //html += "\n"; html += "
\n"; found = true; } @@ -123,7 +125,9 @@ function JobEventsList($filter, $scope, $rootScope, $location, $log, $routeParam } $scope.removePostRefresh = $scope.$on('PostRefresh', function () { // Initialize the parent levels + generator.inject(list, { mode: 'edit', scope: $scope }); + var set = $scope[list.name], i; for (i = 0; i < set.length; i++) { set[i].event_display = set[i].event_display.replace(/^\u00a0*/g, ''); @@ -133,7 +137,7 @@ function JobEventsList($filter, $scope, $rootScope, $location, $log, $routeParam } else { set[i].ngicon = 'fa fa-square-o node-no-toggle'; set[i]['class'] = 'childNode'; - set[i].event_detail = formatJSON(set[i].event_data); + set[i].event_detail = $sce.trustAsHtml(formatJSON(set[i].event_data)); } set[i].show = true; set[i].spaces = set[i].event_level * 24; @@ -247,7 +251,7 @@ function JobEventsList($filter, $scope, $rootScope, $location, $log, $routeParam }; } -JobEventsList.$inject = ['$filter', '$scope', '$rootScope', '$location', '$log', '$routeParams', 'Rest', 'Alert', 'JobEventList', +JobEventsList.$inject = ['$sce', '$filter', '$scope', '$rootScope', '$location', '$log', '$routeParams', 'Rest', 'Alert', 'JobEventList', 'GenerateList', 'LoadBreadCrumbs', 'Prompt', 'SearchInit', 'PaginateInit', 'ReturnToCaller', 'ClearScope', 'ProcessErrors', 'GetBasePath', 'LookUpInit', 'ToggleChildren', 'FormatDate', 'EventView', 'Refresh', 'Wait' ]; diff --git a/awx/ui/static/js/forms/JobEvents.js b/awx/ui/static/js/forms/JobEvents.js index 6146e74820..b1e21e562f 100644 --- a/awx/ui/static/js/forms/JobEvents.js +++ b/awx/ui/static/js/forms/JobEvents.js @@ -70,7 +70,7 @@ angular.module('JobEventsFormDefinition', []) rows: 10 }, stdout: { - label: 'Std Out', + label: 'Standard Out', type: 'textarea', readonly: true, section: 'Results', @@ -79,7 +79,7 @@ angular.module('JobEventsFormDefinition', []) rows: 10 }, stderr: { - label: 'Std Err', + label: 'Standard Err', type: 'textarea', readonly: true, section: 'Results', diff --git a/awx/ui/static/less/ansible-ui.less b/awx/ui/static/less/ansible-ui.less index 00dbdd9d21..536446f05b 100644 --- a/awx/ui/static/less/ansible-ui.less +++ b/awx/ui/static/less/ansible-ui.less @@ -236,6 +236,9 @@ textarea.allowresize { min-width: 200px; max-width: 325px; } + .popover pre { + white-space: pre-wrap; + } .popover-footer { font-size: 12px; margin-top: 10px; @@ -1064,6 +1067,17 @@ input[type="checkbox"].checkbox-no-label { #completed_jobs_table i[class*="icon-job-"] { font-size: 13px; } + + #jobevents_table { + div.return-code { + display: inline-block; + margin-left: 10px; + } + textarea { + white-space: pre-wrap; + resize: vertical; + } + } /* Inventory job status badge */ .failures-true { diff --git a/awx/ui/static/lib/ansible/generator-helpers.js b/awx/ui/static/lib/ansible/generator-helpers.js index 009e78a7e3..0c70c45546 100644 --- a/awx/ui/static/lib/ansible/generator-helpers.js +++ b/awx/ui/static/lib/ansible/generator-helpers.js @@ -630,7 +630,7 @@ angular.module('GeneratorHelpers', []) // Specific to Job Events page -showing event detail/results html += (field.appendHTML) ? "
\n" : "";