-
Notifications
You must be signed in to change notification settings - Fork 1
/
report.ts
56 lines (44 loc) · 1.95 KB
/
report.ts
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
import { getBoardActions } from './trello-util';
import { getActionsPerCard, getStartTime, getEndTime, getMinutesRemaining, getHumanReadableTime } from './util';
declare const moment: any;
declare const TrelloPowerUp: any;
const t = TrelloPowerUp.iframe();
const humanReadableTimeStamp = (milliseconds: number): string =>
moment(milliseconds).format("YYYY-MM-DD k:mm:ss");
const generateReport = async () => {
// TODO: only returns 1000 actions, so won't work on boards with large histories
const actions = await getBoardActions(t);
const config = await t.arg('currentConfig');
const actionsPerCard = getActionsPerCard(actions);
const cardIds = Object.keys(actionsPerCard);
let csv = "Name,Start time, End time, Time remaining\n";
cardIds.map(cardId => {
const cardActions = actionsPerCard[cardId];
const startTime = getStartTime(cardActions, config.startCondition);
let endTime;
if (startTime) {
csv += cardActions[0].data.card.name;
endTime = getEndTime(cardActions, config.endCondition, startTime);
csv += "," + humanReadableTimeStamp(startTime) + ",";
if (endTime) {
csv += humanReadableTimeStamp(endTime);
}
csv += ",";
const minutesRemaining = getMinutesRemaining(startTime, endTime, config);
csv += getHumanReadableTime(minutesRemaining);
csv += '\n';
}
});
return csv;
};
t.render(async () => {
const report = await generateReport();
document.querySelector('#downloadLink').classList.remove('hidden');
document.querySelector('.loadingSpinner').classList.add('hidden');
const button: HTMLAnchorElement= document.querySelector('#downloadLink');
button.href = 'data:text/csv;charset=utf-8,' + encodeURI(report);
button.target = '_blank';
button.download = 'sla.csv';
});
// console.log(csv);
// var hiddenElement = document.createElement('a');