@lighthouse/common 4.34.0-canary-3 → 4.34.0-canary-5

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.
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -11,6 +13,8 @@ var _helpers = require("../helpers");
11
13
 
12
14
  var _helpers2 = require("../../helpers");
13
15
 
16
+ var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
17
+
14
18
  /**
15
19
  * buildTaskPdf
16
20
  *
@@ -57,7 +61,8 @@ function buildTaskPdf(pdfOptions, data) {
57
61
 
58
62
  function generateContent(data) {
59
63
  const {
60
- entity
64
+ entity,
65
+ timezone
61
66
  } = data;
62
67
  const {
63
68
  entry,
@@ -89,27 +94,29 @@ function generateContent(data) {
89
94
  body.push([headerAddress]);
90
95
  }
91
96
 
92
- console.log('entityDetails Keys:', Object.keys(entityDetails).join(', '));
93
- console.dir(entityDetails, {
94
- depth: null
95
- });
97
+ const entityFields = Object.keys(entity);
98
+ console.log('entityFields', entityFields);
99
+ const formDurationFieldsPresent = ['formDuration', 'startedAt', 'submittedAt'].some(field => entityFields.includes(field));
96
100
 
97
- if (entityDetails.startedAt) {
98
- const startedAt = (0, _helpers.text)(`Started: ${entityDetails.startedAt}`, {
101
+ if (formDurationFieldsPresent) {
102
+ const startedAtInTimezone = (0, _momentTimezone.default)(startedAt).tz(timezone).format('yyyy-MM-DD HH:mm:ss z');
103
+ const startedAt = (0, _helpers.text)(`Started At: ${entityDetails.startedAt ? startedAtInTimezone : 'Not recorded'}`, {
99
104
  style: 'small'
100
105
  });
101
106
  body.push([startedAt]);
102
- }
103
-
104
- if (entityDetails.submittedAt) {
105
- const submittedAt = (0, _helpers.text)(`Submitted: ${entityDetails.submittedAt}`, {
107
+ const submittedAtInTimezone = (0, _momentTimezone.default)(submittedAt).tz(timezone).format('yyyy-MM-DD HH:mm:ss z');
108
+ const submittedAt = (0, _helpers.text)(`Submitted At: ${entityDetails.submittedAt ? submittedAtInTimezone : 'Not recorded'}`, {
106
109
  style: 'small'
107
110
  });
108
111
  body.push([submittedAt]);
109
- }
110
112
 
111
- if (entity.formDuration) {
112
- const formDuration = (0, _helpers.text)(`Form Duration: ${entity.formDuration} minutes`, {
113
+ const momentDuration = _momentTimezone.default.duration(Math.abs(formDuration));
114
+
115
+ const hours = Math.floor(momentDuration.asHours()).toString().padStart(2, '0');
116
+ const minutes = momentDuration.minutes().toString().padStart(2, '0');
117
+ const seconds = momentDuration.seconds().toString().padStart(2, '0');
118
+ const formattedFormDuration = `${formDuration < 0 ? '-' : ''}${hours}:${minutes}:${seconds}`;
119
+ const formDuration = (0, _helpers.text)(`Form Duration (HH:MM:SS): ${entity.formDuration ? formattedFormDuration : 'Not recorded'}`, {
113
120
  style: 'small'
114
121
  });
115
122
  body.push([formDuration]);
@@ -8,6 +8,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
8
8
  import { isEmpty } from 'lodash';
9
9
  import { buildTemplateContent, generateDefinition, getFormattedAddress, text, table } from '../helpers';
10
10
  import { getTaskEntryDetails } from '../../helpers';
11
+ import moment from 'moment-timezone';
11
12
  /**
12
13
  * buildTaskPdf
13
14
  *
@@ -53,7 +54,8 @@ export function buildTaskPdf(pdfOptions, data) {
53
54
  }
54
55
 
55
56
  function generateContent(data) {
56
- var entity = data.entity;
57
+ var entity = data.entity,
58
+ timezone = data.timezone;
57
59
  var entry = entity.entry,
58
60
  _entity$gps = entity.gps,
59
61
  gps = _entity$gps === void 0 ? {} : _entity$gps,
@@ -81,27 +83,29 @@ function generateContent(data) {
81
83
  body.push([headerAddress]);
82
84
  }
83
85
 
84
- console.log('entityDetails Keys:', Object.keys(entityDetails).join(', '));
85
- console.dir(entityDetails, {
86
- depth: null
86
+ var entityFields = Object.keys(entity);
87
+ console.log('entityFields', entityFields);
88
+ var formDurationFieldsPresent = ['formDuration', 'startedAt', 'submittedAt'].some(function (field) {
89
+ return entityFields.includes(field);
87
90
  });
88
91
 
89
- if (entityDetails.startedAt) {
90
- var startedAt = text("Started: ".concat(entityDetails.startedAt), {
92
+ if (formDurationFieldsPresent) {
93
+ var startedAtInTimezone = moment(startedAt).tz(timezone).format('yyyy-MM-DD HH:mm:ss z');
94
+ var startedAt = text("Started At: ".concat(entityDetails.startedAt ? startedAtInTimezone : 'Not recorded'), {
91
95
  style: 'small'
92
96
  });
93
97
  body.push([startedAt]);
94
- }
95
-
96
- if (entityDetails.submittedAt) {
97
- var submittedAt = text("Submitted: ".concat(entityDetails.submittedAt), {
98
+ var submittedAtInTimezone = moment(submittedAt).tz(timezone).format('yyyy-MM-DD HH:mm:ss z');
99
+ var submittedAt = text("Submitted At: ".concat(entityDetails.submittedAt ? submittedAtInTimezone : 'Not recorded'), {
98
100
  style: 'small'
99
101
  });
100
102
  body.push([submittedAt]);
101
- }
102
-
103
- if (entity.formDuration) {
104
- var formDuration = text("Form Duration: ".concat(entity.formDuration, " minutes"), {
103
+ var momentDuration = moment.duration(Math.abs(formDuration));
104
+ var hours = Math.floor(momentDuration.asHours()).toString().padStart(2, '0');
105
+ var minutes = momentDuration.minutes().toString().padStart(2, '0');
106
+ var seconds = momentDuration.seconds().toString().padStart(2, '0');
107
+ var formattedFormDuration = "".concat(formDuration < 0 ? '-' : '').concat(hours, ":").concat(minutes, ":").concat(seconds);
108
+ var formDuration = text("Form Duration (HH:MM:SS): ".concat(entity.formDuration ? formattedFormDuration : 'Not recorded'), {
105
109
  style: 'small'
106
110
  });
107
111
  body.push([formDuration]);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/pdf/task/index.js"],"names":["isEmpty","buildTemplateContent","generateDefinition","getFormattedAddress","text","table","getTaskEntryDetails","buildTaskPdf","pdfOptions","data","entity","timezone","sequenceId","timestamp","createdAt","title","fileTitle","generateContent","then","content","type","entry","gps","entityDetails","gpsText","locationText","referenceValue","timezoneHourTime","reverseGeocoded","subTitle","headerSubTitle","style","headerTitle","address","headerAddress","body","push","console","log","Object","keys","join","dir","depth","startedAt","submittedAt","formDuration","titleTable","layout","formGroups"],"mappings":"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","sourcesContent":["import { isEmpty } from 'lodash'\nimport {\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n text,\n table,\n} from '../helpers'\n\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 } = 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 console.log('entityDetails Keys:', Object.keys(entityDetails).join(', '))\n console.dir(entityDetails, { depth: null })\n\n if (entityDetails.startedAt) {\n const startedAt = text(`Started: ${entityDetails.startedAt}`, {\n style: 'small',\n })\n body.push([startedAt])\n }\n\n if (entityDetails.submittedAt) {\n const submittedAt = text(`Submitted: ${entityDetails.submittedAt}`, {\n style: 'small',\n })\n body.push([submittedAt])\n }\n\n if (entity.formDuration) {\n const formDuration = text(`Form Duration: ${entity.formDuration} minutes`, {\n style: 'small',\n })\n body.push([formDuration])\n }\n\n const titleTable = table({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n })\n\n return buildTemplateContent(entry.formGroups, data).then(entry => [\n titleTable,\n ...entry,\n ])\n}\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/pdf/task/index.js"],"names":["isEmpty","buildTemplateContent","generateDefinition","getFormattedAddress","text","table","getTaskEntryDetails","moment","buildTaskPdf","pdfOptions","data","entity","timezone","sequenceId","timestamp","createdAt","title","fileTitle","generateContent","then","content","type","entry","gps","entityDetails","gpsText","locationText","referenceValue","timezoneHourTime","reverseGeocoded","subTitle","headerSubTitle","style","headerTitle","address","headerAddress","body","push","entityFields","Object","keys","console","log","formDurationFieldsPresent","some","field","includes","startedAtInTimezone","startedAt","tz","format","submittedAtInTimezone","submittedAt","momentDuration","duration","Math","abs","formDuration","hours","floor","asHours","toString","padStart","minutes","seconds","formattedFormDuration","titleTable","layout","formGroups"],"mappings":"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","sourcesContent":["import { isEmpty } from 'lodash'\nimport {\n buildTemplateContent,\n generateDefinition,\n getFormattedAddress,\n text,\n table,\n} from '../helpers'\n\nimport { getTaskEntryDetails } from '../../helpers'\nimport moment from 'moment-timezone'\n\n/**\n * buildTaskPdf\n *\n * @param {object} pdfOptions - the pdf options\n * @param {string} pdfOptions.fileTitle - pdf file title\n * @param {function} pdfOptions.footer - function executed to generate footer\n * @param {function} pdfOptions.header - function executed to generate header\n * @param {string} pdfOptions.logoUrl - pdf logo url\n * @param {array} pdfOptions.pageMargins - pdf page margins\n * @param {string} pdfOptions.pageOrientation - pdf page orientation\n * @param {string} pdfOptions.pageSize - pdf page size\n * @param {object} pdfOptions.styles - pdf styles\n * @param {object} pdfOptions.title - pdf title\n * @param {object} data - pdf data\n * @param {object} data.entity - task document\n * @param {object} data.locations - locations documents\n * @param {object} data.settings - settings properties\n * @param {string} data.settings.awsS3BaseUrl - aws S3 base url\n * @param {string} data.settings.cloudinaryBaseUrl - cloudinary base url\n * @param {string} data.timezone - timezone string\n * @param {object} data.users - application user documents\n * @param {object} data.zones - zone documents\n * @returns {Promise} returns pdfmake definition object\n */\nexport function buildTaskPdf(pdfOptions, data) {\n const { entity, timezone } = data\n\n const sequenceId = entity.sequenceId\n const timestamp = entity.createdAt\n const title = entity.title || 'Unknown'\n\n const fileTitle = `Task Report - ${title}`\n\n return generateContent(data).then(content =>\n generateDefinition({\n content,\n fileTitle,\n sequenceId,\n timestamp,\n timezone,\n type: 'Task',\n ...pdfOptions,\n })\n )\n}\n\nfunction generateContent(data) {\n const { entity, timezone } = data\n\n const { entry, gps = {}, title } = entity\n\n const entityDetails = getTaskEntryDetails(data)\n\n const {\n gpsText,\n locationText,\n referenceValue,\n timezoneHourTime,\n } = entityDetails\n\n const reverseGeocoded = gps.reverseGeocoded\n\n const subTitle = `${locationText ||\n gpsText} - ${timezoneHourTime} by ${referenceValue}`\n const headerSubTitle = text(subTitle, { style: 'subTitle' })\n const headerTitle = text(title, { style: 'title' })\n const address = !isEmpty(reverseGeocoded)\n ? getFormattedAddress(reverseGeocoded)\n : ''\n const headerAddress = text(address, { style: 'small' })\n\n const body = [[headerTitle], [headerSubTitle]]\n\n if (!isEmpty(reverseGeocoded)) {\n body.push([headerAddress])\n }\n\n const entityFields = Object.keys(entity)\n console.log('entityFields', entityFields)\n\n const formDurationFieldsPresent = [\n 'formDuration',\n 'startedAt',\n 'submittedAt',\n ].some(field => entityFields.includes(field))\n\n if (formDurationFieldsPresent) {\n const startedAtInTimezone = moment(startedAt)\n .tz(timezone)\n .format('yyyy-MM-DD HH:mm:ss z')\n const startedAt = text(\n `Started At: ${\n entityDetails.startedAt ? startedAtInTimezone : 'Not recorded'\n }`,\n {\n style: 'small',\n }\n )\n body.push([startedAt])\n\n const submittedAtInTimezone = moment(submittedAt)\n .tz(timezone)\n .format('yyyy-MM-DD HH:mm:ss z')\n const submittedAt = text(\n `Submitted At: ${\n entityDetails.submittedAt ? submittedAtInTimezone : 'Not recorded'\n }`,\n {\n style: 'small',\n }\n )\n body.push([submittedAt])\n\n const momentDuration = moment.duration(Math.abs(formDuration))\n const hours = Math.floor(momentDuration.asHours())\n .toString()\n .padStart(2, '0')\n const minutes = momentDuration\n .minutes()\n .toString()\n .padStart(2, '0')\n const seconds = momentDuration\n .seconds()\n .toString()\n .padStart(2, '0')\n const formattedFormDuration = `${\n formDuration < 0 ? '-' : ''\n }${hours}:${minutes}:${seconds}`\n const formDuration = text(\n `Form Duration (HH:MM:SS): ${\n entity.formDuration ? formattedFormDuration : 'Not recorded'\n }`,\n {\n style: 'small',\n }\n )\n\n body.push([formDuration])\n }\n\n const titleTable = table({\n body,\n layout: 'noBorders',\n style: 'titleTable',\n })\n\n return buildTemplateContent(entry.formGroups, data).then(entry => [\n titleTable,\n ...entry,\n ])\n}\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lighthouse/common",
3
- "version": "4.34.0-canary-3",
3
+ "version": "4.34.0-canary-5",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "lib/index.js",