@lighthouse/common 6.10.0 → 6.10.1-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mise.toml +6 -6
- package/CHANGELOG.md +758 -758
- package/README.md +1 -1
- package/dist/errors/FetchImageError.js +3 -3
- package/dist/helpers/fetch-image-for-pdf-generator-service/index.js +7 -7
- package/dist/helpers/floatify/index.js +6 -6
- package/dist/helpers/get-audit-items-data/index.js +47 -36
- package/dist/helpers/validate-url/index.js +4 -4
- package/dist/pdf/activity-report/index.js +32 -32
- package/dist/pdf/audit/index.js +23 -23
- package/dist/pdf/helpers/fields/index.js +47 -27
- package/dist/pdf/issue/index.js +23 -23
- package/dist/pdf/job/index.js +22 -22
- package/dist/pdf/shift-report/index.js +28 -28
- package/dist/pdf/task/index.js +23 -23
- package/dist/scheduling/generators/occurrenceIntervalsGenerator.js +2 -2
- package/dist/scheduling/generators/scheduleIntervalsGenerator.js +2 -2
- package/dist/scheduling/generators/serviceIntervalsGenerator.js +2 -2
- package/dist/scheduling/helpers/convertToTimezone.js +6 -6
- package/dist/scheduling/helpers/generateNonRepeatingSchedule.js +2 -2
- package/dist/scheduling/helpers/generateRepeatingSchedule.js +2 -2
- package/dist/scheduling/helpers/generateScheduleEnd.js +2 -2
- package/dist/scheduling/helpers/hasValidStartAndEnd.js +5 -5
- package/dist/scheduling/helpers/intervalCovers.js +6 -6
- package/dist/scheduling/helpers/intervalIntersectsEnd.js +6 -6
- package/dist/scheduling/helpers/intervalIntersectsStart.js +6 -6
- package/dist/scheduling/helpers/intervalOnlyIntersectsEnd.js +6 -6
- package/dist/scheduling/helpers/intervalOnlyIntersectsStart.js +6 -6
- package/dist/scheduling/helpers/intervalOutside.js +6 -6
- package/dist/scheduling/helpers/intervalWithin.js +6 -6
- package/dist/scheduling/helpers/mergeIntervals.js +6 -6
- package/dist/scheduling/helpers/splitIntervals.js +6 -6
- package/dist/scheduling/strategies/getNext.js +2 -2
- package/dist/scheduling/strategies/getNextExactDateOfMonth.js +2 -2
- package/dist/scheduling/strategies/getNextLastDayOfMonth.js +2 -2
- package/dist/scheduling/strategies/getNextLastWeekdayOfMonth.js +2 -2
- package/dist/scheduling/strategies/getNextNoRepeat.js +2 -2
- package/dist/scheduling/strategies/getNextWeekday.js +2 -2
- package/dist/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +2 -2
- package/dist/service-hours/__helpers__/calculate-hours.js +4 -4
- package/dist/service-hours/__helpers__/isOpen.js +2 -2
- package/dist/service-hours/schema.js +4 -4
- package/lib/constants.js +12 -6
- package/lib/constants.js.map +1 -1
- package/lib/errors/DomainError.js +14 -21
- package/lib/errors/DomainError.js.map +1 -1
- package/lib/errors/FetchImageError.js +17 -24
- package/lib/errors/FetchImageError.js.map +1 -1
- package/lib/errors/ValidationError.js +30 -36
- package/lib/errors/ValidationError.js.map +1 -1
- package/lib/errors/index.js +23 -5
- package/lib/errors/index.js.map +1 -1
- package/lib/helpers/build-fetch-url/index.js +43 -47
- package/lib/helpers/build-fetch-url/index.js.map +1 -1
- package/lib/helpers/fetch-image/index.js +83 -82
- package/lib/helpers/fetch-image/index.js.map +1 -1
- package/lib/helpers/fetch-image-for-pdf-generator-service/index.js +168 -243
- package/lib/helpers/fetch-image-for-pdf-generator-service/index.js.map +1 -1
- package/lib/helpers/fetch-image-for-web/index.js +71 -94
- package/lib/helpers/fetch-image-for-web/index.js.map +1 -1
- package/lib/helpers/fetch-lighthouse-logo/index.js +36 -61
- package/lib/helpers/fetch-lighthouse-logo/index.js.map +1 -1
- package/lib/helpers/floatify/index.js +13 -7
- package/lib/helpers/floatify/index.js.map +1 -1
- package/lib/helpers/get-assignees-full-names/index.js +11 -7
- package/lib/helpers/get-assignees-full-names/index.js.map +1 -1
- package/lib/helpers/get-audit-entry-details/index.js +42 -32
- package/lib/helpers/get-audit-entry-details/index.js.map +1 -1
- package/lib/helpers/get-audit-items-data/index.js +104 -83
- package/lib/helpers/get-audit-items-data/index.js.map +1 -1
- package/lib/helpers/get-geometry-geocoded-string/index.js +10 -5
- package/lib/helpers/get-geometry-geocoded-string/index.js.map +1 -1
- package/lib/helpers/get-issue-details/index.js +53 -43
- package/lib/helpers/get-issue-details/index.js.map +1 -1
- package/lib/helpers/get-job-details/index.js +49 -41
- package/lib/helpers/get-job-details/index.js.map +1 -1
- package/lib/helpers/get-location-reference/index.js +32 -34
- package/lib/helpers/get-location-reference/index.js.map +1 -1
- package/lib/helpers/get-pretty-duration/index.js +16 -10
- package/lib/helpers/get-pretty-duration/index.js.map +1 -1
- package/lib/helpers/get-reference-details/index.js +20 -10
- package/lib/helpers/get-reference-details/index.js.map +1 -1
- package/lib/helpers/get-status-details/index.js +8 -2
- package/lib/helpers/get-status-details/index.js.map +1 -1
- package/lib/helpers/get-task-entry-details/index.js +32 -23
- package/lib/helpers/get-task-entry-details/index.js.map +1 -1
- package/lib/helpers/get-timezone-abbr/index.js +11 -4
- package/lib/helpers/get-timezone-abbr/index.js.map +1 -1
- package/lib/helpers/get-timezone-datetime/index.js +20 -13
- package/lib/helpers/get-timezone-datetime/index.js.map +1 -1
- package/lib/helpers/get-user-full-name/index.js +9 -3
- package/lib/helpers/get-user-full-name/index.js.map +1 -1
- package/lib/helpers/get-value-as-percentage/index.js +9 -4
- package/lib/helpers/get-value-as-percentage/index.js.map +1 -1
- package/lib/helpers/image-validators/index.js +18 -12
- package/lib/helpers/image-validators/index.js.map +1 -1
- package/lib/helpers/index.js +130 -18
- package/lib/helpers/index.js.map +1 -1
- package/lib/helpers/validate-url/index.js +11 -5
- package/lib/helpers/validate-url/index.js.map +1 -1
- package/lib/images/index.js +10 -4
- package/lib/images/index.js.map +1 -1
- package/lib/index.js +66 -10
- package/lib/index.js.map +1 -1
- package/lib/pdf/activity-report/index.js +407 -537
- package/lib/pdf/activity-report/index.js.map +1 -1
- package/lib/pdf/audit/index.js +137 -134
- package/lib/pdf/audit/index.js.map +1 -1
- package/lib/pdf/fonts/index.js +4 -2
- package/lib/pdf/fonts/index.js.map +1 -1
- package/lib/pdf/helpers/build-audit-content/index.js +57 -51
- package/lib/pdf/helpers/build-audit-content/index.js.map +1 -1
- package/lib/pdf/helpers/build-audit-follow-ups/index.js +52 -50
- package/lib/pdf/helpers/build-audit-follow-ups/index.js.map +1 -1
- package/lib/pdf/helpers/build-location-scans-content/index.js +22 -16
- package/lib/pdf/helpers/build-location-scans-content/index.js.map +1 -1
- package/lib/pdf/helpers/build-template-content/index.js +52 -51
- package/lib/pdf/helpers/build-template-content/index.js.map +1 -1
- package/lib/pdf/helpers/default-footer/index.js +38 -35
- package/lib/pdf/helpers/default-footer/index.js.map +1 -1
- package/lib/pdf/helpers/default-header/index.js +40 -35
- package/lib/pdf/helpers/default-header/index.js.map +1 -1
- package/lib/pdf/helpers/default-styles/index.js +7 -1
- package/lib/pdf/helpers/default-styles/index.js.map +1 -1
- package/lib/pdf/helpers/fields/index.js +225 -214
- package/lib/pdf/helpers/fields/index.js.map +1 -1
- package/lib/pdf/helpers/format-location-address/index.js +14 -8
- package/lib/pdf/helpers/format-location-address/index.js.map +1 -1
- package/lib/pdf/helpers/generate-definition/index.js +60 -65
- package/lib/pdf/helpers/generate-definition/index.js.map +1 -1
- package/lib/pdf/helpers/horizontal-line/index.js +14 -14
- package/lib/pdf/helpers/horizontal-line/index.js.map +1 -1
- package/lib/pdf/helpers/html-transformer/index.js +45 -35
- package/lib/pdf/helpers/html-transformer/index.js.map +1 -1
- package/lib/pdf/helpers/index.js +194 -15
- package/lib/pdf/helpers/index.js.map +1 -1
- package/lib/pdf/helpers/parse-value/index.js +10 -4
- package/lib/pdf/helpers/parse-value/index.js.map +1 -1
- package/lib/pdf/helpers/table/index.js +136 -205
- package/lib/pdf/helpers/table/index.js.map +1 -1
- package/lib/pdf/helpers/text/index.js +11 -8
- package/lib/pdf/helpers/text/index.js.map +1 -1
- package/lib/pdf/icons/index.js +8 -2
- package/lib/pdf/icons/index.js.map +1 -1
- package/lib/pdf/index.js +47 -6
- package/lib/pdf/index.js.map +1 -1
- package/lib/pdf/issue/index.js +141 -135
- package/lib/pdf/issue/index.js.map +1 -1
- package/lib/pdf/job/index.js +95 -81
- package/lib/pdf/job/index.js.map +1 -1
- package/lib/pdf/shift-report/emptyFixtures.js +8 -2
- package/lib/pdf/shift-report/emptyFixtures.js.map +1 -1
- package/lib/pdf/shift-report/index.js +399 -521
- package/lib/pdf/shift-report/index.js.map +1 -1
- package/lib/pdf/task/index.js +89 -83
- package/lib/pdf/task/index.js.map +1 -1
- package/lib/scheduling/generators/index.js +38 -3
- package/lib/scheduling/generators/index.js.map +1 -1
- package/lib/scheduling/generators/occurrenceIntervalsGenerator.js +44 -37
- package/lib/scheduling/generators/occurrenceIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/generators/scheduleIntervalsGenerator.js +20 -28
- package/lib/scheduling/generators/scheduleIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/generators/serviceIntervalsGenerator.js +120 -150
- package/lib/scheduling/generators/serviceIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/helpers/convertToTimezone.js +18 -11
- package/lib/scheduling/helpers/convertToTimezone.js.map +1 -1
- package/lib/scheduling/helpers/generateNonRepeatingSchedule.js +57 -95
- package/lib/scheduling/helpers/generateNonRepeatingSchedule.js.map +1 -1
- package/lib/scheduling/helpers/generateRepeatingSchedule.js +80 -119
- package/lib/scheduling/helpers/generateRepeatingSchedule.js.map +1 -1
- package/lib/scheduling/helpers/generateScheduleEnd.js +24 -14
- package/lib/scheduling/helpers/generateScheduleEnd.js.map +1 -1
- package/lib/scheduling/helpers/hasValidStartAndEnd.js +19 -11
- package/lib/scheduling/helpers/hasValidStartAndEnd.js.map +1 -1
- package/lib/scheduling/helpers/index.js +159 -14
- package/lib/scheduling/helpers/index.js.map +1 -1
- package/lib/scheduling/helpers/intervalCovers.js +13 -7
- package/lib/scheduling/helpers/intervalCovers.js.map +1 -1
- package/lib/scheduling/helpers/intervalIntersectsEnd.js +13 -7
- package/lib/scheduling/helpers/intervalIntersectsEnd.js.map +1 -1
- package/lib/scheduling/helpers/intervalIntersectsStart.js +13 -7
- package/lib/scheduling/helpers/intervalIntersectsStart.js.map +1 -1
- package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js +15 -10
- package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js.map +1 -1
- package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js +15 -10
- package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js.map +1 -1
- package/lib/scheduling/helpers/intervalOutside.js +15 -9
- package/lib/scheduling/helpers/intervalOutside.js.map +1 -1
- package/lib/scheduling/helpers/intervalWithin.js +13 -7
- package/lib/scheduling/helpers/intervalWithin.js.map +1 -1
- package/lib/scheduling/helpers/mergeIntervals.js +21 -17
- package/lib/scheduling/helpers/mergeIntervals.js.map +1 -1
- package/lib/scheduling/helpers/splitIntervals.js +24 -23
- package/lib/scheduling/helpers/splitIntervals.js.map +1 -1
- package/lib/scheduling/index.js +38 -3
- package/lib/scheduling/index.js.map +1 -1
- package/lib/scheduling/scheduling.types.js +9 -3
- package/lib/scheduling/scheduling.types.js.map +1 -1
- package/lib/scheduling/strategies/getNext.js +57 -63
- package/lib/scheduling/strategies/getNext.js.map +1 -1
- package/lib/scheduling/strategies/getNextExactDateOfMonth.js +47 -56
- package/lib/scheduling/strategies/getNextExactDateOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/getNextLastDayOfMonth.js +43 -51
- package/lib/scheduling/strategies/getNextLastDayOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js +49 -56
- package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/getNextNoRepeat.js +25 -36
- package/lib/scheduling/strategies/getNextNoRepeat.js.map +1 -1
- package/lib/scheduling/strategies/getNextWeekday.js +47 -79
- package/lib/scheduling/strategies/getNextWeekday.js.map +1 -1
- package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +52 -58
- package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/index.js +82 -7
- package/lib/scheduling/strategies/index.js.map +1 -1
- package/lib/schema/index.js +16 -1
- package/lib/schema/index.js.map +1 -1
- package/lib/schema/schema.js +28 -34
- package/lib/schema/schema.js.map +1 -1
- package/lib/service-hours/__helpers__/calculate-hours.js +24 -22
- package/lib/service-hours/__helpers__/calculate-hours.js.map +1 -1
- package/lib/service-hours/__helpers__/isOpen.js +25 -24
- package/lib/service-hours/__helpers__/isOpen.js.map +1 -1
- package/lib/service-hours/index.js +27 -2
- package/lib/service-hours/index.js.map +1 -1
- package/lib/service-hours/schema.js +68 -55
- package/lib/service-hours/schema.js.map +1 -1
- package/package.json +86 -86
- package/vitest.config.ts +23 -23
- package/vitest.setup.js +7 -7
package/lib/pdf/issue/index.js
CHANGED
|
@@ -1,203 +1,209 @@
|
|
|
1
|
-
|
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
-
import { get, filter, isEmpty, map } from 'lodash';
|
|
6
|
-
import moment from 'moment-timezone';
|
|
7
|
-
import { buildTemplateContent, generateDefinition, getFormattedAddress, horizontalLine, table, text, threeColumnTable } from '../helpers';
|
|
8
|
-
import { getIssueDetails, getStatusDetails, getTimezoneAbbr, getTimezoneDatetime } from '../../helpers';
|
|
1
|
+
"use strict";
|
|
9
2
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* @param {object} pdfOptions
|
|
23
|
-
* @param {
|
|
24
|
-
* @param {
|
|
25
|
-
* @param {
|
|
26
|
-
* @param {
|
|
27
|
-
* @param {
|
|
28
|
-
* @param {string}
|
|
29
|
-
* @param {string}
|
|
30
|
-
* @param {object}
|
|
31
|
-
* @param {object}
|
|
32
|
-
* @
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.buildIssuePdf = buildIssuePdf;
|
|
8
|
+
var _lodash = require("lodash");
|
|
9
|
+
var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
|
|
10
|
+
var _helpers = require("../helpers");
|
|
11
|
+
var _helpers2 = require("../../helpers");
|
|
12
|
+
/**
|
|
13
|
+
* buildIssuePdf
|
|
14
|
+
*
|
|
15
|
+
* @param {object} pdfOptions - the pdf options
|
|
16
|
+
* @param {string} pdfOptions.fileTitle - pdf file title
|
|
17
|
+
* @param {function} pdfOptions.footer - function executed to generate footer
|
|
18
|
+
* @param {function} pdfOptions.header - function executed to generate header
|
|
19
|
+
* @param {string} pdfOptions.logoUrl - pdf logo url
|
|
20
|
+
* @param {array} pdfOptions.pageMargins - pdf page margins
|
|
21
|
+
* @param {string} pdfOptions.pageOrientation - pdf page orientation
|
|
22
|
+
* @param {string} pdfOptions.pageSize - pdf page size
|
|
23
|
+
* @param {object} pdfOptions.styles - pdf styles
|
|
24
|
+
* @param {object} pdfOptions.title - pdf title
|
|
25
|
+
* @param {object} data - pdf data
|
|
26
|
+
* @param {object} data.entity - issue document
|
|
27
|
+
* @param {object} data.locations - locations documents
|
|
28
|
+
* @param {object} data.settings - settings properties
|
|
29
|
+
* @param {string} data.settings.awsS3BaseUrl - aws S3 base url
|
|
30
|
+
* @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url
|
|
31
|
+
* @param {string} data.timezone - timezone string
|
|
32
|
+
* @param {object} data.users - application user documents
|
|
33
|
+
* @param {object} data.zones - zone documents
|
|
34
|
+
* @returns {Promise} returns pdfmake definition object
|
|
33
35
|
*/
|
|
34
36
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
37
|
+
const publicSubmissionTextColor = '#FF8C2F';
|
|
38
|
+
const internalSubmissionTextColor = '#00AAE4';
|
|
39
|
+
function buildIssuePdf(pdfOptions, data) {
|
|
40
|
+
const {
|
|
41
|
+
entity,
|
|
42
|
+
timezone
|
|
43
|
+
} = data;
|
|
44
|
+
const sequenceId = entity.sequenceId;
|
|
45
|
+
const timestamp = entity.createdAt;
|
|
46
|
+
const title = entity.title || 'Unknown';
|
|
47
|
+
const fileTitle = `Issue Report - ${title}`;
|
|
48
|
+
return generateContent(data, pdfOptions).then(content => (0, _helpers.generateDefinition)({
|
|
49
|
+
content,
|
|
50
|
+
fileTitle,
|
|
51
|
+
sequenceId,
|
|
52
|
+
timestamp,
|
|
53
|
+
timezone,
|
|
54
|
+
type: 'Issue',
|
|
55
|
+
...pdfOptions
|
|
56
|
+
}));
|
|
54
57
|
}
|
|
55
58
|
function generateContent(data, pdfOptions) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
timezone
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
timeline =
|
|
64
|
-
title
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
59
|
+
const {
|
|
60
|
+
entity,
|
|
61
|
+
timezone
|
|
62
|
+
} = data;
|
|
63
|
+
const {
|
|
64
|
+
entry,
|
|
65
|
+
gps = {},
|
|
66
|
+
timeline = [],
|
|
67
|
+
title
|
|
68
|
+
} = entity;
|
|
69
|
+
const {
|
|
70
|
+
plugins = {}
|
|
71
|
+
} = pdfOptions;
|
|
72
|
+
const entityDetails = (0, _helpers2.getIssueDetails)(data);
|
|
73
|
+
const {
|
|
74
|
+
assigneeNames,
|
|
75
|
+
durationText,
|
|
76
|
+
gpsText,
|
|
77
|
+
isPublicSubmission,
|
|
78
|
+
locationText,
|
|
79
|
+
statusColor,
|
|
80
|
+
statusText
|
|
81
|
+
} = entityDetails;
|
|
82
|
+
const reverseGeocoded = gps.reverseGeocoded;
|
|
83
|
+
const subTitle = `${locationText || gpsText}`;
|
|
84
|
+
const headerTitle = (0, _helpers.text)(title, {
|
|
78
85
|
style: 'title'
|
|
79
86
|
});
|
|
80
|
-
|
|
87
|
+
const headerSubTitle = (0, _helpers.text)(subTitle, {
|
|
81
88
|
style: 'subTitle'
|
|
82
89
|
});
|
|
83
|
-
|
|
84
|
-
|
|
90
|
+
const address = !(0, _lodash.isEmpty)(reverseGeocoded) ? (0, _helpers.getFormattedAddress)(reverseGeocoded) : '';
|
|
91
|
+
const headerAddress = (0, _helpers.text)(address, {
|
|
85
92
|
style: 'small'
|
|
86
93
|
});
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
94
|
+
const body = !(0, _lodash.isEmpty)(reverseGeocoded) ? [[headerTitle], [headerSubTitle], [headerAddress]] : [[headerTitle], [headerSubTitle]];
|
|
95
|
+
const submittedAtInTimezone = entity.submittedAt ? (0, _momentTimezone.default)(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
|
|
96
|
+
const submittedAt = (0, _helpers.text)(`Submitted: ${submittedAtInTimezone}`, {
|
|
90
97
|
style: 'small'
|
|
91
98
|
});
|
|
92
99
|
if (entity.showSimplifiedDuration) {
|
|
93
100
|
body.push([submittedAt]);
|
|
94
101
|
} else {
|
|
95
|
-
|
|
96
|
-
|
|
102
|
+
const startedAtInTimezone = entity.startedAt ? (0, _momentTimezone.default)(entity.startedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
|
|
103
|
+
const startedAt = (0, _helpers.text)(`Started: ${startedAtInTimezone}`, {
|
|
97
104
|
style: 'small'
|
|
98
105
|
});
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
+
const momentDuration = _momentTimezone.default.duration(Math.abs(entity.formDuration));
|
|
107
|
+
const days = Math.floor(momentDuration.asDays()).toString().padStart(2, '0');
|
|
108
|
+
const hours = Math.floor(momentDuration.hours()).toString().padStart(2, '0');
|
|
109
|
+
const minutes = momentDuration.minutes().toString().padStart(2, '0');
|
|
110
|
+
const seconds = momentDuration.seconds().toString().padStart(2, '0');
|
|
111
|
+
const formattedFormDuration = entity.formDuration ? `${entity.formDuration < 0 ? '-' : ''}${days}:${hours}:${minutes}:${seconds}` : 'Not recorded';
|
|
112
|
+
const formDuration = (0, _helpers.text)(`Form Duration (DD:HH:MM:SS): ${formattedFormDuration}`, {
|
|
106
113
|
style: 'small'
|
|
107
114
|
});
|
|
108
115
|
body.push([startedAt]);
|
|
109
116
|
body.push([submittedAt]);
|
|
110
117
|
body.push([formDuration]);
|
|
111
118
|
}
|
|
112
|
-
|
|
113
|
-
body
|
|
119
|
+
const titleTable = (0, _helpers.table)({
|
|
120
|
+
body,
|
|
114
121
|
layout: 'noBorders',
|
|
115
122
|
style: 'titleTable'
|
|
116
123
|
});
|
|
117
|
-
|
|
124
|
+
const statusLabelText = (0, _helpers.text)('Status', {
|
|
118
125
|
bold: true
|
|
119
126
|
});
|
|
120
|
-
|
|
127
|
+
const statusValueText = (0, _helpers.text)(statusText, {
|
|
121
128
|
color: statusColor
|
|
122
129
|
});
|
|
123
|
-
|
|
130
|
+
const metaTable = (0, _helpers.table)({
|
|
124
131
|
body: [[statusLabelText, statusValueText]],
|
|
125
132
|
layout: 'noBorders',
|
|
126
133
|
style: 'metaTable'
|
|
127
134
|
});
|
|
128
135
|
if (statusText === 'CLOSED') {
|
|
129
|
-
|
|
136
|
+
const durationLabelText = (0, _helpers.text)('Duration', {
|
|
130
137
|
bold: true
|
|
131
138
|
});
|
|
132
|
-
|
|
139
|
+
const durationValueText = (0, _helpers.text)(durationText);
|
|
133
140
|
metaTable.table.body.push([durationLabelText, durationValueText]);
|
|
134
141
|
}
|
|
135
|
-
|
|
142
|
+
const assigneeLabelText = (0, _helpers.text)('Assignees', {
|
|
136
143
|
bold: true
|
|
137
144
|
});
|
|
138
|
-
|
|
145
|
+
const assigneeValueText = (0, _helpers.text)(assigneeNames);
|
|
139
146
|
metaTable.table.body.push([assigneeLabelText, assigneeValueText]);
|
|
140
|
-
if (
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
147
|
+
if (plugins.publicForms?.enabled) {
|
|
148
|
+
const sourceText = isPublicSubmission ? 'PUBLIC SUBMISSION' : 'INTERNAL SUBMISSION';
|
|
149
|
+
const sourceColor = isPublicSubmission ? publicSubmissionTextColor : internalSubmissionTextColor;
|
|
150
|
+
const sourceLabelText = (0, _helpers.text)('Source', {
|
|
144
151
|
bold: true
|
|
145
152
|
});
|
|
146
|
-
|
|
153
|
+
const sourceValueText = (0, _helpers.text)(sourceText, {
|
|
147
154
|
color: sourceColor
|
|
148
155
|
});
|
|
149
156
|
metaTable.table.body.push([sourceLabelText, sourceValueText]);
|
|
150
157
|
}
|
|
151
|
-
|
|
158
|
+
const timelineTitle = (0, _helpers.text)('Timeline', {
|
|
152
159
|
style: 'timelineTitle'
|
|
153
160
|
});
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
return buildTemplateContent(entry.formGroups, data).then(
|
|
157
|
-
return [titleTable, metaTable, timelineTitle, timelineHorizontalLine, timelineTable].concat(_toConsumableArray(entry));
|
|
158
|
-
});
|
|
161
|
+
const timelineHorizontalLine = (0, _helpers.horizontalLine)();
|
|
162
|
+
const timelineTable = createTimelineTable(timeline, timezone);
|
|
163
|
+
return (0, _helpers.buildTemplateContent)(entry.formGroups, data).then(entry => [titleTable, metaTable, timelineTitle, timelineHorizontalLine, timelineTable, ...entry]);
|
|
159
164
|
}
|
|
160
165
|
function createTimelineTable(timeline, timezone) {
|
|
161
|
-
|
|
162
|
-
|
|
166
|
+
const timezoneAbbr = (0, _helpers2.getTimezoneAbbr)(timezone);
|
|
167
|
+
const timelineHeaderRow = [(0, _helpers.text)('Activity', {
|
|
163
168
|
bold: true
|
|
164
|
-
}), text('User', {
|
|
169
|
+
}), (0, _helpers.text)('User', {
|
|
165
170
|
bold: true
|
|
166
|
-
}), text(
|
|
171
|
+
}), (0, _helpers.text)(`Date & Timestamp (${timezoneAbbr})`, {
|
|
167
172
|
alignment: 'right',
|
|
168
173
|
bold: true
|
|
169
174
|
})];
|
|
170
|
-
|
|
171
|
-
|
|
175
|
+
const statusUpdates = (0, _lodash.filter)(timeline, ['meta.field', 'status']);
|
|
176
|
+
const timelineBodyRows = (0, _lodash.isEmpty)(statusUpdates) ? [(0, _helpers.text)('No Timeline activity', {
|
|
172
177
|
colSpan: 3
|
|
173
|
-
})] : map(statusUpdates,
|
|
174
|
-
|
|
175
|
-
meta =
|
|
176
|
-
source
|
|
177
|
-
timestamp
|
|
178
|
-
type
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
178
|
+
})] : (0, _lodash.map)(statusUpdates, item => {
|
|
179
|
+
const {
|
|
180
|
+
meta = {},
|
|
181
|
+
source,
|
|
182
|
+
timestamp,
|
|
183
|
+
type
|
|
184
|
+
} = item;
|
|
185
|
+
const next = (0, _lodash.get)(meta, 'next');
|
|
186
|
+
const firstName = (0, _lodash.get)(source, 'meta.firstName');
|
|
187
|
+
const lastName = (0, _lodash.get)(source, 'meta.lastName');
|
|
188
|
+
const fullName = firstName && lastName ? `${firstName} ${lastName}` : 'Unknown User';
|
|
189
|
+
const isNew = type === 'issue-new';
|
|
190
|
+
const isUpdate = type === 'issue-update';
|
|
191
|
+
const isOpen = next === 'open';
|
|
192
|
+
const statusDetails = (0, _helpers2.getStatusDetails)(next);
|
|
193
|
+
const nextStatusText = statusDetails.text;
|
|
194
|
+
const activity = isNew && isOpen ? 'Issue opened' : isNew && !isOpen ? `Issue opened with status ${nextStatusText}` : isUpdate ? `Issue updated to ${nextStatusText}` : 'Unknown status timeline change';
|
|
195
|
+
const datetime = (0, _helpers2.getTimezoneDatetime)({
|
|
190
196
|
format: 'ddd, MMM D h:mm:ssa z',
|
|
191
197
|
showTzAbbr: false,
|
|
192
|
-
timestamp
|
|
193
|
-
timezone
|
|
198
|
+
timestamp,
|
|
199
|
+
timezone
|
|
194
200
|
});
|
|
195
|
-
return [text(activity), text(fullName), text(datetime, {
|
|
201
|
+
return [(0, _helpers.text)(activity), (0, _helpers.text)(fullName), (0, _helpers.text)(datetime, {
|
|
196
202
|
alignment: 'right'
|
|
197
203
|
})];
|
|
198
204
|
});
|
|
199
|
-
|
|
200
|
-
body: [timelineHeaderRow]
|
|
205
|
+
const timelineTable = (0, _helpers.threeColumnTable)({
|
|
206
|
+
body: [timelineHeaderRow, ...timelineBodyRows]
|
|
201
207
|
});
|
|
202
208
|
return timelineTable;
|
|
203
209
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["get","filter","isEmpty","map","moment","buildTemplateContent","generateDefinition","getFormattedAddress","horizontalLine","table","text","threeColumnTable","getIssueDetails","getStatusDetails","getTimezoneAbbr","getTimezoneDatetime","publicSubmissionTextColor","internalSubmissionTextColor","buildIssuePdf","pdfOptions","data","entity","timezone","sequenceId","timestamp","createdAt","title","fileTitle","concat","generateContent","then","content","_objectSpread","type","_plugins$publicForms","entry","_entity$gps","gps","_entity$timeline","timeline","_pdfOptions$plugins","plugins","entityDetails","assigneeNames","durationText","gpsText","isPublicSubmission","locationText","statusColor","statusText","reverseGeocoded","subTitle","headerTitle","style","headerSubTitle","address","headerAddress","body","submittedAtInTimezone","submittedAt","tz","format","showSimplifiedDuration","push","startedAtInTimezone","startedAt","momentDuration","duration","Math","abs","formDuration","days","floor","asDays","toString","padStart","hours","minutes","seconds","formattedFormDuration","titleTable","layout","statusLabelText","bold","statusValueText","color","metaTable","durationLabelText","durationValueText","assigneeLabelText","assigneeValueText","publicForms","enabled","sourceText","sourceColor","sourceLabelText","sourceValueText","timelineTitle","timelineHorizontalLine","timelineTable","createTimelineTable","formGroups","_toConsumableArray","timezoneAbbr","timelineHeaderRow","alignment","statusUpdates","timelineBodyRows","colSpan","item","_item$meta","meta","source","next","firstName","lastName","fullName","isNew","isUpdate","isOpen","statusDetails","nextStatusText","activity","datetime","showTzAbbr"],"sources":["../../../src/pdf/issue/index.js"],"sourcesContent":["import { get, filter, isEmpty, map } from 'lodash'\nimport moment from 'moment-timezone'\n\nimport {\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n horizontalLine,\n table,\n text,\n threeColumnTable,\n} from '../helpers'\n\nimport {\n getIssueDetails,\n getStatusDetails,\n getTimezoneAbbr,\n getTimezoneDatetime,\n} from '../../helpers'\n\n/**\n * buildIssuePdf\n *\n * @param {object} pdfOptions - the pdf options\n * @param {string} pdfOptions.fileTitle - pdf file title\n * @param {function} pdfOptions.footer - function executed to generate footer\n * @param {function} pdfOptions.header - function executed to generate header\n * @param {string} pdfOptions.logoUrl - pdf logo url\n * @param {array} pdfOptions.pageMargins - pdf page margins\n * @param {string} pdfOptions.pageOrientation - pdf page orientation\n * @param {string} pdfOptions.pageSize - pdf page size\n * @param {object} pdfOptions.styles - pdf styles\n * @param {object} pdfOptions.title - pdf title\n * @param {object} data - pdf data\n * @param {object} data.entity - issue document\n * @param {object} data.locations - locations documents\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @param {object} data.zones - zone documents\n * @returns {Promise} returns pdfmake definition object\n */\n\nconst publicSubmissionTextColor = '#FF8C2F'\nconst internalSubmissionTextColor = '#00AAE4'\n\nexport function buildIssuePdf(pdfOptions, data) {\n const { entity, timezone } = data\n\n const sequenceId = entity.sequenceId\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n\n const fileTitle = `Issue Report - ${title}`\n\n return generateContent(data, pdfOptions).then((content) =>\n generateDefinition({\n content,\n fileTitle,\n sequenceId,\n timestamp,\n timezone,\n type: 'Issue',\n ...pdfOptions,\n })\n )\n}\n\nfunction generateContent(data, pdfOptions) {\n const { entity, timezone } = data\n const { entry, gps = {}, timeline = [], title } = entity\n const { plugins = {} } = pdfOptions\n\n const entityDetails = getIssueDetails(data)\n\n const {\n assigneeNames,\n durationText,\n gpsText,\n isPublicSubmission,\n locationText,\n statusColor,\n statusText,\n } = entityDetails\n\n const reverseGeocoded = gps.reverseGeocoded\n\n const subTitle = `${locationText || gpsText}`\n const headerTitle = text(title, { style: 'title' })\n const headerSubTitle = text(subTitle, { style: 'subTitle' })\n const address = !isEmpty(reverseGeocoded)\n ? getFormattedAddress(reverseGeocoded)\n : ''\n const headerAddress = text(address, { style: 'small' })\n\n const body = !isEmpty(reverseGeocoded)\n ? [[headerTitle], [headerSubTitle], [headerAddress]]\n : [[headerTitle], [headerSubTitle]]\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n style: 'small',\n })\n\n if (entity.showSimplifiedDuration) {\n body.push([submittedAt])\n } else {\n const startedAtInTimezone = entity.startedAt\n ? moment(entity.startedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const startedAt = text(`Started: ${startedAtInTimezone}`, {\n style: 'small',\n })\n\n const momentDuration = moment.duration(Math.abs(entity.formDuration))\n const days = Math.floor(momentDuration.asDays()).toString().padStart(2, '0')\n const hours = Math.floor(momentDuration.hours()).toString().padStart(2, '0')\n const minutes = momentDuration.minutes().toString().padStart(2, '0')\n const seconds = momentDuration.seconds().toString().padStart(2, '0')\n const formattedFormDuration = entity.formDuration\n ? `${\n entity.formDuration < 0 ? '-' : ''\n }${days}:${hours}:${minutes}:${seconds}`\n : 'Not recorded'\n const formDuration = text(\n `Form Duration (DD:HH:MM:SS): ${formattedFormDuration}`,\n {\n style: 'small',\n }\n )\n\n body.push([startedAt])\n body.push([submittedAt])\n body.push([formDuration])\n }\n\n const titleTable = table({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n })\n\n const statusLabelText = text('Status', { bold: true })\n const statusValueText = text(statusText, { color: statusColor })\n\n const metaTable = table({\n body: [[statusLabelText, statusValueText]],\n layout: 'noBorders',\n style: 'metaTable',\n })\n\n if (statusText === 'CLOSED') {\n const durationLabelText = text('Duration', { bold: true })\n const durationValueText = text(durationText)\n metaTable.table.body.push([durationLabelText, durationValueText])\n }\n\n const assigneeLabelText = text('Assignees', { bold: true })\n const assigneeValueText = text(assigneeNames)\n metaTable.table.body.push([assigneeLabelText, assigneeValueText])\n\n if (plugins.publicForms?.enabled) {\n const sourceText = isPublicSubmission\n ? 'PUBLIC SUBMISSION'\n : 'INTERNAL SUBMISSION'\n\n const sourceColor = isPublicSubmission\n ? publicSubmissionTextColor\n : internalSubmissionTextColor\n const sourceLabelText = text('Source', { bold: true })\n const sourceValueText = text(sourceText, { color: sourceColor })\n metaTable.table.body.push([sourceLabelText, sourceValueText])\n }\n\n const timelineTitle = text('Timeline', { style: 'timelineTitle' })\n const timelineHorizontalLine = horizontalLine()\n const timelineTable = createTimelineTable(timeline, timezone)\n\n return buildTemplateContent(entry.formGroups, data).then((entry) => [\n titleTable,\n metaTable,\n timelineTitle,\n timelineHorizontalLine,\n timelineTable,\n ...entry,\n ])\n}\n\nfunction createTimelineTable(timeline, timezone) {\n const timezoneAbbr = getTimezoneAbbr(timezone)\n\n const timelineHeaderRow = [\n text('Activity', { bold: true }),\n text('User', { bold: true }),\n text(`Date & Timestamp (${timezoneAbbr})`, {\n alignment: 'right',\n bold: true,\n }),\n ]\n\n const statusUpdates = filter(timeline, ['meta.field', 'status'])\n\n const timelineBodyRows = isEmpty(statusUpdates)\n ? [text('No Timeline activity', { colSpan: 3 })]\n : map(statusUpdates, (item) => {\n const { meta = {}, source, timestamp, type } = item\n\n const next = get(meta, 'next')\n const firstName = get(source, 'meta.firstName')\n const lastName = get(source, 'meta.lastName')\n\n const fullName =\n firstName && lastName ? `${firstName} ${lastName}` : 'Unknown User'\n\n const isNew = type === 'issue-new'\n const isUpdate = type === 'issue-update'\n const isOpen = next === 'open'\n\n const statusDetails = getStatusDetails(next)\n const nextStatusText = statusDetails.text\n\n const activity =\n isNew && isOpen\n ? 'Issue opened'\n : isNew && !isOpen\n ? `Issue opened with status ${nextStatusText}`\n : isUpdate\n ? `Issue updated to ${nextStatusText}`\n : 'Unknown status timeline change'\n\n const datetime = getTimezoneDatetime({\n format: 'ddd, MMM D h:mm:ssa z',\n showTzAbbr: false,\n timestamp,\n timezone,\n })\n\n return [\n text(activity),\n text(fullName),\n text(datetime, { alignment: 'right' }),\n ]\n })\n\n const timelineTable = threeColumnTable({\n body: [timelineHeaderRow, ...timelineBodyRows],\n })\n\n return timelineTable\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_lodash","require","_momentTimezone","_interopRequireDefault","_helpers","_helpers2","publicSubmissionTextColor","internalSubmissionTextColor","buildIssuePdf","pdfOptions","data","entity","timezone","sequenceId","timestamp","createdAt","title","fileTitle","generateContent","then","content","generateDefinition","type","entry","gps","timeline","plugins","entityDetails","getIssueDetails","assigneeNames","durationText","gpsText","isPublicSubmission","locationText","statusColor","statusText","reverseGeocoded","subTitle","headerTitle","text","style","headerSubTitle","address","isEmpty","getFormattedAddress","headerAddress","body","submittedAtInTimezone","submittedAt","moment","tz","format","showSimplifiedDuration","push","startedAtInTimezone","startedAt","momentDuration","duration","Math","abs","formDuration","days","floor","asDays","toString","padStart","hours","minutes","seconds","formattedFormDuration","titleTable","table","layout","statusLabelText","bold","statusValueText","color","metaTable","durationLabelText","durationValueText","assigneeLabelText","assigneeValueText","publicForms","enabled","sourceText","sourceColor","sourceLabelText","sourceValueText","timelineTitle","timelineHorizontalLine","horizontalLine","timelineTable","createTimelineTable","buildTemplateContent","formGroups","timezoneAbbr","getTimezoneAbbr","timelineHeaderRow","alignment","statusUpdates","filter","timelineBodyRows","colSpan","map","item","meta","source","next","get","firstName","lastName","fullName","isNew","isUpdate","isOpen","statusDetails","getStatusDetails","nextStatusText","activity","datetime","getTimezoneDatetime","showTzAbbr","threeColumnTable"],"sources":["../../../src/pdf/issue/index.js"],"sourcesContent":["import { get, filter, isEmpty, map } from 'lodash'\r\nimport moment from 'moment-timezone'\r\n\r\nimport {\r\n buildTemplateContent,\r\n generateDefinition,\r\n getFormattedAddress,\r\n horizontalLine,\r\n table,\r\n text,\r\n threeColumnTable,\r\n} from '../helpers'\r\n\r\nimport {\r\n getIssueDetails,\r\n getStatusDetails,\r\n getTimezoneAbbr,\r\n getTimezoneDatetime,\r\n} from '../../helpers'\r\n\r\n/**\r\n * buildIssuePdf\r\n *\r\n * @param {object} pdfOptions - the pdf options\r\n * @param {string} pdfOptions.fileTitle - pdf file title\r\n * @param {function} pdfOptions.footer - function executed to generate footer\r\n * @param {function} pdfOptions.header - function executed to generate header\r\n * @param {string} pdfOptions.logoUrl - pdf logo url\r\n * @param {array} pdfOptions.pageMargins - pdf page margins\r\n * @param {string} pdfOptions.pageOrientation - pdf page orientation\r\n * @param {string} pdfOptions.pageSize - pdf page size\r\n * @param {object} pdfOptions.styles - pdf styles\r\n * @param {object} pdfOptions.title - pdf title\r\n * @param {object} data - pdf data\r\n * @param {object} data.entity - issue document\r\n * @param {object} data.locations - locations documents\r\n * @param {object} data.settings - settings properties\r\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\r\n * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url\r\n * @param {string} data.timezone - timezone string\r\n * @param {object} data.users - application user documents\r\n * @param {object} data.zones - zone documents\r\n * @returns {Promise} returns pdfmake definition object\r\n */\r\n\r\nconst publicSubmissionTextColor = '#FF8C2F'\r\nconst internalSubmissionTextColor = '#00AAE4'\r\n\r\nexport function buildIssuePdf(pdfOptions, data) {\r\n const { entity, timezone } = data\r\n\r\n const sequenceId = entity.sequenceId\r\n const timestamp = entity.createdAt\r\n const title = entity.title || 'Unknown'\r\n\r\n const fileTitle = `Issue Report - ${title}`\r\n\r\n return generateContent(data, pdfOptions).then((content) =>\r\n generateDefinition({\r\n content,\r\n fileTitle,\r\n sequenceId,\r\n timestamp,\r\n timezone,\r\n type: 'Issue',\r\n ...pdfOptions,\r\n })\r\n )\r\n}\r\n\r\nfunction generateContent(data, pdfOptions) {\r\n const { entity, timezone } = data\r\n const { entry, gps = {}, timeline = [], title } = entity\r\n const { plugins = {} } = pdfOptions\r\n\r\n const entityDetails = getIssueDetails(data)\r\n\r\n const {\r\n assigneeNames,\r\n durationText,\r\n gpsText,\r\n isPublicSubmission,\r\n locationText,\r\n statusColor,\r\n statusText,\r\n } = entityDetails\r\n\r\n const reverseGeocoded = gps.reverseGeocoded\r\n\r\n const subTitle = `${locationText || gpsText}`\r\n const headerTitle = text(title, { style: 'title' })\r\n const headerSubTitle = text(subTitle, { style: 'subTitle' })\r\n const address = !isEmpty(reverseGeocoded)\r\n ? getFormattedAddress(reverseGeocoded)\r\n : ''\r\n const headerAddress = text(address, { style: 'small' })\r\n\r\n const body = !isEmpty(reverseGeocoded)\r\n ? [[headerTitle], [headerSubTitle], [headerAddress]]\r\n : [[headerTitle], [headerSubTitle]]\r\n\r\n const submittedAtInTimezone = entity.submittedAt\r\n ? moment(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z')\r\n : 'Not recorded'\r\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\r\n style: 'small',\r\n })\r\n\r\n if (entity.showSimplifiedDuration) {\r\n body.push([submittedAt])\r\n } else {\r\n const startedAtInTimezone = entity.startedAt\r\n ? moment(entity.startedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z')\r\n : 'Not recorded'\r\n const startedAt = text(`Started: ${startedAtInTimezone}`, {\r\n style: 'small',\r\n })\r\n\r\n const momentDuration = moment.duration(Math.abs(entity.formDuration))\r\n const days = Math.floor(momentDuration.asDays()).toString().padStart(2, '0')\r\n const hours = Math.floor(momentDuration.hours()).toString().padStart(2, '0')\r\n const minutes = momentDuration.minutes().toString().padStart(2, '0')\r\n const seconds = momentDuration.seconds().toString().padStart(2, '0')\r\n const formattedFormDuration = entity.formDuration\r\n ? `${\r\n entity.formDuration < 0 ? '-' : ''\r\n }${days}:${hours}:${minutes}:${seconds}`\r\n : 'Not recorded'\r\n const formDuration = text(\r\n `Form Duration (DD:HH:MM:SS): ${formattedFormDuration}`,\r\n {\r\n style: 'small',\r\n }\r\n )\r\n\r\n body.push([startedAt])\r\n body.push([submittedAt])\r\n body.push([formDuration])\r\n }\r\n\r\n const titleTable = table({\r\n body,\r\n layout: 'noBorders',\r\n style: 'titleTable',\r\n })\r\n\r\n const statusLabelText = text('Status', { bold: true })\r\n const statusValueText = text(statusText, { color: statusColor })\r\n\r\n const metaTable = table({\r\n body: [[statusLabelText, statusValueText]],\r\n layout: 'noBorders',\r\n style: 'metaTable',\r\n })\r\n\r\n if (statusText === 'CLOSED') {\r\n const durationLabelText = text('Duration', { bold: true })\r\n const durationValueText = text(durationText)\r\n metaTable.table.body.push([durationLabelText, durationValueText])\r\n }\r\n\r\n const assigneeLabelText = text('Assignees', { bold: true })\r\n const assigneeValueText = text(assigneeNames)\r\n metaTable.table.body.push([assigneeLabelText, assigneeValueText])\r\n\r\n if (plugins.publicForms?.enabled) {\r\n const sourceText = isPublicSubmission\r\n ? 'PUBLIC SUBMISSION'\r\n : 'INTERNAL SUBMISSION'\r\n\r\n const sourceColor = isPublicSubmission\r\n ? publicSubmissionTextColor\r\n : internalSubmissionTextColor\r\n const sourceLabelText = text('Source', { bold: true })\r\n const sourceValueText = text(sourceText, { color: sourceColor })\r\n metaTable.table.body.push([sourceLabelText, sourceValueText])\r\n }\r\n\r\n const timelineTitle = text('Timeline', { style: 'timelineTitle' })\r\n const timelineHorizontalLine = horizontalLine()\r\n const timelineTable = createTimelineTable(timeline, timezone)\r\n\r\n return buildTemplateContent(entry.formGroups, data).then((entry) => [\r\n titleTable,\r\n metaTable,\r\n timelineTitle,\r\n timelineHorizontalLine,\r\n timelineTable,\r\n ...entry,\r\n ])\r\n}\r\n\r\nfunction createTimelineTable(timeline, timezone) {\r\n const timezoneAbbr = getTimezoneAbbr(timezone)\r\n\r\n const timelineHeaderRow = [\r\n text('Activity', { bold: true }),\r\n text('User', { bold: true }),\r\n text(`Date & Timestamp (${timezoneAbbr})`, {\r\n alignment: 'right',\r\n bold: true,\r\n }),\r\n ]\r\n\r\n const statusUpdates = filter(timeline, ['meta.field', 'status'])\r\n\r\n const timelineBodyRows = isEmpty(statusUpdates)\r\n ? [text('No Timeline activity', { colSpan: 3 })]\r\n : map(statusUpdates, (item) => {\r\n const { meta = {}, source, timestamp, type } = item\r\n\r\n const next = get(meta, 'next')\r\n const firstName = get(source, 'meta.firstName')\r\n const lastName = get(source, 'meta.lastName')\r\n\r\n const fullName =\r\n firstName && lastName ? `${firstName} ${lastName}` : 'Unknown User'\r\n\r\n const isNew = type === 'issue-new'\r\n const isUpdate = type === 'issue-update'\r\n const isOpen = next === 'open'\r\n\r\n const statusDetails = getStatusDetails(next)\r\n const nextStatusText = statusDetails.text\r\n\r\n const activity =\r\n isNew && isOpen\r\n ? 'Issue opened'\r\n : isNew && !isOpen\r\n ? `Issue opened with status ${nextStatusText}`\r\n : isUpdate\r\n ? `Issue updated to ${nextStatusText}`\r\n : 'Unknown status timeline change'\r\n\r\n const datetime = getTimezoneDatetime({\r\n format: 'ddd, MMM D h:mm:ssa z',\r\n showTzAbbr: false,\r\n timestamp,\r\n timezone,\r\n })\r\n\r\n return [\r\n text(activity),\r\n text(fullName),\r\n text(datetime, { alignment: 'right' }),\r\n ]\r\n })\r\n\r\n const timelineTable = threeColumnTable({\r\n body: [timelineHeaderRow, ...timelineBodyRows],\r\n })\r\n\r\n return timelineTable\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|