@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.
Files changed (229) hide show
  1. package/.mise.toml +6 -6
  2. package/CHANGELOG.md +758 -758
  3. package/README.md +1 -1
  4. package/dist/errors/FetchImageError.js +3 -3
  5. package/dist/helpers/fetch-image-for-pdf-generator-service/index.js +7 -7
  6. package/dist/helpers/floatify/index.js +6 -6
  7. package/dist/helpers/get-audit-items-data/index.js +47 -36
  8. package/dist/helpers/validate-url/index.js +4 -4
  9. package/dist/pdf/activity-report/index.js +32 -32
  10. package/dist/pdf/audit/index.js +23 -23
  11. package/dist/pdf/helpers/fields/index.js +47 -27
  12. package/dist/pdf/issue/index.js +23 -23
  13. package/dist/pdf/job/index.js +22 -22
  14. package/dist/pdf/shift-report/index.js +28 -28
  15. package/dist/pdf/task/index.js +23 -23
  16. package/dist/scheduling/generators/occurrenceIntervalsGenerator.js +2 -2
  17. package/dist/scheduling/generators/scheduleIntervalsGenerator.js +2 -2
  18. package/dist/scheduling/generators/serviceIntervalsGenerator.js +2 -2
  19. package/dist/scheduling/helpers/convertToTimezone.js +6 -6
  20. package/dist/scheduling/helpers/generateNonRepeatingSchedule.js +2 -2
  21. package/dist/scheduling/helpers/generateRepeatingSchedule.js +2 -2
  22. package/dist/scheduling/helpers/generateScheduleEnd.js +2 -2
  23. package/dist/scheduling/helpers/hasValidStartAndEnd.js +5 -5
  24. package/dist/scheduling/helpers/intervalCovers.js +6 -6
  25. package/dist/scheduling/helpers/intervalIntersectsEnd.js +6 -6
  26. package/dist/scheduling/helpers/intervalIntersectsStart.js +6 -6
  27. package/dist/scheduling/helpers/intervalOnlyIntersectsEnd.js +6 -6
  28. package/dist/scheduling/helpers/intervalOnlyIntersectsStart.js +6 -6
  29. package/dist/scheduling/helpers/intervalOutside.js +6 -6
  30. package/dist/scheduling/helpers/intervalWithin.js +6 -6
  31. package/dist/scheduling/helpers/mergeIntervals.js +6 -6
  32. package/dist/scheduling/helpers/splitIntervals.js +6 -6
  33. package/dist/scheduling/strategies/getNext.js +2 -2
  34. package/dist/scheduling/strategies/getNextExactDateOfMonth.js +2 -2
  35. package/dist/scheduling/strategies/getNextLastDayOfMonth.js +2 -2
  36. package/dist/scheduling/strategies/getNextLastWeekdayOfMonth.js +2 -2
  37. package/dist/scheduling/strategies/getNextNoRepeat.js +2 -2
  38. package/dist/scheduling/strategies/getNextWeekday.js +2 -2
  39. package/dist/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +2 -2
  40. package/dist/service-hours/__helpers__/calculate-hours.js +4 -4
  41. package/dist/service-hours/__helpers__/isOpen.js +2 -2
  42. package/dist/service-hours/schema.js +4 -4
  43. package/lib/constants.js +12 -6
  44. package/lib/constants.js.map +1 -1
  45. package/lib/errors/DomainError.js +14 -21
  46. package/lib/errors/DomainError.js.map +1 -1
  47. package/lib/errors/FetchImageError.js +17 -24
  48. package/lib/errors/FetchImageError.js.map +1 -1
  49. package/lib/errors/ValidationError.js +30 -36
  50. package/lib/errors/ValidationError.js.map +1 -1
  51. package/lib/errors/index.js +23 -5
  52. package/lib/errors/index.js.map +1 -1
  53. package/lib/helpers/build-fetch-url/index.js +43 -47
  54. package/lib/helpers/build-fetch-url/index.js.map +1 -1
  55. package/lib/helpers/fetch-image/index.js +83 -82
  56. package/lib/helpers/fetch-image/index.js.map +1 -1
  57. package/lib/helpers/fetch-image-for-pdf-generator-service/index.js +168 -243
  58. package/lib/helpers/fetch-image-for-pdf-generator-service/index.js.map +1 -1
  59. package/lib/helpers/fetch-image-for-web/index.js +71 -94
  60. package/lib/helpers/fetch-image-for-web/index.js.map +1 -1
  61. package/lib/helpers/fetch-lighthouse-logo/index.js +36 -61
  62. package/lib/helpers/fetch-lighthouse-logo/index.js.map +1 -1
  63. package/lib/helpers/floatify/index.js +13 -7
  64. package/lib/helpers/floatify/index.js.map +1 -1
  65. package/lib/helpers/get-assignees-full-names/index.js +11 -7
  66. package/lib/helpers/get-assignees-full-names/index.js.map +1 -1
  67. package/lib/helpers/get-audit-entry-details/index.js +42 -32
  68. package/lib/helpers/get-audit-entry-details/index.js.map +1 -1
  69. package/lib/helpers/get-audit-items-data/index.js +104 -83
  70. package/lib/helpers/get-audit-items-data/index.js.map +1 -1
  71. package/lib/helpers/get-geometry-geocoded-string/index.js +10 -5
  72. package/lib/helpers/get-geometry-geocoded-string/index.js.map +1 -1
  73. package/lib/helpers/get-issue-details/index.js +53 -43
  74. package/lib/helpers/get-issue-details/index.js.map +1 -1
  75. package/lib/helpers/get-job-details/index.js +49 -41
  76. package/lib/helpers/get-job-details/index.js.map +1 -1
  77. package/lib/helpers/get-location-reference/index.js +32 -34
  78. package/lib/helpers/get-location-reference/index.js.map +1 -1
  79. package/lib/helpers/get-pretty-duration/index.js +16 -10
  80. package/lib/helpers/get-pretty-duration/index.js.map +1 -1
  81. package/lib/helpers/get-reference-details/index.js +20 -10
  82. package/lib/helpers/get-reference-details/index.js.map +1 -1
  83. package/lib/helpers/get-status-details/index.js +8 -2
  84. package/lib/helpers/get-status-details/index.js.map +1 -1
  85. package/lib/helpers/get-task-entry-details/index.js +32 -23
  86. package/lib/helpers/get-task-entry-details/index.js.map +1 -1
  87. package/lib/helpers/get-timezone-abbr/index.js +11 -4
  88. package/lib/helpers/get-timezone-abbr/index.js.map +1 -1
  89. package/lib/helpers/get-timezone-datetime/index.js +20 -13
  90. package/lib/helpers/get-timezone-datetime/index.js.map +1 -1
  91. package/lib/helpers/get-user-full-name/index.js +9 -3
  92. package/lib/helpers/get-user-full-name/index.js.map +1 -1
  93. package/lib/helpers/get-value-as-percentage/index.js +9 -4
  94. package/lib/helpers/get-value-as-percentage/index.js.map +1 -1
  95. package/lib/helpers/image-validators/index.js +18 -12
  96. package/lib/helpers/image-validators/index.js.map +1 -1
  97. package/lib/helpers/index.js +130 -18
  98. package/lib/helpers/index.js.map +1 -1
  99. package/lib/helpers/validate-url/index.js +11 -5
  100. package/lib/helpers/validate-url/index.js.map +1 -1
  101. package/lib/images/index.js +10 -4
  102. package/lib/images/index.js.map +1 -1
  103. package/lib/index.js +66 -10
  104. package/lib/index.js.map +1 -1
  105. package/lib/pdf/activity-report/index.js +407 -537
  106. package/lib/pdf/activity-report/index.js.map +1 -1
  107. package/lib/pdf/audit/index.js +137 -134
  108. package/lib/pdf/audit/index.js.map +1 -1
  109. package/lib/pdf/fonts/index.js +4 -2
  110. package/lib/pdf/fonts/index.js.map +1 -1
  111. package/lib/pdf/helpers/build-audit-content/index.js +57 -51
  112. package/lib/pdf/helpers/build-audit-content/index.js.map +1 -1
  113. package/lib/pdf/helpers/build-audit-follow-ups/index.js +52 -50
  114. package/lib/pdf/helpers/build-audit-follow-ups/index.js.map +1 -1
  115. package/lib/pdf/helpers/build-location-scans-content/index.js +22 -16
  116. package/lib/pdf/helpers/build-location-scans-content/index.js.map +1 -1
  117. package/lib/pdf/helpers/build-template-content/index.js +52 -51
  118. package/lib/pdf/helpers/build-template-content/index.js.map +1 -1
  119. package/lib/pdf/helpers/default-footer/index.js +38 -35
  120. package/lib/pdf/helpers/default-footer/index.js.map +1 -1
  121. package/lib/pdf/helpers/default-header/index.js +40 -35
  122. package/lib/pdf/helpers/default-header/index.js.map +1 -1
  123. package/lib/pdf/helpers/default-styles/index.js +7 -1
  124. package/lib/pdf/helpers/default-styles/index.js.map +1 -1
  125. package/lib/pdf/helpers/fields/index.js +225 -214
  126. package/lib/pdf/helpers/fields/index.js.map +1 -1
  127. package/lib/pdf/helpers/format-location-address/index.js +14 -8
  128. package/lib/pdf/helpers/format-location-address/index.js.map +1 -1
  129. package/lib/pdf/helpers/generate-definition/index.js +60 -65
  130. package/lib/pdf/helpers/generate-definition/index.js.map +1 -1
  131. package/lib/pdf/helpers/horizontal-line/index.js +14 -14
  132. package/lib/pdf/helpers/horizontal-line/index.js.map +1 -1
  133. package/lib/pdf/helpers/html-transformer/index.js +45 -35
  134. package/lib/pdf/helpers/html-transformer/index.js.map +1 -1
  135. package/lib/pdf/helpers/index.js +194 -15
  136. package/lib/pdf/helpers/index.js.map +1 -1
  137. package/lib/pdf/helpers/parse-value/index.js +10 -4
  138. package/lib/pdf/helpers/parse-value/index.js.map +1 -1
  139. package/lib/pdf/helpers/table/index.js +136 -205
  140. package/lib/pdf/helpers/table/index.js.map +1 -1
  141. package/lib/pdf/helpers/text/index.js +11 -8
  142. package/lib/pdf/helpers/text/index.js.map +1 -1
  143. package/lib/pdf/icons/index.js +8 -2
  144. package/lib/pdf/icons/index.js.map +1 -1
  145. package/lib/pdf/index.js +47 -6
  146. package/lib/pdf/index.js.map +1 -1
  147. package/lib/pdf/issue/index.js +141 -135
  148. package/lib/pdf/issue/index.js.map +1 -1
  149. package/lib/pdf/job/index.js +95 -81
  150. package/lib/pdf/job/index.js.map +1 -1
  151. package/lib/pdf/shift-report/emptyFixtures.js +8 -2
  152. package/lib/pdf/shift-report/emptyFixtures.js.map +1 -1
  153. package/lib/pdf/shift-report/index.js +399 -521
  154. package/lib/pdf/shift-report/index.js.map +1 -1
  155. package/lib/pdf/task/index.js +89 -83
  156. package/lib/pdf/task/index.js.map +1 -1
  157. package/lib/scheduling/generators/index.js +38 -3
  158. package/lib/scheduling/generators/index.js.map +1 -1
  159. package/lib/scheduling/generators/occurrenceIntervalsGenerator.js +44 -37
  160. package/lib/scheduling/generators/occurrenceIntervalsGenerator.js.map +1 -1
  161. package/lib/scheduling/generators/scheduleIntervalsGenerator.js +20 -28
  162. package/lib/scheduling/generators/scheduleIntervalsGenerator.js.map +1 -1
  163. package/lib/scheduling/generators/serviceIntervalsGenerator.js +120 -150
  164. package/lib/scheduling/generators/serviceIntervalsGenerator.js.map +1 -1
  165. package/lib/scheduling/helpers/convertToTimezone.js +18 -11
  166. package/lib/scheduling/helpers/convertToTimezone.js.map +1 -1
  167. package/lib/scheduling/helpers/generateNonRepeatingSchedule.js +57 -95
  168. package/lib/scheduling/helpers/generateNonRepeatingSchedule.js.map +1 -1
  169. package/lib/scheduling/helpers/generateRepeatingSchedule.js +80 -119
  170. package/lib/scheduling/helpers/generateRepeatingSchedule.js.map +1 -1
  171. package/lib/scheduling/helpers/generateScheduleEnd.js +24 -14
  172. package/lib/scheduling/helpers/generateScheduleEnd.js.map +1 -1
  173. package/lib/scheduling/helpers/hasValidStartAndEnd.js +19 -11
  174. package/lib/scheduling/helpers/hasValidStartAndEnd.js.map +1 -1
  175. package/lib/scheduling/helpers/index.js +159 -14
  176. package/lib/scheduling/helpers/index.js.map +1 -1
  177. package/lib/scheduling/helpers/intervalCovers.js +13 -7
  178. package/lib/scheduling/helpers/intervalCovers.js.map +1 -1
  179. package/lib/scheduling/helpers/intervalIntersectsEnd.js +13 -7
  180. package/lib/scheduling/helpers/intervalIntersectsEnd.js.map +1 -1
  181. package/lib/scheduling/helpers/intervalIntersectsStart.js +13 -7
  182. package/lib/scheduling/helpers/intervalIntersectsStart.js.map +1 -1
  183. package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js +15 -10
  184. package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js.map +1 -1
  185. package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js +15 -10
  186. package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js.map +1 -1
  187. package/lib/scheduling/helpers/intervalOutside.js +15 -9
  188. package/lib/scheduling/helpers/intervalOutside.js.map +1 -1
  189. package/lib/scheduling/helpers/intervalWithin.js +13 -7
  190. package/lib/scheduling/helpers/intervalWithin.js.map +1 -1
  191. package/lib/scheduling/helpers/mergeIntervals.js +21 -17
  192. package/lib/scheduling/helpers/mergeIntervals.js.map +1 -1
  193. package/lib/scheduling/helpers/splitIntervals.js +24 -23
  194. package/lib/scheduling/helpers/splitIntervals.js.map +1 -1
  195. package/lib/scheduling/index.js +38 -3
  196. package/lib/scheduling/index.js.map +1 -1
  197. package/lib/scheduling/scheduling.types.js +9 -3
  198. package/lib/scheduling/scheduling.types.js.map +1 -1
  199. package/lib/scheduling/strategies/getNext.js +57 -63
  200. package/lib/scheduling/strategies/getNext.js.map +1 -1
  201. package/lib/scheduling/strategies/getNextExactDateOfMonth.js +47 -56
  202. package/lib/scheduling/strategies/getNextExactDateOfMonth.js.map +1 -1
  203. package/lib/scheduling/strategies/getNextLastDayOfMonth.js +43 -51
  204. package/lib/scheduling/strategies/getNextLastDayOfMonth.js.map +1 -1
  205. package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js +49 -56
  206. package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js.map +1 -1
  207. package/lib/scheduling/strategies/getNextNoRepeat.js +25 -36
  208. package/lib/scheduling/strategies/getNextNoRepeat.js.map +1 -1
  209. package/lib/scheduling/strategies/getNextWeekday.js +47 -79
  210. package/lib/scheduling/strategies/getNextWeekday.js.map +1 -1
  211. package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +52 -58
  212. package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js.map +1 -1
  213. package/lib/scheduling/strategies/index.js +82 -7
  214. package/lib/scheduling/strategies/index.js.map +1 -1
  215. package/lib/schema/index.js +16 -1
  216. package/lib/schema/index.js.map +1 -1
  217. package/lib/schema/schema.js +28 -34
  218. package/lib/schema/schema.js.map +1 -1
  219. package/lib/service-hours/__helpers__/calculate-hours.js +24 -22
  220. package/lib/service-hours/__helpers__/calculate-hours.js.map +1 -1
  221. package/lib/service-hours/__helpers__/isOpen.js +25 -24
  222. package/lib/service-hours/__helpers__/isOpen.js.map +1 -1
  223. package/lib/service-hours/index.js +27 -2
  224. package/lib/service-hours/index.js.map +1 -1
  225. package/lib/service-hours/schema.js +68 -55
  226. package/lib/service-hours/schema.js.map +1 -1
  227. package/package.json +86 -86
  228. package/vitest.config.ts +23 -23
  229. package/vitest.setup.js +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Promise","each","filter","find","groupBy","isEmpty","map","size","sortBy","sum","toString","trim","moment","duration","getLocationReference","getTimezoneAbbr","getTimezoneDatetime","launchIcon","generateDefinition","horizontalLine","summaryFieldsTable","summaryStatTable","summaryWrapperTable","table","text","threeColumnTable","zebraFillColor","LIGHTHOUSE_BASE_URL","buildShiftPdf","_x","_x2","_buildShiftPdf","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","pdfOptions","data","timestamp","timezone","title","content","wrap","_context","prev","next","generateContent","sent","abrupt","_objectSpread","fileTitle","type","stop","_x3","_generateContent","_callee2","activitySection","summarySection","titleTable","_context2","buildActivitySection","buildSummarySection","buildTitleTable","_x4","_buildActivitySection","_callee3","timeline","activitySummary","_context3","buildTimelineTable","buildActivitySummarySection","shift","user","breaks","end","start","headerTitle","style","username","concat","firstName","lastName","headerSubTitle","mTimezoneStart","time","tz","mTimezoneEnd","rangeStart","format","rangeEnd","shiftDuration","getFineDuration","breakDuration","getBreakDuration","header","headerRange","body","layout","audits","events","issues","tasks","eventsByType","enterEventsCount","enter","issuesCount","tasksCount","auditsCount","scansText","issuesText","tasksText","auditsText","scansCountText","issuesCountText","tasksCountText","auditsCountText","scanTable","issueTable","taskTables","auditTable","wrapperTable","_x5","_buildActivitySummarySection","_callee4","settings","enterEvents","auditRows","issueRows","scanRows","taskRows","rows","sortedRows","hLine","activityTable","activitySummarySection","_context4","event","getFormRowData","getScanRowData","_toConsumableArray","buildActivityTable","_x6","_buildActivityTable","_callee6","_ref","timezoneAbbr","activityTableHeader","activityTableRows","activityTableBody","_context6","bold","alignment","_ref6","_callee5","link","location","icon","summaryFields","timezoneHour","iconCell","hasSummaryFields","fieldsTable","activityTableRow","_context5","showTzAbbr","fit","image","fields","push","colSpan","dontBreakRows","headerRow","hLineWidth","paddingLeft","paddingRight","paddingTop","paddingBottom","vLineWidth","widths","_x8","fillColor","collection","_ref2","locations","zones","document","_id","createdAt","_document$entry","entry","_document$title","entity","_ref3","_document$zone","zone","zoneDoc","doc","zoneName","name","_x7","_buildTimelineTable","_callee8","shiftRows","timelineHeaderRow","timelineTable","timelineSection","_context8","getShiftRowData","_ref7","_callee7","_context7","_x9","_ref4","startValues","getShiftValues","startShift","endValues","endShift","shiftData","startBreak","endBreak","value","_ref5","locationName","durationValue","measurement","durationByMeasurement","days","get","hours","minutes","fineDuration","diff"],"sources":["../../../src/pdf/shift-report/index.js"],"sourcesContent":["import Promise from 'bluebird'\nimport {\n each,\n filter,\n find,\n groupBy,\n isEmpty,\n map,\n size,\n sortBy,\n sum,\n toString,\n trim,\n} from 'lodash'\nimport moment, { duration } from 'moment-timezone'\n\nimport {\n getLocationReference,\n getTimezoneAbbr,\n getTimezoneDatetime,\n} from '../../helpers'\nimport { launchIcon } from '../../images'\nimport {\n generateDefinition,\n horizontalLine,\n summaryFieldsTable,\n summaryStatTable,\n summaryWrapperTable,\n table,\n text,\n threeColumnTable,\n zebraFillColor,\n} from '../helpers'\n\nconst LIGHTHOUSE_BASE_URL = 'https://app.lighthouse.io'\n\n/**\n * buildActivityPdf\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 {array} data.audits - audit documents\n * @param {array} data.events - event documents\n * @param {array} data.locations - location documents\n * @param {array} data.issues - issue documents\n * @param {array} data.audits - audit documents\n * @param {object} data.shift - shift document\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 {array} data.tasks - task documents\n * @param {string} data.timestamp - timestamp string\n * @param {string} data.timezone - timezone string\n * @param {array} data.zones - zone documents\n * @param {array} data.user - user document\n * @returns {Promise} returns pdfmake definition object\n */\n\nexport async function buildShiftPdf(pdfOptions, data) {\n const { timestamp, timezone } = data\n\n const title = 'Daily Shift Report'\n const content = await generateContent(data)\n\n return generateDefinition({\n content,\n fileTitle: title,\n timestamp,\n timezone,\n type: 'Shift Report',\n ...pdfOptions,\n })\n}\n\nasync function generateContent(data) {\n const activitySection = await buildActivitySection(data)\n const summarySection = buildSummarySection(data)\n const titleTable = buildTitleTable(data)\n\n return [titleTable, summarySection, activitySection]\n}\n\nasync function buildActivitySection(data) {\n const timeline = await buildTimelineTable(data)\n const activitySummary = await buildActivitySummarySection(data)\n\n return [timeline, activitySummary]\n}\n\nfunction buildTitleTable(data) {\n const { shift, timezone, user } = data\n const { breaks, duration, end, start } = shift\n\n const headerTitle = text('Daily Shift Report', { style: 'title' })\n const username = `${user.firstName} ${user.lastName}` || 'Unknown User'\n\n const headerSubTitle = text(`${username}`, {\n style: 'subTitle',\n })\n\n const mTimezoneStart = moment(start.time).tz(timezone)\n const mTimezoneEnd = moment(end.time).tz(timezone)\n\n const rangeStart = moment(mTimezoneStart).format('MMM DD h:mma')\n const rangeEnd = moment(mTimezoneEnd).format('MMM DD h:mma')\n\n const shiftDuration = getFineDuration(duration)\n const breakDuration = getBreakDuration(breaks)\n\n const header = !breakDuration\n ? `${rangeStart} - ${rangeEnd} | Duration: ${shiftDuration}`\n : `${rangeStart} - ${rangeEnd} | Duration: ${shiftDuration}, Break: ${breakDuration}`\n const headerRange = text(header, {\n style: 'subTitle2',\n })\n\n return table({\n body: [[headerTitle], [headerSubTitle], [headerRange]],\n layout: 'noBorders',\n style: 'titleTable',\n })\n}\n\nfunction buildSummarySection(data) {\n const { audits, events, issues, tasks } = data\n\n const eventsByType = groupBy(events, 'type')\n\n const enterEventsCount = size(eventsByType.enter)\n const issuesCount = size(issues)\n const tasksCount = size(tasks)\n const auditsCount = size(audits)\n\n const scansText = text('SCANS', { style: 'summaryText' })\n const issuesText = text('ISSUES', { style: 'summaryText' })\n const tasksText = text('TASKS', { style: 'summaryText' })\n const auditsText = text('AUDITS', { style: 'summaryText' })\n\n const scansCountText = text(toString(enterEventsCount), {\n style: 'summaryCount',\n })\n const issuesCountText = text(toString(issuesCount), { style: 'summaryCount' })\n const tasksCountText = text(toString(tasksCount), { style: 'summaryCount' })\n const auditsCountText = text(toString(auditsCount), { style: 'summaryCount' })\n\n const scanTable = summaryStatTable({ body: [[scansText], [scansCountText]] })\n const issueTable = summaryStatTable({\n body: [[issuesText], [issuesCountText]],\n })\n const taskTables = summaryStatTable({ body: [[tasksText], [tasksCountText]] })\n const auditTable = summaryStatTable({\n body: [[auditsText], [auditsCountText]],\n })\n\n const wrapperTable = summaryWrapperTable({\n body: [[scanTable, issueTable, taskTables, auditTable]],\n })\n\n return wrapperTable\n}\n\nasync function buildActivitySummarySection(data) {\n const { audits, events, issues, settings, tasks, timezone } = data\n\n const enterEvents = filter(events, (event) => event.type === 'enter')\n\n const auditRows = map(audits, getFormRowData('audits', data))\n const issueRows = map(issues, getFormRowData('issues', data))\n const scanRows = map(enterEvents, getScanRowData(data))\n const taskRows = map(tasks, getFormRowData('tasks', data))\n\n const rows = [...auditRows, ...issueRows, ...scanRows, ...taskRows]\n const sortedRows = sortBy(rows, ['timestamp'], ['asc'])\n const title = text('Activity Summary', { style: 'summarySectionHeader' })\n\n const header = table({\n body: [[title]],\n layout: 'noBorders',\n style: 'summaryHeaderTable',\n })\n\n const hLine = horizontalLine()\n const activityTable = await buildActivityTable({\n rows: sortedRows,\n settings,\n timezone,\n })\n const activitySummarySection = [header, hLine, activityTable]\n\n return activitySummarySection\n}\n\nasync function buildActivityTable({ rows, settings, timezone }) {\n const timezoneAbbr = getTimezoneAbbr(timezone)\n\n const activityTableHeader = [\n text('Activity', { bold: true }),\n { text: '' },\n text('Location', { bold: true }),\n text(`Timestamp (${timezoneAbbr})`, { alignment: 'right', bold: true }),\n ]\n\n const activityTableRows = await Promise.map(rows, async function (data) {\n const { link, location, icon, summaryFields, timestamp, title } = data\n\n const timezoneHour = getTimezoneDatetime({\n format: 'ddd DD h:mm a',\n showTzAbbr: false,\n timestamp,\n timezone,\n })\n\n const iconCell = icon\n ? { alignment: 'center', fit: [8, 8], image: icon, link }\n : { text: '' }\n\n const rows = [\n [\n text(title, { link }),\n iconCell,\n text(location, { link }),\n text(timezoneHour, { alignment: 'right', link }),\n ],\n ]\n\n const hasSummaryFields = !isEmpty(summaryFields)\n\n if (hasSummaryFields) {\n const fieldsTable = await summaryFieldsTable({\n fields: summaryFields,\n settings,\n timezone,\n })\n rows.push([fieldsTable])\n }\n\n const activityTableRow = [\n table({\n body: [...rows],\n colSpan: 5,\n dontBreakRows: true,\n headerRow: 0,\n layout: {\n hLineWidth: () => 0,\n paddingLeft: () => 0,\n paddingRight: () => 0,\n paddingTop: () => 5,\n paddingBottom: () => 5,\n vLineWidth: () => 0,\n },\n widths: [120, 25, 200, 110, '*'],\n }),\n ]\n\n return activityTableRow\n })\n\n const activityTableBody = isEmpty(activityTableRows)\n ? [[text('No other activity', { colSpan: 4 })]]\n : activityTableRows\n\n const activityTable = table({\n body: [activityTableHeader, ...activityTableBody],\n dontBreakRows: true,\n layout: {\n hLineWidth: () => 0,\n fillColor: zebraFillColor,\n paddingLeft: () => 5,\n paddingRight: () => 5,\n paddingTop: () => 5,\n paddingBottom: () => 5,\n vLineWidth: () => 0,\n },\n widths: [110, 15, 230, 80, '*'],\n })\n\n return activityTable\n}\n\nfunction getFormRowData(collection, { locations, zones }) {\n return (document) => {\n const { _id, createdAt, entry = {}, title = 'Unknown' } = document\n\n const location = getLocationReference({\n entity: document,\n locations,\n zones,\n })\n\n const link = `${LIGHTHOUSE_BASE_URL}/reports/${collection}/${_id}`\n const timestamp = createdAt\n\n const summaryFields = entry.summaryFields || []\n\n return {\n icon: launchIcon,\n location,\n link,\n summaryFields,\n timestamp,\n title,\n }\n }\n}\n\nfunction getScanRowData({ zones }) {\n return (document) => {\n const { timestamp, zone = '' } = document\n\n const zoneDoc =\n zone && find(zones, (doc) => doc._id.toString() === zone.toString())\n\n const zoneName = zoneDoc && zoneDoc.name\n const location = zoneName || 'Unknown Location'\n\n const title = 'Location Scan'\n\n return {\n location,\n timestamp,\n title,\n }\n }\n}\n\nasync function buildTimelineTable(data) {\n const { timezone } = data\n const timezoneAbbr = getTimezoneAbbr(timezone)\n\n const shiftRows = getShiftRowData(data)\n\n const sortedRows = sortBy(shiftRows, ['timestamp'], ['asc'])\n const timeline = await Promise.map(sortedRows, async function (data) {\n const { location, timestamp, title } = data\n\n const timezoneHour = getTimezoneDatetime({\n format: 'ddd DD h:mm a',\n showTzAbbr: false,\n timestamp,\n timezone,\n })\n\n const rows = [\n text(title),\n text(location),\n text(timezoneHour, { alignment: 'right' }),\n ]\n\n return rows\n })\n\n const timelineHeaderRow = [\n text('Activity', { bold: true }),\n text('Location', { bold: true }),\n text(`Timestamp (${timezoneAbbr})`, { alignment: 'right', bold: true }),\n ]\n\n const timelineTable = threeColumnTable({\n body: [timelineHeaderRow, ...timeline],\n })\n\n const title = text('Timeline', { style: 'timelineTitle' })\n\n const header = table({\n body: [[title]],\n layout: 'noBorders',\n style: 'summaryHeaderTable',\n })\n\n const hLine = horizontalLine()\n\n const timelineSection = [header, hLine, timelineTable]\n\n return timelineSection\n}\n\nfunction getShiftRowData({ locations, shift, zones }) {\n const { breaks, end, start } = shift\n\n const startValues = getShiftValues(start, { locations, shift, zones })\n const startShift = { title: 'Shift Started', ...startValues }\n const endValues = getShiftValues(end, { locations, shift, zones })\n const endShift = { title: 'Shift Ended', ...endValues }\n\n const shiftData = [startShift, endShift]\n\n each(breaks, function (data) {\n const { end, start } = data\n const startValues = getShiftValues(start, { locations, shift, zones })\n const startBreak = { title: 'Break Started', ...startValues }\n const endValues = getShiftValues(end, { locations, shift, zones })\n const endBreak = { title: 'Break Ended', ...endValues }\n\n shiftData.push(startBreak)\n shiftData.push(endBreak)\n })\n\n return shiftData\n}\n\nfunction getShiftValues(value, { locations, shift, zones }) {\n const locationName = getLocationReference({\n entity: value,\n locations,\n zones,\n })\n\n const location =\n locationName === 'Unknown Location'\n ? getLocationReference({\n entity: shift,\n locations,\n zones,\n })\n : locationName\n\n return {\n timestamp: value.time,\n location,\n }\n}\n\nexport function getFineDuration(durationValue) {\n const measurement = 'milliseconds'\n const durationByMeasurement = duration(durationValue, measurement)\n const days = durationByMeasurement.get('days')\n const hours = durationByMeasurement.get('hours')\n const minutes = durationByMeasurement.get('minutes')\n let fineDuration = ''\n fineDuration += days !== 0 ? days + 'd ' : ''\n fineDuration += hours !== 0 ? hours + 'h ' : ''\n fineDuration += minutes !== 0 ? minutes + 'm' : ''\n\n return trim(fineDuration)\n}\n\nfunction getBreakDuration(breaks) {\n const duration = sum(\n map(breaks, function (data) {\n const { end, start } = data\n const endBreak = moment(end.time)\n const startBreak = moment(start.time)\n const breakDuration = endBreak.diff(startBreak)\n\n return breakDuration\n })\n )\n\n const breakDuration = getFineDuration(duration)\n\n return breakDuration\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_bluebird","_interopRequireDefault","require","_lodash","_momentTimezone","_interopRequireWildcard","_helpers","_images","_helpers2","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","LIGHTHOUSE_BASE_URL","buildShiftPdf","pdfOptions","data","timestamp","timezone","title","content","generateContent","generateDefinition","fileTitle","type","activitySection","buildActivitySection","summarySection","buildSummarySection","titleTable","buildTitleTable","timeline","buildTimelineTable","activitySummary","buildActivitySummarySection","shift","user","breaks","duration","end","start","headerTitle","text","style","username","firstName","lastName","headerSubTitle","mTimezoneStart","moment","time","tz","mTimezoneEnd","rangeStart","format","rangeEnd","shiftDuration","getFineDuration","breakDuration","getBreakDuration","header","headerRange","table","body","layout","audits","events","issues","tasks","eventsByType","groupBy","enterEventsCount","size","enter","issuesCount","tasksCount","auditsCount","scansText","issuesText","tasksText","auditsText","scansCountText","toString","issuesCountText","tasksCountText","auditsCountText","scanTable","summaryStatTable","issueTable","taskTables","auditTable","wrapperTable","summaryWrapperTable","settings","enterEvents","filter","event","auditRows","map","getFormRowData","issueRows","scanRows","getScanRowData","taskRows","rows","sortedRows","sortBy","hLine","horizontalLine","activityTable","buildActivityTable","activitySummarySection","timezoneAbbr","getTimezoneAbbr","activityTableHeader","bold","alignment","activityTableRows","Promise","link","location","icon","summaryFields","timezoneHour","getTimezoneDatetime","showTzAbbr","iconCell","fit","image","hasSummaryFields","isEmpty","fieldsTable","summaryFieldsTable","fields","push","activityTableRow","colSpan","dontBreakRows","headerRow","hLineWidth","paddingLeft","paddingRight","paddingTop","paddingBottom","vLineWidth","widths","activityTableBody","fillColor","zebraFillColor","collection","locations","zones","document","_id","createdAt","entry","getLocationReference","entity","launchIcon","zone","zoneDoc","find","doc","zoneName","name","shiftRows","getShiftRowData","timelineHeaderRow","timelineTable","threeColumnTable","timelineSection","startValues","getShiftValues","startShift","endValues","endShift","shiftData","each","startBreak","endBreak","value","locationName","durationValue","measurement","durationByMeasurement","days","hours","minutes","fineDuration","trim","sum","diff"],"sources":["../../../src/pdf/shift-report/index.js"],"sourcesContent":["import Promise from 'bluebird'\r\nimport {\r\n each,\r\n filter,\r\n find,\r\n groupBy,\r\n isEmpty,\r\n map,\r\n size,\r\n sortBy,\r\n sum,\r\n toString,\r\n trim,\r\n} from 'lodash'\r\nimport moment, { duration } from 'moment-timezone'\r\n\r\nimport {\r\n getLocationReference,\r\n getTimezoneAbbr,\r\n getTimezoneDatetime,\r\n} from '../../helpers'\r\nimport { launchIcon } from '../../images'\r\nimport {\r\n generateDefinition,\r\n horizontalLine,\r\n summaryFieldsTable,\r\n summaryStatTable,\r\n summaryWrapperTable,\r\n table,\r\n text,\r\n threeColumnTable,\r\n zebraFillColor,\r\n} from '../helpers'\r\n\r\nconst LIGHTHOUSE_BASE_URL = 'https://app.lighthouse.io'\r\n\r\n/**\r\n * buildActivityPdf\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 {array} data.audits - audit documents\r\n * @param {array} data.events - event documents\r\n * @param {array} data.locations - location documents\r\n * @param {array} data.issues - issue documents\r\n * @param {array} data.audits - audit documents\r\n * @param {object} data.shift - shift document\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 {array} data.tasks - task documents\r\n * @param {string} data.timestamp - timestamp string\r\n * @param {string} data.timezone - timezone string\r\n * @param {array} data.zones - zone documents\r\n * @param {array} data.user - user document\r\n * @returns {Promise} returns pdfmake definition object\r\n */\r\n\r\nexport async function buildShiftPdf(pdfOptions, data) {\r\n const { timestamp, timezone } = data\r\n\r\n const title = 'Daily Shift Report'\r\n const content = await generateContent(data)\r\n\r\n return generateDefinition({\r\n content,\r\n fileTitle: title,\r\n timestamp,\r\n timezone,\r\n type: 'Shift Report',\r\n ...pdfOptions,\r\n })\r\n}\r\n\r\nasync function generateContent(data) {\r\n const activitySection = await buildActivitySection(data)\r\n const summarySection = buildSummarySection(data)\r\n const titleTable = buildTitleTable(data)\r\n\r\n return [titleTable, summarySection, activitySection]\r\n}\r\n\r\nasync function buildActivitySection(data) {\r\n const timeline = await buildTimelineTable(data)\r\n const activitySummary = await buildActivitySummarySection(data)\r\n\r\n return [timeline, activitySummary]\r\n}\r\n\r\nfunction buildTitleTable(data) {\r\n const { shift, timezone, user } = data\r\n const { breaks, duration, end, start } = shift\r\n\r\n const headerTitle = text('Daily Shift Report', { style: 'title' })\r\n const username = `${user.firstName} ${user.lastName}` || 'Unknown User'\r\n\r\n const headerSubTitle = text(`${username}`, {\r\n style: 'subTitle',\r\n })\r\n\r\n const mTimezoneStart = moment(start.time).tz(timezone)\r\n const mTimezoneEnd = moment(end.time).tz(timezone)\r\n\r\n const rangeStart = moment(mTimezoneStart).format('MMM DD h:mma')\r\n const rangeEnd = moment(mTimezoneEnd).format('MMM DD h:mma')\r\n\r\n const shiftDuration = getFineDuration(duration)\r\n const breakDuration = getBreakDuration(breaks)\r\n\r\n const header = !breakDuration\r\n ? `${rangeStart} - ${rangeEnd} | Duration: ${shiftDuration}`\r\n : `${rangeStart} - ${rangeEnd} | Duration: ${shiftDuration}, Break: ${breakDuration}`\r\n const headerRange = text(header, {\r\n style: 'subTitle2',\r\n })\r\n\r\n return table({\r\n body: [[headerTitle], [headerSubTitle], [headerRange]],\r\n layout: 'noBorders',\r\n style: 'titleTable',\r\n })\r\n}\r\n\r\nfunction buildSummarySection(data) {\r\n const { audits, events, issues, tasks } = data\r\n\r\n const eventsByType = groupBy(events, 'type')\r\n\r\n const enterEventsCount = size(eventsByType.enter)\r\n const issuesCount = size(issues)\r\n const tasksCount = size(tasks)\r\n const auditsCount = size(audits)\r\n\r\n const scansText = text('SCANS', { style: 'summaryText' })\r\n const issuesText = text('ISSUES', { style: 'summaryText' })\r\n const tasksText = text('TASKS', { style: 'summaryText' })\r\n const auditsText = text('AUDITS', { style: 'summaryText' })\r\n\r\n const scansCountText = text(toString(enterEventsCount), {\r\n style: 'summaryCount',\r\n })\r\n const issuesCountText = text(toString(issuesCount), { style: 'summaryCount' })\r\n const tasksCountText = text(toString(tasksCount), { style: 'summaryCount' })\r\n const auditsCountText = text(toString(auditsCount), { style: 'summaryCount' })\r\n\r\n const scanTable = summaryStatTable({ body: [[scansText], [scansCountText]] })\r\n const issueTable = summaryStatTable({\r\n body: [[issuesText], [issuesCountText]],\r\n })\r\n const taskTables = summaryStatTable({ body: [[tasksText], [tasksCountText]] })\r\n const auditTable = summaryStatTable({\r\n body: [[auditsText], [auditsCountText]],\r\n })\r\n\r\n const wrapperTable = summaryWrapperTable({\r\n body: [[scanTable, issueTable, taskTables, auditTable]],\r\n })\r\n\r\n return wrapperTable\r\n}\r\n\r\nasync function buildActivitySummarySection(data) {\r\n const { audits, events, issues, settings, tasks, timezone } = data\r\n\r\n const enterEvents = filter(events, event => event.type === 'enter')\r\n\r\n const auditRows = map(audits, getFormRowData('audits', data))\r\n const issueRows = map(issues, getFormRowData('issues', data))\r\n const scanRows = map(enterEvents, getScanRowData(data))\r\n const taskRows = map(tasks, getFormRowData('tasks', data))\r\n\r\n const rows = [...auditRows, ...issueRows, ...scanRows, ...taskRows]\r\n const sortedRows = sortBy(rows, ['timestamp'], ['asc'])\r\n const title = text('Activity Summary', { style: 'summarySectionHeader' })\r\n\r\n const header = table({\r\n body: [[title]],\r\n layout: 'noBorders',\r\n style: 'summaryHeaderTable',\r\n })\r\n\r\n const hLine = horizontalLine()\r\n const activityTable = await buildActivityTable({\r\n rows: sortedRows,\r\n settings,\r\n timezone,\r\n })\r\n const activitySummarySection = [header, hLine, activityTable]\r\n\r\n return activitySummarySection\r\n}\r\n\r\nasync function buildActivityTable({ rows, settings, timezone }) {\r\n const timezoneAbbr = getTimezoneAbbr(timezone)\r\n\r\n const activityTableHeader = [\r\n text('Activity', { bold: true }),\r\n { text: '' },\r\n text('Location', { bold: true }),\r\n text(`Timestamp (${timezoneAbbr})`, { alignment: 'right', bold: true }),\r\n ]\r\n\r\n const activityTableRows = await Promise.map(rows, async function(data) {\r\n const { link, location, icon, summaryFields, timestamp, title } = data\r\n\r\n const timezoneHour = getTimezoneDatetime({\r\n format: 'ddd DD h:mm a',\r\n showTzAbbr: false,\r\n timestamp,\r\n timezone,\r\n })\r\n\r\n const iconCell = icon\r\n ? { alignment: 'center', fit: [8, 8], image: icon, link }\r\n : { text: '' }\r\n\r\n const rows = [\r\n [\r\n text(title, { link }),\r\n iconCell,\r\n text(location, { link }),\r\n text(timezoneHour, { alignment: 'right', link }),\r\n ],\r\n ]\r\n\r\n const hasSummaryFields = !isEmpty(summaryFields)\r\n\r\n if (hasSummaryFields) {\r\n const fieldsTable = await summaryFieldsTable({\r\n fields: summaryFields,\r\n settings,\r\n timezone,\r\n })\r\n rows.push([fieldsTable])\r\n }\r\n\r\n const activityTableRow = [\r\n table({\r\n body: [...rows],\r\n colSpan: 5,\r\n dontBreakRows: true,\r\n headerRow: 0,\r\n layout: {\r\n hLineWidth: () => 0,\r\n paddingLeft: () => 0,\r\n paddingRight: () => 0,\r\n paddingTop: () => 5,\r\n paddingBottom: () => 5,\r\n vLineWidth: () => 0,\r\n },\r\n widths: [120, 25, 200, 110, '*'],\r\n }),\r\n ]\r\n\r\n return activityTableRow\r\n })\r\n\r\n const activityTableBody = isEmpty(activityTableRows)\r\n ? [[text('No other activity', { colSpan: 4 })]]\r\n : activityTableRows\r\n\r\n const activityTable = table({\r\n body: [activityTableHeader, ...activityTableBody],\r\n dontBreakRows: true,\r\n layout: {\r\n hLineWidth: () => 0,\r\n fillColor: zebraFillColor,\r\n paddingLeft: () => 5,\r\n paddingRight: () => 5,\r\n paddingTop: () => 5,\r\n paddingBottom: () => 5,\r\n vLineWidth: () => 0,\r\n },\r\n widths: [110, 15, 230, 80, '*'],\r\n })\r\n\r\n return activityTable\r\n}\r\n\r\nfunction getFormRowData(collection, { locations, zones }) {\r\n return document => {\r\n const { _id, createdAt, entry = {}, title = 'Unknown' } = document\r\n\r\n const location = getLocationReference({\r\n entity: document,\r\n locations,\r\n zones,\r\n })\r\n\r\n const link = `${LIGHTHOUSE_BASE_URL}/reports/${collection}/${_id}`\r\n const timestamp = createdAt\r\n\r\n const summaryFields = entry.summaryFields || []\r\n\r\n return {\r\n icon: launchIcon,\r\n location,\r\n link,\r\n summaryFields,\r\n timestamp,\r\n title,\r\n }\r\n }\r\n}\r\n\r\nfunction getScanRowData({ zones }) {\r\n return document => {\r\n const { timestamp, zone = '' } = document\r\n\r\n const zoneDoc =\r\n zone && find(zones, doc => doc._id.toString() === zone.toString())\r\n\r\n const zoneName = zoneDoc && zoneDoc.name\r\n const location = zoneName || 'Unknown Location'\r\n\r\n const title = 'Location Scan'\r\n\r\n return {\r\n location,\r\n timestamp,\r\n title,\r\n }\r\n }\r\n}\r\n\r\nasync function buildTimelineTable(data) {\r\n const { timezone } = data\r\n const timezoneAbbr = getTimezoneAbbr(timezone)\r\n\r\n const shiftRows = getShiftRowData(data)\r\n\r\n const sortedRows = sortBy(shiftRows, ['timestamp'], ['asc'])\r\n const timeline = await Promise.map(sortedRows, async function(data) {\r\n const { location, timestamp, title } = data\r\n\r\n const timezoneHour = getTimezoneDatetime({\r\n format: 'ddd DD h:mm a',\r\n showTzAbbr: false,\r\n timestamp,\r\n timezone,\r\n })\r\n\r\n const rows = [\r\n text(title),\r\n text(location),\r\n text(timezoneHour, { alignment: 'right' }),\r\n ]\r\n\r\n return rows\r\n })\r\n\r\n const timelineHeaderRow = [\r\n text('Activity', { bold: true }),\r\n text('Location', { bold: true }),\r\n text(`Timestamp (${timezoneAbbr})`, { alignment: 'right', bold: true }),\r\n ]\r\n\r\n const timelineTable = threeColumnTable({\r\n body: [timelineHeaderRow, ...timeline],\r\n })\r\n\r\n const title = text('Timeline', { style: 'timelineTitle' })\r\n\r\n const header = table({\r\n body: [[title]],\r\n layout: 'noBorders',\r\n style: 'summaryHeaderTable',\r\n })\r\n\r\n const hLine = horizontalLine()\r\n\r\n const timelineSection = [header, hLine, timelineTable]\r\n\r\n return timelineSection\r\n}\r\n\r\nfunction getShiftRowData({ locations, shift, zones }) {\r\n const { breaks, end, start } = shift\r\n\r\n const startValues = getShiftValues(start, { locations, shift, zones })\r\n const startShift = { title: 'Shift Started', ...startValues }\r\n const endValues = getShiftValues(end, { locations, shift, zones })\r\n const endShift = { title: 'Shift Ended', ...endValues }\r\n\r\n const shiftData = [startShift, endShift]\r\n\r\n each(breaks, function(data) {\r\n const { end, start } = data\r\n const startValues = getShiftValues(start, { locations, shift, zones })\r\n const startBreak = { title: 'Break Started', ...startValues }\r\n const endValues = getShiftValues(end, { locations, shift, zones })\r\n const endBreak = { title: 'Break Ended', ...endValues }\r\n\r\n shiftData.push(startBreak)\r\n shiftData.push(endBreak)\r\n })\r\n\r\n return shiftData\r\n}\r\n\r\nfunction getShiftValues(value, { locations, shift, zones }) {\r\n const locationName = getLocationReference({\r\n entity: value,\r\n locations,\r\n zones,\r\n })\r\n\r\n const location =\r\n locationName === 'Unknown Location'\r\n ? getLocationReference({\r\n entity: shift,\r\n locations,\r\n zones,\r\n })\r\n : locationName\r\n\r\n return {\r\n timestamp: value.time,\r\n location,\r\n }\r\n}\r\n\r\nexport function getFineDuration(durationValue) {\r\n const measurement = 'milliseconds'\r\n const durationByMeasurement = duration(durationValue, measurement)\r\n const days = durationByMeasurement.get('days')\r\n const hours = durationByMeasurement.get('hours')\r\n const minutes = durationByMeasurement.get('minutes')\r\n let fineDuration = ''\r\n fineDuration += days !== 0 ? days + 'd ' : ''\r\n fineDuration += hours !== 0 ? hours + 'h ' : ''\r\n fineDuration += minutes !== 0 ? minutes + 'm' : ''\r\n\r\n return trim(fineDuration)\r\n}\r\n\r\nfunction getBreakDuration(breaks) {\r\n const duration = sum(\r\n map(breaks, function(data) {\r\n const { end, start } = data\r\n const endBreak = moment(end.time)\r\n const startBreak = moment(start.time)\r\n const breakDuration = endBreak.diff(startBreak)\r\n\r\n return breakDuration\r\n })\r\n )\r\n\r\n const breakDuration = getFineDuration(duration)\r\n\r\n return breakDuration\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,113 +1,119 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
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 { isEmpty } from 'lodash';
6
- import moment from 'moment-timezone';
7
- import { buildTemplateContent, generateDefinition, getFormattedAddress, text, table } from '../helpers';
8
- import { getTaskEntryDetails } from '../../helpers';
1
+ "use strict";
9
2
 
10
- /**
11
- * buildTaskPdf
12
- *
13
- * @param {object} pdfOptions - the pdf options
14
- * @param {string} pdfOptions.fileTitle - pdf file title
15
- * @param {function} pdfOptions.footer - function executed to generate footer
16
- * @param {function} pdfOptions.header - function executed to generate header
17
- * @param {string} pdfOptions.logoUrl - pdf logo url
18
- * @param {array} pdfOptions.pageMargins - pdf page margins
19
- * @param {string} pdfOptions.pageOrientation - pdf page orientation
20
- * @param {string} pdfOptions.pageSize - pdf page size
21
- * @param {object} pdfOptions.styles - pdf styles
22
- * @param {object} pdfOptions.title - pdf title
23
- * @param {object} data - pdf data
24
- * @param {object} data.entity - task document
25
- * @param {object} data.locations - locations documents
26
- * @param {object} data.settings - settings properties
27
- * @param {string} data.settings.awsS3BaseUrl - aws S3 base url
28
- * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url
29
- * @param {string} data.timezone - timezone string
30
- * @param {object} data.users - application user documents
31
- * @param {object} data.zones - zone documents
32
- * @returns {Promise} returns pdfmake definition object
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.buildTaskPdf = buildTaskPdf;
8
+ var _lodash = require("lodash");
9
+ var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
10
+ var _helpers = require("../helpers");
11
+ var _helpers2 = require("../../helpers");
12
+ /**
13
+ * buildTaskPdf
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 - task 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
- export function buildTaskPdf(pdfOptions, data) {
35
- var entity = data.entity,
36
- timezone = data.timezone;
37
- var sequenceId = entity.sequenceId;
38
- var timestamp = entity.createdAt;
39
- var title = entity.title || 'Unknown';
40
- var fileTitle = "Task Report - ".concat(title);
41
- return generateContent(data).then(function (content) {
42
- return generateDefinition(_objectSpread({
43
- content: content,
44
- fileTitle: fileTitle,
45
- sequenceId: sequenceId,
46
- timestamp: timestamp,
47
- timezone: timezone,
48
- type: 'Task'
49
- }, pdfOptions));
50
- });
36
+ function buildTaskPdf(pdfOptions, data) {
37
+ const {
38
+ entity,
39
+ timezone
40
+ } = data;
41
+ const sequenceId = entity.sequenceId;
42
+ const timestamp = entity.createdAt;
43
+ const title = entity.title || 'Unknown';
44
+ const fileTitle = `Task Report - ${title}`;
45
+ return generateContent(data).then(content => (0, _helpers.generateDefinition)({
46
+ content,
47
+ fileTitle,
48
+ sequenceId,
49
+ timestamp,
50
+ timezone,
51
+ type: 'Task',
52
+ ...pdfOptions
53
+ }));
51
54
  }
52
55
  function generateContent(data) {
53
- var entity = data.entity,
54
- timezone = data.timezone;
55
- var entry = entity.entry,
56
- _entity$gps = entity.gps,
57
- gps = _entity$gps === void 0 ? {} : _entity$gps,
58
- title = entity.title;
59
- var entityDetails = getTaskEntryDetails(data);
60
- var gpsText = entityDetails.gpsText,
61
- locationText = entityDetails.locationText,
62
- referenceValue = entityDetails.referenceValue,
63
- timezoneHourTime = entityDetails.timezoneHourTime;
64
- var reverseGeocoded = gps.reverseGeocoded;
65
- var subTitle = "".concat(locationText || gpsText, " - ").concat(timezoneHourTime, " by ").concat(referenceValue);
66
- var headerSubTitle = text(subTitle, {
56
+ const {
57
+ entity,
58
+ timezone
59
+ } = data;
60
+ const {
61
+ entry,
62
+ gps = {},
63
+ title
64
+ } = entity;
65
+ const entityDetails = (0, _helpers2.getTaskEntryDetails)(data);
66
+ const {
67
+ gpsText,
68
+ locationText,
69
+ referenceValue,
70
+ timezoneHourTime
71
+ } = entityDetails;
72
+ const reverseGeocoded = gps.reverseGeocoded;
73
+ const subTitle = `${locationText || gpsText} - ${timezoneHourTime} by ${referenceValue}`;
74
+ const headerSubTitle = (0, _helpers.text)(subTitle, {
67
75
  style: 'subTitle'
68
76
  });
69
- var headerTitle = text(title, {
77
+ const headerTitle = (0, _helpers.text)(title, {
70
78
  style: 'title'
71
79
  });
72
- var address = !isEmpty(reverseGeocoded) ? getFormattedAddress(reverseGeocoded) : '';
73
- var headerAddress = text(address, {
80
+ const address = !(0, _lodash.isEmpty)(reverseGeocoded) ? (0, _helpers.getFormattedAddress)(reverseGeocoded) : '';
81
+ const headerAddress = (0, _helpers.text)(address, {
74
82
  style: 'small'
75
83
  });
76
- var body = [[headerTitle], [headerSubTitle]];
77
- if (!isEmpty(reverseGeocoded)) {
84
+ const body = [[headerTitle], [headerSubTitle]];
85
+ if (!(0, _lodash.isEmpty)(reverseGeocoded)) {
78
86
  body.push([headerAddress]);
79
87
  }
80
- var submittedAtInTimezone = entity.submittedAt ? moment(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
81
- var submittedAt = text("Submitted: ".concat(submittedAtInTimezone), {
88
+ const submittedAtInTimezone = entity.submittedAt ? (0, _momentTimezone.default)(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
89
+ const submittedAt = (0, _helpers.text)(`Submitted: ${submittedAtInTimezone}`, {
82
90
  style: 'small'
83
91
  });
84
92
  if (entity.showSimplifiedDuration) {
85
93
  body.push([submittedAt]);
86
94
  } else {
87
- var startedAtInTimezone = entity.startedAt ? moment(entity.startedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
88
- var startedAt = text("Started: ".concat(startedAtInTimezone), {
95
+ const startedAtInTimezone = entity.startedAt ? (0, _momentTimezone.default)(entity.startedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z') : 'Not recorded';
96
+ const startedAt = (0, _helpers.text)(`Started: ${startedAtInTimezone}`, {
89
97
  style: 'small'
90
98
  });
91
- var momentDuration = moment.duration(Math.abs(entity.formDuration));
92
- var days = Math.floor(momentDuration.asDays()).toString().padStart(2, '0');
93
- var hours = Math.floor(momentDuration.hours()).toString().padStart(2, '0');
94
- var minutes = momentDuration.minutes().toString().padStart(2, '0');
95
- var seconds = momentDuration.seconds().toString().padStart(2, '0');
96
- var formattedFormDuration = entity.formDuration ? "".concat(entity.formDuration < 0 ? '-' : '').concat(days, ":").concat(hours, ":").concat(minutes, ":").concat(seconds) : 'Not recorded';
97
- var formDuration = text("Form Duration (DD:HH:MM:SS): ".concat(formattedFormDuration), {
99
+ const momentDuration = _momentTimezone.default.duration(Math.abs(entity.formDuration));
100
+ const days = Math.floor(momentDuration.asDays()).toString().padStart(2, '0');
101
+ const hours = Math.floor(momentDuration.hours()).toString().padStart(2, '0');
102
+ const minutes = momentDuration.minutes().toString().padStart(2, '0');
103
+ const seconds = momentDuration.seconds().toString().padStart(2, '0');
104
+ const formattedFormDuration = entity.formDuration ? `${entity.formDuration < 0 ? '-' : ''}${days}:${hours}:${minutes}:${seconds}` : 'Not recorded';
105
+ const formDuration = (0, _helpers.text)(`Form Duration (DD:HH:MM:SS): ${formattedFormDuration}`, {
98
106
  style: 'small'
99
107
  });
100
108
  body.push([startedAt]);
101
109
  body.push([submittedAt]);
102
110
  body.push([formDuration]);
103
111
  }
104
- var titleTable = table({
105
- body: body,
112
+ const titleTable = (0, _helpers.table)({
113
+ body,
106
114
  layout: 'noBorders',
107
115
  style: 'titleTable'
108
116
  });
109
- return buildTemplateContent(entry.formGroups, data).then(function (entry) {
110
- return [titleTable].concat(_toConsumableArray(entry));
111
- });
117
+ return (0, _helpers.buildTemplateContent)(entry.formGroups, data).then(entry => [titleTable, ...entry]);
112
118
  }
113
119
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["isEmpty","moment","buildTemplateContent","generateDefinition","getFormattedAddress","text","table","getTaskEntryDetails","buildTaskPdf","pdfOptions","data","entity","timezone","sequenceId","timestamp","createdAt","title","fileTitle","concat","generateContent","then","content","_objectSpread","type","entry","_entity$gps","gps","entityDetails","gpsText","locationText","referenceValue","timezoneHourTime","reverseGeocoded","subTitle","headerSubTitle","style","headerTitle","address","headerAddress","body","push","submittedAtInTimezone","submittedAt","tz","format","showSimplifiedDuration","startedAtInTimezone","startedAt","momentDuration","duration","Math","abs","formDuration","days","floor","asDays","toString","padStart","hours","minutes","seconds","formattedFormDuration","titleTable","layout","formGroups","_toConsumableArray"],"sources":["../../../src/pdf/task/index.js"],"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.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 */\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 { gpsText, locationText, referenceValue, timezoneHourTime } =\n entityDetails\n\n const reverseGeocoded = gps.reverseGeocoded\n\n const subTitle = `${\n locationText || gpsText\n } - ${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 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 return buildTemplateContent(entry.formGroups, data).then((entry) => [\n titleTable,\n ...entry,\n ])\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_lodash","require","_momentTimezone","_interopRequireDefault","_helpers","_helpers2","buildTaskPdf","pdfOptions","data","entity","timezone","sequenceId","timestamp","createdAt","title","fileTitle","generateContent","then","content","generateDefinition","type","entry","gps","entityDetails","getTaskEntryDetails","gpsText","locationText","referenceValue","timezoneHourTime","reverseGeocoded","subTitle","headerSubTitle","text","style","headerTitle","address","isEmpty","getFormattedAddress","headerAddress","body","push","submittedAtInTimezone","submittedAt","moment","tz","format","showSimplifiedDuration","startedAtInTimezone","startedAt","momentDuration","duration","Math","abs","formDuration","days","floor","asDays","toString","padStart","hours","minutes","seconds","formattedFormDuration","titleTable","table","layout","buildTemplateContent","formGroups"],"sources":["../../../src/pdf/task/index.js"],"sourcesContent":["import { isEmpty } from 'lodash'\r\nimport moment from 'moment-timezone'\r\n\r\nimport {\r\n buildTemplateContent,\r\n generateDefinition,\r\n getFormattedAddress,\r\n text,\r\n table,\r\n} from '../helpers'\r\nimport { getTaskEntryDetails } from '../../helpers'\r\n\r\n/**\r\n * buildTaskPdf\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 - task 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\nexport function buildTaskPdf(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 = `Task Report - ${title}`\r\n\r\n return generateContent(data).then(content =>\r\n generateDefinition({\r\n content,\r\n fileTitle,\r\n sequenceId,\r\n timestamp,\r\n timezone,\r\n type: 'Task',\r\n ...pdfOptions,\r\n })\r\n )\r\n}\r\n\r\nfunction generateContent(data) {\r\n const { entity, timezone } = data\r\n\r\n const { entry, gps = {}, title } = entity\r\n\r\n const entityDetails = getTaskEntryDetails(data)\r\n\r\n const {\r\n gpsText,\r\n locationText,\r\n referenceValue,\r\n timezoneHourTime,\r\n } = entityDetails\r\n\r\n const reverseGeocoded = gps.reverseGeocoded\r\n\r\n const subTitle = `${locationText ||\r\n gpsText} - ${timezoneHourTime} by ${referenceValue}`\r\n const headerSubTitle = text(subTitle, { style: 'subTitle' })\r\n const headerTitle = text(title, { style: 'title' })\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 = [[headerTitle], [headerSubTitle]]\r\n\r\n if (!isEmpty(reverseGeocoded)) {\r\n body.push([headerAddress])\r\n }\r\n\r\n const submittedAtInTimezone = entity.submittedAt\r\n ? moment(entity.submittedAt)\r\n .tz(timezone)\r\n .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)\r\n .tz(timezone)\r\n .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())\r\n .toString()\r\n .padStart(2, '0')\r\n const hours = Math.floor(momentDuration.hours())\r\n .toString()\r\n .padStart(2, '0')\r\n const minutes = momentDuration\r\n .minutes()\r\n .toString()\r\n .padStart(2, '0')\r\n const seconds = momentDuration\r\n .seconds()\r\n .toString()\r\n .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 return buildTemplateContent(entry.formGroups, data).then(entry => [\r\n titleTable,\r\n ...entry,\r\n ])\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,39 @@
1
- export * from './occurrenceIntervalsGenerator';
2
- export * from './serviceIntervalsGenerator';
3
- export * from './scheduleIntervalsGenerator';
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _occurrenceIntervalsGenerator = require("./occurrenceIntervalsGenerator");
7
+ Object.keys(_occurrenceIntervalsGenerator).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _occurrenceIntervalsGenerator[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _occurrenceIntervalsGenerator[key];
14
+ }
15
+ });
16
+ });
17
+ var _serviceIntervalsGenerator = require("./serviceIntervalsGenerator");
18
+ Object.keys(_serviceIntervalsGenerator).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _serviceIntervalsGenerator[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _serviceIntervalsGenerator[key];
25
+ }
26
+ });
27
+ });
28
+ var _scheduleIntervalsGenerator = require("./scheduleIntervalsGenerator");
29
+ Object.keys(_scheduleIntervalsGenerator).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _scheduleIntervalsGenerator[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _scheduleIntervalsGenerator[key];
36
+ }
37
+ });
38
+ });
4
39
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/scheduling/generators/index.ts"],"sourcesContent":["export * from './occurrenceIntervalsGenerator'\nexport * from './serviceIntervalsGenerator'\nexport * from './scheduleIntervalsGenerator'"],"mappings":"AAAA,cAAc,gCAAgC;AAC9C,cAAc,6BAA6B;AAC3C,cAAc,8BAA8B","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["_occurrenceIntervalsGenerator","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_serviceIntervalsGenerator","_scheduleIntervalsGenerator"],"sources":["../../../src/scheduling/generators/index.ts"],"sourcesContent":["export * from './occurrenceIntervalsGenerator'\r\nexport * from './serviceIntervalsGenerator'\r\nexport * from './scheduleIntervalsGenerator'"],"mappings":";;;;;AAAA,IAAAA,6BAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,6BAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,6BAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAT,6BAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,0BAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,0BAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,0BAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAC,0BAAA,CAAAL,GAAA;IAAA;EAAA;AAAA;AACA,IAAAM,2BAAA,GAAAV,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAQ,2BAAA,EAAAP,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAM,2BAAA,CAAAN,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,2BAAA,CAAAN,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
@@ -1,40 +1,47 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import _regeneratorRuntime from "@babel/runtime/regenerator";
3
- var _marked = /*#__PURE__*/_regeneratorRuntime.mark(occurrenceIntervalsGenerator);
4
- import { StrategyTypes } from '../scheduling.types';
5
- import { getNext, getNextExactDateOfMonth, getNextLastDayOfMonth, getNextLastWeekdayOfMonth, getNextNoRepeat, getNextWeekday, getNextXDayOfXWeekOfMonth } from '../strategies';
6
- export var strategyTypeMap = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, StrategyTypes.ExactDateOfMonth, getNextExactDateOfMonth), StrategyTypes.LastDayOfMonth, getNextLastDayOfMonth), StrategyTypes.LastWeekdayOfMonth, getNextLastWeekdayOfMonth), StrategyTypes.NoRepeat, getNextNoRepeat), StrategyTypes.Stopwatch, getNext), StrategyTypes.Weekdays, getNextWeekday), StrategyTypes.Window, getNext), StrategyTypes.XDayOfXWeekOfMonth, getNextXDayOfXWeekOfMonth);
7
- /**
8
- * Generates occurrence intervals for service intervals using strategy
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.occurrenceIntervalsGenerator = occurrenceIntervalsGenerator;
7
+ exports.strategyTypeMap = void 0;
8
+ var _scheduling = require("../scheduling.types");
9
+ var _strategies = require("../strategies");
10
+ const strategyTypeMap = exports.strategyTypeMap = {
11
+ [_scheduling.StrategyTypes.ExactDateOfMonth]: _strategies.getNextExactDateOfMonth,
12
+ [_scheduling.StrategyTypes.LastDayOfMonth]: _strategies.getNextLastDayOfMonth,
13
+ [_scheduling.StrategyTypes.LastWeekdayOfMonth]: _strategies.getNextLastWeekdayOfMonth,
14
+ [_scheduling.StrategyTypes.NoRepeat]: _strategies.getNextNoRepeat,
15
+ [_scheduling.StrategyTypes.Stopwatch]: _strategies.getNext,
16
+ [_scheduling.StrategyTypes.Weekdays]: _strategies.getNextWeekday,
17
+ [_scheduling.StrategyTypes.Window]: _strategies.getNext,
18
+ [_scheduling.StrategyTypes.XDayOfXWeekOfMonth]: _strategies.getNextXDayOfXWeekOfMonth
19
+ };
20
+ /**
21
+ * Generates occurrence intervals for service intervals using strategy
9
22
  */
10
- export function occurrenceIntervalsGenerator(props) {
11
- var isInitial, serviceInterval, strategy, timezone, options, type, start, end, getNextFn;
12
- return _regeneratorRuntime.wrap(function (_context) {
13
- while (1) switch (_context.prev = _context.next) {
14
- case 0:
15
- isInitial = props.isInitial, serviceInterval = props.serviceInterval, strategy = props.strategy, timezone = props.timezone;
16
- options = strategy.options, type = strategy.type;
17
- start = serviceInterval[0];
18
- end = serviceInterval[1];
19
- getNextFn = strategyTypeMap[type];
20
- if (getNextFn) {
21
- _context.next = 1;
22
- break;
23
- }
24
- return _context.abrupt("return");
25
- case 1:
26
- return _context.delegateYield(getNextFn({
27
- end: end,
28
- isInitial: isInitial,
29
- start: start,
30
- options: options,
31
- timezone: timezone,
32
- type: type
33
- }), "t0", 2);
34
- case 2:
35
- case "end":
36
- return _context.stop();
37
- }
38
- }, _marked);
23
+ function* occurrenceIntervalsGenerator(props) {
24
+ const {
25
+ isInitial,
26
+ serviceInterval,
27
+ strategy,
28
+ timezone
29
+ } = props;
30
+ const {
31
+ options,
32
+ type
33
+ } = strategy;
34
+ const start = serviceInterval[0];
35
+ const end = serviceInterval[1];
36
+ const getNextFn = strategyTypeMap[type];
37
+ if (!getNextFn) return;
38
+ yield* getNextFn({
39
+ end,
40
+ isInitial,
41
+ start,
42
+ options,
43
+ timezone,
44
+ type
45
+ });
39
46
  }
40
47
  //# sourceMappingURL=occurrenceIntervalsGenerator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"occurrenceIntervalsGenerator.js","names":["occurrenceIntervalsGenerator","StrategyTypes","getNext","getNextExactDateOfMonth","getNextLastDayOfMonth","getNextLastWeekdayOfMonth","getNextNoRepeat","getNextWeekday","getNextXDayOfXWeekOfMonth","strategyTypeMap","_defineProperty","ExactDateOfMonth","LastDayOfMonth","LastWeekdayOfMonth","NoRepeat","Stopwatch","Weekdays","Window","XDayOfXWeekOfMonth","props","isInitial","serviceInterval","strategy","timezone","options","type","start","end","getNextFn","_regeneratorRuntime","wrap","_context","prev","next","abrupt","delegateYield","stop","_marked"],"sources":["../../../src/scheduling/generators/occurrenceIntervalsGenerator.ts"],"sourcesContent":["import { Interval, Strategy, StrategyTypes } from '../scheduling.types'\n\nimport {\n getNext,\n getNextExactDateOfMonth,\n getNextLastDayOfMonth,\n getNextLastWeekdayOfMonth,\n getNextNoRepeat,\n getNextWeekday,\n getNextXDayOfXWeekOfMonth,\n} from '../strategies'\n\nexport const strategyTypeMap = {\n [StrategyTypes.ExactDateOfMonth]: getNextExactDateOfMonth,\n [StrategyTypes.LastDayOfMonth]: getNextLastDayOfMonth,\n [StrategyTypes.LastWeekdayOfMonth]: getNextLastWeekdayOfMonth,\n [StrategyTypes.NoRepeat]: getNextNoRepeat,\n [StrategyTypes.Stopwatch]: getNext,\n [StrategyTypes.Weekdays]: getNextWeekday,\n [StrategyTypes.Window]: getNext,\n [StrategyTypes.XDayOfXWeekOfMonth]: getNextXDayOfXWeekOfMonth,\n}\n\ninterface OccurrenceIntervalsGenerator {\n readonly isInitial: boolean\n readonly serviceInterval: Interval\n readonly strategy: Strategy\n readonly timezone: string\n}\n\n/**\n * Generates occurrence intervals for service intervals using strategy\n */\nexport function* occurrenceIntervalsGenerator(\n props: OccurrenceIntervalsGenerator\n): IterableIterator<Interval> {\n const { isInitial, serviceInterval, strategy, timezone } = props\n const { options, type } = strategy\n\n const start: number = serviceInterval[0]\n const end: number = serviceInterval[1]\n\n const getNextFn = strategyTypeMap[type]\n\n if (!getNextFn) return\n\n yield* getNextFn({\n end,\n isInitial,\n start,\n options,\n timezone,\n type,\n })\n}\n"],"mappings":";;oDAiCiBA,4BAA4B;AAjC7C,SAA6BC,aAAa,QAAQ,qBAAqB;AAEvE,SACEC,OAAO,EACPC,uBAAuB,EACvBC,qBAAqB,EACrBC,yBAAyB,EACzBC,eAAe,EACfC,cAAc,EACdC,yBAAyB,QACpB,eAAe;AAEtB,OAAO,IAAMC,eAAe,GAAAC,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAAA,eAAA,KACzBT,aAAa,CAACU,gBAAgB,EAAGR,uBAAuB,GACxDF,aAAa,CAACW,cAAc,EAAGR,qBAAqB,GACpDH,aAAa,CAACY,kBAAkB,EAAGR,yBAAyB,GAC5DJ,aAAa,CAACa,QAAQ,EAAGR,eAAe,GACxCL,aAAa,CAACc,SAAS,EAAGb,OAAO,GACjCD,aAAa,CAACe,QAAQ,EAAGT,cAAc,GACvCN,aAAa,CAACgB,MAAM,EAAGf,OAAO,GAC9BD,aAAa,CAACiB,kBAAkB,EAAGV,yBAAyB,CAC9D;AASD;AACA;AACA;AACA,OAAO,SAAUR,4BAA4BA,CAC3CmB,KAAmC;EAAA,IAAAC,SAAA,EAAAC,eAAA,EAAAC,QAAA,EAAAC,QAAA,EAAAC,OAAA,EAAAC,IAAA,EAAAC,KAAA,EAAAC,GAAA,EAAAC,SAAA;EAAA,OAAAC,mBAAA,CAAAC,IAAA,WAAAC,QAAA;IAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;MAAA;QAE3Bb,SAAS,GAA0CD,KAAK,CAAxDC,SAAS,EAAEC,eAAe,GAAyBF,KAAK,CAA7CE,eAAe,EAAEC,QAAQ,GAAeH,KAAK,CAA5BG,QAAQ,EAAEC,QAAQ,GAAKJ,KAAK,CAAlBI,QAAQ;QAC9CC,OAAO,GAAWF,QAAQ,CAA1BE,OAAO,EAAEC,IAAI,GAAKH,QAAQ,CAAjBG,IAAI;QAEfC,KAAa,GAAGL,eAAe,CAAC,CAAC,CAAC;QAClCM,GAAW,GAAGN,eAAe,CAAC,CAAC,CAAC;QAEhCO,SAAS,GAAGnB,eAAe,CAACgB,IAAI,CAAC;QAAA,IAElCG,SAAS;UAAAG,QAAA,CAAAE,IAAA;UAAA;QAAA;QAAA,OAAAF,QAAA,CAAAG,MAAA;MAAA;QAEd,OAAAH,QAAA,CAAAI,aAAA,CAAOP,SAAS,CAAC;UACfD,GAAG,EAAHA,GAAG;UACHP,SAAS,EAATA,SAAS;UACTM,KAAK,EAALA,KAAK;UACLF,OAAO,EAAPA,OAAO;UACPD,QAAQ,EAARA,QAAQ;UACRE,IAAI,EAAJA;QACF,CAAC,CAAC;MAAA;MAAA;QAAA,OAAAM,QAAA,CAAAK,IAAA;IAAA;EAAA,GAAAC,OAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"occurrenceIntervalsGenerator.js","names":["_scheduling","require","_strategies","strategyTypeMap","exports","StrategyTypes","ExactDateOfMonth","getNextExactDateOfMonth","LastDayOfMonth","getNextLastDayOfMonth","LastWeekdayOfMonth","getNextLastWeekdayOfMonth","NoRepeat","getNextNoRepeat","Stopwatch","getNext","Weekdays","getNextWeekday","Window","XDayOfXWeekOfMonth","getNextXDayOfXWeekOfMonth","occurrenceIntervalsGenerator","props","isInitial","serviceInterval","strategy","timezone","options","type","start","end","getNextFn"],"sources":["../../../src/scheduling/generators/occurrenceIntervalsGenerator.ts"],"sourcesContent":["import { Interval, Strategy, StrategyTypes } from '../scheduling.types'\r\n\r\nimport {\r\n getNext,\r\n getNextExactDateOfMonth,\r\n getNextLastDayOfMonth,\r\n getNextLastWeekdayOfMonth,\r\n getNextNoRepeat,\r\n getNextWeekday,\r\n getNextXDayOfXWeekOfMonth,\r\n} from '../strategies'\r\n\r\nexport const strategyTypeMap = {\r\n [StrategyTypes.ExactDateOfMonth]: getNextExactDateOfMonth,\r\n [StrategyTypes.LastDayOfMonth]: getNextLastDayOfMonth,\r\n [StrategyTypes.LastWeekdayOfMonth]: getNextLastWeekdayOfMonth,\r\n [StrategyTypes.NoRepeat]: getNextNoRepeat,\r\n [StrategyTypes.Stopwatch]: getNext,\r\n [StrategyTypes.Weekdays]: getNextWeekday,\r\n [StrategyTypes.Window]: getNext,\r\n [StrategyTypes.XDayOfXWeekOfMonth]: getNextXDayOfXWeekOfMonth,\r\n}\r\n\r\ninterface OccurrenceIntervalsGenerator {\r\n readonly isInitial: boolean\r\n readonly serviceInterval: Interval\r\n readonly strategy: Strategy\r\n readonly timezone: string\r\n}\r\n\r\n/**\r\n * Generates occurrence intervals for service intervals using strategy\r\n */\r\nexport function* occurrenceIntervalsGenerator(\r\n props: OccurrenceIntervalsGenerator\r\n): IterableIterator<Interval> {\r\n const { isInitial, serviceInterval, strategy, timezone } = props\r\n const { options, type } = strategy\r\n\r\n const start: number = serviceInterval[0]\r\n const end: number = serviceInterval[1]\r\n\r\n const getNextFn = strategyTypeMap[type]\r\n\r\n if (!getNextFn) return\r\n\r\n yield* getNextFn({\r\n end,\r\n isInitial,\r\n start,\r\n options,\r\n timezone,\r\n type,\r\n })\r\n}\r\n"],"mappings":";;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAUO,MAAME,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG;EAC7B,CAACE,yBAAa,CAACC,gBAAgB,GAAGC,mCAAuB;EACzD,CAACF,yBAAa,CAACG,cAAc,GAAGC,iCAAqB;EACrD,CAACJ,yBAAa,CAACK,kBAAkB,GAAGC,qCAAyB;EAC7D,CAACN,yBAAa,CAACO,QAAQ,GAAGC,2BAAe;EACzC,CAACR,yBAAa,CAACS,SAAS,GAAGC,mBAAO;EAClC,CAACV,yBAAa,CAACW,QAAQ,GAAGC,0BAAc;EACxC,CAACZ,yBAAa,CAACa,MAAM,GAAGH,mBAAO;EAC/B,CAACV,yBAAa,CAACc,kBAAkB,GAAGC;AACtC,CAAC;AASD;AACA;AACA;AACO,UAAUC,4BAA4BA,CAC3CC,KAAmC,EACP;EAC5B,MAAM;IAAEC,SAAS;IAAEC,eAAe;IAAEC,QAAQ;IAAEC;EAAS,CAAC,GAAGJ,KAAK;EAChE,MAAM;IAAEK,OAAO;IAAEC;EAAK,CAAC,GAAGH,QAAQ;EAElC,MAAMI,KAAa,GAAGL,eAAe,CAAC,CAAC,CAAC;EACxC,MAAMM,GAAW,GAAGN,eAAe,CAAC,CAAC,CAAC;EAEtC,MAAMO,SAAS,GAAG5B,eAAe,CAACyB,IAAI,CAAC;EAEvC,IAAI,CAACG,SAAS,EAAE;EAEhB,OAAOA,SAAS,CAAC;IACfD,GAAG;IACHP,SAAS;IACTM,KAAK;IACLF,OAAO;IACPD,QAAQ;IACRE;EACF,CAAC,CAAC;AACJ","ignoreList":[]}