@lighthouse/common 6.9.8 → 6.9.10-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.
@@ -10,12 +10,6 @@ exports.formatBase64Image = formatBase64Image;
10
10
  exports.requestImageTransformation = requestImageTransformation;
11
11
  var _imageValidators = require("../image-validators");
12
12
  var _awsSdk = _interopRequireDefault(require("aws-sdk"));
13
- var _fetchPonyfill = _interopRequireDefault(require("fetch-ponyfill"));
14
- // Use fetch-ponyfill for Node 16 compatibility (no global fetch in Node < 18)
15
- const {
16
- fetch
17
- } = (0, _fetchPonyfill.default)();
18
-
19
13
  // Image transformer and cache are always in us-east-1 (shared across all regions)
20
14
  // The image-optimisation-image-processing Lambda only exists in us-east-1
21
15
  const IMAGE_CACHE_REGION = 'us-east-1';
@@ -67,7 +67,7 @@ function getAuditItemsData(items, data) {
67
67
  KeyPairId,
68
68
  Signature
69
69
  });
70
- const link = shouldUseCloudfront ? `${cloudfrontBaseUrl}/${item.signedAssets[assetIndex]}` : `${awsS3BaseUrl}/${asset}`;
70
+ const link = shouldUseCloudfront ? `${cloudfrontBaseUrl}/${item.signedAssets?.[assetIndex] || asset}` : `${awsS3BaseUrl}/${asset}`;
71
71
  const thumbnailUrl = (0, _.buildFetchUrl)(asset, {
72
72
  awsS3BaseUrl,
73
73
  cloudfrontBaseUrl,
@@ -40,7 +40,7 @@ const LIGHTHOUSE_BASE_URL = 'https://app.lighthouse.io';
40
40
  * @param {string} data.start - start datetime of summary report
41
41
  * @param {object} data.settings - settings properties
42
42
  * @param {string} data.settings.awsS3BaseUrl - aws S3 base url
43
- * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url
43
+ * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url
44
44
  * @param {array} data.tasks - task documents
45
45
  * @param {string} data.timestamp - timestamp string
46
46
  * @param {string} data.timezone - timezone string
@@ -29,7 +29,7 @@ var _helpers2 = require("../../helpers");
29
29
  * @param {object} data.locations - locations documents
30
30
  * @param {object} data.settings - settings properties
31
31
  * @param {string} data.settings.awsS3BaseUrl - aws S3 base url
32
- * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url
32
+ * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url
33
33
  * @param {string} data.timezone - timezone string
34
34
  * @param {object} data.users - application user documents
35
35
  * @returns {Promise} returns pdfmake definition object
@@ -27,7 +27,7 @@ var _helpers2 = require("../../helpers");
27
27
  * @param {object} data.locations - locations documents
28
28
  * @param {object} data.settings - settings properties
29
29
  * @param {string} data.settings.awsS3BaseUrl - aws S3 base url
30
- * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url
30
+ * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url
31
31
  * @param {string} data.timezone - timezone string
32
32
  * @param {object} data.users - application user documents
33
33
  * @param {object} data.zones - zone documents
@@ -50,7 +50,7 @@ const ACTIVITY_COLUMN_HEADERS = [{
50
50
  * @param {array} data.jobActivities - job activities documents
51
51
  * @param {object} data.settings - settings properties
52
52
  * @param {string} data.settings.awsS3BaseUrl - aws S3 base url
53
- * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url
53
+ * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url
54
54
  * @param {string} data.timezone - timezone string
55
55
  * @param {object} data.users - application user documents
56
56
  * @returns {Promise} returns pdfmake definition object
@@ -36,7 +36,7 @@ const LIGHTHOUSE_BASE_URL = 'https://app.lighthouse.io';
36
36
  * @param {object} data.shift - shift document
37
37
  * @param {object} data.settings - settings properties
38
38
  * @param {string} data.settings.awsS3BaseUrl - aws S3 base url
39
- * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url
39
+ * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url
40
40
  * @param {array} data.tasks - task documents
41
41
  * @param {string} data.timestamp - timestamp string
42
42
  * @param {string} data.timezone - timezone string
@@ -27,7 +27,7 @@ var _helpers2 = require("../../helpers");
27
27
  * @param {object} data.locations - locations documents
28
28
  * @param {object} data.settings - settings properties
29
29
  * @param {string} data.settings.awsS3BaseUrl - aws S3 base url
30
- * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url
30
+ * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url
31
31
  * @param {string} data.timezone - timezone string
32
32
  * @param {object} data.users - application user documents
33
33
  * @param {object} data.zones - zone documents
@@ -2,11 +2,6 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
2
  import _regeneratorRuntime from "@babel/runtime/regenerator";
3
3
  import { validateBase64Image } from '../image-validators';
4
4
  import AWS from 'aws-sdk';
5
- import fetchPonyfill from 'fetch-ponyfill';
6
-
7
- // Use fetch-ponyfill for Node 16 compatibility (no global fetch in Node < 18)
8
- var _fetchPonyfill = fetchPonyfill(),
9
- fetch = _fetchPonyfill.fetch;
10
5
 
11
6
  // Image transformer and cache are always in us-east-1 (shared across all regions)
12
7
  // The image-optimisation-image-processing Lambda only exists in us-east-1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["validateBase64Image","AWS","fetchPonyfill","_fetchPonyfill","fetch","IMAGE_CACHE_REGION","lambda","Lambda","region","s3","S3","fetchImageForPdfGeneratorService","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","url","_transformerResponse$","urlMatch","applicationId","_parseUrlString","path","queryString","searchParamsObject","transformedBucketImagePath","alreadyTransformedImage","fullDataUrl","transformerResponse","statusCode","redirectLocation","_fullDataUrl","response","buffer","_t","_t2","_t3","wrap","_context","prev","next","console","debug","Error","match","parseUrlString","concat","fetchResourceFromS3","bucketName","process","env","S3_BUCKET_IMAGE_TRANSFORMER_CACHE","key","sent","body","formatBase64Image","base64String","toString","abrupt","requestImageTransformation","headers","Location","message","ok","status","Buffer","arrayBuffer","from","call","stop","_x","apply","arguments","_x2","_x3","_requestImageTransformation","_callee2","lambdaEvent","params","result","errorMessage","_t4","_context2","queryStringParameters","requestContext","http","method","FunctionName","IMAGE_TRANSFORMER_ARN","InvocationType","Payload","JSON","stringify","invoke","promise","parse","error","_x4","_fetchResourceFromS","_callee3","_ref2","_t5","_context3","Bucket","Key","getObject","Body","contentType","ContentType","contentLength","ContentLength","lastModified","LastModified","etag","ETag","code","_ref3","imageType","toLowerCase","includes","base64Flag","isValid","urlString","URL","searchParams","forEach","value","replace","pathname","substring"],"sources":["../../../src/helpers/fetch-image-for-pdf-generator-service/index.js"],"sourcesContent":["import { validateBase64Image } from '../image-validators'\nimport AWS from 'aws-sdk'\nimport fetchPonyfill from 'fetch-ponyfill'\n\n// Use fetch-ponyfill for Node 16 compatibility (no global fetch in Node < 18)\nconst { fetch } = fetchPonyfill()\n\n// Image transformer and cache are always in us-east-1 (shared across all regions)\n// The image-optimisation-image-processing Lambda only exists in us-east-1\nconst IMAGE_CACHE_REGION = 'us-east-1'\n\nconst lambda = new AWS.Lambda({\n region: IMAGE_CACHE_REGION,\n})\n\nconst s3 = new AWS.S3({\n region: IMAGE_CACHE_REGION,\n})\n\nexport const fetchImageForPdfGeneratorService = async function (url) {\n console.debug(\n 'Fetching image via CloudFront For Serverless Pdf Generator Service'\n )\n\n if (!url) {\n throw new Error('URL is required to fetch image for PDF generator service')\n }\n\n const urlMatch = url && url.match(/([a-f0-9]{24})\\//)\n const applicationId = urlMatch && urlMatch[1]\n\n if (!applicationId) {\n throw new Error('Requestor has insufficient permissions')\n }\n\n const { path, queryString, searchParamsObject } = parseUrlString(url)\n\n const transformedBucketImagePath =\n path + (queryString ? `/${queryString}` : '')\n\n const alreadyTransformedImage = await fetchResourceFromS3({\n bucketName: process.env.S3_BUCKET_IMAGE_TRANSFORMER_CACHE,\n key: transformedBucketImagePath,\n })\n\n if (alreadyTransformedImage?.body) {\n const fullDataUrl = formatBase64Image({\n base64String: alreadyTransformedImage.body.toString('base64'),\n key: transformedBucketImagePath,\n })\n return fullDataUrl\n }\n\n const transformerResponse = await requestImageTransformation(\n `/${path}`,\n searchParamsObject\n )\n\n const statusCode = transformerResponse.statusCode\n const redirectLocation = transformerResponse.headers?.Location\n\n switch (statusCode) {\n case 200: {\n console.debug('Image transformation successful')\n\n const fullDataUrl = formatBase64Image({\n base64String: transformerResponse.body.toString('base64'),\n key: url,\n })\n\n return fullDataUrl\n }\n case 302: {\n console.debug(\n 'Image transformation successful but image is too big for lambda delivery, fetching directly via redirect URL'\n )\n\n if (!redirectLocation) {\n throw new Error('Redirect response received but no location provided')\n }\n\n let response\n try {\n response = await fetch(redirectLocation)\n } catch (error) {\n throw new Error(\n `Failed to fetch image from redirect URL: ${error.message}`\n )\n }\n\n if (!response.ok) {\n throw new Error(\n `Failed to fetch image from redirect: ${response.status}`\n )\n }\n\n const buffer = Buffer.from(await response.arrayBuffer())\n\n return formatBase64Image({\n base64String: buffer.toString('base64'),\n key: transformedBucketImagePath,\n })\n }\n case 400:\n throw new Error(\n `Bad request to image transformer: ${transformerResponse.body}`\n )\n case 403:\n throw new Error('Requested transformed image is too big')\n case 404:\n throw new Error('The requested image does not exist')\n case 500:\n throw new Error(\n `Image transformation failed: ${transformerResponse.body}`\n )\n default:\n throw new Error(\n `Unexpected response from image transformer: ${statusCode} - ${transformerResponse.body}`\n )\n }\n}\n\nexport async function requestImageTransformation(path, searchParamsObject) {\n if (!path) {\n throw new Error('Image Path is required for image transformation')\n }\n\n console.debug(\n 'ImageTransformation: Invoking image transformer lambda for path:',\n { path, searchParamsObject }\n )\n\n const lambdaEvent = {\n queryStringParameters: searchParamsObject,\n requestContext: {\n http: {\n method: 'GET',\n path,\n },\n },\n }\n\n const params = {\n FunctionName: process.env.IMAGE_TRANSFORMER_ARN,\n InvocationType: 'RequestResponse',\n Payload: JSON.stringify(lambdaEvent),\n }\n\n try {\n const result = await lambda.invoke(params).promise()\n\n const response = JSON.parse(result.Payload)\n\n return response\n } catch (error) {\n const errorMessage = `Failed to invoke image transformer lambda: ${error.message}`\n console.error(errorMessage, error)\n throw new Error(errorMessage)\n }\n}\n\nexport async function fetchResourceFromS3({ bucketName, key }) {\n console.debug(\n `Fetching resource from S3 Bucket: '${bucketName}' at path: '${key}'`\n )\n if (!bucketName || !key) {\n throw new Error(\n 'bucketName and key are required for S3 resource fetch ' +\n JSON.stringify({ bucketName, key })\n )\n }\n\n const params = {\n Bucket: bucketName,\n Key: key,\n }\n\n try {\n const result = await s3.getObject(params).promise()\n\n return {\n body: result.Body,\n contentType: result.ContentType,\n contentLength: result.ContentLength,\n lastModified: result.LastModified,\n etag: result.ETag,\n }\n } catch (error) {\n if (error.code !== 'NoSuchKey') {\n console.error('Failed to fetch image:', error)\n throw new Error(`Failed to fetch image: ${bucketName}/${key}`)\n }\n\n console.debug('Image not found in transformed bucket, invoking transformer')\n }\n}\n\nexport function formatBase64Image({ base64String, key }) {\n if (!key) {\n throw new Error('Key is required for image formatting')\n }\n\n const imageType = key.toLowerCase().includes('.png') ? 'png' : 'jpeg'\n const base64Flag = `data:image/${imageType};base64,`\n const fullDataUrl = `${base64Flag}${base64String}`\n\n // Validate the formatted data URL\n const isValid = validateBase64Image(fullDataUrl)\n if (!isValid) {\n throw new Error('InvalidImageError')\n }\n\n return fullDataUrl\n}\n\n/**\n * Parses a URL-like string into path and query parameters\n * @param {string} urlString - String like \"https://example.cloudfront.net/<applicationId>/<path>/filename.jpeg?width=100&height=100\"\n * @returns {Object} - Object with { path: string, queryString: string, searchParamsObject: Object }\n * @example\n * parseUrlString(\"https://example.cloudfront.net/abc123/folder/image.jpeg?width=100&height=100\")\n * // Returns: { path: \"abc123/folder/image.jpeg\", queryString: \"width=100,t=456\", searchParamsObject: { width: \"100\", height: \"100\" } }\n */\nfunction parseUrlString(urlString) {\n if (!urlString || typeof urlString !== 'string') {\n throw new Error('URL string is required and must be a string')\n }\n\n // Extract the path after the domain\n const url = new URL(urlString)\n\n let searchParamsObject = {}\n url.searchParams.forEach((value, key) => {\n searchParamsObject[key] = value\n })\n\n let queryString = url.searchParams.toString()\n queryString = queryString ? queryString.replace(/&/g, ',') : ''\n\n return {\n path: url.pathname.substring(1), // Remove leading '/'\n queryString,\n searchParamsObject,\n }\n}\n"],"mappings":";;AAAA,SAASA,mBAAmB,QAAQ,qBAAqB;AACzD,OAAOC,GAAG,MAAM,SAAS;AACzB,OAAOC,aAAa,MAAM,gBAAgB;;AAE1C;AACA,IAAAC,cAAA,GAAkBD,aAAa,CAAC,CAAC;EAAzBE,KAAK,GAAAD,cAAA,CAALC,KAAK;;AAEb;AACA;AACA,IAAMC,kBAAkB,GAAG,WAAW;AAEtC,IAAMC,MAAM,GAAG,IAAIL,GAAG,CAACM,MAAM,CAAC;EAC5BC,MAAM,EAAEH;AACV,CAAC,CAAC;AAEF,IAAMI,EAAE,GAAG,IAAIR,GAAG,CAACS,EAAE,CAAC;EACpBF,MAAM,EAAEH;AACV,CAAC,CAAC;AAEF,OAAO,IAAMM,gCAAgC;EAAA,IAAAC,IAAA,GAAAC,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAAG,SAAAC,QAAgBC,GAAG;IAAA,IAAAC,qBAAA;IAAA,IAAAC,QAAA,EAAAC,aAAA,EAAAC,eAAA,EAAAC,IAAA,EAAAC,WAAA,EAAAC,kBAAA,EAAAC,0BAAA,EAAAC,uBAAA,EAAAC,WAAA,EAAAC,mBAAA,EAAAC,UAAA,EAAAC,gBAAA,EAAAC,YAAA,EAAAC,QAAA,EAAAC,MAAA,EAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;IAAA,OAAAtB,mBAAA,CAAAuB,IAAA,WAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UACjEC,OAAO,CAACC,KAAK,CACX,oEACF,CAAC;UAAA,IAEIzB,GAAG;YAAAqB,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,MACA,IAAIG,KAAK,CAAC,0DAA0D,CAAC;QAAA;UAGvExB,QAAQ,GAAGF,GAAG,IAAIA,GAAG,CAAC2B,KAAK,CAAC,kBAAkB,CAAC;UAC/CxB,aAAa,GAAGD,QAAQ,IAAIA,QAAQ,CAAC,CAAC,CAAC;UAAA,IAExCC,aAAa;YAAAkB,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,MACV,IAAIG,KAAK,CAAC,wCAAwC,CAAC;QAAA;UAAAtB,eAAA,GAGTwB,cAAc,CAAC5B,GAAG,CAAC,EAA7DK,IAAI,GAAAD,eAAA,CAAJC,IAAI,EAAEC,WAAW,GAAAF,eAAA,CAAXE,WAAW,EAAEC,kBAAkB,GAAAH,eAAA,CAAlBG,kBAAkB;UAEvCC,0BAA0B,GAC9BH,IAAI,IAAIC,WAAW,OAAAuB,MAAA,CAAOvB,WAAW,IAAK,EAAE,CAAC;UAAAe,QAAA,CAAAE,IAAA;UAAA,OAETO,mBAAmB,CAAC;YACxDC,UAAU,EAAEC,OAAO,CAACC,GAAG,CAACC,iCAAiC;YACzDC,GAAG,EAAE3B;UACP,CAAC,CAAC;QAAA;UAHIC,uBAAuB,GAAAY,QAAA,CAAAe,IAAA;UAAA,MAKzB3B,uBAAuB,aAAvBA,uBAAuB,eAAvBA,uBAAuB,CAAE4B,IAAI;YAAAhB,QAAA,CAAAE,IAAA;YAAA;UAAA;UACzBb,WAAW,GAAG4B,iBAAiB,CAAC;YACpCC,YAAY,EAAE9B,uBAAuB,CAAC4B,IAAI,CAACG,QAAQ,CAAC,QAAQ,CAAC;YAC7DL,GAAG,EAAE3B;UACP,CAAC,CAAC;UAAA,OAAAa,QAAA,CAAAoB,MAAA,WACK/B,WAAW;QAAA;UAAAW,QAAA,CAAAE,IAAA;UAAA,OAGcmB,0BAA0B,KAAAb,MAAA,CACtDxB,IAAI,GACRE,kBACF,CAAC;QAAA;UAHKI,mBAAmB,GAAAU,QAAA,CAAAe,IAAA;UAKnBxB,UAAU,GAAGD,mBAAmB,CAACC,UAAU;UAC3CC,gBAAgB,IAAAZ,qBAAA,GAAGU,mBAAmB,CAACgC,OAAO,cAAA1C,qBAAA,uBAA3BA,qBAAA,CAA6B2C,QAAQ;UAAA3B,EAAA,GAEtDL,UAAU;UAAAS,QAAA,CAAAE,IAAA,GAAAN,EAAA,KACX,GAAG,OAAAA,EAAA,KAUH,GAAG,OAAAA,EAAA,KA+BH,GAAG,QAAAA,EAAA,KAIH,GAAG,QAAAA,EAAA,KAEH,GAAG,QAAAA,EAAA,KAEH,GAAG;UAAA;QAAA;UAhDNO,OAAO,CAACC,KAAK,CAAC,iCAAiC,CAAC;UAE1Cf,YAAW,GAAG4B,iBAAiB,CAAC;YACpCC,YAAY,EAAE5B,mBAAmB,CAAC0B,IAAI,CAACG,QAAQ,CAAC,QAAQ,CAAC;YACzDL,GAAG,EAAEnC;UACP,CAAC,CAAC;UAAA,OAAAqB,QAAA,CAAAoB,MAAA,WAEK/B,YAAW;QAAA;UAGlBc,OAAO,CAACC,KAAK,CACX,8GACF,CAAC;UAAA,IAEIZ,gBAAgB;YAAAQ,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,MACb,IAAIG,KAAK,CAAC,qDAAqD,CAAC;QAAA;UAAAL,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAE,IAAA;UAAA,OAKrDpC,KAAK,CAAC0B,gBAAgB,CAAC;QAAA;UAAxCE,QAAQ,GAAAM,QAAA,CAAAe,IAAA;UAAAf,QAAA,CAAAE,IAAA;UAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAJ,GAAA,GAAAG,QAAA;UAAA,MAEF,IAAIK,KAAK,6CAAAG,MAAA,CAC+BX,GAAA,CAAM2B,OAAO,CAC3D,CAAC;QAAA;UAAA,IAGE9B,QAAQ,CAAC+B,EAAE;YAAAzB,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,MACR,IAAIG,KAAK,yCAAAG,MAAA,CAC2Bd,QAAQ,CAACgC,MAAM,CACzD,CAAC;QAAA;UAAA5B,GAAA,GAGY6B,MAAM;UAAA3B,QAAA,CAAAE,IAAA;UAAA,OAAYR,QAAQ,CAACkC,WAAW,CAAC,CAAC;QAAA;UAAjDjC,MAAM,GAAAG,GAAA,CAAU+B,IAAI,CAAAC,IAAA,CAAAhC,GAAA,EAAAE,QAAA,CAAAe,IAAA;UAAA,OAAAf,QAAA,CAAAoB,MAAA,WAEnBH,iBAAiB,CAAC;YACvBC,YAAY,EAAEvB,MAAM,CAACwB,QAAQ,CAAC,QAAQ,CAAC;YACvCL,GAAG,EAAE3B;UACP,CAAC,CAAC;QAAA;UAAA,MAGI,IAAIkB,KAAK,sCAAAG,MAAA,CACwBlB,mBAAmB,CAAC0B,IAAI,CAC/D,CAAC;QAAA;UAAA,MAEK,IAAIX,KAAK,CAAC,wCAAwC,CAAC;QAAA;UAAA,MAEnD,IAAIA,KAAK,CAAC,oCAAoC,CAAC;QAAA;UAAA,MAE/C,IAAIA,KAAK,iCAAAG,MAAA,CACmBlB,mBAAmB,CAAC0B,IAAI,CAC1D,CAAC;QAAA;UAAA,MAEK,IAAIX,KAAK,gDAAAG,MAAA,CACkCjB,UAAU,SAAAiB,MAAA,CAAMlB,mBAAmB,CAAC0B,IAAI,CACzF,CAAC;QAAA;QAAA;UAAA,OAAAhB,QAAA,CAAA+B,IAAA;MAAA;IAAA,GAAArD,OAAA;EAAA,CAEN;EAAA,gBArGYL,gCAAgCA,CAAA2D,EAAA;IAAA,OAAA1D,IAAA,CAAA2D,KAAA,OAAAC,SAAA;EAAA;AAAA,GAqG5C;AAED,gBAAsBb,0BAA0BA,CAAAc,GAAA,EAAAC,GAAA;EAAA,OAAAC,2BAAA,CAAAJ,KAAA,OAAAC,SAAA;AAAA;AAqC/C,SAAAG,4BAAA;EAAAA,2BAAA,GAAA9D,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CArCM,SAAA6D,SAA0CtD,IAAI,EAAEE,kBAAkB;IAAA,IAAAqD,WAAA,EAAAC,MAAA,EAAAC,MAAA,EAAA/C,QAAA,EAAAgD,YAAA,EAAAC,GAAA;IAAA,OAAAnE,mBAAA,CAAAuB,IAAA,WAAA6C,SAAA;MAAA,kBAAAA,SAAA,CAAA3C,IAAA,GAAA2C,SAAA,CAAA1C,IAAA;QAAA;UAAA,IAClElB,IAAI;YAAA4D,SAAA,CAAA1C,IAAA;YAAA;UAAA;UAAA,MACD,IAAIG,KAAK,CAAC,iDAAiD,CAAC;QAAA;UAGpEF,OAAO,CAACC,KAAK,CACX,kEAAkE,EAClE;YAAEpB,IAAI,EAAJA,IAAI;YAAEE,kBAAkB,EAAlBA;UAAmB,CAC7B,CAAC;UAEKqD,WAAW,GAAG;YAClBM,qBAAqB,EAAE3D,kBAAkB;YACzC4D,cAAc,EAAE;cACdC,IAAI,EAAE;gBACJC,MAAM,EAAE,KAAK;gBACbhE,IAAI,EAAJA;cACF;YACF;UACF,CAAC;UAEKwD,MAAM,GAAG;YACbS,YAAY,EAAEtC,OAAO,CAACC,GAAG,CAACsC,qBAAqB;YAC/CC,cAAc,EAAE,iBAAiB;YACjCC,OAAO,EAAEC,IAAI,CAACC,SAAS,CAACf,WAAW;UACrC,CAAC;UAAAK,SAAA,CAAA3C,IAAA;UAAA2C,SAAA,CAAA1C,IAAA;UAAA,OAGsBlC,MAAM,CAACuF,MAAM,CAACf,MAAM,CAAC,CAACgB,OAAO,CAAC,CAAC;QAAA;UAA9Cf,MAAM,GAAAG,SAAA,CAAA7B,IAAA;UAENrB,QAAQ,GAAG2D,IAAI,CAACI,KAAK,CAAChB,MAAM,CAACW,OAAO,CAAC;UAAA,OAAAR,SAAA,CAAAxB,MAAA,WAEpC1B,QAAQ;QAAA;UAAAkD,SAAA,CAAA3C,IAAA;UAAA0C,GAAA,GAAAC,SAAA;UAETF,YAAY,iDAAAlC,MAAA,CAAiDmC,GAAA,CAAMnB,OAAO;UAChFrB,OAAO,CAACuD,KAAK,CAAChB,YAAY,EAAAC,GAAO,CAAC;UAAA,MAC5B,IAAItC,KAAK,CAACqC,YAAY,CAAC;QAAA;QAAA;UAAA,OAAAE,SAAA,CAAAb,IAAA;MAAA;IAAA,GAAAO,QAAA;EAAA,CAEhC;EAAA,OAAAD,2BAAA,CAAAJ,KAAA,OAAAC,SAAA;AAAA;AAED,gBAAsBzB,mBAAmBA,CAAAkD,GAAA;EAAA,OAAAC,mBAAA,CAAA3B,KAAA,OAAAC,SAAA;AAAA;AAkCxC,SAAA0B,oBAAA;EAAAA,mBAAA,GAAArF,iBAAA,cAAAC,mBAAA,CAAAC,IAAA,CAlCM,SAAAoF,SAAAC,KAAA;IAAA,IAAApD,UAAA,EAAAI,GAAA,EAAA0B,MAAA,EAAAC,MAAA,EAAAsB,GAAA;IAAA,OAAAvF,mBAAA,CAAAuB,IAAA,WAAAiE,SAAA;MAAA,kBAAAA,SAAA,CAAA/D,IAAA,GAAA+D,SAAA,CAAA9D,IAAA;QAAA;UAAqCQ,UAAU,GAAAoD,KAAA,CAAVpD,UAAU,EAAEI,GAAG,GAAAgD,KAAA,CAAHhD,GAAG;UACzDX,OAAO,CAACC,KAAK,uCAAAI,MAAA,CAC2BE,UAAU,kBAAAF,MAAA,CAAeM,GAAG,MACpE,CAAC;UAAA,MACG,CAACJ,UAAU,IAAI,CAACI,GAAG;YAAAkD,SAAA,CAAA9D,IAAA;YAAA;UAAA;UAAA,MACf,IAAIG,KAAK,CACb,wDAAwD,GACtDgD,IAAI,CAACC,SAAS,CAAC;YAAE5C,UAAU,EAAVA,UAAU;YAAEI,GAAG,EAAHA;UAAI,CAAC,CACtC,CAAC;QAAA;UAGG0B,MAAM,GAAG;YACbyB,MAAM,EAAEvD,UAAU;YAClBwD,GAAG,EAAEpD;UACP,CAAC;UAAAkD,SAAA,CAAA/D,IAAA;UAAA+D,SAAA,CAAA9D,IAAA;UAAA,OAGsB/B,EAAE,CAACgG,SAAS,CAAC3B,MAAM,CAAC,CAACgB,OAAO,CAAC,CAAC;QAAA;UAA7Cf,MAAM,GAAAuB,SAAA,CAAAjD,IAAA;UAAA,OAAAiD,SAAA,CAAA5C,MAAA,WAEL;YACLJ,IAAI,EAAEyB,MAAM,CAAC2B,IAAI;YACjBC,WAAW,EAAE5B,MAAM,CAAC6B,WAAW;YAC/BC,aAAa,EAAE9B,MAAM,CAAC+B,aAAa;YACnCC,YAAY,EAAEhC,MAAM,CAACiC,YAAY;YACjCC,IAAI,EAAElC,MAAM,CAACmC;UACf,CAAC;QAAA;UAAAZ,SAAA,CAAA/D,IAAA;UAAA8D,GAAA,GAAAC,SAAA;UAAA,MAEGD,GAAA,CAAMc,IAAI,KAAK,WAAW;YAAAb,SAAA,CAAA9D,IAAA;YAAA;UAAA;UAC5BC,OAAO,CAACuD,KAAK,CAAC,wBAAwB,EAAAK,GAAO,CAAC;UAAA,MACxC,IAAI1D,KAAK,2BAAAG,MAAA,CAA2BE,UAAU,OAAAF,MAAA,CAAIM,GAAG,CAAE,CAAC;QAAA;UAGhEX,OAAO,CAACC,KAAK,CAAC,6DAA6D,CAAC;QAAA;QAAA;UAAA,OAAA4D,SAAA,CAAAjC,IAAA;MAAA;IAAA,GAAA8B,QAAA;EAAA,CAE/E;EAAA,OAAAD,mBAAA,CAAA3B,KAAA,OAAAC,SAAA;AAAA;AAED,OAAO,SAASjB,iBAAiBA,CAAA6D,KAAA,EAAwB;EAAA,IAArB5D,YAAY,GAAA4D,KAAA,CAAZ5D,YAAY;IAAEJ,GAAG,GAAAgE,KAAA,CAAHhE,GAAG;EACnD,IAAI,CAACA,GAAG,EAAE;IACR,MAAM,IAAIT,KAAK,CAAC,sCAAsC,CAAC;EACzD;EAEA,IAAM0E,SAAS,GAAGjE,GAAG,CAACkE,WAAW,CAAC,CAAC,CAACC,QAAQ,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,MAAM;EACrE,IAAMC,UAAU,iBAAA1E,MAAA,CAAiBuE,SAAS,aAAU;EACpD,IAAM1F,WAAW,MAAAmB,MAAA,CAAM0E,UAAU,EAAA1E,MAAA,CAAGU,YAAY,CAAE;;EAElD;EACA,IAAMiE,OAAO,GAAGzH,mBAAmB,CAAC2B,WAAW,CAAC;EAChD,IAAI,CAAC8F,OAAO,EAAE;IACZ,MAAM,IAAI9E,KAAK,CAAC,mBAAmB,CAAC;EACtC;EAEA,OAAOhB,WAAW;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASkB,cAAcA,CAAC6E,SAAS,EAAE;EACjC,IAAI,CAACA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;IAC/C,MAAM,IAAI/E,KAAK,CAAC,6CAA6C,CAAC;EAChE;;EAEA;EACA,IAAM1B,GAAG,GAAG,IAAI0G,GAAG,CAACD,SAAS,CAAC;EAE9B,IAAIlG,kBAAkB,GAAG,CAAC,CAAC;EAC3BP,GAAG,CAAC2G,YAAY,CAACC,OAAO,CAAC,UAACC,KAAK,EAAE1E,GAAG,EAAK;IACvC5B,kBAAkB,CAAC4B,GAAG,CAAC,GAAG0E,KAAK;EACjC,CAAC,CAAC;EAEF,IAAIvG,WAAW,GAAGN,GAAG,CAAC2G,YAAY,CAACnE,QAAQ,CAAC,CAAC;EAC7ClC,WAAW,GAAGA,WAAW,GAAGA,WAAW,CAACwG,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE;EAE/D,OAAO;IACLzG,IAAI,EAAEL,GAAG,CAAC+G,QAAQ,CAACC,SAAS,CAAC,CAAC,CAAC;IAAE;IACjC1G,WAAW,EAAXA,WAAW;IACXC,kBAAkB,EAAlBA;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["validateBase64Image","AWS","IMAGE_CACHE_REGION","lambda","Lambda","region","s3","S3","fetchImageForPdfGeneratorService","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","url","_transformerResponse$","urlMatch","applicationId","_parseUrlString","path","queryString","searchParamsObject","transformedBucketImagePath","alreadyTransformedImage","fullDataUrl","transformerResponse","statusCode","redirectLocation","_fullDataUrl","response","buffer","_t","_t2","_t3","wrap","_context","prev","next","console","debug","Error","match","parseUrlString","concat","fetchResourceFromS3","bucketName","process","env","S3_BUCKET_IMAGE_TRANSFORMER_CACHE","key","sent","body","formatBase64Image","base64String","toString","abrupt","requestImageTransformation","headers","Location","fetch","message","ok","status","Buffer","arrayBuffer","from","call","stop","_x","apply","arguments","_x2","_x3","_requestImageTransformation","_callee2","lambdaEvent","params","result","errorMessage","_t4","_context2","queryStringParameters","requestContext","http","method","FunctionName","IMAGE_TRANSFORMER_ARN","InvocationType","Payload","JSON","stringify","invoke","promise","parse","error","_x4","_fetchResourceFromS","_callee3","_ref2","_t5","_context3","Bucket","Key","getObject","Body","contentType","ContentType","contentLength","ContentLength","lastModified","LastModified","etag","ETag","code","_ref3","imageType","toLowerCase","includes","base64Flag","isValid","urlString","URL","searchParams","forEach","value","replace","pathname","substring"],"sources":["../../../src/helpers/fetch-image-for-pdf-generator-service/index.js"],"sourcesContent":["import { validateBase64Image } from '../image-validators'\nimport AWS from 'aws-sdk'\n\n// Image transformer and cache are always in us-east-1 (shared across all regions)\n// The image-optimisation-image-processing Lambda only exists in us-east-1\nconst IMAGE_CACHE_REGION = 'us-east-1'\n\nconst lambda = new AWS.Lambda({\n region: IMAGE_CACHE_REGION,\n})\n\nconst s3 = new AWS.S3({\n region: IMAGE_CACHE_REGION,\n})\n\nexport const fetchImageForPdfGeneratorService = async function (url) {\n console.debug(\n 'Fetching image via CloudFront For Serverless Pdf Generator Service'\n )\n\n if (!url) {\n throw new Error('URL is required to fetch image for PDF generator service')\n }\n\n const urlMatch = url && url.match(/([a-f0-9]{24})\\//)\n const applicationId = urlMatch && urlMatch[1]\n\n if (!applicationId) {\n throw new Error('Requestor has insufficient permissions')\n }\n\n const { path, queryString, searchParamsObject } = parseUrlString(url)\n\n const transformedBucketImagePath =\n path + (queryString ? `/${queryString}` : '')\n\n const alreadyTransformedImage = await fetchResourceFromS3({\n bucketName: process.env.S3_BUCKET_IMAGE_TRANSFORMER_CACHE,\n key: transformedBucketImagePath,\n })\n\n if (alreadyTransformedImage?.body) {\n const fullDataUrl = formatBase64Image({\n base64String: alreadyTransformedImage.body.toString('base64'),\n key: transformedBucketImagePath,\n })\n return fullDataUrl\n }\n\n const transformerResponse = await requestImageTransformation(\n `/${path}`,\n searchParamsObject\n )\n\n const statusCode = transformerResponse.statusCode\n const redirectLocation = transformerResponse.headers?.Location\n\n switch (statusCode) {\n case 200: {\n console.debug('Image transformation successful')\n\n const fullDataUrl = formatBase64Image({\n base64String: transformerResponse.body.toString('base64'),\n key: url,\n })\n\n return fullDataUrl\n }\n case 302: {\n console.debug(\n 'Image transformation successful but image is too big for lambda delivery, fetching directly via redirect URL'\n )\n\n if (!redirectLocation) {\n throw new Error('Redirect response received but no location provided')\n }\n\n let response\n try {\n response = await fetch(redirectLocation)\n } catch (error) {\n throw new Error(\n `Failed to fetch image from redirect URL: ${error.message}`\n )\n }\n\n if (!response.ok) {\n throw new Error(\n `Failed to fetch image from redirect: ${response.status}`\n )\n }\n\n const buffer = Buffer.from(await response.arrayBuffer())\n\n return formatBase64Image({\n base64String: buffer.toString('base64'),\n key: transformedBucketImagePath,\n })\n }\n case 400:\n throw new Error(\n `Bad request to image transformer: ${transformerResponse.body}`\n )\n case 403:\n throw new Error('Requested transformed image is too big')\n case 404:\n throw new Error('The requested image does not exist')\n case 500:\n throw new Error(\n `Image transformation failed: ${transformerResponse.body}`\n )\n default:\n throw new Error(\n `Unexpected response from image transformer: ${statusCode} - ${transformerResponse.body}`\n )\n }\n}\n\nexport async function requestImageTransformation(path, searchParamsObject) {\n if (!path) {\n throw new Error('Image Path is required for image transformation')\n }\n\n console.debug(\n 'ImageTransformation: Invoking image transformer lambda for path:',\n { path, searchParamsObject }\n )\n\n const lambdaEvent = {\n queryStringParameters: searchParamsObject,\n requestContext: {\n http: {\n method: 'GET',\n path,\n },\n },\n }\n\n const params = {\n FunctionName: process.env.IMAGE_TRANSFORMER_ARN,\n InvocationType: 'RequestResponse',\n Payload: JSON.stringify(lambdaEvent),\n }\n\n try {\n const result = await lambda.invoke(params).promise()\n\n const response = JSON.parse(result.Payload)\n\n return response\n } catch (error) {\n const errorMessage = `Failed to invoke image transformer lambda: ${error.message}`\n console.error(errorMessage, error)\n throw new Error(errorMessage)\n }\n}\n\nexport async function fetchResourceFromS3({ bucketName, key }) {\n console.debug(\n `Fetching resource from S3 Bucket: '${bucketName}' at path: '${key}'`\n )\n if (!bucketName || !key) {\n throw new Error(\n 'bucketName and key are required for S3 resource fetch ' +\n JSON.stringify({ bucketName, key })\n )\n }\n\n const params = {\n Bucket: bucketName,\n Key: key,\n }\n\n try {\n const result = await s3.getObject(params).promise()\n\n return {\n body: result.Body,\n contentType: result.ContentType,\n contentLength: result.ContentLength,\n lastModified: result.LastModified,\n etag: result.ETag,\n }\n } catch (error) {\n if (error.code !== 'NoSuchKey') {\n console.error('Failed to fetch image:', error)\n throw new Error(`Failed to fetch image: ${bucketName}/${key}`)\n }\n\n console.debug('Image not found in transformed bucket, invoking transformer')\n }\n}\n\nexport function formatBase64Image({ base64String, key }) {\n if (!key) {\n throw new Error('Key is required for image formatting')\n }\n\n const imageType = key.toLowerCase().includes('.png') ? 'png' : 'jpeg'\n const base64Flag = `data:image/${imageType};base64,`\n const fullDataUrl = `${base64Flag}${base64String}`\n\n // Validate the formatted data URL\n const isValid = validateBase64Image(fullDataUrl)\n if (!isValid) {\n throw new Error('InvalidImageError')\n }\n\n return fullDataUrl\n}\n\n/**\n * Parses a URL-like string into path and query parameters\n * @param {string} urlString - String like \"https://example.cloudfront.net/<applicationId>/<path>/filename.jpeg?width=100&height=100\"\n * @returns {Object} - Object with { path: string, queryString: string, searchParamsObject: Object }\n * @example\n * parseUrlString(\"https://example.cloudfront.net/abc123/folder/image.jpeg?width=100&height=100\")\n * // Returns: { path: \"abc123/folder/image.jpeg\", queryString: \"width=100,t=456\", searchParamsObject: { width: \"100\", height: \"100\" } }\n */\nfunction parseUrlString(urlString) {\n if (!urlString || typeof urlString !== 'string') {\n throw new Error('URL string is required and must be a string')\n }\n\n // Extract the path after the domain\n const url = new URL(urlString)\n\n let searchParamsObject = {}\n url.searchParams.forEach((value, key) => {\n searchParamsObject[key] = value\n })\n\n let queryString = url.searchParams.toString()\n queryString = queryString ? queryString.replace(/&/g, ',') : ''\n\n return {\n path: url.pathname.substring(1), // Remove leading '/'\n queryString,\n searchParamsObject,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -47,6 +47,7 @@ export function getAuditItemsData(items, data) {
47
47
  var rawAssets = item.assets || [];
48
48
  var assetCount = rawAssets.length;
49
49
  var assets = rawAssets.map(function (asset, assetIndex) {
50
+ var _item$signedAssets;
50
51
  var assetUrl = buildFetchUrl(asset, {
51
52
  awsS3BaseUrl: awsS3BaseUrl,
52
53
  cloudfrontBaseUrl: cloudfrontBaseUrl,
@@ -60,7 +61,7 @@ export function getAuditItemsData(items, data) {
60
61
  KeyPairId: KeyPairId,
61
62
  Signature: Signature
62
63
  });
63
- var link = shouldUseCloudfront ? "".concat(cloudfrontBaseUrl, "/").concat(item.signedAssets[assetIndex]) : "".concat(awsS3BaseUrl, "/").concat(asset);
64
+ var link = shouldUseCloudfront ? "".concat(cloudfrontBaseUrl, "/").concat(((_item$signedAssets = item.signedAssets) === null || _item$signedAssets === void 0 ? void 0 : _item$signedAssets[assetIndex]) || asset) : "".concat(awsS3BaseUrl, "/").concat(asset);
64
65
  var thumbnailUrl = buildFetchUrl(asset, _defineProperty(_defineProperty(_defineProperty(_defineProperty({
65
66
  awsS3BaseUrl: awsS3BaseUrl,
66
67
  cloudfrontBaseUrl: cloudfrontBaseUrl,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["find","groupBy","map","get","round","buildFetchUrl","getAuditItemsData","items","data","_data$settings","settings","_data$settings2","awsS3BaseUrl","cloudinaryBaseUrl","cloudfrontBaseUrl","Policy","KeyPairId","Signature","shouldUseCloudfront","_data$entity","entity","_data$entity2","groupScores","groupedItems","auditData","overallActualScore","overallMaximumScore","groupIndex","key","skipped","group","title","label","groupData","groupMaximumScore","groupActualScore","groupResultScore","groupPercentageResultScore","currentGroupScores","max","actual","result","percentageResult","item","itemIndex","hasScore","score","rawAssets","assets","assetCount","length","asset","assetIndex","assetUrl","height","width","quality","fit","link","concat","signedAssets","thumbnailUrl","_defineProperty","comments","matchingScore","scores","value","scoreLabel","scoreWeight","weight","questionId","_id"],"sources":["../../../src/helpers/get-audit-items-data/index.js"],"sourcesContent":["import { find, groupBy, map, get, round } from 'lodash'\n\nimport { buildFetchUrl } from '../'\n\nexport function getAuditItemsData(items, data) {\n const {\n settings: {\n awsS3BaseUrl,\n cloudinaryBaseUrl,\n cloudfrontBaseUrl,\n Policy,\n KeyPairId,\n Signature,\n shouldUseCloudfront,\n } = {},\n entity: { groupScores } = {},\n } = data\n\n const groupedItems = groupBy(items, 'group.id')\n\n const auditData = {\n overallActualScore: 0,\n overallMaximumScore: 0,\n }\n\n auditData.items = map(groupedItems, (items, groupIndex) => {\n const key = groupIndex\n const skipped = !!items[0].group.skipped\n const title = items[0].group.label\n\n const groupData = {\n key,\n groupMaximumScore: 0,\n groupActualScore: 0,\n groupResultScore: 0,\n groupPercentageResultScore: 0,\n skipped,\n title,\n }\n\n const currentGroupScores = get(groupScores, key)\n\n if (currentGroupScores) {\n groupData.groupMaximumScore = round(currentGroupScores.max, 2)\n groupData.groupActualScore = round(currentGroupScores.actual, 2)\n groupData.groupResultScore = currentGroupScores.result\n groupData.groupPercentageResultScore = currentGroupScores.percentageResult\n }\n\n groupData.items = items.map((item, itemIndex) => {\n // NOTE: we handle scores of -1, 0 and 1\n // -1 scores are skipped from group max and actual score\n // 0 and 1 must be included in the final scores\n const hasScore = item.score !== null && item.score !== -1\n const rawAssets = item.assets || []\n const assetCount = rawAssets.length\n\n const assets = rawAssets.map((asset, assetIndex) => {\n const assetUrl = buildFetchUrl(asset, {\n awsS3BaseUrl,\n cloudfrontBaseUrl,\n cloudinaryBaseUrl,\n height: 400,\n width: 600,\n quality: 50,\n fit: true,\n shouldUseCloudfront,\n Policy,\n KeyPairId,\n Signature,\n })\n\n const link = shouldUseCloudfront\n ? `${cloudfrontBaseUrl}/${item.signedAssets[assetIndex]}`\n : `${awsS3BaseUrl}/${asset}`\n\n const thumbnailUrl = buildFetchUrl(asset, {\n awsS3BaseUrl,\n cloudfrontBaseUrl,\n cloudinaryBaseUrl,\n shouldUseCloudfront,\n width: 100,\n quality: 50,\n fit: true,\n shouldUseCloudfront,\n Policy,\n KeyPairId,\n Signature,\n })\n\n const key = `${groupIndex}-item-asset-${assetIndex}`\n\n return {\n assetUrl,\n key,\n link,\n thumbnailUrl,\n }\n })\n\n const comments = item.comments\n const label = item.label\n const score = item.score\n const key = `${groupIndex}-item-${itemIndex}`\n const matchingScore = find(item.scores, { value: score })\n\n // NOTE: ensure we have a score otherwise fallback to - value\n const scoreLabel =\n hasScore && matchingScore && !skipped ? matchingScore.label : '-'\n const scoreWeight = hasScore && !skipped ? item.scoreWeight : '-'\n const weight = hasScore ? item.weight : '-'\n\n return {\n assetCount,\n assets,\n comments,\n key,\n label,\n questionId: item._id,\n score,\n scoreLabel,\n scoreWeight,\n weight,\n }\n })\n\n return groupData\n })\n\n return auditData\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["find","groupBy","map","get","round","buildFetchUrl","getAuditItemsData","items","data","_data$settings","settings","_data$settings2","awsS3BaseUrl","cloudinaryBaseUrl","cloudfrontBaseUrl","Policy","KeyPairId","Signature","shouldUseCloudfront","_data$entity","entity","_data$entity2","groupScores","groupedItems","auditData","overallActualScore","overallMaximumScore","groupIndex","key","skipped","group","title","label","groupData","groupMaximumScore","groupActualScore","groupResultScore","groupPercentageResultScore","currentGroupScores","max","actual","result","percentageResult","item","itemIndex","hasScore","score","rawAssets","assets","assetCount","length","asset","assetIndex","_item$signedAssets","assetUrl","height","width","quality","fit","link","concat","signedAssets","thumbnailUrl","_defineProperty","comments","matchingScore","scores","value","scoreLabel","scoreWeight","weight","questionId","_id"],"sources":["../../../src/helpers/get-audit-items-data/index.js"],"sourcesContent":["import { find, groupBy, map, get, round } from 'lodash'\n\nimport { buildFetchUrl } from '../'\n\nexport function getAuditItemsData(items, data) {\n const {\n settings: {\n awsS3BaseUrl,\n cloudinaryBaseUrl,\n cloudfrontBaseUrl,\n Policy,\n KeyPairId,\n Signature,\n shouldUseCloudfront,\n } = {},\n entity: { groupScores } = {},\n } = data\n\n const groupedItems = groupBy(items, 'group.id')\n\n const auditData = {\n overallActualScore: 0,\n overallMaximumScore: 0,\n }\n\n auditData.items = map(groupedItems, (items, groupIndex) => {\n const key = groupIndex\n const skipped = !!items[0].group.skipped\n const title = items[0].group.label\n\n const groupData = {\n key,\n groupMaximumScore: 0,\n groupActualScore: 0,\n groupResultScore: 0,\n groupPercentageResultScore: 0,\n skipped,\n title,\n }\n\n const currentGroupScores = get(groupScores, key)\n\n if (currentGroupScores) {\n groupData.groupMaximumScore = round(currentGroupScores.max, 2)\n groupData.groupActualScore = round(currentGroupScores.actual, 2)\n groupData.groupResultScore = currentGroupScores.result\n groupData.groupPercentageResultScore = currentGroupScores.percentageResult\n }\n\n groupData.items = items.map((item, itemIndex) => {\n // NOTE: we handle scores of -1, 0 and 1\n // -1 scores are skipped from group max and actual score\n // 0 and 1 must be included in the final scores\n const hasScore = item.score !== null && item.score !== -1\n const rawAssets = item.assets || []\n const assetCount = rawAssets.length\n\n const assets = rawAssets.map((asset, assetIndex) => {\n const assetUrl = buildFetchUrl(asset, {\n awsS3BaseUrl,\n cloudfrontBaseUrl,\n cloudinaryBaseUrl,\n height: 400,\n width: 600,\n quality: 50,\n fit: true,\n shouldUseCloudfront,\n Policy,\n KeyPairId,\n Signature,\n })\n\n const link = shouldUseCloudfront\n ? `${cloudfrontBaseUrl}/${item.signedAssets?.[assetIndex] || asset}`\n : `${awsS3BaseUrl}/${asset}`\n\n const thumbnailUrl = buildFetchUrl(asset, {\n awsS3BaseUrl,\n cloudfrontBaseUrl,\n cloudinaryBaseUrl,\n shouldUseCloudfront,\n width: 100,\n quality: 50,\n fit: true,\n shouldUseCloudfront,\n Policy,\n KeyPairId,\n Signature,\n })\n\n const key = `${groupIndex}-item-asset-${assetIndex}`\n\n return {\n assetUrl,\n key,\n link,\n thumbnailUrl,\n }\n })\n\n const comments = item.comments\n const label = item.label\n const score = item.score\n const key = `${groupIndex}-item-${itemIndex}`\n const matchingScore = find(item.scores, { value: score })\n\n // NOTE: ensure we have a score otherwise fallback to - value\n const scoreLabel =\n hasScore && matchingScore && !skipped ? matchingScore.label : '-'\n const scoreWeight = hasScore && !skipped ? item.scoreWeight : '-'\n const weight = hasScore ? item.weight : '-'\n\n return {\n assetCount,\n assets,\n comments,\n key,\n label,\n questionId: item._id,\n score,\n scoreLabel,\n scoreWeight,\n weight,\n }\n })\n\n return groupData\n })\n\n return auditData\n}\n"],"mappings":"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","ignoreList":[]}
@@ -39,7 +39,7 @@ var LIGHTHOUSE_BASE_URL = 'https://app.lighthouse.io';
39
39
  * @param {string} data.start - start datetime of summary report
40
40
  * @param {object} data.settings - settings properties
41
41
  * @param {string} data.settings.awsS3BaseUrl - aws S3 base url
42
- * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url
42
+ * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url
43
43
  * @param {array} data.tasks - task documents
44
44
  * @param {string} data.timestamp - timestamp string
45
45
  * @param {string} data.timezone - timezone string
@@ -1 +1 @@
1
- {"version":3,"file":"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","MAX_ATTACHMENTS","LIGHTHOUSE_BASE_URL","buildActivityPdf","_x","_x2","_buildActivityPdf","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","_data$showAlternate","showAlternate","locationScans","otherActivity","activitySummary","_context3","buildLocationScansSection","buildOtherActivitySection","buildActivitySummarySection","_x5","_buildActivitySummarySection","_callee4","audits","events","issues","_data$maxScans","maxScans","settings","tasks","enterEvents","exceedsMaxScans","scans","auditRows","issueRows","scanRows","taskRows","formCount","exceedsMaxForms","rows","sortedRows","header","hLine","activityTable","activitySummarySection","maxScansText","maxFormsText","_context4","event","getFormRowData","getScanRowData","concat","_toConsumableArray","style","body","layout","buildActivityTable","link","margin","push","_x6","_buildActivityTable","_callee6","_ref","timezoneAbbr","activityTableHeader","activityTableRows","activityTableBody","_context6","bold","alignment","_ref4","_callee5","location","icon","name","summaryFields","timezoneHour","iconCell","hasSummaryFields","fieldsTable","activityTableRow","_context5","format","showTzAbbr","fit","image","fields","colSpan","dontBreakRows","headerRow","hLineWidth","paddingLeft","paddingRight","paddingTop","paddingBottom","vLineWidth","widths","_x8","fillColor","start","zones","hourIntervalBoundaries","hourIntervalColumnHeaders","columns","interval","index","intervals","scansTableHeader","sortedZones","groupedEventsByZone","memo","zone","zoneEvents","_id","scansTableRows","length","undefined","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","_x7","_buildOtherActivitySection","_callee7","otherActivitySummarySection","_context7","end","_location$address","address","headerTitle","headerSubTitle","addressText","street","city","state","postalCode","headerAddress","mTimezoneStart","tz","mTimezoneEnd","rangeStart","rangeEnd","add","startOf","headerRange","collection","_ref2","locations","users","document","createdAt","_document$entry","entry","_document$title","_document$user","user","entity","userDoc","firstName","lastName","_ref3","_document$user2","_document$zone"],"sources":["../../../src/pdf/activity-report/index.js"],"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 MAX_ATTACHMENTS = 100\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 formCount = size([...auditRows, ...issueRows, ...taskRows])\n const exceedsMaxForms = formCount > 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 `Detailed Form Submissions in the Daily Activity Report are limited to a total of ${MAX_ATTACHMENTS}. `\n ),\n text(\n 'To access individual Form Submissions, open the hyperlink next to the respective submission within the Activity Summary table. Alternatively, they may be accessed in the Lighthouse Management Console.'\n ),\n ],\n style: 'small',\n margin: [0, 10, 0, 10],\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 const otherActivitySummarySection = [header, hLine, activityTable]\n\n const formCount = size(rows)\n const exceedsMaxForms = formCount > MAX_ATTACHMENTS\n\n if (exceedsMaxForms) {\n const maxFormsText = {\n text: [\n text(\n `Detailed Form Submissions in the Daily Activity Report are limited to a total of ${MAX_ATTACHMENTS}. `\n ),\n text(\n 'To access individual Form Submissions, open the hyperlink next to the respective submission within the Other Activity table. Alternatively, they may be accessed in the Lighthouse Management Console.'\n ),\n ],\n style: 'small',\n margin: [0, 10, 0, 10],\n }\n otherActivitySummarySection.push(maxFormsText)\n }\n\n return otherActivitySummarySection\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"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","MAX_ATTACHMENTS","LIGHTHOUSE_BASE_URL","buildActivityPdf","_x","_x2","_buildActivityPdf","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","_data$showAlternate","showAlternate","locationScans","otherActivity","activitySummary","_context3","buildLocationScansSection","buildOtherActivitySection","buildActivitySummarySection","_x5","_buildActivitySummarySection","_callee4","audits","events","issues","_data$maxScans","maxScans","settings","tasks","enterEvents","exceedsMaxScans","scans","auditRows","issueRows","scanRows","taskRows","formCount","exceedsMaxForms","rows","sortedRows","header","hLine","activityTable","activitySummarySection","maxScansText","maxFormsText","_context4","event","getFormRowData","getScanRowData","concat","_toConsumableArray","style","body","layout","buildActivityTable","link","margin","push","_x6","_buildActivityTable","_callee6","_ref","timezoneAbbr","activityTableHeader","activityTableRows","activityTableBody","_context6","bold","alignment","_ref4","_callee5","location","icon","name","summaryFields","timezoneHour","iconCell","hasSummaryFields","fieldsTable","activityTableRow","_context5","format","showTzAbbr","fit","image","fields","colSpan","dontBreakRows","headerRow","hLineWidth","paddingLeft","paddingRight","paddingTop","paddingBottom","vLineWidth","widths","_x8","fillColor","start","zones","hourIntervalBoundaries","hourIntervalColumnHeaders","columns","interval","index","intervals","scansTableHeader","sortedZones","groupedEventsByZone","memo","zone","zoneEvents","_id","scansTableRows","length","undefined","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","_x7","_buildOtherActivitySection","_callee7","otherActivitySummarySection","_context7","end","_location$address","address","headerTitle","headerSubTitle","addressText","street","city","state","postalCode","headerAddress","mTimezoneStart","tz","mTimezoneEnd","rangeStart","rangeEnd","add","startOf","headerRange","collection","_ref2","locations","users","document","createdAt","_document$entry","entry","_document$title","_document$user","user","entity","userDoc","firstName","lastName","_ref3","_document$user2","_document$zone"],"sources":["../../../src/pdf/activity-report/index.js"],"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 MAX_ATTACHMENTS = 100\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.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.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 formCount = size([...auditRows, ...issueRows, ...taskRows])\n const exceedsMaxForms = formCount > 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 `Detailed Form Submissions in the Daily Activity Report are limited to a total of ${MAX_ATTACHMENTS}. `\n ),\n text(\n 'To access individual Form Submissions, open the hyperlink next to the respective submission within the Activity Summary table. Alternatively, they may be accessed in the Lighthouse Management Console.'\n ),\n ],\n style: 'small',\n margin: [0, 10, 0, 10],\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 const otherActivitySummarySection = [header, hLine, activityTable]\n\n const formCount = size(rows)\n const exceedsMaxForms = formCount > MAX_ATTACHMENTS\n\n if (exceedsMaxForms) {\n const maxFormsText = {\n text: [\n text(\n `Detailed Form Submissions in the Daily Activity Report are limited to a total of ${MAX_ATTACHMENTS}. `\n ),\n text(\n 'To access individual Form Submissions, open the hyperlink next to the respective submission within the Other Activity table. Alternatively, they may be accessed in the Lighthouse Management Console.'\n ),\n ],\n style: 'small',\n margin: [0, 10, 0, 10],\n }\n otherActivitySummarySection.push(maxFormsText)\n }\n\n return otherActivitySummarySection\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 || ''} ${\n 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"],"mappings":"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","ignoreList":[]}
@@ -27,7 +27,7 @@ import { getAuditEntryDetails } from '../../helpers';
27
27
  * @param {object} data.locations - locations documents
28
28
  * @param {object} data.settings - settings properties
29
29
  * @param {string} data.settings.awsS3BaseUrl - aws S3 base url
30
- * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url
30
+ * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url
31
31
  * @param {string} data.timezone - timezone string
32
32
  * @param {object} data.users - application user documents
33
33
  * @returns {Promise} returns pdfmake definition object
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Promise","isEmpty","round","moment","buildAuditContent","buildAuditFollowUps","buildTemplateContent","generateDefinition","getFormattedAddress","horizontalLine","text","twoColumnTable","getAuditEntryDetails","buildAuditPdf","pdfOptions","data","entity","timezone","_pdfOptions$flags","flags","sequenceId","timestamp","createdAt","title","fileTitle","concat","generateContent","then","content","_objectSpread","type","catch","err","Error","message","_entity$followUps","followUps","_entity$footerFields","footerFields","_entity$gps","gps","_entity$headerFields","headerFields","_entity$score","score","_entity$title","entityDetails","gpsText","groupedData","locationText","referenceValue","timezoneHourTime","scoreText","target","targetServiceLevel","renderTargetFields","headerTitle","style","headerScore","alignment","firstRow","subTitle","headerSubTitle","colSpan","secondRow","reverseGeocoded","address","renderHeaderAddress","dummyColumn","headerAddress","renderThirdRow","thirdRow","serviceLevelBelow","serviceLevelText","scoreServiceLevelSubTitle","truncatedTargetPercent","scoreTargetText","scoreTargetSubTitle","scoreBreakdown","actual","max","scorePercentage","scoreTitle","body","submittedAtInTimezone","submittedAt","tz","format","showSimplifiedDuration","push","startedAtInTimezone","startedAt","momentDuration","duration","Math","abs","formDuration","days","floor","asDays","toString","padStart","hours","minutes","seconds","formattedFormDuration","titleTable","layout","widths","margin","totalScoreTable","hLineTop","hLineBottom","followUpItems","promises","entry","items","settings","footerTemplate","formGroups","headerTemplate","auditItemsTitle","font","lineHeight","props","_ref","_toConsumableArray"],"sources":["../../../src/pdf/audit/index.js"],"sourcesContent":["import Promise from 'bluebird'\nimport { isEmpty, round } from 'lodash'\nimport moment from 'moment-timezone'\n\nimport {\n buildAuditContent,\n buildAuditFollowUps,\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n horizontalLine,\n text,\n twoColumnTable,\n} from '../helpers'\nimport { getAuditEntryDetails } from '../../helpers'\n\n/**\n * buildAuditPdf\n *\n * @param {object} pdfOptions - the pdf options\n * @param {string} pdfOptions.fileTitle - pdf file title\n * @param {function} pdfOptions.footer - function executed to generate footer\n * @param {function} pdfOptions.header - function executed to generate header\n * @param {string} pdfOptions.logoUrl - pdf logo url\n * @param {array} pdfOptions.pageMargins - pdf page margins\n * @param {string} pdfOptions.pageOrientation - pdf page orientation\n * @param {string} pdfOptions.pageSize - pdf page size\n * @param {object} pdfOptions.styles - pdf styles\n * @param {object} pdfOptions.title - pdf title\n * @param {object} pdfOptions.flags - flags to conditionally render parts of the pdf\n * @param {object} data - pdf data\n * @param {object} data.entity - audit document\n * @param {object} data.locations - locations documents\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @returns {Promise} returns pdfmake definition object\n */\nexport function buildAuditPdf(pdfOptions, data) {\n const { entity, timezone } = data\n const { flags = {} } = pdfOptions\n\n const sequenceId = entity.sequenceId\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n const fileTitle = `Audit Report - ${title}`\n\n return generateContent(data, flags)\n .then(content =>\n generateDefinition({\n content,\n fileTitle,\n sequenceId,\n timestamp,\n timezone,\n type: 'Audit',\n ...pdfOptions,\n })\n )\n .catch(err => {\n throw new Error(`BuildAuditPdfError: ${err.message}`)\n })\n}\n\nfunction generateContent(data) {\n const { entity } = data\n\n const {\n followUps = [],\n footerFields = {},\n gps = {},\n headerFields = {},\n score = {},\n title = 'Unknown',\n } = entity\n\n const timezone = entity?.timezone || data?.timezone || 'UTC'\n const entityDetails = getAuditEntryDetails(data)\n\n const {\n gpsText,\n groupedData,\n locationText,\n referenceValue,\n timezoneHourTime,\n scoreText,\n target,\n targetServiceLevel,\n } = entityDetails\n\n const renderTargetFields = !!targetServiceLevel\n const headerTitle = text(title, { style: 'title' })\n const headerScore = text(scoreText, { alignment: 'right', style: 'title' })\n const firstRow = [headerTitle, headerScore]\n const subTitle = `${locationText ||\n gpsText} - ${timezoneHourTime} by ${referenceValue}`\n\n let headerSubTitle = text(subTitle, { colSpan: 2, style: 'subTitle' })\n let secondRow = [headerSubTitle]\n\n const reverseGeocoded = gps.reverseGeocoded\n const address = !isEmpty(reverseGeocoded)\n ? getFormattedAddress(reverseGeocoded)\n : ''\n const renderHeaderAddress = !isEmpty(reverseGeocoded)\n const dummyColumn = text(' ', { style: 'small' })\n\n let headerAddress = text(address, { colSpan: 2, style: 'small' })\n const renderThirdRow = renderHeaderAddress || renderTargetFields\n let thirdRow = renderHeaderAddress ? [headerAddress] : []\n\n if (renderTargetFields) {\n headerSubTitle = text(subTitle, { style: 'subTitle' })\n\n const serviceLevelBelow = targetServiceLevel === 'below'\n const serviceLevelText =\n targetServiceLevel === 'above'\n ? 'Above Target'\n : targetServiceLevel === 'on'\n ? 'On Target'\n : targetServiceLevel === 'below'\n ? 'Below Target'\n : ''\n\n const scoreServiceLevelSubTitle = text(serviceLevelText, {\n alignment: 'right',\n style: serviceLevelBelow ? 'serviceLevelBelow' : 'serviceLevelAboveOrOn',\n })\n\n secondRow = [headerSubTitle, scoreServiceLevelSubTitle]\n headerAddress = text(address, { style: 'small' })\n\n const truncatedTargetPercent = round(target, 2)\n const scoreTargetText = `(Target - ${truncatedTargetPercent}%)`\n const scoreTargetSubTitle = text(scoreTargetText, {\n alignment: 'right',\n style: 'subTitle',\n })\n\n thirdRow = renderHeaderAddress\n ? [headerAddress, scoreTargetSubTitle]\n : [dummyColumn, scoreTargetSubTitle]\n }\n\n const scoreBreakdown = text(\n `${round(score.actual, 2)} / ${round(score.max, 2)}`,\n {\n alignment: 'right',\n style: 'totalScore',\n }\n )\n const scorePercentage = text(scoreText, {\n alignment: 'right',\n colSpan: 2,\n style: 'totalAuditScore',\n })\n const scoreTitle = text('Total Score', { style: 'totalScore' })\n\n const body = renderThirdRow\n ? [firstRow, secondRow, thirdRow]\n : [firstRow, secondRow]\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n if (entity.showSimplifiedDuration) {\n body.push([submittedAt, dummyColumn])\n } else {\n const startedAtInTimezone = entity.startedAt\n ? moment(entity.startedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const startedAt = text(`Started: ${startedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n const momentDuration = moment.duration(Math.abs(entity.formDuration))\n const days = Math.floor(momentDuration.asDays())\n .toString()\n .padStart(2, '0')\n const hours = Math.floor(momentDuration.hours())\n .toString()\n .padStart(2, '0')\n const minutes = momentDuration\n .minutes()\n .toString()\n .padStart(2, '0')\n const seconds = momentDuration\n .seconds()\n .toString()\n .padStart(2, '0')\n const formattedFormDuration = entity.formDuration\n ? `${\n entity.formDuration < 0 ? '-' : ''\n }${days}:${hours}:${minutes}:${seconds}`\n : 'Not recorded'\n const formDuration = text(\n `Form Duration (DD:HH:MM:SS): ${formattedFormDuration}`,\n {\n colSpan: 2,\n style: 'small',\n }\n )\n\n body.push([startedAt, dummyColumn])\n body.push([submittedAt, dummyColumn])\n body.push([formDuration, dummyColumn])\n }\n\n const titleTable = twoColumnTable({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n widths: ['*', 100],\n margin: [0, 0, 0, 30],\n })\n\n const totalScoreTable = twoColumnTable({\n body: [[scoreTitle, scoreBreakdown], [scorePercentage]],\n layout: 'noBorders',\n widths: ['*', 100],\n })\n\n const hLineTop = horizontalLine({ margin: [0, 10, 0, 0] })\n const hLineBottom = horizontalLine()\n\n const followUpItems = buildAuditFollowUps(followUps, { timezone })\n\n const promises = {\n entry: buildAuditContent(groupedData.items, data.settings),\n footerTemplate: buildTemplateContent(footerFields.formGroups, data),\n headerTemplate: buildTemplateContent(headerFields.formGroups, data),\n }\n\n const auditItemsTitle = [\n {\n text: 'Audit Items',\n style: {\n font: 'Gotham',\n lineHeight: 1.1,\n },\n },\n hLineTop,\n ]\n\n return Promise.props(promises)\n .then(({ entry, footerTemplate, headerTemplate }) => [\n titleTable,\n followUpItems,\n ...auditItemsTitle,\n ...headerTemplate,\n ...entry,\n hLineTop,\n totalScoreTable,\n hLineBottom,\n ...footerTemplate,\n ])\n .catch(err => {\n throw new Error(`GenerateContentError: ${err.message}`)\n })\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Promise","isEmpty","round","moment","buildAuditContent","buildAuditFollowUps","buildTemplateContent","generateDefinition","getFormattedAddress","horizontalLine","text","twoColumnTable","getAuditEntryDetails","buildAuditPdf","pdfOptions","data","entity","timezone","_pdfOptions$flags","flags","sequenceId","timestamp","createdAt","title","fileTitle","concat","generateContent","then","content","_objectSpread","type","catch","err","Error","message","_entity$followUps","followUps","_entity$footerFields","footerFields","_entity$gps","gps","_entity$headerFields","headerFields","_entity$score","score","_entity$title","entityDetails","gpsText","groupedData","locationText","referenceValue","timezoneHourTime","scoreText","target","targetServiceLevel","renderTargetFields","headerTitle","style","headerScore","alignment","firstRow","subTitle","headerSubTitle","colSpan","secondRow","reverseGeocoded","address","renderHeaderAddress","dummyColumn","headerAddress","renderThirdRow","thirdRow","serviceLevelBelow","serviceLevelText","scoreServiceLevelSubTitle","truncatedTargetPercent","scoreTargetText","scoreTargetSubTitle","scoreBreakdown","actual","max","scorePercentage","scoreTitle","body","submittedAtInTimezone","submittedAt","tz","format","showSimplifiedDuration","push","startedAtInTimezone","startedAt","momentDuration","duration","Math","abs","formDuration","days","floor","asDays","toString","padStart","hours","minutes","seconds","formattedFormDuration","titleTable","layout","widths","margin","totalScoreTable","hLineTop","hLineBottom","followUpItems","promises","entry","items","settings","footerTemplate","formGroups","headerTemplate","auditItemsTitle","font","lineHeight","props","_ref","_toConsumableArray"],"sources":["../../../src/pdf/audit/index.js"],"sourcesContent":["import Promise from 'bluebird'\nimport { isEmpty, round } from 'lodash'\nimport moment from 'moment-timezone'\n\nimport {\n buildAuditContent,\n buildAuditFollowUps,\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n horizontalLine,\n text,\n twoColumnTable,\n} from '../helpers'\nimport { getAuditEntryDetails } from '../../helpers'\n\n/**\n * buildAuditPdf\n *\n * @param {object} pdfOptions - the pdf options\n * @param {string} pdfOptions.fileTitle - pdf file title\n * @param {function} pdfOptions.footer - function executed to generate footer\n * @param {function} pdfOptions.header - function executed to generate header\n * @param {string} pdfOptions.logoUrl - pdf logo url\n * @param {array} pdfOptions.pageMargins - pdf page margins\n * @param {string} pdfOptions.pageOrientation - pdf page orientation\n * @param {string} pdfOptions.pageSize - pdf page size\n * @param {object} pdfOptions.styles - pdf styles\n * @param {object} pdfOptions.title - pdf title\n * @param {object} pdfOptions.flags - flags to conditionally render parts of the pdf\n * @param {object} data - pdf data\n * @param {object} data.entity - audit document\n * @param {object} data.locations - locations documents\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @returns {Promise} returns pdfmake definition object\n */\nexport function buildAuditPdf(pdfOptions, data) {\n const { entity, timezone } = data\n const { flags = {} } = pdfOptions\n\n const sequenceId = entity.sequenceId\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n const fileTitle = `Audit Report - ${title}`\n\n return generateContent(data, flags)\n .then((content) =>\n generateDefinition({\n content,\n fileTitle,\n sequenceId,\n timestamp,\n timezone,\n type: 'Audit',\n ...pdfOptions,\n })\n )\n .catch((err) => {\n throw new Error(`BuildAuditPdfError: ${err.message}`)\n })\n}\n\nfunction generateContent(data) {\n const { entity } = data\n\n const {\n followUps = [],\n footerFields = {},\n gps = {},\n headerFields = {},\n score = {},\n title = 'Unknown',\n } = entity\n\n const timezone = entity?.timezone || data?.timezone || 'UTC'\n const entityDetails = getAuditEntryDetails(data)\n\n const {\n gpsText,\n groupedData,\n locationText,\n referenceValue,\n timezoneHourTime,\n scoreText,\n target,\n targetServiceLevel,\n } = entityDetails\n\n const renderTargetFields = !!targetServiceLevel\n const headerTitle = text(title, { style: 'title' })\n const headerScore = text(scoreText, { alignment: 'right', style: 'title' })\n const firstRow = [headerTitle, headerScore]\n const subTitle = `${\n locationText || gpsText\n } - ${timezoneHourTime} by ${referenceValue}`\n\n let headerSubTitle = text(subTitle, { colSpan: 2, style: 'subTitle' })\n let secondRow = [headerSubTitle]\n\n const reverseGeocoded = gps.reverseGeocoded\n const address = !isEmpty(reverseGeocoded)\n ? getFormattedAddress(reverseGeocoded)\n : ''\n const renderHeaderAddress = !isEmpty(reverseGeocoded)\n const dummyColumn = text(' ', { style: 'small' })\n\n let headerAddress = text(address, { colSpan: 2, style: 'small' })\n const renderThirdRow = renderHeaderAddress || renderTargetFields\n let thirdRow = renderHeaderAddress ? [headerAddress] : []\n\n if (renderTargetFields) {\n headerSubTitle = text(subTitle, { style: 'subTitle' })\n\n const serviceLevelBelow = targetServiceLevel === 'below'\n const serviceLevelText =\n targetServiceLevel === 'above'\n ? 'Above Target'\n : targetServiceLevel === 'on'\n ? 'On Target'\n : targetServiceLevel === 'below'\n ? 'Below Target'\n : ''\n\n const scoreServiceLevelSubTitle = text(serviceLevelText, {\n alignment: 'right',\n style: serviceLevelBelow ? 'serviceLevelBelow' : 'serviceLevelAboveOrOn',\n })\n\n secondRow = [headerSubTitle, scoreServiceLevelSubTitle]\n headerAddress = text(address, { style: 'small' })\n\n const truncatedTargetPercent = round(target, 2)\n const scoreTargetText = `(Target - ${truncatedTargetPercent}%)`\n const scoreTargetSubTitle = text(scoreTargetText, {\n alignment: 'right',\n style: 'subTitle',\n })\n\n thirdRow = renderHeaderAddress\n ? [headerAddress, scoreTargetSubTitle]\n : [dummyColumn, scoreTargetSubTitle]\n }\n\n const scoreBreakdown = text(\n `${round(score.actual, 2)} / ${round(score.max, 2)}`,\n {\n alignment: 'right',\n style: 'totalScore',\n }\n )\n const scorePercentage = text(scoreText, {\n alignment: 'right',\n colSpan: 2,\n style: 'totalAuditScore',\n })\n const scoreTitle = text('Total Score', { style: 'totalScore' })\n\n const body = renderThirdRow\n ? [firstRow, secondRow, thirdRow]\n : [firstRow, secondRow]\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n if (entity.showSimplifiedDuration) {\n body.push([submittedAt, dummyColumn])\n } else {\n const startedAtInTimezone = entity.startedAt\n ? moment(entity.startedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const startedAt = text(`Started: ${startedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n colSpan: 2,\n style: 'small',\n })\n\n const momentDuration = moment.duration(Math.abs(entity.formDuration))\n const days = Math.floor(momentDuration.asDays()).toString().padStart(2, '0')\n const hours = Math.floor(momentDuration.hours()).toString().padStart(2, '0')\n const minutes = momentDuration.minutes().toString().padStart(2, '0')\n const seconds = momentDuration.seconds().toString().padStart(2, '0')\n const formattedFormDuration = entity.formDuration\n ? `${\n entity.formDuration < 0 ? '-' : ''\n }${days}:${hours}:${minutes}:${seconds}`\n : 'Not recorded'\n const formDuration = text(\n `Form Duration (DD:HH:MM:SS): ${formattedFormDuration}`,\n {\n colSpan: 2,\n style: 'small',\n }\n )\n\n body.push([startedAt, dummyColumn])\n body.push([submittedAt, dummyColumn])\n body.push([formDuration, dummyColumn])\n }\n\n const titleTable = twoColumnTable({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n widths: ['*', 100],\n margin: [0, 0, 0, 30],\n })\n\n const totalScoreTable = twoColumnTable({\n body: [[scoreTitle, scoreBreakdown], [scorePercentage]],\n layout: 'noBorders',\n widths: ['*', 100],\n })\n\n const hLineTop = horizontalLine({ margin: [0, 10, 0, 0] })\n const hLineBottom = horizontalLine()\n\n const followUpItems = buildAuditFollowUps(followUps, { timezone })\n\n const promises = {\n entry: buildAuditContent(groupedData.items, data.settings),\n footerTemplate: buildTemplateContent(footerFields.formGroups, data),\n headerTemplate: buildTemplateContent(headerFields.formGroups, data),\n }\n\n const auditItemsTitle = [\n {\n text: 'Audit Items',\n style: {\n font: 'Gotham',\n lineHeight: 1.1,\n },\n },\n hLineTop,\n ]\n\n return Promise.props(promises)\n .then(({ entry, footerTemplate, headerTemplate }) => [\n titleTable,\n followUpItems,\n ...auditItemsTitle,\n ...headerTemplate,\n ...entry,\n hLineTop,\n totalScoreTable,\n hLineBottom,\n ...footerTemplate,\n ])\n .catch((err) => {\n throw new Error(`GenerateContentError: ${err.message}`)\n })\n}\n"],"mappings":";;;;AAAA,OAAOA,OAAO,MAAM,UAAU;AAC9B,SAASC,OAAO,EAAEC,KAAK,QAAQ,QAAQ;AACvC,OAAOC,MAAM,MAAM,iBAAiB;AAEpC,SACEC,iBAAiB,EACjBC,mBAAmB,EACnBC,oBAAoB,EACpBC,kBAAkB,EAClBC,mBAAmB,EACnBC,cAAc,EACdC,IAAI,EACJC,cAAc,QACT,YAAY;AACnB,SAASC,oBAAoB,QAAQ,eAAe;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAACC,UAAU,EAAEC,IAAI,EAAE;EAC9C,IAAQC,MAAM,GAAeD,IAAI,CAAzBC,MAAM;IAAEC,QAAQ,GAAKF,IAAI,CAAjBE,QAAQ;EACxB,IAAAC,iBAAA,GAAuBJ,UAAU,CAAzBK,KAAK;IAALA,KAAK,GAAAD,iBAAA,cAAG,CAAC,CAAC,GAAAA,iBAAA;EAElB,IAAME,UAAU,GAAGJ,MAAM,CAACI,UAAU;EACpC,IAAMC,SAAS,GAAGL,MAAM,CAACM,SAAS;EAClC,IAAMC,KAAK,GAAGP,MAAM,CAACO,KAAK,IAAI,SAAS;EACvC,IAAMC,SAAS,qBAAAC,MAAA,CAAqBF,KAAK,CAAE;EAE3C,OAAOG,eAAe,CAACX,IAAI,EAAEI,KAAK,CAAC,CAChCQ,IAAI,CAAC,UAACC,OAAO;IAAA,OACZrB,kBAAkB,CAAAsB,aAAA;MAChBD,OAAO,EAAPA,OAAO;MACPJ,SAAS,EAATA,SAAS;MACTJ,UAAU,EAAVA,UAAU;MACVC,SAAS,EAATA,SAAS;MACTJ,QAAQ,EAARA,QAAQ;MACRa,IAAI,EAAE;IAAO,GACVhB,UAAU,CACd,CAAC;EAAA,CACJ,CAAC,CACAiB,KAAK,CAAC,UAACC,GAAG,EAAK;IACd,MAAM,IAAIC,KAAK,wBAAAR,MAAA,CAAwBO,GAAG,CAACE,OAAO,CAAE,CAAC;EACvD,CAAC,CAAC;AACN;AAEA,SAASR,eAAeA,CAACX,IAAI,EAAE;EAC7B,IAAQC,MAAM,GAAKD,IAAI,CAAfC,MAAM;EAEd,IAAAmB,iBAAA,GAOInB,MAAM,CANRoB,SAAS;IAATA,SAAS,GAAAD,iBAAA,cAAG,EAAE,GAAAA,iBAAA;IAAAE,oBAAA,GAMZrB,MAAM,CALRsB,YAAY;IAAZA,YAAY,GAAAD,oBAAA,cAAG,CAAC,CAAC,GAAAA,oBAAA;IAAAE,WAAA,GAKfvB,MAAM,CAJRwB,GAAG;IAAHA,GAAG,GAAAD,WAAA,cAAG,CAAC,CAAC,GAAAA,WAAA;IAAAE,oBAAA,GAINzB,MAAM,CAHR0B,YAAY;IAAZA,YAAY,GAAAD,oBAAA,cAAG,CAAC,CAAC,GAAAA,oBAAA;IAAAE,aAAA,GAGf3B,MAAM,CAFR4B,KAAK;IAALA,KAAK,GAAAD,aAAA,cAAG,CAAC,CAAC,GAAAA,aAAA;IAAAE,aAAA,GAER7B,MAAM,CADRO,KAAK;IAALA,KAAK,GAAAsB,aAAA,cAAG,SAAS,GAAAA,aAAA;EAGnB,IAAM5B,QAAQ,GAAG,CAAAD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEC,QAAQ,MAAIF,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEE,QAAQ,KAAI,KAAK;EAC5D,IAAM6B,aAAa,GAAGlC,oBAAoB,CAACG,IAAI,CAAC;EAEhD,IACEgC,OAAO,GAQLD,aAAa,CARfC,OAAO;IACPC,WAAW,GAOTF,aAAa,CAPfE,WAAW;IACXC,YAAY,GAMVH,aAAa,CANfG,YAAY;IACZC,cAAc,GAKZJ,aAAa,CALfI,cAAc;IACdC,gBAAgB,GAIdL,aAAa,CAJfK,gBAAgB;IAChBC,SAAS,GAGPN,aAAa,CAHfM,SAAS;IACTC,MAAM,GAEJP,aAAa,CAFfO,MAAM;IACNC,kBAAkB,GAChBR,aAAa,CADfQ,kBAAkB;EAGpB,IAAMC,kBAAkB,GAAG,CAAC,CAACD,kBAAkB;EAC/C,IAAME,WAAW,GAAG9C,IAAI,CAACa,KAAK,EAAE;IAAEkC,KAAK,EAAE;EAAQ,CAAC,CAAC;EACnD,IAAMC,WAAW,GAAGhD,IAAI,CAAC0C,SAAS,EAAE;IAAEO,SAAS,EAAE,OAAO;IAAEF,KAAK,EAAE;EAAQ,CAAC,CAAC;EAC3E,IAAMG,QAAQ,GAAG,CAACJ,WAAW,EAAEE,WAAW,CAAC;EAC3C,IAAMG,QAAQ,MAAApC,MAAA,CACZwB,YAAY,IAAIF,OAAO,SAAAtB,MAAA,CACnB0B,gBAAgB,UAAA1B,MAAA,CAAOyB,cAAc,CAAE;EAE7C,IAAIY,cAAc,GAAGpD,IAAI,CAACmD,QAAQ,EAAE;IAAEE,OAAO,EAAE,CAAC;IAAEN,KAAK,EAAE;EAAW,CAAC,CAAC;EACtE,IAAIO,SAAS,GAAG,CAACF,cAAc,CAAC;EAEhC,IAAMG,eAAe,GAAGzB,GAAG,CAACyB,eAAe;EAC3C,IAAMC,OAAO,GAAG,CAACjE,OAAO,CAACgE,eAAe,CAAC,GACrCzD,mBAAmB,CAACyD,eAAe,CAAC,GACpC,EAAE;EACN,IAAME,mBAAmB,GAAG,CAAClE,OAAO,CAACgE,eAAe,CAAC;EACrD,IAAMG,WAAW,GAAG1D,IAAI,CAAC,GAAG,EAAE;IAAE+C,KAAK,EAAE;EAAQ,CAAC,CAAC;EAEjD,IAAIY,aAAa,GAAG3D,IAAI,CAACwD,OAAO,EAAE;IAAEH,OAAO,EAAE,CAAC;IAAEN,KAAK,EAAE;EAAQ,CAAC,CAAC;EACjE,IAAMa,cAAc,GAAGH,mBAAmB,IAAIZ,kBAAkB;EAChE,IAAIgB,QAAQ,GAAGJ,mBAAmB,GAAG,CAACE,aAAa,CAAC,GAAG,EAAE;EAEzD,IAAId,kBAAkB,EAAE;IACtBO,cAAc,GAAGpD,IAAI,CAACmD,QAAQ,EAAE;MAAEJ,KAAK,EAAE;IAAW,CAAC,CAAC;IAEtD,IAAMe,iBAAiB,GAAGlB,kBAAkB,KAAK,OAAO;IACxD,IAAMmB,gBAAgB,GACpBnB,kBAAkB,KAAK,OAAO,GAC1B,cAAc,GACdA,kBAAkB,KAAK,IAAI,GACzB,WAAW,GACXA,kBAAkB,KAAK,OAAO,GAC5B,cAAc,GACd,EAAE;IAEZ,IAAMoB,yBAAyB,GAAGhE,IAAI,CAAC+D,gBAAgB,EAAE;MACvDd,SAAS,EAAE,OAAO;MAClBF,KAAK,EAAEe,iBAAiB,GAAG,mBAAmB,GAAG;IACnD,CAAC,CAAC;IAEFR,SAAS,GAAG,CAACF,cAAc,EAAEY,yBAAyB,CAAC;IACvDL,aAAa,GAAG3D,IAAI,CAACwD,OAAO,EAAE;MAAET,KAAK,EAAE;IAAQ,CAAC,CAAC;IAEjD,IAAMkB,sBAAsB,GAAGzE,KAAK,CAACmD,MAAM,EAAE,CAAC,CAAC;IAC/C,IAAMuB,eAAe,gBAAAnD,MAAA,CAAgBkD,sBAAsB,OAAI;IAC/D,IAAME,mBAAmB,GAAGnE,IAAI,CAACkE,eAAe,EAAE;MAChDjB,SAAS,EAAE,OAAO;MAClBF,KAAK,EAAE;IACT,CAAC,CAAC;IAEFc,QAAQ,GAAGJ,mBAAmB,GAC1B,CAACE,aAAa,EAAEQ,mBAAmB,CAAC,GACpC,CAACT,WAAW,EAAES,mBAAmB,CAAC;EACxC;EAEA,IAAMC,cAAc,GAAGpE,IAAI,IAAAe,MAAA,CACtBvB,KAAK,CAAC0C,KAAK,CAACmC,MAAM,EAAE,CAAC,CAAC,SAAAtD,MAAA,CAAMvB,KAAK,CAAC0C,KAAK,CAACoC,GAAG,EAAE,CAAC,CAAC,GAClD;IACErB,SAAS,EAAE,OAAO;IAClBF,KAAK,EAAE;EACT,CACF,CAAC;EACD,IAAMwB,eAAe,GAAGvE,IAAI,CAAC0C,SAAS,EAAE;IACtCO,SAAS,EAAE,OAAO;IAClBI,OAAO,EAAE,CAAC;IACVN,KAAK,EAAE;EACT,CAAC,CAAC;EACF,IAAMyB,UAAU,GAAGxE,IAAI,CAAC,aAAa,EAAE;IAAE+C,KAAK,EAAE;EAAa,CAAC,CAAC;EAE/D,IAAM0B,IAAI,GAAGb,cAAc,GACvB,CAACV,QAAQ,EAAEI,SAAS,EAAEO,QAAQ,CAAC,GAC/B,CAACX,QAAQ,EAAEI,SAAS,CAAC;EAEzB,IAAMoB,qBAAqB,GAAGpE,MAAM,CAACqE,WAAW,GAC5ClF,MAAM,CAACa,MAAM,CAACqE,WAAW,CAAC,CAACC,EAAE,CAACrE,QAAQ,CAAC,CAACsE,MAAM,CAAC,uBAAuB,CAAC,GACvE,cAAc;EAClB,IAAMF,WAAW,GAAG3E,IAAI,eAAAe,MAAA,CAAe2D,qBAAqB,GAAI;IAC9DrB,OAAO,EAAE,CAAC;IACVN,KAAK,EAAE;EACT,CAAC,CAAC;EAEF,IAAIzC,MAAM,CAACwE,sBAAsB,EAAE;IACjCL,IAAI,CAACM,IAAI,CAAC,CAACJ,WAAW,EAAEjB,WAAW,CAAC,CAAC;EACvC,CAAC,MAAM;IACL,IAAMsB,mBAAmB,GAAG1E,MAAM,CAAC2E,SAAS,GACxCxF,MAAM,CAACa,MAAM,CAAC2E,SAAS,CAAC,CAACL,EAAE,CAACrE,QAAQ,CAAC,CAACsE,MAAM,CAAC,uBAAuB,CAAC,GACrE,cAAc;IAClB,IAAMI,SAAS,GAAGjF,IAAI,aAAAe,MAAA,CAAaiE,mBAAmB,GAAI;MACxD3B,OAAO,EAAE,CAAC;MACVN,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,IAAM2B,sBAAqB,GAAGpE,MAAM,CAACqE,WAAW,GAC5ClF,MAAM,CAACa,MAAM,CAACqE,WAAW,CAAC,CAACC,EAAE,CAACrE,QAAQ,CAAC,CAACsE,MAAM,CAAC,uBAAuB,CAAC,GACvE,cAAc;IAClB,IAAMF,YAAW,GAAG3E,IAAI,eAAAe,MAAA,CAAe2D,sBAAqB,GAAI;MAC9DrB,OAAO,EAAE,CAAC;MACVN,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,IAAMmC,cAAc,GAAGzF,MAAM,CAAC0F,QAAQ,CAACC,IAAI,CAACC,GAAG,CAAC/E,MAAM,CAACgF,YAAY,CAAC,CAAC;IACrE,IAAMC,IAAI,GAAGH,IAAI,CAACI,KAAK,CAACN,cAAc,CAACO,MAAM,CAAC,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IAC5E,IAAMC,KAAK,GAAGR,IAAI,CAACI,KAAK,CAACN,cAAc,CAACU,KAAK,CAAC,CAAC,CAAC,CAACF,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IAC5E,IAAME,OAAO,GAAGX,cAAc,CAACW,OAAO,CAAC,CAAC,CAACH,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACpE,IAAMG,OAAO,GAAGZ,cAAc,CAACY,OAAO,CAAC,CAAC,CAACJ,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IACpE,IAAMI,qBAAqB,GAAGzF,MAAM,CAACgF,YAAY,MAAAvE,MAAA,CAE3CT,MAAM,CAACgF,YAAY,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,EAAAvE,MAAA,CACjCwE,IAAI,OAAAxE,MAAA,CAAI6E,KAAK,OAAA7E,MAAA,CAAI8E,OAAO,OAAA9E,MAAA,CAAI+E,OAAO,IACtC,cAAc;IAClB,IAAMR,YAAY,GAAGtF,IAAI,iCAAAe,MAAA,CACSgF,qBAAqB,GACrD;MACE1C,OAAO,EAAE,CAAC;MACVN,KAAK,EAAE;IACT,CACF,CAAC;IAED0B,IAAI,CAACM,IAAI,CAAC,CAACE,SAAS,EAAEvB,WAAW,CAAC,CAAC;IACnCe,IAAI,CAACM,IAAI,CAAC,CAACJ,YAAW,EAAEjB,WAAW,CAAC,CAAC;IACrCe,IAAI,CAACM,IAAI,CAAC,CAACO,YAAY,EAAE5B,WAAW,CAAC,CAAC;EACxC;EAEA,IAAMsC,UAAU,GAAG/F,cAAc,CAAC;IAChCwE,IAAI,EAAJA,IAAI;IACJwB,MAAM,EAAE,WAAW;IACnBlD,KAAK,EAAE,YAAY;IACnBmD,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IAClBC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;EACtB,CAAC,CAAC;EAEF,IAAMC,eAAe,GAAGnG,cAAc,CAAC;IACrCwE,IAAI,EAAE,CAAC,CAACD,UAAU,EAAEJ,cAAc,CAAC,EAAE,CAACG,eAAe,CAAC,CAAC;IACvD0B,MAAM,EAAE,WAAW;IACnBC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG;EACnB,CAAC,CAAC;EAEF,IAAMG,QAAQ,GAAGtG,cAAc,CAAC;IAAEoG,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;EAAE,CAAC,CAAC;EAC1D,IAAMG,WAAW,GAAGvG,cAAc,CAAC,CAAC;EAEpC,IAAMwG,aAAa,GAAG5G,mBAAmB,CAAC+B,SAAS,EAAE;IAAEnB,QAAQ,EAARA;EAAS,CAAC,CAAC;EAElE,IAAMiG,QAAQ,GAAG;IACfC,KAAK,EAAE/G,iBAAiB,CAAC4C,WAAW,CAACoE,KAAK,EAAErG,IAAI,CAACsG,QAAQ,CAAC;IAC1DC,cAAc,EAAEhH,oBAAoB,CAACgC,YAAY,CAACiF,UAAU,EAAExG,IAAI,CAAC;IACnEyG,cAAc,EAAElH,oBAAoB,CAACoC,YAAY,CAAC6E,UAAU,EAAExG,IAAI;EACpE,CAAC;EAED,IAAM0G,eAAe,GAAG,CACtB;IACE/G,IAAI,EAAE,aAAa;IACnB+C,KAAK,EAAE;MACLiE,IAAI,EAAE,QAAQ;MACdC,UAAU,EAAE;IACd;EACF,CAAC,EACDZ,QAAQ,CACT;EAED,OAAO/G,OAAO,CAAC4H,KAAK,CAACV,QAAQ,CAAC,CAC3BvF,IAAI,CAAC,UAAAkG,IAAA;IAAA,IAAGV,KAAK,GAAAU,IAAA,CAALV,KAAK;MAAEG,cAAc,GAAAO,IAAA,CAAdP,cAAc;MAAEE,cAAc,GAAAK,IAAA,CAAdL,cAAc;IAAA,QAC5Cd,UAAU,EACVO,aAAa,EAAAxF,MAAA,CACVgG,eAAe,EAAAK,kBAAA,CACfN,cAAc,GAAAM,kBAAA,CACdX,KAAK,IACRJ,QAAQ,EACRD,eAAe,EACfE,WAAW,GAAAc,kBAAA,CACRR,cAAc;EAAA,CAClB,CAAC,CACDvF,KAAK,CAAC,UAACC,GAAG,EAAK;IACd,MAAM,IAAIC,KAAK,0BAAAR,MAAA,CAA0BO,GAAG,CAACE,OAAO,CAAE,CAAC;EACzD,CAAC,CAAC;AACN","ignoreList":[]}
@@ -25,7 +25,7 @@ import { getIssueDetails, getStatusDetails, getTimezoneAbbr, getTimezoneDatetime
25
25
  * @param {object} data.locations - locations documents
26
26
  * @param {object} data.settings - settings properties
27
27
  * @param {string} data.settings.awsS3BaseUrl - aws S3 base url
28
- * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url
28
+ * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url
29
29
  * @param {string} data.timezone - timezone string
30
30
  * @param {object} data.users - application user documents
31
31
  * @param {object} data.zones - zone documents
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["get","filter","isEmpty","map","moment","buildTemplateContent","generateDefinition","getFormattedAddress","horizontalLine","table","text","threeColumnTable","getIssueDetails","getStatusDetails","getTimezoneAbbr","getTimezoneDatetime","publicSubmissionTextColor","internalSubmissionTextColor","buildIssuePdf","pdfOptions","data","entity","timezone","sequenceId","timestamp","createdAt","title","fileTitle","concat","generateContent","then","content","_objectSpread","type","_plugins$publicForms","entry","_entity$gps","gps","_entity$timeline","timeline","_pdfOptions$plugins","plugins","entityDetails","assigneeNames","durationText","gpsText","isPublicSubmission","locationText","statusColor","statusText","reverseGeocoded","subTitle","headerTitle","style","headerSubTitle","address","headerAddress","body","submittedAtInTimezone","submittedAt","tz","format","showSimplifiedDuration","push","startedAtInTimezone","startedAt","momentDuration","duration","Math","abs","formDuration","days","floor","asDays","toString","padStart","hours","minutes","seconds","formattedFormDuration","titleTable","layout","statusLabelText","bold","statusValueText","color","metaTable","durationLabelText","durationValueText","assigneeLabelText","assigneeValueText","publicForms","enabled","sourceText","sourceColor","sourceLabelText","sourceValueText","timelineTitle","timelineHorizontalLine","timelineTable","createTimelineTable","formGroups","_toConsumableArray","timezoneAbbr","timelineHeaderRow","alignment","statusUpdates","timelineBodyRows","colSpan","item","_item$meta","meta","source","next","firstName","lastName","fullName","isNew","isUpdate","isOpen","statusDetails","nextStatusText","activity","datetime","showTzAbbr"],"sources":["../../../src/pdf/issue/index.js"],"sourcesContent":["import { get, filter, isEmpty, map } from 'lodash'\nimport moment from 'moment-timezone'\n\nimport {\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n horizontalLine,\n table,\n text,\n threeColumnTable,\n} from '../helpers'\n\nimport {\n getIssueDetails,\n getStatusDetails,\n getTimezoneAbbr,\n getTimezoneDatetime,\n} from '../../helpers'\n\n/**\n * buildIssuePdf\n *\n * @param {object} pdfOptions - the pdf options\n * @param {string} pdfOptions.fileTitle - pdf file title\n * @param {function} pdfOptions.footer - function executed to generate footer\n * @param {function} pdfOptions.header - function executed to generate header\n * @param {string} pdfOptions.logoUrl - pdf logo url\n * @param {array} pdfOptions.pageMargins - pdf page margins\n * @param {string} pdfOptions.pageOrientation - pdf page orientation\n * @param {string} pdfOptions.pageSize - pdf page size\n * @param {object} pdfOptions.styles - pdf styles\n * @param {object} pdfOptions.title - pdf title\n * @param {object} data - pdf data\n * @param {object} data.entity - issue document\n * @param {object} data.locations - locations documents\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @param {object} data.zones - zone documents\n * @returns {Promise} returns pdfmake definition object\n */\n\nconst publicSubmissionTextColor = '#FF8C2F'\nconst internalSubmissionTextColor = '#00AAE4'\n\nexport function buildIssuePdf(pdfOptions, data) {\n const { entity, timezone } = data\n\n const sequenceId = entity.sequenceId\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n\n const fileTitle = `Issue Report - ${title}`\n\n return generateContent(data, pdfOptions).then((content) =>\n generateDefinition({\n content,\n fileTitle,\n sequenceId,\n timestamp,\n timezone,\n type: 'Issue',\n ...pdfOptions,\n })\n )\n}\n\nfunction generateContent(data, pdfOptions) {\n const { entity, timezone } = data\n const { entry, gps = {}, timeline = [], title } = entity\n const { plugins = {} } = pdfOptions\n\n const entityDetails = getIssueDetails(data)\n\n const {\n assigneeNames,\n durationText,\n gpsText,\n isPublicSubmission,\n locationText,\n statusColor,\n statusText,\n } = entityDetails\n\n const reverseGeocoded = gps.reverseGeocoded\n\n const subTitle = `${locationText || gpsText}`\n const headerTitle = text(title, { style: 'title' })\n const headerSubTitle = text(subTitle, { style: 'subTitle' })\n const address = !isEmpty(reverseGeocoded)\n ? getFormattedAddress(reverseGeocoded)\n : ''\n const headerAddress = text(address, { style: 'small' })\n\n const body = !isEmpty(reverseGeocoded)\n ? [[headerTitle], [headerSubTitle], [headerAddress]]\n : [[headerTitle], [headerSubTitle]]\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n style: 'small',\n })\n\n if (entity.showSimplifiedDuration) {\n body.push([submittedAt])\n } else {\n const startedAtInTimezone = entity.startedAt\n ? moment(entity.startedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const startedAt = text(`Started: ${startedAtInTimezone}`, {\n style: 'small',\n })\n\n const momentDuration = moment.duration(Math.abs(entity.formDuration))\n const days = Math.floor(momentDuration.asDays()).toString().padStart(2, '0')\n const hours = Math.floor(momentDuration.hours()).toString().padStart(2, '0')\n const minutes = momentDuration.minutes().toString().padStart(2, '0')\n const seconds = momentDuration.seconds().toString().padStart(2, '0')\n const formattedFormDuration = entity.formDuration\n ? `${\n entity.formDuration < 0 ? '-' : ''\n }${days}:${hours}:${minutes}:${seconds}`\n : 'Not recorded'\n const formDuration = text(\n `Form Duration (DD:HH:MM:SS): ${formattedFormDuration}`,\n {\n style: 'small',\n }\n )\n\n body.push([startedAt])\n body.push([submittedAt])\n body.push([formDuration])\n }\n\n const titleTable = table({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n })\n\n const statusLabelText = text('Status', { bold: true })\n const statusValueText = text(statusText, { color: statusColor })\n\n const metaTable = table({\n body: [[statusLabelText, statusValueText]],\n layout: 'noBorders',\n style: 'metaTable',\n })\n\n if (statusText === 'CLOSED') {\n const durationLabelText = text('Duration', { bold: true })\n const durationValueText = text(durationText)\n metaTable.table.body.push([durationLabelText, durationValueText])\n }\n\n const assigneeLabelText = text('Assignees', { bold: true })\n const assigneeValueText = text(assigneeNames)\n metaTable.table.body.push([assigneeLabelText, assigneeValueText])\n\n if (plugins.publicForms?.enabled) {\n const sourceText = isPublicSubmission\n ? 'PUBLIC SUBMISSION'\n : 'INTERNAL SUBMISSION'\n\n const sourceColor = isPublicSubmission\n ? publicSubmissionTextColor\n : internalSubmissionTextColor\n const sourceLabelText = text('Source', { bold: true })\n const sourceValueText = text(sourceText, { color: sourceColor })\n metaTable.table.body.push([sourceLabelText, sourceValueText])\n }\n\n const timelineTitle = text('Timeline', { style: 'timelineTitle' })\n const timelineHorizontalLine = horizontalLine()\n const timelineTable = createTimelineTable(timeline, timezone)\n\n return buildTemplateContent(entry.formGroups, data).then((entry) => [\n titleTable,\n metaTable,\n timelineTitle,\n timelineHorizontalLine,\n timelineTable,\n ...entry,\n ])\n}\n\nfunction createTimelineTable(timeline, timezone) {\n const timezoneAbbr = getTimezoneAbbr(timezone)\n\n const timelineHeaderRow = [\n text('Activity', { bold: true }),\n text('User', { bold: true }),\n text(`Date & Timestamp (${timezoneAbbr})`, {\n alignment: 'right',\n bold: true,\n }),\n ]\n\n const statusUpdates = filter(timeline, ['meta.field', 'status'])\n\n const timelineBodyRows = isEmpty(statusUpdates)\n ? [text('No Timeline activity', { colSpan: 3 })]\n : map(statusUpdates, (item) => {\n const { meta = {}, source, timestamp, type } = item\n\n const next = get(meta, 'next')\n const firstName = get(source, 'meta.firstName')\n const lastName = get(source, 'meta.lastName')\n\n const fullName =\n firstName && lastName ? `${firstName} ${lastName}` : 'Unknown User'\n\n const isNew = type === 'issue-new'\n const isUpdate = type === 'issue-update'\n const isOpen = next === 'open'\n\n const statusDetails = getStatusDetails(next)\n const nextStatusText = statusDetails.text\n\n const activity =\n isNew && isOpen\n ? 'Issue opened'\n : isNew && !isOpen\n ? `Issue opened with status ${nextStatusText}`\n : isUpdate\n ? `Issue updated to ${nextStatusText}`\n : 'Unknown status timeline change'\n\n const datetime = getTimezoneDatetime({\n format: 'ddd, MMM D h:mm:ssa z',\n showTzAbbr: false,\n timestamp,\n timezone,\n })\n\n return [\n text(activity),\n text(fullName),\n text(datetime, { alignment: 'right' }),\n ]\n })\n\n const timelineTable = threeColumnTable({\n body: [timelineHeaderRow, ...timelineBodyRows],\n })\n\n return timelineTable\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["get","filter","isEmpty","map","moment","buildTemplateContent","generateDefinition","getFormattedAddress","horizontalLine","table","text","threeColumnTable","getIssueDetails","getStatusDetails","getTimezoneAbbr","getTimezoneDatetime","publicSubmissionTextColor","internalSubmissionTextColor","buildIssuePdf","pdfOptions","data","entity","timezone","sequenceId","timestamp","createdAt","title","fileTitle","concat","generateContent","then","content","_objectSpread","type","_plugins$publicForms","entry","_entity$gps","gps","_entity$timeline","timeline","_pdfOptions$plugins","plugins","entityDetails","assigneeNames","durationText","gpsText","isPublicSubmission","locationText","statusColor","statusText","reverseGeocoded","subTitle","headerTitle","style","headerSubTitle","address","headerAddress","body","submittedAtInTimezone","submittedAt","tz","format","showSimplifiedDuration","push","startedAtInTimezone","startedAt","momentDuration","duration","Math","abs","formDuration","days","floor","asDays","toString","padStart","hours","minutes","seconds","formattedFormDuration","titleTable","layout","statusLabelText","bold","statusValueText","color","metaTable","durationLabelText","durationValueText","assigneeLabelText","assigneeValueText","publicForms","enabled","sourceText","sourceColor","sourceLabelText","sourceValueText","timelineTitle","timelineHorizontalLine","timelineTable","createTimelineTable","formGroups","_toConsumableArray","timezoneAbbr","timelineHeaderRow","alignment","statusUpdates","timelineBodyRows","colSpan","item","_item$meta","meta","source","next","firstName","lastName","fullName","isNew","isUpdate","isOpen","statusDetails","nextStatusText","activity","datetime","showTzAbbr"],"sources":["../../../src/pdf/issue/index.js"],"sourcesContent":["import { get, filter, isEmpty, map } from 'lodash'\nimport moment from 'moment-timezone'\n\nimport {\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n horizontalLine,\n table,\n text,\n threeColumnTable,\n} from '../helpers'\n\nimport {\n getIssueDetails,\n getStatusDetails,\n getTimezoneAbbr,\n getTimezoneDatetime,\n} from '../../helpers'\n\n/**\n * buildIssuePdf\n *\n * @param {object} pdfOptions - the pdf options\n * @param {string} pdfOptions.fileTitle - pdf file title\n * @param {function} pdfOptions.footer - function executed to generate footer\n * @param {function} pdfOptions.header - function executed to generate header\n * @param {string} pdfOptions.logoUrl - pdf logo url\n * @param {array} pdfOptions.pageMargins - pdf page margins\n * @param {string} pdfOptions.pageOrientation - pdf page orientation\n * @param {string} pdfOptions.pageSize - pdf page size\n * @param {object} pdfOptions.styles - pdf styles\n * @param {object} pdfOptions.title - pdf title\n * @param {object} data - pdf data\n * @param {object} data.entity - issue document\n * @param {object} data.locations - locations documents\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @param {object} data.zones - zone documents\n * @returns {Promise} returns pdfmake definition object\n */\n\nconst publicSubmissionTextColor = '#FF8C2F'\nconst internalSubmissionTextColor = '#00AAE4'\n\nexport function buildIssuePdf(pdfOptions, data) {\n const { entity, timezone } = data\n\n const sequenceId = entity.sequenceId\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n\n const fileTitle = `Issue Report - ${title}`\n\n return generateContent(data, pdfOptions).then((content) =>\n generateDefinition({\n content,\n fileTitle,\n sequenceId,\n timestamp,\n timezone,\n type: 'Issue',\n ...pdfOptions,\n })\n )\n}\n\nfunction generateContent(data, pdfOptions) {\n const { entity, timezone } = data\n const { entry, gps = {}, timeline = [], title } = entity\n const { plugins = {} } = pdfOptions\n\n const entityDetails = getIssueDetails(data)\n\n const {\n assigneeNames,\n durationText,\n gpsText,\n isPublicSubmission,\n locationText,\n statusColor,\n statusText,\n } = entityDetails\n\n const reverseGeocoded = gps.reverseGeocoded\n\n const subTitle = `${locationText || gpsText}`\n const headerTitle = text(title, { style: 'title' })\n const headerSubTitle = text(subTitle, { style: 'subTitle' })\n const address = !isEmpty(reverseGeocoded)\n ? getFormattedAddress(reverseGeocoded)\n : ''\n const headerAddress = text(address, { style: 'small' })\n\n const body = !isEmpty(reverseGeocoded)\n ? [[headerTitle], [headerSubTitle], [headerAddress]]\n : [[headerTitle], [headerSubTitle]]\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n style: 'small',\n })\n\n if (entity.showSimplifiedDuration) {\n body.push([submittedAt])\n } else {\n const startedAtInTimezone = entity.startedAt\n ? moment(entity.startedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const startedAt = text(`Started: ${startedAtInTimezone}`, {\n style: 'small',\n })\n\n const momentDuration = moment.duration(Math.abs(entity.formDuration))\n const days = Math.floor(momentDuration.asDays()).toString().padStart(2, '0')\n const hours = Math.floor(momentDuration.hours()).toString().padStart(2, '0')\n const minutes = momentDuration.minutes().toString().padStart(2, '0')\n const seconds = momentDuration.seconds().toString().padStart(2, '0')\n const formattedFormDuration = entity.formDuration\n ? `${\n entity.formDuration < 0 ? '-' : ''\n }${days}:${hours}:${minutes}:${seconds}`\n : 'Not recorded'\n const formDuration = text(\n `Form Duration (DD:HH:MM:SS): ${formattedFormDuration}`,\n {\n style: 'small',\n }\n )\n\n body.push([startedAt])\n body.push([submittedAt])\n body.push([formDuration])\n }\n\n const titleTable = table({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n })\n\n const statusLabelText = text('Status', { bold: true })\n const statusValueText = text(statusText, { color: statusColor })\n\n const metaTable = table({\n body: [[statusLabelText, statusValueText]],\n layout: 'noBorders',\n style: 'metaTable',\n })\n\n if (statusText === 'CLOSED') {\n const durationLabelText = text('Duration', { bold: true })\n const durationValueText = text(durationText)\n metaTable.table.body.push([durationLabelText, durationValueText])\n }\n\n const assigneeLabelText = text('Assignees', { bold: true })\n const assigneeValueText = text(assigneeNames)\n metaTable.table.body.push([assigneeLabelText, assigneeValueText])\n\n if (plugins.publicForms?.enabled) {\n const sourceText = isPublicSubmission\n ? 'PUBLIC SUBMISSION'\n : 'INTERNAL SUBMISSION'\n\n const sourceColor = isPublicSubmission\n ? publicSubmissionTextColor\n : internalSubmissionTextColor\n const sourceLabelText = text('Source', { bold: true })\n const sourceValueText = text(sourceText, { color: sourceColor })\n metaTable.table.body.push([sourceLabelText, sourceValueText])\n }\n\n const timelineTitle = text('Timeline', { style: 'timelineTitle' })\n const timelineHorizontalLine = horizontalLine()\n const timelineTable = createTimelineTable(timeline, timezone)\n\n return buildTemplateContent(entry.formGroups, data).then((entry) => [\n titleTable,\n metaTable,\n timelineTitle,\n timelineHorizontalLine,\n timelineTable,\n ...entry,\n ])\n}\n\nfunction createTimelineTable(timeline, timezone) {\n const timezoneAbbr = getTimezoneAbbr(timezone)\n\n const timelineHeaderRow = [\n text('Activity', { bold: true }),\n text('User', { bold: true }),\n text(`Date & Timestamp (${timezoneAbbr})`, {\n alignment: 'right',\n bold: true,\n }),\n ]\n\n const statusUpdates = filter(timeline, ['meta.field', 'status'])\n\n const timelineBodyRows = isEmpty(statusUpdates)\n ? [text('No Timeline activity', { colSpan: 3 })]\n : map(statusUpdates, (item) => {\n const { meta = {}, source, timestamp, type } = item\n\n const next = get(meta, 'next')\n const firstName = get(source, 'meta.firstName')\n const lastName = get(source, 'meta.lastName')\n\n const fullName =\n firstName && lastName ? `${firstName} ${lastName}` : 'Unknown User'\n\n const isNew = type === 'issue-new'\n const isUpdate = type === 'issue-update'\n const isOpen = next === 'open'\n\n const statusDetails = getStatusDetails(next)\n const nextStatusText = statusDetails.text\n\n const activity =\n isNew && isOpen\n ? 'Issue opened'\n : isNew && !isOpen\n ? `Issue opened with status ${nextStatusText}`\n : isUpdate\n ? `Issue updated to ${nextStatusText}`\n : 'Unknown status timeline change'\n\n const datetime = getTimezoneDatetime({\n format: 'ddd, MMM D h:mm:ssa z',\n showTzAbbr: false,\n timestamp,\n timezone,\n })\n\n return [\n text(activity),\n text(fullName),\n text(datetime, { alignment: 'right' }),\n ]\n })\n\n const timelineTable = threeColumnTable({\n body: [timelineHeaderRow, ...timelineBodyRows],\n })\n\n return timelineTable\n}\n"],"mappings":"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","ignoreList":[]}
@@ -47,7 +47,7 @@ var ACTIVITY_COLUMN_HEADERS = [{
47
47
  * @param {array} data.jobActivities - job activities documents
48
48
  * @param {object} data.settings - settings properties
49
49
  * @param {string} data.settings.awsS3BaseUrl - aws S3 base url
50
- * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url
50
+ * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url
51
51
  * @param {string} data.timezone - timezone string
52
52
  * @param {object} data.users - application user documents
53
53
  * @returns {Promise} returns pdfmake definition object
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["get","isEmpty","map","moment","generateDefinition","horizontalLine","table","text","twoColumnTable","getJobDetails","getPrettyDuration","getTimezoneDatetime","getUserFullName","ACTIVITY_COLUMN_HEADERS","bold","buildJobPdf","pdfOptions","data","entity","timezone","timestamp","createdAt","title","fileTitle","concat","content","generateContent","_objectSpread","pageOrientation","type","entityDetails","metaTableData","locationText","authorFullName","reference","description","dueDateTimezoneDateTime","assigneeNames","statusText","color","statusColor","createdTimezoneDateTime","timezoneAbbrText","headerTitle","style","titleTable","body","layout","metaDataTable","widths","activitiesTitleTable","activityTableData","buildActivitiesContent","activityTable","hLine","jobActivities","users","activityRows","activity","duration","user","_entity$start","start","_entity$end","end","authorText","mDuration","durationText","startTime","time","startLocation","endTime","endLocation","startTimeText","showTzAbbr","endTimeText","_toConsumableArray"],"sources":["../../../src/pdf/job/index.js"],"sourcesContent":["import { get, isEmpty, map } from 'lodash'\nimport moment from 'moment-timezone'\n\nimport {\n generateDefinition,\n horizontalLine,\n table,\n text,\n twoColumnTable,\n} from '../helpers'\n\nimport {\n getJobDetails,\n getPrettyDuration,\n getTimezoneDatetime,\n getUserFullName,\n} from '../../helpers'\n\nconst ACTIVITY_COLUMN_HEADERS = [\n { text: 'Type', bold: true },\n { text: 'User', bold: true },\n { text: 'Start Time', bold: true },\n { text: 'Start Location', bold: true },\n { text: 'End Time', bold: true },\n { text: 'End Location', bold: true },\n { text: 'Duration', bold: true },\n]\n\n/**\n * buildJobPdf\n *\n * @param {object} pdfOptions - the pdf options\n * @param {string} pdfOptions.fileTitle - pdf file title\n * @param {function} pdfOptions.footer - function executed to generate footer\n * @param {function} pdfOptions.header - function executed to generate header\n * @param {string} pdfOptions.logoUrl - pdf logo url\n * @param {array} pdfOptions.pageMargins - pdf page margins\n * @param {string} pdfOptions.pageOrientation - pdf page orientation\n * @param {string} pdfOptions.pageSize - pdf page size\n * @param {object} pdfOptions.styles - pdf styles\n * @param {object} pdfOptions.title - pdf title\n * @param {object} data - pdf data\n * @param {object} data.entity - job document\n * @param {array} data.jobActivities - job activities documents\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @returns {Promise} returns pdfmake definition object\n */\nexport function buildJobPdf(pdfOptions, data) {\n const { entity, timezone } = data\n\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n\n const fileTitle = `Job Report - ${title}`\n\n const content = generateContent(data)\n\n return generateDefinition({\n content,\n fileTitle,\n pageOrientation: 'landscape',\n timestamp,\n timezone,\n type: 'Job',\n ...pdfOptions,\n })\n}\n\nfunction generateContent(data) {\n const { entity } = data\n const { title } = entity\n\n const entityDetails = getJobDetails(data)\n\n const metaTableData = [\n [{ text: 'Location', bold: true }, entityDetails.locationText],\n [{ text: 'Author', bold: true }, entityDetails.authorFullName],\n [{ text: 'Reference', bold: true }, entityDetails.reference],\n [{ text: 'Description', bold: true }, entityDetails.description],\n [{ text: 'Due Date', bold: true }, entityDetails.dueDateTimezoneDateTime],\n [{ text: 'Assignees', bold: true }, entityDetails.assigneeNames],\n [\n { text: 'Status', bold: true },\n { text: entityDetails.statusText, color: entityDetails.statusColor },\n ],\n [{ text: 'Created', bold: true }, entityDetails.createdTimezoneDateTime],\n [{ text: 'Timezone', bold: true }, entityDetails.timezoneAbbrText],\n ]\n\n const headerTitle = text(`Job Report: ${title}`, { style: 'title' })\n\n const titleTable = table({\n body: [[headerTitle]],\n layout: 'noBorders',\n style: 'titleTable',\n })\n\n const metaDataTable = twoColumnTable({\n body: metaTableData,\n widths: [150, '*'],\n })\n\n const activitiesTitleTable = table({\n body: [['Job Activities']],\n layout: 'noBorders',\n style: 'activitiesTable',\n })\n\n const activityTableData = buildActivitiesContent(data)\n const activityTable = table(activityTableData)\n const hLine = horizontalLine()\n\n return [\n titleTable,\n metaDataTable,\n activitiesTitleTable,\n hLine,\n activityTable,\n hLine,\n ]\n}\n\nfunction buildActivitiesContent(data) {\n const { jobActivities, timezone, users } = data\n\n if (isEmpty(jobActivities)) {\n return {\n body: [['No Job Activities']],\n widths: '*',\n }\n }\n\n const activityRows = map(jobActivities, activity => {\n const { entity } = activity\n\n const { type, duration, user, start = {}, end = {} } = entity\n\n const authorText = getUserFullName(users, user)\n\n const mDuration = moment.duration(duration, 'minutes')\n const durationText = duration ? getPrettyDuration(mDuration) : ''\n\n const startTime = start.time\n const startLocation = get(start, 'geometryReverseGeocoded.label', '')\n\n const endTime = end.time\n const endLocation = get(end, 'geometryReverseGeocoded.label', '')\n\n const startTimeText = startTime\n ? getTimezoneDatetime({\n showTzAbbr: false,\n timestamp: startTime,\n timezone,\n })\n : ''\n\n const endTimeText = endTime\n ? getTimezoneDatetime({\n showTzAbbr: false,\n timestamp: endTime,\n timezone,\n })\n : ''\n\n return [\n type,\n authorText,\n startTimeText,\n startLocation,\n endTimeText,\n endLocation,\n durationText,\n ]\n })\n\n return {\n body: [ACTIVITY_COLUMN_HEADERS, ...activityRows],\n widths: [70, 80, 60, '*', 60, '*', 50],\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["get","isEmpty","map","moment","generateDefinition","horizontalLine","table","text","twoColumnTable","getJobDetails","getPrettyDuration","getTimezoneDatetime","getUserFullName","ACTIVITY_COLUMN_HEADERS","bold","buildJobPdf","pdfOptions","data","entity","timezone","timestamp","createdAt","title","fileTitle","concat","content","generateContent","_objectSpread","pageOrientation","type","entityDetails","metaTableData","locationText","authorFullName","reference","description","dueDateTimezoneDateTime","assigneeNames","statusText","color","statusColor","createdTimezoneDateTime","timezoneAbbrText","headerTitle","style","titleTable","body","layout","metaDataTable","widths","activitiesTitleTable","activityTableData","buildActivitiesContent","activityTable","hLine","jobActivities","users","activityRows","activity","duration","user","_entity$start","start","_entity$end","end","authorText","mDuration","durationText","startTime","time","startLocation","endTime","endLocation","startTimeText","showTzAbbr","endTimeText","_toConsumableArray"],"sources":["../../../src/pdf/job/index.js"],"sourcesContent":["import { get, isEmpty, map } from 'lodash'\nimport moment from 'moment-timezone'\n\nimport {\n generateDefinition,\n horizontalLine,\n table,\n text,\n twoColumnTable,\n} from '../helpers'\n\nimport {\n getJobDetails,\n getPrettyDuration,\n getTimezoneDatetime,\n getUserFullName,\n} from '../../helpers'\n\nconst ACTIVITY_COLUMN_HEADERS = [\n { text: 'Type', bold: true },\n { text: 'User', bold: true },\n { text: 'Start Time', bold: true },\n { text: 'Start Location', bold: true },\n { text: 'End Time', bold: true },\n { text: 'End Location', bold: true },\n { text: 'Duration', bold: true },\n]\n\n/**\n * buildJobPdf\n *\n * @param {object} pdfOptions - the pdf options\n * @param {string} pdfOptions.fileTitle - pdf file title\n * @param {function} pdfOptions.footer - function executed to generate footer\n * @param {function} pdfOptions.header - function executed to generate header\n * @param {string} pdfOptions.logoUrl - pdf logo url\n * @param {array} pdfOptions.pageMargins - pdf page margins\n * @param {string} pdfOptions.pageOrientation - pdf page orientation\n * @param {string} pdfOptions.pageSize - pdf page size\n * @param {object} pdfOptions.styles - pdf styles\n * @param {object} pdfOptions.title - pdf title\n * @param {object} data - pdf data\n * @param {object} data.entity - job document\n * @param {array} data.jobActivities - job activities documents\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @returns {Promise} returns pdfmake definition object\n */\nexport function buildJobPdf(pdfOptions, data) {\n const { entity, timezone } = data\n\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n\n const fileTitle = `Job Report - ${title}`\n\n const content = generateContent(data)\n\n return generateDefinition({\n content,\n fileTitle,\n pageOrientation: 'landscape',\n timestamp,\n timezone,\n type: 'Job',\n ...pdfOptions,\n })\n}\n\nfunction generateContent(data) {\n const { entity } = data\n const { title } = entity\n\n const entityDetails = getJobDetails(data)\n\n const metaTableData = [\n [{ text: 'Location', bold: true }, entityDetails.locationText],\n [{ text: 'Author', bold: true }, entityDetails.authorFullName],\n [{ text: 'Reference', bold: true }, entityDetails.reference],\n [{ text: 'Description', bold: true }, entityDetails.description],\n [{ text: 'Due Date', bold: true }, entityDetails.dueDateTimezoneDateTime],\n [{ text: 'Assignees', bold: true }, entityDetails.assigneeNames],\n [\n { text: 'Status', bold: true },\n { text: entityDetails.statusText, color: entityDetails.statusColor },\n ],\n [{ text: 'Created', bold: true }, entityDetails.createdTimezoneDateTime],\n [{ text: 'Timezone', bold: true }, entityDetails.timezoneAbbrText],\n ]\n\n const headerTitle = text(`Job Report: ${title}`, { style: 'title' })\n\n const titleTable = table({\n body: [[headerTitle]],\n layout: 'noBorders',\n style: 'titleTable',\n })\n\n const metaDataTable = twoColumnTable({\n body: metaTableData,\n widths: [150, '*'],\n })\n\n const activitiesTitleTable = table({\n body: [['Job Activities']],\n layout: 'noBorders',\n style: 'activitiesTable',\n })\n\n const activityTableData = buildActivitiesContent(data)\n const activityTable = table(activityTableData)\n const hLine = horizontalLine()\n\n return [\n titleTable,\n metaDataTable,\n activitiesTitleTable,\n hLine,\n activityTable,\n hLine,\n ]\n}\n\nfunction buildActivitiesContent(data) {\n const { jobActivities, timezone, users } = data\n\n if (isEmpty(jobActivities)) {\n return {\n body: [['No Job Activities']],\n widths: '*',\n }\n }\n\n const activityRows = map(jobActivities, (activity) => {\n const { entity } = activity\n\n const { type, duration, user, start = {}, end = {} } = entity\n\n const authorText = getUserFullName(users, user)\n\n const mDuration = moment.duration(duration, 'minutes')\n const durationText = duration ? getPrettyDuration(mDuration) : ''\n\n const startTime = start.time\n const startLocation = get(start, 'geometryReverseGeocoded.label', '')\n\n const endTime = end.time\n const endLocation = get(end, 'geometryReverseGeocoded.label', '')\n\n const startTimeText = startTime\n ? getTimezoneDatetime({\n showTzAbbr: false,\n timestamp: startTime,\n timezone,\n })\n : ''\n\n const endTimeText = endTime\n ? getTimezoneDatetime({\n showTzAbbr: false,\n timestamp: endTime,\n timezone,\n })\n : ''\n\n return [\n type,\n authorText,\n startTimeText,\n startLocation,\n endTimeText,\n endLocation,\n durationText,\n ]\n })\n\n return {\n body: [ACTIVITY_COLUMN_HEADERS, ...activityRows],\n widths: [70, 80, 60, '*', 60, '*', 50],\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -33,7 +33,7 @@ var LIGHTHOUSE_BASE_URL = 'https://app.lighthouse.io';
33
33
  * @param {object} data.shift - shift document
34
34
  * @param {object} data.settings - settings properties
35
35
  * @param {string} data.settings.awsS3BaseUrl - aws S3 base url
36
- * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url
36
+ * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url
37
37
  * @param {array} data.tasks - task documents
38
38
  * @param {string} data.timestamp - timestamp string
39
39
  * @param {string} data.timezone - timezone string
@@ -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.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.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":["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":[]}
@@ -25,7 +25,7 @@ import { getTaskEntryDetails } from '../../helpers';
25
25
  * @param {object} data.locations - locations documents
26
26
  * @param {object} data.settings - settings properties
27
27
  * @param {string} data.settings.awsS3BaseUrl - aws S3 base url
28
- * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url
28
+ * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url
29
29
  * @param {string} data.timezone - timezone string
30
30
  * @param {object} data.users - application user documents
31
31
  * @param {object} data.zones - zone documents
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["isEmpty","moment","buildTemplateContent","generateDefinition","getFormattedAddress","text","table","getTaskEntryDetails","buildTaskPdf","pdfOptions","data","entity","timezone","sequenceId","timestamp","createdAt","title","fileTitle","concat","generateContent","then","content","_objectSpread","type","entry","_entity$gps","gps","entityDetails","gpsText","locationText","referenceValue","timezoneHourTime","reverseGeocoded","subTitle","headerSubTitle","style","headerTitle","address","headerAddress","body","push","submittedAtInTimezone","submittedAt","tz","format","showSimplifiedDuration","startedAtInTimezone","startedAt","momentDuration","duration","Math","abs","formDuration","days","floor","asDays","toString","padStart","hours","minutes","seconds","formattedFormDuration","titleTable","layout","formGroups","_toConsumableArray"],"sources":["../../../src/pdf/task/index.js"],"sourcesContent":["import { isEmpty } from 'lodash'\nimport moment from 'moment-timezone'\n\nimport {\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n text,\n table,\n} from '../helpers'\nimport { getTaskEntryDetails } from '../../helpers'\n\n/**\n * buildTaskPdf\n *\n * @param {object} pdfOptions - the pdf options\n * @param {string} pdfOptions.fileTitle - pdf file title\n * @param {function} pdfOptions.footer - function executed to generate footer\n * @param {function} pdfOptions.header - function executed to generate header\n * @param {string} pdfOptions.logoUrl - pdf logo url\n * @param {array} pdfOptions.pageMargins - pdf page margins\n * @param {string} pdfOptions.pageOrientation - pdf page orientation\n * @param {string} pdfOptions.pageSize - pdf page size\n * @param {object} pdfOptions.styles - pdf styles\n * @param {object} pdfOptions.title - pdf title\n * @param {object} data - pdf data\n * @param {object} data.entity - task document\n * @param {object} data.locations - locations documents\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @param {object} data.zones - zone documents\n * @returns {Promise} returns pdfmake definition object\n */\nexport function buildTaskPdf(pdfOptions, data) {\n const { entity, timezone } = data\n\n const sequenceId = entity.sequenceId\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n\n const fileTitle = `Task Report - ${title}`\n\n return generateContent(data).then(content =>\n generateDefinition({\n content,\n fileTitle,\n sequenceId,\n timestamp,\n timezone,\n type: 'Task',\n ...pdfOptions,\n })\n )\n}\n\nfunction generateContent(data) {\n const { entity, timezone } = data\n\n const { entry, gps = {}, title } = entity\n\n const entityDetails = getTaskEntryDetails(data)\n\n const {\n gpsText,\n locationText,\n referenceValue,\n timezoneHourTime,\n } = entityDetails\n\n const reverseGeocoded = gps.reverseGeocoded\n\n const subTitle = `${locationText ||\n gpsText} - ${timezoneHourTime} by ${referenceValue}`\n const headerSubTitle = text(subTitle, { style: 'subTitle' })\n const headerTitle = text(title, { style: 'title' })\n const address = !isEmpty(reverseGeocoded)\n ? getFormattedAddress(reverseGeocoded)\n : ''\n const headerAddress = text(address, { style: 'small' })\n\n const body = [[headerTitle], [headerSubTitle]]\n\n if (!isEmpty(reverseGeocoded)) {\n body.push([headerAddress])\n }\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n style: 'small',\n })\n\n if (entity.showSimplifiedDuration) {\n body.push([submittedAt])\n } else {\n const startedAtInTimezone = entity.startedAt\n ? moment(entity.startedAt)\n .tz(timezone)\n .format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const startedAt = text(`Started: ${startedAtInTimezone}`, {\n style: 'small',\n })\n\n const momentDuration = moment.duration(Math.abs(entity.formDuration))\n const days = Math.floor(momentDuration.asDays())\n .toString()\n .padStart(2, '0')\n const hours = Math.floor(momentDuration.hours())\n .toString()\n .padStart(2, '0')\n const minutes = momentDuration\n .minutes()\n .toString()\n .padStart(2, '0')\n const seconds = momentDuration\n .seconds()\n .toString()\n .padStart(2, '0')\n const formattedFormDuration = entity.formDuration\n ? `${\n entity.formDuration < 0 ? '-' : ''\n }${days}:${hours}:${minutes}:${seconds}`\n : 'Not recorded'\n const formDuration = text(\n `Form Duration (DD:HH:MM:SS): ${formattedFormDuration}`,\n {\n style: 'small',\n }\n )\n\n body.push([startedAt])\n body.push([submittedAt])\n body.push([formDuration])\n }\n\n const titleTable = table({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n })\n\n return buildTemplateContent(entry.formGroups, data).then(entry => [\n titleTable,\n ...entry,\n ])\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["isEmpty","moment","buildTemplateContent","generateDefinition","getFormattedAddress","text","table","getTaskEntryDetails","buildTaskPdf","pdfOptions","data","entity","timezone","sequenceId","timestamp","createdAt","title","fileTitle","concat","generateContent","then","content","_objectSpread","type","entry","_entity$gps","gps","entityDetails","gpsText","locationText","referenceValue","timezoneHourTime","reverseGeocoded","subTitle","headerSubTitle","style","headerTitle","address","headerAddress","body","push","submittedAtInTimezone","submittedAt","tz","format","showSimplifiedDuration","startedAtInTimezone","startedAt","momentDuration","duration","Math","abs","formDuration","days","floor","asDays","toString","padStart","hours","minutes","seconds","formattedFormDuration","titleTable","layout","formGroups","_toConsumableArray"],"sources":["../../../src/pdf/task/index.js"],"sourcesContent":["import { isEmpty } from 'lodash'\nimport moment from 'moment-timezone'\n\nimport {\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n text,\n table,\n} from '../helpers'\nimport { getTaskEntryDetails } from '../../helpers'\n\n/**\n * buildTaskPdf\n *\n * @param {object} pdfOptions - the pdf options\n * @param {string} pdfOptions.fileTitle - pdf file title\n * @param {function} pdfOptions.footer - function executed to generate footer\n * @param {function} pdfOptions.header - function executed to generate header\n * @param {string} pdfOptions.logoUrl - pdf logo url\n * @param {array} pdfOptions.pageMargins - pdf page margins\n * @param {string} pdfOptions.pageOrientation - pdf page orientation\n * @param {string} pdfOptions.pageSize - pdf page size\n * @param {object} pdfOptions.styles - pdf styles\n * @param {object} pdfOptions.title - pdf title\n * @param {object} data - pdf data\n * @param {object} data.entity - task document\n * @param {object} data.locations - locations documents\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudfrontBaseUrl - cloudfront base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @param {object} data.zones - zone documents\n * @returns {Promise} returns pdfmake definition object\n */\nexport function buildTaskPdf(pdfOptions, data) {\n const { entity, timezone } = data\n\n const sequenceId = entity.sequenceId\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n\n const fileTitle = `Task Report - ${title}`\n\n return generateContent(data).then((content) =>\n generateDefinition({\n content,\n fileTitle,\n sequenceId,\n timestamp,\n timezone,\n type: 'Task',\n ...pdfOptions,\n })\n )\n}\n\nfunction generateContent(data) {\n const { entity, timezone } = data\n\n const { entry, gps = {}, title } = entity\n\n const entityDetails = getTaskEntryDetails(data)\n\n const { gpsText, locationText, referenceValue, timezoneHourTime } =\n entityDetails\n\n const reverseGeocoded = gps.reverseGeocoded\n\n const subTitle = `${\n locationText || gpsText\n } - ${timezoneHourTime} by ${referenceValue}`\n const headerSubTitle = text(subTitle, { style: 'subTitle' })\n const headerTitle = text(title, { style: 'title' })\n const address = !isEmpty(reverseGeocoded)\n ? getFormattedAddress(reverseGeocoded)\n : ''\n const headerAddress = text(address, { style: 'small' })\n\n const body = [[headerTitle], [headerSubTitle]]\n\n if (!isEmpty(reverseGeocoded)) {\n body.push([headerAddress])\n }\n\n const submittedAtInTimezone = entity.submittedAt\n ? moment(entity.submittedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const submittedAt = text(`Submitted: ${submittedAtInTimezone}`, {\n style: 'small',\n })\n\n if (entity.showSimplifiedDuration) {\n body.push([submittedAt])\n } else {\n const startedAtInTimezone = entity.startedAt\n ? moment(entity.startedAt).tz(timezone).format('YYYY-MM-DD HH:mm:ss z')\n : 'Not recorded'\n const startedAt = text(`Started: ${startedAtInTimezone}`, {\n style: 'small',\n })\n\n const momentDuration = moment.duration(Math.abs(entity.formDuration))\n const days = Math.floor(momentDuration.asDays()).toString().padStart(2, '0')\n const hours = Math.floor(momentDuration.hours()).toString().padStart(2, '0')\n const minutes = momentDuration.minutes().toString().padStart(2, '0')\n const seconds = momentDuration.seconds().toString().padStart(2, '0')\n const formattedFormDuration = entity.formDuration\n ? `${\n entity.formDuration < 0 ? '-' : ''\n }${days}:${hours}:${minutes}:${seconds}`\n : 'Not recorded'\n const formDuration = text(\n `Form Duration (DD:HH:MM:SS): ${formattedFormDuration}`,\n {\n style: 'small',\n }\n )\n\n body.push([startedAt])\n body.push([submittedAt])\n body.push([formDuration])\n }\n\n const titleTable = table({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n })\n\n return buildTemplateContent(entry.formGroups, data).then((entry) => [\n titleTable,\n ...entry,\n ])\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lighthouse/common",
3
- "version": "6.9.8",
3
+ "version": "6.9.10-canary.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "lib/index.js",