Skip to content

Commit c8cf696

Browse files
mixaaaaUwe Gruenheid
authored andcommitted
New: Added datetime parsing for visualization
1 parent 280ebeb commit c8cf696

File tree

3 files changed

+56
-8
lines changed

3 files changed

+56
-8
lines changed

lib/blockmacro/jiraIssuesBlockmacro.js

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*/
44
const Jira = require('../Jira')
55
const _ = require('lodash')
6+
const moment = require('moment')
67
const { createLinkToIssue } = require('../common/utils')
78

89
function jiraIssuesBlockMacro (context) {
@@ -15,7 +16,9 @@ function jiraIssuesBlockMacro (context) {
1516
const jiraProject = parent.applySubstitutions(target, ['attributes'])
1617
const jql = attrs.jql || (jiraProject === undefined ? 'resolution="Unresolved" ORDER BY priority DESC, key ASC, duedate ASC' : `project = ${jiraProject} AND resolution="Unresolved" ORDER BY priority DESC, key ASC, duedate ASC`)
1718
const customFields = attrs.customFieldIds || 'priority,created,assignee,issuetype,summary'
19+
doc.getLogger().info(`customFields: ${customFields}`)
1820
const customFieldIds = customFields.split(',').map(customField => customField.split('.')[0])
21+
doc.getLogger().info(`customFieldIds: ${customFieldIds}`)
1922
const logger = context.logger
2023
const jiraConfig = require('../common/jiraConfig').createConfig('', doc, jiraProject, attrs, logger)
2124
const jiraClient = new Jira(doc, jiraConfig.auth, jiraConfig.baseUrl)
@@ -30,8 +33,8 @@ function jiraIssuesBlockMacro (context) {
3033
content.push('|====')
3134
content.push('|' + headers.join('|'))
3235

33-
for (let i = 0; i < issues.length; i++) {
34-
const issue = issues[i]
36+
for (const element of issues) {
37+
const issue = element
3538
let idColumn = 'a|'
3639
if (issue.fields.issuetype && customFieldIds.includes('issuetype')) {
3740
const issueTypeName = issue.fields.issuetype.name
@@ -43,24 +46,31 @@ function jiraIssuesBlockMacro (context) {
4346
idColumn += `${createLinkToIssue(jiraConfig.baseUrl, issue.key)}[${issue.key}]`
4447
content.push(idColumn)
4548

46-
for (let j = 0; j < customFieldsArray.length; j++) {
49+
for (const element of customFieldsArray) {
4750
let value
48-
if (!_.has(issue.fields, customFieldsArray[j])) {
49-
logger.warn(`Examining issue '${JSON.stringify(issue, null, 2)}' for custom field '${customFieldsArray[j]}', but was not found.`)
51+
if (!_.has(issue.fields, element)) {
52+
logger.warn(`Examining issue '${JSON.stringify(issue, null, 2)}' for custom field '${element}', but was not found.`)
5053
value = '-'
5154
} else {
52-
value = _.get(issue.fields, customFieldsArray[j])
55+
value = _.get(issue.fields, element)
5356
if (value !== null && (value.constructor === Array)) {
5457
value = value.toString()
5558
} else if ((typeof value === 'object') && value != null) {
56-
value = value.name || value.displayName || doc.getAttribute(`jira-table-${customFieldsArray[j].replace(/\./g, '-')}-default`, '-')
59+
value = value.name || value.displayName || doc.getAttribute(`jira-table-${element.replace(/\./g, '-')}-default`, '-')
5760
} else {
58-
value = value || doc.getAttribute(`jira-table-${customFieldsArray[j].replace(/\./g, '-')}-default`, '-')
61+
value = value || doc.getAttribute(`jira-table-${element.replace(/\./g, '-')}-default`, '-')
5962
}
6063
}
6164
if (typeof value === 'number') {
6265
content.push('|' + value)
6366
} else {
67+
const inputFormatAttr = `jira-${element.replace(/\./g, '-')}-input-format`
68+
const outputFormatAttr = `jira-${element.replace(/\./g, '-')}-output-format`
69+
const inputFormat = doc.getAttribute(inputFormatAttr)
70+
if (inputFormat) {
71+
const outputFormat = doc.getAttribute(outputFormatAttr)
72+
value = formatValue(doc, value, inputFormat, outputFormat)
73+
}
6474
content.push('|' + value.replace(/\|/g, '\\|'))
6575
}
6676
}
@@ -74,6 +84,16 @@ function jiraIssuesBlockMacro (context) {
7484
}
7585
}
7686

87+
function formatValue (doc, value, inputFormat, outputFormat) {
88+
if (typeof value === 'string') {
89+
const parsedValue = moment(value, inputFormat, true)
90+
if (parsedValue.isValid()) {
91+
return parsedValue.format(outputFormat)
92+
}
93+
}
94+
return value
95+
}
96+
7797
function createHeaders (doc, customFieldIds) {
7898
const headers = []
7999
const customFieldsArray = customFieldIds.split(',').filter(item => item !== 'issuetype')

test/antora/antora-playbook.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ asciidoc:
1919
- ./../../lib/asciidoctor-jira.js
2020
attributes:
2121
jira-baseurl: https://uniqueck.atlassian.net
22+
jira-created-input-format: yyyy-MM-ddTHH:mm:ss.SSSZ
23+
jira-created-output-format: dd.MM.yyyy
2224

2325
ui:
2426
bundle:

test/test.spec.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,32 @@ describe('Conversion', () => {
9898
<th class="tableblock halign-left valign-top">labels</th>
9999
</tr>
100100
</thead>
101+
</table>`)
102+
})
103+
it('#206 - date adaption', () => {
104+
const registry = asciidoctor.Extensions.create()
105+
jiraExt.register(registry)
106+
107+
const html = asciidoctor.convert('jira::DOC[jql="issue=DOC-2",customFieldIds="created"]', { extension_registry: registry, attributes: { imagesoutdir: 'test/.images', 'jira-created-input-format': 'YYYY-MM-DDTHH:mm:ss.SSSZ', 'jira-created-output-format': 'DD.MM.YYYY' } })
108+
expect(html).to.equal(`<table class="tableblock frame-all grid-all stretch">
109+
<colgroup>
110+
<col style="width: 33.3333%;">
111+
<col style="width: 66.6667%;">
112+
</colgroup>
113+
<thead>
114+
<tr>
115+
<th class="tableblock halign-left valign-top">ID</th>
116+
<th class="tableblock halign-left valign-top">created</th>
117+
</tr>
118+
</thead>
119+
<tbody>
120+
<tr>
121+
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
122+
<p><a href="https://uniqueck.atlassian.net/browse/DOC-2">DOC-2</a></p>
123+
</div></div></td>
124+
<td class="tableblock halign-left valign-top"><p class="tableblock">09.10.2021</p></td>
125+
</tr>
126+
</tbody>
101127
</table>`)
102128
})
103129
})

0 commit comments

Comments
 (0)