/
jiraUtils.js
86 lines (79 loc) · 2.15 KB
/
jiraUtils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/** @format */
const debug = require('debug')('jiraUtils')
// Convert seconds into days
function convertSecondsToDays(sec) {
let result = (sec / 28800).toFixed(2)
if (result == Math.round(result)) {
result = Math.round(result)
}
return +result
}
function removeSpaces(x) {
return x.replace(/\s/g, '_')
}
/**
*Return a list of incoming and outgoing links
*
* @param {JSON} linkData from Rest
* @param {boolean} makeActive Convert all to active relationships
* @returns {Object} Summary
* [
* "in": [
* { }
* ],
* "out": [
* ]
* ]
*/
function summarizeLinks(linkData, makeActive = false, baseKey = false) {
let links = []
if (makeActive) {
linkData.forEach((l) => {
if (Object.keys(l).includes('outwardIssue')) {
// "Passive" relationship... convert to "Active"
links.push([baseKey, l.outwardIssue.key, l.type.outward])
} else if (Object.keys(l).includes('inwardIssue')) {
// "Active" relationship... no change
links.push([l.inwardIssue.key, baseKey, l.type.outward])
} else {
console.error(`Invalid link type: ${l.key}`)
}
})
} else {
// makeActive == false
links = { in: [], out: [] }
linkData.forEach((l) => {
if (Object.keys(l).includes('inwardIssue')) {
links.in.push({
type: l.type.inward,
source: l.inwardIssue.key,
})
} else if (Object.keys(l).includes('outwardIssue')) {
links.out.push({
type: l.type.outward,
target: l.outwardIssue.key,
})
} else {
console.error(`Invalid link type: ${l.key}`)
}
})
} // if makeActive
return links ? links : ''
}
function convertTimestampToElapsedDays(timestampStr) {
try {
let result =
Math.round(
(new Date().getTime() - new Date(timestampStr).getTime()) /
(60 * 60 * 24 * 10)
) / 100
// console.log(result)
return result
} catch (err) {
throw err
}
}
exports.convertSecondsToDays = convertSecondsToDays
exports.removeSpaces = removeSpaces
exports.summarizeLinks = summarizeLinks
exports.convertTimestampToElapsedDays = convertTimestampToElapsedDays