@plusscommunities/pluss-maintenance-web 1.1.23 → 1.1.24-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -75,6 +75,8 @@ var values = {
75
75
  actionJobsLoaded: 'JOBS_LOADED',
76
76
  actionJobsRemoved: 'JOBS_REMOVED',
77
77
  actionJobsTypesLoaded: 'JOBS_TYPES_LOADED',
78
+ actionJobsStatusesLoaded: 'JOBS_STATUSES_LOADED',
79
+ actionJobsHideSeen: 'JOBS_HIDE_SEEN',
78
80
  actionJobsLoading: 'JOBS_LOADING',
79
81
  permissionMaintenanceTracking: 'maintenanceTracking',
80
82
  permissionMaintenanceTypes: 'maintenanceTypes',
@@ -128,7 +130,9 @@ var values = {
128
130
  hiddenKeyMoreSectionMaintenance: 'maintenanceRequest',
129
131
  forceCustomFields: false,
130
132
  textEntityName: 'Job',
131
- hasHelpButton: true
133
+ hasHelpButton: true,
134
+ stringConfigJobStatus: 'maintenanceJobStatus',
135
+ stringConfigHideSeen: 'maintenanceDisableSeen'
132
136
  };
133
137
 
134
138
  // import * as PlussCore from '../../pluss-core/src';
@@ -249,19 +253,21 @@ var FeatureConfig = {
249
253
  };
250
254
 
251
255
  var JOBS_LOADED = values.actionJobsLoaded;
256
+ var JOBS_LOADING = values.actionJobsLoading;
252
257
  var JOBS_REMOVED = values.actionJobsRemoved;
253
258
  var JOBS_TYPES_LOADED = values.actionJobsTypesLoaded;
254
- var JOBS_LOADING = values.actionJobsLoading;
259
+ var JOBS_STATUSES_LOADED = values.actionJobsStatusesLoaded;
260
+ var JOBS_HIDE_SEEN = values.actionJobsHideSeen;
255
261
 
256
- 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; }
262
+ 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; }
257
263
 
258
- 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; }
264
+ 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; }
259
265
  var Helper$5 = PlussCore__namespace.Helper,
260
- Session$8 = PlussCore__namespace.Session;
266
+ Session$9 = PlussCore__namespace.Session;
261
267
  var maintenanceActions = {
262
268
  getJobType: function getJobType(site, typeId) {
263
269
  var url = Helper$5.getUrl(values.serviceKey, 'getjobtype');
264
- return Session$8.authedFunction({
270
+ return Session$9.authedFunction({
265
271
  method: 'POST',
266
272
  url: url,
267
273
  data: {
@@ -272,7 +278,7 @@ var maintenanceActions = {
272
278
  },
273
279
  getJobTypes: function getJobTypes(site, id) {
274
280
  var url = Helper$5.getUrl(values.serviceKey, 'getjobtypes');
275
- return Session$8.authedFunction({
281
+ return Session$9.authedFunction({
276
282
  method: 'POST',
277
283
  url: url,
278
284
  data: {
@@ -282,7 +288,7 @@ var maintenanceActions = {
282
288
  },
283
289
  getJob: function getJob(site, id) {
284
290
  var url = Helper$5.getUrl(values.serviceKey, 'getJob');
285
- return Session$8.authedFunction({
291
+ return Session$9.authedFunction({
286
292
  method: 'POST',
287
293
  url: url,
288
294
  data: {
@@ -293,7 +299,7 @@ var maintenanceActions = {
293
299
  },
294
300
  getJobByJobId: function getJobByJobId(site, jobId) {
295
301
  var url = Helper$5.getUrl(values.serviceKey, 'getJob');
296
- return Session$8.authedFunction({
302
+ return Session$9.authedFunction({
297
303
  method: 'POST',
298
304
  url: url,
299
305
  data: {
@@ -305,7 +311,7 @@ var maintenanceActions = {
305
311
  getJobs: function getJobs(site) {
306
312
  var status = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
307
313
  var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
308
- return Session$8.authedFunction({
314
+ return Session$9.authedFunction({
309
315
  method: 'POST',
310
316
  url: Helper$5.getUrl(values.serviceKey, 'getJobs'),
311
317
  data: {
@@ -332,7 +338,7 @@ var maintenanceActions = {
332
338
  query.lastKey = JSON.stringify(lastKey);
333
339
  }
334
340
 
335
- return Session$8.authedFunction({
341
+ return Session$9.authedFunction({
336
342
  method: 'GET',
337
343
  url: Helper$5.getUrl(values.serviceKey, 'get/requests', query)
338
344
  });
@@ -352,14 +358,14 @@ var maintenanceActions = {
352
358
  });
353
359
  },
354
360
  createJob: function createJob(job) {
355
- return Session$8.authedFunction({
361
+ return Session$9.authedFunction({
356
362
  method: 'POST',
357
363
  url: Helper$5.getUrl(values.serviceKey, 'sendMaintenance'),
358
- data: _objectSpread$6({}, job)
364
+ data: _objectSpread$7({}, job)
359
365
  });
360
366
  },
361
367
  editJob: function editJob(job, site) {
362
- return Session$8.authedFunction({
368
+ return Session$9.authedFunction({
363
369
  method: 'POST',
364
370
  url: Helper$5.getUrl(values.serviceKey, 'editJob'),
365
371
  data: {
@@ -369,7 +375,7 @@ var maintenanceActions = {
369
375
  });
370
376
  },
371
377
  deleteJob: function deleteJob(site, id) {
372
- return Session$8.authedFunction({
378
+ return Session$9.authedFunction({
373
379
  method: 'POST',
374
380
  url: Helper$5.getUrl(values.serviceKey, 'requests/remove'),
375
381
  data: {
@@ -379,7 +385,7 @@ var maintenanceActions = {
379
385
  });
380
386
  },
381
387
  editJobStatus: function editJobStatus(id, status) {
382
- return Session$8.authedFunction({
388
+ return Session$9.authedFunction({
383
389
  method: 'POST',
384
390
  url: Helper$5.getUrl(values.serviceKey, 'editJobStatus'),
385
391
  data: {
@@ -388,8 +394,18 @@ var maintenanceActions = {
388
394
  }
389
395
  });
390
396
  },
397
+ editJobPriority: function editJobPriority(id, priority) {
398
+ return Session$9.authedFunction({
399
+ method: 'POST',
400
+ url: Helper$5.getUrl(values.serviceKey, 'update/priority'),
401
+ data: {
402
+ id: id,
403
+ priority: priority
404
+ }
405
+ });
406
+ },
391
407
  assignJob: function assignJob(jobId, userId) {
392
- return Session$8.authedFunction({
408
+ return Session$9.authedFunction({
393
409
  method: 'POST',
394
410
  url: Helper$5.getUrl(values.serviceKey, 'update/assign'),
395
411
  data: {
@@ -399,40 +415,42 @@ var maintenanceActions = {
399
415
  });
400
416
  },
401
417
  getAssignees: function getAssignees(site) {
402
- return Session$8.authedFunction({
418
+ return Session$9.authedFunction({
403
419
  method: 'GET',
404
420
  url: Helper$5.getUrl(values.serviceKey, 'get/assignees', {
405
421
  site: site
406
422
  })
407
423
  });
408
424
  },
409
- addNote: function addNote(jobId, note, attachments) {
410
- return Session$8.authedFunction({
425
+ addNote: function addNote(jobId, note, attachments, images) {
426
+ return Session$9.authedFunction({
411
427
  method: 'POST',
412
428
  url: Helper$5.getUrl(values.serviceKey, 'requests/note'),
413
429
  data: {
414
430
  id: jobId,
415
431
  note: note,
416
432
  attachments: attachments,
433
+ images: images,
417
434
  action: 'AddNote'
418
435
  }
419
436
  });
420
437
  },
421
- editNote: function editNote(jobId, noteId, note, attachments) {
422
- return Session$8.authedFunction({
438
+ editNote: function editNote(jobId, noteId, note, attachments, images) {
439
+ return Session$9.authedFunction({
423
440
  method: 'POST',
424
441
  url: Helper$5.getUrl(values.serviceKey, 'requests/note'),
425
442
  data: {
426
443
  id: jobId,
427
444
  note: note,
428
445
  attachments: attachments,
446
+ images: images,
429
447
  noteId: noteId,
430
448
  action: 'EditNote'
431
449
  }
432
450
  });
433
451
  },
434
452
  deleteNote: function deleteNote(jobId, noteId) {
435
- return Session$8.authedFunction({
453
+ return Session$9.authedFunction({
436
454
  method: 'POST',
437
455
  url: Helper$5.getUrl(values.serviceKey, 'requests/note'),
438
456
  data: {
@@ -452,7 +470,7 @@ var maintenanceActions = {
452
470
  hasCustomFields: hasCustomFields,
453
471
  customFields: customFields || []
454
472
  };
455
- return Session$8.authedFunction({
473
+ return Session$9.authedFunction({
456
474
  method: 'POST',
457
475
  url: Helper$5.getUrl(values.serviceKey, 'createJobType'),
458
476
  data: data
@@ -470,14 +488,14 @@ var maintenanceActions = {
470
488
  customFields: customFields || []
471
489
  };
472
490
  if (hasCustomFields && customFields) data.customFields = customFields;
473
- return Session$8.authedFunction({
491
+ return Session$9.authedFunction({
474
492
  method: 'POST',
475
493
  url: Helper$5.getUrl(values.serviceKey, 'editJobType'),
476
494
  data: data
477
495
  });
478
496
  },
479
497
  deleteJobType: function deleteJobType(site, id) {
480
- return Session$8.authedFunction({
498
+ return Session$9.authedFunction({
481
499
  method: 'POST',
482
500
  url: Helper$5.getUrl(values.serviceKey, 'deleteJobType'),
483
501
  data: {
@@ -489,7 +507,7 @@ var maintenanceActions = {
489
507
  };
490
508
 
491
509
  var Helper$4 = PlussCore__namespace.Helper,
492
- Session$7 = PlussCore__namespace.Session;
510
+ Session$8 = PlussCore__namespace.Session;
493
511
  var reactionActions = {
494
512
  addComment: function addComment(entityId, entityType, entityName, site, comment, image, parentId) {
495
513
  var data = {
@@ -505,7 +523,7 @@ var reactionActions = {
505
523
  data.image = image;
506
524
  }
507
525
 
508
- return Session$7.authedFunction({
526
+ return Session$8.authedFunction({
509
527
  method: 'POST',
510
528
  url: Helper$4.getUrl('reactions', 'comments/add'),
511
529
  data: data
@@ -530,7 +548,7 @@ var reactionActions = {
530
548
  query.minTime = minTime;
531
549
  }
532
550
 
533
- return Session$7.authedFunction({
551
+ return Session$8.authedFunction({
534
552
  method: 'GET',
535
553
  url: Helper$4.getUrl('reactions', 'comments/get', query)
536
554
  });
@@ -540,6 +558,28 @@ var reactionActions = {
540
558
  var Apis$1 = PlussCore__namespace.Apis;
541
559
  var analyticsActions = Apis$1.analyticsActions;
542
560
  var userActions = Apis$1.userActions;
561
+ var stringActions = Apis$1.stringActions;
562
+
563
+ var jobStatusOptions = [
564
+ {
565
+ text: "Open",
566
+ order: 0,
567
+ color: "#d5dde4",
568
+ category: "Not Actioned"
569
+ },
570
+ {
571
+ text: "In Progress",
572
+ order: 1,
573
+ color: "#82d6e5",
574
+ category: "In Progress"
575
+ },
576
+ {
577
+ text: "Completed",
578
+ order: 2,
579
+ color: "#58dba4",
580
+ category: "Completed"
581
+ }
582
+ ];
543
583
 
544
584
  var Helper$3 = PlussCore__namespace.Helper;
545
585
  var jobsUpdate = function jobsUpdate(site, isdashboard) {
@@ -591,6 +631,54 @@ var jobTypesLoaded = function jobTypesLoaded(events) {
591
631
  type: JOBS_TYPES_LOADED,
592
632
  payload: events
593
633
  };
634
+ };
635
+ var jobStatusesUpdate = function jobStatusesUpdate(site) {
636
+ var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
637
+ return function (dispatch) {
638
+ stringActions.getString(site, values.stringConfigJobStatus).then(function (res) {
639
+ dispatch({
640
+ type: JOBS_STATUSES_LOADED,
641
+ payload: res.data
642
+ });
643
+ if (callback) callback(res.data);
644
+ }).catch(function (_error) {
645
+ dispatch({
646
+ type: JOBS_STATUSES_LOADED,
647
+ payload: jobStatusOptions
648
+ });
649
+ if (callback) callback(jobStatusOptions);
650
+ });
651
+ };
652
+ };
653
+ var jobStatusesLoaded = function jobStatusesLoaded(statuses) {
654
+ return {
655
+ type: JOBS_STATUSES_LOADED,
656
+ payload: statuses
657
+ };
658
+ };
659
+ var jobHideSeenUpdate = function jobHideSeenUpdate(site) {
660
+ var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
661
+ return function (dispatch) {
662
+ stringActions.getString(site, values.stringConfigHideSeen).then(function (res) {
663
+ dispatch({
664
+ type: JOBS_HIDE_SEEN,
665
+ payload: res.data
666
+ });
667
+ if (callback) callback(res.data);
668
+ }).catch(function (_error) {
669
+ dispatch({
670
+ type: JOBS_HIDE_SEEN,
671
+ payload: false
672
+ });
673
+ if (callback) callback(false);
674
+ });
675
+ };
676
+ };
677
+ var jobHideSeenLoaded = function jobHideSeenLoaded(hide) {
678
+ return {
679
+ type: JOBS_HIDE_SEEN,
680
+ payload: hide
681
+ };
594
682
  }; // export const removeJobType = (id) => {
595
683
  // return {
596
684
  // type: JOBS_TYPES_REMOVED,
@@ -621,41 +709,56 @@ var jobTypesLoaded = function jobTypesLoaded(events) {
621
709
  // };
622
710
  // };
623
711
 
624
- var Unassigned = {
625
- text: "Open",
626
- order: 0,
627
- color: "#d5dde4"
628
- };
629
- var Completed = {
630
- text: "Completed",
631
- order: 2,
632
- color: "#58dba4"
712
+ var jobPriorityOptions = [
713
+ {
714
+ name: "Low",
715
+ color: "green",
716
+ "default": true
717
+ },
718
+ {
719
+ name: "Medium",
720
+ color: "orange"
721
+ },
722
+ {
723
+ name: "High",
724
+ color: "red"
725
+ }
726
+ ];
727
+
728
+ var STATUS_IMCOMPLETE = 'All Incomplete';
729
+ var STATUS_NOT_ACTIONED = 'Not Actioned';
730
+ var STATUS_IN_PROGRESS = 'In Progress';
731
+ var STATUS_COMPLETED = 'Completed';
732
+
733
+ var getDefaultPriority = function getDefaultPriority() {
734
+ return jobPriorityOptions.find(function (p) {
735
+ return p.default;
736
+ });
633
737
  };
634
- var StatusTypes = {
635
- Unassigned: Unassigned,
636
- "In Progress": {
637
- text: "In Progress",
638
- order: 1,
639
- color: "#82d6e5"
640
- },
641
- Completed: Completed
738
+
739
+ var getJobPriority = function getJobPriority(priority) {
740
+ var priorityOption = null;
741
+ if (priority) priorityOption = jobPriorityOptions.find(function (p) {
742
+ return p.name === priority;
743
+ });
744
+ return priorityOption || getDefaultPriority();
642
745
  };
643
746
 
644
- 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; }
747
+ 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; }
645
748
 
646
- 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; }
749
+ 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; }
647
750
 
648
- 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); }; }
751
+ 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); }; }
649
752
 
650
- 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; } }
651
- var Session$6 = PlussCore__namespace.Session,
652
- Components$6 = PlussCore__namespace.Components,
753
+ 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; } }
754
+ var Session$7 = PlussCore__namespace.Session,
755
+ Components$7 = PlussCore__namespace.Components,
653
756
  Analytics$2 = PlussCore__namespace.Analytics;
654
757
 
655
758
  var JobList = /*#__PURE__*/function (_Component) {
656
759
  _inherits__default['default'](JobList, _Component);
657
760
 
658
- var _super = _createSuper$b(JobList);
761
+ var _super = _createSuper$c(JobList);
659
762
 
660
763
  function JobList(props) {
661
764
  var _this;
@@ -664,6 +767,20 @@ var JobList = /*#__PURE__*/function (_Component) {
664
767
 
665
768
  _this = _super.call(this, props);
666
769
 
770
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "setRequesters", function (jobs) {
771
+ var requesters = ___default['default'].orderBy(___default['default'].uniqBy(jobs.map(function (j) {
772
+ return {
773
+ id: j.userID,
774
+ displayName: j.userName,
775
+ profilePic: j.userProfilePic
776
+ };
777
+ }), 'id'), 'displayName', 'asc');
778
+
779
+ _this.setState({
780
+ requesters: requesters
781
+ });
782
+ });
783
+
667
784
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "getJobs", /*#__PURE__*/_asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
668
785
  var auth, res;
669
786
  return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
@@ -679,6 +796,8 @@ var JobList = /*#__PURE__*/function (_Component) {
679
796
  res = _context.sent;
680
797
 
681
798
  if (!___default['default'].isEmpty(res) && res[0].site === auth.site) {
799
+ _this.setRequesters(res);
800
+
682
801
  _this.props.jobsLoaded(res);
683
802
  }
684
803
 
@@ -810,6 +929,14 @@ var JobList = /*#__PURE__*/function (_Component) {
810
929
  _this.closeFilter();
811
930
  });
812
931
 
932
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "selectPriorityFilter", function (filter) {
933
+ _this.setState({
934
+ selectedPriorityFilter: filter
935
+ });
936
+
937
+ _this.closeFilter();
938
+ });
939
+
813
940
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "selectStatusFilter", function (filter) {
814
941
  _this.setState({
815
942
  selectedStatusFilter: filter
@@ -914,6 +1041,33 @@ var JobList = /*#__PURE__*/function (_Component) {
914
1041
  _this.closeFilter();
915
1042
  });
916
1043
 
1044
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onSelectRequester", function (user) {
1045
+ _this.setState({
1046
+ selectedRequester: user
1047
+ });
1048
+ });
1049
+
1050
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "removeRequesterFilter", function () {
1051
+ _this.setState({
1052
+ selectedRequesterFilter: null,
1053
+ selectedRequesterFilterText: null
1054
+ });
1055
+ });
1056
+
1057
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "saveRequesterFilter", function () {
1058
+ if (!_this.state.selectedRequester) {
1059
+ _this.removeRequesterFilter();
1060
+ } else {
1061
+ _this.setState({
1062
+ selectedRequesterFilter: _this.state.selectedRequester.id,
1063
+ selectedRequesterFilterText: _this.state.selectedRequester.displayName,
1064
+ selectedRequester: null
1065
+ });
1066
+ }
1067
+
1068
+ _this.closeFilter();
1069
+ });
1070
+
917
1071
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onHandleSearchChange", function (event) {
918
1072
  var thisSearchTime = moment__default['default']().valueOf();
919
1073
 
@@ -946,18 +1100,32 @@ var JobList = /*#__PURE__*/function (_Component) {
946
1100
  source = ___default['default'].filter(source, function (r) {
947
1101
  return r.type === _this.state.selectedTypeFilter;
948
1102
  });
1103
+ } // filter by priority
1104
+
1105
+
1106
+ if (_this.state.selectedPriorityFilter) {
1107
+ var defaultPriority = getDefaultPriority().name;
1108
+ source = ___default['default'].filter(source, function (r) {
1109
+ return r.priority === _this.state.selectedPriorityFilter || _this.state.selectedPriorityFilter === defaultPriority && ___default['default'].isNil(r.priority);
1110
+ });
949
1111
  } // filter by status
950
1112
 
951
1113
 
952
1114
  if (_this.state.selectedStatusFilter) {
1115
+ var statusTypes = _this.props.statusTypes;
1116
+ var defaultStatus = statusTypes.find(function (s) {
1117
+ return s.category === STATUS_NOT_ACTIONED;
1118
+ });
953
1119
  source = ___default['default'].filter(source, function (r) {
954
- var status = r.status && StatusTypes[r.status] ? r.status : 'Unassigned';
1120
+ var status = statusTypes.find(function (s) {
1121
+ return s.text === r.status;
1122
+ }) || defaultStatus;
955
1123
 
956
- if (_this.state.selectedStatusFilter === 'incomplete') {
957
- return status !== 'Completed';
1124
+ if (_this.state.selectedStatusFilter === STATUS_IMCOMPLETE) {
1125
+ return status.category !== STATUS_COMPLETED;
958
1126
  }
959
1127
 
960
- return status === _this.state.selectedStatusFilter;
1128
+ return status.text === _this.state.selectedStatusFilter;
961
1129
  });
962
1130
  }
963
1131
 
@@ -967,6 +1135,12 @@ var JobList = /*#__PURE__*/function (_Component) {
967
1135
  });
968
1136
  }
969
1137
 
1138
+ if (_this.state.selectedRequesterFilter) {
1139
+ source = ___default['default'].filter(source, function (r) {
1140
+ return r.userID === _this.state.selectedRequesterFilter;
1141
+ });
1142
+ }
1143
+
970
1144
  if (!___default['default'].isEmpty(_this.state.searchTerm)) {
971
1145
  source = ___default['default'].filter(source, function (r) {
972
1146
  if (r.jobId && r.jobId === _this.state.searchTerm) {
@@ -1048,6 +1222,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1048
1222
 
1049
1223
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "getExportSource", function () {
1050
1224
  var customColumns = [];
1225
+ var defaultPriority = getDefaultPriority().name;
1051
1226
 
1052
1227
  var source = _this.getSource().map(function (r) {
1053
1228
  var history = r.history || [];
@@ -1094,12 +1269,14 @@ var JobList = /*#__PURE__*/function (_Component) {
1094
1269
 
1095
1270
  var customFieldValues = _this.getCustomFields(r, customColumns);
1096
1271
 
1097
- return _objectSpread$5(_objectSpread$5(_objectSpread$5({}, r), customFieldValues), {}, {
1272
+ var priority = r.priority || defaultPriority;
1273
+ return _objectSpread$6(_objectSpread$6(_objectSpread$6({}, r), customFieldValues), {}, {
1098
1274
  notes: notes,
1099
1275
  progressTime: progressTime,
1100
1276
  completedTime: completedTime,
1101
1277
  progressDuration: progressDuration,
1102
- completedDuration: completedDuration
1278
+ completedDuration: completedDuration,
1279
+ priority: priority
1103
1280
  });
1104
1281
  }); // Compose revised columns list with custom fields
1105
1282
 
@@ -1138,7 +1315,8 @@ var JobList = /*#__PURE__*/function (_Component) {
1138
1315
  sortColumn: 'createdUnix',
1139
1316
  sortDesc: true,
1140
1317
  selectedTimeFilter: Analytics$2.getAnalyticsFilterOptions()[1],
1141
- assignees: []
1318
+ assignees: [],
1319
+ requesters: []
1142
1320
  };
1143
1321
  _this.exportColumns = [{
1144
1322
  label: 'Select All',
@@ -1155,6 +1333,9 @@ var JobList = /*#__PURE__*/function (_Component) {
1155
1333
  }, {
1156
1334
  label: 'Status',
1157
1335
  key: 'status'
1336
+ }, {
1337
+ label: 'Priority',
1338
+ key: 'priority'
1158
1339
  }, {
1159
1340
  label: 'Title',
1160
1341
  key: 'title'
@@ -1195,11 +1376,12 @@ var JobList = /*#__PURE__*/function (_Component) {
1195
1376
  _createClass__default['default'](JobList, [{
1196
1377
  key: "UNSAFE_componentWillMount",
1197
1378
  value: function UNSAFE_componentWillMount() {
1198
- Session$6.checkLoggedIn(this);
1379
+ Session$7.checkLoggedIn(this);
1199
1380
  }
1200
1381
  }, {
1201
1382
  key: "componentDidMount",
1202
1383
  value: function componentDidMount() {
1384
+ this.props.jobStatusesUpdate(this.props.auth.site);
1203
1385
  this.getJobs();
1204
1386
  this.getAssignees();
1205
1387
  }
@@ -1213,7 +1395,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1213
1395
  }
1214
1396
 
1215
1397
  if (this.state.filterOpen === 'type') {
1216
- return /*#__PURE__*/React__default['default'].createElement(Components$6.Popup, {
1398
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Popup, {
1217
1399
  title: "Select ".concat(values.textJobType),
1218
1400
  maxWidth: 600,
1219
1401
  minWidth: 400,
@@ -1224,7 +1406,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1224
1406
  })), function (t) {
1225
1407
  return t.toLowerCase();
1226
1408
  }).map(function (type) {
1227
- return /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1409
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1228
1410
  key: type,
1229
1411
  onClick: function onClick() {
1230
1412
  _this2.selectTypeFilter(type);
@@ -1235,28 +1417,49 @@ var JobList = /*#__PURE__*/function (_Component) {
1235
1417
  }));
1236
1418
  }
1237
1419
 
1420
+ if (this.state.filterOpen === 'priority') {
1421
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Popup, {
1422
+ title: "Select Priority",
1423
+ maxWidth: 600,
1424
+ minWidth: 400,
1425
+ hasPadding: true,
1426
+ onClose: this.closeFilter
1427
+ }, jobPriorityOptions.map(function (p) {
1428
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1429
+ key: p.name,
1430
+ onClick: function onClick() {
1431
+ _this2.selectPriorityFilter(p.name);
1432
+ },
1433
+ text: p.name,
1434
+ className: "marginRight-10"
1435
+ });
1436
+ }));
1437
+ }
1438
+
1238
1439
  if (this.state.filterOpen === 'status') {
1239
- return /*#__PURE__*/React__default['default'].createElement(Components$6.Popup, {
1440
+ var statusTypes = this.props.statusTypes;
1441
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Popup, {
1240
1442
  title: "Select Status",
1241
1443
  maxWidth: 600,
1242
1444
  minWidth: 400,
1243
1445
  hasPadding: true,
1244
1446
  onClose: this.closeFilter
1245
- }, ['incomplete'].concat(_toConsumableArray__default['default'](Object.keys(StatusTypes))).map(function (sKey) {
1246
- var text = sKey === 'incomplete' ? 'All Incomplete' : StatusTypes[sKey].text;
1247
- return /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1248
- key: sKey,
1447
+ }, [STATUS_IMCOMPLETE].concat(_toConsumableArray__default['default'](statusTypes.map(function (s) {
1448
+ return s.text;
1449
+ }))).map(function (status) {
1450
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1451
+ key: status,
1249
1452
  onClick: function onClick() {
1250
- _this2.selectStatusFilter(sKey);
1453
+ _this2.selectStatusFilter(status);
1251
1454
  },
1252
- text: text,
1253
- className: "marginRight-10"
1455
+ text: status,
1456
+ className: "marginRight-10 marginBottom-10"
1254
1457
  });
1255
1458
  }));
1256
1459
  }
1257
1460
 
1258
1461
  if (this.state.filterOpen === 'time') {
1259
- return /*#__PURE__*/React__default['default'].createElement(Components$6.Popup, {
1462
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Popup, {
1260
1463
  title: "Select Time",
1261
1464
  maxWidth: 600,
1262
1465
  minWidth: 400,
@@ -1272,7 +1475,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1272
1475
  style: {
1273
1476
  minHeight: 150
1274
1477
  }
1275
- }, /*#__PURE__*/React__default['default'].createElement(Components$6.AnalyticsFilter, {
1478
+ }, /*#__PURE__*/React__default['default'].createElement(Components$7.AnalyticsFilter, {
1276
1479
  defaultFilter: this.state.selectedTimeFilter,
1277
1480
  filterChanged: this.timeFilterChanged,
1278
1481
  filterDateRangeChanged: this.timeFilterDateRangeChanged
@@ -1283,10 +1486,10 @@ var JobList = /*#__PURE__*/function (_Component) {
1283
1486
  var userContent = null;
1284
1487
 
1285
1488
  if (this.state.selectedAssignee) {
1286
- userContent = /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$6.UserListing, {
1489
+ userContent = /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$7.UserListing, {
1287
1490
  key: this.state.selectedAssignee.id,
1288
1491
  user: this.state.selectedAssignee,
1289
- rightContent: /*#__PURE__*/React__default['default'].createElement(Components$6.SVGIcon, {
1492
+ rightContent: /*#__PURE__*/React__default['default'].createElement(Components$7.SVGIcon, {
1290
1493
  className: "removeIcon",
1291
1494
  icon: "close",
1292
1495
  onClick: function onClick() {
@@ -1296,7 +1499,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1296
1499
  })
1297
1500
  }));
1298
1501
  } else {
1299
- userContent = /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$6.GenericInput, {
1502
+ userContent = /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$7.GenericInput, {
1300
1503
  id: "userSearch",
1301
1504
  type: "text" // label="Search"
1302
1505
  ,
@@ -1312,7 +1515,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1312
1515
  if (___default['default'].isEmpty(_this2.state.userSearch)) return true;
1313
1516
  return u.displayName.toUpperCase().indexOf(_this2.state.userSearch.toUpperCase()) > -1;
1314
1517
  }).map(function (user) {
1315
- return /*#__PURE__*/React__default['default'].createElement(Components$6.UserListing, {
1518
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.UserListing, {
1316
1519
  key: user.id,
1317
1520
  user: user,
1318
1521
  onClick: function onClick() {
@@ -1322,7 +1525,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1322
1525
  }));
1323
1526
  }
1324
1527
 
1325
- return /*#__PURE__*/React__default['default'].createElement(Components$6.Popup, {
1528
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Popup, {
1326
1529
  title: "Select User",
1327
1530
  maxWidth: 600,
1328
1531
  minWidth: 400,
@@ -1337,6 +1540,64 @@ var JobList = /*#__PURE__*/function (_Component) {
1337
1540
  }, userContent);
1338
1541
  }
1339
1542
 
1543
+ if (this.state.filterOpen === 'requester') {
1544
+ var _userContent = null;
1545
+
1546
+ if (this.state.selectedRequester) {
1547
+ _userContent = /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$7.UserListing, {
1548
+ key: this.state.selectedRequester.id,
1549
+ user: this.state.selectedRequester,
1550
+ rightContent: /*#__PURE__*/React__default['default'].createElement(Components$7.SVGIcon, {
1551
+ className: "removeIcon",
1552
+ icon: "close",
1553
+ onClick: function onClick() {
1554
+ _this2.onSelectRequester();
1555
+ },
1556
+ colour: PlussCore.Colours.COLOUR_DUSK
1557
+ })
1558
+ }));
1559
+ } else {
1560
+ _userContent = /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(Components$7.GenericInput, {
1561
+ id: "requesterSearch",
1562
+ type: "text" // label="Search"
1563
+ ,
1564
+ placeholder: "Search name",
1565
+ value: this.state.requesterSearch,
1566
+ onChange: function onChange(e) {
1567
+ return _this2.onHandleChange(e);
1568
+ },
1569
+ alwaysShowLabel: true
1570
+ }), ___default['default'].sortBy(this.state.requesters, function (u) {
1571
+ return u.displayName.toUpperCase();
1572
+ }).filter(function (u) {
1573
+ if (___default['default'].isEmpty(_this2.state.requesterSearch)) return true;
1574
+ return u.displayName.toUpperCase().indexOf(_this2.state.requesterSearch.toUpperCase()) > -1;
1575
+ }).map(function (user) {
1576
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.UserListing, {
1577
+ key: user.id,
1578
+ user: user,
1579
+ onClick: function onClick() {
1580
+ _this2.onSelectRequester(user);
1581
+ }
1582
+ });
1583
+ }));
1584
+ }
1585
+
1586
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.Popup, {
1587
+ title: "Select User",
1588
+ maxWidth: 600,
1589
+ minWidth: 400,
1590
+ hasPadding: true,
1591
+ onClose: this.closeFilter,
1592
+ buttons: [{
1593
+ type: 'primaryAction',
1594
+ onClick: this.saveRequesterFilter,
1595
+ text: 'Select',
1596
+ isActive: true
1597
+ }]
1598
+ }, _userContent);
1599
+ }
1600
+
1340
1601
  return null;
1341
1602
  }
1342
1603
  }, {
@@ -1344,19 +1605,33 @@ var JobList = /*#__PURE__*/function (_Component) {
1344
1605
  value: function renderRequests() {
1345
1606
  var _this3 = this;
1346
1607
 
1608
+ var statusTypes = this.props.statusTypes;
1609
+ var defaultStatus = statusTypes.find(function (s) {
1610
+ return s.category === STATUS_NOT_ACTIONED;
1611
+ });
1347
1612
  return this.getSource().map(function (ev, index) {
1348
1613
  if (!ev) {
1349
1614
  return null;
1350
1615
  }
1351
1616
 
1352
- var status = ev.status && StatusTypes[ev.status] ? StatusTypes[ev.status] : StatusTypes['Unassigned'];
1617
+ var status = ev.status && statusTypes.find(function (s) {
1618
+ return s.text === ev.status;
1619
+ }) || defaultStatus;
1620
+ var priority = getJobPriority(ev.priority);
1353
1621
  return /*#__PURE__*/React__default['default'].createElement("tr", {
1354
1622
  key: index
1355
1623
  }, /*#__PURE__*/React__default['default'].createElement("td", null, ev.jobId), /*#__PURE__*/React__default['default'].createElement("td", {
1356
1624
  className: "table-TitleColumn"
1357
1625
  }, /*#__PURE__*/React__default['default'].createElement(reactRouterDom.Link, {
1358
1626
  to: "".concat(values.routeRequestDetails, "/").concat(ev.id)
1359
- }, /*#__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, {
1627
+ }, /*#__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, {
1628
+ user: {
1629
+ id: ev.userID,
1630
+ displayName: ev.userName,
1631
+ profilePic: ev.userProfilePic
1632
+ },
1633
+ textClass: "fontSize-13"
1634
+ }) : 'Unknown'), /*#__PURE__*/React__default['default'].createElement("td", null, ev.Assignee ? /*#__PURE__*/React__default['default'].createElement(Components$7.UserListing, {
1360
1635
  user: ev.Assignee,
1361
1636
  textClass: "fontSize-13"
1362
1637
  }) : 'Unassigned'), /*#__PURE__*/React__default['default'].createElement("td", null, /*#__PURE__*/React__default['default'].createElement("div", {
@@ -1367,9 +1642,19 @@ var JobList = /*#__PURE__*/function (_Component) {
1367
1642
  paddingTop: 2,
1368
1643
  paddingBottom: 2,
1369
1644
  color: '#fff',
1370
- backgroundColor: status.color
1645
+ backgroundColor: status ? status.color : undefined
1371
1646
  }
1372
- }, status.text)), /*#__PURE__*/React__default['default'].createElement("td", {
1647
+ }, status ? status.text : '')), /*#__PURE__*/React__default['default'].createElement("td", null, /*#__PURE__*/React__default['default'].createElement("div", {
1648
+ style: {
1649
+ textAlign: 'center',
1650
+ borderRadius: 4,
1651
+ width: 100,
1652
+ paddingTop: 2,
1653
+ paddingBottom: 2,
1654
+ color: '#fff',
1655
+ backgroundColor: priority.color
1656
+ }
1657
+ }, priority.name)), /*#__PURE__*/React__default['default'].createElement("td", {
1373
1658
  className: "table-options"
1374
1659
  }, /*#__PURE__*/React__default['default'].createElement("div", {
1375
1660
  style: {
@@ -1385,7 +1670,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1385
1670
  cursor: 'pointer'
1386
1671
  },
1387
1672
  name: "pencil"
1388
- })), Session$6.validateAccess(_this3.props.auth.site, values.permissionMaintenanceTracking, _this3.props.auth) && /*#__PURE__*/React__default['default'].createElement("a", {
1673
+ })), Session$7.validateAccess(_this3.props.auth.site, values.permissionMaintenanceTracking, _this3.props.auth) && /*#__PURE__*/React__default['default'].createElement("a", {
1389
1674
  onClick: function onClick() {
1390
1675
  return _this3.onRemoveRequest(ev);
1391
1676
  }
@@ -1513,6 +1798,15 @@ var JobList = /*#__PURE__*/function (_Component) {
1513
1798
  _this4.sortByCol('room');
1514
1799
  }
1515
1800
  }, "Address", this.renderSort('room')), /*#__PURE__*/React__default['default'].createElement("th", {
1801
+ className: "".concat(this.sortIsActive('userName')),
1802
+ style: {
1803
+ cursor: 'pointer',
1804
+ width: 150
1805
+ },
1806
+ onClick: function onClick() {
1807
+ _this4.sortByCol('userName');
1808
+ }
1809
+ }, "Submitted By", this.renderSort('userName')), /*#__PURE__*/React__default['default'].createElement("th", {
1516
1810
  className: "".concat(this.sortIsActive('assigned')),
1517
1811
  style: {
1518
1812
  cursor: 'pointer',
@@ -1526,6 +1820,10 @@ var JobList = /*#__PURE__*/function (_Component) {
1526
1820
  width: 120
1527
1821
  }
1528
1822
  }, "Status"), /*#__PURE__*/React__default['default'].createElement("th", {
1823
+ style: {
1824
+ width: 120
1825
+ }
1826
+ }, "Priority"), /*#__PURE__*/React__default['default'].createElement("th", {
1529
1827
  style: {
1530
1828
  width: 50
1531
1829
  }
@@ -1536,37 +1834,51 @@ var JobList = /*#__PURE__*/function (_Component) {
1536
1834
  value: function renderFilters() {
1537
1835
  var _this5 = this;
1538
1836
 
1539
- var typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1837
+ var typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1540
1838
  className: "marginRight-10",
1541
1839
  onClick: function onClick() {
1542
1840
  _this5.openFilter('type');
1543
1841
  },
1544
1842
  text: values.textJobType
1545
1843
  });
1546
- var statusFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1844
+ var statusFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1547
1845
  className: "marginRight-10",
1548
1846
  onClick: function onClick() {
1549
1847
  _this5.openFilter('status');
1550
1848
  },
1551
1849
  text: "Status"
1552
1850
  });
1553
- var timeFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1851
+ var priorityFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1852
+ className: "marginRight-10",
1853
+ onClick: function onClick() {
1854
+ _this5.openFilter('priority');
1855
+ },
1856
+ text: "Priority"
1857
+ });
1858
+ var timeFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1554
1859
  className: "marginRight-10",
1555
1860
  onClick: function onClick() {
1556
1861
  _this5.openFilter('time');
1557
1862
  },
1558
1863
  text: "Time"
1559
1864
  });
1560
- var userFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1865
+ var userFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1561
1866
  className: "marginRight-10",
1562
1867
  onClick: function onClick() {
1563
1868
  _this5.openFilter('user');
1564
1869
  },
1565
1870
  text: "Assigned To"
1566
1871
  });
1872
+ var requesterFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1873
+ className: "marginRight-10",
1874
+ onClick: function onClick() {
1875
+ _this5.openFilter('requester');
1876
+ },
1877
+ text: "Submitted By"
1878
+ });
1567
1879
 
1568
1880
  if (this.state.selectedTypeFilter) {
1569
- typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1881
+ typeFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1570
1882
  className: "marginRight-10",
1571
1883
  onClick: function onClick() {
1572
1884
  _this5.openFilter('type');
@@ -1581,8 +1893,24 @@ var JobList = /*#__PURE__*/function (_Component) {
1581
1893
  });
1582
1894
  }
1583
1895
 
1896
+ if (this.state.selectedPriorityFilter) {
1897
+ priorityFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1898
+ className: "marginRight-10",
1899
+ onClick: function onClick() {
1900
+ _this5.openFilter('priority');
1901
+ },
1902
+ rightIcon: "close",
1903
+ rightClick: function rightClick(e) {
1904
+ e.stopPropagation();
1905
+
1906
+ _this5.selectPriorityFilter();
1907
+ },
1908
+ text: this.state.selectedPriorityFilter
1909
+ });
1910
+ }
1911
+
1584
1912
  if (this.state.selectedStatusFilter) {
1585
- statusFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1913
+ statusFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1586
1914
  className: "marginRight-10",
1587
1915
  onClick: function onClick() {
1588
1916
  _this5.openFilter('status');
@@ -1593,12 +1921,12 @@ var JobList = /*#__PURE__*/function (_Component) {
1593
1921
 
1594
1922
  _this5.selectStatusFilter();
1595
1923
  },
1596
- text: this.state.selectedStatusFilter === 'incomplete' ? 'All Incomplete' : StatusTypes[this.state.selectedStatusFilter].text
1924
+ text: this.state.selectedStatusFilter
1597
1925
  });
1598
1926
  }
1599
1927
 
1600
1928
  if (this.state.selectedTimeFilterText) {
1601
- timeFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1929
+ timeFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1602
1930
  className: "marginRight-10",
1603
1931
  onClick: function onClick() {
1604
1932
  _this5.openFilter('time');
@@ -1614,7 +1942,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1614
1942
  }
1615
1943
 
1616
1944
  if (this.state.selectedUserFilter) {
1617
- userFilter = /*#__PURE__*/React__default['default'].createElement(Components$6.Tag, {
1945
+ userFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1618
1946
  className: "marginRight-10",
1619
1947
  onClick: function onClick() {
1620
1948
  _this5.openFilter('user');
@@ -1629,20 +1957,36 @@ var JobList = /*#__PURE__*/function (_Component) {
1629
1957
  });
1630
1958
  }
1631
1959
 
1960
+ if (this.state.selectedRequesterFilter) {
1961
+ requesterFilter = /*#__PURE__*/React__default['default'].createElement(Components$7.Tag, {
1962
+ className: "marginRight-10",
1963
+ onClick: function onClick() {
1964
+ _this5.openFilter('requester');
1965
+ },
1966
+ rightIcon: "close",
1967
+ rightClick: function rightClick(e) {
1968
+ e.stopPropagation();
1969
+
1970
+ _this5.removeRequesterFilter();
1971
+ },
1972
+ text: this.state.selectedRequesterFilterText
1973
+ });
1974
+ }
1975
+
1632
1976
  return /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement("div", {
1633
1977
  className: "marginTop-20 flex flex-between flex-center"
1634
1978
  }, /*#__PURE__*/React__default['default'].createElement("div", {
1635
1979
  className: "flex flex-center"
1636
- }, /*#__PURE__*/React__default['default'].createElement(Components$6.Text, {
1980
+ }, /*#__PURE__*/React__default['default'].createElement(Components$7.Text, {
1637
1981
  type: "h5",
1638
1982
  className: "marginRight-20"
1639
- }, "Filter by"), typeFilter, statusFilter, timeFilter, userFilter), /*#__PURE__*/React__default['default'].createElement(Components$6.Button, {
1983
+ }, "Filter by"), typeFilter, statusFilter, priorityFilter, timeFilter, userFilter, requesterFilter), /*#__PURE__*/React__default['default'].createElement(Components$7.Button, {
1640
1984
  inline: true,
1641
1985
  buttonType: "primaryAction",
1642
1986
  leftIcon: "file-code-o",
1643
1987
  onClick: this.onOpenExportCsv,
1644
1988
  isActive: !___default['default'].isEmpty(this.getSource())
1645
- }, "Export CSV")), /*#__PURE__*/React__default['default'].createElement(Components$6.GenericInput, {
1989
+ }, "Export CSV")), /*#__PURE__*/React__default['default'].createElement(Components$7.GenericInput, {
1646
1990
  id: "search",
1647
1991
  type: "text",
1648
1992
  placeholder: "Search by ".concat(values.textEntityName, " ID, Address or Title"),
@@ -1667,7 +2011,7 @@ var JobList = /*#__PURE__*/function (_Component) {
1667
2011
  columns = _this$getExportSource.columns,
1668
2012
  source = _this$getExportSource.source;
1669
2013
 
1670
- return /*#__PURE__*/React__default['default'].createElement(Components$6.ExportCsvPopup, {
2014
+ return /*#__PURE__*/React__default['default'].createElement(Components$7.ExportCsvPopup, {
1671
2015
  onClose: this.onCloseExportCsv,
1672
2016
  columns: columns,
1673
2017
  source: source,
@@ -1688,30 +2032,32 @@ var JobList = /*#__PURE__*/function (_Component) {
1688
2032
  return JobList;
1689
2033
  }(React.Component);
1690
2034
 
1691
- var mapStateToProps$6 = function mapStateToProps(state) {
2035
+ var mapStateToProps$7 = function mapStateToProps(state) {
1692
2036
  var auth = state.auth;
1693
2037
  return {
1694
2038
  jobs: state[values.reducerKey].jobs,
1695
2039
  auth: auth,
1696
- strings: state.strings && state.strings.config || {}
2040
+ strings: state.strings && state.strings.config || {},
2041
+ statusTypes: state[values.reducerKey].jobstatuses
1697
2042
  };
1698
2043
  };
1699
2044
 
1700
- var JobList$1 = reactRedux.connect(mapStateToProps$6, {
2045
+ var JobList$1 = reactRedux.connect(mapStateToProps$7, {
1701
2046
  jobsLoaded: jobsLoaded,
1702
- removeJob: removeJob
2047
+ removeJob: removeJob,
2048
+ jobStatusesUpdate: jobStatusesUpdate
1703
2049
  })(reactRouter.withRouter(JobList));
1704
2050
 
1705
- 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); }; }
2051
+ 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); }; }
1706
2052
 
1707
- 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; } }
1708
- var Session$5 = PlussCore__namespace.Session,
1709
- Components$5 = PlussCore__namespace.Components;
2053
+ 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; } }
2054
+ var Session$6 = PlussCore__namespace.Session,
2055
+ Components$6 = PlussCore__namespace.Components;
1710
2056
 
1711
2057
  var JobTypes = /*#__PURE__*/function (_Component) {
1712
2058
  _inherits__default['default'](JobTypes, _Component);
1713
2059
 
1714
- var _super = _createSuper$a(JobTypes);
2060
+ var _super = _createSuper$b(JobTypes);
1715
2061
 
1716
2062
  function JobTypes(props) {
1717
2063
  var _this;
@@ -1837,7 +2183,7 @@ var JobTypes = /*#__PURE__*/function (_Component) {
1837
2183
  key: "componentWillMount",
1838
2184
  value: function componentWillMount() {
1839
2185
  this.updateProps(this.props);
1840
- Session$5.checkLoggedIn(this, this.props.auth);
2186
+ Session$6.checkLoggedIn(this, this.props.auth);
1841
2187
  }
1842
2188
  }, {
1843
2189
  key: "componentDidMount",
@@ -1884,7 +2230,7 @@ var JobTypes = /*#__PURE__*/function (_Component) {
1884
2230
  display: 'flex',
1885
2231
  alignItems: 'center'
1886
2232
  }
1887
- }, Session$5.validateAccess(_this2.props.auth.site, values.permissionMaintenanceTypes, _this2.props.auth) && /*#__PURE__*/React__default['default'].createElement(reactRouterDom.Link, {
2233
+ }, Session$6.validateAccess(_this2.props.auth.site, values.permissionMaintenanceTypes, _this2.props.auth) && /*#__PURE__*/React__default['default'].createElement(reactRouterDom.Link, {
1888
2234
  to: "".concat(values.routeAddRequestType, "/").concat(ev.id)
1889
2235
  }, /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
1890
2236
  style: {
@@ -1894,7 +2240,7 @@ var JobTypes = /*#__PURE__*/function (_Component) {
1894
2240
  cursor: 'pointer'
1895
2241
  },
1896
2242
  name: "pencil"
1897
- })), Session$5.validateAccess(_this2.props.auth.site, values.permissionMaintenanceTypes, _this2.props.auth) && /*#__PURE__*/React__default['default'].createElement("a", {
2243
+ })), Session$6.validateAccess(_this2.props.auth.site, values.permissionMaintenanceTypes, _this2.props.auth) && /*#__PURE__*/React__default['default'].createElement("a", {
1898
2244
  onClick: function onClick() {
1899
2245
  return _this2.onRemoveJobType(ev);
1900
2246
  }
@@ -1981,50 +2327,581 @@ var JobTypes = /*#__PURE__*/function (_Component) {
1981
2327
  maxWidth: 500,
1982
2328
  textAlign: 'center'
1983
2329
  }
1984
- }, values.textEmptyJobTypesExample));
2330
+ }, values.textEmptyJobTypesExample));
2331
+ }
2332
+ }, {
2333
+ key: "renderContent",
2334
+ value: function renderContent() {
2335
+ if (___default['default'].isEmpty(this.state.jobList)) return this.renderEmpty();
2336
+ return this.renderView();
2337
+ }
2338
+ }, {
2339
+ key: "renderJobTypes",
2340
+ value: function renderJobTypes() {
2341
+ var _this$state = this.state,
2342
+ jobList = _this$state.jobList,
2343
+ loading = _this$state.loading;
2344
+
2345
+ if (jobList.length === 0 && loading) {
2346
+ return /*#__PURE__*/React__default['default'].createElement("div", {
2347
+ style: {
2348
+ minWidth: '100%'
2349
+ }
2350
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
2351
+ className: "padding-60 paddingVertical-40",
2352
+ style: {
2353
+ textAlign: 'center'
2354
+ }
2355
+ }, /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
2356
+ style: {
2357
+ fontSize: 30,
2358
+ color: FeatureConfig.env.colourBrandingOff
2359
+ },
2360
+ name: "spinner fa-pulse fa-fw"
2361
+ })));
2362
+ }
2363
+
2364
+ return /*#__PURE__*/React__default['default'].createElement("div", {
2365
+ style: {
2366
+ minWidth: '100%'
2367
+ }
2368
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
2369
+ className: "marginBottom-32"
2370
+ }, /*#__PURE__*/React__default['default'].createElement(Components$6.AddButton, {
2371
+ onClick: this.props.onNew,
2372
+ text: values.textNewTypeButton
2373
+ })), this.renderContent());
2374
+ }
2375
+ }, {
2376
+ key: "render",
2377
+ value: function render() {
2378
+ return /*#__PURE__*/React__default['default'].createElement("div", {
2379
+ style: {
2380
+ minWidth: '100%'
2381
+ }
2382
+ }, /*#__PURE__*/React__default['default'].createElement("div", null, this.renderJobTypes()), /*#__PURE__*/React__default['default'].createElement("div", {
2383
+ className: "hub_tidioPadding"
2384
+ }));
2385
+ }
2386
+ }]);
2387
+
2388
+ return JobTypes;
2389
+ }(React.Component);
2390
+
2391
+ var mapStateToProps$6 = function mapStateToProps(state) {
2392
+ var auth = state.auth;
2393
+ return {
2394
+ jobtypes: state[values.reducerKey].jobtypes,
2395
+ auth: auth
2396
+ };
2397
+ };
2398
+
2399
+ var JobTypes$1 = reactRedux.connect(mapStateToProps$6, {
2400
+ jobTypesLoaded: jobTypesLoaded,
2401
+ jobTypesUpdate: jobTypesUpdate
2402
+ })(reactRouter.withRouter(JobTypes));
2403
+
2404
+ 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; }
2405
+
2406
+ 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; }
2407
+
2408
+ 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); }; }
2409
+
2410
+ 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; } }
2411
+ var Session$5 = PlussCore__namespace.Session,
2412
+ Components$5 = PlussCore__namespace.Components,
2413
+ Colours$2 = PlussCore__namespace.Colours;
2414
+
2415
+ var Configuration = /*#__PURE__*/function (_Component) {
2416
+ _inherits__default['default'](Configuration, _Component);
2417
+
2418
+ var _super = _createSuper$a(Configuration);
2419
+
2420
+ function Configuration(props) {
2421
+ var _this;
2422
+
2423
+ _classCallCheck__default['default'](this, Configuration);
2424
+
2425
+ _this = _super.call(this, props);
2426
+
2427
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "isStatusValid", function (statusLabel, statusCategory, statusColour) {
2428
+ if (___default['default'].isEmpty(statusLabel)) return false;
2429
+ if (___default['default'].isEmpty(statusCategory)) return false;
2430
+ if (___default['default'].isEmpty(statusColour)) return false;
2431
+ return true;
2432
+ });
2433
+
2434
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onMoveStatus", function (index) {
2435
+ var up = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
2436
+ if (_this.state.fetchingStatusTypes) return;
2437
+
2438
+ var statusTypes = ___default['default'].cloneDeep(_this.state.statusTypes);
2439
+
2440
+ if (up && index > 0) {
2441
+ // Moving up
2442
+ var _ref = [statusTypes[index], statusTypes[index - 1]];
2443
+ statusTypes[index - 1] = _ref[0];
2444
+ statusTypes[index] = _ref[1];
2445
+ } else if (index < statusTypes.length - 1) {
2446
+ // Moving down
2447
+ var _ref2 = [statusTypes[index + 1], statusTypes[index]];
2448
+ statusTypes[index] = _ref2[0];
2449
+ statusTypes[index + 1] = _ref2[1];
2450
+ } // Reset order
2451
+
2452
+
2453
+ statusTypes.forEach(function (status, index) {
2454
+ return status.order = index;
2455
+ });
2456
+
2457
+ _this.setState({
2458
+ statusTypes: statusTypes
2459
+ });
2460
+ });
2461
+
2462
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onEditStatus", function (index) {
2463
+ if (_this.state.fetchingStatusTypes) return;
2464
+ var status = _this.state.statusTypes[index];
2465
+
2466
+ _this.setState({
2467
+ showWarnings: false,
2468
+ showStatusPopup: true,
2469
+ selectedStatusIndex: index,
2470
+ statusLabel: status.text,
2471
+ statusCategory: status.category,
2472
+ statusColour: status.color
2473
+ });
2474
+ });
2475
+
2476
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onDeleteStatus", function (index) {
2477
+ if (_this.state.fetchingStatusTypes) return;
2478
+
2479
+ var statusTypes = ___default['default'].cloneDeep(_this.state.statusTypes);
2480
+
2481
+ statusTypes.splice(index, 1);
2482
+
2483
+ _this.setState({
2484
+ statusTypes: statusTypes
2485
+ });
2486
+ });
2487
+
2488
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onAddStatus", function () {
2489
+ var defaultStatus = _this.props.statusTypes.find(function (s) {
2490
+ return s.category === STATUS_NOT_ACTIONED;
2491
+ });
2492
+
2493
+ _this.setState({
2494
+ showWarnings: false,
2495
+ showStatusPopup: true,
2496
+ selectedStatusIndex: -1,
2497
+ statusLabel: '',
2498
+ statusCategory: STATUS_NOT_ACTIONED,
2499
+ statusColour: defaultStatus.color
2500
+ });
2501
+ });
2502
+
2503
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onSaveStatus", function () {
2504
+ var _this$state = _this.state,
2505
+ selectedStatusIndex = _this$state.selectedStatusIndex,
2506
+ statusLabel = _this$state.statusLabel,
2507
+ statusCategory = _this$state.statusCategory,
2508
+ statusColour = _this$state.statusColour;
2509
+
2510
+ var statusTypes = ___default['default'].cloneDeep(_this.state.statusTypes);
2511
+
2512
+ if (selectedStatusIndex < 0) {
2513
+ statusTypes.push({
2514
+ text: statusLabel,
2515
+ order: statusTypes.length,
2516
+ color: statusColour,
2517
+ category: statusCategory
2518
+ });
2519
+ } else {
2520
+ var status = statusTypes[selectedStatusIndex];
2521
+ status.text = statusLabel;
2522
+ status.color = statusColour;
2523
+ status.category = statusCategory;
2524
+ }
2525
+
2526
+ _this.setState({
2527
+ statusTypes: statusTypes,
2528
+ showStatusPopup: false
2529
+ });
2530
+ });
2531
+
2532
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onHideStatusPopup", function () {
2533
+ if (_this.state.submitting) return;
2534
+
2535
+ _this.setState({
2536
+ showStatusPopup: false
2537
+ });
2538
+ });
2539
+
2540
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onHandleChange", function (event) {
2541
+ var stateChange = {};
2542
+ stateChange[event.target.getAttribute('id')] = event.target.value;
2543
+
2544
+ _this.setState(stateChange);
2545
+ });
2546
+
2547
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onToggleDisableSeen", function () {
2548
+ if (_this.state.fetchingHideSeen) return;
2549
+
2550
+ _this.setState({
2551
+ hideSeen: !_this.state.hideSeen
2552
+ });
2553
+ });
2554
+
2555
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onSaveConfig", function () {
2556
+ if (!_this.validateForm()) return;
2557
+
2558
+ _this.setState({
2559
+ success: false,
2560
+ submitting: true
2561
+ }, /*#__PURE__*/_asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee() {
2562
+ var _this$state2, statusTypes, hideSeen;
2563
+
2564
+ return _regeneratorRuntime__default['default'].wrap(function _callee$(_context) {
2565
+ while (1) {
2566
+ switch (_context.prev = _context.next) {
2567
+ case 0:
2568
+ _context.prev = 0;
2569
+ _this$state2 = _this.state, statusTypes = _this$state2.statusTypes, hideSeen = _this$state2.hideSeen;
2570
+ _context.next = 4;
2571
+ return stringActions.setString(_this.props.auth.site, values.stringConfigJobStatus, statusTypes);
2572
+
2573
+ case 4:
2574
+ _context.next = 6;
2575
+ return stringActions.setString(_this.props.auth.site, values.stringConfigHideSeen, hideSeen);
2576
+
2577
+ case 6:
2578
+ _this.props.jobStatusesLoaded(statusTypes);
2579
+
2580
+ _this.props.jobHideSeenLoaded(hideSeen);
2581
+
2582
+ _this.setState({
2583
+ success: true
2584
+ });
2585
+
2586
+ _context.next = 15;
2587
+ break;
2588
+
2589
+ case 11:
2590
+ _context.prev = 11;
2591
+ _context.t0 = _context["catch"](0);
2592
+ console.log('onSaveConfig - error', _context.t0);
2593
+
2594
+ _this.setState({
2595
+ success: false
2596
+ });
2597
+
2598
+ case 15:
2599
+ _context.prev = 15;
2600
+
2601
+ _this.setState({
2602
+ submitting: false
2603
+ });
2604
+
2605
+ return _context.finish(15);
2606
+
2607
+ case 18:
2608
+ case "end":
2609
+ return _context.stop();
2610
+ }
2611
+ }
2612
+ }, _callee, null, [[0, 11, 15, 18]]);
2613
+ })));
2614
+ });
2615
+
2616
+ _this.state = {
2617
+ success: false,
2618
+ submitting: false,
2619
+ selectedStatusIndex: -1,
2620
+ showStatusPopup: false,
2621
+ statusLabel: '',
2622
+ statusCategory: STATUS_NOT_ACTIONED,
2623
+ statusColour: '',
2624
+ fetchingStatusTypes: true,
2625
+ statusTypes: _this.props.statusTypes,
2626
+ fetchingHideSeen: true,
2627
+ hideSeen: _this.props.hideSeen
2628
+ };
2629
+ return _this;
2630
+ }
2631
+
2632
+ _createClass__default['default'](Configuration, [{
2633
+ key: "UNSAFE_componentWillMount",
2634
+ value: function UNSAFE_componentWillMount() {
2635
+ Session$5.checkLoggedIn(this);
2636
+ }
2637
+ }, {
2638
+ key: "componentDidMount",
2639
+ value: function componentDidMount() {
2640
+ var _this2 = this;
2641
+
2642
+ if (!Session$5.validateAccess(this.props.auth.site, 'featurePicker', this.props.auth, true)) {
2643
+ this.props.history.push('/mastermenu');
2644
+ } else {
2645
+ this.props.jobStatusesUpdate(this.props.auth.site, function (statusTypes) {
2646
+ return _this2.setState({
2647
+ statusTypes: statusTypes,
2648
+ fetchingStatusTypes: false
2649
+ });
2650
+ });
2651
+ this.props.jobHideSeenUpdate(this.props.auth.site, function (hideSeen) {
2652
+ return _this2.setState({
2653
+ hideSeen: hideSeen,
2654
+ fetchingHideSeen: false
2655
+ });
2656
+ });
2657
+ }
2658
+ }
2659
+ }, {
2660
+ key: "validateForm",
2661
+ value: function validateForm() {
2662
+ var _this3 = this;
2663
+
2664
+ var _this$state3 = this.state,
2665
+ submitting = _this$state3.submitting,
2666
+ statusTypes = _this$state3.statusTypes;
2667
+ if (submitting) return false; // Validate statuses
2668
+
2669
+ var statusesValid = statusTypes.map(function (status) {
2670
+ var text = status.text,
2671
+ category = status.category,
2672
+ color = status.color;
2673
+ return _this3.isStatusValid(text, category, color);
2674
+ });
2675
+ if (!statusesValid.every(function (valid) {
2676
+ return valid;
2677
+ })) return false;
2678
+ return true;
2679
+ }
2680
+ }, {
2681
+ key: "renderStatuses",
2682
+ value: function renderStatuses() {
2683
+ var _this4 = this;
2684
+
2685
+ var statusTypes = this.state.statusTypes;
2686
+ return /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement("p", {
2687
+ className: "fontMedium fontSize-36 text-dark"
2688
+ }, "Statuses"), /*#__PURE__*/React__default['default'].createElement("div", {
2689
+ style: styles$6.statusCategoryHeading
2690
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
2691
+ className: "fontMedium fontSize-16 text-bold"
2692
+ }, "Status Category")), statusTypes.map(function (status, index) {
2693
+ return /*#__PURE__*/React__default['default'].createElement("div", {
2694
+ key: "".concat(status.text, "_").concat(index),
2695
+ style: styles$6.statusTypeContainer
2696
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
2697
+ key: status.text,
2698
+ className: "statusLabel",
2699
+ style: _objectSpread$5(_objectSpread$5({}, styles$6.statusTextContainer), {}, {
2700
+ backgroundColor: status.color
2701
+ })
2702
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
2703
+ className: "statusLabel_text"
2704
+ }, status.text)), /*#__PURE__*/React__default['default'].createElement("div", {
2705
+ style: styles$6.statusCategoryContainer
2706
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
2707
+ className: "fontMedium fontSize-16 text-dark"
2708
+ }, status.category)), /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
2709
+ style: _objectSpread$5(_objectSpread$5({}, styles$6.statusIcon), {}, {
2710
+ visibility: index === 0 ? 'hidden' : 'visible'
2711
+ }),
2712
+ name: 'arrow-up',
2713
+ onClick: function onClick() {
2714
+ return _this4.onMoveStatus(index, true);
2715
+ }
2716
+ }), /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
2717
+ style: _objectSpread$5(_objectSpread$5({}, styles$6.statusIcon), {}, {
2718
+ visibility: index === statusTypes.length - 1 ? 'hidden' : 'visible'
2719
+ }),
2720
+ name: 'arrow-down',
2721
+ onClick: function onClick() {
2722
+ return _this4.onMoveStatus(index, false);
2723
+ }
2724
+ }), /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
2725
+ style: _objectSpread$5({}, styles$6.statusIcon),
2726
+ name: "pencil",
2727
+ onClick: function onClick() {
2728
+ return _this4.onEditStatus(index);
2729
+ }
2730
+ }), /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
2731
+ style: _objectSpread$5({}, styles$6.statusIcon),
2732
+ name: "minus-circle",
2733
+ onClick: function onClick() {
2734
+ return _this4.onDeleteStatus(index);
2735
+ }
2736
+ }));
2737
+ }), /*#__PURE__*/React__default['default'].createElement("div", {
2738
+ onClick: this.onAddStatus,
2739
+ style: {
2740
+ display: 'flex',
2741
+ flexDirection: 'row',
2742
+ alignItems: 'center',
2743
+ marginTop: 16
2744
+ }
2745
+ }, /*#__PURE__*/React__default['default'].createElement(Components$5.P60Icon, {
2746
+ className: "addoption_plus",
2747
+ icon: "add",
2748
+ style: {
2749
+ fontSize: 12
2750
+ }
2751
+ }), /*#__PURE__*/React__default['default'].createElement("p", {
2752
+ className: "addoption_text"
2753
+ }, "Add another status")));
1985
2754
  }
1986
2755
  }, {
1987
- key: "renderContent",
1988
- value: function renderContent() {
1989
- if (___default['default'].isEmpty(this.state.jobList)) return this.renderEmpty();
1990
- return this.renderView();
2756
+ key: "renderOtherOptions",
2757
+ value: function renderOtherOptions() {
2758
+ return /*#__PURE__*/React__default['default'].createElement("div", {
2759
+ className: "marginTop-55"
2760
+ }, /*#__PURE__*/React__default['default'].createElement("p", {
2761
+ className: "fontMedium fontSize-36 text-dark"
2762
+ }, "Other options"), /*#__PURE__*/React__default['default'].createElement(Components$5.CheckBox, {
2763
+ label: "Disable whether a request has been \"Seen\" and prevent that from being surfaced to the App user",
2764
+ isActive: this.state.hideSeen,
2765
+ onChange: this.onToggleDisableSeen
2766
+ }));
1991
2767
  }
1992
2768
  }, {
1993
- key: "renderJobTypes",
1994
- value: function renderJobTypes() {
1995
- var _this$state = this.state,
1996
- jobList = _this$state.jobList,
1997
- loading = _this$state.loading;
2769
+ key: "renderSubmit",
2770
+ value: function renderSubmit() {
2771
+ if (this.state.submitting) {
2772
+ return /*#__PURE__*/React__default['default'].createElement(Components$5.Button, {
2773
+ buttonType: "secondary"
2774
+ }, "Saving...");
2775
+ }
1998
2776
 
1999
- if (jobList.length === 0 && loading) {
2000
- return /*#__PURE__*/React__default['default'].createElement("div", {
2001
- style: {
2002
- minWidth: '100%'
2003
- }
2777
+ return /*#__PURE__*/React__default['default'].createElement(Components$5.Button, {
2778
+ inline: true,
2779
+ buttonType: "primary",
2780
+ onClick: this.onSaveConfig,
2781
+ isActive: this.validateForm()
2782
+ }, "Save");
2783
+ }
2784
+ }, {
2785
+ key: "renderSuccess",
2786
+ value: function renderSuccess() {
2787
+ if (!this.state.success) return null;
2788
+ return /*#__PURE__*/React__default['default'].createElement("span", {
2789
+ style: _objectSpread$5(_objectSpread$5({}, styles$6.savedText), {}, {
2790
+ color: Colours$2.COLOUR_GREEN
2791
+ })
2792
+ }, "Saved");
2793
+ }
2794
+ }, {
2795
+ key: "renderNewStatusPopup",
2796
+ value: function renderNewStatusPopup() {
2797
+ var _ref4,
2798
+ _this5 = this;
2799
+
2800
+ var _this$state4 = this.state,
2801
+ submitting = _this$state4.submitting,
2802
+ showStatusPopup = _this$state4.showStatusPopup,
2803
+ showWarnings = _this$state4.showWarnings,
2804
+ selectedStatusIndex = _this$state4.selectedStatusIndex,
2805
+ statusLabel = _this$state4.statusLabel,
2806
+ statusCategory = _this$state4.statusCategory,
2807
+ statusColour = _this$state4.statusColour;
2808
+ if (!showStatusPopup) return null;
2809
+ var canSave = !submitting && this.isStatusValid(statusLabel, statusCategory, statusColour);
2810
+ return /*#__PURE__*/React__default['default'].createElement(Components$5.Popup, {
2811
+ maxWidth: 800,
2812
+ minWidth: 450,
2813
+ hasPadding: true,
2814
+ buttons: [(_ref4 = {
2815
+ type: 'primaryAction',
2816
+ onClick: this.onSaveStatus,
2817
+ isActive: canSave
2818
+ }, _defineProperty__default['default'](_ref4, "isActive", true), _defineProperty__default['default'](_ref4, "text", submitting ? 'Saving...' : 'Save'), _defineProperty__default['default'](_ref4, "className", 'popupButton'), _ref4), {
2819
+ type: 'outlinedAction',
2820
+ onClick: this.onHideStatusPopup,
2821
+ isActive: !submitting,
2822
+ text: 'Cancel',
2823
+ className: 'popupButton'
2824
+ }],
2825
+ onClose: this.onHideStatusPopup,
2826
+ title: selectedStatusIndex < 0 ? 'New Status' : 'Edit Status'
2827
+ }, /*#__PURE__*/React__default['default'].createElement(Components$5.GenericInput, {
2828
+ id: "statusLabel",
2829
+ type: "text",
2830
+ label: "Label",
2831
+ placeholder: "Status label",
2832
+ value: statusLabel,
2833
+ onChange: this.onHandleChange,
2834
+ isRequired: true,
2835
+ isValid: function isValid() {
2836
+ return !___default['default'].isEmpty(statusLabel);
2837
+ },
2838
+ showError: function showError() {
2839
+ return showWarnings && ___default['default'].isEmpty(statusLabel);
2840
+ },
2841
+ alwaysShowLabel: true,
2842
+ className: "marginBottom-20"
2843
+ }), /*#__PURE__*/React__default['default'].createElement(Components$5.RadioButton, {
2844
+ label: "Status Category",
2845
+ subLabel: /*#__PURE__*/React__default['default'].createElement("div", {
2846
+ className: "marginBottom-16"
2004
2847
  }, /*#__PURE__*/React__default['default'].createElement("div", {
2005
- className: "padding-60 paddingVertical-40",
2006
- style: {
2007
- textAlign: 'center'
2848
+ className: "marginBottom-4"
2849
+ }, 'This is used to categorise statuses for filtering and analytics purposes'), /*#__PURE__*/React__default['default'].createElement("div", {
2850
+ className: "text-bold"
2851
+ }, 'This status is considered')),
2852
+ className: "marginBottom-20",
2853
+ rowStyle: {
2854
+ flexDirection: 'column'
2855
+ },
2856
+ buttonStyle: {
2857
+ marginBottom: 8
2858
+ },
2859
+ isActive: statusCategory || null,
2860
+ options: [{
2861
+ Label: STATUS_NOT_ACTIONED,
2862
+ Value: STATUS_NOT_ACTIONED,
2863
+ onChange: function onChange() {
2864
+ return _this5.setState({
2865
+ statusCategory: STATUS_NOT_ACTIONED
2866
+ });
2008
2867
  }
2009
- }, /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
2010
- style: {
2011
- fontSize: 30,
2012
- color: FeatureConfig.env.colourBrandingOff
2013
- },
2014
- name: "spinner fa-pulse fa-fw"
2015
- })));
2016
- }
2017
-
2018
- return /*#__PURE__*/React__default['default'].createElement("div", {
2019
- style: {
2020
- minWidth: '100%'
2868
+ }, {
2869
+ Label: STATUS_IN_PROGRESS,
2870
+ Value: STATUS_IN_PROGRESS,
2871
+ onChange: function onChange() {
2872
+ return _this5.setState({
2873
+ statusCategory: STATUS_IN_PROGRESS
2874
+ });
2875
+ }
2876
+ }, {
2877
+ Label: STATUS_COMPLETED,
2878
+ Value: STATUS_COMPLETED,
2879
+ onChange: function onChange() {
2880
+ return _this5.setState({
2881
+ statusCategory: STATUS_COMPLETED
2882
+ });
2883
+ }
2884
+ }]
2885
+ }), /*#__PURE__*/React__default['default'].createElement(Components$5.ColourOptions, {
2886
+ options: ['vibrant', 'picker'],
2887
+ defaultTab: "vibrant",
2888
+ value: statusColour,
2889
+ onColourSelected: function onColourSelected(statusColour) {
2890
+ return _this5.setState({
2891
+ statusColour: statusColour
2892
+ });
2021
2893
  }
2894
+ }), /*#__PURE__*/React__default['default'].createElement("div", {
2895
+ className: "marginTop-24"
2022
2896
  }, /*#__PURE__*/React__default['default'].createElement("div", {
2023
- className: "marginBottom-32"
2024
- }, /*#__PURE__*/React__default['default'].createElement(Components$5.AddButton, {
2025
- onClick: this.props.onNew,
2026
- text: values.textNewTypeButton
2027
- })), this.renderContent());
2897
+ className: "fieldLabel marginBottom-4"
2898
+ }, "Preview"), /*#__PURE__*/React__default['default'].createElement(Components$5.Tag, {
2899
+ text: this.state.statusLabel,
2900
+ style: {
2901
+ backgroundColor: statusColour,
2902
+ borderColor: statusColour
2903
+ }
2904
+ })));
2028
2905
  }
2029
2906
  }, {
2030
2907
  key: "render",
@@ -2033,27 +2910,68 @@ var JobTypes = /*#__PURE__*/function (_Component) {
2033
2910
  style: {
2034
2911
  minWidth: '100%'
2035
2912
  }
2036
- }, /*#__PURE__*/React__default['default'].createElement("div", null, this.renderJobTypes()), /*#__PURE__*/React__default['default'].createElement("div", {
2037
- className: "hub_tidioPadding"
2038
- }));
2913
+ }, this.renderStatuses(), this.renderOtherOptions(), /*#__PURE__*/React__default['default'].createElement("div", {
2914
+ style: {
2915
+ paddingTop: 24,
2916
+ paddingBottom: 24
2917
+ }
2918
+ }, this.renderSubmit(), this.renderSuccess()), this.renderNewStatusPopup());
2039
2919
  }
2040
2920
  }]);
2041
2921
 
2042
- return JobTypes;
2922
+ return Configuration;
2043
2923
  }(React.Component);
2044
2924
 
2925
+ var styles$6 = {
2926
+ statusCategoryHeading: {
2927
+ marginLeft: 130,
2928
+ width: 160,
2929
+ textAlign: 'center',
2930
+ marginBottom: 12
2931
+ },
2932
+ statusTypeContainer: {
2933
+ display: 'flex',
2934
+ flexDirection: 'row',
2935
+ alignItems: 'center',
2936
+ marginBottom: 20
2937
+ },
2938
+ statusTextContainer: {
2939
+ width: 130
2940
+ },
2941
+ statusCategoryContainer: {
2942
+ width: 160,
2943
+ textAlign: 'center'
2944
+ },
2945
+ statusIcon: {
2946
+ cursor: 'pointer',
2947
+ fontSize: 20,
2948
+ padding: 5,
2949
+ marginLeft: 10,
2950
+ color: Colours$2.COLOUR_BRANDING_ACTION,
2951
+ visibility: 'visible'
2952
+ },
2953
+ savedText: {
2954
+ fontSize: 14,
2955
+ lineHeight: '33px',
2956
+ marginLeft: 15
2957
+ }
2958
+ };
2959
+
2045
2960
  var mapStateToProps$5 = function mapStateToProps(state) {
2046
2961
  var auth = state.auth;
2047
2962
  return {
2048
- jobtypes: state[values.reducerKey].jobtypes,
2049
- auth: auth
2963
+ auth: auth,
2964
+ statusTypes: state[values.reducerKey].jobstatuses,
2965
+ hideSeen: state[values.reducerKey].hideSeen
2050
2966
  };
2051
2967
  };
2052
2968
 
2053
- var JobTypes$1 = reactRedux.connect(mapStateToProps$5, {
2054
- jobTypesLoaded: jobTypesLoaded,
2055
- jobTypesUpdate: jobTypesUpdate
2056
- })(reactRouter.withRouter(JobTypes));
2969
+ var Configuration$1 = reactRedux.connect(mapStateToProps$5, {
2970
+ jobStatusesUpdate: jobStatusesUpdate,
2971
+ jobStatusesLoaded: jobStatusesLoaded,
2972
+ jobHideSeenUpdate: jobHideSeenUpdate,
2973
+ jobHideSeenLoaded: jobHideSeenLoaded
2974
+ })(reactRouter.withRouter(Configuration));
2057
2975
 
2058
2976
  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); }; }
2059
2977
 
@@ -2264,6 +3182,21 @@ var RequestsHub = /*#__PURE__*/function (_Component) {
2264
3182
  });
2265
3183
  }
2266
3184
 
3185
+ if (Session$4.validateAccess(this.props.auth.site, 'featurePicker', this.props.auth)) {
3186
+ sectionItems.push({
3187
+ type: 'navItem',
3188
+ text: 'Feature Configuration',
3189
+ icon: 'settings',
3190
+ isFontAwesome: false,
3191
+ selected: this.state.selectedSection === 'config',
3192
+ onClick: function onClick() {
3193
+ _this2.setState({
3194
+ selectedSection: 'config'
3195
+ });
3196
+ }
3197
+ });
3198
+ }
3199
+
2267
3200
  var helpGuide = {
2268
3201
  text: "Help with ".concat(values.textTitleRequests),
2269
3202
  url: Urls.HelpGuide.Maintenance
@@ -2283,6 +3216,8 @@ var RequestsHub = /*#__PURE__*/function (_Component) {
2283
3216
  return /*#__PURE__*/React__default['default'].createElement(JobTypes$1, {
2284
3217
  onNew: this.onAddRequestType
2285
3218
  });
3219
+ } else if (this.state.selectedSection === 'config') {
3220
+ return /*#__PURE__*/React__default['default'].createElement(Configuration$1, null);
2286
3221
  }
2287
3222
 
2288
3223
  return /*#__PURE__*/React__default['default'].createElement(JobList$1, {
@@ -2354,6 +3289,7 @@ var Apis = PlussCore__namespace.Apis,
2354
3289
  Session$3 = PlussCore__namespace.Session,
2355
3290
  Colours$1 = PlussCore__namespace.Colours,
2356
3291
  Components$3 = PlussCore__namespace.Components;
3292
+ var IMAGE_SIZE_NOTE = 72;
2357
3293
 
2358
3294
  var Job = /*#__PURE__*/function (_Component) {
2359
3295
  _inherits__default['default'](Job, _Component);
@@ -2438,13 +3374,20 @@ var Job = /*#__PURE__*/function (_Component) {
2438
3374
  })));
2439
3375
 
2440
3376
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "getStatusType", function (status) {
2441
- var statusType = StatusTypes[status] || Object.values(StatusTypes).find(function (s) {
3377
+ var statusTypes = _this.props.statusTypes;
3378
+ var statusType = statusTypes.find(function (s) {
2442
3379
  return s.text === status;
2443
3380
  });
2444
- if (!statusType) statusType = {
2445
- text: status,
2446
- color: '#aaa'
2447
- };
3381
+
3382
+ if (!statusType) {
3383
+ var defaultStatus = statusTypes.find(function (s) {
3384
+ return s.category === STATUS_NOT_ACTIONED;
3385
+ });
3386
+ statusType = _objectSpread$4(_objectSpread$4({}, defaultStatus), {}, {
3387
+ text: status
3388
+ });
3389
+ }
3390
+
2448
3391
  return statusType;
2449
3392
  });
2450
3393
 
@@ -2487,11 +3430,12 @@ var Job = /*#__PURE__*/function (_Component) {
2487
3430
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "isReadyToSaveNote", function () {
2488
3431
  var _this$state = _this.state,
2489
3432
  noteAttachments = _this$state.noteAttachments,
2490
- noteInput = _this$state.noteInput;
3433
+ noteInput = _this$state.noteInput,
3434
+ noteImages = _this$state.noteImages;
2491
3435
  if (___default['default'].some(noteAttachments, function (n) {
2492
3436
  return n.Uploading;
2493
3437
  })) return false;
2494
- return !___default['default'].isEmpty(noteInput) || !___default['default'].isEmpty(noteAttachments);
3438
+ return !___default['default'].isEmpty(noteInput) || !___default['default'].isEmpty(noteAttachments) || !___default['default'].isEmpty(noteImages);
2495
3439
  });
2496
3440
 
2497
3441
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onOpenAddNote", function () {
@@ -2510,6 +3454,7 @@ var Job = /*#__PURE__*/function (_Component) {
2510
3454
  if (!!_this.state.editingNote) {
2511
3455
  newState.noteInput = '';
2512
3456
  newState.noteAttachments = [];
3457
+ newState.noteImages = [];
2513
3458
  }
2514
3459
 
2515
3460
  _this.setState(newState);
@@ -2697,12 +3642,12 @@ var Job = /*#__PURE__*/function (_Component) {
2697
3642
  Title: a.Title,
2698
3643
  Source: a.Source
2699
3644
  };
2700
- })) : maintenanceActions.addNote(_this.state.jobId, _this.state.noteInput, _this.state.noteAttachments.map(function (a) {
3645
+ }), _this.state.noteImages) : maintenanceActions.addNote(_this.state.jobId, _this.state.noteInput, _this.state.noteAttachments.map(function (a) {
2701
3646
  return {
2702
3647
  Title: a.Title,
2703
3648
  Source: a.Source
2704
3649
  };
2705
- }));
3650
+ }), _this.state.noteImages);
2706
3651
 
2707
3652
  case 6:
2708
3653
  res = _context5.sent;
@@ -2713,6 +3658,7 @@ var Job = /*#__PURE__*/function (_Component) {
2713
3658
  addNoteOpen: false,
2714
3659
  noteInput: '',
2715
3660
  noteAttachments: [],
3661
+ noteImages: [],
2716
3662
  editingNote: null
2717
3663
  }, function () {
2718
3664
  _this.props.jobsLoaded([_this.state.job]);
@@ -2762,11 +3708,12 @@ var Job = /*#__PURE__*/function (_Component) {
2762
3708
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onOpenEditNote", function (n) {
2763
3709
  _this.setState({
2764
3710
  noteAttachments: n.Attachments || [],
3711
+ noteImages: n.Images || [],
2765
3712
  noteInput: n.Note || '',
2766
3713
  addNoteOpen: true,
2767
3714
  editingNote: n.Id,
2768
3715
  noteMenuOpen: null
2769
- });
3716
+ }, _this.checkSetImage);
2770
3717
  });
2771
3718
 
2772
3719
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "markSeen", function () {
@@ -2872,53 +3819,54 @@ var Job = /*#__PURE__*/function (_Component) {
2872
3819
  _this.setState(stateChange);
2873
3820
  });
2874
3821
 
2875
- _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onToggleStatusChanger", function () {
3822
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onTogglePriorityChanger", function () {
2876
3823
  _this.setState({
2877
- statusChangerOpen: !_this.state.statusChangerOpen
3824
+ priorityChangerOpen: !_this.state.priorityChangerOpen
2878
3825
  });
2879
3826
  });
2880
3827
 
2881
- _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onSelectStatus", /*#__PURE__*/function () {
2882
- var _ref8 = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee8(status) {
2883
- var res;
3828
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onSelectPriority", /*#__PURE__*/function () {
3829
+ var _ref8 = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee8(priority) {
3830
+ var res, job;
2884
3831
  return _regeneratorRuntime__default['default'].wrap(function _callee8$(_context8) {
2885
3832
  while (1) {
2886
3833
  switch (_context8.prev = _context8.next) {
2887
3834
  case 0:
2888
3835
  _this.setState({
2889
3836
  job: _objectSpread$4(_objectSpread$4({}, _this.state.job), {}, {
2890
- status: status
3837
+ priority: priority
2891
3838
  }),
2892
- statusChangerOpen: false
3839
+ priorityChangerOpen: false
2893
3840
  });
2894
3841
 
2895
3842
  _context8.prev = 1;
2896
3843
  _context8.next = 4;
2897
- return maintenanceActions.editJobStatus(_this.state.job.id, status);
3844
+ return maintenanceActions.editJobPriority(_this.state.job.id, priority);
2898
3845
 
2899
3846
  case 4:
2900
3847
  res = _context8.sent;
3848
+ job = res.data.job;
3849
+
3850
+ _this.props.jobsLoaded([job]);
2901
3851
 
2902
3852
  _this.setState({
2903
- job: res.data.job
2904
- }, function () {
2905
- _this.props.jobsLoaded([_this.state.job]);
3853
+ job: job
2906
3854
  });
2907
3855
 
2908
- _context8.next = 11;
3856
+ _context8.next = 13;
2909
3857
  break;
2910
3858
 
2911
- case 8:
2912
- _context8.prev = 8;
3859
+ case 10:
3860
+ _context8.prev = 10;
2913
3861
  _context8.t0 = _context8["catch"](1);
2914
- console.error('onSelectStatus', _context8.t0);
3862
+ console.error('onSelectPriority', _context8.t0);
2915
3863
 
2916
- case 11:
3864
+ case 13:
2917
3865
  case "end":
2918
3866
  return _context8.stop();
2919
3867
  }
2920
3868
  }
2921
- }, _callee8, null, [[1, 8]]);
3869
+ }, _callee8, null, [[1, 10]]);
2922
3870
  }));
2923
3871
 
2924
3872
  return function (_x2) {
@@ -2926,6 +3874,61 @@ var Job = /*#__PURE__*/function (_Component) {
2926
3874
  };
2927
3875
  }());
2928
3876
 
3877
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onToggleStatusChanger", function () {
3878
+ _this.setState({
3879
+ statusChangerOpen: !_this.state.statusChangerOpen
3880
+ });
3881
+ });
3882
+
3883
+ _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "onSelectStatus", /*#__PURE__*/function () {
3884
+ var _ref9 = _asyncToGenerator__default['default']( /*#__PURE__*/_regeneratorRuntime__default['default'].mark(function _callee9(status) {
3885
+ var res, job;
3886
+ return _regeneratorRuntime__default['default'].wrap(function _callee9$(_context9) {
3887
+ while (1) {
3888
+ switch (_context9.prev = _context9.next) {
3889
+ case 0:
3890
+ _this.setState({
3891
+ job: _objectSpread$4(_objectSpread$4({}, _this.state.job), {}, {
3892
+ status: status
3893
+ }),
3894
+ statusChangerOpen: false
3895
+ });
3896
+
3897
+ _context9.prev = 1;
3898
+ _context9.next = 4;
3899
+ return maintenanceActions.editJobStatus(_this.state.job.id, status);
3900
+
3901
+ case 4:
3902
+ res = _context9.sent;
3903
+ job = res.data.job;
3904
+
3905
+ _this.props.jobsLoaded([job]);
3906
+
3907
+ _this.setState({
3908
+ job: job
3909
+ });
3910
+
3911
+ _context9.next = 13;
3912
+ break;
3913
+
3914
+ case 10:
3915
+ _context9.prev = 10;
3916
+ _context9.t0 = _context9["catch"](1);
3917
+ console.error('onSelectStatus', _context9.t0);
3918
+
3919
+ case 13:
3920
+ case "end":
3921
+ return _context9.stop();
3922
+ }
3923
+ }
3924
+ }, _callee9, null, [[1, 10]]);
3925
+ }));
3926
+
3927
+ return function (_x3) {
3928
+ return _ref9.apply(this, arguments);
3929
+ };
3930
+ }());
3931
+
2929
3932
  _this.state = {
2930
3933
  jobId: Helper$2.safeReadParams(props, 'jobId') ? props.match.params.jobId : null,
2931
3934
  job: null,
@@ -2934,10 +3937,12 @@ var Job = /*#__PURE__*/function (_Component) {
2934
3937
  comments: [],
2935
3938
  commentInput: '',
2936
3939
  loadingComments: false,
3940
+ priorityChangerOpen: false,
2937
3941
  statusChangerOpen: false,
2938
3942
  addNoteOpen: false,
2939
3943
  noteAttachments: [],
2940
3944
  noteInput: '',
3945
+ noteImages: [],
2941
3946
  assignees: []
2942
3947
  };
2943
3948
  return _this;
@@ -2951,12 +3956,64 @@ var Job = /*#__PURE__*/function (_Component) {
2951
3956
  }, {
2952
3957
  key: "componentDidMount",
2953
3958
  value: function componentDidMount() {
3959
+ this.props.jobStatusesUpdate(this.props.auth.site);
3960
+
2954
3961
  if (this.state.jobId) {
2955
3962
  this.getJob();
2956
3963
  this.getComments();
2957
3964
  this.getAssignees();
2958
3965
  }
2959
3966
  }
3967
+ }, {
3968
+ key: "checkSetImage",
3969
+ value: function checkSetImage() {
3970
+ if (this.imageInput && !___default['default'].isEmpty(this.state.noteImages)) {
3971
+ this.imageInput.getWrappedInstance().setValue(this.state.noteImages);
3972
+ } else {
3973
+ setTimeout(this.checkSetImage, 100);
3974
+ }
3975
+ }
3976
+ }, {
3977
+ key: "renderPriorityChanger",
3978
+ value: function renderPriorityChanger() {
3979
+ var _this2 = this;
3980
+
3981
+ if (!this.state.priorityChangerOpen) return null;
3982
+ return /*#__PURE__*/React__default['default'].createElement("div", {
3983
+ className: "statusChanger statusChanger-priority"
3984
+ }, jobPriorityOptions.map(function (p) {
3985
+ return /*#__PURE__*/React__default['default'].createElement("div", {
3986
+ key: p.name,
3987
+ className: "statusLabel",
3988
+ onClick: function onClick() {
3989
+ return _this2.onSelectPriority(p.name);
3990
+ },
3991
+ style: {
3992
+ backgroundColor: p.color
3993
+ }
3994
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
3995
+ className: "statusLabel_text"
3996
+ }, p.name));
3997
+ }));
3998
+ }
3999
+ }, {
4000
+ key: "renderPriorityLabel",
4001
+ value: function renderPriorityLabel() {
4002
+ var auth = this.props.auth;
4003
+ if (!Session$3.validateAccess(auth.site, values.permissionMaintenanceTracking, auth)) return null;
4004
+ var job = this.state.job;
4005
+ if (!job) return null;
4006
+ var selectedPriority = getJobPriority(job.priority);
4007
+ return /*#__PURE__*/React__default['default'].createElement("div", {
4008
+ className: "statusLabel marginTop-5 pointer",
4009
+ onClick: this.onTogglePriorityChanger,
4010
+ style: {
4011
+ backgroundColor: selectedPriority.color
4012
+ }
4013
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
4014
+ className: "statusLabel_text"
4015
+ }, job.priority || selectedPriority.name), this.renderPriorityChanger());
4016
+ }
2960
4017
  }, {
2961
4018
  key: "renderStatusLabel",
2962
4019
  value: function renderStatusLabel() {
@@ -3020,24 +4077,25 @@ var Job = /*#__PURE__*/function (_Component) {
3020
4077
  }, {
3021
4078
  key: "renderStatusChanger",
3022
4079
  value: function renderStatusChanger() {
3023
- var _this2 = this;
4080
+ var _this3 = this;
3024
4081
 
3025
4082
  if (!this.state.statusChangerOpen) return null;
4083
+ var statusTypes = this.props.statusTypes;
3026
4084
  return /*#__PURE__*/React__default['default'].createElement("div", {
3027
4085
  className: "statusChanger statusChanger-maintenance"
3028
- }, Object.keys(StatusTypes).map(function (statusKey) {
4086
+ }, statusTypes.map(function (status) {
3029
4087
  return /*#__PURE__*/React__default['default'].createElement("div", {
3030
- key: statusKey,
4088
+ key: status.text,
3031
4089
  className: "statusLabel",
3032
4090
  onClick: function onClick() {
3033
- return _this2.onSelectStatus(statusKey);
4091
+ return _this3.onSelectStatus(status.text);
3034
4092
  },
3035
4093
  style: {
3036
- backgroundColor: StatusTypes[statusKey].color
4094
+ backgroundColor: status.color
3037
4095
  }
3038
4096
  }, /*#__PURE__*/React__default['default'].createElement("span", {
3039
4097
  className: "statusLabel_text"
3040
- }, StatusTypes[statusKey].text));
4098
+ }, status.text));
3041
4099
  }));
3042
4100
  }
3043
4101
  }, {
@@ -3051,7 +4109,7 @@ var Job = /*#__PURE__*/function (_Component) {
3051
4109
  }, {
3052
4110
  key: "renderCommentSection",
3053
4111
  value: function renderCommentSection() {
3054
- var _this3 = this;
4112
+ var _this4 = this;
3055
4113
 
3056
4114
  if (this.state.loadingComments) return null;
3057
4115
  return /*#__PURE__*/React__default['default'].createElement("div", {
@@ -3064,7 +4122,7 @@ var Job = /*#__PURE__*/function (_Component) {
3064
4122
  }, "Comments"), /*#__PURE__*/React__default['default'].createElement("div", {
3065
4123
  className: "commentSection"
3066
4124
  }, this.state.comments.map(function (c) {
3067
- return _this3.renderComment(c);
4125
+ return _this4.renderComment(c);
3068
4126
  })), /*#__PURE__*/React__default['default'].createElement("div", {
3069
4127
  className: "commentReply"
3070
4128
  }, /*#__PURE__*/React__default['default'].createElement("div", {
@@ -3080,13 +4138,14 @@ var Job = /*#__PURE__*/function (_Component) {
3080
4138
  className: "commentReply_input",
3081
4139
  value: this.state.commentInput,
3082
4140
  onChange: function onChange(e) {
3083
- return _this3.onHandleChange(e);
4141
+ return _this4.onHandleChange(e);
3084
4142
  }
3085
4143
  }))));
3086
4144
  }
3087
4145
  }, {
3088
4146
  key: "renderImageGrid",
3089
4147
  value: function renderImageGrid(images) {
4148
+ var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
3090
4149
  var imagesToUse = images && images.length > 0 ? images : [];
3091
4150
  return /*#__PURE__*/React__default['default'].createElement("div", {
3092
4151
  className: "imageGrid"
@@ -3099,7 +4158,9 @@ var Job = /*#__PURE__*/function (_Component) {
3099
4158
  }, /*#__PURE__*/React__default['default'].createElement("div", {
3100
4159
  className: "imageGrid_image",
3101
4160
  style: {
3102
- backgroundImage: "url('".concat(Helper$2.get1400(image), "')")
4161
+ backgroundImage: "url('".concat(Helper$2.get1400(image), "')"),
4162
+ width: size,
4163
+ height: size
3103
4164
  }
3104
4165
  }));
3105
4166
  }));
@@ -3119,7 +4180,7 @@ var Job = /*#__PURE__*/function (_Component) {
3119
4180
  }, {
3120
4181
  key: "renderCustomFields",
3121
4182
  value: function renderCustomFields() {
3122
- var _this4 = this;
4183
+ var _this5 = this;
3123
4184
 
3124
4185
  var job = this.state.job;
3125
4186
  var customFields = job.customFields;
@@ -3149,7 +4210,7 @@ var Job = /*#__PURE__*/function (_Component) {
3149
4210
  }, field.answer && Array.isArray(field.answer) ? field.answer.join(', ') : '');
3150
4211
 
3151
4212
  case 'image':
3152
- return _this4.renderImageGrid(field.answer);
4213
+ return _this5.renderImageGrid(field.answer);
3153
4214
 
3154
4215
  default:
3155
4216
  return /*#__PURE__*/React__default['default'].createElement("div", {
@@ -3270,12 +4331,12 @@ var Job = /*#__PURE__*/function (_Component) {
3270
4331
  }
3271
4332
  }, /*#__PURE__*/React__default['default'].createElement("span", {
3272
4333
  className: "statusLabel_text"
3273
- }, e ? "Marked as ".concat(statusType.text) : "".concat(values.textEntityName, " opened"))));
4334
+ }, e ? "".concat(entryToUse.user.displayName, " marked as ").concat(statusType.text) : "".concat(values.textEntityName, " opened"))));
3274
4335
  }
3275
4336
  }, {
3276
4337
  key: "renderNote",
3277
4338
  value: function renderNote(note, index) {
3278
- var _this5 = this;
4339
+ var _this6 = this;
3279
4340
 
3280
4341
  return /*#__PURE__*/React__default['default'].createElement("div", {
3281
4342
  className: "ticketHistoryEntry",
@@ -3298,7 +4359,7 @@ var Job = /*#__PURE__*/function (_Component) {
3298
4359
  icon: "more15",
3299
4360
  className: "maintenanceNote_moreIcon",
3300
4361
  onClick: function onClick() {
3301
- return _this5.onOpenNoteMenu(index);
4362
+ return _this6.onOpenNoteMenu(index);
3302
4363
  }
3303
4364
  }), /*#__PURE__*/React__default['default'].createElement("p", {
3304
4365
  className: "maintenanceNote_name"
@@ -3307,20 +4368,20 @@ var Job = /*#__PURE__*/function (_Component) {
3307
4368
  key: 'edit',
3308
4369
  text: 'Edit',
3309
4370
  onPress: function onPress() {
3310
- return _this5.onOpenEditNote(note);
4371
+ return _this6.onOpenEditNote(note);
3311
4372
  }
3312
4373
  }, {
3313
4374
  key: 'delete',
3314
4375
  text: 'Delete',
3315
4376
  onPress: function onPress() {
3316
- return _this5.onDeleteNote(note);
4377
+ return _this6.onDeleteNote(note);
3317
4378
  }
3318
4379
  }]
3319
4380
  })), /*#__PURE__*/React__default['default'].createElement("p", {
3320
4381
  className: "maintenanceNote_text"
3321
4382
  }, Helper$2.toParagraphed(note.Note)), note.Attachments.map(function (a, i) {
3322
- return _this5.renderAttachment(a, i);
3323
- })));
4383
+ return _this6.renderAttachment(a, i);
4384
+ }), note.Images && note.Images.length > 0 ? this.renderImageGrid(note.Images, IMAGE_SIZE_NOTE) : null));
3324
4385
  }
3325
4386
  }, {
3326
4387
  key: "renderAssignment",
@@ -3361,10 +4422,24 @@ var Job = /*#__PURE__*/function (_Component) {
3361
4422
  className: "statusLabel_text"
3362
4423
  }, e.user.displayName, " assigned the ", values.textSingularName, " to ", e.assignedUser ? e.assignedUser.displayName : 'Unassigned')));
3363
4424
  }
4425
+ }, {
4426
+ key: "renderPriority",
4427
+ value: function renderPriority() {
4428
+ var auth = this.props.auth;
4429
+ if (!Session$3.validateAccess(auth.site, values.permissionMaintenanceTracking, auth)) return null;
4430
+ return /*#__PURE__*/React__default['default'].createElement("div", {
4431
+ className: "padding-32 paddingVertical-40 bottomDivideBorder relative"
4432
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
4433
+ className: "newTopBar clearfix flex flex-reverse"
4434
+ }, this.renderPriorityLabel(), /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
4435
+ type: "formTitleSmall",
4436
+ className: "flex-1"
4437
+ }, "Priority")));
4438
+ }
3364
4439
  }, {
3365
4440
  key: "renderOverview",
3366
4441
  value: function renderOverview() {
3367
- var _this6 = this;
4442
+ var _this7 = this;
3368
4443
 
3369
4444
  var job = this.state.job;
3370
4445
  if (!job || !job.history) return null;
@@ -3390,13 +4465,13 @@ var Job = /*#__PURE__*/function (_Component) {
3390
4465
  }, "Status History")), this.renderHistoryEntry(null, -1), ___default['default'].map(source, function (e, i) {
3391
4466
  switch (e.EntryType) {
3392
4467
  case 'status':
3393
- return _this6.renderHistoryEntry(e, i);
4468
+ return _this7.renderHistoryEntry(e, i);
3394
4469
 
3395
4470
  case 'note':
3396
- return _this6.renderNote(e, i);
4471
+ return _this7.renderNote(e, i);
3397
4472
 
3398
4473
  case 'assignment':
3399
- return _this6.renderAssignmentEntry(e, i);
4474
+ return _this7.renderAssignmentEntry(e, i);
3400
4475
  }
3401
4476
  }));
3402
4477
  }
@@ -3442,7 +4517,7 @@ var Job = /*#__PURE__*/function (_Component) {
3442
4517
  }, {
3443
4518
  key: "renderAddNotePopup",
3444
4519
  value: function renderAddNotePopup() {
3445
- var _this7 = this;
4520
+ var _this8 = this;
3446
4521
 
3447
4522
  if (!this.state.addNoteOpen) return null;
3448
4523
 
@@ -3482,7 +4557,7 @@ var Job = /*#__PURE__*/function (_Component) {
3482
4557
  value: this.state.noteInput,
3483
4558
  placeholder: "Enter note",
3484
4559
  onChange: function onChange(e) {
3485
- return _this7.onHandleChange(e);
4560
+ return _this8.onHandleChange(e);
3486
4561
  },
3487
4562
  inputStyle: {
3488
4563
  width: 400
@@ -3490,34 +4565,44 @@ var Job = /*#__PURE__*/function (_Component) {
3490
4565
  }), /*#__PURE__*/React__default['default'].createElement(Components$3.Text, {
3491
4566
  type: "h5"
3492
4567
  }, "Attachments"), this.state.noteAttachments.map(function (a, i) {
3493
- return _this7.renderAttachment(a, i, _this7.onRemoveAttachment);
4568
+ return _this8.renderAttachment(a, i, _this8.onRemoveAttachment);
3494
4569
  }), /*#__PURE__*/React__default['default'].createElement("input", {
3495
4570
  ref: function ref(input) {
3496
- return _this7.attachmentInput = input;
4571
+ return _this8.attachmentInput = input;
3497
4572
  },
3498
4573
  id: "attachmentInput",
3499
4574
  type: "file",
3500
4575
  className: "fileInput",
3501
4576
  onChange: function onChange(e) {
3502
- return _this7.onHandlePDFFileChange(e);
4577
+ return _this8.onHandlePDFFileChange(e);
3503
4578
  },
3504
4579
  accept: "application/pdf"
3505
4580
  }), /*#__PURE__*/React__default['default'].createElement("div", {
3506
- className: "iconTextButton",
4581
+ className: "iconTextButton marginBottom-16",
3507
4582
  onClick: function onClick() {
3508
- _this7.attachmentInput.click();
4583
+ _this8.attachmentInput.click();
3509
4584
  }
3510
4585
  }, /*#__PURE__*/React__default['default'].createElement(FontAwesome__default['default'], {
3511
4586
  className: "iconTextButton_icon",
3512
4587
  name: "paperclip"
3513
4588
  }), /*#__PURE__*/React__default['default'].createElement("p", {
3514
4589
  className: "iconTextButton_text"
3515
- }, "Add Attachment")));
4590
+ }, "Add Attachment")), /*#__PURE__*/React__default['default'].createElement(Components$3.ImageInput, {
4591
+ ref: function ref(_ref10) {
4592
+ _this8.imageInput = _ref10;
4593
+ },
4594
+ multiple: true,
4595
+ refreshCallback: function refreshCallback(images) {
4596
+ _this8.setState({
4597
+ noteImages: images
4598
+ });
4599
+ }
4600
+ }));
3516
4601
  }
3517
4602
  }, {
3518
4603
  key: "renderUsers",
3519
4604
  value: function renderUsers() {
3520
- var _this8 = this;
4605
+ var _this9 = this;
3521
4606
 
3522
4607
  var content = null;
3523
4608
 
@@ -3536,7 +4621,7 @@ var Job = /*#__PURE__*/function (_Component) {
3536
4621
  className: "removeIcon",
3537
4622
  icon: "close",
3538
4623
  onClick: function onClick() {
3539
- _this8.onSelectAssignee();
4624
+ _this9.onSelectAssignee();
3540
4625
  },
3541
4626
  colour: Colours$1.COLOUR_DUSK
3542
4627
  })
@@ -3549,20 +4634,20 @@ var Job = /*#__PURE__*/function (_Component) {
3549
4634
  placeholder: "Search name",
3550
4635
  value: this.state.userSearch,
3551
4636
  onChange: function onChange(e) {
3552
- return _this8.onHandleChange(e);
4637
+ return _this9.onHandleChange(e);
3553
4638
  },
3554
4639
  alwaysShowLabel: true
3555
4640
  }), ___default['default'].sortBy(this.state.assignees, function (u) {
3556
4641
  return u.displayName.toUpperCase();
3557
4642
  }).filter(function (u) {
3558
- if (___default['default'].isEmpty(_this8.state.userSearch)) return true;
3559
- return u.displayName.toUpperCase().indexOf(_this8.state.userSearch.toUpperCase()) > -1;
4643
+ if (___default['default'].isEmpty(_this9.state.userSearch)) return true;
4644
+ return u.displayName.toUpperCase().indexOf(_this9.state.userSearch.toUpperCase()) > -1;
3560
4645
  }).map(function (user) {
3561
4646
  return /*#__PURE__*/React__default['default'].createElement(Components$3.UserListing, {
3562
4647
  key: user.id,
3563
4648
  user: user,
3564
4649
  onClick: function onClick() {
3565
- _this8.onSelectAssignee(user);
4650
+ _this9.onSelectAssignee(user);
3566
4651
  }
3567
4652
  });
3568
4653
  }));
@@ -3603,7 +4688,7 @@ var Job = /*#__PURE__*/function (_Component) {
3603
4688
  className: "pageSectionWrapper--fixedPopupSize"
3604
4689
  }, this.renderInner()), /*#__PURE__*/React__default['default'].createElement(Components$3.OverlayPageSection, {
3605
4690
  className: "pageSectionWrapper--newPopupSide pageSectionWrapper--newPopupSide-fixedWidth"
3606
- }, this.renderAssignment(), this.renderOverview())), /*#__PURE__*/React__default['default'].createElement(Components$3.OverlayPageBottomButtons, null, this.renderButtons()));
4691
+ }, this.renderAssignment(), this.renderPriority(), this.renderOverview())), /*#__PURE__*/React__default['default'].createElement(Components$3.OverlayPageBottomButtons, null, this.renderButtons()));
3607
4692
  }
3608
4693
  }]);
3609
4694
 
@@ -3613,12 +4698,14 @@ var Job = /*#__PURE__*/function (_Component) {
3613
4698
  var mapStateToProps$3 = function mapStateToProps(state) {
3614
4699
  var auth = state.auth;
3615
4700
  return {
3616
- auth: auth
4701
+ auth: auth,
4702
+ statusTypes: state[values.reducerKey].jobstatuses
3617
4703
  };
3618
4704
  };
3619
4705
 
3620
4706
  var Job$1 = reactRedux.connect(mapStateToProps$3, {
3621
- jobsLoaded: jobsLoaded
4707
+ jobsLoaded: jobsLoaded,
4708
+ jobStatusesUpdate: jobStatusesUpdate
3622
4709
  })(reactRouter.withRouter(Job));
3623
4710
 
3624
4711
  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; }
@@ -6003,8 +7090,9 @@ function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) {
6003
7090
  var INITIAL_STATE = {
6004
7091
  jobs: [],
6005
7092
  jobtypes: [],
6006
- loading: false // tickets: [],
6007
-
7093
+ jobstatuses: jobStatusOptions,
7094
+ loading: false,
7095
+ hideSeen: false
6008
7096
  };
6009
7097
  var MaintenanceReducer = (function () {
6010
7098
  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_STATE;
@@ -6047,33 +7135,25 @@ var MaintenanceReducer = (function () {
6047
7135
  return state;
6048
7136
 
6049
7137
  case JOBS_TYPES_LOADED:
6050
- var resultSub = ___default['default'].unionWith(action.payload, state.jobtypes, function (v1, v2) {
7138
+ var jobtypes = ___default['default'].unionWith(action.payload, state.jobtypes, function (v1, v2) {
6051
7139
  return v1 != null && v2 != null && v1.id === v2.id;
6052
7140
  });
6053
7141
 
6054
7142
  return _objectSpread$2(_objectSpread$2({}, state), {}, {
6055
- jobtypes: resultSub
7143
+ jobtypes: jobtypes
7144
+ });
7145
+
7146
+ case JOBS_STATUSES_LOADED:
7147
+ var jobstatuses = ___default['default'].orderBy(action.payload, 'order', 'asc');
7148
+
7149
+ return _objectSpread$2(_objectSpread$2({}, state), {}, {
7150
+ jobstatuses: jobstatuses
7151
+ });
7152
+
7153
+ case JOBS_HIDE_SEEN:
7154
+ return _objectSpread$2(_objectSpread$2({}, state), {}, {
7155
+ hideSeen: action.payload
6056
7156
  });
6057
- // case JOBS_TYPES_REMOVED:
6058
- // const indexSub = _.findIndex(state.jobtypes, (event) => {
6059
- // return event != null && event.id === action.payload;
6060
- // });
6061
- // if (indexSub > -1) {
6062
- // const newEventsSub = [...state.jobtypes];
6063
- // newEventsSub.splice(indexSub, 1);
6064
- // return { ...state, jobtypes: newEventsSub };
6065
- // }
6066
- // return state;
6067
- // case TICKETS_LOADED:
6068
- // const ticketResult = _.unionWith(action.payload, state.tickets, (v1, v2) => {
6069
- // return v1 != null && v2 != null && v1.Id === v2.Id;
6070
- // });
6071
- // return {
6072
- // ...state,
6073
- // tickets: ticketResult,
6074
- // };
6075
- // case JOBS_PURGE:
6076
- // return INITIAL_STATE;
6077
7157
 
6078
7158
  default:
6079
7159
  return state;