@plusscommunities/pluss-maintenance-web-forms 1.2.5-beta.0 → 1.3.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -7,8 +7,8 @@ import _ from 'lodash';
7
7
  import moment from 'moment';
8
8
  import { Icon } from '@plusscommunities/pluss-icons';
9
9
  import * as PlussCore from '@plusscommunities/pluss-core-web';
10
- import { PERMISSION_CATEGORIES, IMPORTANCE_LEVELS, Colours as Colours$3 } from '@plusscommunities/pluss-core-web';
11
- import { Table, Dropdown, DropdownButton } from 'react-bootstrap';
10
+ import { PERMISSION_CATEGORIES, IMPORTANCE_LEVELS, Colours as Colours$4 } from '@plusscommunities/pluss-core-web';
11
+ import { Table, MenuItem, DropdownButton } from 'react-bootstrap';
12
12
  import { Link } from 'react-router-dom';
13
13
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
14
14
  import Textarea from 'react-textarea-autosize';
@@ -43,7 +43,7 @@ var values = {
43
43
  screenAddJobType: "AddJobTypeForms",
44
44
  screenJob: "JobForms",
45
45
  screenJobTypes: "JobTypesForms",
46
- menuIcon: "file-lines",
46
+ menuIcon: "form",
47
47
  isFontAwesomeIcon: false,
48
48
  isSVGIcon: true,
49
49
  svgPathGridIcon: "M164,152a4,4,0,0,1-4,4H96a4,4,0,0,1,0-8h64A4,4,0,0,1,164,152Zm-4-36H96a4,4,0,0,0,0,8h64a4,4,0,0,0,0-8Zm52-68V216a12,12,0,0,1-12,12H56a12,12,0,0,1-12-12V48A12,12,0,0,1,56,36H94.08a44,44,0,0,1,67.84,0H200A12,12,0,0,1,212,48ZM92,64v4h72V64a36,36,0,0,0-72,0ZM204,48a4,4,0,0,0-4-4H167.17A43.71,43.71,0,0,1,172,64v8a4,4,0,0,1-4,4H88a4,4,0,0,1-4-4V64a43.71,43.71,0,0,1,4.83-20H56a4,4,0,0,0-4,4V216a4,4,0,0,0,4,4H200a4,4,0,0,0,4-4Z",
@@ -82,7 +82,13 @@ var values = {
82
82
  hasHelpButton: true,
83
83
  helpGuideURL: "https://www.plusscommunities.com/forms-feature",
84
84
  stringConfigJobStatus: "maintenanceJobStatusForms",
85
- stringConfigHideSeen: "maintenanceDisableSeenForms"
85
+ stringConfigHideSeen: "maintenanceDisableSeenForms",
86
+ // Comment subscription notification preference
87
+ notificationPreference: {
88
+ key: "maintenancerequestFormsComments",
89
+ label: "Forms comments",
90
+ permission: "maintenanceTrackingForms"
91
+ }
86
92
  };
87
93
 
88
94
  // import * as PlussCore from '../../pluss-core/src';
@@ -214,7 +220,8 @@ var FeatureConfig = {
214
220
  init: environment => {
215
221
  FeatureConfig.env = environment;
216
222
  PlussCore.Config.init(environment);
217
- }
223
+ },
224
+ notificationPreference: values.notificationPreference
218
225
  };
219
226
 
220
227
  var JOBS_LOADED = values.actionJobsLoaded;
@@ -224,15 +231,15 @@ var JOBS_TYPES_LOADED = values.actionJobsTypesLoaded;
224
231
  var JOBS_STATUSES_LOADED = values.actionJobsStatusesLoaded;
225
232
  var JOBS_HIDE_SEEN = values.actionJobsHideSeen;
226
233
 
227
- function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
228
- function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
234
+ function ownKeys$8(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
235
+ function _objectSpread$8(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$8(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$8(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
229
236
  var {
230
- Helper: Helper$5,
237
+ Helper: Helper$6,
231
238
  Session: Session$9
232
239
  } = PlussCore;
233
240
  var maintenanceActions = {
234
241
  getJobType: (site, typeId) => {
235
- var url = Helper$5.getUrl(values.serviceKey, "getjobtype");
242
+ var url = Helper$6.getUrl(values.serviceKey, "getjobtype");
236
243
  return Session$9.authedFunction({
237
244
  method: "POST",
238
245
  url,
@@ -243,7 +250,7 @@ var maintenanceActions = {
243
250
  });
244
251
  },
245
252
  getJobTypes: (site, id) => {
246
- var url = Helper$5.getUrl(values.serviceKey, "getjobtypes");
253
+ var url = Helper$6.getUrl(values.serviceKey, "getjobtypes");
247
254
  return Session$9.authedFunction({
248
255
  method: "POST",
249
256
  url,
@@ -253,7 +260,7 @@ var maintenanceActions = {
253
260
  });
254
261
  },
255
262
  getJob: (site, id) => {
256
- var url = Helper$5.getUrl(values.serviceKey, "getJob");
263
+ var url = Helper$6.getUrl(values.serviceKey, "getJob");
257
264
  return Session$9.authedFunction({
258
265
  method: "POST",
259
266
  url,
@@ -264,7 +271,7 @@ var maintenanceActions = {
264
271
  });
265
272
  },
266
273
  getJobByJobId: (site, jobId) => {
267
- var url = Helper$5.getUrl(values.serviceKey, "getJob");
274
+ var url = Helper$6.getUrl(values.serviceKey, "getJob");
268
275
  return Session$9.authedFunction({
269
276
  method: "POST",
270
277
  url,
@@ -279,7 +286,7 @@ var maintenanceActions = {
279
286
  var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "";
280
287
  return Session$9.authedFunction({
281
288
  method: "POST",
282
- url: Helper$5.getUrl(values.serviceKey, "getJobs"),
289
+ url: Helper$6.getUrl(values.serviceKey, "getJobs"),
283
290
  data: {
284
291
  site,
285
292
  status,
@@ -302,7 +309,7 @@ var maintenanceActions = {
302
309
  }
303
310
  return Session$9.authedFunction({
304
311
  method: "GET",
305
- url: Helper$5.getUrl(values.serviceKey, "get/requests", query)
312
+ url: Helper$6.getUrl(values.serviceKey, "get/requests", query)
306
313
  });
307
314
  },
308
315
  getJobsRecursive: function getJobsRecursive(site, status, type, lastKey) {
@@ -320,14 +327,14 @@ var maintenanceActions = {
320
327
  createJob: job => {
321
328
  return Session$9.authedFunction({
322
329
  method: "POST",
323
- url: Helper$5.getUrl(values.serviceKey, "sendMaintenance"),
324
- data: _objectSpread$7({}, job)
330
+ url: Helper$6.getUrl(values.serviceKey, "sendMaintenance"),
331
+ data: _objectSpread$8({}, job)
325
332
  });
326
333
  },
327
334
  editJob: (job, site) => {
328
335
  return Session$9.authedFunction({
329
336
  method: "POST",
330
- url: Helper$5.getUrl(values.serviceKey, "editJob"),
337
+ url: Helper$6.getUrl(values.serviceKey, "editJob"),
331
338
  data: {
332
339
  job,
333
340
  site
@@ -337,7 +344,7 @@ var maintenanceActions = {
337
344
  deleteJob: (site, id) => {
338
345
  return Session$9.authedFunction({
339
346
  method: "POST",
340
- url: Helper$5.getUrl(values.serviceKey, "requests/remove"),
347
+ url: Helper$6.getUrl(values.serviceKey, "requests/remove"),
341
348
  data: {
342
349
  site,
343
350
  id
@@ -347,7 +354,7 @@ var maintenanceActions = {
347
354
  editJobStatus: (id, status) => {
348
355
  return Session$9.authedFunction({
349
356
  method: "POST",
350
- url: Helper$5.getUrl(values.serviceKey, "editJobStatus"),
357
+ url: Helper$6.getUrl(values.serviceKey, "editJobStatus"),
351
358
  data: {
352
359
  id,
353
360
  status
@@ -357,7 +364,7 @@ var maintenanceActions = {
357
364
  editJobPriority: (id, priority) => {
358
365
  return Session$9.authedFunction({
359
366
  method: "POST",
360
- url: Helper$5.getUrl(values.serviceKey, "update/priority"),
367
+ url: Helper$6.getUrl(values.serviceKey, "update/priority"),
361
368
  data: {
362
369
  id,
363
370
  priority
@@ -367,7 +374,7 @@ var maintenanceActions = {
367
374
  assignJob: (jobId, userId) => {
368
375
  return Session$9.authedFunction({
369
376
  method: "POST",
370
- url: Helper$5.getUrl(values.serviceKey, "update/assign"),
377
+ url: Helper$6.getUrl(values.serviceKey, "update/assign"),
371
378
  data: {
372
379
  id: jobId,
373
380
  userId
@@ -377,7 +384,7 @@ var maintenanceActions = {
377
384
  getAssignees: site => {
378
385
  return Session$9.authedFunction({
379
386
  method: "GET",
380
- url: Helper$5.getUrl(values.serviceKey, "get/assignees", {
387
+ url: Helper$6.getUrl(values.serviceKey, "get/assignees", {
381
388
  site
382
389
  })
383
390
  });
@@ -385,7 +392,7 @@ var maintenanceActions = {
385
392
  addNote: (jobId, note, attachments, images) => {
386
393
  return Session$9.authedFunction({
387
394
  method: "POST",
388
- url: Helper$5.getUrl(values.serviceKey, "requests/note"),
395
+ url: Helper$6.getUrl(values.serviceKey, "requests/note"),
389
396
  data: {
390
397
  id: jobId,
391
398
  note,
@@ -398,7 +405,7 @@ var maintenanceActions = {
398
405
  editNote: (jobId, noteId, note, attachments, images) => {
399
406
  return Session$9.authedFunction({
400
407
  method: "POST",
401
- url: Helper$5.getUrl(values.serviceKey, "requests/note"),
408
+ url: Helper$6.getUrl(values.serviceKey, "requests/note"),
402
409
  data: {
403
410
  id: jobId,
404
411
  note,
@@ -412,7 +419,7 @@ var maintenanceActions = {
412
419
  deleteNote: (jobId, noteId) => {
413
420
  return Session$9.authedFunction({
414
421
  method: "POST",
415
- url: Helper$5.getUrl(values.serviceKey, "requests/note"),
422
+ url: Helper$6.getUrl(values.serviceKey, "requests/note"),
416
423
  data: {
417
424
  id: jobId,
418
425
  noteId,
@@ -432,7 +439,7 @@ var maintenanceActions = {
432
439
  };
433
440
  return Session$9.authedFunction({
434
441
  method: "POST",
435
- url: Helper$5.getUrl(values.serviceKey, "createJobType"),
442
+ url: Helper$6.getUrl(values.serviceKey, "createJobType"),
436
443
  data
437
444
  });
438
445
  },
@@ -450,14 +457,14 @@ var maintenanceActions = {
450
457
  if (hasCustomFields && customFields) data.customFields = customFields;
451
458
  return Session$9.authedFunction({
452
459
  method: "POST",
453
- url: Helper$5.getUrl(values.serviceKey, "editJobType"),
460
+ url: Helper$6.getUrl(values.serviceKey, "editJobType"),
454
461
  data
455
462
  });
456
463
  },
457
464
  deleteJobType: (site, id) => {
458
465
  return Session$9.authedFunction({
459
466
  method: "POST",
460
- url: Helper$5.getUrl(values.serviceKey, "deleteJobType"),
467
+ url: Helper$6.getUrl(values.serviceKey, "deleteJobType"),
461
468
  data: {
462
469
  site,
463
470
  id
@@ -467,7 +474,7 @@ var maintenanceActions = {
467
474
  getExternalSync: jobId => {
468
475
  return Session$9.authedFunction({
469
476
  method: "GET",
470
- url: Helper$5.getUrl(values.serviceKey, "get/externalsync", {
477
+ url: Helper$6.getUrl(values.serviceKey, "get/externalsync", {
471
478
  id: jobId
472
479
  })
473
480
  });
@@ -475,7 +482,7 @@ var maintenanceActions = {
475
482
  retrySync: jobId => {
476
483
  return Session$9.authedFunction({
477
484
  method: "POST",
478
- url: Helper$5.getUrl(values.serviceKey, "update/retrysync"),
485
+ url: Helper$6.getUrl(values.serviceKey, "update/retrysync"),
479
486
  data: {
480
487
  id: jobId
481
488
  }
@@ -484,7 +491,7 @@ var maintenanceActions = {
484
491
  };
485
492
 
486
493
  var {
487
- Helper: Helper$4,
494
+ Helper: Helper$5,
488
495
  Session: Session$8
489
496
  } = PlussCore;
490
497
  var reactionActions = {
@@ -502,7 +509,7 @@ var reactionActions = {
502
509
  }
503
510
  return Session$8.authedFunction({
504
511
  method: "POST",
505
- url: Helper$4.getUrl("reactions", "comments/add"),
512
+ url: Helper$5.getUrl("reactions", "comments/add"),
506
513
  data
507
514
  });
508
515
  },
@@ -525,7 +532,7 @@ var reactionActions = {
525
532
  }
526
533
  return Session$8.authedFunction({
527
534
  method: "GET",
528
- url: Helper$4.getUrl("reactions", "comments/get", query)
535
+ url: Helper$5.getUrl("reactions", "comments/get", query)
529
536
  });
530
537
  }
531
538
  };
@@ -559,7 +566,7 @@ var jobStatusOptions = [
559
566
  ];
560
567
 
561
568
  var {
562
- Helper: Helper$3
569
+ Helper: Helper$4
563
570
  } = PlussCore;
564
571
  var jobsUpdate = (site, isdashboard) => {
565
572
  return dispatch => {
@@ -567,7 +574,7 @@ var jobsUpdate = (site, isdashboard) => {
567
574
  type: JOBS_LOADING
568
575
  });
569
576
  maintenanceActions.getJobsRecursive(site).then(res => {
570
- var currentSite = Helper$3.readStorageWithCookie("site");
577
+ var currentSite = Helper$4.readStorageWithCookie("site");
571
578
  if (!_.isEmpty(res) && res[0].site === currentSite) {
572
579
  dispatch({
573
580
  type: JOBS_LOADED,
@@ -719,8 +726,8 @@ var getJobPriority = priority => {
719
726
  return priorityOption || getDefaultPriority();
720
727
  };
721
728
 
722
- function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
723
- function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
729
+ function ownKeys$7(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
730
+ function _objectSpread$7(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$7(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$7(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
724
731
  var {
725
732
  Session: Session$7,
726
733
  Components: Components$7,
@@ -1093,7 +1100,7 @@ class JobList extends Component {
1093
1100
  });
1094
1101
  var customFieldValues = this.getCustomFields(r, customColumns);
1095
1102
  var priority = r.priority || defaultPriority;
1096
- return _objectSpread$6(_objectSpread$6(_objectSpread$6({}, r), customFieldValues), {}, {
1103
+ return _objectSpread$7(_objectSpread$7(_objectSpread$7({}, r), customFieldValues), {}, {
1097
1104
  notes,
1098
1105
  progressTime,
1099
1106
  completedTime,
@@ -1269,7 +1276,7 @@ class JobList extends Component {
1269
1276
  isActive: this.isValidTimeFilter()
1270
1277
  }],
1271
1278
  children: /*#__PURE__*/jsx("div", {
1272
- style: {
1279
+ iconStyle: {
1273
1280
  minHeight: 150
1274
1281
  },
1275
1282
  children: /*#__PURE__*/jsx(Components$7.AnalyticsFilter, {
@@ -1292,7 +1299,7 @@ class JobList extends Component {
1292
1299
  onClick: () => {
1293
1300
  this.onSelectAssignee();
1294
1301
  },
1295
- colour: Colours$3.COLOUR_DUSK
1302
+ colour: Colours$4.COLOUR_DUSK
1296
1303
  })
1297
1304
  }, this.state.selectedAssignee.id)
1298
1305
  });
@@ -1347,7 +1354,7 @@ class JobList extends Component {
1347
1354
  onClick: () => {
1348
1355
  this.onSelectRequester();
1349
1356
  },
1350
- colour: Colours$3.COLOUR_DUSK
1357
+ colour: Colours$4.COLOUR_DUSK
1351
1358
  })
1352
1359
  }, this.state.selectedRequester.id)
1353
1360
  });
@@ -1463,7 +1470,7 @@ class JobList extends Component {
1463
1470
  }), /*#__PURE__*/jsx("td", {
1464
1471
  className: "table-options",
1465
1472
  children: /*#__PURE__*/jsxs("div", {
1466
- style: {
1473
+ iconStyle: {
1467
1474
  display: "flex",
1468
1475
  alignItems: "center"
1469
1476
  },
@@ -1630,17 +1637,17 @@ class JobList extends Component {
1630
1637
  },
1631
1638
  children: ["Assigned To", this.renderSort("assigned")]
1632
1639
  }), /*#__PURE__*/jsx("th", {
1633
- style: {
1640
+ iconStyle: {
1634
1641
  width: 120
1635
1642
  },
1636
1643
  children: "Status"
1637
1644
  }), /*#__PURE__*/jsx("th", {
1638
- style: {
1645
+ iconStyle: {
1639
1646
  width: 120
1640
1647
  },
1641
1648
  children: "Priority"
1642
1649
  }), /*#__PURE__*/jsx("th", {
1643
- style: {
1650
+ iconStyle: {
1644
1651
  width: 50
1645
1652
  }
1646
1653
  })]
@@ -1825,7 +1832,7 @@ class JobList extends Component {
1825
1832
  }
1826
1833
  render() {
1827
1834
  return /*#__PURE__*/jsxs("div", {
1828
- style: {
1835
+ iconStyle: {
1829
1836
  minWidth: "100%"
1830
1837
  },
1831
1838
  children: [this.renderFilterPopup(), this.renderCSVPopup(), this.renderFilters(), this.renderContent()]
@@ -1950,7 +1957,7 @@ class JobTypes extends Component {
1950
1957
  }), /*#__PURE__*/jsx("td", {
1951
1958
  className: "table-options",
1952
1959
  children: /*#__PURE__*/jsxs("div", {
1953
- style: {
1960
+ iconStyle: {
1954
1961
  display: "flex",
1955
1962
  alignItems: "center"
1956
1963
  },
@@ -2015,7 +2022,7 @@ class JobTypes extends Component {
2015
2022
  onClick: () => this.sortByCol("email"),
2016
2023
  children: "Email"
2017
2024
  }), /*#__PURE__*/jsx("th", {
2018
- style: {
2025
+ iconStyle: {
2019
2026
  width: 70
2020
2027
  }
2021
2028
  })]
@@ -2068,7 +2075,7 @@ class JobTypes extends Component {
2068
2075
  } = this.state;
2069
2076
  if (jobList.length === 0 && loading) {
2070
2077
  return /*#__PURE__*/jsx("div", {
2071
- style: {
2078
+ iconStyle: {
2072
2079
  minWidth: "100%"
2073
2080
  },
2074
2081
  children: /*#__PURE__*/jsx("div", {
@@ -2077,7 +2084,7 @@ class JobTypes extends Component {
2077
2084
  textAlign: "center"
2078
2085
  },
2079
2086
  children: /*#__PURE__*/jsx(Icon, {
2080
- style: {
2087
+ iconStyle: {
2081
2088
  fontSize: 30,
2082
2089
  color: FeatureConfig.env.colourBrandingOff
2083
2090
  },
@@ -2089,7 +2096,7 @@ class JobTypes extends Component {
2089
2096
  });
2090
2097
  }
2091
2098
  return /*#__PURE__*/jsxs("div", {
2092
- style: {
2099
+ iconStyle: {
2093
2100
  minWidth: "100%"
2094
2101
  },
2095
2102
  children: [/*#__PURE__*/jsx("div", {
@@ -2103,7 +2110,7 @@ class JobTypes extends Component {
2103
2110
  }
2104
2111
  render() {
2105
2112
  return /*#__PURE__*/jsxs("div", {
2106
- style: {
2113
+ iconStyle: {
2107
2114
  minWidth: "100%"
2108
2115
  },
2109
2116
  children: [/*#__PURE__*/jsx("div", {
@@ -2128,12 +2135,12 @@ var JobTypes$1 = connect(mapStateToProps$6, {
2128
2135
  jobTypesUpdate
2129
2136
  })(withRouter(JobTypes));
2130
2137
 
2131
- function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2132
- function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2138
+ function ownKeys$6(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2139
+ function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$6(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$6(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2133
2140
  var {
2134
2141
  Session: Session$5,
2135
2142
  Components: Components$5,
2136
- Colours: Colours$2
2143
+ Colours: Colours$3
2137
2144
  } = PlussCore;
2138
2145
  class Configuration extends Component {
2139
2146
  constructor(props) {
@@ -2336,7 +2343,7 @@ class Configuration extends Component {
2336
2343
  style: styles$6.statusTypeContainer,
2337
2344
  children: [/*#__PURE__*/jsx("div", {
2338
2345
  className: "statusLabel",
2339
- style: _objectSpread$5(_objectSpread$5({}, styles$6.statusTextContainer), {}, {
2346
+ style: _objectSpread$6(_objectSpread$6({}, styles$6.statusTextContainer), {}, {
2340
2347
  backgroundColor: status.color
2341
2348
  }),
2342
2349
  children: /*#__PURE__*/jsx("span", {
@@ -2350,23 +2357,23 @@ class Configuration extends Component {
2350
2357
  children: status.category
2351
2358
  })
2352
2359
  }), /*#__PURE__*/jsx(Icon, {
2353
- style: _objectSpread$5(_objectSpread$5({}, styles$6.statusIcon), {}, {
2360
+ style: _objectSpread$6(_objectSpread$6({}, styles$6.statusIcon), {}, {
2354
2361
  visibility: index === 0 ? "hidden" : "visible"
2355
2362
  }),
2356
2363
  name: "arrow-up",
2357
2364
  onClick: () => this.onMoveStatus(index, true)
2358
2365
  }), /*#__PURE__*/jsx(Icon, {
2359
- style: _objectSpread$5(_objectSpread$5({}, styles$6.statusIcon), {}, {
2366
+ style: _objectSpread$6(_objectSpread$6({}, styles$6.statusIcon), {}, {
2360
2367
  visibility: index === statusTypes.length - 1 ? "hidden" : "visible"
2361
2368
  }),
2362
2369
  name: "arrow-down",
2363
2370
  onClick: () => this.onMoveStatus(index, false)
2364
2371
  }), /*#__PURE__*/jsx(Icon, {
2365
- style: _objectSpread$5({}, styles$6.statusIcon),
2372
+ style: _objectSpread$6({}, styles$6.statusIcon),
2366
2373
  icon: "pencil",
2367
2374
  onClick: () => this.onEditStatus(index)
2368
2375
  }), /*#__PURE__*/jsx(Icon, {
2369
- style: _objectSpread$5({}, styles$6.statusIcon),
2376
+ style: _objectSpread$6({}, styles$6.statusIcon),
2370
2377
  icon: "circle-minus",
2371
2378
  onClick: () => this.onDeleteStatus(index)
2372
2379
  })]
@@ -2423,8 +2430,8 @@ class Configuration extends Component {
2423
2430
  renderSuccess() {
2424
2431
  if (!this.state.success) return null;
2425
2432
  return /*#__PURE__*/jsx("span", {
2426
- style: _objectSpread$5(_objectSpread$5({}, styles$6.savedText), {}, {
2427
- color: Colours$2.COLOUR_GREEN
2433
+ iconStyle: _objectSpread$6(_objectSpread$6({}, styles$6.savedText), {}, {
2434
+ color: Colours$3.COLOUR_GREEN
2428
2435
  }),
2429
2436
  children: "Saved"
2430
2437
  });
@@ -2536,11 +2543,11 @@ class Configuration extends Component {
2536
2543
  }
2537
2544
  render() {
2538
2545
  return /*#__PURE__*/jsxs("div", {
2539
- style: {
2546
+ iconStyle: {
2540
2547
  minWidth: "100%"
2541
2548
  },
2542
2549
  children: [this.renderStatuses(), this.renderOtherOptions(), /*#__PURE__*/jsxs("div", {
2543
- style: {
2550
+ iconStyle: {
2544
2551
  paddingTop: 24,
2545
2552
  paddingBottom: 24
2546
2553
  },
@@ -2574,7 +2581,7 @@ var styles$6 = {
2574
2581
  fontSize: 20,
2575
2582
  padding: 5,
2576
2583
  marginLeft: 10,
2577
- color: Colours$2.COLOUR_BRANDING_ACTION,
2584
+ color: Colours$3.COLOUR_BRANDING_ACTION,
2578
2585
  visibility: "visible"
2579
2586
  },
2580
2587
  savedText: {
@@ -2755,7 +2762,7 @@ class RequestsHub extends Component {
2755
2762
  sectionItems.push({
2756
2763
  type: "navItem",
2757
2764
  text: "Feature Configuration",
2758
- icon: "gear",
2765
+ icon: "settings",
2759
2766
  isFontAwesome: false,
2760
2767
  selected: this.state.selectedSection === "config",
2761
2768
  onClick: () => {
@@ -2839,13 +2846,13 @@ var RequestsHub$1 = connect(mapStateToProps$4, {
2839
2846
  jobsLoaded
2840
2847
  })(withRouter(RequestsHub));
2841
2848
 
2842
- function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2843
- function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2849
+ function ownKeys$5(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2850
+ function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$5(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$5(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2844
2851
  var {
2845
2852
  Apis: Apis$1,
2846
- Helper: Helper$2,
2853
+ Helper: Helper$3,
2847
2854
  Session: Session$3,
2848
- Colours: Colours$1,
2855
+ Colours: Colours$2,
2849
2856
  Components: Components$3
2850
2857
  } = PlussCore;
2851
2858
  var IMAGE_SIZE_NOTE = 72;
@@ -2929,7 +2936,7 @@ class Job extends Component {
2929
2936
  var statusType = statusTypes.find(s => s.text === status);
2930
2937
  if (!statusType) {
2931
2938
  var defaultStatus = statusTypes.find(s => s.category === STATUS_NOT_ACTIONED);
2932
- statusType = _objectSpread$4(_objectSpread$4({}, defaultStatus), {}, {
2939
+ statusType = _objectSpread$5(_objectSpread$5({}, defaultStatus), {}, {
2933
2940
  text: status
2934
2941
  });
2935
2942
  }
@@ -3124,7 +3131,7 @@ class Job extends Component {
3124
3131
  }
3125
3132
  maintenanceActions.deleteNote(this.state.jobId, n.Id);
3126
3133
  var newNotes = _.filter(this.state.job.Notes, note => note.Id !== n.Id);
3127
- var newJob = _objectSpread$4({}, this.state.job);
3134
+ var newJob = _objectSpread$5({}, this.state.job);
3128
3135
  newJob.Notes = newNotes;
3129
3136
  this.setState({
3130
3137
  job: newJob,
@@ -3209,7 +3216,7 @@ class Job extends Component {
3209
3216
  _defineProperty(this, "onSelectPriority", /*#__PURE__*/function () {
3210
3217
  var _ref0 = _asyncToGenerator(function* (priority) {
3211
3218
  _this.setState({
3212
- job: _objectSpread$4(_objectSpread$4({}, _this.state.job), {}, {
3219
+ job: _objectSpread$5(_objectSpread$5({}, _this.state.job), {}, {
3213
3220
  priority
3214
3221
  }),
3215
3222
  priorityChangerOpen: false
@@ -3239,7 +3246,7 @@ class Job extends Component {
3239
3246
  _defineProperty(this, "onSelectStatus", /*#__PURE__*/function () {
3240
3247
  var _ref1 = _asyncToGenerator(function* (status) {
3241
3248
  _this.setState({
3242
- job: _objectSpread$4(_objectSpread$4({}, _this.state.job), {}, {
3249
+ job: _objectSpread$5(_objectSpread$5({}, _this.state.job), {}, {
3243
3250
  status: status
3244
3251
  }),
3245
3252
  statusChangerOpen: false
@@ -3262,7 +3269,7 @@ class Job extends Component {
3262
3269
  };
3263
3270
  }());
3264
3271
  this.state = {
3265
- jobId: Helper$2.safeReadParams(props, "jobId") ? props.match.params.jobId : null,
3272
+ jobId: Helper$3.safeReadParams(props, "jobId") ? props.match.params.jobId : null,
3266
3273
  job: null,
3267
3274
  showingSelector: false,
3268
3275
  updating: false,
@@ -3483,7 +3490,7 @@ class Job extends Component {
3483
3490
  children: /*#__PURE__*/jsx("div", {
3484
3491
  className: "imageGrid_image",
3485
3492
  style: {
3486
- backgroundImage: "url('".concat(Helper$2.get1400(image), "')"),
3493
+ backgroundImage: "url('".concat(Helper$3.get1400(image), "')"),
3487
3494
  width: size,
3488
3495
  height: size
3489
3496
  }
@@ -3579,7 +3586,7 @@ class Job extends Component {
3579
3586
  } = this.state.job;
3580
3587
  var hasCustomFields = customFields && customFields.length > 0;
3581
3588
  return /*#__PURE__*/jsxs("div", {
3582
- style: {
3589
+ iconStyle: {
3583
3590
  paddingBottom: 40
3584
3591
  },
3585
3592
  children: [/*#__PURE__*/jsxs("div", {
@@ -3728,7 +3735,7 @@ class Job extends Component {
3728
3735
  children: [/*#__PURE__*/jsxs("div", {
3729
3736
  className: "maintenanceNote_top",
3730
3737
  children: [this.props.auth && this.props.auth.user && this.props.auth.user.Id === note.User.id && /*#__PURE__*/jsx(Icon, {
3731
- colour: Colours$1.COLOUR_DUSK_LIGHT,
3738
+ colour: Colours$2.COLOUR_DUSK_LIGHT,
3732
3739
  icon: "ellipsis-vertical",
3733
3740
  className: "maintenanceNote_moreIcon",
3734
3741
  onClick: () => this.onOpenNoteMenu(index)
@@ -3748,7 +3755,7 @@ class Job extends Component {
3748
3755
  })]
3749
3756
  }), /*#__PURE__*/jsx("p", {
3750
3757
  className: "maintenanceNote_text",
3751
- children: Helper$2.toParagraphed(note.Note)
3758
+ children: Helper$3.toParagraphed(note.Note)
3752
3759
  }), note.Attachments.map((a, i) => this.renderAttachment(a, i)), note.Images && note.Images.length > 0 ? this.renderImageGrid(note.Images, IMAGE_SIZE_NOTE) : null]
3753
3760
  })]
3754
3761
  }, index);
@@ -3792,7 +3799,7 @@ class Job extends Component {
3792
3799
  }), /*#__PURE__*/jsx("div", {
3793
3800
  className: "statusLabel statusLabel-large statusLabel-full",
3794
3801
  style: {
3795
- backgroundColor: Colours$1.COLOUR_DUSK
3802
+ backgroundColor: Colours$2.COLOUR_DUSK
3796
3803
  },
3797
3804
  children: /*#__PURE__*/jsxs("span", {
3798
3805
  className: "statusLabel_text",
@@ -3803,7 +3810,7 @@ class Job extends Component {
3803
3810
  }
3804
3811
  renderExternalSyncEntry(e, i) {
3805
3812
  var isSuccess = e.EntryType === "ExternalIDSet";
3806
- var backgroundColor = isSuccess ? Colours$1.COLOUR_GREEN : Colours$1.COLOUR_RED; // Green for success, red for failure
3813
+ var backgroundColor = isSuccess ? Colours$2.COLOUR_GREEN : Colours$2.COLOUR_RED; // Green for success, red for failure
3807
3814
 
3808
3815
  return /*#__PURE__*/jsxs("div", {
3809
3816
  className: "ticketHistoryEntry",
@@ -3869,7 +3876,7 @@ class Job extends Component {
3869
3876
  return /*#__PURE__*/jsx(Icon, {
3870
3877
  style: {
3871
3878
  fontSize: 20,
3872
- color: Colours$1.COLOUR_DUSK_LIGHT,
3879
+ color: Colours$2.COLOUR_DUSK_LIGHT,
3873
3880
  marginLeft: 8
3874
3881
  },
3875
3882
  icon: "spinner",
@@ -3881,7 +3888,7 @@ class Job extends Component {
3881
3888
  className: "statusLabel pointer",
3882
3889
  onClick: this.onRetrySync,
3883
3890
  style: {
3884
- backgroundColor: Colours$1.COLOUR_RED,
3891
+ backgroundColor: Colours$2.COLOUR_RED,
3885
3892
  marginLeft: 8
3886
3893
  },
3887
3894
  children: /*#__PURE__*/jsx("span", {
@@ -3904,7 +3911,7 @@ class Job extends Component {
3904
3911
  className: "userStatusIcon",
3905
3912
  icon: "circle-xmark",
3906
3913
  style: {
3907
- color: Colours$1.COLOUR_RED
3914
+ color: Colours$2.COLOUR_RED
3908
3915
  }
3909
3916
  }), " ", retrySyncError]
3910
3917
  });
@@ -3918,7 +3925,7 @@ class Job extends Component {
3918
3925
  className: "userStatusIcon",
3919
3926
  icon: "circle-check",
3920
3927
  style: {
3921
- color: Colours$1.COLOUR_GREEN
3928
+ color: Colours$2.COLOUR_GREEN
3922
3929
  }
3923
3930
  }), " ", "Sync retry initiated. Check back shortly for results."]
3924
3931
  });
@@ -3932,7 +3939,7 @@ class Job extends Component {
3932
3939
  className: "userStatusIcon",
3933
3940
  icon: "circle-xmark",
3934
3941
  style: {
3935
- color: Colours$1.COLOUR_RED
3942
+ color: Colours$2.COLOUR_RED
3936
3943
  }
3937
3944
  }), " ", "External sync failed. Use the retry button to attempt again."]
3938
3945
  });
@@ -3992,11 +3999,11 @@ class Job extends Component {
3992
3999
  } = this.state;
3993
4000
  if (!job || !job.history) return null;
3994
4001
  var source = _.sortBy([...job.history.map(e => {
3995
- return _objectSpread$4(_objectSpread$4({}, e), {}, {
4002
+ return _objectSpread$5(_objectSpread$5({}, e), {}, {
3996
4003
  EntryType: e.EntryType || "status"
3997
4004
  });
3998
4005
  }), ...(job.Notes || []).map(e => {
3999
- return _objectSpread$4(_objectSpread$4({}, e), {}, {
4006
+ return _objectSpread$5(_objectSpread$5({}, e), {}, {
4000
4007
  timestamp: e.Timestamp,
4001
4008
  EntryType: "note"
4002
4009
  });
@@ -4163,7 +4170,7 @@ class Job extends Component {
4163
4170
  onClick: () => {
4164
4171
  this.onSelectAssignee();
4165
4172
  },
4166
- colour: Colours$1.COLOUR_DUSK
4173
+ colour: Colours$2.COLOUR_DUSK
4167
4174
  })
4168
4175
  }, this.state.selectedAssignee.id)
4169
4176
  });
@@ -4250,14 +4257,14 @@ var Job$1 = connect(mapStateToProps$3, {
4250
4257
  jobStatusesUpdate
4251
4258
  })(withRouter(Job));
4252
4259
 
4253
- function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4254
- function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4260
+ function ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4261
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4255
4262
  var {
4256
4263
  Actions,
4257
4264
  Components: Components$2,
4258
- Helper: Helper$1,
4265
+ Helper: Helper$2,
4259
4266
  Session: Session$2,
4260
- Colours,
4267
+ Colours: Colours$1,
4261
4268
  Apis
4262
4269
  } = PlussCore;
4263
4270
  class AddJob extends Component {
@@ -4276,7 +4283,7 @@ class AddJob extends Component {
4276
4283
  type,
4277
4284
  customFields
4278
4285
  } = res.data;
4279
- _this.setState(_objectSpread$3(_objectSpread$3({}, res.data), {}, {
4286
+ _this.setState(_objectSpread$4(_objectSpread$4({}, res.data), {}, {
4280
4287
  prevType: type,
4281
4288
  prevCustomFileds: customFields,
4282
4289
  type,
@@ -4524,7 +4531,7 @@ class AddJob extends Component {
4524
4531
  event.target.value = "";
4525
4532
  });
4526
4533
  _defineProperty(this, "onToggleDatePicker", qId => {
4527
- var showDate = _objectSpread$3({}, this.state.showDate);
4534
+ var showDate = _objectSpread$4({}, this.state.showDate);
4528
4535
  showDate[qId] = !showDate[qId];
4529
4536
  this.setState({
4530
4537
  showDate
@@ -4613,7 +4620,7 @@ class AddJob extends Component {
4613
4620
  if (_.isNil(answer) || _.isEmpty(answer)) return true;
4614
4621
  switch (type) {
4615
4622
  case "email":
4616
- return Helper$1.isEmail(answer);
4623
+ return Helper$2.isEmail(answer);
4617
4624
  case "date":
4618
4625
  return moment(answer, "YYYY-MM-DD", true).isValid();
4619
4626
  case "time":
@@ -4634,7 +4641,7 @@ class AddJob extends Component {
4634
4641
  this.customImageInputs = {};
4635
4642
  this.customDocumentInputs = {};
4636
4643
  this.state = {
4637
- jobId: Helper$1.safeReadParams(this.props, "jobId") ? this.props.match.params.jobId : null,
4644
+ jobId: Helper$2.safeReadParams(this.props, "jobId") ? this.props.match.params.jobId : null,
4638
4645
  job: null,
4639
4646
  showingSelector: false,
4640
4647
  updating: false,
@@ -4693,9 +4700,9 @@ class AddJob extends Component {
4693
4700
  } = this.state;
4694
4701
  return types.map(ev => {
4695
4702
  if (ev != null) {
4696
- return /*#__PURE__*/jsx(Dropdown.Item, {
4703
+ return /*#__PURE__*/jsx(MenuItem, {
4697
4704
  eventKey: ev.typeName,
4698
- ive: type === ev.typeName,
4705
+ active: type === ev.typeName,
4699
4706
  children: ev.typeName
4700
4707
  }, ev.typeName);
4701
4708
  }
@@ -4951,7 +4958,7 @@ class AddJob extends Component {
4951
4958
  className: "inputRequired "
4952
4959
  }) : null, /*#__PURE__*/jsxs("div", {
4953
4960
  className: "visitorSignIn_question",
4954
- style: {
4961
+ iconStyle: {
4955
4962
  flex: 1
4956
4963
  },
4957
4964
  children: [/*#__PURE__*/jsx("div", {
@@ -5001,7 +5008,7 @@ class AddJob extends Component {
5001
5008
  case "staticText":
5002
5009
  return /*#__PURE__*/jsx("p", {
5003
5010
  className: "visitorSignIn_text-staticText",
5004
- children: Helper$1.toParagraphed(field.label, {
5011
+ children: Helper$2.toParagraphed(field.label, {
5005
5012
  marginTop: 10
5006
5013
  })
5007
5014
  }, fieldId);
@@ -5020,7 +5027,7 @@ class AddJob extends Component {
5020
5027
  alwaysShowLabel: true,
5021
5028
  readOnly: true,
5022
5029
  rightContent: !_.isEmpty(field.answer) && /*#__PURE__*/jsx(Icon, {
5023
- colour: Colours.COLOUR_DUSK_LIGHT,
5030
+ colour: Colours$1.COLOUR_DUSK_LIGHT,
5024
5031
  icon: "xmark",
5025
5032
  className: "timepicker_clear",
5026
5033
  onClick: () => this.onChangeDateAnswer(fieldId, undefined, false)
@@ -5053,7 +5060,7 @@ class AddJob extends Component {
5053
5060
  }
5054
5061
  }),
5055
5062
  rightContent: !_.isEmpty(field.answer) && /*#__PURE__*/jsx(Icon, {
5056
- colour: Colours.COLOUR_DUSK_LIGHT,
5063
+ colour: Colours$1.COLOUR_DUSK_LIGHT,
5057
5064
  icon: "xmark",
5058
5065
  className: "timepicker_clear",
5059
5066
  onClick: () => this.onChangeTimeAnswer(fieldId, undefined)
@@ -5068,7 +5075,7 @@ class AddJob extends Component {
5068
5075
  className: "inputRequired "
5069
5076
  }) : null, /*#__PURE__*/jsxs("div", {
5070
5077
  className: "visitorSignIn_question",
5071
- style: {
5078
+ iconStyle: {
5072
5079
  flex: 1
5073
5080
  },
5074
5081
  children: [/*#__PURE__*/jsx(Components$2.Text, {
@@ -5091,7 +5098,7 @@ class AddJob extends Component {
5091
5098
  className: "inputRequired "
5092
5099
  }) : null, /*#__PURE__*/jsxs("div", {
5093
5100
  className: "visitorSignIn_question",
5094
- style: {
5101
+ iconStyle: {
5095
5102
  flex: 1
5096
5103
  },
5097
5104
  children: [/*#__PURE__*/jsx(Components$2.Text, {
@@ -5143,7 +5150,7 @@ class AddJob extends Component {
5143
5150
  customFields
5144
5151
  } = this.state;
5145
5152
  return /*#__PURE__*/jsx("div", {
5146
- style: {
5153
+ iconStyle: {
5147
5154
  marginBottom: 15
5148
5155
  },
5149
5156
  children: /*#__PURE__*/jsxs("div", {
@@ -5178,7 +5185,7 @@ class AddJob extends Component {
5178
5185
  return this.state.showWarnings && _.isEmpty(this.state.room);
5179
5186
  }
5180
5187
  }), /*#__PURE__*/jsxs("div", {
5181
- style: {
5188
+ iconStyle: {
5182
5189
  marginBottom: 15
5183
5190
  },
5184
5191
  children: [/*#__PURE__*/jsx(Components$2.Text, {
@@ -5278,7 +5285,7 @@ var mapStateToProps$2 = state => {
5278
5285
  return {
5279
5286
  auth,
5280
5287
  strings: state.strings && state.strings.config || {},
5281
- optionOnlyForResidents: Helper$1.getSiteSettingFromState(state, values.optionOnlyForResidents)
5288
+ optionOnlyForResidents: Helper$2.getSiteSettingFromState(state, values.optionOnlyForResidents)
5282
5289
  };
5283
5290
  };
5284
5291
  var AddJob$1 = connect(mapStateToProps$2, {
@@ -5290,7 +5297,7 @@ var AddJob$1 = connect(mapStateToProps$2, {
5290
5297
  var {
5291
5298
  Components: Components$1,
5292
5299
  Session: Session$1,
5293
- Helper
5300
+ Helper: Helper$1
5294
5301
  } = PlussCore;
5295
5302
  var DEFAULT_FIELD = {
5296
5303
  type: "text",
@@ -5335,7 +5342,7 @@ class AddJobType extends Component {
5335
5342
  var {
5336
5343
  jobTypeEmail
5337
5344
  } = this.state;
5338
- return !_.isEmpty(jobTypeEmail) && Helper.isEmail(jobTypeEmail);
5345
+ return !_.isEmpty(jobTypeEmail) && Helper$1.isEmail(jobTypeEmail);
5339
5346
  });
5340
5347
  _defineProperty(this, "isJobTypeValid", () => {
5341
5348
  var {
@@ -5537,7 +5544,7 @@ class AddJobType extends Component {
5537
5544
  }];
5538
5545
  this.state = {
5539
5546
  loading: false,
5540
- jobTypeId: Helper.safeReadParams(this.props, "jobTypeId") ? this.props.match.params.jobTypeId : null,
5547
+ jobTypeId: Helper$1.safeReadParams(this.props, "jobTypeId") ? this.props.match.params.jobTypeId : null,
5541
5548
  jobTypeName: "",
5542
5549
  jobTypeEmail: "",
5543
5550
  jobTypeDescription: "",
@@ -6057,7 +6064,7 @@ class AddJobType extends Component {
6057
6064
  type: "bodyLarge",
6058
6065
  className: "marginBottom-24 paddingLeft-40",
6059
6066
  style: {
6060
- color: Colours$3.COLOUR_LIGHTGREY
6067
+ color: Colours$4.COLOUR_LIGHTGREY
6061
6068
  },
6062
6069
  children: "By default, the form submission title will be the name of the person submitting the form. You can choose to select a different field to use as the title for the form submission."
6063
6070
  }), /*#__PURE__*/jsxs("div", {
@@ -6088,10 +6095,10 @@ class AddJobType extends Component {
6088
6095
  return /*#__PURE__*/jsxs("div", {
6089
6096
  className: "padding-60 paddingVertical-8 text-bodyLarge",
6090
6097
  style: {
6091
- color: Colours$3.COLOUR_RED
6098
+ color: Colours$4.COLOUR_RED
6092
6099
  },
6093
6100
  children: ["To save the form", /*#__PURE__*/jsx("ul", {
6094
- style: {
6101
+ iconStyle: {
6095
6102
  padding: 0,
6096
6103
  paddingLeft: 16
6097
6104
  },
@@ -6175,10 +6182,14 @@ var AddJobType$1 = connect(mapStateToProps$1, {
6175
6182
  jobTypesUpdate
6176
6183
  })(withRouter(AddJobType));
6177
6184
 
6185
+ function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6186
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6178
6187
  var {
6179
6188
  Analytics: Analytics$1,
6180
6189
  Session,
6181
- Components
6190
+ Components,
6191
+ Helper,
6192
+ Colours
6182
6193
  } = PlussCore;
6183
6194
  var getInitialState = () => ({
6184
6195
  requests: 0,
@@ -6198,10 +6209,21 @@ var AnalyticsHub = _ref => {
6198
6209
  auth,
6199
6210
  prevText,
6200
6211
  dayCount,
6201
- strings
6212
+ strings,
6213
+ userType,
6214
+ userCategory,
6215
+ selectedSites
6202
6216
  } = _ref;
6203
6217
  var [analyticsData, setAnalyticsData] = useState(getInitialState());
6204
6218
  var [isExportOpen, setIsExportOpen] = useState(false);
6219
+ var [failedSites, setFailedSites] = useState([]);
6220
+ var [comparisonData, setComparisonData] = useState({
6221
+ requests: [],
6222
+ completedRequests: [],
6223
+ comments: [],
6224
+ isLoading: true
6225
+ });
6226
+ var comparisonMode = selectedSites && selectedSites.length > 1;
6205
6227
  var hasAccess = Session.validateAccess(auth.site, values.permissionMaintenanceTracking, auth);
6206
6228
  if (!hasAccess) {
6207
6229
  return null;
@@ -6215,7 +6237,10 @@ var AnalyticsHub = _ref => {
6215
6237
  var exportColumns = [{
6216
6238
  label: "Select All",
6217
6239
  key: ""
6218
- }, {
6240
+ }, ...(comparisonMode ? [{
6241
+ label: "Site",
6242
+ key: "site"
6243
+ }] : []), {
6219
6244
  label: "Start Date",
6220
6245
  key: "startDate"
6221
6246
  }, {
@@ -6233,32 +6258,114 @@ var AnalyticsHub = _ref => {
6233
6258
  }];
6234
6259
  useEffect(() => {
6235
6260
  getData();
6236
- }, [startTime, endTime]);
6261
+ }, [startTime, endTime, userType, userCategory, selectedSites]);
6237
6262
  var getData = /*#__PURE__*/function () {
6238
6263
  var _ref2 = _asyncToGenerator(function* () {
6239
- setAnalyticsData(getInitialState());
6240
- // Load analytics data here using startTime and endTime
6241
- var timeDifference = endTime - startTime;
6242
- var [currentStatsResponse, prevStatsResponse] = yield Promise.all([analyticsActions.getAggregateEntityStats(auth.site, values.analyticsKey, startTime, endTime, true), analyticsActions.getAggregateEntityStats(auth.site, values.analyticsKey, startTime - timeDifference, startTime, true)]);
6243
- var data = {
6244
- requests: Analytics$1.countActivities(currentStatsResponse.data, "Request", "total"),
6245
- prevRequests: Analytics$1.countActivities(prevStatsResponse.data, "Request", "total"),
6246
- completedRequests: Analytics$1.countActivities(currentStatsResponse.data, "RequestCompleted", "unique"),
6247
- prevCompletedRequests: Analytics$1.countActivities(prevStatsResponse.data, "RequestCompleted", "unique"),
6248
- comments: Analytics$1.countActivities(currentStatsResponse.data, "Comment", "total"),
6249
- prevComments: Analytics$1.countActivities(prevStatsResponse.data, "Comment", "total"),
6250
- isLoading: false
6251
- };
6252
- setAnalyticsData(data);
6264
+ try {
6265
+ setFailedSites([]);
6266
+ if (comparisonMode) {
6267
+ setComparisonData({
6268
+ requests: [],
6269
+ completedRequests: [],
6270
+ comments: [],
6271
+ isLoading: true
6272
+ });
6273
+ var multiSiteResultsObj = yield Analytics$1.fetchMultiSiteData(selectedSites, /*#__PURE__*/function () {
6274
+ var _ref3 = _asyncToGenerator(function* (site) {
6275
+ var {
6276
+ data
6277
+ } = yield analyticsActions.getAggregateEntityStats(site, values.analyticsKey, startTime, endTime, true, {
6278
+ userType,
6279
+ userCategory
6280
+ });
6281
+ return data;
6282
+ });
6283
+ return function (_x) {
6284
+ return _ref3.apply(this, arguments);
6285
+ };
6286
+ }());
6287
+ var roles = auth.user.Roles;
6288
+ var failed = Object.entries(multiSiteResultsObj).filter(_ref4 => {
6289
+ var [, data] = _ref4;
6290
+ return data === null;
6291
+ }).map(_ref5 => {
6292
+ var [site] = _ref5;
6293
+ return Helper.getSiteNameFromRoles(site, roles);
6294
+ });
6295
+ setFailedSites(failed);
6296
+ var multiSiteResults = Object.entries(multiSiteResultsObj).filter(_ref6 => {
6297
+ var [, data] = _ref6;
6298
+ return data !== null;
6299
+ }).map(_ref7 => {
6300
+ var [site, data] = _ref7;
6301
+ return {
6302
+ site,
6303
+ data
6304
+ };
6305
+ });
6306
+ var buildComparison = (activityKey, countType) => multiSiteResults.map(result => ({
6307
+ name: Helper.getSiteNameFromRoles(result.site, roles),
6308
+ value: Analytics$1.countActivities(result.data, activityKey, countType)
6309
+ }));
6310
+ setComparisonData({
6311
+ requests: buildComparison("Request", "total"),
6312
+ completedRequests: buildComparison("RequestCompleted", "unique"),
6313
+ comments: buildComparison("Comment", "total"),
6314
+ isLoading: false
6315
+ });
6316
+ } else {
6317
+ setAnalyticsData(getInitialState());
6318
+ var site = selectedSites && selectedSites.length === 1 ? selectedSites[0] : auth.site;
6319
+ var timeDifference = endTime - startTime;
6320
+ var [currentStatsResponse, prevStatsResponse] = yield Promise.all([analyticsActions.getAggregateEntityStats(site, values.analyticsKey, startTime, endTime, true, {
6321
+ userType,
6322
+ userCategory
6323
+ }), analyticsActions.getAggregateEntityStats(site, values.analyticsKey, startTime - timeDifference, startTime, true, {
6324
+ userType,
6325
+ userCategory
6326
+ })]);
6327
+ var data = {
6328
+ requests: Analytics$1.countActivities(currentStatsResponse.data, "Request", "total"),
6329
+ prevRequests: Analytics$1.countActivities(prevStatsResponse.data, "Request", "total"),
6330
+ completedRequests: Analytics$1.countActivities(currentStatsResponse.data, "RequestCompleted", "unique"),
6331
+ prevCompletedRequests: Analytics$1.countActivities(prevStatsResponse.data, "RequestCompleted", "unique"),
6332
+ comments: Analytics$1.countActivities(currentStatsResponse.data, "Comment", "total"),
6333
+ prevComments: Analytics$1.countActivities(prevStatsResponse.data, "Comment", "total"),
6334
+ isLoading: false
6335
+ };
6336
+ setAnalyticsData(data);
6337
+ }
6338
+ } catch (err) {
6339
+ if (comparisonMode) {
6340
+ setComparisonData(prev => _objectSpread$3(_objectSpread$3({}, prev), {}, {
6341
+ isLoading: false
6342
+ }));
6343
+ } else {
6344
+ setAnalyticsData(prev => _objectSpread$3(_objectSpread$3({}, prev), {}, {
6345
+ isLoading: false
6346
+ }));
6347
+ }
6348
+ }
6253
6349
  });
6254
6350
  return function getData() {
6255
6351
  return _ref2.apply(this, arguments);
6256
6352
  };
6257
6353
  }();
6258
6354
  var isReadyToOpenCSV = () => {
6259
- return !analyticsData.isLoading;
6355
+ return comparisonMode ? !comparisonData.isLoading : !analyticsData.isLoading;
6260
6356
  };
6261
6357
  var getExportSource = () => {
6358
+ if (comparisonMode) {
6359
+ var sites = comparisonData.requests || [];
6360
+ return sites.map((site, i) => ({
6361
+ site: site.name,
6362
+ startDate: moment(startTime + 1).format("D-MM-YYYY"),
6363
+ endDate: moment(endTime).format("D-MM-YYYY"),
6364
+ requests: site.value,
6365
+ completedRequests: comparisonData.completedRequests[i] && comparisonData.completedRequests[i].value || 0,
6366
+ comments: comparisonData.comments[i] && comparisonData.comments[i].value || 0
6367
+ }));
6368
+ }
6262
6369
  return [{
6263
6370
  startDate: moment(startTime + 1).format("D-MM-YYYY"),
6264
6371
  endDate: moment(endTime).format("D-MM-YYYY"),
@@ -6272,13 +6379,14 @@ var AnalyticsHub = _ref => {
6272
6379
  return null;
6273
6380
  }
6274
6381
  var source = getExportSource();
6382
+ var filterSuffix = [userType, userCategory].filter(Boolean).map(f => f.toLowerCase().replace(/\s+/g, "-")).join("_");
6275
6383
  return /*#__PURE__*/jsx(Components.ExportCsvPopup, {
6276
6384
  onClose: () => {
6277
6385
  setIsExportOpen(false);
6278
6386
  },
6279
6387
  columns: exportColumns,
6280
6388
  source: source,
6281
- filename: "".concat(values.analyticsKey, "analytics_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
6389
+ filename: "".concat(values.analyticsKey, "analytics").concat(comparisonMode ? "_comparison" : "").concat(filterSuffix ? "_".concat(filterSuffix) : "", "_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
6282
6390
  });
6283
6391
  };
6284
6392
  return /*#__PURE__*/jsxs("div", {
@@ -6299,33 +6407,73 @@ var AnalyticsHub = _ref => {
6299
6407
  leftIcon: "file-code",
6300
6408
  children: "Export CSV"
6301
6409
  })]
6302
- }), /*#__PURE__*/jsxs("div", {
6410
+ }), failedSites.length > 0 && /*#__PURE__*/jsxs(Components.Text, {
6411
+ type: "help",
6412
+ style: {
6413
+ color: Colours.COLOUR_RED,
6414
+ marginTop: 8
6415
+ },
6416
+ children: ["Data unavailable for: ", failedSites.join(", ")]
6417
+ }), /*#__PURE__*/jsx("div", {
6303
6418
  className: "analyticsSection dashboardSection_content",
6304
- children: [/*#__PURE__*/jsx(Components.StatBox, {
6305
- title: "".concat(featureTitle, " Requests"),
6306
- icon: "wrench",
6307
- value: analyticsData.requests,
6308
- previousValue: analyticsData.prevRequests,
6309
- prevText: prevText,
6310
- viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Request&countType=total&dayCount=").concat(dayCount),
6311
- isLoading: analyticsData.isLoading
6312
- }), /*#__PURE__*/jsx(Components.StatBox, {
6313
- title: "Completed ".concat(featureTitle, " Requests"),
6314
- icon: "circle-check",
6315
- value: analyticsData.completedRequests,
6316
- previousValue: analyticsData.prevCompletedRequests,
6317
- prevText: prevText,
6318
- viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=RequestCompleted&countType=unique&dayCount=").concat(dayCount),
6319
- isLoading: analyticsData.isLoading
6320
- }), /*#__PURE__*/jsx(Components.StatBox, {
6321
- title: "".concat(featureTitle, " Comments"),
6322
- icon: "comment",
6323
- value: analyticsData.comments,
6324
- previousValue: analyticsData.prevComments,
6325
- prevText: prevText,
6326
- viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Comment&countType=total&dayCount=").concat(dayCount),
6327
- isLoading: analyticsData.isLoading
6328
- })]
6419
+ children: (() => {
6420
+ var chartSuffix = [selectedSites && selectedSites.length > 0 ? "&sites=".concat(selectedSites.join(",")) : "", userType ? "&userType=".concat(encodeURIComponent(userType)) : "", userCategory ? "&userCategory=".concat(encodeURIComponent(userCategory)) : ""].join("");
6421
+ if (comparisonMode) {
6422
+ return /*#__PURE__*/jsxs("div", {
6423
+ style: {
6424
+ display: "flex",
6425
+ flexDirection: "column",
6426
+ gap: 16
6427
+ },
6428
+ children: [/*#__PURE__*/jsx(Components.ComparisonStatBox, {
6429
+ title: "".concat(featureTitle, " Requests"),
6430
+ data: comparisonData.requests,
6431
+ prevText: prevText,
6432
+ viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Request&countType=total&dayCount=").concat(dayCount).concat(chartSuffix),
6433
+ isLoading: comparisonData.isLoading
6434
+ }), /*#__PURE__*/jsx(Components.ComparisonStatBox, {
6435
+ title: "Completed ".concat(featureTitle, " Requests"),
6436
+ data: comparisonData.completedRequests,
6437
+ prevText: prevText,
6438
+ viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=RequestCompleted&countType=unique&dayCount=").concat(dayCount).concat(chartSuffix),
6439
+ isLoading: comparisonData.isLoading
6440
+ }), /*#__PURE__*/jsx(Components.ComparisonStatBox, {
6441
+ title: "".concat(featureTitle, " Comments"),
6442
+ data: comparisonData.comments,
6443
+ prevText: prevText,
6444
+ viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Comment&countType=total&dayCount=").concat(dayCount).concat(chartSuffix),
6445
+ isLoading: comparisonData.isLoading
6446
+ })]
6447
+ });
6448
+ }
6449
+ return /*#__PURE__*/jsxs(Fragment, {
6450
+ children: [/*#__PURE__*/jsx(Components.StatBox, {
6451
+ title: "".concat(featureTitle, " Requests"),
6452
+ icon: "wrench",
6453
+ value: analyticsData.requests,
6454
+ previousValue: analyticsData.prevRequests,
6455
+ prevText: prevText,
6456
+ viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Request&countType=total&dayCount=").concat(dayCount).concat(chartSuffix),
6457
+ isLoading: analyticsData.isLoading
6458
+ }), /*#__PURE__*/jsx(Components.StatBox, {
6459
+ title: "Completed ".concat(featureTitle, " Requests"),
6460
+ icon: "circle-check",
6461
+ value: analyticsData.completedRequests,
6462
+ previousValue: analyticsData.prevCompletedRequests,
6463
+ prevText: prevText,
6464
+ viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=RequestCompleted&countType=unique&dayCount=").concat(dayCount).concat(chartSuffix),
6465
+ isLoading: analyticsData.isLoading
6466
+ }), /*#__PURE__*/jsx(Components.StatBox, {
6467
+ title: "".concat(featureTitle, " Comments"),
6468
+ icon: "comment",
6469
+ value: analyticsData.comments,
6470
+ previousValue: analyticsData.prevComments,
6471
+ prevText: prevText,
6472
+ viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Comment&countType=total&dayCount=").concat(dayCount).concat(chartSuffix),
6473
+ isLoading: analyticsData.isLoading
6474
+ })]
6475
+ });
6476
+ })()
6329
6477
  })]
6330
6478
  });
6331
6479
  };