@lighthouse/common 4.23.0 → 4.24.0-canary-1

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.
@@ -38,9 +38,7 @@ function getLocationReference(data = {}) {
38
38
  // locations legacyId reference as a key which will match a legacy location id on the entity
39
39
 
40
40
  const areaLocationMap = (0, _lodash.reduce)(areaLocations, (memo, location) => {
41
- var _location$legacyId;
42
-
43
- const legacyId = location === null || location === void 0 ? void 0 : (_location$legacyId = location.legacyId) === null || _location$legacyId === void 0 ? void 0 : _location$legacyId.toString();
41
+ const legacyId = location?.legacyId?.toString();
44
42
  if (!legacyId) return memo;
45
43
  memo[legacyId] = location;
46
44
  return memo;
@@ -48,17 +46,13 @@ function getLocationReference(data = {}) {
48
46
  // format before running through
49
47
 
50
48
  const locationMap = (0, _lodash.isArray)(locations) ? (0, _lodash.reduce)(locations, (memo, location) => {
51
- var _location$_id;
52
-
53
- const locationId = location === null || location === void 0 ? void 0 : (_location$_id = location._id) === null || _location$_id === void 0 ? void 0 : _location$_id.toString();
49
+ const locationId = location?._id?.toString();
54
50
  if (!locationId) return memo;
55
51
  memo[locationId] = location;
56
52
  return memo;
57
53
  }, {}) : locations;
58
54
  const zoneMap = (0, _lodash.isArray)(zones) ? (0, _lodash.reduce)(zones, (memo, zone) => {
59
- var _zone$_id;
60
-
61
- const zoneId = zone === null || zone === void 0 ? void 0 : (_zone$_id = zone._id) === null || _zone$_id === void 0 ? void 0 : _zone$_id.toString();
55
+ const zoneId = zone?._id?.toString();
62
56
  if (!zoneId) return memo;
63
57
  memo[zoneId] = zone;
64
58
  return memo;
@@ -104,6 +104,7 @@ async function buildActivitySummarySection(data) {
104
104
  tasks,
105
105
  timezone
106
106
  } = data;
107
+ const MAX_ATTACHMENTS = 100;
107
108
  const enterEvents = (0, _lodash.filter)(events, event => event.type === 'enter');
108
109
  const exceedsMaxScans = (0, _lodash.size)(enterEvents) > maxScans;
109
110
  const scans = (0, _lodash.take)(enterEvents, maxScans);
@@ -111,6 +112,7 @@ async function buildActivitySummarySection(data) {
111
112
  const issueRows = (0, _lodash.map)(issues, getFormRowData('issues', data));
112
113
  const scanRows = (0, _lodash.map)(scans, getScanRowData(data));
113
114
  const taskRows = (0, _lodash.map)(tasks, getFormRowData('tasks', data));
115
+ const exceedsMaxForms = (0, _lodash.size)([...auditRows, issueRows, taskRows]) > MAX_ATTACHMENTS;
114
116
  const rows = [...auditRows, ...issueRows, ...scanRows, ...taskRows];
115
117
  const sortedRows = (0, _lodash.sortBy)(rows, ['timestamp'], ['asc']);
116
118
  const title = (0, _helpers.text)('Activity Summary', {
@@ -140,6 +142,21 @@ async function buildActivitySummarySection(data) {
140
142
  activitySummarySection.push(maxScansText);
141
143
  }
142
144
 
145
+ if (exceedsMaxForms) {
146
+ const maxFormsText = {
147
+ text: [(0, _helpers.text)(`Location Forms in the Daily Activity Report are limited to a total of ${MAX_ATTACHMENTS}.`), (0, _helpers.text)(' To view all Location Forms visit '), (0, _helpers.text)('the Audits Report', {
148
+ link: `${LIGHTHOUSE_BASE_URL}/reports/audits`
149
+ }), (0, _helpers.text)(', the Issues Report', {
150
+ link: `${LIGHTHOUSE_BASE_URL}/reports/issues`
151
+ }), (0, _helpers.text)(', and the Tasks Report', {
152
+ link: `${LIGHTHOUSE_BASE_URL}/reports/tasks`
153
+ }), (0, _helpers.text)(' in the Lighthouse Management Console.')],
154
+ style: 'small',
155
+ margin: [0, 10, 0, 10]
156
+ };
157
+ activitySummarySection.push(maxFormsText);
158
+ }
159
+
143
160
  return activitySummarySection;
144
161
  }
145
162
 
@@ -166,13 +166,14 @@ function buildActivitySummarySection(_x5) {
166
166
 
167
167
  function _buildActivitySummarySection() {
168
168
  _buildActivitySummarySection = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(data) {
169
- var audits, events, issues, _data$maxScans, maxScans, settings, tasks, timezone, enterEvents, exceedsMaxScans, scans, auditRows, issueRows, scanRows, taskRows, rows, sortedRows, title, header, hLine, activityTable, activitySummarySection, maxScansText;
169
+ var audits, events, issues, _data$maxScans, maxScans, settings, tasks, timezone, MAX_ATTACHMENTS, enterEvents, exceedsMaxScans, scans, auditRows, issueRows, scanRows, taskRows, exceedsMaxForms, rows, sortedRows, title, header, hLine, activityTable, activitySummarySection, maxScansText, maxFormsText;
170
170
 
171
171
  return _regeneratorRuntime.wrap(function _callee4$(_context4) {
172
172
  while (1) {
173
173
  switch (_context4.prev = _context4.next) {
174
174
  case 0:
175
175
  audits = data.audits, events = data.events, issues = data.issues, _data$maxScans = data.maxScans, maxScans = _data$maxScans === void 0 ? DEFAULT_MAX_SCANS : _data$maxScans, settings = data.settings, tasks = data.tasks, timezone = data.timezone;
176
+ MAX_ATTACHMENTS = 100;
176
177
  enterEvents = filter(events, function (event) {
177
178
  return event.type === 'enter';
178
179
  });
@@ -182,6 +183,7 @@ function _buildActivitySummarySection() {
182
183
  issueRows = map(issues, getFormRowData('issues', data));
183
184
  scanRows = map(scans, getScanRowData(data));
184
185
  taskRows = map(tasks, getFormRowData('tasks', data));
186
+ exceedsMaxForms = size([].concat(_toConsumableArray(auditRows), [issueRows, taskRows])) > MAX_ATTACHMENTS;
185
187
  rows = [].concat(_toConsumableArray(auditRows), _toConsumableArray(issueRows), _toConsumableArray(scanRows), _toConsumableArray(taskRows));
186
188
  sortedRows = sortBy(rows, ['timestamp'], ['asc']);
187
189
  title = text('Activity Summary', {
@@ -193,14 +195,14 @@ function _buildActivitySummarySection() {
193
195
  style: 'summaryHeaderTable'
194
196
  });
195
197
  hLine = horizontalLine();
196
- _context4.next = 15;
198
+ _context4.next = 17;
197
199
  return buildActivityTable({
198
200
  rows: sortedRows,
199
201
  settings: settings,
200
202
  timezone: timezone
201
203
  });
202
204
 
203
- case 15:
205
+ case 17:
204
206
  activityTable = _context4.sent;
205
207
  activitySummarySection = [header, hLine, activityTable];
206
208
 
@@ -215,9 +217,24 @@ function _buildActivitySummarySection() {
215
217
  activitySummarySection.push(maxScansText);
216
218
  }
217
219
 
220
+ if (exceedsMaxForms) {
221
+ maxFormsText = {
222
+ text: [text("Location Forms in the Daily Activity Report are limited to a total of ".concat(MAX_ATTACHMENTS, ".")), text(' To view all Location Forms visit '), text('the Audits Report', {
223
+ link: "".concat(LIGHTHOUSE_BASE_URL, "/reports/audits")
224
+ }), text(', the Issues Report', {
225
+ link: "".concat(LIGHTHOUSE_BASE_URL, "/reports/issues")
226
+ }), text(', and the Tasks Report', {
227
+ link: "".concat(LIGHTHOUSE_BASE_URL, "/reports/tasks")
228
+ }), text(' in the Lighthouse Management Console.')],
229
+ style: 'small',
230
+ margin: [0, 10, 0, 10]
231
+ };
232
+ activitySummarySection.push(maxFormsText);
233
+ }
234
+
218
235
  return _context4.abrupt("return", activitySummarySection);
219
236
 
220
- case 19:
237
+ case 22:
221
238
  case "end":
222
239
  return _context4.stop();
223
240
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/pdf/activity-report/index.js"],"names":["filter","find","groupBy","isEmpty","map","size","sortBy","take","toString","reduce","moment","Promise","generateDefinition","buildLocationScansContent","buildLocationScansBoundaries","horizontalLine","summaryStatTable","summaryWrapperTable","table","summaryFieldsTable","text","zebraFillColor","getLocationReference","getTimezoneAbbr","getTimezoneDatetime","launchIcon","DEFAULT_MAX_SCANS","LIGHTHOUSE_BASE_URL","buildActivityPdf","pdfOptions","data","timestamp","timezone","title","generateContent","content","fileTitle","type","buildActivitySection","activitySection","summarySection","buildSummarySection","titleTable","buildTitleTable","showAlternate","locationScans","buildLocationScansSection","buildOtherActivitySection","otherActivity","buildActivitySummarySection","activitySummary","audits","events","issues","maxScans","settings","tasks","enterEvents","event","exceedsMaxScans","scans","auditRows","getFormRowData","issueRows","scanRows","getScanRowData","taskRows","rows","sortedRows","style","header","body","layout","hLine","buildActivityTable","activityTable","activitySummarySection","maxScansText","link","margin","push","timezoneAbbr","activityTableHeader","bold","alignment","location","icon","name","summaryFields","timezoneHour","format","showTzAbbr","iconCell","fit","image","hasSummaryFields","fields","fieldsTable","activityTableRow","colSpan","dontBreakRows","headerRow","hLineWidth","paddingLeft","paddingRight","paddingTop","paddingBottom","vLineWidth","widths","activityTableRows","activityTableBody","fillColor","start","zones","hourIntervalBoundaries","hourIntervalColumnHeaders","columns","interval","index","intervals","scansTableHeader","sortedZones","groupedEventsByZone","memo","zone","zoneEvents","_id","scansTableRows","sortedGroup","locationScansByInterval","locationScansByIntervalContent","totalEvents","zoneDoc","doc","zoneName","scansTableBody","scansTable","eventsByType","enterEventsCount","enter","issuesCount","tasksCount","auditsCount","auditsText","issuesText","scansText","tasksText","auditsCountText","scansCountText","issuesCountText","tasksCountText","auditTable","scanTable","issueTable","taskTables","wrapperTable","end","address","headerTitle","headerSubTitle","addressText","street","city","state","postalCode","headerAddress","mTimezoneStart","tz","mTimezoneEnd","rangeStart","rangeEnd","add","startOf","headerRange","collection","locations","users","document","createdAt","entry","user","entity","userDoc","firstName","lastName"],"mappings":"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","sourcesContent":["import {\n filter,\n find,\n groupBy,\n isEmpty,\n map,\n size,\n sortBy,\n take,\n toString,\n reduce,\n} from 'lodash'\n\nimport moment from 'moment-timezone'\nimport Promise from 'bluebird'\n\nimport {\n generateDefinition,\n buildLocationScansContent,\n buildLocationScansBoundaries,\n horizontalLine,\n summaryStatTable,\n summaryWrapperTable,\n table,\n summaryFieldsTable,\n text,\n zebraFillColor,\n} from '../helpers'\n\nimport {\n getLocationReference,\n getTimezoneAbbr,\n getTimezoneDatetime,\n} from '../../helpers'\nimport { launchIcon } from '../../images'\n\nconst DEFAULT_MAX_SCANS = 200\nconst LIGHTHOUSE_BASE_URL = 'https://app.lighthouse.io'\n\n/**\n * buildActivityPdf\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 {array} data.audits - audit documents\n * @param {string} data.end - end datetime of summary report\n * @param {array} data.events - event documents\n * @param {object} data.location - location document\n * @param {array} data.locations - location documents\n * @param {array} data.issues - issue documents\n * @param {bool} data.maxScans - max scans to include in standard report\n * @param {bool} data.showAlternate - show alternate summary report\n * @param {string} data.start - start datetime of summary report\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url\n * @param {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.users - user documents\n * @returns {Promise} returns pdfmake definition object\n */\nexport async function buildActivityPdf(pdfOptions, data) {\n const { timestamp, timezone } = data\n\n const title = 'Daily Activity Report'\n const content = await generateContent(data)\n\n return generateDefinition({\n content,\n fileTitle: title,\n timestamp,\n timezone,\n type: 'Activity Summary',\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 { showAlternate = false } = data\n\n if (showAlternate) {\n const locationScans = buildLocationScansSection(data)\n const otherActivity = await buildOtherActivitySection(data)\n\n return [locationScans, otherActivity]\n }\n\n const activitySummary = await buildActivitySummarySection(data)\n\n return [activitySummary]\n}\n\nasync function buildActivitySummarySection(data) {\n const {\n audits,\n events,\n issues,\n maxScans = DEFAULT_MAX_SCANS,\n settings,\n tasks,\n timezone,\n } = data\n\n const enterEvents = filter(events, event => event.type === 'enter')\n const exceedsMaxScans = size(enterEvents) > maxScans\n const scans = take(enterEvents, maxScans)\n\n const auditRows = map(audits, getFormRowData('audits', data))\n const issueRows = map(issues, getFormRowData('issues', data))\n const scanRows = map(scans, 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 if (exceedsMaxScans) {\n const maxScansText = {\n text: [\n text(\n `Location Scans in the Daily Activity Report are limited to a total of ${maxScans}.`\n ),\n text(' To view all Location Scans visit '),\n text('the Events Report', {\n link: `${LIGHTHOUSE_BASE_URL}/reports/events`,\n }),\n text(' in the Lighthouse Management Console.'),\n ],\n style: 'small',\n margin: [0, 10, 0, 10],\n }\n\n activitySummarySection.push(maxScansText)\n }\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: '' }, // icon column\n text('Location', { bold: true }),\n text('User', { 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, name, 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 // NOTE: pass link to each column as\n // we can't wrap the entire table row\n const rows = [\n [\n text(title, { link }),\n iconCell,\n text(location, { link }),\n text(name, { 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 // NOTE: we return a table per row which includes the entry details and the\n // summary fields if relevant\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 // NOTE: the timestamp must fill up the rest of the table space as\n // otherwise the padding would be off between this table and the parent\n // table that wraps it\n widths: [130, 25, 110, 110, '*'],\n }),\n ]\n\n return activityTableRow\n })\n\n const activityTableBody = isEmpty(activityTableRows)\n ? [[text('No other activity', { colSpan: 5 })]]\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: [120, 15, 100, 100, '*'],\n })\n\n return activityTable\n}\n\nfunction buildLocationScansSection(data) {\n const { events, start, timezone, zones } = data\n\n const title = text('Location Scans', { style: 'summarySectionHeader' })\n\n const header = table({\n body: [[title]],\n layout: 'noBorders',\n style: 'summaryHeaderTable',\n })\n\n // use start time and timezone to figure out the interval boundaries\n const hourIntervalBoundaries = buildLocationScansBoundaries(start, timezone)\n\n // pair interval boundaries into column headers for the table\n const hourIntervalColumnHeaders = hourIntervalBoundaries.reduce(\n (columns, interval, index, intervals) => {\n if (index < size(intervals) - 1)\n // skip the final iteration as it's just the end of the last interval\n columns.push(\n text(`${interval.format('h')}-${intervals[index + 1].format('hA')}`, {\n alignment: 'center',\n bold: true,\n })\n )\n return columns\n },\n []\n )\n\n const scansTableHeader = [\n text('Location', { bold: true }),\n ...hourIntervalColumnHeaders,\n text('Total', { alignment: 'right', bold: true }),\n ]\n\n const hLine = horizontalLine()\n\n // NOTE: only show the enter events within the summary table\n const enterEvents = filter(events, event => event.type === 'enter')\n const sortedZones = sortBy(zones, ['name'])\n\n const groupedEventsByZone = reduce(\n sortedZones,\n (memo, zone) => {\n const zoneEvents = filter(\n enterEvents,\n event => event.zone && event.zone.toString() === zone._id.toString()\n )\n memo[zone._id] = zoneEvents\n return memo\n },\n {}\n )\n\n const scansTableRows = map(groupedEventsByZone, (events, zone = '') => {\n const sortedGroup = sortBy(events, ['timestamp'], ['asc'])\n\n // put events into interval buckets\n const locationScansByInterval = buildLocationScansContent(\n hourIntervalBoundaries,\n events\n )\n // map the interval buckets to a format fit for the table\n const locationScansByIntervalContent = locationScansByInterval.map(\n interval => {\n return { alignment: 'center', text: size(interval) }\n }\n )\n\n const totalEvents = size(sortedGroup)\n\n const zoneDoc =\n zone && find(zones, doc => doc._id.toString() === zone.toString())\n const zoneName = (zoneDoc && zoneDoc.name) || 'Unknown Location'\n\n return [\n zoneName,\n ...locationScansByIntervalContent,\n { alignment: 'right', bold: true, text: totalEvents },\n ]\n })\n\n const scansTableBody = isEmpty(scansTableRows)\n ? [[text('No location scans', { colSpan: 10 })]]\n : scansTableRows\n\n const scansTable = table({\n body: [scansTableHeader, ...scansTableBody],\n widths: [100, '*', '*', '*', '*', '*', '*', '*', '*', '*'],\n })\n\n return [header, hLine, scansTable]\n}\n\nfunction buildSummarySection(data) {\n const { audits, events, issues, tasks } = data\n\n //const userEvents = groupBy(events, 'user')\n const eventsByType = groupBy(events, 'type')\n\n const enterEventsCount = size(eventsByType.enter)\n //const geoEventsCount = size(eventsByType.geo)\n const issuesCount = size(issues)\n const tasksCount = size(tasks)\n const auditsCount = size(audits)\n //const uniqueUsers = size(userEvents)\n\n const auditsText = text('AUDITS', { style: 'summaryText' })\n //const geoText = text('GPS', { style: 'summaryText' })\n const issuesText = text('ISSUES', { style: 'summaryText' })\n //const peopleText = text('PEOPLE', { style: 'summaryText' })\n const scansText = text('SCANS', { style: 'summaryText' })\n const tasksText = text('TASKS', { style: 'summaryText' })\n\n const auditsCountText = text(toString(auditsCount), { style: 'summaryCount' })\n //const peopleCountText = text(toString(uniqueUsers), { style: 'summaryCount' })\n const scansCountText = text(toString(enterEventsCount), {\n style: 'summaryCount',\n })\n //const geoCountText = text(toString(geoEventsCount), { style: 'summaryCount' })\n const issuesCountText = text(toString(issuesCount), { style: 'summaryCount' })\n const tasksCountText = text(toString(tasksCount), { style: 'summaryCount' })\n\n const auditTable = summaryStatTable({\n body: [[auditsText], [auditsCountText]],\n })\n //const peopleTable = summaryStatTable({\n // body: [[peopleText], [peopleCountText]],\n //})\n //const gpsTable = summaryStatTable({ body: [[geoText], [geoCountText]] })\n const scanTable = summaryStatTable({ body: [[scansText], [scansCountText]] })\n const issueTable = summaryStatTable({\n body: [[issuesText], [issuesCountText]],\n })\n const taskTables = summaryStatTable({ body: [[tasksText], [tasksCountText]] })\n\n const wrapperTable = summaryWrapperTable({\n body: [\n [\n /*peopleTable,*/\n /*gpsTable,*/\n scanTable,\n issueTable,\n taskTables,\n auditTable,\n ],\n ],\n })\n\n return wrapperTable\n}\n\nasync function buildOtherActivitySection(data) {\n const { audits, issues, tasks, settings, timezone } = data\n\n const auditRows = map(audits, getFormRowData('audits', data))\n const issueRows = map(issues, getFormRowData('issues', data))\n const taskRows = map(tasks, getFormRowData('tasks', data))\n\n const rows = [...auditRows, ...issueRows, ...taskRows]\n const sortedRows = sortBy(rows, ['timestamp'], ['asc'])\n const title = text('Other Activity', { 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\n return [header, hLine, activityTable]\n}\n\nfunction buildTitleTable(data) {\n const { location, start, end, timezone } = data\n const { address = {} } = location\n\n const headerTitle = text('Daily Activity Report', { style: 'title' })\n const headerSubTitle = text(location.name, { style: 'subTitle' })\n const addressText = !isEmpty(address)\n ? `${address.street}, ${address.city || ''} ${address.state ||\n ''} ${address.postalCode || ''}`\n : ''\n const headerAddress = text(addressText, { style: 'small' })\n\n const mTimezoneStart = moment.tz(start, timezone)\n const mTimezoneEnd = moment.tz(end, timezone)\n const timezoneAbbr = getTimezoneAbbr(timezone)\n\n const rangeStart = moment(mTimezoneStart).format('MMM DD h:mma')\n\n const rangeEnd = moment(mTimezoneEnd)\n .add(1, 'hour')\n .startOf('hour')\n .format('MMM DD h:mma')\n\n const headerRange = text(`${rangeStart} - ${rangeEnd} (${timezoneAbbr})`, {\n style: 'subTitle2',\n })\n\n const body = !isEmpty(address)\n ? [[headerTitle], [headerSubTitle], [headerAddress], [headerRange]]\n : [[headerTitle], [headerSubTitle], [headerRange]]\n\n return table({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n })\n}\n\nfunction getFormRowData(collection, { locations, users, zones }) {\n return document => {\n const {\n _id,\n createdAt,\n entry = {},\n title = 'Unknown',\n user = '',\n } = 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 const userDoc = find(users, doc => doc._id.toString() === user.toString())\n const name =\n (userDoc && `${userDoc.firstName} ${userDoc.lastName}`) || 'Unknown User'\n\n // NOTE: currently only issues and tasks will return summary fields, audits\n // aren't supported and will return an empty array here\n const summaryFields = entry.summaryFields || []\n\n return {\n icon: launchIcon,\n location,\n link,\n name,\n summaryFields,\n timestamp,\n title,\n }\n }\n}\n\nfunction getScanRowData({ users, zones }) {\n return document => {\n const { timestamp, user = '', zone = '' } = document\n\n const userDoc =\n user && find(users, doc => doc._id.toString() === user.toString())\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 name =\n (userDoc && `${userDoc.firstName} ${userDoc.lastName}`) || 'Unknown User'\n\n const title = 'Location Scan'\n\n return {\n location,\n timestamp,\n name,\n title,\n }\n }\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/pdf/activity-report/index.js"],"names":["filter","find","groupBy","isEmpty","map","size","sortBy","take","toString","reduce","moment","Promise","generateDefinition","buildLocationScansContent","buildLocationScansBoundaries","horizontalLine","summaryStatTable","summaryWrapperTable","table","summaryFieldsTable","text","zebraFillColor","getLocationReference","getTimezoneAbbr","getTimezoneDatetime","launchIcon","DEFAULT_MAX_SCANS","LIGHTHOUSE_BASE_URL","buildActivityPdf","pdfOptions","data","timestamp","timezone","title","generateContent","content","fileTitle","type","buildActivitySection","activitySection","summarySection","buildSummarySection","titleTable","buildTitleTable","showAlternate","locationScans","buildLocationScansSection","buildOtherActivitySection","otherActivity","buildActivitySummarySection","activitySummary","audits","events","issues","maxScans","settings","tasks","MAX_ATTACHMENTS","enterEvents","event","exceedsMaxScans","scans","auditRows","getFormRowData","issueRows","scanRows","getScanRowData","taskRows","exceedsMaxForms","rows","sortedRows","style","header","body","layout","hLine","buildActivityTable","activityTable","activitySummarySection","maxScansText","link","margin","push","maxFormsText","timezoneAbbr","activityTableHeader","bold","alignment","location","icon","name","summaryFields","timezoneHour","format","showTzAbbr","iconCell","fit","image","hasSummaryFields","fields","fieldsTable","activityTableRow","colSpan","dontBreakRows","headerRow","hLineWidth","paddingLeft","paddingRight","paddingTop","paddingBottom","vLineWidth","widths","activityTableRows","activityTableBody","fillColor","start","zones","hourIntervalBoundaries","hourIntervalColumnHeaders","columns","interval","index","intervals","scansTableHeader","sortedZones","groupedEventsByZone","memo","zone","zoneEvents","_id","scansTableRows","sortedGroup","locationScansByInterval","locationScansByIntervalContent","totalEvents","zoneDoc","doc","zoneName","scansTableBody","scansTable","eventsByType","enterEventsCount","enter","issuesCount","tasksCount","auditsCount","auditsText","issuesText","scansText","tasksText","auditsCountText","scansCountText","issuesCountText","tasksCountText","auditTable","scanTable","issueTable","taskTables","wrapperTable","end","address","headerTitle","headerSubTitle","addressText","street","city","state","postalCode","headerAddress","mTimezoneStart","tz","mTimezoneEnd","rangeStart","rangeEnd","add","startOf","headerRange","collection","locations","users","document","createdAt","entry","user","entity","userDoc","firstName","lastName"],"mappings":"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","sourcesContent":["import {\n filter,\n find,\n groupBy,\n isEmpty,\n map,\n size,\n sortBy,\n take,\n toString,\n reduce,\n} from 'lodash'\n\nimport moment from 'moment-timezone'\nimport Promise from 'bluebird'\n\nimport {\n generateDefinition,\n buildLocationScansContent,\n buildLocationScansBoundaries,\n horizontalLine,\n summaryStatTable,\n summaryWrapperTable,\n table,\n summaryFieldsTable,\n text,\n zebraFillColor,\n} from '../helpers'\n\nimport {\n getLocationReference,\n getTimezoneAbbr,\n getTimezoneDatetime,\n} from '../../helpers'\nimport { launchIcon } from '../../images'\n\nconst DEFAULT_MAX_SCANS = 200\nconst LIGHTHOUSE_BASE_URL = 'https://app.lighthouse.io'\n\n/**\n * buildActivityPdf\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 {array} data.audits - audit documents\n * @param {string} data.end - end datetime of summary report\n * @param {array} data.events - event documents\n * @param {object} data.location - location document\n * @param {array} data.locations - location documents\n * @param {array} data.issues - issue documents\n * @param {bool} data.maxScans - max scans to include in standard report\n * @param {bool} data.showAlternate - show alternate summary report\n * @param {string} data.start - start datetime of summary report\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url\n * @param {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.users - user documents\n * @returns {Promise} returns pdfmake definition object\n */\nexport async function buildActivityPdf(pdfOptions, data) {\n const { timestamp, timezone } = data\n\n const title = 'Daily Activity Report'\n const content = await generateContent(data)\n\n return generateDefinition({\n content,\n fileTitle: title,\n timestamp,\n timezone,\n type: 'Activity Summary',\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 { showAlternate = false } = data\n\n if (showAlternate) {\n const locationScans = buildLocationScansSection(data)\n const otherActivity = await buildOtherActivitySection(data)\n\n return [locationScans, otherActivity]\n }\n\n const activitySummary = await buildActivitySummarySection(data)\n\n return [activitySummary]\n}\n\nasync function buildActivitySummarySection(data) {\n const {\n audits,\n events,\n issues,\n maxScans = DEFAULT_MAX_SCANS,\n settings,\n tasks,\n timezone,\n } = data\n\n const MAX_ATTACHMENTS = 100\n\n const enterEvents = filter(events, event => event.type === 'enter')\n const exceedsMaxScans = size(enterEvents) > maxScans\n const scans = take(enterEvents, maxScans)\n\n const auditRows = map(audits, getFormRowData('audits', data))\n const issueRows = map(issues, getFormRowData('issues', data))\n const scanRows = map(scans, getScanRowData(data))\n const taskRows = map(tasks, getFormRowData('tasks', data))\n const exceedsMaxForms =\n size([...auditRows, issueRows, taskRows]) > MAX_ATTACHMENTS\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 if (exceedsMaxScans) {\n const maxScansText = {\n text: [\n text(\n `Location Scans in the Daily Activity Report are limited to a total of ${maxScans}.`\n ),\n text(' To view all Location Scans visit '),\n text('the Events Report', {\n link: `${LIGHTHOUSE_BASE_URL}/reports/events`,\n }),\n text(' in the Lighthouse Management Console.'),\n ],\n style: 'small',\n margin: [0, 10, 0, 10],\n }\n\n activitySummarySection.push(maxScansText)\n }\n\n if (exceedsMaxForms) {\n const maxFormsText = {\n text: [\n text(\n `Location Forms in the Daily Activity Report are limited to a total of ${MAX_ATTACHMENTS}.`\n ),\n text(' To view all Location Forms visit '),\n text('the Audits Report', {\n link: `${LIGHTHOUSE_BASE_URL}/reports/audits`,\n }),\n text(', the Issues Report', {\n link: `${LIGHTHOUSE_BASE_URL}/reports/issues`,\n }),\n text(', and the Tasks Report', {\n link: `${LIGHTHOUSE_BASE_URL}/reports/tasks`,\n }),\n text(' in the Lighthouse Management Console.'),\n ],\n style: 'small',\n margin: [0, 10, 0, 10],\n }\n\n activitySummarySection.push(maxFormsText)\n }\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: '' }, // icon column\n text('Location', { bold: true }),\n text('User', { 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, name, 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 // NOTE: pass link to each column as\n // we can't wrap the entire table row\n const rows = [\n [\n text(title, { link }),\n iconCell,\n text(location, { link }),\n text(name, { 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 // NOTE: we return a table per row which includes the entry details and the\n // summary fields if relevant\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 // NOTE: the timestamp must fill up the rest of the table space as\n // otherwise the padding would be off between this table and the parent\n // table that wraps it\n widths: [130, 25, 110, 110, '*'],\n }),\n ]\n\n return activityTableRow\n })\n\n const activityTableBody = isEmpty(activityTableRows)\n ? [[text('No other activity', { colSpan: 5 })]]\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: [120, 15, 100, 100, '*'],\n })\n\n return activityTable\n}\n\nfunction buildLocationScansSection(data) {\n const { events, start, timezone, zones } = data\n\n const title = text('Location Scans', { style: 'summarySectionHeader' })\n\n const header = table({\n body: [[title]],\n layout: 'noBorders',\n style: 'summaryHeaderTable',\n })\n\n // use start time and timezone to figure out the interval boundaries\n const hourIntervalBoundaries = buildLocationScansBoundaries(start, timezone)\n\n // pair interval boundaries into column headers for the table\n const hourIntervalColumnHeaders = hourIntervalBoundaries.reduce(\n (columns, interval, index, intervals) => {\n if (index < size(intervals) - 1)\n // skip the final iteration as it's just the end of the last interval\n columns.push(\n text(`${interval.format('h')}-${intervals[index + 1].format('hA')}`, {\n alignment: 'center',\n bold: true,\n })\n )\n return columns\n },\n []\n )\n\n const scansTableHeader = [\n text('Location', { bold: true }),\n ...hourIntervalColumnHeaders,\n text('Total', { alignment: 'right', bold: true }),\n ]\n\n const hLine = horizontalLine()\n\n // NOTE: only show the enter events within the summary table\n const enterEvents = filter(events, event => event.type === 'enter')\n const sortedZones = sortBy(zones, ['name'])\n\n const groupedEventsByZone = reduce(\n sortedZones,\n (memo, zone) => {\n const zoneEvents = filter(\n enterEvents,\n event => event.zone && event.zone.toString() === zone._id.toString()\n )\n memo[zone._id] = zoneEvents\n return memo\n },\n {}\n )\n\n const scansTableRows = map(groupedEventsByZone, (events, zone = '') => {\n const sortedGroup = sortBy(events, ['timestamp'], ['asc'])\n\n // put events into interval buckets\n const locationScansByInterval = buildLocationScansContent(\n hourIntervalBoundaries,\n events\n )\n // map the interval buckets to a format fit for the table\n const locationScansByIntervalContent = locationScansByInterval.map(\n interval => {\n return { alignment: 'center', text: size(interval) }\n }\n )\n\n const totalEvents = size(sortedGroup)\n\n const zoneDoc =\n zone && find(zones, doc => doc._id.toString() === zone.toString())\n const zoneName = (zoneDoc && zoneDoc.name) || 'Unknown Location'\n\n return [\n zoneName,\n ...locationScansByIntervalContent,\n { alignment: 'right', bold: true, text: totalEvents },\n ]\n })\n\n const scansTableBody = isEmpty(scansTableRows)\n ? [[text('No location scans', { colSpan: 10 })]]\n : scansTableRows\n\n const scansTable = table({\n body: [scansTableHeader, ...scansTableBody],\n widths: [100, '*', '*', '*', '*', '*', '*', '*', '*', '*'],\n })\n\n return [header, hLine, scansTable]\n}\n\nfunction buildSummarySection(data) {\n const { audits, events, issues, tasks } = data\n\n //const userEvents = groupBy(events, 'user')\n const eventsByType = groupBy(events, 'type')\n\n const enterEventsCount = size(eventsByType.enter)\n //const geoEventsCount = size(eventsByType.geo)\n const issuesCount = size(issues)\n const tasksCount = size(tasks)\n const auditsCount = size(audits)\n //const uniqueUsers = size(userEvents)\n\n const auditsText = text('AUDITS', { style: 'summaryText' })\n //const geoText = text('GPS', { style: 'summaryText' })\n const issuesText = text('ISSUES', { style: 'summaryText' })\n //const peopleText = text('PEOPLE', { style: 'summaryText' })\n const scansText = text('SCANS', { style: 'summaryText' })\n const tasksText = text('TASKS', { style: 'summaryText' })\n\n const auditsCountText = text(toString(auditsCount), { style: 'summaryCount' })\n //const peopleCountText = text(toString(uniqueUsers), { style: 'summaryCount' })\n const scansCountText = text(toString(enterEventsCount), {\n style: 'summaryCount',\n })\n //const geoCountText = text(toString(geoEventsCount), { style: 'summaryCount' })\n const issuesCountText = text(toString(issuesCount), { style: 'summaryCount' })\n const tasksCountText = text(toString(tasksCount), { style: 'summaryCount' })\n\n const auditTable = summaryStatTable({\n body: [[auditsText], [auditsCountText]],\n })\n //const peopleTable = summaryStatTable({\n // body: [[peopleText], [peopleCountText]],\n //})\n //const gpsTable = summaryStatTable({ body: [[geoText], [geoCountText]] })\n const scanTable = summaryStatTable({ body: [[scansText], [scansCountText]] })\n const issueTable = summaryStatTable({\n body: [[issuesText], [issuesCountText]],\n })\n const taskTables = summaryStatTable({ body: [[tasksText], [tasksCountText]] })\n\n const wrapperTable = summaryWrapperTable({\n body: [\n [\n /*peopleTable,*/\n /*gpsTable,*/\n scanTable,\n issueTable,\n taskTables,\n auditTable,\n ],\n ],\n })\n\n return wrapperTable\n}\n\nasync function buildOtherActivitySection(data) {\n const { audits, issues, tasks, settings, timezone } = data\n\n const auditRows = map(audits, getFormRowData('audits', data))\n const issueRows = map(issues, getFormRowData('issues', data))\n const taskRows = map(tasks, getFormRowData('tasks', data))\n\n const rows = [...auditRows, ...issueRows, ...taskRows]\n const sortedRows = sortBy(rows, ['timestamp'], ['asc'])\n const title = text('Other Activity', { 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\n return [header, hLine, activityTable]\n}\n\nfunction buildTitleTable(data) {\n const { location, start, end, timezone } = data\n const { address = {} } = location\n\n const headerTitle = text('Daily Activity Report', { style: 'title' })\n const headerSubTitle = text(location.name, { style: 'subTitle' })\n const addressText = !isEmpty(address)\n ? `${address.street}, ${address.city || ''} ${address.state ||\n ''} ${address.postalCode || ''}`\n : ''\n const headerAddress = text(addressText, { style: 'small' })\n\n const mTimezoneStart = moment.tz(start, timezone)\n const mTimezoneEnd = moment.tz(end, timezone)\n const timezoneAbbr = getTimezoneAbbr(timezone)\n\n const rangeStart = moment(mTimezoneStart).format('MMM DD h:mma')\n\n const rangeEnd = moment(mTimezoneEnd)\n .add(1, 'hour')\n .startOf('hour')\n .format('MMM DD h:mma')\n\n const headerRange = text(`${rangeStart} - ${rangeEnd} (${timezoneAbbr})`, {\n style: 'subTitle2',\n })\n\n const body = !isEmpty(address)\n ? [[headerTitle], [headerSubTitle], [headerAddress], [headerRange]]\n : [[headerTitle], [headerSubTitle], [headerRange]]\n\n return table({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n })\n}\n\nfunction getFormRowData(collection, { locations, users, zones }) {\n return document => {\n const {\n _id,\n createdAt,\n entry = {},\n title = 'Unknown',\n user = '',\n } = 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 const userDoc = find(users, doc => doc._id.toString() === user.toString())\n const name =\n (userDoc && `${userDoc.firstName} ${userDoc.lastName}`) || 'Unknown User'\n\n // NOTE: currently only issues and tasks will return summary fields, audits\n // aren't supported and will return an empty array here\n const summaryFields = entry.summaryFields || []\n\n return {\n icon: launchIcon,\n location,\n link,\n name,\n summaryFields,\n timestamp,\n title,\n }\n }\n}\n\nfunction getScanRowData({ users, zones }) {\n return document => {\n const { timestamp, user = '', zone = '' } = document\n\n const userDoc =\n user && find(users, doc => doc._id.toString() === user.toString())\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 name =\n (userDoc && `${userDoc.firstName} ${userDoc.lastName}`) || 'Unknown User'\n\n const title = 'Location Scan'\n\n return {\n location,\n timestamp,\n name,\n title,\n }\n }\n}\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lighthouse/common",
3
- "version": "4.23.0",
3
+ "version": "4.24.0-canary-1",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "lib/index.js",