From ad2b5cf553e0ac36ad5dd22312e9bff0e5977c6e Mon Sep 17 00:00:00 2001 From: jaredevantabor Date: Tue, 22 Nov 2016 14:06:08 -0800 Subject: [PATCH 1/3] adding start timei badge to header lines of stdout --- .../src/job-results/job-results.block.less | 12 ++++++++++ .../src/job-results/parse-stdout.service.js | 24 ++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/awx/ui/client/src/job-results/job-results.block.less b/awx/ui/client/src/job-results/job-results.block.less index 2185cb0e3d..97741c562e 100644 --- a/awx/ui/client/src/job-results/job-results.block.less +++ b/awx/ui/client/src/job-results/job-results.block.less @@ -127,3 +127,15 @@ height: inherit; } } + +.JobResults-timeBadge { + font-size: 11px; + font-weight: normal; + padding: 1px 10px; + height: 14px; + margin: 3px 15px; + width: 80px; + background-color: @default-bg; + border-radius: 5px; + color: @default-interface-txt; +} diff --git a/awx/ui/client/src/job-results/parse-stdout.service.js b/awx/ui/client/src/job-results/parse-stdout.service.js index e75c364013..f60c9676fa 100644 --- a/awx/ui/client/src/job-results/parse-stdout.service.js +++ b/awx/ui/client/src/job-results/parse-stdout.service.js @@ -4,7 +4,7 @@ * All Rights Reserved *************************************************/ -export default ['$log', function($log){ +export default ['$log', 'moment', function($log, moment){ var val = { // parses stdout string from api and formats various codes to the // correct dom structure @@ -123,6 +123,27 @@ export default ['$log', function($log){ return string; }, + getStartTimeBadge: function(event, line){ + // This will return a div with the badge class + // for the start time to show at the right hand + // side of each stdout header line. + // returns an empty string if not a header line + var emptySpan = "", time; + if ((event.event_name === "playbook_on_play_start" || + event.event_name === "playbook_on_task_start") && + line !== "") { + time = moment(event.created).format('HH:mm:ss'); + return `
${time}
`; + } + else if(event.event_name === "playbook_on_stats" && line.indexOf("PLAY") > -1){ + time = moment(event.created).format('HH:mm:ss'); + return `
${time}
`; + } + else { + return emptySpan; + } + + }, // used to add expand/collapse icon next to line numbers of headers getCollapseIcon: function(event, line) { var clickClass, @@ -196,6 +217,7 @@ export default ['$log', function($log){
${this.getCollapseIcon(event, lineArr[1])}${lineArr[0]}
${this.getAnchorTags(event, this.prettify(lineArr[1]))}
+ ${this.getStartTimeBadge(event, lineArr[1] )}
`; }); From 5ae03355631ecef2424b1e02db37aabf87f2cc28 Mon Sep 17 00:00:00 2001 From: jaredevantabor Date: Wed, 23 Nov 2016 10:10:55 -0800 Subject: [PATCH 2/3] fixing css for time badge --- awx/ui/client/src/job-results/job-results.block.less | 1 + awx/ui/client/src/job-results/parse-stdout.service.js | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/awx/ui/client/src/job-results/job-results.block.less b/awx/ui/client/src/job-results/job-results.block.less index 97741c562e..5b6e46e373 100644 --- a/awx/ui/client/src/job-results/job-results.block.less +++ b/awx/ui/client/src/job-results/job-results.block.less @@ -129,6 +129,7 @@ } .JobResults-timeBadge { + float:right; font-size: 11px; font-weight: normal; padding: 1px 10px; diff --git a/awx/ui/client/src/job-results/parse-stdout.service.js b/awx/ui/client/src/job-results/parse-stdout.service.js index f60c9676fa..3607b0e3e3 100644 --- a/awx/ui/client/src/job-results/parse-stdout.service.js +++ b/awx/ui/client/src/job-results/parse-stdout.service.js @@ -216,8 +216,7 @@ export default ['$log', 'moment', function($log, moment){ return `
${this.getCollapseIcon(event, lineArr[1])}${lineArr[0]}
-
${this.getAnchorTags(event, this.prettify(lineArr[1]))}
- ${this.getStartTimeBadge(event, lineArr[1] )} +
${this.getAnchorTags(event, this.prettify(lineArr[1]))} ${this.getStartTimeBadge(event, lineArr[1] )}
`; }); From 5b0f7741a702f8cb06e3b4ec035ebd498fb6039e Mon Sep 17 00:00:00 2001 From: jaredevantabor Date: Wed, 23 Nov 2016 11:53:34 -0800 Subject: [PATCH 3/3] parse-stdout.service unit tests for time badge --- .../job-results/parse-stdout.service-test.js | 59 +++++++++++-------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/awx/ui/tests/spec/job-results/parse-stdout.service-test.js b/awx/ui/tests/spec/job-results/parse-stdout.service-test.js index 530240a50b..3bd0563393 100644 --- a/awx/ui/tests/spec/job-results/parse-stdout.service-test.js +++ b/awx/ui/tests/spec/job-results/parse-stdout.service-test.js @@ -33,21 +33,34 @@ describe('parseStdoutService', () => { }); }); - // describe('getLineClasses()', () => { - // xit('creates a string that is used as a class', () => { - // let headerEvent = { - // event_name: 'playbook_on_task_start', - // event_data: { - // play_uuid:"0f667a23-d9ab-4128-a735-80566bcdbca0", - // task_uuid: "80dd087c-268b-45e8-9aab-1083bcfd9364" - // } - // }; - // let lineNum = 3; - // let line = "TASK [setup] *******************************************************************"; - // let styledLine = " header_task header_task_80dd087c-268b-45e8-9aab-1083bcfd9364 play_0f667a23-d9ab-4128-a735-80566bcdbca0 line_num_3"; - // expect(parseStdoutService.getLineClasses(headerEvent, line, lineNum)).toBe(styledLine); - // }); - // }); + describe('getLineClasses()', () => { + xit('creates a string that is used as a class', () => { + let headerEvent = { + event_name: 'playbook_on_task_start', + event_data: { + play_uuid:"0f667a23-d9ab-4128-a735-80566bcdbca0", + task_uuid: "80dd087c-268b-45e8-9aab-1083bcfd9364" + } + }; + let lineNum = 3; + let line = "TASK [setup] *******************************************************************"; + let styledLine = " header_task header_task_80dd087c-268b-45e8-9aab-1083bcfd9364 play_0f667a23-d9ab-4128-a735-80566bcdbca0 line_num_3"; + expect(parseStdoutService.getLineClasses(headerEvent, line, lineNum)).toBe(styledLine); + }); + }); + + describe('getStartTime()', () => { + xit('creates returns a badge with the start time of the event', () => { + let headerEvent = { + event_name: 'playbook_on_play_start', + created: "2016-11-22T21:15:54.736Z" + }; + + let line = "PLAY [add hosts to inventory] **************************************************"; + let badgeDiv = '
13:15:54
'; + expect(parseStdoutService.getStartTimeBadge(headerEvent, line)).toBe(badgeDiv); + }); + }); describe('getCollapseIcon()', () => { let emptySpan = ` @@ -83,13 +96,7 @@ describe('parseStdoutService', () => { data-uuid="task_1da9012d-18e6-4562-85cd-83cf10a97f86"> `; -// ` -// -// -// ` + expect(parseStdoutService.getCollapseIcon(headerEvent, line)) .toBe(expandSpan); }); @@ -124,6 +131,8 @@ describe('parseStdoutService', () => { .returnValue(""); spyOn(parseStdoutService, 'prettify').and .returnValue("prettified_line"); + spyOn(parseStdoutService, 'getStartTimeBadge').and + .returnValue(""); parseStdoutService.parseStdout(mockEvent); @@ -137,6 +146,8 @@ describe('parseStdoutService', () => { .toHaveBeenCalledWith(mockEvent, "prettified_line"); expect(parseStdoutService.prettify) .toHaveBeenCalledWith('line1'); + expect(parseStdoutService.getStartTimeBadge) + .toHaveBeenCalledWith(mockEvent, 'line1'); // get line arr should be called once for the event expect(parseStdoutService.getLineArr.calls.count()) @@ -165,13 +176,15 @@ describe('parseStdoutService', () => { .returnValue("anchor_tag_dom"); spyOn(parseStdoutService, 'prettify').and .returnValue("prettified_line"); + spyOn(parseStdoutService, 'getStartTimeBadge').and + .returnValue(""); var returnedString = parseStdoutService.parseStdout(mockEvent); var expectedString = `
collapse_icon_dom13
-
anchor_tag_dom
+
anchor_tag_dom
`; expect(returnedString).toBe(expectedString); });