@plusscommunities/pluss-maintenance-web-a 1.2.5-beta.0 → 1.3.0-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';
@@ -71,7 +71,13 @@ var values = {
71
71
  forceCustomFields: false,
72
72
  textEntityName: "Job",
73
73
  stringConfigJobStatus: "maintenanceJobStatusA",
74
- stringConfigHideSeen: "maintenanceDisableSeenA"
74
+ stringConfigHideSeen: "maintenanceDisableSeenA",
75
+ // Comment subscription notification preference
76
+ notificationPreference: {
77
+ key: "maintenancerequestAComments",
78
+ label: "Maintenance A comments",
79
+ permission: "maintenanceTrackingA"
80
+ }
75
81
  };
76
82
 
77
83
  // import * as PlussCore from '../../pluss-core/src';
@@ -209,7 +215,8 @@ var FeatureConfig = {
209
215
  init: environment => {
210
216
  FeatureConfig.env = environment;
211
217
  PlussCore.Config.init(environment);
212
- }
218
+ },
219
+ notificationPreference: values.notificationPreference
213
220
  };
214
221
 
215
222
  var JOBS_LOADED = values.actionJobsLoaded;
@@ -219,15 +226,15 @@ var JOBS_TYPES_LOADED = values.actionJobsTypesLoaded;
219
226
  var JOBS_STATUSES_LOADED = values.actionJobsStatusesLoaded;
220
227
  var JOBS_HIDE_SEEN = values.actionJobsHideSeen;
221
228
 
222
- 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; }
223
- 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; }
229
+ 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; }
230
+ 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; }
224
231
  var {
225
- Helper: Helper$5,
232
+ Helper: Helper$6,
226
233
  Session: Session$9
227
234
  } = PlussCore;
228
235
  var maintenanceActions = {
229
236
  getJobType: (site, typeId) => {
230
- var url = Helper$5.getUrl(values.serviceKey, "getjobtype");
237
+ var url = Helper$6.getUrl(values.serviceKey, "getjobtype");
231
238
  return Session$9.authedFunction({
232
239
  method: "POST",
233
240
  url,
@@ -238,7 +245,7 @@ var maintenanceActions = {
238
245
  });
239
246
  },
240
247
  getJobTypes: (site, id) => {
241
- var url = Helper$5.getUrl(values.serviceKey, "getjobtypes");
248
+ var url = Helper$6.getUrl(values.serviceKey, "getjobtypes");
242
249
  return Session$9.authedFunction({
243
250
  method: "POST",
244
251
  url,
@@ -248,7 +255,7 @@ var maintenanceActions = {
248
255
  });
249
256
  },
250
257
  getJob: (site, id) => {
251
- var url = Helper$5.getUrl(values.serviceKey, "getJob");
258
+ var url = Helper$6.getUrl(values.serviceKey, "getJob");
252
259
  return Session$9.authedFunction({
253
260
  method: "POST",
254
261
  url,
@@ -259,7 +266,7 @@ var maintenanceActions = {
259
266
  });
260
267
  },
261
268
  getJobByJobId: (site, jobId) => {
262
- var url = Helper$5.getUrl(values.serviceKey, "getJob");
269
+ var url = Helper$6.getUrl(values.serviceKey, "getJob");
263
270
  return Session$9.authedFunction({
264
271
  method: "POST",
265
272
  url,
@@ -274,7 +281,7 @@ var maintenanceActions = {
274
281
  var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "";
275
282
  return Session$9.authedFunction({
276
283
  method: "POST",
277
- url: Helper$5.getUrl(values.serviceKey, "getJobs"),
284
+ url: Helper$6.getUrl(values.serviceKey, "getJobs"),
278
285
  data: {
279
286
  site,
280
287
  status,
@@ -297,7 +304,7 @@ var maintenanceActions = {
297
304
  }
298
305
  return Session$9.authedFunction({
299
306
  method: "GET",
300
- url: Helper$5.getUrl(values.serviceKey, "get/requests", query)
307
+ url: Helper$6.getUrl(values.serviceKey, "get/requests", query)
301
308
  });
302
309
  },
303
310
  getJobsRecursive: function getJobsRecursive(site, status, type, lastKey) {
@@ -315,14 +322,14 @@ var maintenanceActions = {
315
322
  createJob: job => {
316
323
  return Session$9.authedFunction({
317
324
  method: "POST",
318
- url: Helper$5.getUrl(values.serviceKey, "sendMaintenance"),
319
- data: _objectSpread$7({}, job)
325
+ url: Helper$6.getUrl(values.serviceKey, "sendMaintenance"),
326
+ data: _objectSpread$8({}, job)
320
327
  });
321
328
  },
322
329
  editJob: (job, site) => {
323
330
  return Session$9.authedFunction({
324
331
  method: "POST",
325
- url: Helper$5.getUrl(values.serviceKey, "editJob"),
332
+ url: Helper$6.getUrl(values.serviceKey, "editJob"),
326
333
  data: {
327
334
  job,
328
335
  site
@@ -332,7 +339,7 @@ var maintenanceActions = {
332
339
  deleteJob: (site, id) => {
333
340
  return Session$9.authedFunction({
334
341
  method: "POST",
335
- url: Helper$5.getUrl(values.serviceKey, "requests/remove"),
342
+ url: Helper$6.getUrl(values.serviceKey, "requests/remove"),
336
343
  data: {
337
344
  site,
338
345
  id
@@ -342,7 +349,7 @@ var maintenanceActions = {
342
349
  editJobStatus: (id, status) => {
343
350
  return Session$9.authedFunction({
344
351
  method: "POST",
345
- url: Helper$5.getUrl(values.serviceKey, "editJobStatus"),
352
+ url: Helper$6.getUrl(values.serviceKey, "editJobStatus"),
346
353
  data: {
347
354
  id,
348
355
  status
@@ -352,7 +359,7 @@ var maintenanceActions = {
352
359
  editJobPriority: (id, priority) => {
353
360
  return Session$9.authedFunction({
354
361
  method: "POST",
355
- url: Helper$5.getUrl(values.serviceKey, "update/priority"),
362
+ url: Helper$6.getUrl(values.serviceKey, "update/priority"),
356
363
  data: {
357
364
  id,
358
365
  priority
@@ -362,7 +369,7 @@ var maintenanceActions = {
362
369
  assignJob: (jobId, userId) => {
363
370
  return Session$9.authedFunction({
364
371
  method: "POST",
365
- url: Helper$5.getUrl(values.serviceKey, "update/assign"),
372
+ url: Helper$6.getUrl(values.serviceKey, "update/assign"),
366
373
  data: {
367
374
  id: jobId,
368
375
  userId
@@ -372,7 +379,7 @@ var maintenanceActions = {
372
379
  getAssignees: site => {
373
380
  return Session$9.authedFunction({
374
381
  method: "GET",
375
- url: Helper$5.getUrl(values.serviceKey, "get/assignees", {
382
+ url: Helper$6.getUrl(values.serviceKey, "get/assignees", {
376
383
  site
377
384
  })
378
385
  });
@@ -380,7 +387,7 @@ var maintenanceActions = {
380
387
  addNote: (jobId, note, attachments, images) => {
381
388
  return Session$9.authedFunction({
382
389
  method: "POST",
383
- url: Helper$5.getUrl(values.serviceKey, "requests/note"),
390
+ url: Helper$6.getUrl(values.serviceKey, "requests/note"),
384
391
  data: {
385
392
  id: jobId,
386
393
  note,
@@ -393,7 +400,7 @@ var maintenanceActions = {
393
400
  editNote: (jobId, noteId, note, attachments, images) => {
394
401
  return Session$9.authedFunction({
395
402
  method: "POST",
396
- url: Helper$5.getUrl(values.serviceKey, "requests/note"),
403
+ url: Helper$6.getUrl(values.serviceKey, "requests/note"),
397
404
  data: {
398
405
  id: jobId,
399
406
  note,
@@ -407,7 +414,7 @@ var maintenanceActions = {
407
414
  deleteNote: (jobId, noteId) => {
408
415
  return Session$9.authedFunction({
409
416
  method: "POST",
410
- url: Helper$5.getUrl(values.serviceKey, "requests/note"),
417
+ url: Helper$6.getUrl(values.serviceKey, "requests/note"),
411
418
  data: {
412
419
  id: jobId,
413
420
  noteId,
@@ -427,7 +434,7 @@ var maintenanceActions = {
427
434
  };
428
435
  return Session$9.authedFunction({
429
436
  method: "POST",
430
- url: Helper$5.getUrl(values.serviceKey, "createJobType"),
437
+ url: Helper$6.getUrl(values.serviceKey, "createJobType"),
431
438
  data
432
439
  });
433
440
  },
@@ -445,14 +452,14 @@ var maintenanceActions = {
445
452
  if (hasCustomFields && customFields) data.customFields = customFields;
446
453
  return Session$9.authedFunction({
447
454
  method: "POST",
448
- url: Helper$5.getUrl(values.serviceKey, "editJobType"),
455
+ url: Helper$6.getUrl(values.serviceKey, "editJobType"),
449
456
  data
450
457
  });
451
458
  },
452
459
  deleteJobType: (site, id) => {
453
460
  return Session$9.authedFunction({
454
461
  method: "POST",
455
- url: Helper$5.getUrl(values.serviceKey, "deleteJobType"),
462
+ url: Helper$6.getUrl(values.serviceKey, "deleteJobType"),
456
463
  data: {
457
464
  site,
458
465
  id
@@ -462,7 +469,7 @@ var maintenanceActions = {
462
469
  getExternalSync: jobId => {
463
470
  return Session$9.authedFunction({
464
471
  method: "GET",
465
- url: Helper$5.getUrl(values.serviceKey, "get/externalsync", {
472
+ url: Helper$6.getUrl(values.serviceKey, "get/externalsync", {
466
473
  id: jobId
467
474
  })
468
475
  });
@@ -470,7 +477,7 @@ var maintenanceActions = {
470
477
  retrySync: jobId => {
471
478
  return Session$9.authedFunction({
472
479
  method: "POST",
473
- url: Helper$5.getUrl(values.serviceKey, "update/retrysync"),
480
+ url: Helper$6.getUrl(values.serviceKey, "update/retrysync"),
474
481
  data: {
475
482
  id: jobId
476
483
  }
@@ -479,7 +486,7 @@ var maintenanceActions = {
479
486
  };
480
487
 
481
488
  var {
482
- Helper: Helper$4,
489
+ Helper: Helper$5,
483
490
  Session: Session$8
484
491
  } = PlussCore;
485
492
  var reactionActions = {
@@ -497,7 +504,7 @@ var reactionActions = {
497
504
  }
498
505
  return Session$8.authedFunction({
499
506
  method: "POST",
500
- url: Helper$4.getUrl("reactions", "comments/add"),
507
+ url: Helper$5.getUrl("reactions", "comments/add"),
501
508
  data
502
509
  });
503
510
  },
@@ -520,7 +527,7 @@ var reactionActions = {
520
527
  }
521
528
  return Session$8.authedFunction({
522
529
  method: "GET",
523
- url: Helper$4.getUrl("reactions", "comments/get", query)
530
+ url: Helper$5.getUrl("reactions", "comments/get", query)
524
531
  });
525
532
  }
526
533
  };
@@ -554,7 +561,7 @@ var jobStatusOptions = [
554
561
  ];
555
562
 
556
563
  var {
557
- Helper: Helper$3
564
+ Helper: Helper$4
558
565
  } = PlussCore;
559
566
  var jobsUpdate = (site, isdashboard) => {
560
567
  return dispatch => {
@@ -562,7 +569,7 @@ var jobsUpdate = (site, isdashboard) => {
562
569
  type: JOBS_LOADING
563
570
  });
564
571
  maintenanceActions.getJobsRecursive(site).then(res => {
565
- var currentSite = Helper$3.readStorageWithCookie("site");
572
+ var currentSite = Helper$4.readStorageWithCookie("site");
566
573
  if (!_.isEmpty(res) && res[0].site === currentSite) {
567
574
  dispatch({
568
575
  type: JOBS_LOADED,
@@ -714,8 +721,8 @@ var getJobPriority = priority => {
714
721
  return priorityOption || getDefaultPriority();
715
722
  };
716
723
 
717
- 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; }
718
- 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; }
724
+ 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; }
725
+ 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; }
719
726
  var {
720
727
  Session: Session$7,
721
728
  Components: Components$7,
@@ -1088,7 +1095,7 @@ class JobList extends Component {
1088
1095
  });
1089
1096
  var customFieldValues = this.getCustomFields(r, customColumns);
1090
1097
  var priority = r.priority || defaultPriority;
1091
- return _objectSpread$6(_objectSpread$6(_objectSpread$6({}, r), customFieldValues), {}, {
1098
+ return _objectSpread$7(_objectSpread$7(_objectSpread$7({}, r), customFieldValues), {}, {
1092
1099
  notes,
1093
1100
  progressTime,
1094
1101
  completedTime,
@@ -1264,7 +1271,7 @@ class JobList extends Component {
1264
1271
  isActive: this.isValidTimeFilter()
1265
1272
  }],
1266
1273
  children: /*#__PURE__*/jsx("div", {
1267
- style: {
1274
+ iconStyle: {
1268
1275
  minHeight: 150
1269
1276
  },
1270
1277
  children: /*#__PURE__*/jsx(Components$7.AnalyticsFilter, {
@@ -1287,7 +1294,7 @@ class JobList extends Component {
1287
1294
  onClick: () => {
1288
1295
  this.onSelectAssignee();
1289
1296
  },
1290
- colour: Colours$3.COLOUR_DUSK
1297
+ colour: Colours$4.COLOUR_DUSK
1291
1298
  })
1292
1299
  }, this.state.selectedAssignee.id)
1293
1300
  });
@@ -1342,7 +1349,7 @@ class JobList extends Component {
1342
1349
  onClick: () => {
1343
1350
  this.onSelectRequester();
1344
1351
  },
1345
- colour: Colours$3.COLOUR_DUSK
1352
+ colour: Colours$4.COLOUR_DUSK
1346
1353
  })
1347
1354
  }, this.state.selectedRequester.id)
1348
1355
  });
@@ -1458,7 +1465,7 @@ class JobList extends Component {
1458
1465
  }), /*#__PURE__*/jsx("td", {
1459
1466
  className: "table-options",
1460
1467
  children: /*#__PURE__*/jsxs("div", {
1461
- style: {
1468
+ iconStyle: {
1462
1469
  display: "flex",
1463
1470
  alignItems: "center"
1464
1471
  },
@@ -1625,17 +1632,17 @@ class JobList extends Component {
1625
1632
  },
1626
1633
  children: ["Assigned To", this.renderSort("assigned")]
1627
1634
  }), /*#__PURE__*/jsx("th", {
1628
- style: {
1635
+ iconStyle: {
1629
1636
  width: 120
1630
1637
  },
1631
1638
  children: "Status"
1632
1639
  }), /*#__PURE__*/jsx("th", {
1633
- style: {
1640
+ iconStyle: {
1634
1641
  width: 120
1635
1642
  },
1636
1643
  children: "Priority"
1637
1644
  }), /*#__PURE__*/jsx("th", {
1638
- style: {
1645
+ iconStyle: {
1639
1646
  width: 50
1640
1647
  }
1641
1648
  })]
@@ -1820,7 +1827,7 @@ class JobList extends Component {
1820
1827
  }
1821
1828
  render() {
1822
1829
  return /*#__PURE__*/jsxs("div", {
1823
- style: {
1830
+ iconStyle: {
1824
1831
  minWidth: "100%"
1825
1832
  },
1826
1833
  children: [this.renderFilterPopup(), this.renderCSVPopup(), this.renderFilters(), this.renderContent()]
@@ -1945,7 +1952,7 @@ class JobTypes extends Component {
1945
1952
  }), /*#__PURE__*/jsx("td", {
1946
1953
  className: "table-options",
1947
1954
  children: /*#__PURE__*/jsxs("div", {
1948
- style: {
1955
+ iconStyle: {
1949
1956
  display: "flex",
1950
1957
  alignItems: "center"
1951
1958
  },
@@ -2010,7 +2017,7 @@ class JobTypes extends Component {
2010
2017
  onClick: () => this.sortByCol("email"),
2011
2018
  children: "Email"
2012
2019
  }), /*#__PURE__*/jsx("th", {
2013
- style: {
2020
+ iconStyle: {
2014
2021
  width: 70
2015
2022
  }
2016
2023
  })]
@@ -2063,7 +2070,7 @@ class JobTypes extends Component {
2063
2070
  } = this.state;
2064
2071
  if (jobList.length === 0 && loading) {
2065
2072
  return /*#__PURE__*/jsx("div", {
2066
- style: {
2073
+ iconStyle: {
2067
2074
  minWidth: "100%"
2068
2075
  },
2069
2076
  children: /*#__PURE__*/jsx("div", {
@@ -2072,7 +2079,7 @@ class JobTypes extends Component {
2072
2079
  textAlign: "center"
2073
2080
  },
2074
2081
  children: /*#__PURE__*/jsx(Icon, {
2075
- style: {
2082
+ iconStyle: {
2076
2083
  fontSize: 30,
2077
2084
  color: FeatureConfig.env.colourBrandingOff
2078
2085
  },
@@ -2084,7 +2091,7 @@ class JobTypes extends Component {
2084
2091
  });
2085
2092
  }
2086
2093
  return /*#__PURE__*/jsxs("div", {
2087
- style: {
2094
+ iconStyle: {
2088
2095
  minWidth: "100%"
2089
2096
  },
2090
2097
  children: [/*#__PURE__*/jsx("div", {
@@ -2098,7 +2105,7 @@ class JobTypes extends Component {
2098
2105
  }
2099
2106
  render() {
2100
2107
  return /*#__PURE__*/jsxs("div", {
2101
- style: {
2108
+ iconStyle: {
2102
2109
  minWidth: "100%"
2103
2110
  },
2104
2111
  children: [/*#__PURE__*/jsx("div", {
@@ -2123,12 +2130,12 @@ var JobTypes$1 = connect(mapStateToProps$6, {
2123
2130
  jobTypesUpdate
2124
2131
  })(withRouter(JobTypes));
2125
2132
 
2126
- 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; }
2127
- 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; }
2133
+ 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; }
2134
+ 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; }
2128
2135
  var {
2129
2136
  Session: Session$5,
2130
2137
  Components: Components$5,
2131
- Colours: Colours$2
2138
+ Colours: Colours$3
2132
2139
  } = PlussCore;
2133
2140
  class Configuration extends Component {
2134
2141
  constructor(props) {
@@ -2331,7 +2338,7 @@ class Configuration extends Component {
2331
2338
  style: styles$6.statusTypeContainer,
2332
2339
  children: [/*#__PURE__*/jsx("div", {
2333
2340
  className: "statusLabel",
2334
- style: _objectSpread$5(_objectSpread$5({}, styles$6.statusTextContainer), {}, {
2341
+ style: _objectSpread$6(_objectSpread$6({}, styles$6.statusTextContainer), {}, {
2335
2342
  backgroundColor: status.color
2336
2343
  }),
2337
2344
  children: /*#__PURE__*/jsx("span", {
@@ -2345,23 +2352,23 @@ class Configuration extends Component {
2345
2352
  children: status.category
2346
2353
  })
2347
2354
  }), /*#__PURE__*/jsx(Icon, {
2348
- style: _objectSpread$5(_objectSpread$5({}, styles$6.statusIcon), {}, {
2355
+ style: _objectSpread$6(_objectSpread$6({}, styles$6.statusIcon), {}, {
2349
2356
  visibility: index === 0 ? "hidden" : "visible"
2350
2357
  }),
2351
2358
  name: "arrow-up",
2352
2359
  onClick: () => this.onMoveStatus(index, true)
2353
2360
  }), /*#__PURE__*/jsx(Icon, {
2354
- style: _objectSpread$5(_objectSpread$5({}, styles$6.statusIcon), {}, {
2361
+ style: _objectSpread$6(_objectSpread$6({}, styles$6.statusIcon), {}, {
2355
2362
  visibility: index === statusTypes.length - 1 ? "hidden" : "visible"
2356
2363
  }),
2357
2364
  name: "arrow-down",
2358
2365
  onClick: () => this.onMoveStatus(index, false)
2359
2366
  }), /*#__PURE__*/jsx(Icon, {
2360
- style: _objectSpread$5({}, styles$6.statusIcon),
2367
+ style: _objectSpread$6({}, styles$6.statusIcon),
2361
2368
  icon: "pencil",
2362
2369
  onClick: () => this.onEditStatus(index)
2363
2370
  }), /*#__PURE__*/jsx(Icon, {
2364
- style: _objectSpread$5({}, styles$6.statusIcon),
2371
+ style: _objectSpread$6({}, styles$6.statusIcon),
2365
2372
  icon: "circle-minus",
2366
2373
  onClick: () => this.onDeleteStatus(index)
2367
2374
  })]
@@ -2418,8 +2425,8 @@ class Configuration extends Component {
2418
2425
  renderSuccess() {
2419
2426
  if (!this.state.success) return null;
2420
2427
  return /*#__PURE__*/jsx("span", {
2421
- style: _objectSpread$5(_objectSpread$5({}, styles$6.savedText), {}, {
2422
- color: Colours$2.COLOUR_GREEN
2428
+ iconStyle: _objectSpread$6(_objectSpread$6({}, styles$6.savedText), {}, {
2429
+ color: Colours$3.COLOUR_GREEN
2423
2430
  }),
2424
2431
  children: "Saved"
2425
2432
  });
@@ -2531,11 +2538,11 @@ class Configuration extends Component {
2531
2538
  }
2532
2539
  render() {
2533
2540
  return /*#__PURE__*/jsxs("div", {
2534
- style: {
2541
+ iconStyle: {
2535
2542
  minWidth: "100%"
2536
2543
  },
2537
2544
  children: [this.renderStatuses(), this.renderOtherOptions(), /*#__PURE__*/jsxs("div", {
2538
- style: {
2545
+ iconStyle: {
2539
2546
  paddingTop: 24,
2540
2547
  paddingBottom: 24
2541
2548
  },
@@ -2569,7 +2576,7 @@ var styles$6 = {
2569
2576
  fontSize: 20,
2570
2577
  padding: 5,
2571
2578
  marginLeft: 10,
2572
- color: Colours$2.COLOUR_BRANDING_ACTION,
2579
+ color: Colours$3.COLOUR_BRANDING_ACTION,
2573
2580
  visibility: "visible"
2574
2581
  },
2575
2582
  savedText: {
@@ -2750,7 +2757,7 @@ class RequestsHub extends Component {
2750
2757
  sectionItems.push({
2751
2758
  type: "navItem",
2752
2759
  text: "Feature Configuration",
2753
- icon: "gear",
2760
+ icon: "settings",
2754
2761
  isFontAwesome: false,
2755
2762
  selected: this.state.selectedSection === "config",
2756
2763
  onClick: () => {
@@ -2834,13 +2841,13 @@ var RequestsHub$1 = connect(mapStateToProps$4, {
2834
2841
  jobsLoaded
2835
2842
  })(withRouter(RequestsHub));
2836
2843
 
2837
- 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; }
2838
- 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; }
2844
+ 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; }
2845
+ 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; }
2839
2846
  var {
2840
2847
  Apis: Apis$1,
2841
- Helper: Helper$2,
2848
+ Helper: Helper$3,
2842
2849
  Session: Session$3,
2843
- Colours: Colours$1,
2850
+ Colours: Colours$2,
2844
2851
  Components: Components$3
2845
2852
  } = PlussCore;
2846
2853
  var IMAGE_SIZE_NOTE = 72;
@@ -2924,7 +2931,7 @@ class Job extends Component {
2924
2931
  var statusType = statusTypes.find(s => s.text === status);
2925
2932
  if (!statusType) {
2926
2933
  var defaultStatus = statusTypes.find(s => s.category === STATUS_NOT_ACTIONED);
2927
- statusType = _objectSpread$4(_objectSpread$4({}, defaultStatus), {}, {
2934
+ statusType = _objectSpread$5(_objectSpread$5({}, defaultStatus), {}, {
2928
2935
  text: status
2929
2936
  });
2930
2937
  }
@@ -3119,7 +3126,7 @@ class Job extends Component {
3119
3126
  }
3120
3127
  maintenanceActions.deleteNote(this.state.jobId, n.Id);
3121
3128
  var newNotes = _.filter(this.state.job.Notes, note => note.Id !== n.Id);
3122
- var newJob = _objectSpread$4({}, this.state.job);
3129
+ var newJob = _objectSpread$5({}, this.state.job);
3123
3130
  newJob.Notes = newNotes;
3124
3131
  this.setState({
3125
3132
  job: newJob,
@@ -3204,7 +3211,7 @@ class Job extends Component {
3204
3211
  _defineProperty(this, "onSelectPriority", /*#__PURE__*/function () {
3205
3212
  var _ref0 = _asyncToGenerator(function* (priority) {
3206
3213
  _this.setState({
3207
- job: _objectSpread$4(_objectSpread$4({}, _this.state.job), {}, {
3214
+ job: _objectSpread$5(_objectSpread$5({}, _this.state.job), {}, {
3208
3215
  priority
3209
3216
  }),
3210
3217
  priorityChangerOpen: false
@@ -3234,7 +3241,7 @@ class Job extends Component {
3234
3241
  _defineProperty(this, "onSelectStatus", /*#__PURE__*/function () {
3235
3242
  var _ref1 = _asyncToGenerator(function* (status) {
3236
3243
  _this.setState({
3237
- job: _objectSpread$4(_objectSpread$4({}, _this.state.job), {}, {
3244
+ job: _objectSpread$5(_objectSpread$5({}, _this.state.job), {}, {
3238
3245
  status: status
3239
3246
  }),
3240
3247
  statusChangerOpen: false
@@ -3257,7 +3264,7 @@ class Job extends Component {
3257
3264
  };
3258
3265
  }());
3259
3266
  this.state = {
3260
- jobId: Helper$2.safeReadParams(props, "jobId") ? props.match.params.jobId : null,
3267
+ jobId: Helper$3.safeReadParams(props, "jobId") ? props.match.params.jobId : null,
3261
3268
  job: null,
3262
3269
  showingSelector: false,
3263
3270
  updating: false,
@@ -3478,7 +3485,7 @@ class Job extends Component {
3478
3485
  children: /*#__PURE__*/jsx("div", {
3479
3486
  className: "imageGrid_image",
3480
3487
  style: {
3481
- backgroundImage: "url('".concat(Helper$2.get1400(image), "')"),
3488
+ backgroundImage: "url('".concat(Helper$3.get1400(image), "')"),
3482
3489
  width: size,
3483
3490
  height: size
3484
3491
  }
@@ -3574,7 +3581,7 @@ class Job extends Component {
3574
3581
  } = this.state.job;
3575
3582
  var hasCustomFields = customFields && customFields.length > 0;
3576
3583
  return /*#__PURE__*/jsxs("div", {
3577
- style: {
3584
+ iconStyle: {
3578
3585
  paddingBottom: 40
3579
3586
  },
3580
3587
  children: [/*#__PURE__*/jsxs("div", {
@@ -3723,7 +3730,7 @@ class Job extends Component {
3723
3730
  children: [/*#__PURE__*/jsxs("div", {
3724
3731
  className: "maintenanceNote_top",
3725
3732
  children: [this.props.auth && this.props.auth.user && this.props.auth.user.Id === note.User.id && /*#__PURE__*/jsx(Icon, {
3726
- colour: Colours$1.COLOUR_DUSK_LIGHT,
3733
+ colour: Colours$2.COLOUR_DUSK_LIGHT,
3727
3734
  icon: "ellipsis-vertical",
3728
3735
  className: "maintenanceNote_moreIcon",
3729
3736
  onClick: () => this.onOpenNoteMenu(index)
@@ -3743,7 +3750,7 @@ class Job extends Component {
3743
3750
  })]
3744
3751
  }), /*#__PURE__*/jsx("p", {
3745
3752
  className: "maintenanceNote_text",
3746
- children: Helper$2.toParagraphed(note.Note)
3753
+ children: Helper$3.toParagraphed(note.Note)
3747
3754
  }), note.Attachments.map((a, i) => this.renderAttachment(a, i)), note.Images && note.Images.length > 0 ? this.renderImageGrid(note.Images, IMAGE_SIZE_NOTE) : null]
3748
3755
  })]
3749
3756
  }, index);
@@ -3787,7 +3794,7 @@ class Job extends Component {
3787
3794
  }), /*#__PURE__*/jsx("div", {
3788
3795
  className: "statusLabel statusLabel-large statusLabel-full",
3789
3796
  style: {
3790
- backgroundColor: Colours$1.COLOUR_DUSK
3797
+ backgroundColor: Colours$2.COLOUR_DUSK
3791
3798
  },
3792
3799
  children: /*#__PURE__*/jsxs("span", {
3793
3800
  className: "statusLabel_text",
@@ -3798,7 +3805,7 @@ class Job extends Component {
3798
3805
  }
3799
3806
  renderExternalSyncEntry(e, i) {
3800
3807
  var isSuccess = e.EntryType === "ExternalIDSet";
3801
- var backgroundColor = isSuccess ? Colours$1.COLOUR_GREEN : Colours$1.COLOUR_RED; // Green for success, red for failure
3808
+ var backgroundColor = isSuccess ? Colours$2.COLOUR_GREEN : Colours$2.COLOUR_RED; // Green for success, red for failure
3802
3809
 
3803
3810
  return /*#__PURE__*/jsxs("div", {
3804
3811
  className: "ticketHistoryEntry",
@@ -3864,7 +3871,7 @@ class Job extends Component {
3864
3871
  return /*#__PURE__*/jsx(Icon, {
3865
3872
  style: {
3866
3873
  fontSize: 20,
3867
- color: Colours$1.COLOUR_DUSK_LIGHT,
3874
+ color: Colours$2.COLOUR_DUSK_LIGHT,
3868
3875
  marginLeft: 8
3869
3876
  },
3870
3877
  icon: "spinner",
@@ -3876,7 +3883,7 @@ class Job extends Component {
3876
3883
  className: "statusLabel pointer",
3877
3884
  onClick: this.onRetrySync,
3878
3885
  style: {
3879
- backgroundColor: Colours$1.COLOUR_RED,
3886
+ backgroundColor: Colours$2.COLOUR_RED,
3880
3887
  marginLeft: 8
3881
3888
  },
3882
3889
  children: /*#__PURE__*/jsx("span", {
@@ -3899,7 +3906,7 @@ class Job extends Component {
3899
3906
  className: "userStatusIcon",
3900
3907
  icon: "circle-xmark",
3901
3908
  style: {
3902
- color: Colours$1.COLOUR_RED
3909
+ color: Colours$2.COLOUR_RED
3903
3910
  }
3904
3911
  }), " ", retrySyncError]
3905
3912
  });
@@ -3913,7 +3920,7 @@ class Job extends Component {
3913
3920
  className: "userStatusIcon",
3914
3921
  icon: "circle-check",
3915
3922
  style: {
3916
- color: Colours$1.COLOUR_GREEN
3923
+ color: Colours$2.COLOUR_GREEN
3917
3924
  }
3918
3925
  }), " ", "Sync retry initiated. Check back shortly for results."]
3919
3926
  });
@@ -3927,7 +3934,7 @@ class Job extends Component {
3927
3934
  className: "userStatusIcon",
3928
3935
  icon: "circle-xmark",
3929
3936
  style: {
3930
- color: Colours$1.COLOUR_RED
3937
+ color: Colours$2.COLOUR_RED
3931
3938
  }
3932
3939
  }), " ", "External sync failed. Use the retry button to attempt again."]
3933
3940
  });
@@ -3987,11 +3994,11 @@ class Job extends Component {
3987
3994
  } = this.state;
3988
3995
  if (!job || !job.history) return null;
3989
3996
  var source = _.sortBy([...job.history.map(e => {
3990
- return _objectSpread$4(_objectSpread$4({}, e), {}, {
3997
+ return _objectSpread$5(_objectSpread$5({}, e), {}, {
3991
3998
  EntryType: e.EntryType || "status"
3992
3999
  });
3993
4000
  }), ...(job.Notes || []).map(e => {
3994
- return _objectSpread$4(_objectSpread$4({}, e), {}, {
4001
+ return _objectSpread$5(_objectSpread$5({}, e), {}, {
3995
4002
  timestamp: e.Timestamp,
3996
4003
  EntryType: "note"
3997
4004
  });
@@ -4158,7 +4165,7 @@ class Job extends Component {
4158
4165
  onClick: () => {
4159
4166
  this.onSelectAssignee();
4160
4167
  },
4161
- colour: Colours$1.COLOUR_DUSK
4168
+ colour: Colours$2.COLOUR_DUSK
4162
4169
  })
4163
4170
  }, this.state.selectedAssignee.id)
4164
4171
  });
@@ -4245,14 +4252,14 @@ var Job$1 = connect(mapStateToProps$3, {
4245
4252
  jobStatusesUpdate
4246
4253
  })(withRouter(Job));
4247
4254
 
4248
- 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; }
4249
- 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; }
4255
+ 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; }
4256
+ 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; }
4250
4257
  var {
4251
4258
  Actions,
4252
4259
  Components: Components$2,
4253
- Helper: Helper$1,
4260
+ Helper: Helper$2,
4254
4261
  Session: Session$2,
4255
- Colours,
4262
+ Colours: Colours$1,
4256
4263
  Apis
4257
4264
  } = PlussCore;
4258
4265
  class AddJob extends Component {
@@ -4271,7 +4278,7 @@ class AddJob extends Component {
4271
4278
  type,
4272
4279
  customFields
4273
4280
  } = res.data;
4274
- _this.setState(_objectSpread$3(_objectSpread$3({}, res.data), {}, {
4281
+ _this.setState(_objectSpread$4(_objectSpread$4({}, res.data), {}, {
4275
4282
  prevType: type,
4276
4283
  prevCustomFileds: customFields,
4277
4284
  type,
@@ -4519,7 +4526,7 @@ class AddJob extends Component {
4519
4526
  event.target.value = "";
4520
4527
  });
4521
4528
  _defineProperty(this, "onToggleDatePicker", qId => {
4522
- var showDate = _objectSpread$3({}, this.state.showDate);
4529
+ var showDate = _objectSpread$4({}, this.state.showDate);
4523
4530
  showDate[qId] = !showDate[qId];
4524
4531
  this.setState({
4525
4532
  showDate
@@ -4608,7 +4615,7 @@ class AddJob extends Component {
4608
4615
  if (_.isNil(answer) || _.isEmpty(answer)) return true;
4609
4616
  switch (type) {
4610
4617
  case "email":
4611
- return Helper$1.isEmail(answer);
4618
+ return Helper$2.isEmail(answer);
4612
4619
  case "date":
4613
4620
  return moment(answer, "YYYY-MM-DD", true).isValid();
4614
4621
  case "time":
@@ -4629,7 +4636,7 @@ class AddJob extends Component {
4629
4636
  this.customImageInputs = {};
4630
4637
  this.customDocumentInputs = {};
4631
4638
  this.state = {
4632
- jobId: Helper$1.safeReadParams(this.props, "jobId") ? this.props.match.params.jobId : null,
4639
+ jobId: Helper$2.safeReadParams(this.props, "jobId") ? this.props.match.params.jobId : null,
4633
4640
  job: null,
4634
4641
  showingSelector: false,
4635
4642
  updating: false,
@@ -4688,9 +4695,9 @@ class AddJob extends Component {
4688
4695
  } = this.state;
4689
4696
  return types.map(ev => {
4690
4697
  if (ev != null) {
4691
- return /*#__PURE__*/jsx(Dropdown.Item, {
4698
+ return /*#__PURE__*/jsx(MenuItem, {
4692
4699
  eventKey: ev.typeName,
4693
- ive: type === ev.typeName,
4700
+ active: type === ev.typeName,
4694
4701
  children: ev.typeName
4695
4702
  }, ev.typeName);
4696
4703
  }
@@ -4946,7 +4953,7 @@ class AddJob extends Component {
4946
4953
  className: "inputRequired "
4947
4954
  }) : null, /*#__PURE__*/jsxs("div", {
4948
4955
  className: "visitorSignIn_question",
4949
- style: {
4956
+ iconStyle: {
4950
4957
  flex: 1
4951
4958
  },
4952
4959
  children: [/*#__PURE__*/jsx("div", {
@@ -4996,7 +5003,7 @@ class AddJob extends Component {
4996
5003
  case "staticText":
4997
5004
  return /*#__PURE__*/jsx("p", {
4998
5005
  className: "visitorSignIn_text-staticText",
4999
- children: Helper$1.toParagraphed(field.label, {
5006
+ children: Helper$2.toParagraphed(field.label, {
5000
5007
  marginTop: 10
5001
5008
  })
5002
5009
  }, fieldId);
@@ -5015,7 +5022,7 @@ class AddJob extends Component {
5015
5022
  alwaysShowLabel: true,
5016
5023
  readOnly: true,
5017
5024
  rightContent: !_.isEmpty(field.answer) && /*#__PURE__*/jsx(Icon, {
5018
- colour: Colours.COLOUR_DUSK_LIGHT,
5025
+ colour: Colours$1.COLOUR_DUSK_LIGHT,
5019
5026
  icon: "xmark",
5020
5027
  className: "timepicker_clear",
5021
5028
  onClick: () => this.onChangeDateAnswer(fieldId, undefined, false)
@@ -5048,7 +5055,7 @@ class AddJob extends Component {
5048
5055
  }
5049
5056
  }),
5050
5057
  rightContent: !_.isEmpty(field.answer) && /*#__PURE__*/jsx(Icon, {
5051
- colour: Colours.COLOUR_DUSK_LIGHT,
5058
+ colour: Colours$1.COLOUR_DUSK_LIGHT,
5052
5059
  icon: "xmark",
5053
5060
  className: "timepicker_clear",
5054
5061
  onClick: () => this.onChangeTimeAnswer(fieldId, undefined)
@@ -5063,7 +5070,7 @@ class AddJob extends Component {
5063
5070
  className: "inputRequired "
5064
5071
  }) : null, /*#__PURE__*/jsxs("div", {
5065
5072
  className: "visitorSignIn_question",
5066
- style: {
5073
+ iconStyle: {
5067
5074
  flex: 1
5068
5075
  },
5069
5076
  children: [/*#__PURE__*/jsx(Components$2.Text, {
@@ -5086,7 +5093,7 @@ class AddJob extends Component {
5086
5093
  className: "inputRequired "
5087
5094
  }) : null, /*#__PURE__*/jsxs("div", {
5088
5095
  className: "visitorSignIn_question",
5089
- style: {
5096
+ iconStyle: {
5090
5097
  flex: 1
5091
5098
  },
5092
5099
  children: [/*#__PURE__*/jsx(Components$2.Text, {
@@ -5138,7 +5145,7 @@ class AddJob extends Component {
5138
5145
  customFields
5139
5146
  } = this.state;
5140
5147
  return /*#__PURE__*/jsx("div", {
5141
- style: {
5148
+ iconStyle: {
5142
5149
  marginBottom: 15
5143
5150
  },
5144
5151
  children: /*#__PURE__*/jsxs("div", {
@@ -5173,7 +5180,7 @@ class AddJob extends Component {
5173
5180
  return this.state.showWarnings && _.isEmpty(this.state.room);
5174
5181
  }
5175
5182
  }), /*#__PURE__*/jsxs("div", {
5176
- style: {
5183
+ iconStyle: {
5177
5184
  marginBottom: 15
5178
5185
  },
5179
5186
  children: [/*#__PURE__*/jsx(Components$2.Text, {
@@ -5273,7 +5280,7 @@ var mapStateToProps$2 = state => {
5273
5280
  return {
5274
5281
  auth,
5275
5282
  strings: state.strings && state.strings.config || {},
5276
- optionOnlyForResidents: Helper$1.getSiteSettingFromState(state, values.optionOnlyForResidents)
5283
+ optionOnlyForResidents: Helper$2.getSiteSettingFromState(state, values.optionOnlyForResidents)
5277
5284
  };
5278
5285
  };
5279
5286
  var AddJob$1 = connect(mapStateToProps$2, {
@@ -5285,7 +5292,7 @@ var AddJob$1 = connect(mapStateToProps$2, {
5285
5292
  var {
5286
5293
  Components: Components$1,
5287
5294
  Session: Session$1,
5288
- Helper
5295
+ Helper: Helper$1
5289
5296
  } = PlussCore;
5290
5297
  var DEFAULT_FIELD = {
5291
5298
  type: "text",
@@ -5330,7 +5337,7 @@ class AddJobType extends Component {
5330
5337
  var {
5331
5338
  jobTypeEmail
5332
5339
  } = this.state;
5333
- return !_.isEmpty(jobTypeEmail) && Helper.isEmail(jobTypeEmail);
5340
+ return !_.isEmpty(jobTypeEmail) && Helper$1.isEmail(jobTypeEmail);
5334
5341
  });
5335
5342
  _defineProperty(this, "isJobTypeValid", () => {
5336
5343
  var {
@@ -5532,7 +5539,7 @@ class AddJobType extends Component {
5532
5539
  }];
5533
5540
  this.state = {
5534
5541
  loading: false,
5535
- jobTypeId: Helper.safeReadParams(this.props, "jobTypeId") ? this.props.match.params.jobTypeId : null,
5542
+ jobTypeId: Helper$1.safeReadParams(this.props, "jobTypeId") ? this.props.match.params.jobTypeId : null,
5536
5543
  jobTypeName: "",
5537
5544
  jobTypeEmail: "",
5538
5545
  jobTypeDescription: "",
@@ -6068,7 +6075,7 @@ class AddJobType extends Component {
6068
6075
  type: "bodyLarge",
6069
6076
  className: "marginBottom-24 paddingLeft-40",
6070
6077
  style: {
6071
- color: Colours$3.COLOUR_LIGHTGREY
6078
+ color: Colours$4.COLOUR_LIGHTGREY
6072
6079
  },
6073
6080
  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."
6074
6081
  }), /*#__PURE__*/jsxs("div", {
@@ -6099,10 +6106,10 @@ class AddJobType extends Component {
6099
6106
  return /*#__PURE__*/jsxs("div", {
6100
6107
  className: "padding-60 paddingVertical-8 text-bodyLarge",
6101
6108
  style: {
6102
- color: Colours$3.COLOUR_RED
6109
+ color: Colours$4.COLOUR_RED
6103
6110
  },
6104
6111
  children: ["To save the form", /*#__PURE__*/jsx("ul", {
6105
- style: {
6112
+ iconStyle: {
6106
6113
  padding: 0,
6107
6114
  paddingLeft: 16
6108
6115
  },
@@ -6186,10 +6193,14 @@ var AddJobType$1 = connect(mapStateToProps$1, {
6186
6193
  jobTypesUpdate
6187
6194
  })(withRouter(AddJobType));
6188
6195
 
6196
+ 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; }
6197
+ 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; }
6189
6198
  var {
6190
6199
  Analytics: Analytics$1,
6191
6200
  Session,
6192
- Components
6201
+ Components,
6202
+ Helper,
6203
+ Colours
6193
6204
  } = PlussCore;
6194
6205
  var getInitialState = () => ({
6195
6206
  requests: 0,
@@ -6209,10 +6220,21 @@ var AnalyticsHub = _ref => {
6209
6220
  auth,
6210
6221
  prevText,
6211
6222
  dayCount,
6212
- strings
6223
+ strings,
6224
+ userType,
6225
+ userCategory,
6226
+ selectedSites
6213
6227
  } = _ref;
6214
6228
  var [analyticsData, setAnalyticsData] = useState(getInitialState());
6215
6229
  var [isExportOpen, setIsExportOpen] = useState(false);
6230
+ var [failedSites, setFailedSites] = useState([]);
6231
+ var [comparisonData, setComparisonData] = useState({
6232
+ requests: [],
6233
+ completedRequests: [],
6234
+ comments: [],
6235
+ isLoading: true
6236
+ });
6237
+ var comparisonMode = selectedSites && selectedSites.length > 1;
6216
6238
  var hasAccess = Session.validateAccess(auth.site, values.permissionMaintenanceTracking, auth);
6217
6239
  if (!hasAccess) {
6218
6240
  return null;
@@ -6226,7 +6248,10 @@ var AnalyticsHub = _ref => {
6226
6248
  var exportColumns = [{
6227
6249
  label: "Select All",
6228
6250
  key: ""
6229
- }, {
6251
+ }, ...(comparisonMode ? [{
6252
+ label: "Site",
6253
+ key: "site"
6254
+ }] : []), {
6230
6255
  label: "Start Date",
6231
6256
  key: "startDate"
6232
6257
  }, {
@@ -6244,32 +6269,114 @@ var AnalyticsHub = _ref => {
6244
6269
  }];
6245
6270
  useEffect(() => {
6246
6271
  getData();
6247
- }, [startTime, endTime]);
6272
+ }, [startTime, endTime, userType, userCategory, selectedSites]);
6248
6273
  var getData = /*#__PURE__*/function () {
6249
6274
  var _ref2 = _asyncToGenerator(function* () {
6250
- setAnalyticsData(getInitialState());
6251
- // Load analytics data here using startTime and endTime
6252
- var timeDifference = endTime - startTime;
6253
- 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)]);
6254
- var data = {
6255
- requests: Analytics$1.countActivities(currentStatsResponse.data, "Request", "total"),
6256
- prevRequests: Analytics$1.countActivities(prevStatsResponse.data, "Request", "total"),
6257
- completedRequests: Analytics$1.countActivities(currentStatsResponse.data, "RequestCompleted", "unique"),
6258
- prevCompletedRequests: Analytics$1.countActivities(prevStatsResponse.data, "RequestCompleted", "unique"),
6259
- comments: Analytics$1.countActivities(currentStatsResponse.data, "Comment", "total"),
6260
- prevComments: Analytics$1.countActivities(prevStatsResponse.data, "Comment", "total"),
6261
- isLoading: false
6262
- };
6263
- setAnalyticsData(data);
6275
+ try {
6276
+ setFailedSites([]);
6277
+ if (comparisonMode) {
6278
+ setComparisonData({
6279
+ requests: [],
6280
+ completedRequests: [],
6281
+ comments: [],
6282
+ isLoading: true
6283
+ });
6284
+ var multiSiteResultsObj = yield Analytics$1.fetchMultiSiteData(selectedSites, /*#__PURE__*/function () {
6285
+ var _ref3 = _asyncToGenerator(function* (site) {
6286
+ var {
6287
+ data
6288
+ } = yield analyticsActions.getAggregateEntityStats(site, values.analyticsKey, startTime, endTime, true, {
6289
+ userType,
6290
+ userCategory
6291
+ });
6292
+ return data;
6293
+ });
6294
+ return function (_x) {
6295
+ return _ref3.apply(this, arguments);
6296
+ };
6297
+ }());
6298
+ var roles = auth.user.Roles;
6299
+ var failed = Object.entries(multiSiteResultsObj).filter(_ref4 => {
6300
+ var [, data] = _ref4;
6301
+ return data === null;
6302
+ }).map(_ref5 => {
6303
+ var [site] = _ref5;
6304
+ return Helper.getSiteNameFromRoles(site, roles);
6305
+ });
6306
+ setFailedSites(failed);
6307
+ var multiSiteResults = Object.entries(multiSiteResultsObj).filter(_ref6 => {
6308
+ var [, data] = _ref6;
6309
+ return data !== null;
6310
+ }).map(_ref7 => {
6311
+ var [site, data] = _ref7;
6312
+ return {
6313
+ site,
6314
+ data
6315
+ };
6316
+ });
6317
+ var buildComparison = (activityKey, countType) => multiSiteResults.map(result => ({
6318
+ name: Helper.getSiteNameFromRoles(result.site, roles),
6319
+ value: Analytics$1.countActivities(result.data, activityKey, countType)
6320
+ }));
6321
+ setComparisonData({
6322
+ requests: buildComparison("Request", "total"),
6323
+ completedRequests: buildComparison("RequestCompleted", "unique"),
6324
+ comments: buildComparison("Comment", "total"),
6325
+ isLoading: false
6326
+ });
6327
+ } else {
6328
+ setAnalyticsData(getInitialState());
6329
+ var site = selectedSites && selectedSites.length === 1 ? selectedSites[0] : auth.site;
6330
+ var timeDifference = endTime - startTime;
6331
+ var [currentStatsResponse, prevStatsResponse] = yield Promise.all([analyticsActions.getAggregateEntityStats(site, values.analyticsKey, startTime, endTime, true, {
6332
+ userType,
6333
+ userCategory
6334
+ }), analyticsActions.getAggregateEntityStats(site, values.analyticsKey, startTime - timeDifference, startTime, true, {
6335
+ userType,
6336
+ userCategory
6337
+ })]);
6338
+ var data = {
6339
+ requests: Analytics$1.countActivities(currentStatsResponse.data, "Request", "total"),
6340
+ prevRequests: Analytics$1.countActivities(prevStatsResponse.data, "Request", "total"),
6341
+ completedRequests: Analytics$1.countActivities(currentStatsResponse.data, "RequestCompleted", "unique"),
6342
+ prevCompletedRequests: Analytics$1.countActivities(prevStatsResponse.data, "RequestCompleted", "unique"),
6343
+ comments: Analytics$1.countActivities(currentStatsResponse.data, "Comment", "total"),
6344
+ prevComments: Analytics$1.countActivities(prevStatsResponse.data, "Comment", "total"),
6345
+ isLoading: false
6346
+ };
6347
+ setAnalyticsData(data);
6348
+ }
6349
+ } catch (err) {
6350
+ if (comparisonMode) {
6351
+ setComparisonData(prev => _objectSpread$3(_objectSpread$3({}, prev), {}, {
6352
+ isLoading: false
6353
+ }));
6354
+ } else {
6355
+ setAnalyticsData(prev => _objectSpread$3(_objectSpread$3({}, prev), {}, {
6356
+ isLoading: false
6357
+ }));
6358
+ }
6359
+ }
6264
6360
  });
6265
6361
  return function getData() {
6266
6362
  return _ref2.apply(this, arguments);
6267
6363
  };
6268
6364
  }();
6269
6365
  var isReadyToOpenCSV = () => {
6270
- return !analyticsData.isLoading;
6366
+ return comparisonMode ? !comparisonData.isLoading : !analyticsData.isLoading;
6271
6367
  };
6272
6368
  var getExportSource = () => {
6369
+ if (comparisonMode) {
6370
+ var sites = comparisonData.requests || [];
6371
+ return sites.map((site, i) => ({
6372
+ site: site.name,
6373
+ startDate: moment(startTime + 1).format("D-MM-YYYY"),
6374
+ endDate: moment(endTime).format("D-MM-YYYY"),
6375
+ requests: site.value,
6376
+ completedRequests: comparisonData.completedRequests[i] && comparisonData.completedRequests[i].value || 0,
6377
+ comments: comparisonData.comments[i] && comparisonData.comments[i].value || 0
6378
+ }));
6379
+ }
6273
6380
  return [{
6274
6381
  startDate: moment(startTime + 1).format("D-MM-YYYY"),
6275
6382
  endDate: moment(endTime).format("D-MM-YYYY"),
@@ -6283,13 +6390,14 @@ var AnalyticsHub = _ref => {
6283
6390
  return null;
6284
6391
  }
6285
6392
  var source = getExportSource();
6393
+ var filterSuffix = [userType, userCategory].filter(Boolean).map(f => f.toLowerCase().replace(/\s+/g, "-")).join("_");
6286
6394
  return /*#__PURE__*/jsx(Components.ExportCsvPopup, {
6287
6395
  onClose: () => {
6288
6396
  setIsExportOpen(false);
6289
6397
  },
6290
6398
  columns: exportColumns,
6291
6399
  source: source,
6292
- filename: "".concat(values.analyticsKey, "analytics_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
6400
+ filename: "".concat(values.analyticsKey, "analytics").concat(comparisonMode ? "_comparison" : "").concat(filterSuffix ? "_".concat(filterSuffix) : "", "_").concat(source[0].startDate, "_").concat(source[0].endDate, ".csv")
6293
6401
  });
6294
6402
  };
6295
6403
  return /*#__PURE__*/jsxs("div", {
@@ -6310,33 +6418,73 @@ var AnalyticsHub = _ref => {
6310
6418
  leftIcon: "file-code",
6311
6419
  children: "Export CSV"
6312
6420
  })]
6313
- }), /*#__PURE__*/jsxs("div", {
6421
+ }), failedSites.length > 0 && /*#__PURE__*/jsxs(Components.Text, {
6422
+ type: "help",
6423
+ style: {
6424
+ color: Colours.COLOUR_RED,
6425
+ marginTop: 8
6426
+ },
6427
+ children: ["Data unavailable for: ", failedSites.join(", ")]
6428
+ }), /*#__PURE__*/jsx("div", {
6314
6429
  className: "analyticsSection dashboardSection_content",
6315
- children: [/*#__PURE__*/jsx(Components.StatBox, {
6316
- title: "".concat(featureTitle, " Requests"),
6317
- icon: "wrench",
6318
- value: analyticsData.requests,
6319
- previousValue: analyticsData.prevRequests,
6320
- prevText: prevText,
6321
- viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Request&countType=total&dayCount=").concat(dayCount),
6322
- isLoading: analyticsData.isLoading
6323
- }), /*#__PURE__*/jsx(Components.StatBox, {
6324
- title: "Completed ".concat(featureTitle, " Requests"),
6325
- icon: "circle-check",
6326
- value: analyticsData.completedRequests,
6327
- previousValue: analyticsData.prevCompletedRequests,
6328
- prevText: prevText,
6329
- viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=RequestCompleted&countType=unique&dayCount=").concat(dayCount),
6330
- isLoading: analyticsData.isLoading
6331
- }), /*#__PURE__*/jsx(Components.StatBox, {
6332
- title: "".concat(featureTitle, " Comments"),
6333
- icon: "comment",
6334
- value: analyticsData.comments,
6335
- previousValue: analyticsData.prevComments,
6336
- prevText: prevText,
6337
- viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Comment&countType=total&dayCount=").concat(dayCount),
6338
- isLoading: analyticsData.isLoading
6339
- })]
6430
+ children: (() => {
6431
+ var chartSuffix = [selectedSites && selectedSites.length > 0 ? "&sites=".concat(selectedSites.join(",")) : "", userType ? "&userType=".concat(encodeURIComponent(userType)) : "", userCategory ? "&userCategory=".concat(encodeURIComponent(userCategory)) : ""].join("");
6432
+ if (comparisonMode) {
6433
+ return /*#__PURE__*/jsxs("div", {
6434
+ style: {
6435
+ display: "flex",
6436
+ flexDirection: "column",
6437
+ gap: 16
6438
+ },
6439
+ children: [/*#__PURE__*/jsx(Components.ComparisonStatBox, {
6440
+ title: "".concat(featureTitle, " Requests"),
6441
+ data: comparisonData.requests,
6442
+ prevText: prevText,
6443
+ viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Request&countType=total&dayCount=").concat(dayCount).concat(chartSuffix),
6444
+ isLoading: comparisonData.isLoading
6445
+ }), /*#__PURE__*/jsx(Components.ComparisonStatBox, {
6446
+ title: "Completed ".concat(featureTitle, " Requests"),
6447
+ data: comparisonData.completedRequests,
6448
+ prevText: prevText,
6449
+ viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=RequestCompleted&countType=unique&dayCount=").concat(dayCount).concat(chartSuffix),
6450
+ isLoading: comparisonData.isLoading
6451
+ }), /*#__PURE__*/jsx(Components.ComparisonStatBox, {
6452
+ title: "".concat(featureTitle, " Comments"),
6453
+ data: comparisonData.comments,
6454
+ prevText: prevText,
6455
+ viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Comment&countType=total&dayCount=").concat(dayCount).concat(chartSuffix),
6456
+ isLoading: comparisonData.isLoading
6457
+ })]
6458
+ });
6459
+ }
6460
+ return /*#__PURE__*/jsxs(Fragment, {
6461
+ children: [/*#__PURE__*/jsx(Components.StatBox, {
6462
+ title: "".concat(featureTitle, " Requests"),
6463
+ icon: "wrench",
6464
+ value: analyticsData.requests,
6465
+ previousValue: analyticsData.prevRequests,
6466
+ prevText: prevText,
6467
+ viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Request&countType=total&dayCount=").concat(dayCount).concat(chartSuffix),
6468
+ isLoading: analyticsData.isLoading
6469
+ }), /*#__PURE__*/jsx(Components.StatBox, {
6470
+ title: "Completed ".concat(featureTitle, " Requests"),
6471
+ icon: "circle-check",
6472
+ value: analyticsData.completedRequests,
6473
+ previousValue: analyticsData.prevCompletedRequests,
6474
+ prevText: prevText,
6475
+ viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=RequestCompleted&countType=unique&dayCount=").concat(dayCount).concat(chartSuffix),
6476
+ isLoading: analyticsData.isLoading
6477
+ }), /*#__PURE__*/jsx(Components.StatBox, {
6478
+ title: "".concat(featureTitle, " Comments"),
6479
+ icon: "comment",
6480
+ value: analyticsData.comments,
6481
+ previousValue: analyticsData.prevComments,
6482
+ prevText: prevText,
6483
+ viewGraphLink: "/chart?entity=".concat(values.analyticsKey, "&startTime=").concat(startTime, "&endTime=").concat(endTime, "&key=Comment&countType=total&dayCount=").concat(dayCount).concat(chartSuffix),
6484
+ isLoading: analyticsData.isLoading
6485
+ })]
6486
+ });
6487
+ })()
6340
6488
  })]
6341
6489
  });
6342
6490
  };