diff options
author | Filipa Lacerda <filipa@gitlab.com> | 2019-09-02 17:43:42 +0100 |
---|---|---|
committer | Filipa Lacerda <filipa@gitlab.com> | 2019-09-03 09:32:42 +0100 |
commit | 876ae19d9efac7675ae60bf75d792e308e4d6ad2 (patch) | |
tree | b2251f666f6c8aa63b6d71f2520b9f1205b0f7ba /app/assets/javascripts/jobs | |
parent | f4e40c532b5582f47a0dd9bf7054112fc9ec6085 (diff) | |
download | gitlab-ce-876ae19d9efac7675ae60bf75d792e308e4d6ad2.tar.gz |
Creates utils for the job log66454-utils-parser
With the new job log json format
we need a parser on the frontend
Diffstat (limited to 'app/assets/javascripts/jobs')
-rw-r--r-- | app/assets/javascripts/jobs/store/utils.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/app/assets/javascripts/jobs/store/utils.js b/app/assets/javascripts/jobs/store/utils.js new file mode 100644 index 00000000000..de7de92ed2e --- /dev/null +++ b/app/assets/javascripts/jobs/store/utils.js @@ -0,0 +1,40 @@ +/** + * Parses the job log content into a structure usable by the template + * + * For collaspible lines (section_header = true): + * - creates a new array to hold the lines that are collpasible, + * - adds a isClosed property to handle toggle + * - adds a isHeader property to handle template logic + * For each line: + * - adds the index as lineNumber + * + * @param {Array} lines + * @returns {Array} + */ +export default (lines = []) => + lines.reduce((acc, line, index) => { + if (line.section_header) { + acc.push({ + isClosed: true, + isHeader: true, + line: { + ...line, + lineNumber: index, + }, + + lines: [], + }); + } else if (acc.length && acc[acc.length - 1].isHeader) { + acc[acc.length - 1].lines.push({ + ...line, + lineNumber: index, + }); + } else { + acc.push({ + ...line, + lineNumber: index, + }); + } + + return acc; + }, []); |