@lighthouse/common 6.10.0 → 6.10.1-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mise.toml +6 -6
- package/CHANGELOG.md +758 -758
- package/README.md +1 -1
- package/dist/errors/FetchImageError.js +3 -3
- package/dist/helpers/fetch-image-for-pdf-generator-service/index.js +7 -7
- package/dist/helpers/floatify/index.js +6 -6
- package/dist/helpers/get-audit-items-data/index.js +47 -36
- package/dist/helpers/validate-url/index.js +4 -4
- package/dist/pdf/activity-report/index.js +32 -32
- package/dist/pdf/audit/index.js +23 -23
- package/dist/pdf/helpers/fields/index.js +47 -27
- package/dist/pdf/issue/index.js +23 -23
- package/dist/pdf/job/index.js +22 -22
- package/dist/pdf/shift-report/index.js +28 -28
- package/dist/pdf/task/index.js +23 -23
- package/dist/scheduling/generators/occurrenceIntervalsGenerator.js +2 -2
- package/dist/scheduling/generators/scheduleIntervalsGenerator.js +2 -2
- package/dist/scheduling/generators/serviceIntervalsGenerator.js +2 -2
- package/dist/scheduling/helpers/convertToTimezone.js +6 -6
- package/dist/scheduling/helpers/generateNonRepeatingSchedule.js +2 -2
- package/dist/scheduling/helpers/generateRepeatingSchedule.js +2 -2
- package/dist/scheduling/helpers/generateScheduleEnd.js +2 -2
- package/dist/scheduling/helpers/hasValidStartAndEnd.js +5 -5
- package/dist/scheduling/helpers/intervalCovers.js +6 -6
- package/dist/scheduling/helpers/intervalIntersectsEnd.js +6 -6
- package/dist/scheduling/helpers/intervalIntersectsStart.js +6 -6
- package/dist/scheduling/helpers/intervalOnlyIntersectsEnd.js +6 -6
- package/dist/scheduling/helpers/intervalOnlyIntersectsStart.js +6 -6
- package/dist/scheduling/helpers/intervalOutside.js +6 -6
- package/dist/scheduling/helpers/intervalWithin.js +6 -6
- package/dist/scheduling/helpers/mergeIntervals.js +6 -6
- package/dist/scheduling/helpers/splitIntervals.js +6 -6
- package/dist/scheduling/strategies/getNext.js +2 -2
- package/dist/scheduling/strategies/getNextExactDateOfMonth.js +2 -2
- package/dist/scheduling/strategies/getNextLastDayOfMonth.js +2 -2
- package/dist/scheduling/strategies/getNextLastWeekdayOfMonth.js +2 -2
- package/dist/scheduling/strategies/getNextNoRepeat.js +2 -2
- package/dist/scheduling/strategies/getNextWeekday.js +2 -2
- package/dist/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +2 -2
- package/dist/service-hours/__helpers__/calculate-hours.js +4 -4
- package/dist/service-hours/__helpers__/isOpen.js +2 -2
- package/dist/service-hours/schema.js +4 -4
- package/lib/constants.js +12 -6
- package/lib/constants.js.map +1 -1
- package/lib/errors/DomainError.js +14 -21
- package/lib/errors/DomainError.js.map +1 -1
- package/lib/errors/FetchImageError.js +17 -24
- package/lib/errors/FetchImageError.js.map +1 -1
- package/lib/errors/ValidationError.js +30 -36
- package/lib/errors/ValidationError.js.map +1 -1
- package/lib/errors/index.js +23 -5
- package/lib/errors/index.js.map +1 -1
- package/lib/helpers/build-fetch-url/index.js +43 -47
- package/lib/helpers/build-fetch-url/index.js.map +1 -1
- package/lib/helpers/fetch-image/index.js +83 -82
- package/lib/helpers/fetch-image/index.js.map +1 -1
- package/lib/helpers/fetch-image-for-pdf-generator-service/index.js +168 -243
- package/lib/helpers/fetch-image-for-pdf-generator-service/index.js.map +1 -1
- package/lib/helpers/fetch-image-for-web/index.js +71 -94
- package/lib/helpers/fetch-image-for-web/index.js.map +1 -1
- package/lib/helpers/fetch-lighthouse-logo/index.js +36 -61
- package/lib/helpers/fetch-lighthouse-logo/index.js.map +1 -1
- package/lib/helpers/floatify/index.js +13 -7
- package/lib/helpers/floatify/index.js.map +1 -1
- package/lib/helpers/get-assignees-full-names/index.js +11 -7
- package/lib/helpers/get-assignees-full-names/index.js.map +1 -1
- package/lib/helpers/get-audit-entry-details/index.js +42 -32
- package/lib/helpers/get-audit-entry-details/index.js.map +1 -1
- package/lib/helpers/get-audit-items-data/index.js +104 -83
- package/lib/helpers/get-audit-items-data/index.js.map +1 -1
- package/lib/helpers/get-geometry-geocoded-string/index.js +10 -5
- package/lib/helpers/get-geometry-geocoded-string/index.js.map +1 -1
- package/lib/helpers/get-issue-details/index.js +53 -43
- package/lib/helpers/get-issue-details/index.js.map +1 -1
- package/lib/helpers/get-job-details/index.js +49 -41
- package/lib/helpers/get-job-details/index.js.map +1 -1
- package/lib/helpers/get-location-reference/index.js +32 -34
- package/lib/helpers/get-location-reference/index.js.map +1 -1
- package/lib/helpers/get-pretty-duration/index.js +16 -10
- package/lib/helpers/get-pretty-duration/index.js.map +1 -1
- package/lib/helpers/get-reference-details/index.js +20 -10
- package/lib/helpers/get-reference-details/index.js.map +1 -1
- package/lib/helpers/get-status-details/index.js +8 -2
- package/lib/helpers/get-status-details/index.js.map +1 -1
- package/lib/helpers/get-task-entry-details/index.js +32 -23
- package/lib/helpers/get-task-entry-details/index.js.map +1 -1
- package/lib/helpers/get-timezone-abbr/index.js +11 -4
- package/lib/helpers/get-timezone-abbr/index.js.map +1 -1
- package/lib/helpers/get-timezone-datetime/index.js +20 -13
- package/lib/helpers/get-timezone-datetime/index.js.map +1 -1
- package/lib/helpers/get-user-full-name/index.js +9 -3
- package/lib/helpers/get-user-full-name/index.js.map +1 -1
- package/lib/helpers/get-value-as-percentage/index.js +9 -4
- package/lib/helpers/get-value-as-percentage/index.js.map +1 -1
- package/lib/helpers/image-validators/index.js +18 -12
- package/lib/helpers/image-validators/index.js.map +1 -1
- package/lib/helpers/index.js +130 -18
- package/lib/helpers/index.js.map +1 -1
- package/lib/helpers/validate-url/index.js +11 -5
- package/lib/helpers/validate-url/index.js.map +1 -1
- package/lib/images/index.js +10 -4
- package/lib/images/index.js.map +1 -1
- package/lib/index.js +66 -10
- package/lib/index.js.map +1 -1
- package/lib/pdf/activity-report/index.js +407 -537
- package/lib/pdf/activity-report/index.js.map +1 -1
- package/lib/pdf/audit/index.js +137 -134
- package/lib/pdf/audit/index.js.map +1 -1
- package/lib/pdf/fonts/index.js +4 -2
- package/lib/pdf/fonts/index.js.map +1 -1
- package/lib/pdf/helpers/build-audit-content/index.js +57 -51
- package/lib/pdf/helpers/build-audit-content/index.js.map +1 -1
- package/lib/pdf/helpers/build-audit-follow-ups/index.js +52 -50
- package/lib/pdf/helpers/build-audit-follow-ups/index.js.map +1 -1
- package/lib/pdf/helpers/build-location-scans-content/index.js +22 -16
- package/lib/pdf/helpers/build-location-scans-content/index.js.map +1 -1
- package/lib/pdf/helpers/build-template-content/index.js +52 -51
- package/lib/pdf/helpers/build-template-content/index.js.map +1 -1
- package/lib/pdf/helpers/default-footer/index.js +38 -35
- package/lib/pdf/helpers/default-footer/index.js.map +1 -1
- package/lib/pdf/helpers/default-header/index.js +40 -35
- package/lib/pdf/helpers/default-header/index.js.map +1 -1
- package/lib/pdf/helpers/default-styles/index.js +7 -1
- package/lib/pdf/helpers/default-styles/index.js.map +1 -1
- package/lib/pdf/helpers/fields/index.js +225 -214
- package/lib/pdf/helpers/fields/index.js.map +1 -1
- package/lib/pdf/helpers/format-location-address/index.js +14 -8
- package/lib/pdf/helpers/format-location-address/index.js.map +1 -1
- package/lib/pdf/helpers/generate-definition/index.js +60 -65
- package/lib/pdf/helpers/generate-definition/index.js.map +1 -1
- package/lib/pdf/helpers/horizontal-line/index.js +14 -14
- package/lib/pdf/helpers/horizontal-line/index.js.map +1 -1
- package/lib/pdf/helpers/html-transformer/index.js +45 -35
- package/lib/pdf/helpers/html-transformer/index.js.map +1 -1
- package/lib/pdf/helpers/index.js +194 -15
- package/lib/pdf/helpers/index.js.map +1 -1
- package/lib/pdf/helpers/parse-value/index.js +10 -4
- package/lib/pdf/helpers/parse-value/index.js.map +1 -1
- package/lib/pdf/helpers/table/index.js +136 -205
- package/lib/pdf/helpers/table/index.js.map +1 -1
- package/lib/pdf/helpers/text/index.js +11 -8
- package/lib/pdf/helpers/text/index.js.map +1 -1
- package/lib/pdf/icons/index.js +8 -2
- package/lib/pdf/icons/index.js.map +1 -1
- package/lib/pdf/index.js +47 -6
- package/lib/pdf/index.js.map +1 -1
- package/lib/pdf/issue/index.js +141 -135
- package/lib/pdf/issue/index.js.map +1 -1
- package/lib/pdf/job/index.js +95 -81
- package/lib/pdf/job/index.js.map +1 -1
- package/lib/pdf/shift-report/emptyFixtures.js +8 -2
- package/lib/pdf/shift-report/emptyFixtures.js.map +1 -1
- package/lib/pdf/shift-report/index.js +399 -521
- package/lib/pdf/shift-report/index.js.map +1 -1
- package/lib/pdf/task/index.js +89 -83
- package/lib/pdf/task/index.js.map +1 -1
- package/lib/scheduling/generators/index.js +38 -3
- package/lib/scheduling/generators/index.js.map +1 -1
- package/lib/scheduling/generators/occurrenceIntervalsGenerator.js +44 -37
- package/lib/scheduling/generators/occurrenceIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/generators/scheduleIntervalsGenerator.js +20 -28
- package/lib/scheduling/generators/scheduleIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/generators/serviceIntervalsGenerator.js +120 -150
- package/lib/scheduling/generators/serviceIntervalsGenerator.js.map +1 -1
- package/lib/scheduling/helpers/convertToTimezone.js +18 -11
- package/lib/scheduling/helpers/convertToTimezone.js.map +1 -1
- package/lib/scheduling/helpers/generateNonRepeatingSchedule.js +57 -95
- package/lib/scheduling/helpers/generateNonRepeatingSchedule.js.map +1 -1
- package/lib/scheduling/helpers/generateRepeatingSchedule.js +80 -119
- package/lib/scheduling/helpers/generateRepeatingSchedule.js.map +1 -1
- package/lib/scheduling/helpers/generateScheduleEnd.js +24 -14
- package/lib/scheduling/helpers/generateScheduleEnd.js.map +1 -1
- package/lib/scheduling/helpers/hasValidStartAndEnd.js +19 -11
- package/lib/scheduling/helpers/hasValidStartAndEnd.js.map +1 -1
- package/lib/scheduling/helpers/index.js +159 -14
- package/lib/scheduling/helpers/index.js.map +1 -1
- package/lib/scheduling/helpers/intervalCovers.js +13 -7
- package/lib/scheduling/helpers/intervalCovers.js.map +1 -1
- package/lib/scheduling/helpers/intervalIntersectsEnd.js +13 -7
- package/lib/scheduling/helpers/intervalIntersectsEnd.js.map +1 -1
- package/lib/scheduling/helpers/intervalIntersectsStart.js +13 -7
- package/lib/scheduling/helpers/intervalIntersectsStart.js.map +1 -1
- package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js +15 -10
- package/lib/scheduling/helpers/intervalOnlyIntersectsEnd.js.map +1 -1
- package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js +15 -10
- package/lib/scheduling/helpers/intervalOnlyIntersectsStart.js.map +1 -1
- package/lib/scheduling/helpers/intervalOutside.js +15 -9
- package/lib/scheduling/helpers/intervalOutside.js.map +1 -1
- package/lib/scheduling/helpers/intervalWithin.js +13 -7
- package/lib/scheduling/helpers/intervalWithin.js.map +1 -1
- package/lib/scheduling/helpers/mergeIntervals.js +21 -17
- package/lib/scheduling/helpers/mergeIntervals.js.map +1 -1
- package/lib/scheduling/helpers/splitIntervals.js +24 -23
- package/lib/scheduling/helpers/splitIntervals.js.map +1 -1
- package/lib/scheduling/index.js +38 -3
- package/lib/scheduling/index.js.map +1 -1
- package/lib/scheduling/scheduling.types.js +9 -3
- package/lib/scheduling/scheduling.types.js.map +1 -1
- package/lib/scheduling/strategies/getNext.js +57 -63
- package/lib/scheduling/strategies/getNext.js.map +1 -1
- package/lib/scheduling/strategies/getNextExactDateOfMonth.js +47 -56
- package/lib/scheduling/strategies/getNextExactDateOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/getNextLastDayOfMonth.js +43 -51
- package/lib/scheduling/strategies/getNextLastDayOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js +49 -56
- package/lib/scheduling/strategies/getNextLastWeekdayOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/getNextNoRepeat.js +25 -36
- package/lib/scheduling/strategies/getNextNoRepeat.js.map +1 -1
- package/lib/scheduling/strategies/getNextWeekday.js +47 -79
- package/lib/scheduling/strategies/getNextWeekday.js.map +1 -1
- package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js +52 -58
- package/lib/scheduling/strategies/getNextXDayOfXWeekOfMonth.js.map +1 -1
- package/lib/scheduling/strategies/index.js +82 -7
- package/lib/scheduling/strategies/index.js.map +1 -1
- package/lib/schema/index.js +16 -1
- package/lib/schema/index.js.map +1 -1
- package/lib/schema/schema.js +28 -34
- package/lib/schema/schema.js.map +1 -1
- package/lib/service-hours/__helpers__/calculate-hours.js +24 -22
- package/lib/service-hours/__helpers__/calculate-hours.js.map +1 -1
- package/lib/service-hours/__helpers__/isOpen.js +25 -24
- package/lib/service-hours/__helpers__/isOpen.js.map +1 -1
- package/lib/service-hours/index.js +27 -2
- package/lib/service-hours/index.js.map +1 -1
- package/lib/service-hours/schema.js +68 -55
- package/lib/service-hours/schema.js.map +1 -1
- package/package.json +86 -86
- package/vitest.config.ts +23 -23
- package/vitest.setup.js +7 -7
|
@@ -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":[]}
|
package/lib/pdf/task/index.js
CHANGED
|
@@ -1,113 +1,119 @@
|
|
|
1
|
-
|
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
-
import { 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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* @param {object} pdfOptions
|
|
23
|
-
* @param {
|
|
24
|
-
* @param {
|
|
25
|
-
* @param {
|
|
26
|
-
* @param {
|
|
27
|
-
* @param {
|
|
28
|
-
* @param {string}
|
|
29
|
-
* @param {string}
|
|
30
|
-
* @param {object}
|
|
31
|
-
* @param {object}
|
|
32
|
-
* @
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
77
|
+
const headerTitle = (0, _helpers.text)(title, {
|
|
70
78
|
style: 'title'
|
|
71
79
|
});
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
|
|
77
|
-
if (!isEmpty(reverseGeocoded)) {
|
|
84
|
+
const body = [[headerTitle], [headerSubTitle]];
|
|
85
|
+
if (!(0, _lodash.isEmpty)(reverseGeocoded)) {
|
|
78
86
|
body.push([headerAddress]);
|
|
79
87
|
}
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
88
|
-
|
|
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
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
-
|
|
105
|
-
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(
|
|
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":["
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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,
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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":["
|
|
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":[]}
|