@lighthouse/common 4.34.0 → 4.35.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/dist/pdf/audit/index.js +6 -5
- package/dist/pdf/issue/index.js +6 -5
- package/dist/pdf/task/index.js +6 -5
- package/lib/pdf/audit/index.js +6 -5
- package/lib/pdf/audit/index.js.map +1 -1
- package/lib/pdf/issue/index.js +6 -5
- package/lib/pdf/issue/index.js.map +1 -1
- package/lib/pdf/task/index.js +6 -5
- package/lib/pdf/task/index.js.map +1 -1
- package/package.json +1 -1
package/dist/pdf/audit/index.js
CHANGED
|
@@ -163,23 +163,24 @@ function generateContent(data, flags) {
|
|
|
163
163
|
|
|
164
164
|
if (formDurationFieldsPresent) {
|
|
165
165
|
const startedAtInTimezone = entity.startedAt ? (0, _momentTimezone.default)(entity.startedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
|
|
166
|
-
const startedAt = (0, _helpers.text)(`Started
|
|
166
|
+
const startedAt = (0, _helpers.text)(`Started: ${startedAtInTimezone}`, {
|
|
167
167
|
colSpan: 2,
|
|
168
168
|
style: 'small'
|
|
169
169
|
});
|
|
170
170
|
const submittedAtInTimezone = entity.submittedAt ? (0, _momentTimezone.default)(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
|
|
171
|
-
const submittedAt = (0, _helpers.text)(`Submitted
|
|
171
|
+
const submittedAt = (0, _helpers.text)(`Submitted: ${submittedAtInTimezone}`, {
|
|
172
172
|
colSpan: 2,
|
|
173
173
|
style: 'small'
|
|
174
174
|
});
|
|
175
175
|
|
|
176
176
|
const momentDuration = _momentTimezone.default.duration(Math.abs(entity.formDuration));
|
|
177
177
|
|
|
178
|
-
const
|
|
178
|
+
const days = Math.floor(momentDuration.asDays()).toString().padStart(2, '0');
|
|
179
|
+
const hours = Math.floor(momentDuration.hours()).toString().padStart(2, '0');
|
|
179
180
|
const minutes = momentDuration.minutes().toString().padStart(2, '0');
|
|
180
181
|
const seconds = momentDuration.seconds().toString().padStart(2, '0');
|
|
181
|
-
const formattedFormDuration = entity.formDuration ? `${entity.formDuration < 0 ? '-' : ''}${hours}:${minutes}:${seconds}` : 'Not recorded';
|
|
182
|
-
const formDuration = (0, _helpers.text)(`Form Duration (HH:MM:SS): ${formattedFormDuration}`, {
|
|
182
|
+
const formattedFormDuration = entity.formDuration ? `${entity.formDuration < 0 ? '-' : ''}${days}:${hours}:${minutes}:${seconds}` : 'Not recorded';
|
|
183
|
+
const formDuration = (0, _helpers.text)(`Form Duration (DD:HH:MM:SS): ${formattedFormDuration}`, {
|
|
183
184
|
colSpan: 2,
|
|
184
185
|
style: 'small'
|
|
185
186
|
});
|
package/dist/pdf/issue/index.js
CHANGED
|
@@ -97,21 +97,22 @@ function generateContent(data) {
|
|
|
97
97
|
|
|
98
98
|
if (formDurationFieldsPresent) {
|
|
99
99
|
const startedAtInTimezone = entity.startedAt ? (0, _momentTimezone.default)(entity.startedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
|
|
100
|
-
const startedAt = (0, _helpers.text)(`Started
|
|
100
|
+
const startedAt = (0, _helpers.text)(`Started: ${startedAtInTimezone}`, {
|
|
101
101
|
style: 'small'
|
|
102
102
|
});
|
|
103
103
|
const submittedAtInTimezone = entity.submittedAt ? (0, _momentTimezone.default)(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
|
|
104
|
-
const submittedAt = (0, _helpers.text)(`Submitted
|
|
104
|
+
const submittedAt = (0, _helpers.text)(`Submitted: ${submittedAtInTimezone}`, {
|
|
105
105
|
style: 'small'
|
|
106
106
|
});
|
|
107
107
|
|
|
108
108
|
const momentDuration = _momentTimezone.default.duration(Math.abs(entity.formDuration));
|
|
109
109
|
|
|
110
|
-
const
|
|
110
|
+
const days = Math.floor(momentDuration.asDays()).toString().padStart(2, '0');
|
|
111
|
+
const hours = Math.floor(momentDuration.hours()).toString().padStart(2, '0');
|
|
111
112
|
const minutes = momentDuration.minutes().toString().padStart(2, '0');
|
|
112
113
|
const seconds = momentDuration.seconds().toString().padStart(2, '0');
|
|
113
|
-
const formattedFormDuration = entity.formDuration ? `${entity.formDuration < 0 ? '-' : ''}${hours}:${minutes}:${seconds}` : 'Not recorded';
|
|
114
|
-
const formDuration = (0, _helpers.text)(`Form Duration (HH:MM:SS): ${formattedFormDuration}`, {
|
|
114
|
+
const formattedFormDuration = entity.formDuration ? `${entity.formDuration < 0 ? '-' : ''}${days}:${hours}:${minutes}:${seconds}` : 'Not recorded';
|
|
115
|
+
const formDuration = (0, _helpers.text)(`Form Duration (DD:HH:MM:SS): ${formattedFormDuration}`, {
|
|
115
116
|
style: 'small'
|
|
116
117
|
});
|
|
117
118
|
body.push([startedAt]);
|
package/dist/pdf/task/index.js
CHANGED
|
@@ -99,21 +99,22 @@ function generateContent(data) {
|
|
|
99
99
|
|
|
100
100
|
if (formDurationFieldsPresent) {
|
|
101
101
|
const startedAtInTimezone = entity.startedAt ? (0, _momentTimezone.default)(entity.startedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
|
|
102
|
-
const startedAt = (0, _helpers.text)(`Started
|
|
102
|
+
const startedAt = (0, _helpers.text)(`Started: ${startedAtInTimezone}`, {
|
|
103
103
|
style: 'small'
|
|
104
104
|
});
|
|
105
105
|
const submittedAtInTimezone = entity.submittedAt ? (0, _momentTimezone.default)(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
|
|
106
|
-
const submittedAt = (0, _helpers.text)(`Submitted
|
|
106
|
+
const submittedAt = (0, _helpers.text)(`Submitted: ${submittedAtInTimezone}`, {
|
|
107
107
|
style: 'small'
|
|
108
108
|
});
|
|
109
109
|
|
|
110
110
|
const momentDuration = _momentTimezone.default.duration(Math.abs(entity.formDuration));
|
|
111
111
|
|
|
112
|
-
const
|
|
112
|
+
const days = Math.floor(momentDuration.asDays()).toString().padStart(2, '0');
|
|
113
|
+
const hours = Math.floor(momentDuration.hours()).toString().padStart(2, '0');
|
|
113
114
|
const minutes = momentDuration.minutes().toString().padStart(2, '0');
|
|
114
115
|
const seconds = momentDuration.seconds().toString().padStart(2, '0');
|
|
115
|
-
const formattedFormDuration = entity.formDuration ? `${entity.formDuration < 0 ? '-' : ''}${hours}:${minutes}:${seconds}` : 'Not recorded';
|
|
116
|
-
const formDuration = (0, _helpers.text)(`Form Duration (HH:MM:SS): ${formattedFormDuration}`, {
|
|
116
|
+
const formattedFormDuration = entity.formDuration ? `${entity.formDuration < 0 ? '-' : ''}${days}:${hours}:${minutes}:${seconds}` : 'Not recorded';
|
|
117
|
+
const formDuration = (0, _helpers.text)(`Form Duration (DD:HH:MM:SS): ${formattedFormDuration}`, {
|
|
117
118
|
style: 'small'
|
|
118
119
|
});
|
|
119
120
|
body.push([startedAt]);
|
package/lib/pdf/audit/index.js
CHANGED
|
@@ -155,21 +155,22 @@ function generateContent(data, flags) {
|
|
|
155
155
|
|
|
156
156
|
if (formDurationFieldsPresent) {
|
|
157
157
|
var startedAtInTimezone = entity.startedAt ? moment(entity.startedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
|
|
158
|
-
var startedAt = text("Started
|
|
158
|
+
var startedAt = text("Started: ".concat(startedAtInTimezone), {
|
|
159
159
|
colSpan: 2,
|
|
160
160
|
style: 'small'
|
|
161
161
|
});
|
|
162
162
|
var submittedAtInTimezone = entity.submittedAt ? moment(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
|
|
163
|
-
var submittedAt = text("Submitted
|
|
163
|
+
var submittedAt = text("Submitted: ".concat(submittedAtInTimezone), {
|
|
164
164
|
colSpan: 2,
|
|
165
165
|
style: 'small'
|
|
166
166
|
});
|
|
167
167
|
var momentDuration = moment.duration(Math.abs(entity.formDuration));
|
|
168
|
-
var
|
|
168
|
+
var days = Math.floor(momentDuration.asDays()).toString().padStart(2, '0');
|
|
169
|
+
var hours = Math.floor(momentDuration.hours()).toString().padStart(2, '0');
|
|
169
170
|
var minutes = momentDuration.minutes().toString().padStart(2, '0');
|
|
170
171
|
var seconds = momentDuration.seconds().toString().padStart(2, '0');
|
|
171
|
-
var formattedFormDuration = entity.formDuration ? "".concat(entity.formDuration < 0 ? '-' : '').concat(hours, ":").concat(minutes, ":").concat(seconds) : 'Not recorded';
|
|
172
|
-
var formDuration = text("Form Duration (HH:MM:SS): ".concat(formattedFormDuration), {
|
|
172
|
+
var formattedFormDuration = entity.formDuration ? "".concat(entity.formDuration < 0 ? '-' : '').concat(days, ":").concat(hours, ":").concat(minutes, ":").concat(seconds) : 'Not recorded';
|
|
173
|
+
var formDuration = text("Form Duration (DD:HH:MM:SS): ".concat(formattedFormDuration), {
|
|
173
174
|
colSpan: 2,
|
|
174
175
|
style: 'small'
|
|
175
176
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/pdf/audit/index.js"],"names":["Promise","isEmpty","round","moment","buildAuditContent","buildAuditFollowUps","buildTemplateContent","generateDefinition","getFormattedAddress","horizontalLine","text","twoColumnTable","getAuditEntryDetails","buildAuditPdf","pdfOptions","data","entity","timezone","flags","console","info","sequenceId","timestamp","createdAt","title","fileTitle","generateContent","then","content","type","catch","err","Error","message","rolloutAuditFollowUps","followUps","footerFields","gps","headerFields","score","entityDetails","gpsText","groupedData","locationText","referenceValue","timezoneHourTime","scoreText","target","targetServiceLevel","renderTargetFields","headerTitle","style","headerScore","alignment","firstRow","subTitle","headerSubTitle","colSpan","secondRow","reverseGeocoded","address","renderHeaderAddress","dummyColumn","headerAddress","renderThirdRow","thirdRow","serviceLevelBelow","serviceLevelText","scoreServiceLevelSubTitle","truncatedTargetPercent","scoreTargetText","scoreTargetSubTitle","scoreBreakdown","actual","max","scorePercentage","scoreTitle","body","entityFields","Object","keys","formDurationFieldsPresent","some","field","includes","startedAtInTimezone","startedAt","tz","format","submittedAtInTimezone","submittedAt","momentDuration","duration","Math","abs","formDuration","hours","floor","asHours","toString","padStart","minutes","seconds","formattedFormDuration","push","titleTable","layout","widths","margin","totalScoreTable","hLineTop","hLineBottom","followUpItems","promises","entry","items","footerTemplate","formGroups","headerTemplate","auditItemsTitle","font","lineHeight","props"],"mappings":"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","sourcesContent":["import Promise from 'bluebird'\nimport { isEmpty, round } from 'lodash'\nimport moment from 'moment-timezone'\n\nimport {\n buildAuditContent,\n buildAuditFollowUps,\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n horizontalLine,\n text,\n twoColumnTable,\n} from '../helpers'\nimport { getAuditEntryDetails } from '../../helpers'\n\n/**\n * buildAuditPdf\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} pdfOptions.flags - flags to conditionally render parts of the pdf\n * @param {object} data - pdf data\n * @param {object} data.entity - audit 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.cloudinaryBaseUrl - cloudinary base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @returns {Promise} returns pdfmake definition object\n */\nexport function buildAuditPdf(pdfOptions, data) {\n const { entity, timezone } = data\n const { flags = {} } = pdfOptions\n\n console.info('buildAuditPdf')\n\n const sequenceId = entity.sequenceId\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n const fileTitle = `Audit Report - ${title}`\n\n return generateContent(data, flags)\n .then(content =>\n generateDefinition({\n content,\n fileTitle,\n sequenceId,\n timestamp,\n timezone,\n type: 'Audit',\n ...pdfOptions,\n })\n )\n .catch(err => {\n throw new Error(`BuildAuditPdfError: ${err.message}`)\n })\n}\n\nfunction generateContent(data, flags) {\n const { rolloutAuditFollowUps } = flags\n const { entity } = data\n\n const {\n followUps = [],\n footerFields = {},\n gps = {},\n headerFields = {},\n score = {},\n timezone,\n title = 'Unknown',\n } = entity\n\n const entityDetails = getAuditEntryDetails(data)\n\n const {\n gpsText,\n groupedData,\n locationText,\n referenceValue,\n timezoneHourTime,\n scoreText,\n target,\n targetServiceLevel,\n } = entityDetails\n\n const renderTargetFields = !!targetServiceLevel\n const headerTitle = text(title, { style: 'title' })\n const headerScore = text(scoreText, { alignment: 'right', style: 'title' })\n const firstRow = [headerTitle, headerScore]\n const subTitle = `${locationText ||\n gpsText} - ${timezoneHourTime} by ${referenceValue}`\n\n let headerSubTitle = text(subTitle, { colSpan: 2, style: 'subTitle' })\n let secondRow = [headerSubTitle]\n\n const reverseGeocoded = gps.reverseGeocoded\n const address = !isEmpty(reverseGeocoded)\n ? getFormattedAddress(reverseGeocoded)\n : ''\n const renderHeaderAddress = !isEmpty(reverseGeocoded)\n const dummyColumn = text(' ', { style: 'small' })\n\n let headerAddress = text(address, { colSpan: 2, style: 'small' })\n const renderThirdRow = renderHeaderAddress || renderTargetFields\n let thirdRow = renderHeaderAddress ? [headerAddress] : []\n\n if (renderTargetFields) {\n headerSubTitle = text(subTitle, { style: 'subTitle' })\n\n const serviceLevelBelow = targetServiceLevel === 'below'\n const serviceLevelText =\n targetServiceLevel === 'above'\n ? 'Above Target'\n : targetServiceLevel === 'on'\n ? 'On Target'\n : targetServiceLevel === 'below'\n ? 'Below Target'\n : ''\n\n const scoreServiceLevelSubTitle = text(serviceLevelText, {\n alignment: 'right',\n style: serviceLevelBelow ? 'serviceLevelBelow' : 'serviceLevelAboveOrOn',\n })\n\n secondRow = [headerSubTitle, scoreServiceLevelSubTitle]\n headerAddress = text(address, { style: 'small' })\n\n const truncatedTargetPercent = round(target, 2)\n const scoreTargetText = `(Target - ${truncatedTargetPercent}%)`\n const scoreTargetSubTitle = text(scoreTargetText, {\n alignment: 'right',\n style: 'subTitle',\n })\n\n thirdRow = renderHeaderAddress\n ? [headerAddress, scoreTargetSubTitle]\n : [dummyColumn, scoreTargetSubTitle]\n }\n\n const scoreBreakdown = text(\n `${round(score.actual, 2)} / ${round(score.max, 2)}`,\n {\n alignment: 'right',\n style: 'totalScore',\n }\n )\n const scorePercentage = text(scoreText, {\n alignment: 'right',\n colSpan: 2,\n style: 'totalAuditScore',\n })\n const scoreTitle = text('Total Score', { style: 'totalScore' })\n\n const body = renderThirdRow\n ? [firstRow, secondRow, thirdRow]\n : [firstRow, secondRow]\n\n const entityFields = Object.keys(entity)\n const formDurationFieldsPresent = [\n 'formDuration',\n 'startedAt',\n 'submittedAt',\n ].some(field => entityFields.includes(field))\n\n // NOTE: stand in for flag rolloutFormDuration\n if (formDurationFieldsPresent) {\n const startedAtInTimezone = entity.startedAt\n ? moment(entity.startedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const startedAt = text(`Started At: ${startedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted At: ${submittedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n const momentDuration = moment.duration(Math.abs(entity.formDuration))\n const hours = Math.floor(momentDuration.asHours())\n .toString()\n .padStart(2, '0')\n const minutes = momentDuration\n .minutes()\n .toString()\n .padStart(2, '0')\n const seconds = momentDuration\n .seconds()\n .toString()\n .padStart(2, '0')\n const formattedFormDuration = entity.formDuration\n ? `${entity.formDuration < 0 ? '-' : ''}${hours}:${minutes}:${seconds}`\n : 'Not recorded'\n const formDuration = text(\n `Form Duration (HH:MM:SS): ${formattedFormDuration}`,\n {\n colSpan: 2,\n style: 'small',\n }\n )\n\n body.push([startedAt, dummyColumn])\n body.push([submittedAt, dummyColumn])\n body.push([formDuration, dummyColumn])\n }\n\n const titleTable = twoColumnTable({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n widths: ['*', 100],\n margin: [0, 0, 0, 30],\n })\n\n const totalScoreTable = twoColumnTable({\n body: [[scoreTitle, scoreBreakdown], [scorePercentage]],\n layout: 'noBorders',\n widths: ['*', 100],\n })\n\n const hLineTop = horizontalLine({ margin: [0, 10, 0, 0] })\n const hLineBottom = horizontalLine()\n\n const followUpItems = rolloutAuditFollowUps\n ? buildAuditFollowUps(followUps, { timezone })\n : []\n\n const promises = {\n entry: buildAuditContent(groupedData.items, { rolloutAuditFollowUps }),\n footerTemplate: buildTemplateContent(footerFields.formGroups, data),\n headerTemplate: buildTemplateContent(headerFields.formGroups, data),\n }\n\n const auditItemsTitle = rolloutAuditFollowUps\n ? [\n {\n text: 'Audit Items',\n style: {\n font: 'Gotham',\n lineHeight: 1.1,\n },\n },\n hLineTop,\n ]\n : []\n\n return Promise.props(promises)\n .then(({ entry, footerTemplate, headerTemplate }) => [\n titleTable,\n followUpItems,\n ...auditItemsTitle,\n ...headerTemplate,\n ...entry,\n hLineTop,\n totalScoreTable,\n hLineBottom,\n ...footerTemplate,\n ])\n .catch(err => {\n throw new Error(`GenerateContentError: ${err.message}`)\n })\n}\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/pdf/audit/index.js"],"names":["Promise","isEmpty","round","moment","buildAuditContent","buildAuditFollowUps","buildTemplateContent","generateDefinition","getFormattedAddress","horizontalLine","text","twoColumnTable","getAuditEntryDetails","buildAuditPdf","pdfOptions","data","entity","timezone","flags","console","info","sequenceId","timestamp","createdAt","title","fileTitle","generateContent","then","content","type","catch","err","Error","message","rolloutAuditFollowUps","followUps","footerFields","gps","headerFields","score","entityDetails","gpsText","groupedData","locationText","referenceValue","timezoneHourTime","scoreText","target","targetServiceLevel","renderTargetFields","headerTitle","style","headerScore","alignment","firstRow","subTitle","headerSubTitle","colSpan","secondRow","reverseGeocoded","address","renderHeaderAddress","dummyColumn","headerAddress","renderThirdRow","thirdRow","serviceLevelBelow","serviceLevelText","scoreServiceLevelSubTitle","truncatedTargetPercent","scoreTargetText","scoreTargetSubTitle","scoreBreakdown","actual","max","scorePercentage","scoreTitle","body","entityFields","Object","keys","formDurationFieldsPresent","some","field","includes","startedAtInTimezone","startedAt","tz","format","submittedAtInTimezone","submittedAt","momentDuration","duration","Math","abs","formDuration","days","floor","asDays","toString","padStart","hours","minutes","seconds","formattedFormDuration","push","titleTable","layout","widths","margin","totalScoreTable","hLineTop","hLineBottom","followUpItems","promises","entry","items","footerTemplate","formGroups","headerTemplate","auditItemsTitle","font","lineHeight","props"],"mappings":";;;;;;;AAAA,OAAOA,OAAP,MAAoB,UAApB;AACA,SAASC,OAAT,EAAkBC,KAAlB,QAA+B,QAA/B;AACA,OAAOC,MAAP,MAAmB,iBAAnB;AAEA,SACEC,iBADF,EAEEC,mBAFF,EAGEC,oBAHF,EAIEC,kBAJF,EAKEC,mBALF,EAMEC,cANF,EAOEC,IAPF,EAQEC,cARF,QASO,YATP;AAUA,SAASC,oBAAT,QAAqC,eAArC;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,OAAO,SAASC,aAAT,CAAuBC,UAAvB,EAAmCC,IAAnC,EAAyC;AAAA,MACtCC,MADsC,GACjBD,IADiB,CACtCC,MADsC;AAAA,MAC9BC,QAD8B,GACjBF,IADiB,CAC9BE,QAD8B;AAAA,0BAEvBH,UAFuB,CAEtCI,KAFsC;AAAA,MAEtCA,KAFsC,kCAE9B,EAF8B;AAI9CC,EAAAA,OAAO,CAACC,IAAR,CAAa,eAAb;AAEA,MAAMC,UAAU,GAAGL,MAAM,CAACK,UAA1B;AACA,MAAMC,SAAS,GAAGN,MAAM,CAACO,SAAzB;AACA,MAAMC,KAAK,GAAGR,MAAM,CAACQ,KAAP,IAAgB,SAA9B;AACA,MAAMC,SAAS,4BAAqBD,KAArB,CAAf;AAEA,SAAOE,eAAe,CAACX,IAAD,EAAOG,KAAP,CAAf,CACJS,IADI,CACC,UAAAC,OAAO;AAAA,WACXrB,kBAAkB;AAChBqB,MAAAA,OAAO,EAAPA,OADgB;AAEhBH,MAAAA,SAAS,EAATA,SAFgB;AAGhBJ,MAAAA,UAAU,EAAVA,UAHgB;AAIhBC,MAAAA,SAAS,EAATA,SAJgB;AAKhBL,MAAAA,QAAQ,EAARA,QALgB;AAMhBY,MAAAA,IAAI,EAAE;AANU,OAObf,UAPa,EADP;AAAA,GADR,EAYJgB,KAZI,CAYE,UAAAC,GAAG,EAAI;AACZ,UAAM,IAAIC,KAAJ,+BAAiCD,GAAG,CAACE,OAArC,EAAN;AACD,GAdI,CAAP;AAeD;;AAED,SAASP,eAAT,CAAyBX,IAAzB,EAA+BG,KAA/B,EAAsC;AAAA,MAC5BgB,qBAD4B,GACFhB,KADE,CAC5BgB,qBAD4B;AAAA,MAE5BlB,MAF4B,GAEjBD,IAFiB,CAE5BC,MAF4B;AAAA,0BAYhCA,MAZgC,CAKlCmB,SALkC;AAAA,MAKlCA,SALkC,kCAKtB,EALsB;AAAA,6BAYhCnB,MAZgC,CAMlCoB,YANkC;AAAA,MAMlCA,YANkC,qCAMnB,EANmB;AAAA,oBAYhCpB,MAZgC,CAOlCqB,GAPkC;AAAA,MAOlCA,GAPkC,4BAO5B,EAP4B;AAAA,6BAYhCrB,MAZgC,CAQlCsB,YARkC;AAAA,MAQlCA,YARkC,qCAQnB,EARmB;AAAA,sBAYhCtB,MAZgC,CASlCuB,KATkC;AAAA,MASlCA,KATkC,8BAS1B,EAT0B;AAAA,MAUlCtB,QAVkC,GAYhCD,MAZgC,CAUlCC,QAVkC;AAAA,sBAYhCD,MAZgC,CAWlCQ,KAXkC;AAAA,MAWlCA,KAXkC,8BAW1B,SAX0B;AAcpC,MAAMgB,aAAa,GAAG5B,oBAAoB,CAACG,IAAD,CAA1C;AAdoC,MAiBlC0B,OAjBkC,GAyBhCD,aAzBgC,CAiBlCC,OAjBkC;AAAA,MAkBlCC,WAlBkC,GAyBhCF,aAzBgC,CAkBlCE,WAlBkC;AAAA,MAmBlCC,YAnBkC,GAyBhCH,aAzBgC,CAmBlCG,YAnBkC;AAAA,MAoBlCC,cApBkC,GAyBhCJ,aAzBgC,CAoBlCI,cApBkC;AAAA,MAqBlCC,gBArBkC,GAyBhCL,aAzBgC,CAqBlCK,gBArBkC;AAAA,MAsBlCC,SAtBkC,GAyBhCN,aAzBgC,CAsBlCM,SAtBkC;AAAA,MAuBlCC,MAvBkC,GAyBhCP,aAzBgC,CAuBlCO,MAvBkC;AAAA,MAwBlCC,kBAxBkC,GAyBhCR,aAzBgC,CAwBlCQ,kBAxBkC;AA2BpC,MAAMC,kBAAkB,GAAG,CAAC,CAACD,kBAA7B;AACA,MAAME,WAAW,GAAGxC,IAAI,CAACc,KAAD,EAAQ;AAAE2B,IAAAA,KAAK,EAAE;AAAT,GAAR,CAAxB;AACA,MAAMC,WAAW,GAAG1C,IAAI,CAACoC,SAAD,EAAY;AAAEO,IAAAA,SAAS,EAAE,OAAb;AAAsBF,IAAAA,KAAK,EAAE;AAA7B,GAAZ,CAAxB;AACA,MAAMG,QAAQ,GAAG,CAACJ,WAAD,EAAcE,WAAd,CAAjB;AACA,MAAMG,QAAQ,aAAMZ,YAAY,IAC9BF,OADY,gBACCI,gBADD,iBACwBD,cADxB,CAAd;AAGA,MAAIY,cAAc,GAAG9C,IAAI,CAAC6C,QAAD,EAAW;AAAEE,IAAAA,OAAO,EAAE,CAAX;AAAcN,IAAAA,KAAK,EAAE;AAArB,GAAX,CAAzB;AACA,MAAIO,SAAS,GAAG,CAACF,cAAD,CAAhB;AAEA,MAAMG,eAAe,GAAGtB,GAAG,CAACsB,eAA5B;AACA,MAAMC,OAAO,GAAG,CAAC3D,OAAO,CAAC0D,eAAD,CAAR,GACZnD,mBAAmB,CAACmD,eAAD,CADP,GAEZ,EAFJ;AAGA,MAAME,mBAAmB,GAAG,CAAC5D,OAAO,CAAC0D,eAAD,CAApC;AACA,MAAMG,WAAW,GAAGpD,IAAI,CAAC,GAAD,EAAM;AAAEyC,IAAAA,KAAK,EAAE;AAAT,GAAN,CAAxB;AAEA,MAAIY,aAAa,GAAGrD,IAAI,CAACkD,OAAD,EAAU;AAAEH,IAAAA,OAAO,EAAE,CAAX;AAAcN,IAAAA,KAAK,EAAE;AAArB,GAAV,CAAxB;AACA,MAAMa,cAAc,GAAGH,mBAAmB,IAAIZ,kBAA9C;AACA,MAAIgB,QAAQ,GAAGJ,mBAAmB,GAAG,CAACE,aAAD,CAAH,GAAqB,EAAvD;;AAEA,MAAId,kBAAJ,EAAwB;AACtBO,IAAAA,cAAc,GAAG9C,IAAI,CAAC6C,QAAD,EAAW;AAAEJ,MAAAA,KAAK,EAAE;AAAT,KAAX,CAArB;AAEA,QAAMe,iBAAiB,GAAGlB,kBAAkB,KAAK,OAAjD;AACA,QAAMmB,gBAAgB,GACpBnB,kBAAkB,KAAK,OAAvB,GACI,cADJ,GAEIA,kBAAkB,KAAK,IAAvB,GACA,WADA,GAEAA,kBAAkB,KAAK,OAAvB,GACA,cADA,GAEA,EAPN;AASA,QAAMoB,yBAAyB,GAAG1D,IAAI,CAACyD,gBAAD,EAAmB;AACvDd,MAAAA,SAAS,EAAE,OAD4C;AAEvDF,MAAAA,KAAK,EAAEe,iBAAiB,GAAG,mBAAH,GAAyB;AAFM,KAAnB,CAAtC;AAKAR,IAAAA,SAAS,GAAG,CAACF,cAAD,EAAiBY,yBAAjB,CAAZ;AACAL,IAAAA,aAAa,GAAGrD,IAAI,CAACkD,OAAD,EAAU;AAAET,MAAAA,KAAK,EAAE;AAAT,KAAV,CAApB;AAEA,QAAMkB,sBAAsB,GAAGnE,KAAK,CAAC6C,MAAD,EAAS,CAAT,CAApC;AACA,QAAMuB,eAAe,uBAAgBD,sBAAhB,OAArB;AACA,QAAME,mBAAmB,GAAG7D,IAAI,CAAC4D,eAAD,EAAkB;AAChDjB,MAAAA,SAAS,EAAE,OADqC;AAEhDF,MAAAA,KAAK,EAAE;AAFyC,KAAlB,CAAhC;AAKAc,IAAAA,QAAQ,GAAGJ,mBAAmB,GAC1B,CAACE,aAAD,EAAgBQ,mBAAhB,CAD0B,GAE1B,CAACT,WAAD,EAAcS,mBAAd,CAFJ;AAGD;;AAED,MAAMC,cAAc,GAAG9D,IAAI,WACtBR,KAAK,CAACqC,KAAK,CAACkC,MAAP,EAAe,CAAf,CADiB,gBACMvE,KAAK,CAACqC,KAAK,CAACmC,GAAP,EAAY,CAAZ,CADX,GAEzB;AACErB,IAAAA,SAAS,EAAE,OADb;AAEEF,IAAAA,KAAK,EAAE;AAFT,GAFyB,CAA3B;AAOA,MAAMwB,eAAe,GAAGjE,IAAI,CAACoC,SAAD,EAAY;AACtCO,IAAAA,SAAS,EAAE,OAD2B;AAEtCI,IAAAA,OAAO,EAAE,CAF6B;AAGtCN,IAAAA,KAAK,EAAE;AAH+B,GAAZ,CAA5B;AAKA,MAAMyB,UAAU,GAAGlE,IAAI,CAAC,aAAD,EAAgB;AAAEyC,IAAAA,KAAK,EAAE;AAAT,GAAhB,CAAvB;AAEA,MAAM0B,IAAI,GAAGb,cAAc,GACvB,CAACV,QAAD,EAAWI,SAAX,EAAsBO,QAAtB,CADuB,GAEvB,CAACX,QAAD,EAAWI,SAAX,CAFJ;AAIA,MAAMoB,YAAY,GAAGC,MAAM,CAACC,IAAP,CAAYhE,MAAZ,CAArB;AACA,MAAMiE,yBAAyB,GAAG,CAChC,cADgC,EAEhC,WAFgC,EAGhC,aAHgC,EAIhCC,IAJgC,CAI3B,UAAAC,KAAK;AAAA,WAAIL,YAAY,CAACM,QAAb,CAAsBD,KAAtB,CAAJ;AAAA,GAJsB,CAAlC,CApGoC,CA0GpC;;AACA,MAAIF,yBAAJ,EAA+B;AAC7B,QAAMI,mBAAmB,GAAGrE,MAAM,CAACsE,SAAP,GACxBnF,MAAM,CAACa,MAAM,CAACsE,SAAR,CAAN,CACGC,EADH,CACMtE,QADN,EAEGuE,MAFH,CAEU,uBAFV,CADwB,GAIxB,cAJJ;AAKA,QAAMF,SAAS,GAAG5E,IAAI,oBAAa2E,mBAAb,GAAoC;AACxD5B,MAAAA,OAAO,EAAE,CAD+C;AAExDN,MAAAA,KAAK,EAAE;AAFiD,KAApC,CAAtB;AAKA,QAAMsC,qBAAqB,GAAGzE,MAAM,CAAC0E,WAAP,GAC1BvF,MAAM,CAACa,MAAM,CAAC0E,WAAR,CAAN,CACGH,EADH,CACMtE,QADN,EAEGuE,MAFH,CAEU,uBAFV,CAD0B,GAI1B,cAJJ;AAKA,QAAME,WAAW,GAAGhF,IAAI,sBAAe+E,qBAAf,GAAwC;AAC9DhC,MAAAA,OAAO,EAAE,CADqD;AAE9DN,MAAAA,KAAK,EAAE;AAFuD,KAAxC,CAAxB;AAKA,QAAMwC,cAAc,GAAGxF,MAAM,CAACyF,QAAP,CAAgBC,IAAI,CAACC,GAAL,CAAS9E,MAAM,CAAC+E,YAAhB,CAAhB,CAAvB;AACA,QAAMC,IAAI,GAAGH,IAAI,CAACI,KAAL,CAAWN,cAAc,CAACO,MAAf,EAAX,EACVC,QADU,GAEVC,QAFU,CAED,CAFC,EAEE,GAFF,CAAb;AAGA,QAAMC,KAAK,GAAGR,IAAI,CAACI,KAAL,CAAWN,cAAc,CAACU,KAAf,EAAX,EACXF,QADW,GAEXC,QAFW,CAEF,CAFE,EAEC,GAFD,CAAd;AAGA,QAAME,OAAO,GAAGX,cAAc,CAC3BW,OADa,GAEbH,QAFa,GAGbC,QAHa,CAGJ,CAHI,EAGD,GAHC,CAAhB;AAIA,QAAMG,OAAO,GAAGZ,cAAc,CAC3BY,OADa,GAEbJ,QAFa,GAGbC,QAHa,CAGJ,CAHI,EAGD,GAHC,CAAhB;AAIA,QAAMI,qBAAqB,GAAGxF,MAAM,CAAC+E,YAAP,aAExB/E,MAAM,CAAC+E,YAAP,GAAsB,CAAtB,GAA0B,GAA1B,GAAgC,EAFR,SAGvBC,IAHuB,cAGfK,KAHe,cAGNC,OAHM,cAGKC,OAHL,IAI1B,cAJJ;AAKA,QAAMR,YAAY,GAAGrF,IAAI,wCACS8F,qBADT,GAEvB;AACE/C,MAAAA,OAAO,EAAE,CADX;AAEEN,MAAAA,KAAK,EAAE;AAFT,KAFuB,CAAzB;AAQA0B,IAAAA,IAAI,CAAC4B,IAAL,CAAU,CAACnB,SAAD,EAAYxB,WAAZ,CAAV;AACAe,IAAAA,IAAI,CAAC4B,IAAL,CAAU,CAACf,WAAD,EAAc5B,WAAd,CAAV;AACAe,IAAAA,IAAI,CAAC4B,IAAL,CAAU,CAACV,YAAD,EAAejC,WAAf,CAAV;AACD;;AAED,MAAM4C,UAAU,GAAG/F,cAAc,CAAC;AAChCkE,IAAAA,IAAI,EAAJA,IADgC;AAEhC8B,IAAAA,MAAM,EAAE,WAFwB;AAGhCxD,IAAAA,KAAK,EAAE,YAHyB;AAIhCyD,IAAAA,MAAM,EAAE,CAAC,GAAD,EAAM,GAAN,CAJwB;AAKhCC,IAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,EAAV;AALwB,GAAD,CAAjC;AAQA,MAAMC,eAAe,GAAGnG,cAAc,CAAC;AACrCkE,IAAAA,IAAI,EAAE,CAAC,CAACD,UAAD,EAAaJ,cAAb,CAAD,EAA+B,CAACG,eAAD,CAA/B,CAD+B;AAErCgC,IAAAA,MAAM,EAAE,WAF6B;AAGrCC,IAAAA,MAAM,EAAE,CAAC,GAAD,EAAM,GAAN;AAH6B,GAAD,CAAtC;AAMA,MAAMG,QAAQ,GAAGtG,cAAc,CAAC;AAAEoG,IAAAA,MAAM,EAAE,CAAC,CAAD,EAAI,EAAJ,EAAQ,CAAR,EAAW,CAAX;AAAV,GAAD,CAA/B;AACA,MAAMG,WAAW,GAAGvG,cAAc,EAAlC;AAEA,MAAMwG,aAAa,GAAG/E,qBAAqB,GACvC7B,mBAAmB,CAAC8B,SAAD,EAAY;AAAElB,IAAAA,QAAQ,EAARA;AAAF,GAAZ,CADoB,GAEvC,EAFJ;AAIA,MAAMiG,QAAQ,GAAG;AACfC,IAAAA,KAAK,EAAE/G,iBAAiB,CAACsC,WAAW,CAAC0E,KAAb,EAAoB;AAAElF,MAAAA,qBAAqB,EAArBA;AAAF,KAApB,CADT;AAEfmF,IAAAA,cAAc,EAAE/G,oBAAoB,CAAC8B,YAAY,CAACkF,UAAd,EAA0BvG,IAA1B,CAFrB;AAGfwG,IAAAA,cAAc,EAAEjH,oBAAoB,CAACgC,YAAY,CAACgF,UAAd,EAA0BvG,IAA1B;AAHrB,GAAjB;AAMA,MAAMyG,eAAe,GAAGtF,qBAAqB,GACzC,CACE;AACExB,IAAAA,IAAI,EAAE,aADR;AAEEyC,IAAAA,KAAK,EAAE;AACLsE,MAAAA,IAAI,EAAE,QADD;AAELC,MAAAA,UAAU,EAAE;AAFP;AAFT,GADF,EAQEX,QARF,CADyC,GAWzC,EAXJ;AAaA,SAAO/G,OAAO,CAAC2H,KAAR,CAAcT,QAAd,EACJvF,IADI,CACC;AAAA,QAAGwF,KAAH,QAAGA,KAAH;AAAA,QAAUE,cAAV,QAAUA,cAAV;AAAA,QAA0BE,cAA1B,QAA0BA,cAA1B;AAAA,YACJb,UADI,EAEJO,aAFI,SAGDO,eAHC,qBAIDD,cAJC,sBAKDJ,KALC,IAMJJ,QANI,EAOJD,eAPI,EAQJE,WARI,sBASDK,cATC;AAAA,GADD,EAYJvF,KAZI,CAYE,UAAAC,GAAG,EAAI;AACZ,UAAM,IAAIC,KAAJ,iCAAmCD,GAAG,CAACE,OAAvC,EAAN;AACD,GAdI,CAAP;AAeD","sourcesContent":["import Promise from 'bluebird'\nimport { isEmpty, round } from 'lodash'\nimport moment from 'moment-timezone'\n\nimport {\n buildAuditContent,\n buildAuditFollowUps,\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n horizontalLine,\n text,\n twoColumnTable,\n} from '../helpers'\nimport { getAuditEntryDetails } from '../../helpers'\n\n/**\n * buildAuditPdf\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} pdfOptions.flags - flags to conditionally render parts of the pdf\n * @param {object} data - pdf data\n * @param {object} data.entity - audit 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.cloudinaryBaseUrl - cloudinary base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @returns {Promise} returns pdfmake definition object\n */\nexport function buildAuditPdf(pdfOptions, data) {\n const { entity, timezone } = data\n const { flags = {} } = pdfOptions\n\n console.info('buildAuditPdf')\n\n const sequenceId = entity.sequenceId\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n const fileTitle = `Audit Report - ${title}`\n\n return generateContent(data, flags)\n .then(content =>\n generateDefinition({\n content,\n fileTitle,\n sequenceId,\n timestamp,\n timezone,\n type: 'Audit',\n ...pdfOptions,\n })\n )\n .catch(err => {\n throw new Error(`BuildAuditPdfError: ${err.message}`)\n })\n}\n\nfunction generateContent(data, flags) {\n const { rolloutAuditFollowUps } = flags\n const { entity } = data\n\n const {\n followUps = [],\n footerFields = {},\n gps = {},\n headerFields = {},\n score = {},\n timezone,\n title = 'Unknown',\n } = entity\n\n const entityDetails = getAuditEntryDetails(data)\n\n const {\n gpsText,\n groupedData,\n locationText,\n referenceValue,\n timezoneHourTime,\n scoreText,\n target,\n targetServiceLevel,\n } = entityDetails\n\n const renderTargetFields = !!targetServiceLevel\n const headerTitle = text(title, { style: 'title' })\n const headerScore = text(scoreText, { alignment: 'right', style: 'title' })\n const firstRow = [headerTitle, headerScore]\n const subTitle = `${locationText ||\n gpsText} - ${timezoneHourTime} by ${referenceValue}`\n\n let headerSubTitle = text(subTitle, { colSpan: 2, style: 'subTitle' })\n let secondRow = [headerSubTitle]\n\n const reverseGeocoded = gps.reverseGeocoded\n const address = !isEmpty(reverseGeocoded)\n ? getFormattedAddress(reverseGeocoded)\n : ''\n const renderHeaderAddress = !isEmpty(reverseGeocoded)\n const dummyColumn = text(' ', { style: 'small' })\n\n let headerAddress = text(address, { colSpan: 2, style: 'small' })\n const renderThirdRow = renderHeaderAddress || renderTargetFields\n let thirdRow = renderHeaderAddress ? [headerAddress] : []\n\n if (renderTargetFields) {\n headerSubTitle = text(subTitle, { style: 'subTitle' })\n\n const serviceLevelBelow = targetServiceLevel === 'below'\n const serviceLevelText =\n targetServiceLevel === 'above'\n ? 'Above Target'\n : targetServiceLevel === 'on'\n ? 'On Target'\n : targetServiceLevel === 'below'\n ? 'Below Target'\n : ''\n\n const scoreServiceLevelSubTitle = text(serviceLevelText, {\n alignment: 'right',\n style: serviceLevelBelow ? 'serviceLevelBelow' : 'serviceLevelAboveOrOn',\n })\n\n secondRow = [headerSubTitle, scoreServiceLevelSubTitle]\n headerAddress = text(address, { style: 'small' })\n\n const truncatedTargetPercent = round(target, 2)\n const scoreTargetText = `(Target - ${truncatedTargetPercent}%)`\n const scoreTargetSubTitle = text(scoreTargetText, {\n alignment: 'right',\n style: 'subTitle',\n })\n\n thirdRow = renderHeaderAddress\n ? [headerAddress, scoreTargetSubTitle]\n : [dummyColumn, scoreTargetSubTitle]\n }\n\n const scoreBreakdown = text(\n `${round(score.actual, 2)} / ${round(score.max, 2)}`,\n {\n alignment: 'right',\n style: 'totalScore',\n }\n )\n const scorePercentage = text(scoreText, {\n alignment: 'right',\n colSpan: 2,\n style: 'totalAuditScore',\n })\n const scoreTitle = text('Total Score', { style: 'totalScore' })\n\n const body = renderThirdRow\n ? [firstRow, secondRow, thirdRow]\n : [firstRow, secondRow]\n\n const entityFields = Object.keys(entity)\n const formDurationFieldsPresent = [\n 'formDuration',\n 'startedAt',\n 'submittedAt',\n ].some(field => entityFields.includes(field))\n\n // NOTE: stand in for flag rolloutFormDuration\n if (formDurationFieldsPresent) {\n const startedAtInTimezone = entity.startedAt\n ? moment(entity.startedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const startedAt = text(`Started: ${startedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n const momentDuration = moment.duration(Math.abs(entity.formDuration))\n const days = Math.floor(momentDuration.asDays())\n .toString()\n .padStart(2, '0')\n const hours = Math.floor(momentDuration.hours())\n .toString()\n .padStart(2, '0')\n const minutes = momentDuration\n .minutes()\n .toString()\n .padStart(2, '0')\n const seconds = momentDuration\n .seconds()\n .toString()\n .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 colSpan: 2,\n style: 'small',\n }\n )\n\n body.push([startedAt, dummyColumn])\n body.push([submittedAt, dummyColumn])\n body.push([formDuration, dummyColumn])\n }\n\n const titleTable = twoColumnTable({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n widths: ['*', 100],\n margin: [0, 0, 0, 30],\n })\n\n const totalScoreTable = twoColumnTable({\n body: [[scoreTitle, scoreBreakdown], [scorePercentage]],\n layout: 'noBorders',\n widths: ['*', 100],\n })\n\n const hLineTop = horizontalLine({ margin: [0, 10, 0, 0] })\n const hLineBottom = horizontalLine()\n\n const followUpItems = rolloutAuditFollowUps\n ? buildAuditFollowUps(followUps, { timezone })\n : []\n\n const promises = {\n entry: buildAuditContent(groupedData.items, { rolloutAuditFollowUps }),\n footerTemplate: buildTemplateContent(footerFields.formGroups, data),\n headerTemplate: buildTemplateContent(headerFields.formGroups, data),\n }\n\n const auditItemsTitle = rolloutAuditFollowUps\n ? [\n {\n text: 'Audit Items',\n style: {\n font: 'Gotham',\n lineHeight: 1.1,\n },\n },\n hLineTop,\n ]\n : []\n\n return Promise.props(promises)\n .then(({ entry, footerTemplate, headerTemplate }) => [\n titleTable,\n followUpItems,\n ...auditItemsTitle,\n ...headerTemplate,\n ...entry,\n hLineTop,\n totalScoreTable,\n hLineBottom,\n ...footerTemplate,\n ])\n .catch(err => {\n throw new Error(`GenerateContentError: ${err.message}`)\n })\n}\n"],"file":"index.js"}
|
package/lib/pdf/issue/index.js
CHANGED
|
@@ -89,19 +89,20 @@ function generateContent(data) {
|
|
|
89
89
|
|
|
90
90
|
if (formDurationFieldsPresent) {
|
|
91
91
|
var startedAtInTimezone = entity.startedAt ? moment(entity.startedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
|
|
92
|
-
var startedAt = text("Started
|
|
92
|
+
var startedAt = text("Started: ".concat(startedAtInTimezone), {
|
|
93
93
|
style: 'small'
|
|
94
94
|
});
|
|
95
95
|
var submittedAtInTimezone = entity.submittedAt ? moment(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
|
|
96
|
-
var submittedAt = text("Submitted
|
|
96
|
+
var submittedAt = text("Submitted: ".concat(submittedAtInTimezone), {
|
|
97
97
|
style: 'small'
|
|
98
98
|
});
|
|
99
99
|
var momentDuration = moment.duration(Math.abs(entity.formDuration));
|
|
100
|
-
var
|
|
100
|
+
var days = Math.floor(momentDuration.asDays()).toString().padStart(2, '0');
|
|
101
|
+
var hours = Math.floor(momentDuration.hours()).toString().padStart(2, '0');
|
|
101
102
|
var minutes = momentDuration.minutes().toString().padStart(2, '0');
|
|
102
103
|
var seconds = momentDuration.seconds().toString().padStart(2, '0');
|
|
103
|
-
var formattedFormDuration = entity.formDuration ? "".concat(entity.formDuration < 0 ? '-' : '').concat(hours, ":").concat(minutes, ":").concat(seconds) : 'Not recorded';
|
|
104
|
-
var formDuration = text("Form Duration (HH:MM:SS): ".concat(formattedFormDuration), {
|
|
104
|
+
var formattedFormDuration = entity.formDuration ? "".concat(entity.formDuration < 0 ? '-' : '').concat(days, ":").concat(hours, ":").concat(minutes, ":").concat(seconds) : 'Not recorded';
|
|
105
|
+
var formDuration = text("Form Duration (DD:HH:MM:SS): ".concat(formattedFormDuration), {
|
|
105
106
|
style: 'small'
|
|
106
107
|
});
|
|
107
108
|
body.push([startedAt]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/pdf/issue/index.js"],"names":["get","filter","isEmpty","map","moment","buildTemplateContent","generateDefinition","getFormattedAddress","horizontalLine","table","text","threeColumnTable","getIssueDetails","getStatusDetails","getTimezoneAbbr","getTimezoneDatetime","buildIssuePdf","pdfOptions","data","entity","timezone","sequenceId","timestamp","createdAt","title","fileTitle","generateContent","then","content","type","entry","gps","timeline","entityDetails","assigneeNames","durationText","gpsText","locationText","statusColor","statusText","reverseGeocoded","subTitle","headerTitle","style","headerSubTitle","address","headerAddress","body","entityFields","Object","keys","formDurationFieldsPresent","some","field","includes","startedAtInTimezone","startedAt","tz","format","submittedAtInTimezone","submittedAt","momentDuration","duration","Math","abs","formDuration","hours","floor","asHours","toString","padStart","minutes","seconds","formattedFormDuration","push","titleTable","layout","statusLabelText","bold","statusValueText","color","metaTable","durationLabelText","durationValueText","assigneeLabelText","assigneeValueText","timelineTitle","timelineHorizontalLine","timelineTable","createTimelineTable","formGroups","timezoneAbbr","timelineHeaderRow","alignment","statusUpdates","timelineBodyRows","colSpan","item","meta","source","next","firstName","lastName","fullName","isNew","isUpdate","isOpen","statusDetails","nextStatusText","activity","datetime","showTzAbbr"],"mappings":"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","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.cloudinaryBaseUrl - cloudinary 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 */\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).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) {\n const { entity, timezone } = data\n const { entry, gps = {}, timeline = [], title } = entity\n\n const entityDetails = getIssueDetails(data)\n\n const {\n assigneeNames,\n durationText,\n gpsText,\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 entityFields = Object.keys(entity)\n const formDurationFieldsPresent = [\n 'formDuration',\n 'startedAt',\n 'submittedAt',\n ].some(field => entityFields.includes(field))\n\n // NOTE: stand in for flag rolloutFormDuration\n if (formDurationFieldsPresent) {\n const startedAtInTimezone = entity.startedAt\n ? moment(entity.startedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const startedAt = text(`Started At: ${startedAtInTimezone}`, {\n style: 'small',\n })\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted At: ${submittedAtInTimezone}`, {\n style: 'small',\n })\n\n const momentDuration = moment.duration(Math.abs(entity.formDuration))\n const hours = Math.floor(momentDuration.asHours())\n .toString()\n .padStart(2, '0')\n const minutes = momentDuration\n .minutes()\n .toString()\n .padStart(2, '0')\n const seconds = momentDuration\n .seconds()\n .toString()\n .padStart(2, '0')\n const formattedFormDuration = entity.formDuration\n ? `${entity.formDuration < 0 ? '-' : ''}${hours}:${minutes}:${seconds}`\n : 'Not recorded'\n const formDuration = text(\n `Form Duration (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 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"],"file":"index.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/pdf/issue/index.js"],"names":["get","filter","isEmpty","map","moment","buildTemplateContent","generateDefinition","getFormattedAddress","horizontalLine","table","text","threeColumnTable","getIssueDetails","getStatusDetails","getTimezoneAbbr","getTimezoneDatetime","buildIssuePdf","pdfOptions","data","entity","timezone","sequenceId","timestamp","createdAt","title","fileTitle","generateContent","then","content","type","entry","gps","timeline","entityDetails","assigneeNames","durationText","gpsText","locationText","statusColor","statusText","reverseGeocoded","subTitle","headerTitle","style","headerSubTitle","address","headerAddress","body","entityFields","Object","keys","formDurationFieldsPresent","some","field","includes","startedAtInTimezone","startedAt","tz","format","submittedAtInTimezone","submittedAt","momentDuration","duration","Math","abs","formDuration","days","floor","asDays","toString","padStart","hours","minutes","seconds","formattedFormDuration","push","titleTable","layout","statusLabelText","bold","statusValueText","color","metaTable","durationLabelText","durationValueText","assigneeLabelText","assigneeValueText","timelineTitle","timelineHorizontalLine","timelineTable","createTimelineTable","formGroups","timezoneAbbr","timelineHeaderRow","alignment","statusUpdates","timelineBodyRows","colSpan","item","meta","source","next","firstName","lastName","fullName","isNew","isUpdate","isOpen","statusDetails","nextStatusText","activity","datetime","showTzAbbr"],"mappings":"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","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.cloudinaryBaseUrl - cloudinary 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 */\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).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) {\n const { entity, timezone } = data\n const { entry, gps = {}, timeline = [], title } = entity\n\n const entityDetails = getIssueDetails(data)\n\n const {\n assigneeNames,\n durationText,\n gpsText,\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 entityFields = Object.keys(entity)\n const formDurationFieldsPresent = [\n 'formDuration',\n 'startedAt',\n 'submittedAt',\n ].some(field => entityFields.includes(field))\n\n // NOTE: stand in for flag rolloutFormDuration\n if (formDurationFieldsPresent) {\n const startedAtInTimezone = entity.startedAt\n ? moment(entity.startedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const startedAt = text(`Started: ${startedAtInTimezone}`, {\n style: 'small',\n })\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n style: 'small',\n })\n\n const momentDuration = moment.duration(Math.abs(entity.formDuration))\n const days = Math.floor(momentDuration.asDays())\n .toString()\n .padStart(2, '0')\n const hours = Math.floor(momentDuration.hours())\n .toString()\n .padStart(2, '0')\n const minutes = momentDuration\n .minutes()\n .toString()\n .padStart(2, '0')\n const seconds = momentDuration\n .seconds()\n .toString()\n .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 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"],"file":"index.js"}
|
package/lib/pdf/task/index.js
CHANGED
|
@@ -90,19 +90,20 @@ function generateContent(data) {
|
|
|
90
90
|
|
|
91
91
|
if (formDurationFieldsPresent) {
|
|
92
92
|
var startedAtInTimezone = entity.startedAt ? moment(entity.startedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
|
|
93
|
-
var startedAt = text("Started
|
|
93
|
+
var startedAt = text("Started: ".concat(startedAtInTimezone), {
|
|
94
94
|
style: 'small'
|
|
95
95
|
});
|
|
96
96
|
var submittedAtInTimezone = entity.submittedAt ? moment(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
|
|
97
|
-
var submittedAt = text("Submitted
|
|
97
|
+
var submittedAt = text("Submitted: ".concat(submittedAtInTimezone), {
|
|
98
98
|
style: 'small'
|
|
99
99
|
});
|
|
100
100
|
var momentDuration = moment.duration(Math.abs(entity.formDuration));
|
|
101
|
-
var
|
|
101
|
+
var days = Math.floor(momentDuration.asDays()).toString().padStart(2, '0');
|
|
102
|
+
var hours = Math.floor(momentDuration.hours()).toString().padStart(2, '0');
|
|
102
103
|
var minutes = momentDuration.minutes().toString().padStart(2, '0');
|
|
103
104
|
var seconds = momentDuration.seconds().toString().padStart(2, '0');
|
|
104
|
-
var formattedFormDuration = entity.formDuration ? "".concat(entity.formDuration < 0 ? '-' : '').concat(hours, ":").concat(minutes, ":").concat(seconds) : 'Not recorded';
|
|
105
|
-
var formDuration = text("Form Duration (HH:MM:SS): ".concat(formattedFormDuration), {
|
|
105
|
+
var formattedFormDuration = entity.formDuration ? "".concat(entity.formDuration < 0 ? '-' : '').concat(days, ":").concat(hours, ":").concat(minutes, ":").concat(seconds) : 'Not recorded';
|
|
106
|
+
var formDuration = text("Form Duration (DD:HH:MM:SS): ".concat(formattedFormDuration), {
|
|
106
107
|
style: 'small'
|
|
107
108
|
});
|
|
108
109
|
body.push([startedAt]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/pdf/task/index.js"],"names":["isEmpty","moment","buildTemplateContent","generateDefinition","getFormattedAddress","text","table","getTaskEntryDetails","buildTaskPdf","pdfOptions","data","entity","timezone","sequenceId","timestamp","createdAt","title","fileTitle","generateContent","then","content","type","entry","gps","entityDetails","gpsText","locationText","referenceValue","timezoneHourTime","reverseGeocoded","subTitle","headerSubTitle","style","headerTitle","address","headerAddress","body","push","entityFields","Object","keys","formDurationFieldsPresent","some","field","includes","startedAtInTimezone","startedAt","tz","format","submittedAtInTimezone","submittedAt","momentDuration","duration","Math","abs","formDuration","
|
|
1
|
+
{"version":3,"sources":["../../../src/pdf/task/index.js"],"names":["isEmpty","moment","buildTemplateContent","generateDefinition","getFormattedAddress","text","table","getTaskEntryDetails","buildTaskPdf","pdfOptions","data","entity","timezone","sequenceId","timestamp","createdAt","title","fileTitle","generateContent","then","content","type","entry","gps","entityDetails","gpsText","locationText","referenceValue","timezoneHourTime","reverseGeocoded","subTitle","headerSubTitle","style","headerTitle","address","headerAddress","body","push","entityFields","Object","keys","formDurationFieldsPresent","some","field","includes","startedAtInTimezone","startedAt","tz","format","submittedAtInTimezone","submittedAt","momentDuration","duration","Math","abs","formDuration","days","floor","asDays","toString","padStart","hours","minutes","seconds","formattedFormDuration","titleTable","layout","formGroups"],"mappings":"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","sourcesContent":["import { isEmpty } from 'lodash'\nimport moment from 'moment-timezone'\n\nimport {\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n text,\n table,\n} from '../helpers'\nimport { getTaskEntryDetails } from '../../helpers'\n\n/**\n * buildTaskPdf\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 - task 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.cloudinaryBaseUrl - cloudinary 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 */\nexport function buildTaskPdf(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 = `Task Report - ${title}`\n\n return generateContent(data).then(content =>\n generateDefinition({\n content,\n fileTitle,\n sequenceId,\n timestamp,\n timezone,\n type: 'Task',\n ...pdfOptions,\n })\n )\n}\n\nfunction generateContent(data) {\n const { entity, timezone } = data\n\n const { entry, gps = {}, title } = entity\n\n const entityDetails = getTaskEntryDetails(data)\n\n const {\n gpsText,\n locationText,\n referenceValue,\n timezoneHourTime,\n } = entityDetails\n\n const reverseGeocoded = gps.reverseGeocoded\n\n const subTitle = `${locationText ||\n gpsText} - ${timezoneHourTime} by ${referenceValue}`\n const headerSubTitle = text(subTitle, { style: 'subTitle' })\n const headerTitle = text(title, { style: 'title' })\n const address = !isEmpty(reverseGeocoded)\n ? getFormattedAddress(reverseGeocoded)\n : ''\n const headerAddress = text(address, { style: 'small' })\n\n const body = [[headerTitle], [headerSubTitle]]\n\n if (!isEmpty(reverseGeocoded)) {\n body.push([headerAddress])\n }\n\n const entityFields = Object.keys(entity)\n const formDurationFieldsPresent = [\n 'formDuration',\n 'startedAt',\n 'submittedAt',\n ].some(field => entityFields.includes(field))\n\n // NOTE: stand in for flag rolloutFormDuration\n if (formDurationFieldsPresent) {\n const startedAtInTimezone = entity.startedAt\n ? moment(entity.startedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const startedAt = text(`Started: ${startedAtInTimezone}`, {\n style: 'small',\n })\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n style: 'small',\n })\n\n const momentDuration = moment.duration(Math.abs(entity.formDuration))\n const days = Math.floor(momentDuration.asDays())\n .toString()\n .padStart(2, '0')\n const hours = Math.floor(momentDuration.hours())\n .toString()\n .padStart(2, '0')\n const minutes = momentDuration\n .minutes()\n .toString()\n .padStart(2, '0')\n const seconds = momentDuration\n .seconds()\n .toString()\n .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 return buildTemplateContent(entry.formGroups, data).then(entry => [\n titleTable,\n ...entry,\n ])\n}\n"],"file":"index.js"}
|