@plusscommunities/pluss-maintenance-web-a 1.1.23 → 1.1.24

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.cjs.js CHANGED
@@ -75,6 +75,8 @@ var values = {
75
75
  actionJobsLoaded: 'JOBS_LOADEDA',
76
76
  actionJobsRemoved: 'JOBS_REMOVEDA',
77
77
  actionJobsTypesLoaded: 'JOBS_TYPES_LOADEDA',
78
+ actionJobsStatusesLoaded: 'JOBS_STATUSES_LOADEDA',
79
+ actionJobsHideSeen: 'JOBS_HIDE_UNSEENA',
78
80
  actionJobsLoading: 'JOBS_LOADINGA',
79
81
  permissionMaintenanceTracking: 'maintenanceTrackingA',
80
82
  permissionMaintenanceTypes: 'maintenanceTypesA',
@@ -118,7 +120,9 @@ var values = {
118
120
  optionKeyMoreSectionMaintenance: 'maintenanceRequestA',
119
121
  hiddenKeyMoreSectionMaintenance: 'maintenanceRequestA',
120
122
  forceCustomFields: false,
121
- textEntityName: 'Job'
123
+ textEntityName: 'Job',
124
+ stringConfigJobStatus: 'maintenanceJobStatusA',
125
+ stringConfigHideSeen: 'maintenanceDisableSeenA'
122
126
  };
123
127
 
124
128
  // import * as PlussCore from '../../pluss-core/src';
@@ -233,19 +237,21 @@ var FeatureConfig = {
233
237
  };
234
238
 
235
239
  var JOBS_LOADED = values.actionJobsLoaded;
240
+ var JOBS_LOADING = values.actionJobsLoading;
236
241
  var JOBS_REMOVED = values.actionJobsRemoved;
237
242
  var JOBS_TYPES_LOADED = values.actionJobsTypesLoaded;
238
- var JOBS_LOADING = values.actionJobsLoading;
243
+ var JOBS_STATUSES_LOADED = values.actionJobsStatusesLoaded;
244
+ var JOBS_HIDE_SEEN = values.actionJobsHideSeen;
239
245
 
240
- function ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
246
+ function ownKeys$7(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
241
247
 
242
- function _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$6(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
248
+ function _objectSpread$7(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$7(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$7(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
243
249
  var Helper$5 = PlussCore__namespace.Helper,
244
- Session$8 = PlussCore__namespace.Session;
250
+ Session$9 = PlussCore__namespace.Session;
245
251
  var maintenanceActions = {
246
252
  getJobType: function getJobType(site, typeId) {
247
253
  var url = Helper$5.getUrl(values.serviceKey, 'getjobtype');
248
- return Session$8.authedFunction({
254
+ return Session$9.authedFunction({
249
255
  method: 'POST',
250
256
  url: url,
251
257
  data: {
@@ -256,7 +262,7 @@ var maintenanceActions = {
256
262
  },
257
263
  getJobTypes: function getJobTypes(site, id) {
258
264
  var url = Helper$5.getUrl(values.serviceKey, 'getjobtypes');
259
- return Session$8.authedFunction({
265
+ return Session$9.authedFunction({
260
266
  method: 'POST',
261
267
  url: url,
262
268
  data: {
@@ -266,7 +272,7 @@ var maintenanceActions = {
266
272
  },
267
273
  getJob: function getJob(site, id) {
268
274
  var url = Helper$5.getUrl(values.serviceKey, 'getJob');
269
- return Session$8.authedFunction({
275
+ return Session$9.authedFunction({
270
276
  method: 'POST',
271
277
  url: url,
272
278
  data: {
@@ -277,7 +283,7 @@ var maintenanceActions = {
277
283
  },
278
284
  getJobByJobId: function getJobByJobId(site, jobId) {
279
285
  var url = Helper$5.getUrl(values.serviceKey, 'getJob');
280
- return Session$8.authedFunction({
286
+ return Session$9.authedFunction({
281
287
  method: 'POST',
282
288
  url: url,
283
289
  data: {
@@ -289,7 +295,7 @@ var maintenanceActions = {
289
295
  getJobs: function getJobs(site) {
290
296
  var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
291
297
  var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
292
- return Session$8.authedFunction({
298
+ return Session$9.authedFunction({
293
299
  method: 'POST',
294
300
  url: Helper$5.getUrl(values.serviceKey, 'getJobs'),
295
301
  data: {
@@ -316,7 +322,7 @@ var maintenanceActions = {
316
322
  query.lastKey = JSON.stringify(lastKey);
317
323
  }
318
324
 
319
- return Session$8.authedFunction({
325
+ return Session$9.authedFunction({
320
326
  method: 'GET',
321
327
  url: Helper$5.getUrl(values.serviceKey, 'get/requests', query)
322
328
  });
@@ -336,14 +342,14 @@ var maintenanceActions = {
336
342
  });
337
343
  },
338
344
  createJob: function createJob(job) {
339
- return Session$8.authedFunction({
345
+ return Session$9.authedFunction({
340
346
  method: 'POST',
341
347
  url: Helper$5.getUrl(values.serviceKey, 'sendMaintenance'),
342
- data: _objectSpread$6({}, job)
348
+ data: _objectSpread$7({}, job)
343
349
  });
344
350
  },
345
351
  editJob: function editJob(job, site) {
346
- return Session$8.authedFunction({
352
+ return Session$9.authedFunction({
347
353
  method: 'POST',
348
354
  url: Helper$5.getUrl(values.serviceKey, 'editJob'),
349
355
  data: {
@@ -353,7 +359,7 @@ var maintenanceActions = {
353
359
  });
354
360
  },
355
361
  deleteJob: function deleteJob(site, id) {
356
- return Session$8.authedFunction({
362
+ return Session$9.authedFunction({
357
363
  method: 'POST',
358
364
  url: Helper$5.getUrl(values.serviceKey, 'requests/remove'),
359
365
  data: {
@@ -363,7 +369,7 @@ var maintenanceActions = {
363
369
  });
364
370
  },
365
371
  editJobStatus: function editJobStatus(id, status) {
366
- return Session$8.authedFunction({
372
+ return Session$9.authedFunction({
367
373
  method: 'POST',
368
374
  url: Helper$5.getUrl(values.serviceKey, 'editJobStatus'),
369
375
  data: {
@@ -372,8 +378,18 @@ var maintenanceActions = {
372
378
  }
373
379
  });
374
380
  },
381
+ editJobPriority: function editJobPriority(id, priority) {
382
+ return Session$9.authedFunction({
383
+ method: 'POST',
384
+ url: Helper$5.getUrl(values.serviceKey, 'update/priority'),
385
+ data: {
386
+ id: id,
387
+ priority: priority
388
+ }
389
+ });
390
+ },
375
391
  assignJob: function assignJob(jobId, userId) {
376
- return Session$8.authedFunction({
392
+ return Session$9.authedFunction({
377
393
  method: 'POST',
378
394
  url: Helper$5.getUrl(values.serviceKey, 'update/assign'),
379
395
  data: {
@@ -383,40 +399,42 @@ var maintenanceActions = {
383
399
  });
384
400
  },
385
401
  getAssignees: function getAssignees(site) {
386
- return Session$8.authedFunction({
402
+ return Session$9.authedFunction({
387
403
  method: 'GET',
388
404
  url: Helper$5.getUrl(values.serviceKey, 'get/assignees', {
389
405
  site: site
390
406
  })
391
407
  });
392
408
  },
393
- addNote: function addNote(jobId, note, attachments) {
394
- return Session$8.authedFunction({
409
+ addNote: function addNote(jobId, note, attachments, images) {
410
+ return Session$9.authedFunction({
395
411
  method: 'POST',
396
412
  url: Helper$5.getUrl(values.serviceKey, 'requests/note'),
397
413
  data: {
398
414
  id: jobId,
399
415
  note: note,
400
416
  attachments: attachments,
417
+ images: images,
401
418
  action: 'AddNote'
402
419
  }
403
420
  });
404
421
  },
405
- editNote: function editNote(jobId, noteId, note, attachments) {
406
- return Session$8.authedFunction({
422
+ editNote: function editNote(jobId, noteId, note, attachments, images) {
423
+ return Session$9.authedFunction({
407
424
  method: 'POST',
408
425
  url: Helper$5.getUrl(values.serviceKey, 'requests/note'),
409
426
  data: {
410
427
  id: jobId,
411
428
  note: note,
412
429
  attachments: attachments,
430
+ images: images,
413
431
  noteId: noteId,
414
432
  action: 'EditNote'
415
433
  }
416
434
  });
417
435
  },
418
436
  deleteNote: function deleteNote(jobId, noteId) {
419
- return Session$8.authedFunction({
437
+ return Session$9.authedFunction({
420
438
  method: 'POST',
421
439
  url: Helper$5.getUrl(values.serviceKey, 'requests/note'),
422
440
  data: {
@@ -436,7 +454,7 @@ var maintenanceActions = {
436
454
  hasCustomFields: hasCustomFields,
437
455
  customFields: customFields || []
438
456
  };
439
- return Session$8.authedFunction({
457
+ return Session$9.authedFunction({
440
458
  method: 'POST',
441
459
  url: Helper$5.getUrl(values.serviceKey, 'createJobType'),
442
460
  data: data
@@ -454,14 +472,14 @@ var maintenanceActions = {
454
472
  customFields: customFields || []
455
473
  };
456
474
  if (hasCustomFields && customFields) data.customFields = customFields;
457
- return Session$8.authedFunction({
475
+ return Session$9.authedFunction({
458
476
  method: 'POST',
459
477
  url: Helper$5.getUrl(values.serviceKey, 'editJobType'),
460
478
  data: data
461
479
  });
462
480
  },
463
481
  deleteJobType: function deleteJobType(site, id) {
464
- return Session$8.authedFunction({
482
+ return Session$9.authedFunction({
465
483
  method: 'POST',
466
484
  url: Helper$5.getUrl(values.serviceKey, 'deleteJobType'),
467
485
  data: {
@@ -473,7 +491,7 @@ var maintenanceActions = {
473
491
  };
474
492
 
475
493
  var Helper$4 = PlussCore__namespace.Helper,
476
- Session$7 = PlussCore__namespace.Session;
494
+ Session$8 = PlussCore__namespace.Session;
477
495
  var reactionActions = {
478
496
  addComment: function addComment(entityId, entityType, entityName, site, comment, image, parentId) {
479
497
  var data = {
@@ -489,7 +507,7 @@ var reactionActions = {
489
507
  data.image = image;
490
508
  }
491
509
 
492
- return Session$7.authedFunction({
510
+ return Session$8.authedFunction({
493
511
  method: 'POST',
494
512
  url: Helper$4.getUrl('reactions', 'comments/add'),
495
513
  data: data
@@ -514,7 +532,7 @@ var reactionActions = {
514
532
  query.minTime = minTime;
515
533
  }
516
534
 
517
- return Session$7.authedFunction({
535
+ return Session$8.authedFunction({
518
536
  method: 'GET',
519
537
  url: Helper$4.getUrl('reactions', 'comments/get', query)
520
538
  });
@@ -524,6 +542,28 @@ var reactionActions = {
524
542
  var Apis$1 = PlussCore__namespace.Apis;
525
543
  var analyticsActions = Apis$1.analyticsActions;
526
544
  var userActions = Apis$1.userActions;
545
+ var stringActions = Apis$1.stringActions;
546
+
547
+ var jobStatusOptions = [
548
+ {
549
+ text: "Open",
550
+ order: 0,
551
+ color: "#d5dde4",
552
+ category: "Not Actioned"
553
+ },
554
+ {
555
+ text: "In Progress",
556
+ order: 1,
557
+ color: "#82d6e5",
558
+ category: "In Progress"
559
+ },
560
+ {
561
+ text: "Completed",
562
+ order: 2,
563
+ color: "#58dba4",
564
+ category: "Completed"
565
+ }
566
+ ];
527
567
 
528
568
  var Helper$3 = PlussCore__namespace.Helper;
529
569
  var jobsUpdate = function jobsUpdate(site, isdashboard) {
@@ -575,6 +615,54 @@ var jobTypesLoaded = function jobTypesLoaded(events) {
575
615
  type: JOBS_TYPES_LOADED,
576
616
  payload: events
577
617
  };
618
+ };
619
+ var jobStatusesUpdate = function jobStatusesUpdate(site) {
620
+ var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
621
+ return function (dispatch) {
622
+ stringActions.getString(site, values.stringConfigJobStatus).then(function (res) {
623
+ dispatch({
624
+ type: JOBS_STATUSES_LOADED,
625
+ payload: res.data
626
+ });
627
+ if (callback) callback(res.data);
628
+ }).catch(function (_error) {
629
+ dispatch({
630
+ type: JOBS_STATUSES_LOADED,
631
+ payload: jobStatusOptions
632
+ });
633
+ if (callback) callback(jobStatusOptions);
634
+ });
635
+ };
636
+ };
637
+ var jobStatusesLoaded = function jobStatusesLoaded(statuses) {
638
+ return {
639
+ type: JOBS_STATUSES_LOADED,
640
+ payload: statuses
641
+ };
642
+ };
643
+ var jobHideSeenUpdate = function jobHideSeenUpdate(site) {
644
+ var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
645
+ return function (dispatch) {
646
+ stringActions.getString(site, values.stringConfigHideSeen).then(function (res) {
647
+ dispatch({
648
+ type: JOBS_HIDE_SEEN,
649
+ payload: res.data
650
+ });
651
+ if (callback) callback(res.data);
652
+ }).catch(function (_error) {
653
+ dispatch({
654
+ type: JOBS_HIDE_SEEN,
655
+ payload: false
656
+ });
657
+ if (callback) callback(false);
658
+ });
659
+ };
660
+ };
661
+ var jobHideSeenLoaded = function jobHideSeenLoaded(hide) {
662
+ return {
663
+ type: JOBS_HIDE_SEEN,
664
+ payload: hide
665
+ };
578
666
  }; // export const removeJobType = (id) => {
579
667
  // return {
580
668
  // type: JOBS_TYPES_REMOVED,
@@ -605,41 +693,56 @@ var jobTypesLoaded = function jobTypesLoaded(events) {
605
693
  // };
606
694
  // };
607
695
 
608
- var Unassigned = {
609
- text: "Open",
610
- order: 0,
611
- color: "#d5dde4"
612
- };
613
- var Completed = {
614
- text: "Completed",
615
- order: 2,
616
- color: "#58dba4"
696
+ var jobPriorityOptions = [
697
+ {
698
+ name: "Low",
699
+ color: "green",
700
+ "default": true
701
+ },
702
+ {
703
+ name: "Medium",
704
+ color: "orange"
705
+ },
706
+ {
707
+ name: "High",
708
+ color: "red"
709
+ }
710
+ ];
711
+
712
+ var STATUS_IMCOMPLETE = 'All Incomplete';
713
+ var STATUS_NOT_ACTIONED = 'Not Actioned';
714
+ var STATUS_IN_PROGRESS = 'In Progress';
715
+ var STATUS_COMPLETED = 'Completed';
716
+
717
+ var getDefaultPriority = function getDefaultPriority() {
718
+ return jobPriorityOptions.find(function (p) {
719
+ return p.default;
720
+ });
617
721
  };
618
- var StatusTypes = {
619
- Unassigned: Unassigned,
620
- "In Progress": {
621
- text: "In Progress",
622
- order: 1,
623
- color: "#82d6e5"
624
- },
625
- Completed: Completed
722
+
723
+ var getJobPriority = function getJobPriority(priority) {
724
+ var priorityOption = null;
725
+ if (priority) priorityOption = jobPriorityOptions.find(function (p) {
726
+ return p.name === priority;
727
+ });
728
+ return priorityOption || getDefaultPriority();
626
729
  };
627
730
 
628
- function ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
731
+ function ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
629
732
 
630
- function _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$5(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
733
+ function _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$6(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
631
734
 
632
- function _createSuper$b(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$b(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
735
+ function _createSuper$c(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$c(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
633
736
 
634
- function _isNativeReflectConstruct$b() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
635
- var Session$6 = PlussCore__namespace.Session,
636
- Components$6 = PlussCore__namespace.Components,
737
+ function _isNativeReflectConstruct$c() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
738
+ var Session$7 = PlussCore__namespace.Session,
739
+ Components$7 = PlussCore__namespace.Components,
637
740
  Analytics$2 = PlussCore__namespace.Analytics;
638
741
 
639
742
  var JobList = /*#__PURE__*/function (_Component) {
640
743
  _inherits__default['default'](JobList, _Component);
641
744
 
642
- var _super = _createSuper$b(JobList);
745
+ var _super = _createSuper$c(JobList);
643
746
 
644
747
  function JobList(props) {
645
748
  var _this;
@@ -648,6 +751,20 @@ var JobList = /*#__PURE__*/function (_Component) {
648
751
 
649
752
  _this = _super.call(this, props);
650
753
 
754
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "setRequesters", function (jobs) {
755
+ var requesters = ___default['default'].orderBy(___default['default'].uniqBy(jobs.map(function (j) {
756
+ return {
757
+ id: j.userID,
758
+ displayName: j.userName,
759
+ profilePic: j.userProfilePic
760
+ };
761
+ }), 'id'), 'displayName', 'asc');
762
+
763
+ _this.setState({
764
+ requesters: requesters
765
+ });
766
+ });
767
+
651
768
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "getJobs", /*#__PURE__*/_asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
652
769
  var auth, res;
653
770
  return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
@@ -663,6 +780,8 @@ var JobList = /*#__PURE__*/function (_Component) {
663
780
  res = _context.sent;
664
781
 
665
782
  if (!___default['default'].isEmpty(res) && res[0].site === auth.site) {
783
+ _this.setRequesters(res);
784
+
666
785
  _this.props.jobsLoaded(res);
667
786
  }
668
787
 
@@ -794,6 +913,14 @@ var JobList = /*#__PURE__*/function (_Component) {
794
913
  _this.closeFilter();
795
914
  });
796
915
 
916
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "selectPriorityFilter", function (filter) {
917
+ _this.setState({
918
+ selectedPriorityFilter: filter
919
+ });
920
+
921
+ _this.closeFilter();
922
+ });
923
+
797
924
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "selectStatusFilter", function (filter) {
798
925
  _this.setState({
799
926
  selectedStatusFilter: filter
@@ -898,6 +1025,33 @@ var JobList = /*#__PURE__*/function (_Component) {
898
1025
  _this.closeFilter();
899
1026
  });
900
1027
 
1028
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onSelectRequester", function (user) {
1029
+ _this.setState({
1030
+ selectedRequester: user
1031
+ });
1032
+ });
1033
+
1034
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "removeRequesterFilter", function () {
1035
+ _this.setState({
1036
+ selectedRequesterFilter: null,
1037
+ selectedRequesterFilterText: null
1038
+ });
1039
+ });
1040
+
1041
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "saveRequesterFilter", function () {
1042
+ if (!_this.state.selectedRequester) {
1043
+ _this.removeRequesterFilter();
1044
+ } else {
1045
+ _this.setState({
1046
+ selectedRequesterFilter: _this.state.selectedRequester.id,
1047
+ selectedRequesterFilterText: _this.state.selectedRequester.displayName,
1048
+ selectedRequester: null
1049
+ });
1050
+ }
1051
+
1052
+ _this.closeFilter();
1053
+ });
1054
+
901
1055
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onHandleSearchChange", function (event) {
902
1056
  var thisSearchTime = moment__default['default']().valueOf();
903
1057
 
@@ -930,18 +1084,32 @@ var JobList = /*#__PURE__*/function (_Component) {
930
1084
  source = ___default['default'].filter(source, function (r) {
931
1085
  return r.type === _this.state.selectedTypeFilter;
932
1086
  });
1087
+ } // filter by priority
1088
+
1089
+
1090
+ if (_this.state.selectedPriorityFilter) {
1091
+ var defaultPriority = getDefaultPriority().name;
1092
+ source = ___default['default'].filter(source, function (r) {
1093
+ return r.priority === _this.state.selectedPriorityFilter || _this.state.selectedPriorityFilter === defaultPriority && ___default['default'].isNil(r.priority);
1094
+ });
933
1095
  } // filter by status
934
1096
 
935
1097
 
936
1098
  if (_this.state.selectedStatusFilter) {
1099
+ var statusTypes = _this.props.statusTypes;
1100
+ var defaultStatus = statusTypes.find(function (s) {
1101
+ return s.category === STATUS_NOT_ACTIONED;
1102
+ });
937
1103
  source = ___default['default'].filter(source, function (r) {
938
- var status = r.status && StatusTypes[r.status] ? r.status : 'Unassigned';
1104
+ var status = statusTypes.find(function (s) {
1105
+ return s.text === r.status;
1106
+ }) || defaultStatus;
939
1107
 
940
- if (_this.state.selectedStatusFilter === 'incomplete') {
941
- return status !== 'Completed';
1108
+ if (_this.state.selectedStatusFilter === STATUS_IMCOMPLETE) {
1109
+ return status.category !== STATUS_COMPLETED;
942
1110
  }
943
1111
 
944
- return status === _this.state.selectedStatusFilter;
1112
+ return status.text === _this.state.selectedStatusFilter;
945
1113
  });
946
1114
  }
947
1115
 
@@ -951,6 +1119,12 @@ var JobList = /*#__PURE__*/function (_Component) {
951
1119
  });
952
1120
  }
953
1121
 
1122
+ if (_this.state.selectedRequesterFilter) {
1123
+ source = ___default['default'].filter(source, function (r) {
1124
+ return r.userID === _this.state.selectedRequesterFilter;
1125
+ });
1126
+ }
1127
+
954
1128
  if (!___default['default'].isEmpty(_this.state.searchTerm)) {
955
1129
  source = ___default['default'].filter(source, function (r) {
956
1130
  if (r.jobId && r.jobId === _this.state.searchTerm) {
@@ -1032,6 +1206,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1032
1206
 
1033
1207
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "getExportSource", function () {
1034
1208
  var customColumns = [];
1209
+ var defaultPriority = getDefaultPriority().name;
1035
1210
 
1036
1211
  var source = _this.getSource().map(function (r) {
1037
1212
  var history = r.history || [];
@@ -1078,12 +1253,14 @@ var JobList = /*#__PURE__*/function (_Component) {
1078
1253
 
1079
1254
  var customFieldValues = _this.getCustomFields(r, customColumns);
1080
1255
 
1081
- return _objectSpread$5(_objectSpread$5(_objectSpread$5({}, r), customFieldValues), {}, {
1256
+ var priority = r.priority || defaultPriority;
1257
+ return _objectSpread$6(_objectSpread$6(_objectSpread$6({}, r), customFieldValues), {}, {
1082
1258
  notes: notes,
1083
1259
  progressTime: progressTime,
1084
1260
  completedTime: completedTime,
1085
1261
  progressDuration: progressDuration,
1086
- completedDuration: completedDuration
1262
+ completedDuration: completedDuration,
1263
+ priority: priority
1087
1264
  });
1088
1265
  }); // Compose revised columns list with custom fields
1089
1266
 
@@ -1122,7 +1299,8 @@ var JobList = /*#__PURE__*/function (_Component) {
1122
1299
  sortColumn: 'createdUnix',
1123
1300
  sortDesc: true,
1124
1301
  selectedTimeFilter: Analytics$2.getAnalyticsFilterOptions()[1],
1125
- assignees: []
1302
+ assignees: [],
1303
+ requesters: []
1126
1304
  };
1127
1305
  _this.exportColumns = [{
1128
1306
  label: 'Select All',
@@ -1139,6 +1317,9 @@ var JobList = /*#__PURE__*/function (_Component) {
1139
1317
  }, {
1140
1318
  label: 'Status',
1141
1319
  key: 'status'
1320
+ }, {
1321
+ label: 'Priority',
1322
+ key: 'priority'
1142
1323
  }, {
1143
1324
  label: 'Title',
1144
1325
  key: 'title'
@@ -1179,11 +1360,12 @@ var JobList = /*#__PURE__*/function (_Component) {
1179
1360
  _createClass__default['default'](JobList, [{
1180
1361
  key: "UNSAFE_componentWillMount",
1181
1362
  value: function UNSAFE_componentWillMount() {
1182
- Session$6.checkLoggedIn(this);
1363
+ Session$7.checkLoggedIn(this);
1183
1364
  }
1184
1365
  }, {
1185
1366
  key: "componentDidMount",
1186
1367
  value: function componentDidMount() {
1368
+ this.props.jobStatusesUpdate(this.props.auth.site);
1187
1369
  this.getJobs();
1188
1370
  this.getAssignees();
1189
1371
  }
@@ -1197,7 +1379,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1197
1379
  }
1198
1380
 
1199
1381
  if (this.state.filterOpen === 'type') {
1200
- return /*#__PURE__*/React__default['default'].createElement(Components$6.Popup, {
1382
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Popup, {
1201
1383
  title: "Select ".concat(values.textJobType),
1202
1384
  maxWidth: 600,
1203
1385
  minWidth: 400,
@@ -1208,7 +1390,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1208
1390
  })), function (t) {
1209
1391
  return t.toLowerCase();
1210
1392
  }).map(function (type) {
1211
- return /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1393
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1212
1394
  key: type,
1213
1395
  onClick: function onClick() {
1214
1396
  _this2.selectTypeFilter(type);
@@ -1219,28 +1401,49 @@ var JobList = /*#__PURE__*/function (_Component) {
1219
1401
  }));
1220
1402
  }
1221
1403
 
1404
+ if (this.state.filterOpen === 'priority') {
1405
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Popup, {
1406
+ title: "Select Priority",
1407
+ maxWidth: 600,
1408
+ minWidth: 400,
1409
+ hasPadding: true,
1410
+ onClose: this.closeFilter
1411
+ }, jobPriorityOptions.map(function (p) {
1412
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1413
+ key: p.name,
1414
+ onClick: function onClick() {
1415
+ _this2.selectPriorityFilter(p.name);
1416
+ },
1417
+ text: p.name,
1418
+ className: "marginRight-10"
1419
+ });
1420
+ }));
1421
+ }
1422
+
1222
1423
  if (this.state.filterOpen === 'status') {
1223
- return /*#__PURE__*/React__default['default'].createElement(Components$6.Popup, {
1424
+ var statusTypes = this.props.statusTypes;
1425
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Popup, {
1224
1426
  title: "Select Status",
1225
1427
  maxWidth: 600,
1226
1428
  minWidth: 400,
1227
1429
  hasPadding: true,
1228
1430
  onClose: this.closeFilter
1229
- }, ['incomplete'].concat(_toConsumableArray__default['default'](Object.keys(StatusTypes))).map(function (sKey) {
1230
- var text = sKey === 'incomplete' ? 'All Incomplete' : StatusTypes[sKey].text;
1231
- return /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1232
- key: sKey,
1431
+ }, [STATUS_IMCOMPLETE].concat(_toConsumableArray__default['default'](statusTypes.map(function (s) {
1432
+ return s.text;
1433
+ }))).map(function (status) {
1434
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1435
+ key: status,
1233
1436
  onClick: function onClick() {
1234
- _this2.selectStatusFilter(sKey);
1437
+ _this2.selectStatusFilter(status);
1235
1438
  },
1236
- text: text,
1237
- className: "marginRight-10"
1439
+ text: status,
1440
+ className: "marginRight-10 marginBottom-10"
1238
1441
  });
1239
1442
  }));
1240
1443
  }
1241
1444
 
1242
1445
  if (this.state.filterOpen === 'time') {
1243
- return /*#__PURE__*/React__default['default'].createElement(Components$6.Popup, {
1446
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Popup, {
1244
1447
  title: "Select Time",
1245
1448
  maxWidth: 600,
1246
1449
  minWidth: 400,
@@ -1256,7 +1459,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1256
1459
  style: {
1257
1460
  minHeight: 150
1258
1461
  }
1259
- }, /*#__PURE__*/React__default['default'].createElement(Components$6.AnalyticsFilter, {
1462
+ }, /*#__PURE__*/React__default['default'].createElement(Components$7.AnalyticsFilter, {
1260
1463
  defaultFilter: this.state.selectedTimeFilter,
1261
1464
  filterChanged: this.timeFilterChanged,
1262
1465
  filterDateRangeChanged: this.timeFilterDateRangeChanged
@@ -1267,10 +1470,10 @@ var JobList = /*#__PURE__*/function (_Component) {
1267
1470
  var userContent = null;
1268
1471
 
1269
1472
  if (this.state.selectedAssignee) {
1270
- userContent = /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$6.UserListing, {
1473
+ userContent = /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$7.UserListing, {
1271
1474
  key: this.state.selectedAssignee.id,
1272
1475
  user: this.state.selectedAssignee,
1273
- rightContent: /*#__PURE__*/React__default['default'].createElement(Components$6.SVGIcon, {
1476
+ rightContent: /*#__PURE__*/React__default['default'].createElement(Components$7.SVGIcon, {
1274
1477
  className: "removeIcon",
1275
1478
  icon: "close",
1276
1479
  onClick: function onClick() {
@@ -1280,7 +1483,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1280
1483
  })
1281
1484
  }));
1282
1485
  } else {
1283
- userContent = /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$6.GenericInput, {
1486
+ userContent = /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$7.GenericInput, {
1284
1487
  id: "userSearch",
1285
1488
  type: "text" // label="Search"
1286
1489
  ,
@@ -1296,7 +1499,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1296
1499
  if (___default['default'].isEmpty(_this2.state.userSearch)) return true;
1297
1500
  return u.displayName.toUpperCase().indexOf(_this2.state.userSearch.toUpperCase()) > -1;
1298
1501
  }).map(function (user) {
1299
- return /*#__PURE__*/React__default['default'].createElement(Components$6.UserListing, {
1502
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.UserListing, {
1300
1503
  key: user.id,
1301
1504
  user: user,
1302
1505
  onClick: function onClick() {
@@ -1306,7 +1509,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1306
1509
  }));
1307
1510
  }
1308
1511
 
1309
- return /*#__PURE__*/React__default['default'].createElement(Components$6.Popup, {
1512
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Popup, {
1310
1513
  title: "Select User",
1311
1514
  maxWidth: 600,
1312
1515
  minWidth: 400,
@@ -1321,6 +1524,64 @@ var JobList = /*#__PURE__*/function (_Component) {
1321
1524
  }, userContent);
1322
1525
  }
1323
1526
 
1527
+ if (this.state.filterOpen === 'requester') {
1528
+ var _userContent = null;
1529
+
1530
+ if (this.state.selectedRequester) {
1531
+ _userContent = /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$7.UserListing, {
1532
+ key: this.state.selectedRequester.id,
1533
+ user: this.state.selectedRequester,
1534
+ rightContent: /*#__PURE__*/React__default['default'].createElement(Components$7.SVGIcon, {
1535
+ className: "removeIcon",
1536
+ icon: "close",
1537
+ onClick: function onClick() {
1538
+ _this2.onSelectRequester();
1539
+ },
1540
+ colour: PlussCore.Colours.COLOUR_DUSK
1541
+ })
1542
+ }));
1543
+ } else {
1544
+ _userContent = /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$7.GenericInput, {
1545
+ id: "requesterSearch",
1546
+ type: "text" // label="Search"
1547
+ ,
1548
+ placeholder: "Search name",
1549
+ value: this.state.requesterSearch,
1550
+ onChange: function onChange(e) {
1551
+ return _this2.onHandleChange(e);
1552
+ },
1553
+ alwaysShowLabel: true
1554
+ }), ___default['default'].sortBy(this.state.requesters, function (u) {
1555
+ return u.displayName.toUpperCase();
1556
+ }).filter(function (u) {
1557
+ if (___default['default'].isEmpty(_this2.state.requesterSearch)) return true;
1558
+ return u.displayName.toUpperCase().indexOf(_this2.state.requesterSearch.toUpperCase()) > -1;
1559
+ }).map(function (user) {
1560
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.UserListing, {
1561
+ key: user.id,
1562
+ user: user,
1563
+ onClick: function onClick() {
1564
+ _this2.onSelectRequester(user);
1565
+ }
1566
+ });
1567
+ }));
1568
+ }
1569
+
1570
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Popup, {
1571
+ title: "Select User",
1572
+ maxWidth: 600,
1573
+ minWidth: 400,
1574
+ hasPadding: true,
1575
+ onClose: this.closeFilter,
1576
+ buttons: [{
1577
+ type: 'primaryAction',
1578
+ onClick: this.saveRequesterFilter,
1579
+ text: 'Select',
1580
+ isActive: true
1581
+ }]
1582
+ }, _userContent);
1583
+ }
1584
+
1324
1585
  return null;
1325
1586
  }
1326
1587
  }, {
@@ -1328,19 +1589,33 @@ var JobList = /*#__PURE__*/function (_Component) {
1328
1589
  value: function renderRequests() {
1329
1590
  var _this3 = this;
1330
1591
 
1592
+ var statusTypes = this.props.statusTypes;
1593
+ var defaultStatus = statusTypes.find(function (s) {
1594
+ return s.category === STATUS_NOT_ACTIONED;
1595
+ });
1331
1596
  return this.getSource().map(function (ev, index) {
1332
1597
  if (!ev) {
1333
1598
  return null;
1334
1599
  }
1335
1600
 
1336
- var status = ev.status && StatusTypes[ev.status] ? StatusTypes[ev.status] : StatusTypes['Unassigned'];
1601
+ var status = ev.status && statusTypes.find(function (s) {
1602
+ return s.text === ev.status;
1603
+ }) || defaultStatus;
1604
+ var priority = getJobPriority(ev.priority);
1337
1605
  return /*#__PURE__*/React__default['default'].createElement("tr", {
1338
1606
  key: index
1339
1607
  }, /*#__PURE__*/React__default['default'].createElement("td", null, ev.jobId), /*#__PURE__*/React__default['default'].createElement("td", {
1340
1608
  className: "table-TitleColumn"
1341
1609
  }, /*#__PURE__*/React__default['default'].createElement(reactRouterDom.Link, {
1342
1610
  to: "".concat(values.routeRequestDetails, "/").concat(ev.id)
1343
- }, /*#__PURE__*/React__default['default'].createElement("span", null, ev.title))), /*#__PURE__*/React__default['default'].createElement("td", null, ev.type), /*#__PURE__*/React__default['default'].createElement("td", null, moment__default['default'].utc(ev.createdTime).local().format('D MMM YY')), /*#__PURE__*/React__default['default'].createElement("td", null, ev.room), /*#__PURE__*/React__default['default'].createElement("td", null, ev.Assignee ? /*#__PURE__*/React__default['default'].createElement(Components$6.UserListing, {
1611
+ }, /*#__PURE__*/React__default['default'].createElement("span", null, ev.title))), /*#__PURE__*/React__default['default'].createElement("td", null, ev.type), /*#__PURE__*/React__default['default'].createElement("td", null, moment__default['default'].utc(ev.createdTime).local().format('D MMM YY')), /*#__PURE__*/React__default['default'].createElement("td", null, ev.room), /*#__PURE__*/React__default['default'].createElement("td", null, ev.userName ? /*#__PURE__*/React__default['default'].createElement(Components$7.UserListing, {
1612
+ user: {
1613
+ id: ev.userID,
1614
+ displayName: ev.userName,
1615
+ profilePic: ev.userProfilePic
1616
+ },
1617
+ textClass: "fontSize-13"
1618
+ }) : 'Unknown'), /*#__PURE__*/React__default['default'].createElement("td", null, ev.Assignee ? /*#__PURE__*/React__default['default'].createElement(Components$7.UserListing, {
1344
1619
  user: ev.Assignee,
1345
1620
  textClass: "fontSize-13"
1346
1621
  }) : 'Unassigned'), /*#__PURE__*/React__default['default'].createElement("td", null, /*#__PURE__*/React__default['default'].createElement("div", {
@@ -1351,9 +1626,19 @@ var JobList = /*#__PURE__*/function (_Component) {
1351
1626
  paddingTop: 2,
1352
1627
  paddingBottom: 2,
1353
1628
  color: '#fff',
1354
- backgroundColor: status.color
1629
+ backgroundColor: status ? status.color : undefined
1355
1630
  }
1356
- }, status.text)), /*#__PURE__*/React__default['default'].createElement("td", {
1631
+ }, status ? status.text : '')), /*#__PURE__*/React__default['default'].createElement("td", null, /*#__PURE__*/React__default['default'].createElement("div", {
1632
+ style: {
1633
+ textAlign: 'center',
1634
+ borderRadius: 4,
1635
+ width: 100,
1636
+ paddingTop: 2,
1637
+ paddingBottom: 2,
1638
+ color: '#fff',
1639
+ backgroundColor: priority.color
1640
+ }
1641
+ }, priority.name)), /*#__PURE__*/React__default['default'].createElement("td", {
1357
1642
  className: "table-options"
1358
1643
  }, /*#__PURE__*/React__default['default'].createElement("div", {
1359
1644
  style: {
@@ -1369,7 +1654,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1369
1654
  cursor: 'pointer'
1370
1655
  },
1371
1656
  name: "pencil"
1372
- })), Session$6.validateAccess(_this3.props.auth.site, values.permissionMaintenanceTracking, _this3.props.auth) && /*#__PURE__*/React__default['default'].createElement("a", {
1657
+ })), Session$7.validateAccess(_this3.props.auth.site, values.permissionMaintenanceTracking, _this3.props.auth) && /*#__PURE__*/React__default['default'].createElement("a", {
1373
1658
  onClick: function onClick() {
1374
1659
  return _this3.onRemoveRequest(ev);
1375
1660
  }
@@ -1497,6 +1782,15 @@ var JobList = /*#__PURE__*/function (_Component) {
1497
1782
  _this4.sortByCol('room');
1498
1783
  }
1499
1784
  }, "Address", this.renderSort('room')), /*#__PURE__*/React__default['default'].createElement("th", {
1785
+ className: "".concat(this.sortIsActive('userName')),
1786
+ style: {
1787
+ cursor: 'pointer',
1788
+ width: 150
1789
+ },
1790
+ onClick: function onClick() {
1791
+ _this4.sortByCol('userName');
1792
+ }
1793
+ }, "Submitted By", this.renderSort('userName')), /*#__PURE__*/React__default['default'].createElement("th", {
1500
1794
  className: "".concat(this.sortIsActive('assigned')),
1501
1795
  style: {
1502
1796
  cursor: 'pointer',
@@ -1510,6 +1804,10 @@ var JobList = /*#__PURE__*/function (_Component) {
1510
1804
  width: 120
1511
1805
  }
1512
1806
  }, "Status"), /*#__PURE__*/React__default['default'].createElement("th", {
1807
+ style: {
1808
+ width: 120
1809
+ }
1810
+ }, "Priority"), /*#__PURE__*/React__default['default'].createElement("th", {
1513
1811
  style: {
1514
1812
  width: 50
1515
1813
  }
@@ -1520,37 +1818,51 @@ var JobList = /*#__PURE__*/function (_Component) {
1520
1818
  value: function renderFilters() {
1521
1819
  var _this5 = this;
1522
1820
 
1523
- var typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1821
+ var typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1524
1822
  className: "marginRight-10",
1525
1823
  onClick: function onClick() {
1526
1824
  _this5.openFilter('type');
1527
1825
  },
1528
1826
  text: values.textJobType
1529
1827
  });
1530
- var statusFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1828
+ var statusFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1531
1829
  className: "marginRight-10",
1532
1830
  onClick: function onClick() {
1533
1831
  _this5.openFilter('status');
1534
1832
  },
1535
1833
  text: "Status"
1536
1834
  });
1537
- var timeFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1835
+ var priorityFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1836
+ className: "marginRight-10",
1837
+ onClick: function onClick() {
1838
+ _this5.openFilter('priority');
1839
+ },
1840
+ text: "Priority"
1841
+ });
1842
+ var timeFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1538
1843
  className: "marginRight-10",
1539
1844
  onClick: function onClick() {
1540
1845
  _this5.openFilter('time');
1541
1846
  },
1542
1847
  text: "Time"
1543
1848
  });
1544
- var userFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1849
+ var userFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1545
1850
  className: "marginRight-10",
1546
1851
  onClick: function onClick() {
1547
1852
  _this5.openFilter('user');
1548
1853
  },
1549
1854
  text: "Assigned To"
1550
1855
  });
1856
+ var requesterFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1857
+ className: "marginRight-10",
1858
+ onClick: function onClick() {
1859
+ _this5.openFilter('requester');
1860
+ },
1861
+ text: "Submitted By"
1862
+ });
1551
1863
 
1552
1864
  if (this.state.selectedTypeFilter) {
1553
- typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1865
+ typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1554
1866
  className: "marginRight-10",
1555
1867
  onClick: function onClick() {
1556
1868
  _this5.openFilter('type');
@@ -1565,8 +1877,24 @@ var JobList = /*#__PURE__*/function (_Component) {
1565
1877
  });
1566
1878
  }
1567
1879
 
1880
+ if (this.state.selectedPriorityFilter) {
1881
+ priorityFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1882
+ className: "marginRight-10",
1883
+ onClick: function onClick() {
1884
+ _this5.openFilter('priority');
1885
+ },
1886
+ rightIcon: "close",
1887
+ rightClick: function rightClick(e) {
1888
+ e.stopPropagation();
1889
+
1890
+ _this5.selectPriorityFilter();
1891
+ },
1892
+ text: this.state.selectedPriorityFilter
1893
+ });
1894
+ }
1895
+
1568
1896
  if (this.state.selectedStatusFilter) {
1569
- statusFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1897
+ statusFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1570
1898
  className: "marginRight-10",
1571
1899
  onClick: function onClick() {
1572
1900
  _this5.openFilter('status');
@@ -1577,12 +1905,12 @@ var JobList = /*#__PURE__*/function (_Component) {
1577
1905
 
1578
1906
  _this5.selectStatusFilter();
1579
1907
  },
1580
- text: this.state.selectedStatusFilter === 'incomplete' ? 'All Incomplete' : StatusTypes[this.state.selectedStatusFilter].text
1908
+ text: this.state.selectedStatusFilter
1581
1909
  });
1582
1910
  }
1583
1911
 
1584
1912
  if (this.state.selectedTimeFilterText) {
1585
- timeFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1913
+ timeFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1586
1914
  className: "marginRight-10",
1587
1915
  onClick: function onClick() {
1588
1916
  _this5.openFilter('time');
@@ -1598,7 +1926,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1598
1926
  }
1599
1927
 
1600
1928
  if (this.state.selectedUserFilter) {
1601
- userFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1929
+ userFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1602
1930
  className: "marginRight-10",
1603
1931
  onClick: function onClick() {
1604
1932
  _this5.openFilter('user');
@@ -1613,20 +1941,36 @@ var JobList = /*#__PURE__*/function (_Component) {
1613
1941
  });
1614
1942
  }
1615
1943
 
1944
+ if (this.state.selectedRequesterFilter) {
1945
+ requesterFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1946
+ className: "marginRight-10",
1947
+ onClick: function onClick() {
1948
+ _this5.openFilter('requester');
1949
+ },
1950
+ rightIcon: "close",
1951
+ rightClick: function rightClick(e) {
1952
+ e.stopPropagation();
1953
+
1954
+ _this5.removeRequesterFilter();
1955
+ },
1956
+ text: this.state.selectedRequesterFilterText
1957
+ });
1958
+ }
1959
+
1616
1960
  return /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement("div", {
1617
1961
  className: "marginTop-20 flex flex-between flex-center"
1618
1962
  }, /*#__PURE__*/React__default['default'].createElement("div", {
1619
1963
  className: "flex flex-center"
1620
- }, /*#__PURE__*/React__default['default'].createElement(Components$6.Text, {
1964
+ }, /*#__PURE__*/React__default['default'].createElement(Components$7.Text, {
1621
1965
  type: "h5",
1622
1966
  className: "marginRight-20"
1623
- }, "Filter by"), typeFilter, statusFilter, timeFilter, userFilter), /*#__PURE__*/React__default['default'].createElement(Components$6.Button, {
1967
+ }, "Filter by"), typeFilter, statusFilter, priorityFilter, timeFilter, userFilter, requesterFilter), /*#__PURE__*/React__default['default'].createElement(Components$7.Button, {
1624
1968
  inline: true,
1625
1969
  buttonType: "primaryAction",
1626
1970
  leftIcon: "file-code-o",
1627
1971
  onClick: this.onOpenExportCsv,
1628
1972
  isActive: !___default['default'].isEmpty(this.getSource())
1629
- }, "Export CSV")), /*#__PURE__*/React__default['default'].createElement(Components$6.GenericInput, {
1973
+ }, "Export CSV")), /*#__PURE__*/React__default['default'].createElement(Components$7.GenericInput, {
1630
1974
  id: "search",
1631
1975
  type: "text",
1632
1976
  placeholder: "Search by ".concat(values.textEntityName, " ID, Address or Title"),
@@ -1651,7 +1995,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1651
1995
  columns = _this$getExportSource.columns,
1652
1996
  source = _this$getExportSource.source;
1653
1997
 
1654
- return /*#__PURE__*/React__default['default'].createElement(Components$6.ExportCsvPopup, {
1998
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.ExportCsvPopup, {
1655
1999
  onClose: this.onCloseExportCsv,
1656
2000
  columns: columns,
1657
2001
  source: source,
@@ -1672,30 +2016,32 @@ var JobList = /*#__PURE__*/function (_Component) {
1672
2016
  return JobList;
1673
2017
  }(React.Component);
1674
2018
 
1675
- var mapStateToProps$6 = function mapStateToProps(state) {
2019
+ var mapStateToProps$7 = function mapStateToProps(state) {
1676
2020
  var auth = state.auth;
1677
2021
  return {
1678
2022
  jobs: state[values.reducerKey].jobs,
1679
2023
  auth: auth,
1680
- strings: state.strings && state.strings.config || {}
2024
+ strings: state.strings && state.strings.config || {},
2025
+ statusTypes: state[values.reducerKey].jobstatuses
1681
2026
  };
1682
2027
  };
1683
2028
 
1684
- var JobList$1 = reactRedux.connect(mapStateToProps$6, {
2029
+ var JobList$1 = reactRedux.connect(mapStateToProps$7, {
1685
2030
  jobsLoaded: jobsLoaded,
1686
- removeJob: removeJob
2031
+ removeJob: removeJob,
2032
+ jobStatusesUpdate: jobStatusesUpdate
1687
2033
  })(reactRouter.withRouter(JobList));
1688
2034
 
1689
- function _createSuper$a(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$a(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
2035
+ function _createSuper$b(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$b(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
1690
2036
 
1691
- function _isNativeReflectConstruct$a() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
1692
- var Session$5 = PlussCore__namespace.Session,
1693
- Components$5 = PlussCore__namespace.Components;
2037
+ function _isNativeReflectConstruct$b() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
2038
+ var Session$6 = PlussCore__namespace.Session,
2039
+ Components$6 = PlussCore__namespace.Components;
1694
2040
 
1695
2041
  var JobTypes = /*#__PURE__*/function (_Component) {
1696
2042
  _inherits__default['default'](JobTypes, _Component);
1697
2043
 
1698
- var _super = _createSuper$a(JobTypes);
2044
+ var _super = _createSuper$b(JobTypes);
1699
2045
 
1700
2046
  function JobTypes(props) {
1701
2047
  var _this;
@@ -1821,7 +2167,7 @@ var JobTypes = /*#__PURE__*/function (_Component) {
1821
2167
  key: "componentWillMount",
1822
2168
  value: function componentWillMount() {
1823
2169
  this.updateProps(this.props);
1824
- Session$5.checkLoggedIn(this, this.props.auth);
2170
+ Session$6.checkLoggedIn(this, this.props.auth);
1825
2171
  }
1826
2172
  }, {
1827
2173
  key: "componentDidMount",
@@ -1868,7 +2214,7 @@ var JobTypes = /*#__PURE__*/function (_Component) {
1868
2214
  display: 'flex',
1869
2215
  alignItems: 'center'
1870
2216
  }
1871
- }, Session$5.validateAccess(_this2.props.auth.site, values.permissionMaintenanceTypes, _this2.props.auth) && /*#__PURE__*/React__default['default'].createElement(reactRouterDom.Link, {
2217
+ }, Session$6.validateAccess(_this2.props.auth.site, values.permissionMaintenanceTypes, _this2.props.auth) && /*#__PURE__*/React__default['default'].createElement(reactRouterDom.Link, {
1872
2218
  to: "".concat(values.routeAddRequestType, "/").concat(ev.id)
1873
2219
  }, /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
1874
2220
  style: {
@@ -1878,7 +2224,7 @@ var JobTypes = /*#__PURE__*/function (_Component) {
1878
2224
  cursor: 'pointer'
1879
2225
  },
1880
2226
  name: "pencil"
1881
- })), Session$5.validateAccess(_this2.props.auth.site, values.permissionMaintenanceTypes, _this2.props.auth) && /*#__PURE__*/React__default['default'].createElement("a", {
2227
+ })), Session$6.validateAccess(_this2.props.auth.site, values.permissionMaintenanceTypes, _this2.props.auth) && /*#__PURE__*/React__default['default'].createElement("a", {
1882
2228
  onClick: function onClick() {
1883
2229
  return _this2.onRemoveJobType(ev);
1884
2230
  }
@@ -1965,50 +2311,581 @@ var JobTypes = /*#__PURE__*/function (_Component) {
1965
2311
  maxWidth: 500,
1966
2312
  textAlign: 'center'
1967
2313
  }
1968
- }, values.textEmptyJobTypesExample));
2314
+ }, values.textEmptyJobTypesExample));
2315
+ }
2316
+ }, {
2317
+ key: "renderContent",
2318
+ value: function renderContent() {
2319
+ if (___default['default'].isEmpty(this.state.jobList)) return this.renderEmpty();
2320
+ return this.renderView();
2321
+ }
2322
+ }, {
2323
+ key: "renderJobTypes",
2324
+ value: function renderJobTypes() {
2325
+ var _this$state = this.state,
2326
+ jobList = _this$state.jobList,
2327
+ loading = _this$state.loading;
2328
+
2329
+ if (jobList.length === 0 && loading) {
2330
+ return /*#__PURE__*/React__default['default'].createElement("div", {
2331
+ style: {
2332
+ minWidth: '100%'
2333
+ }
2334
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
2335
+ className: "padding-60 paddingVertical-40",
2336
+ style: {
2337
+ textAlign: 'center'
2338
+ }
2339
+ }, /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
2340
+ style: {
2341
+ fontSize: 30,
2342
+ color: FeatureConfig.env.colourBrandingOff
2343
+ },
2344
+ name: "spinner fa-pulse fa-fw"
2345
+ })));
2346
+ }
2347
+
2348
+ return /*#__PURE__*/React__default['default'].createElement("div", {
2349
+ style: {
2350
+ minWidth: '100%'
2351
+ }
2352
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
2353
+ className: "marginBottom-32"
2354
+ }, /*#__PURE__*/React__default['default'].createElement(Components$6.AddButton, {
2355
+ onClick: this.props.onNew,
2356
+ text: values.textNewTypeButton
2357
+ })), this.renderContent());
2358
+ }
2359
+ }, {
2360
+ key: "render",
2361
+ value: function render() {
2362
+ return /*#__PURE__*/React__default['default'].createElement("div", {
2363
+ style: {
2364
+ minWidth: '100%'
2365
+ }
2366
+ }, /*#__PURE__*/React__default['default'].createElement("div", null, this.renderJobTypes()), /*#__PURE__*/React__default['default'].createElement("div", {
2367
+ className: "hub_tidioPadding"
2368
+ }));
2369
+ }
2370
+ }]);
2371
+
2372
+ return JobTypes;
2373
+ }(React.Component);
2374
+
2375
+ var mapStateToProps$6 = function mapStateToProps(state) {
2376
+ var auth = state.auth;
2377
+ return {
2378
+ jobtypes: state[values.reducerKey].jobtypes,
2379
+ auth: auth
2380
+ };
2381
+ };
2382
+
2383
+ var JobTypes$1 = reactRedux.connect(mapStateToProps$6, {
2384
+ jobTypesLoaded: jobTypesLoaded,
2385
+ jobTypesUpdate: jobTypesUpdate
2386
+ })(reactRouter.withRouter(JobTypes));
2387
+
2388
+ function ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
2389
+
2390
+ function _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$5(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
2391
+
2392
+ function _createSuper$a(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$a(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
2393
+
2394
+ function _isNativeReflectConstruct$a() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
2395
+ var Session$5 = PlussCore__namespace.Session,
2396
+ Components$5 = PlussCore__namespace.Components,
2397
+ Colours$2 = PlussCore__namespace.Colours;
2398
+
2399
+ var Configuration = /*#__PURE__*/function (_Component) {
2400
+ _inherits__default['default'](Configuration, _Component);
2401
+
2402
+ var _super = _createSuper$a(Configuration);
2403
+
2404
+ function Configuration(props) {
2405
+ var _this;
2406
+
2407
+ _classCallCheck__default['default'](this, Configuration);
2408
+
2409
+ _this = _super.call(this, props);
2410
+
2411
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "isStatusValid", function (statusLabel, statusCategory, statusColour) {
2412
+ if (___default['default'].isEmpty(statusLabel)) return false;
2413
+ if (___default['default'].isEmpty(statusCategory)) return false;
2414
+ if (___default['default'].isEmpty(statusColour)) return false;
2415
+ return true;
2416
+ });
2417
+
2418
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onMoveStatus", function (index) {
2419
+ var up = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
2420
+ if (_this.state.fetchingStatusTypes) return;
2421
+
2422
+ var statusTypes = ___default['default'].cloneDeep(_this.state.statusTypes);
2423
+
2424
+ if (up && index > 0) {
2425
+ // Moving up
2426
+ var _ref = [statusTypes[index], statusTypes[index - 1]];
2427
+ statusTypes[index - 1] = _ref[0];
2428
+ statusTypes[index] = _ref[1];
2429
+ } else if (index < statusTypes.length - 1) {
2430
+ // Moving down
2431
+ var _ref2 = [statusTypes[index + 1], statusTypes[index]];
2432
+ statusTypes[index] = _ref2[0];
2433
+ statusTypes[index + 1] = _ref2[1];
2434
+ } // Reset order
2435
+
2436
+
2437
+ statusTypes.forEach(function (status, index) {
2438
+ return status.order = index;
2439
+ });
2440
+
2441
+ _this.setState({
2442
+ statusTypes: statusTypes
2443
+ });
2444
+ });
2445
+
2446
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onEditStatus", function (index) {
2447
+ if (_this.state.fetchingStatusTypes) return;
2448
+ var status = _this.state.statusTypes[index];
2449
+
2450
+ _this.setState({
2451
+ showWarnings: false,
2452
+ showStatusPopup: true,
2453
+ selectedStatusIndex: index,
2454
+ statusLabel: status.text,
2455
+ statusCategory: status.category,
2456
+ statusColour: status.color
2457
+ });
2458
+ });
2459
+
2460
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onDeleteStatus", function (index) {
2461
+ if (_this.state.fetchingStatusTypes) return;
2462
+
2463
+ var statusTypes = ___default['default'].cloneDeep(_this.state.statusTypes);
2464
+
2465
+ statusTypes.splice(index, 1);
2466
+
2467
+ _this.setState({
2468
+ statusTypes: statusTypes
2469
+ });
2470
+ });
2471
+
2472
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onAddStatus", function () {
2473
+ var defaultStatus = _this.props.statusTypes.find(function (s) {
2474
+ return s.category === STATUS_NOT_ACTIONED;
2475
+ });
2476
+
2477
+ _this.setState({
2478
+ showWarnings: false,
2479
+ showStatusPopup: true,
2480
+ selectedStatusIndex: -1,
2481
+ statusLabel: '',
2482
+ statusCategory: STATUS_NOT_ACTIONED,
2483
+ statusColour: defaultStatus.color
2484
+ });
2485
+ });
2486
+
2487
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onSaveStatus", function () {
2488
+ var _this$state = _this.state,
2489
+ selectedStatusIndex = _this$state.selectedStatusIndex,
2490
+ statusLabel = _this$state.statusLabel,
2491
+ statusCategory = _this$state.statusCategory,
2492
+ statusColour = _this$state.statusColour;
2493
+
2494
+ var statusTypes = ___default['default'].cloneDeep(_this.state.statusTypes);
2495
+
2496
+ if (selectedStatusIndex < 0) {
2497
+ statusTypes.push({
2498
+ text: statusLabel,
2499
+ order: statusTypes.length,
2500
+ color: statusColour,
2501
+ category: statusCategory
2502
+ });
2503
+ } else {
2504
+ var status = statusTypes[selectedStatusIndex];
2505
+ status.text = statusLabel;
2506
+ status.color = statusColour;
2507
+ status.category = statusCategory;
2508
+ }
2509
+
2510
+ _this.setState({
2511
+ statusTypes: statusTypes,
2512
+ showStatusPopup: false
2513
+ });
2514
+ });
2515
+
2516
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onHideStatusPopup", function () {
2517
+ if (_this.state.submitting) return;
2518
+
2519
+ _this.setState({
2520
+ showStatusPopup: false
2521
+ });
2522
+ });
2523
+
2524
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onHandleChange", function (event) {
2525
+ var stateChange = {};
2526
+ stateChange[event.target.getAttribute('id')] = event.target.value;
2527
+
2528
+ _this.setState(stateChange);
2529
+ });
2530
+
2531
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onToggleDisableSeen", function () {
2532
+ if (_this.state.fetchingHideSeen) return;
2533
+
2534
+ _this.setState({
2535
+ hideSeen: !_this.state.hideSeen
2536
+ });
2537
+ });
2538
+
2539
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onSaveConfig", function () {
2540
+ if (!_this.validateForm()) return;
2541
+
2542
+ _this.setState({
2543
+ success: false,
2544
+ submitting: true
2545
+ }, /*#__PURE__*/_asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
2546
+ var _this$state2, statusTypes, hideSeen;
2547
+
2548
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
2549
+ while (1) {
2550
+ switch (_context.prev = _context.next) {
2551
+ case 0:
2552
+ _context.prev = 0;
2553
+ _this$state2 = _this.state, statusTypes = _this$state2.statusTypes, hideSeen = _this$state2.hideSeen;
2554
+ _context.next = 4;
2555
+ return stringActions.setString(_this.props.auth.site, values.stringConfigJobStatus, statusTypes);
2556
+
2557
+ case 4:
2558
+ _context.next = 6;
2559
+ return stringActions.setString(_this.props.auth.site, values.stringConfigHideSeen, hideSeen);
2560
+
2561
+ case 6:
2562
+ _this.props.jobStatusesLoaded(statusTypes);
2563
+
2564
+ _this.props.jobHideSeenLoaded(hideSeen);
2565
+
2566
+ _this.setState({
2567
+ success: true
2568
+ });
2569
+
2570
+ _context.next = 15;
2571
+ break;
2572
+
2573
+ case 11:
2574
+ _context.prev = 11;
2575
+ _context.t0 = _context["catch"](0);
2576
+ console.log('onSaveConfig - error', _context.t0);
2577
+
2578
+ _this.setState({
2579
+ success: false
2580
+ });
2581
+
2582
+ case 15:
2583
+ _context.prev = 15;
2584
+
2585
+ _this.setState({
2586
+ submitting: false
2587
+ });
2588
+
2589
+ return _context.finish(15);
2590
+
2591
+ case 18:
2592
+ case "end":
2593
+ return _context.stop();
2594
+ }
2595
+ }
2596
+ }, _callee, null, [[0, 11, 15, 18]]);
2597
+ })));
2598
+ });
2599
+
2600
+ _this.state = {
2601
+ success: false,
2602
+ submitting: false,
2603
+ selectedStatusIndex: -1,
2604
+ showStatusPopup: false,
2605
+ statusLabel: '',
2606
+ statusCategory: STATUS_NOT_ACTIONED,
2607
+ statusColour: '',
2608
+ fetchingStatusTypes: true,
2609
+ statusTypes: _this.props.statusTypes,
2610
+ fetchingHideSeen: true,
2611
+ hideSeen: _this.props.hideSeen
2612
+ };
2613
+ return _this;
2614
+ }
2615
+
2616
+ _createClass__default['default'](Configuration, [{
2617
+ key: "UNSAFE_componentWillMount",
2618
+ value: function UNSAFE_componentWillMount() {
2619
+ Session$5.checkLoggedIn(this);
2620
+ }
2621
+ }, {
2622
+ key: "componentDidMount",
2623
+ value: function componentDidMount() {
2624
+ var _this2 = this;
2625
+
2626
+ if (!Session$5.validateAccess(this.props.auth.site, 'featurePicker', this.props.auth, true)) {
2627
+ this.props.history.push('/mastermenu');
2628
+ } else {
2629
+ this.props.jobStatusesUpdate(this.props.auth.site, function (statusTypes) {
2630
+ return _this2.setState({
2631
+ statusTypes: statusTypes,
2632
+ fetchingStatusTypes: false
2633
+ });
2634
+ });
2635
+ this.props.jobHideSeenUpdate(this.props.auth.site, function (hideSeen) {
2636
+ return _this2.setState({
2637
+ hideSeen: hideSeen,
2638
+ fetchingHideSeen: false
2639
+ });
2640
+ });
2641
+ }
2642
+ }
2643
+ }, {
2644
+ key: "validateForm",
2645
+ value: function validateForm() {
2646
+ var _this3 = this;
2647
+
2648
+ var _this$state3 = this.state,
2649
+ submitting = _this$state3.submitting,
2650
+ statusTypes = _this$state3.statusTypes;
2651
+ if (submitting) return false; // Validate statuses
2652
+
2653
+ var statusesValid = statusTypes.map(function (status) {
2654
+ var text = status.text,
2655
+ category = status.category,
2656
+ color = status.color;
2657
+ return _this3.isStatusValid(text, category, color);
2658
+ });
2659
+ if (!statusesValid.every(function (valid) {
2660
+ return valid;
2661
+ })) return false;
2662
+ return true;
2663
+ }
2664
+ }, {
2665
+ key: "renderStatuses",
2666
+ value: function renderStatuses() {
2667
+ var _this4 = this;
2668
+
2669
+ var statusTypes = this.state.statusTypes;
2670
+ return /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement("p", {
2671
+ className: "fontMedium fontSize-36 text-dark"
2672
+ }, "Statuses"), /*#__PURE__*/React__default['default'].createElement("div", {
2673
+ style: styles$6.statusCategoryHeading
2674
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
2675
+ className: "fontMedium fontSize-16 text-bold"
2676
+ }, "Status Category")), statusTypes.map(function (status, index) {
2677
+ return /*#__PURE__*/React__default['default'].createElement("div", {
2678
+ key: "".concat(status.text, "_").concat(index),
2679
+ style: styles$6.statusTypeContainer
2680
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
2681
+ key: status.text,
2682
+ className: "statusLabel",
2683
+ style: _objectSpread$5(_objectSpread$5({}, styles$6.statusTextContainer), {}, {
2684
+ backgroundColor: status.color
2685
+ })
2686
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
2687
+ className: "statusLabel_text"
2688
+ }, status.text)), /*#__PURE__*/React__default['default'].createElement("div", {
2689
+ style: styles$6.statusCategoryContainer
2690
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
2691
+ className: "fontMedium fontSize-16 text-dark"
2692
+ }, status.category)), /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
2693
+ style: _objectSpread$5(_objectSpread$5({}, styles$6.statusIcon), {}, {
2694
+ visibility: index === 0 ? 'hidden' : 'visible'
2695
+ }),
2696
+ name: 'arrow-up',
2697
+ onClick: function onClick() {
2698
+ return _this4.onMoveStatus(index, true);
2699
+ }
2700
+ }), /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
2701
+ style: _objectSpread$5(_objectSpread$5({}, styles$6.statusIcon), {}, {
2702
+ visibility: index === statusTypes.length - 1 ? 'hidden' : 'visible'
2703
+ }),
2704
+ name: 'arrow-down',
2705
+ onClick: function onClick() {
2706
+ return _this4.onMoveStatus(index, false);
2707
+ }
2708
+ }), /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
2709
+ style: _objectSpread$5({}, styles$6.statusIcon),
2710
+ name: "pencil",
2711
+ onClick: function onClick() {
2712
+ return _this4.onEditStatus(index);
2713
+ }
2714
+ }), /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
2715
+ style: _objectSpread$5({}, styles$6.statusIcon),
2716
+ name: "minus-circle",
2717
+ onClick: function onClick() {
2718
+ return _this4.onDeleteStatus(index);
2719
+ }
2720
+ }));
2721
+ }), /*#__PURE__*/React__default['default'].createElement("div", {
2722
+ onClick: this.onAddStatus,
2723
+ style: {
2724
+ display: 'flex',
2725
+ flexDirection: 'row',
2726
+ alignItems: 'center',
2727
+ marginTop: 16
2728
+ }
2729
+ }, /*#__PURE__*/React__default['default'].createElement(Components$5.P60Icon, {
2730
+ className: "addoption_plus",
2731
+ icon: "add",
2732
+ style: {
2733
+ fontSize: 12
2734
+ }
2735
+ }), /*#__PURE__*/React__default['default'].createElement("p", {
2736
+ className: "addoption_text"
2737
+ }, "Add another status")));
1969
2738
  }
1970
2739
  }, {
1971
- key: "renderContent",
1972
- value: function renderContent() {
1973
- if (___default['default'].isEmpty(this.state.jobList)) return this.renderEmpty();
1974
- return this.renderView();
2740
+ key: "renderOtherOptions",
2741
+ value: function renderOtherOptions() {
2742
+ return /*#__PURE__*/React__default['default'].createElement("div", {
2743
+ className: "marginTop-55"
2744
+ }, /*#__PURE__*/React__default['default'].createElement("p", {
2745
+ className: "fontMedium fontSize-36 text-dark"
2746
+ }, "Other options"), /*#__PURE__*/React__default['default'].createElement(Components$5.CheckBox, {
2747
+ label: "Disable whether a request has been \"Seen\" and prevent that from being surfaced to the App user",
2748
+ isActive: this.state.hideSeen,
2749
+ onChange: this.onToggleDisableSeen
2750
+ }));
1975
2751
  }
1976
2752
  }, {
1977
- key: "renderJobTypes",
1978
- value: function renderJobTypes() {
1979
- var _this$state = this.state,
1980
- jobList = _this$state.jobList,
1981
- loading = _this$state.loading;
2753
+ key: "renderSubmit",
2754
+ value: function renderSubmit() {
2755
+ if (this.state.submitting) {
2756
+ return /*#__PURE__*/React__default['default'].createElement(Components$5.Button, {
2757
+ buttonType: "secondary"
2758
+ }, "Saving...");
2759
+ }
1982
2760
 
1983
- if (jobList.length === 0 && loading) {
1984
- return /*#__PURE__*/React__default['default'].createElement("div", {
1985
- style: {
1986
- minWidth: '100%'
1987
- }
2761
+ return /*#__PURE__*/React__default['default'].createElement(Components$5.Button, {
2762
+ inline: true,
2763
+ buttonType: "primary",
2764
+ onClick: this.onSaveConfig,
2765
+ isActive: this.validateForm()
2766
+ }, "Save");
2767
+ }
2768
+ }, {
2769
+ key: "renderSuccess",
2770
+ value: function renderSuccess() {
2771
+ if (!this.state.success) return null;
2772
+ return /*#__PURE__*/React__default['default'].createElement("span", {
2773
+ style: _objectSpread$5(_objectSpread$5({}, styles$6.savedText), {}, {
2774
+ color: Colours$2.COLOUR_GREEN
2775
+ })
2776
+ }, "Saved");
2777
+ }
2778
+ }, {
2779
+ key: "renderNewStatusPopup",
2780
+ value: function renderNewStatusPopup() {
2781
+ var _ref4,
2782
+ _this5 = this;
2783
+
2784
+ var _this$state4 = this.state,
2785
+ submitting = _this$state4.submitting,
2786
+ showStatusPopup = _this$state4.showStatusPopup,
2787
+ showWarnings = _this$state4.showWarnings,
2788
+ selectedStatusIndex = _this$state4.selectedStatusIndex,
2789
+ statusLabel = _this$state4.statusLabel,
2790
+ statusCategory = _this$state4.statusCategory,
2791
+ statusColour = _this$state4.statusColour;
2792
+ if (!showStatusPopup) return null;
2793
+ var canSave = !submitting && this.isStatusValid(statusLabel, statusCategory, statusColour);
2794
+ return /*#__PURE__*/React__default['default'].createElement(Components$5.Popup, {
2795
+ maxWidth: 800,
2796
+ minWidth: 450,
2797
+ hasPadding: true,
2798
+ buttons: [(_ref4 = {
2799
+ type: 'primaryAction',
2800
+ onClick: this.onSaveStatus,
2801
+ isActive: canSave
2802
+ }, _defineProperty__default['default'](_ref4, "isActive", true), _defineProperty__default['default'](_ref4, "text", submitting ? 'Saving...' : 'Save'), _defineProperty__default['default'](_ref4, "className", 'popupButton'), _ref4), {
2803
+ type: 'outlinedAction',
2804
+ onClick: this.onHideStatusPopup,
2805
+ isActive: !submitting,
2806
+ text: 'Cancel',
2807
+ className: 'popupButton'
2808
+ }],
2809
+ onClose: this.onHideStatusPopup,
2810
+ title: selectedStatusIndex < 0 ? 'New Status' : 'Edit Status'
2811
+ }, /*#__PURE__*/React__default['default'].createElement(Components$5.GenericInput, {
2812
+ id: "statusLabel",
2813
+ type: "text",
2814
+ label: "Label",
2815
+ placeholder: "Status label",
2816
+ value: statusLabel,
2817
+ onChange: this.onHandleChange,
2818
+ isRequired: true,
2819
+ isValid: function isValid() {
2820
+ return !___default['default'].isEmpty(statusLabel);
2821
+ },
2822
+ showError: function showError() {
2823
+ return showWarnings && ___default['default'].isEmpty(statusLabel);
2824
+ },
2825
+ alwaysShowLabel: true,
2826
+ className: "marginBottom-20"
2827
+ }), /*#__PURE__*/React__default['default'].createElement(Components$5.RadioButton, {
2828
+ label: "Status Category",
2829
+ subLabel: /*#__PURE__*/React__default['default'].createElement("div", {
2830
+ className: "marginBottom-16"
1988
2831
  }, /*#__PURE__*/React__default['default'].createElement("div", {
1989
- className: "padding-60 paddingVertical-40",
1990
- style: {
1991
- textAlign: 'center'
2832
+ className: "marginBottom-4"
2833
+ }, 'This is used to categorise statuses for filtering and analytics purposes'), /*#__PURE__*/React__default['default'].createElement("div", {
2834
+ className: "text-bold"
2835
+ }, 'This status is considered')),
2836
+ className: "marginBottom-20",
2837
+ rowStyle: {
2838
+ flexDirection: 'column'
2839
+ },
2840
+ buttonStyle: {
2841
+ marginBottom: 8
2842
+ },
2843
+ isActive: statusCategory || null,
2844
+ options: [{
2845
+ Label: STATUS_NOT_ACTIONED,
2846
+ Value: STATUS_NOT_ACTIONED,
2847
+ onChange: function onChange() {
2848
+ return _this5.setState({
2849
+ statusCategory: STATUS_NOT_ACTIONED
2850
+ });
1992
2851
  }
1993
- }, /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
1994
- style: {
1995
- fontSize: 30,
1996
- color: FeatureConfig.env.colourBrandingOff
1997
- },
1998
- name: "spinner fa-pulse fa-fw"
1999
- })));
2000
- }
2001
-
2002
- return /*#__PURE__*/React__default['default'].createElement("div", {
2003
- style: {
2004
- minWidth: '100%'
2852
+ }, {
2853
+ Label: STATUS_IN_PROGRESS,
2854
+ Value: STATUS_IN_PROGRESS,
2855
+ onChange: function onChange() {
2856
+ return _this5.setState({
2857
+ statusCategory: STATUS_IN_PROGRESS
2858
+ });
2859
+ }
2860
+ }, {
2861
+ Label: STATUS_COMPLETED,
2862
+ Value: STATUS_COMPLETED,
2863
+ onChange: function onChange() {
2864
+ return _this5.setState({
2865
+ statusCategory: STATUS_COMPLETED
2866
+ });
2867
+ }
2868
+ }]
2869
+ }), /*#__PURE__*/React__default['default'].createElement(Components$5.ColourOptions, {
2870
+ options: ['vibrant', 'picker'],
2871
+ defaultTab: "vibrant",
2872
+ value: statusColour,
2873
+ onColourSelected: function onColourSelected(statusColour) {
2874
+ return _this5.setState({
2875
+ statusColour: statusColour
2876
+ });
2005
2877
  }
2878
+ }), /*#__PURE__*/React__default['default'].createElement("div", {
2879
+ className: "marginTop-24"
2006
2880
  }, /*#__PURE__*/React__default['default'].createElement("div", {
2007
- className: "marginBottom-32"
2008
- }, /*#__PURE__*/React__default['default'].createElement(Components$5.AddButton, {
2009
- onClick: this.props.onNew,
2010
- text: values.textNewTypeButton
2011
- })), this.renderContent());
2881
+ className: "fieldLabel marginBottom-4"
2882
+ }, "Preview"), /*#__PURE__*/React__default['default'].createElement(Components$5.Tag, {
2883
+ text: this.state.statusLabel,
2884
+ style: {
2885
+ backgroundColor: statusColour,
2886
+ borderColor: statusColour
2887
+ }
2888
+ })));
2012
2889
  }
2013
2890
  }, {
2014
2891
  key: "render",
@@ -2017,27 +2894,68 @@ var JobTypes = /*#__PURE__*/function (_Component) {
2017
2894
  style: {
2018
2895
  minWidth: '100%'
2019
2896
  }
2020
- }, /*#__PURE__*/React__default['default'].createElement("div", null, this.renderJobTypes()), /*#__PURE__*/React__default['default'].createElement("div", {
2021
- className: "hub_tidioPadding"
2022
- }));
2897
+ }, this.renderStatuses(), this.renderOtherOptions(), /*#__PURE__*/React__default['default'].createElement("div", {
2898
+ style: {
2899
+ paddingTop: 24,
2900
+ paddingBottom: 24
2901
+ }
2902
+ }, this.renderSubmit(), this.renderSuccess()), this.renderNewStatusPopup());
2023
2903
  }
2024
2904
  }]);
2025
2905
 
2026
- return JobTypes;
2906
+ return Configuration;
2027
2907
  }(React.Component);
2028
2908
 
2909
+ var styles$6 = {
2910
+ statusCategoryHeading: {
2911
+ marginLeft: 130,
2912
+ width: 160,
2913
+ textAlign: 'center',
2914
+ marginBottom: 12
2915
+ },
2916
+ statusTypeContainer: {
2917
+ display: 'flex',
2918
+ flexDirection: 'row',
2919
+ alignItems: 'center',
2920
+ marginBottom: 20
2921
+ },
2922
+ statusTextContainer: {
2923
+ width: 130
2924
+ },
2925
+ statusCategoryContainer: {
2926
+ width: 160,
2927
+ textAlign: 'center'
2928
+ },
2929
+ statusIcon: {
2930
+ cursor: 'pointer',
2931
+ fontSize: 20,
2932
+ padding: 5,
2933
+ marginLeft: 10,
2934
+ color: Colours$2.COLOUR_BRANDING_ACTION,
2935
+ visibility: 'visible'
2936
+ },
2937
+ savedText: {
2938
+ fontSize: 14,
2939
+ lineHeight: '33px',
2940
+ marginLeft: 15
2941
+ }
2942
+ };
2943
+
2029
2944
  var mapStateToProps$5 = function mapStateToProps(state) {
2030
2945
  var auth = state.auth;
2031
2946
  return {
2032
- jobtypes: state[values.reducerKey].jobtypes,
2033
- auth: auth
2947
+ auth: auth,
2948
+ statusTypes: state[values.reducerKey].jobstatuses,
2949
+ hideSeen: state[values.reducerKey].hideSeen
2034
2950
  };
2035
2951
  };
2036
2952
 
2037
- var JobTypes$1 = reactRedux.connect(mapStateToProps$5, {
2038
- jobTypesLoaded: jobTypesLoaded,
2039
- jobTypesUpdate: jobTypesUpdate
2040
- })(reactRouter.withRouter(JobTypes));
2953
+ var Configuration$1 = reactRedux.connect(mapStateToProps$5, {
2954
+ jobStatusesUpdate: jobStatusesUpdate,
2955
+ jobStatusesLoaded: jobStatusesLoaded,
2956
+ jobHideSeenUpdate: jobHideSeenUpdate,
2957
+ jobHideSeenLoaded: jobHideSeenLoaded
2958
+ })(reactRouter.withRouter(Configuration));
2041
2959
 
2042
2960
  function _createSuper$9(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$9(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }
2043
2961
 
@@ -2247,6 +3165,21 @@ var RequestsHub = /*#__PURE__*/function (_Component) {
2247
3165
  });
2248
3166
  }
2249
3167
 
3168
+ if (Session$4.validateAccess(this.props.auth.site, 'featurePicker', this.props.auth)) {
3169
+ sectionItems.push({
3170
+ type: 'navItem',
3171
+ text: 'Feature Configuration',
3172
+ icon: 'settings',
3173
+ isFontAwesome: false,
3174
+ selected: this.state.selectedSection === 'config',
3175
+ onClick: function onClick() {
3176
+ _this2.setState({
3177
+ selectedSection: 'config'
3178
+ });
3179
+ }
3180
+ });
3181
+ }
3182
+
2250
3183
  var helpGuide = null;
2251
3184
  return /*#__PURE__*/React__default['default'].createElement(Components$4.HubSidebar, {
2252
3185
  sections: [{
@@ -2263,6 +3196,8 @@ var RequestsHub = /*#__PURE__*/function (_Component) {
2263
3196
  return /*#__PURE__*/React__default['default'].createElement(JobTypes$1, {
2264
3197
  onNew: this.onAddRequestType
2265
3198
  });
3199
+ } else if (this.state.selectedSection === 'config') {
3200
+ return /*#__PURE__*/React__default['default'].createElement(Configuration$1, null);
2266
3201
  }
2267
3202
 
2268
3203
  return /*#__PURE__*/React__default['default'].createElement(JobList$1, {
@@ -2334,6 +3269,7 @@ var Apis = PlussCore__namespace.Apis,
2334
3269
  Session$3 = PlussCore__namespace.Session,
2335
3270
  Colours$1 = PlussCore__namespace.Colours,
2336
3271
  Components$3 = PlussCore__namespace.Components;
3272
+ var IMAGE_SIZE_NOTE = 72;
2337
3273
 
2338
3274
  var Job = /*#__PURE__*/function (_Component) {
2339
3275
  _inherits__default['default'](Job, _Component);
@@ -2418,13 +3354,20 @@ var Job = /*#__PURE__*/function (_Component) {
2418
3354
  })));
2419
3355
 
2420
3356
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "getStatusType", function (status) {
2421
- var statusType = StatusTypes[status] || Object.values(StatusTypes).find(function (s) {
3357
+ var statusTypes = _this.props.statusTypes;
3358
+ var statusType = statusTypes.find(function (s) {
2422
3359
  return s.text === status;
2423
3360
  });
2424
- if (!statusType) statusType = {
2425
- text: status,
2426
- color: '#aaa'
2427
- };
3361
+
3362
+ if (!statusType) {
3363
+ var defaultStatus = statusTypes.find(function (s) {
3364
+ return s.category === STATUS_NOT_ACTIONED;
3365
+ });
3366
+ statusType = _objectSpread$4(_objectSpread$4({}, defaultStatus), {}, {
3367
+ text: status
3368
+ });
3369
+ }
3370
+
2428
3371
  return statusType;
2429
3372
  });
2430
3373
 
@@ -2467,11 +3410,12 @@ var Job = /*#__PURE__*/function (_Component) {
2467
3410
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "isReadyToSaveNote", function () {
2468
3411
  var _this$state = _this.state,
2469
3412
  noteAttachments = _this$state.noteAttachments,
2470
- noteInput = _this$state.noteInput;
3413
+ noteInput = _this$state.noteInput,
3414
+ noteImages = _this$state.noteImages;
2471
3415
  if (___default['default'].some(noteAttachments, function (n) {
2472
3416
  return n.Uploading;
2473
3417
  })) return false;
2474
- return !___default['default'].isEmpty(noteInput) || !___default['default'].isEmpty(noteAttachments);
3418
+ return !___default['default'].isEmpty(noteInput) || !___default['default'].isEmpty(noteAttachments) || !___default['default'].isEmpty(noteImages);
2475
3419
  });
2476
3420
 
2477
3421
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onOpenAddNote", function () {
@@ -2490,6 +3434,7 @@ var Job = /*#__PURE__*/function (_Component) {
2490
3434
  if (!!_this.state.editingNote) {
2491
3435
  newState.noteInput = '';
2492
3436
  newState.noteAttachments = [];
3437
+ newState.noteImages = [];
2493
3438
  }
2494
3439
 
2495
3440
  _this.setState(newState);
@@ -2677,12 +3622,12 @@ var Job = /*#__PURE__*/function (_Component) {
2677
3622
  Title: a.Title,
2678
3623
  Source: a.Source
2679
3624
  };
2680
- })) : maintenanceActions.addNote(_this.state.jobId, _this.state.noteInput, _this.state.noteAttachments.map(function (a) {
3625
+ }), _this.state.noteImages) : maintenanceActions.addNote(_this.state.jobId, _this.state.noteInput, _this.state.noteAttachments.map(function (a) {
2681
3626
  return {
2682
3627
  Title: a.Title,
2683
3628
  Source: a.Source
2684
3629
  };
2685
- }));
3630
+ }), _this.state.noteImages);
2686
3631
 
2687
3632
  case 6:
2688
3633
  res = _context5.sent;
@@ -2693,6 +3638,7 @@ var Job = /*#__PURE__*/function (_Component) {
2693
3638
  addNoteOpen: false,
2694
3639
  noteInput: '',
2695
3640
  noteAttachments: [],
3641
+ noteImages: [],
2696
3642
  editingNote: null
2697
3643
  }, function () {
2698
3644
  _this.props.jobsLoaded([_this.state.job]);
@@ -2742,11 +3688,12 @@ var Job = /*#__PURE__*/function (_Component) {
2742
3688
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onOpenEditNote", function (n) {
2743
3689
  _this.setState({
2744
3690
  noteAttachments: n.Attachments || [],
3691
+ noteImages: n.Images || [],
2745
3692
  noteInput: n.Note || '',
2746
3693
  addNoteOpen: true,
2747
3694
  editingNote: n.Id,
2748
3695
  noteMenuOpen: null
2749
- });
3696
+ }, _this.checkSetImage);
2750
3697
  });
2751
3698
 
2752
3699
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "markSeen", function () {
@@ -2852,53 +3799,54 @@ var Job = /*#__PURE__*/function (_Component) {
2852
3799
  _this.setState(stateChange);
2853
3800
  });
2854
3801
 
2855
- _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onToggleStatusChanger", function () {
3802
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onTogglePriorityChanger", function () {
2856
3803
  _this.setState({
2857
- statusChangerOpen: !_this.state.statusChangerOpen
3804
+ priorityChangerOpen: !_this.state.priorityChangerOpen
2858
3805
  });
2859
3806
  });
2860
3807
 
2861
- _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onSelectStatus", /*#__PURE__*/function () {
2862
- var _ref8 = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee8(status) {
2863
- var res;
3808
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onSelectPriority", /*#__PURE__*/function () {
3809
+ var _ref8 = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee8(priority) {
3810
+ var res, job;
2864
3811
  return _regeneratorRuntime__default['default'].wrap(function _callee8$(_context8) {
2865
3812
  while (1) {
2866
3813
  switch (_context8.prev = _context8.next) {
2867
3814
  case 0:
2868
3815
  _this.setState({
2869
3816
  job: _objectSpread$4(_objectSpread$4({}, _this.state.job), {}, {
2870
- status: status
3817
+ priority: priority
2871
3818
  }),
2872
- statusChangerOpen: false
3819
+ priorityChangerOpen: false
2873
3820
  });
2874
3821
 
2875
3822
  _context8.prev = 1;
2876
3823
  _context8.next = 4;
2877
- return maintenanceActions.editJobStatus(_this.state.job.id, status);
3824
+ return maintenanceActions.editJobPriority(_this.state.job.id, priority);
2878
3825
 
2879
3826
  case 4:
2880
3827
  res = _context8.sent;
3828
+ job = res.data.job;
3829
+
3830
+ _this.props.jobsLoaded([job]);
2881
3831
 
2882
3832
  _this.setState({
2883
- job: res.data.job
2884
- }, function () {
2885
- _this.props.jobsLoaded([_this.state.job]);
3833
+ job: job
2886
3834
  });
2887
3835
 
2888
- _context8.next = 11;
3836
+ _context8.next = 13;
2889
3837
  break;
2890
3838
 
2891
- case 8:
2892
- _context8.prev = 8;
3839
+ case 10:
3840
+ _context8.prev = 10;
2893
3841
  _context8.t0 = _context8["catch"](1);
2894
- console.error('onSelectStatus', _context8.t0);
3842
+ console.error('onSelectPriority', _context8.t0);
2895
3843
 
2896
- case 11:
3844
+ case 13:
2897
3845
  case "end":
2898
3846
  return _context8.stop();
2899
3847
  }
2900
3848
  }
2901
- }, _callee8, null, [[1, 8]]);
3849
+ }, _callee8, null, [[1, 10]]);
2902
3850
  }));
2903
3851
 
2904
3852
  return function (_x2) {
@@ -2906,6 +3854,61 @@ var Job = /*#__PURE__*/function (_Component) {
2906
3854
  };
2907
3855
  }());
2908
3856
 
3857
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onToggleStatusChanger", function () {
3858
+ _this.setState({
3859
+ statusChangerOpen: !_this.state.statusChangerOpen
3860
+ });
3861
+ });
3862
+
3863
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onSelectStatus", /*#__PURE__*/function () {
3864
+ var _ref9 = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee9(status) {
3865
+ var res, job;
3866
+ return _regeneratorRuntime__default['default'].wrap(function _callee9$(_context9) {
3867
+ while (1) {
3868
+ switch (_context9.prev = _context9.next) {
3869
+ case 0:
3870
+ _this.setState({
3871
+ job: _objectSpread$4(_objectSpread$4({}, _this.state.job), {}, {
3872
+ status: status
3873
+ }),
3874
+ statusChangerOpen: false
3875
+ });
3876
+
3877
+ _context9.prev = 1;
3878
+ _context9.next = 4;
3879
+ return maintenanceActions.editJobStatus(_this.state.job.id, status);
3880
+
3881
+ case 4:
3882
+ res = _context9.sent;
3883
+ job = res.data.job;
3884
+
3885
+ _this.props.jobsLoaded([job]);
3886
+
3887
+ _this.setState({
3888
+ job: job
3889
+ });
3890
+
3891
+ _context9.next = 13;
3892
+ break;
3893
+
3894
+ case 10:
3895
+ _context9.prev = 10;
3896
+ _context9.t0 = _context9["catch"](1);
3897
+ console.error('onSelectStatus', _context9.t0);
3898
+
3899
+ case 13:
3900
+ case "end":
3901
+ return _context9.stop();
3902
+ }
3903
+ }
3904
+ }, _callee9, null, [[1, 10]]);
3905
+ }));
3906
+
3907
+ return function (_x3) {
3908
+ return _ref9.apply(this, arguments);
3909
+ };
3910
+ }());
3911
+
2909
3912
  _this.state = {
2910
3913
  jobId: Helper$2.safeReadParams(props, 'jobId') ? props.match.params.jobId : null,
2911
3914
  job: null,
@@ -2914,10 +3917,12 @@ var Job = /*#__PURE__*/function (_Component) {
2914
3917
  comments: [],
2915
3918
  commentInput: '',
2916
3919
  loadingComments: false,
3920
+ priorityChangerOpen: false,
2917
3921
  statusChangerOpen: false,
2918
3922
  addNoteOpen: false,
2919
3923
  noteAttachments: [],
2920
3924
  noteInput: '',
3925
+ noteImages: [],
2921
3926
  assignees: []
2922
3927
  };
2923
3928
  return _this;
@@ -2931,12 +3936,64 @@ var Job = /*#__PURE__*/function (_Component) {
2931
3936
  }, {
2932
3937
  key: "componentDidMount",
2933
3938
  value: function componentDidMount() {
3939
+ this.props.jobStatusesUpdate(this.props.auth.site);
3940
+
2934
3941
  if (this.state.jobId) {
2935
3942
  this.getJob();
2936
3943
  this.getComments();
2937
3944
  this.getAssignees();
2938
3945
  }
2939
3946
  }
3947
+ }, {
3948
+ key: "checkSetImage",
3949
+ value: function checkSetImage() {
3950
+ if (this.imageInput && !___default['default'].isEmpty(this.state.noteImages)) {
3951
+ this.imageInput.getWrappedInstance().setValue(this.state.noteImages);
3952
+ } else {
3953
+ setTimeout(this.checkSetImage, 100);
3954
+ }
3955
+ }
3956
+ }, {
3957
+ key: "renderPriorityChanger",
3958
+ value: function renderPriorityChanger() {
3959
+ var _this2 = this;
3960
+
3961
+ if (!this.state.priorityChangerOpen) return null;
3962
+ return /*#__PURE__*/React__default['default'].createElement("div", {
3963
+ className: "statusChanger statusChanger-priority"
3964
+ }, jobPriorityOptions.map(function (p) {
3965
+ return /*#__PURE__*/React__default['default'].createElement("div", {
3966
+ key: p.name,
3967
+ className: "statusLabel",
3968
+ onClick: function onClick() {
3969
+ return _this2.onSelectPriority(p.name);
3970
+ },
3971
+ style: {
3972
+ backgroundColor: p.color
3973
+ }
3974
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
3975
+ className: "statusLabel_text"
3976
+ }, p.name));
3977
+ }));
3978
+ }
3979
+ }, {
3980
+ key: "renderPriorityLabel",
3981
+ value: function renderPriorityLabel() {
3982
+ var auth = this.props.auth;
3983
+ if (!Session$3.validateAccess(auth.site, values.permissionMaintenanceTracking, auth)) return null;
3984
+ var job = this.state.job;
3985
+ if (!job) return null;
3986
+ var selectedPriority = getJobPriority(job.priority);
3987
+ return /*#__PURE__*/React__default['default'].createElement("div", {
3988
+ className: "statusLabel marginTop-5 pointer",
3989
+ onClick: this.onTogglePriorityChanger,
3990
+ style: {
3991
+ backgroundColor: selectedPriority.color
3992
+ }
3993
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
3994
+ className: "statusLabel_text"
3995
+ }, job.priority || selectedPriority.name), this.renderPriorityChanger());
3996
+ }
2940
3997
  }, {
2941
3998
  key: "renderStatusLabel",
2942
3999
  value: function renderStatusLabel() {
@@ -3000,24 +4057,25 @@ var Job = /*#__PURE__*/function (_Component) {
3000
4057
  }, {
3001
4058
  key: "renderStatusChanger",
3002
4059
  value: function renderStatusChanger() {
3003
- var _this2 = this;
4060
+ var _this3 = this;
3004
4061
 
3005
4062
  if (!this.state.statusChangerOpen) return null;
4063
+ var statusTypes = this.props.statusTypes;
3006
4064
  return /*#__PURE__*/React__default['default'].createElement("div", {
3007
4065
  className: "statusChanger statusChanger-maintenance"
3008
- }, Object.keys(StatusTypes).map(function (statusKey) {
4066
+ }, statusTypes.map(function (status) {
3009
4067
  return /*#__PURE__*/React__default['default'].createElement("div", {
3010
- key: statusKey,
4068
+ key: status.text,
3011
4069
  className: "statusLabel",
3012
4070
  onClick: function onClick() {
3013
- return _this2.onSelectStatus(statusKey);
4071
+ return _this3.onSelectStatus(status.text);
3014
4072
  },
3015
4073
  style: {
3016
- backgroundColor: StatusTypes[statusKey].color
4074
+ backgroundColor: status.color
3017
4075
  }
3018
4076
  }, /*#__PURE__*/React__default['default'].createElement("span", {
3019
4077
  className: "statusLabel_text"
3020
- }, StatusTypes[statusKey].text));
4078
+ }, status.text));
3021
4079
  }));
3022
4080
  }
3023
4081
  }, {
@@ -3031,7 +4089,7 @@ var Job = /*#__PURE__*/function (_Component) {
3031
4089
  }, {
3032
4090
  key: "renderCommentSection",
3033
4091
  value: function renderCommentSection() {
3034
- var _this3 = this;
4092
+ var _this4 = this;
3035
4093
 
3036
4094
  if (this.state.loadingComments) return null;
3037
4095
  return /*#__PURE__*/React__default['default'].createElement("div", {
@@ -3044,7 +4102,7 @@ var Job = /*#__PURE__*/function (_Component) {
3044
4102
  }, "Comments"), /*#__PURE__*/React__default['default'].createElement("div", {
3045
4103
  className: "commentSection"
3046
4104
  }, this.state.comments.map(function (c) {
3047
- return _this3.renderComment(c);
4105
+ return _this4.renderComment(c);
3048
4106
  })), /*#__PURE__*/React__default['default'].createElement("div", {
3049
4107
  className: "commentReply"
3050
4108
  }, /*#__PURE__*/React__default['default'].createElement("div", {
@@ -3060,13 +4118,14 @@ var Job = /*#__PURE__*/function (_Component) {
3060
4118
  className: "commentReply_input",
3061
4119
  value: this.state.commentInput,
3062
4120
  onChange: function onChange(e) {
3063
- return _this3.onHandleChange(e);
4121
+ return _this4.onHandleChange(e);
3064
4122
  }
3065
4123
  }))));
3066
4124
  }
3067
4125
  }, {
3068
4126
  key: "renderImageGrid",
3069
4127
  value: function renderImageGrid(images) {
4128
+ var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
3070
4129
  var imagesToUse = images && images.length > 0 ? images : [];
3071
4130
  return /*#__PURE__*/React__default['default'].createElement("div", {
3072
4131
  className: "imageGrid"
@@ -3079,7 +4138,9 @@ var Job = /*#__PURE__*/function (_Component) {
3079
4138
  }, /*#__PURE__*/React__default['default'].createElement("div", {
3080
4139
  className: "imageGrid_image",
3081
4140
  style: {
3082
- backgroundImage: "url('".concat(Helper$2.get1400(image), "')")
4141
+ backgroundImage: "url('".concat(Helper$2.get1400(image), "')"),
4142
+ width: size,
4143
+ height: size
3083
4144
  }
3084
4145
  }));
3085
4146
  }));
@@ -3099,7 +4160,7 @@ var Job = /*#__PURE__*/function (_Component) {
3099
4160
  }, {
3100
4161
  key: "renderCustomFields",
3101
4162
  value: function renderCustomFields() {
3102
- var _this4 = this;
4163
+ var _this5 = this;
3103
4164
 
3104
4165
  var job = this.state.job;
3105
4166
  var customFields = job.customFields;
@@ -3129,7 +4190,7 @@ var Job = /*#__PURE__*/function (_Component) {
3129
4190
  }, field.answer && Array.isArray(field.answer) ? field.answer.join(', ') : '');
3130
4191
 
3131
4192
  case 'image':
3132
- return _this4.renderImageGrid(field.answer);
4193
+ return _this5.renderImageGrid(field.answer);
3133
4194
 
3134
4195
  default:
3135
4196
  return /*#__PURE__*/React__default['default'].createElement("div", {
@@ -3250,12 +4311,12 @@ var Job = /*#__PURE__*/function (_Component) {
3250
4311
  }
3251
4312
  }, /*#__PURE__*/React__default['default'].createElement("span", {
3252
4313
  className: "statusLabel_text"
3253
- }, e ? "Marked as ".concat(statusType.text) : "".concat(values.textEntityName, " opened"))));
4314
+ }, e ? "".concat(entryToUse.user.displayName, " marked as ").concat(statusType.text) : "".concat(values.textEntityName, " opened"))));
3254
4315
  }
3255
4316
  }, {
3256
4317
  key: "renderNote",
3257
4318
  value: function renderNote(note, index) {
3258
- var _this5 = this;
4319
+ var _this6 = this;
3259
4320
 
3260
4321
  return /*#__PURE__*/React__default['default'].createElement("div", {
3261
4322
  className: "ticketHistoryEntry",
@@ -3278,7 +4339,7 @@ var Job = /*#__PURE__*/function (_Component) {
3278
4339
  icon: "more15",
3279
4340
  className: "maintenanceNote_moreIcon",
3280
4341
  onClick: function onClick() {
3281
- return _this5.onOpenNoteMenu(index);
4342
+ return _this6.onOpenNoteMenu(index);
3282
4343
  }
3283
4344
  }), /*#__PURE__*/React__default['default'].createElement("p", {
3284
4345
  className: "maintenanceNote_name"
@@ -3287,20 +4348,20 @@ var Job = /*#__PURE__*/function (_Component) {
3287
4348
  key: 'edit',
3288
4349
  text: 'Edit',
3289
4350
  onPress: function onPress() {
3290
- return _this5.onOpenEditNote(note);
4351
+ return _this6.onOpenEditNote(note);
3291
4352
  }
3292
4353
  }, {
3293
4354
  key: 'delete',
3294
4355
  text: 'Delete',
3295
4356
  onPress: function onPress() {
3296
- return _this5.onDeleteNote(note);
4357
+ return _this6.onDeleteNote(note);
3297
4358
  }
3298
4359
  }]
3299
4360
  })), /*#__PURE__*/React__default['default'].createElement("p", {
3300
4361
  className: "maintenanceNote_text"
3301
4362
  }, Helper$2.toParagraphed(note.Note)), note.Attachments.map(function (a, i) {
3302
- return _this5.renderAttachment(a, i);
3303
- })));
4363
+ return _this6.renderAttachment(a, i);
4364
+ }), note.Images && note.Images.length > 0 ? this.renderImageGrid(note.Images, IMAGE_SIZE_NOTE) : null));
3304
4365
  }
3305
4366
  }, {
3306
4367
  key: "renderAssignment",
@@ -3341,10 +4402,24 @@ var Job = /*#__PURE__*/function (_Component) {
3341
4402
  className: "statusLabel_text"
3342
4403
  }, e.user.displayName, " assigned the ", values.textSingularName, " to ", e.assignedUser ? e.assignedUser.displayName : 'Unassigned')));
3343
4404
  }
4405
+ }, {
4406
+ key: "renderPriority",
4407
+ value: function renderPriority() {
4408
+ var auth = this.props.auth;
4409
+ if (!Session$3.validateAccess(auth.site, values.permissionMaintenanceTracking, auth)) return null;
4410
+ return /*#__PURE__*/React__default['default'].createElement("div", {
4411
+ className: "padding-32 paddingVertical-40 bottomDivideBorder relative"
4412
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
4413
+ className: "newTopBar clearfix flex flex-reverse"
4414
+ }, this.renderPriorityLabel(), /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
4415
+ type: "formTitleSmall",
4416
+ className: "flex-1"
4417
+ }, "Priority")));
4418
+ }
3344
4419
  }, {
3345
4420
  key: "renderOverview",
3346
4421
  value: function renderOverview() {
3347
- var _this6 = this;
4422
+ var _this7 = this;
3348
4423
 
3349
4424
  var job = this.state.job;
3350
4425
  if (!job || !job.history) return null;
@@ -3370,13 +4445,13 @@ var Job = /*#__PURE__*/function (_Component) {
3370
4445
  }, "Status History")), this.renderHistoryEntry(null, -1), ___default['default'].map(source, function (e, i) {
3371
4446
  switch (e.EntryType) {
3372
4447
  case 'status':
3373
- return _this6.renderHistoryEntry(e, i);
4448
+ return _this7.renderHistoryEntry(e, i);
3374
4449
 
3375
4450
  case 'note':
3376
- return _this6.renderNote(e, i);
4451
+ return _this7.renderNote(e, i);
3377
4452
 
3378
4453
  case 'assignment':
3379
- return _this6.renderAssignmentEntry(e, i);
4454
+ return _this7.renderAssignmentEntry(e, i);
3380
4455
  }
3381
4456
  }));
3382
4457
  }
@@ -3422,7 +4497,7 @@ var Job = /*#__PURE__*/function (_Component) {
3422
4497
  }, {
3423
4498
  key: "renderAddNotePopup",
3424
4499
  value: function renderAddNotePopup() {
3425
- var _this7 = this;
4500
+ var _this8 = this;
3426
4501
 
3427
4502
  if (!this.state.addNoteOpen) return null;
3428
4503
 
@@ -3462,7 +4537,7 @@ var Job = /*#__PURE__*/function (_Component) {
3462
4537
  value: this.state.noteInput,
3463
4538
  placeholder: "Enter note",
3464
4539
  onChange: function onChange(e) {
3465
- return _this7.onHandleChange(e);
4540
+ return _this8.onHandleChange(e);
3466
4541
  },
3467
4542
  inputStyle: {
3468
4543
  width: 400
@@ -3470,34 +4545,44 @@ var Job = /*#__PURE__*/function (_Component) {
3470
4545
  }), /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
3471
4546
  type: "h5"
3472
4547
  }, "Attachments"), this.state.noteAttachments.map(function (a, i) {
3473
- return _this7.renderAttachment(a, i, _this7.onRemoveAttachment);
4548
+ return _this8.renderAttachment(a, i, _this8.onRemoveAttachment);
3474
4549
  }), /*#__PURE__*/React__default['default'].createElement("input", {
3475
4550
  ref: function ref(input) {
3476
- return _this7.attachmentInput = input;
4551
+ return _this8.attachmentInput = input;
3477
4552
  },
3478
4553
  id: "attachmentInput",
3479
4554
  type: "file",
3480
4555
  className: "fileInput",
3481
4556
  onChange: function onChange(e) {
3482
- return _this7.onHandlePDFFileChange(e);
4557
+ return _this8.onHandlePDFFileChange(e);
3483
4558
  },
3484
4559
  accept: "application/pdf"
3485
4560
  }), /*#__PURE__*/React__default['default'].createElement("div", {
3486
- className: "iconTextButton",
4561
+ className: "iconTextButton marginBottom-16",
3487
4562
  onClick: function onClick() {
3488
- _this7.attachmentInput.click();
4563
+ _this8.attachmentInput.click();
3489
4564
  }
3490
4565
  }, /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
3491
4566
  className: "iconTextButton_icon",
3492
4567
  name: "paperclip"
3493
4568
  }), /*#__PURE__*/React__default['default'].createElement("p", {
3494
4569
  className: "iconTextButton_text"
3495
- }, "Add Attachment")));
4570
+ }, "Add Attachment")), /*#__PURE__*/React__default['default'].createElement(Components$3.ImageInput, {
4571
+ ref: function ref(_ref10) {
4572
+ _this8.imageInput = _ref10;
4573
+ },
4574
+ multiple: true,
4575
+ refreshCallback: function refreshCallback(images) {
4576
+ _this8.setState({
4577
+ noteImages: images
4578
+ });
4579
+ }
4580
+ }));
3496
4581
  }
3497
4582
  }, {
3498
4583
  key: "renderUsers",
3499
4584
  value: function renderUsers() {
3500
- var _this8 = this;
4585
+ var _this9 = this;
3501
4586
 
3502
4587
  var content = null;
3503
4588
 
@@ -3516,7 +4601,7 @@ var Job = /*#__PURE__*/function (_Component) {
3516
4601
  className: "removeIcon",
3517
4602
  icon: "close",
3518
4603
  onClick: function onClick() {
3519
- _this8.onSelectAssignee();
4604
+ _this9.onSelectAssignee();
3520
4605
  },
3521
4606
  colour: Colours$1.COLOUR_DUSK
3522
4607
  })
@@ -3529,20 +4614,20 @@ var Job = /*#__PURE__*/function (_Component) {
3529
4614
  placeholder: "Search name",
3530
4615
  value: this.state.userSearch,
3531
4616
  onChange: function onChange(e) {
3532
- return _this8.onHandleChange(e);
4617
+ return _this9.onHandleChange(e);
3533
4618
  },
3534
4619
  alwaysShowLabel: true
3535
4620
  }), ___default['default'].sortBy(this.state.assignees, function (u) {
3536
4621
  return u.displayName.toUpperCase();
3537
4622
  }).filter(function (u) {
3538
- if (___default['default'].isEmpty(_this8.state.userSearch)) return true;
3539
- return u.displayName.toUpperCase().indexOf(_this8.state.userSearch.toUpperCase()) > -1;
4623
+ if (___default['default'].isEmpty(_this9.state.userSearch)) return true;
4624
+ return u.displayName.toUpperCase().indexOf(_this9.state.userSearch.toUpperCase()) > -1;
3540
4625
  }).map(function (user) {
3541
4626
  return /*#__PURE__*/React__default['default'].createElement(Components$3.UserListing, {
3542
4627
  key: user.id,
3543
4628
  user: user,
3544
4629
  onClick: function onClick() {
3545
- _this8.onSelectAssignee(user);
4630
+ _this9.onSelectAssignee(user);
3546
4631
  }
3547
4632
  });
3548
4633
  }));
@@ -3583,7 +4668,7 @@ var Job = /*#__PURE__*/function (_Component) {
3583
4668
  className: "pageSectionWrapper--fixedPopupSize"
3584
4669
  }, this.renderInner()), /*#__PURE__*/React__default['default'].createElement(Components$3.OverlayPageSection, {
3585
4670
  className: "pageSectionWrapper--newPopupSide pageSectionWrapper--newPopupSide-fixedWidth"
3586
- }, this.renderAssignment(), this.renderOverview())), /*#__PURE__*/React__default['default'].createElement(Components$3.OverlayPageBottomButtons, null, this.renderButtons()));
4671
+ }, this.renderAssignment(), this.renderPriority(), this.renderOverview())), /*#__PURE__*/React__default['default'].createElement(Components$3.OverlayPageBottomButtons, null, this.renderButtons()));
3587
4672
  }
3588
4673
  }]);
3589
4674
 
@@ -3593,12 +4678,14 @@ var Job = /*#__PURE__*/function (_Component) {
3593
4678
  var mapStateToProps$3 = function mapStateToProps(state) {
3594
4679
  var auth = state.auth;
3595
4680
  return {
3596
- auth: auth
4681
+ auth: auth,
4682
+ statusTypes: state[values.reducerKey].jobstatuses
3597
4683
  };
3598
4684
  };
3599
4685
 
3600
4686
  var Job$1 = reactRedux.connect(mapStateToProps$3, {
3601
- jobsLoaded: jobsLoaded
4687
+ jobsLoaded: jobsLoaded,
4688
+ jobStatusesUpdate: jobStatusesUpdate
3602
4689
  })(reactRouter.withRouter(Job));
3603
4690
 
3604
4691
  function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
@@ -5983,8 +7070,9 @@ function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) {
5983
7070
  var INITIAL_STATE = {
5984
7071
  jobs: [],
5985
7072
  jobtypes: [],
5986
- loading: false // tickets: [],
5987
-
7073
+ jobstatuses: jobStatusOptions,
7074
+ loading: false,
7075
+ hideSeen: false
5988
7076
  };
5989
7077
  var MaintenanceReducer = (function () {
5990
7078
  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_STATE;
@@ -6027,33 +7115,25 @@ var MaintenanceReducer = (function () {
6027
7115
  return state;
6028
7116
 
6029
7117
  case JOBS_TYPES_LOADED:
6030
- var resultSub = ___default['default'].unionWith(action.payload, state.jobtypes, function (v1, v2) {
7118
+ var jobtypes = ___default['default'].unionWith(action.payload, state.jobtypes, function (v1, v2) {
6031
7119
  return v1 != null && v2 != null && v1.id === v2.id;
6032
7120
  });
6033
7121
 
6034
7122
  return _objectSpread$2(_objectSpread$2({}, state), {}, {
6035
- jobtypes: resultSub
7123
+ jobtypes: jobtypes
7124
+ });
7125
+
7126
+ case JOBS_STATUSES_LOADED:
7127
+ var jobstatuses = ___default['default'].orderBy(action.payload, 'order', 'asc');
7128
+
7129
+ return _objectSpread$2(_objectSpread$2({}, state), {}, {
7130
+ jobstatuses: jobstatuses
7131
+ });
7132
+
7133
+ case JOBS_HIDE_SEEN:
7134
+ return _objectSpread$2(_objectSpread$2({}, state), {}, {
7135
+ hideSeen: action.payload
6036
7136
  });
6037
- // case JOBS_TYPES_REMOVED:
6038
- // const indexSub = _.findIndex(state.jobtypes, (event) => {
6039
- // return event != null && event.id === action.payload;
6040
- // });
6041
- // if (indexSub > -1) {
6042
- // const newEventsSub = [...state.jobtypes];
6043
- // newEventsSub.splice(indexSub, 1);
6044
- // return { ...state, jobtypes: newEventsSub };
6045
- // }
6046
- // return state;
6047
- // case TICKETS_LOADED:
6048
- // const ticketResult = _.unionWith(action.payload, state.tickets, (v1, v2) => {
6049
- // return v1 != null && v2 != null && v1.Id === v2.Id;
6050
- // });
6051
- // return {
6052
- // ...state,
6053
- // tickets: ticketResult,
6054
- // };
6055
- // case JOBS_PURGE:
6056
- // return INITIAL_STATE;
6057
7137
 
6058
7138
  default:
6059
7139
  return state;