@plusscommunities/pluss-maintenance-app 6.0.11 → 6.0.12-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.
Files changed (58) hide show
  1. package/dist/module/actions/JobActions.js +44 -1
  2. package/dist/module/actions/JobActions.js.map +1 -1
  3. package/dist/module/actions/types.js +3 -0
  4. package/dist/module/actions/types.js.map +1 -1
  5. package/dist/module/apis/index.js +2 -0
  6. package/dist/module/apis/index.js.map +1 -1
  7. package/dist/module/apis/maintenanceActions.js +21 -6
  8. package/dist/module/apis/maintenanceActions.js.map +1 -1
  9. package/dist/module/components/FilterPopupMenu.js +34 -18
  10. package/dist/module/components/FilterPopupMenu.js.map +1 -1
  11. package/dist/module/components/MaintenanceList.js +47 -56
  12. package/dist/module/components/MaintenanceList.js.map +1 -1
  13. package/dist/module/components/MaintenanceListItem.js +39 -26
  14. package/dist/module/components/MaintenanceListItem.js.map +1 -1
  15. package/dist/module/components/MaintenanceWidgetItem.js +12 -12
  16. package/dist/module/components/MaintenanceWidgetItem.js.map +1 -1
  17. package/dist/module/components/PrioritySelectorPopup.js +82 -0
  18. package/dist/module/components/PrioritySelectorPopup.js.map +1 -0
  19. package/dist/module/components/StatusSelectorPopup.js +9 -14
  20. package/dist/module/components/StatusSelectorPopup.js.map +1 -1
  21. package/dist/module/components/WidgetSmall.js +7 -3
  22. package/dist/module/components/WidgetSmall.js.map +1 -1
  23. package/dist/module/helper.js +39 -25
  24. package/dist/module/helper.js.map +1 -1
  25. package/dist/module/reducers/JobsReducer.js +31 -2
  26. package/dist/module/reducers/JobsReducer.js.map +1 -1
  27. package/dist/module/screens/RequestDetail.js +90 -18
  28. package/dist/module/screens/RequestDetail.js.map +1 -1
  29. package/dist/module/screens/RequestNotes.js +335 -19
  30. package/dist/module/screens/RequestNotes.js.map +1 -1
  31. package/dist/module/values.config.a.js +6 -1
  32. package/dist/module/values.config.a.js.map +1 -1
  33. package/dist/module/values.config.default.js +6 -1
  34. package/dist/module/values.config.default.js.map +1 -1
  35. package/dist/module/values.config.forms.js +6 -1
  36. package/dist/module/values.config.forms.js.map +1 -1
  37. package/dist/module/values.config.js +6 -1
  38. package/dist/module/values.config.js.map +1 -1
  39. package/package.json +1 -1
  40. package/src/actions/JobActions.js +53 -1
  41. package/src/actions/types.js +4 -0
  42. package/src/apis/index.js +4 -0
  43. package/src/apis/maintenanceActions.js +18 -6
  44. package/src/components/FilterPopupMenu.js +40 -21
  45. package/src/components/MaintenanceList.js +38 -47
  46. package/src/components/MaintenanceListItem.js +35 -21
  47. package/src/components/MaintenanceWidgetItem.js +16 -12
  48. package/src/components/PrioritySelectorPopup.js +79 -0
  49. package/src/components/StatusSelectorPopup.js +8 -14
  50. package/src/components/WidgetSmall.js +5 -3
  51. package/src/helper.js +50 -21
  52. package/src/reducers/JobsReducer.js +25 -1
  53. package/src/screens/RequestDetail.js +89 -26
  54. package/src/screens/RequestNotes.js +348 -28
  55. package/src/values.config.a.js +5 -0
  56. package/src/values.config.default.js +5 -0
  57. package/src/values.config.forms.js +5 -0
  58. package/src/values.config.js +5 -0
@@ -1,5 +1,5 @@
1
1
  import React, { Component } from 'react';
2
- import { ScrollView, View, Text, TouchableOpacity, Modal, KeyboardAvoidingView, Platform } from 'react-native';
2
+ import { ScrollView, View, Text, TouchableOpacity, Modal, KeyboardAvoidingView, Platform, FlatList, Dimensions, ImageBackground, Keyboard } from 'react-native';
3
3
  import { connect } from 'react-redux';
4
4
  import { Icon } from 'react-native-elements';
5
5
  import _ from 'lodash';
@@ -11,6 +11,8 @@ import { Services } from '../feature.config';
11
11
  import { Components, Colours, Helper } from '../core.config';
12
12
  import { values } from '../values.config';
13
13
 
14
+ const PHOTO_SIZE = (Dimensions.get('window').width - 64) / 3;
15
+
14
16
  class RequestNotes extends Component {
15
17
  constructor(props) {
16
18
  super(props);
@@ -21,7 +23,10 @@ class RequestNotes extends Component {
21
23
  noteAttachments: [],
22
24
  noteInput: '',
23
25
  addNoteOpen: false,
26
+ noteImages: [{ add: true }],
27
+ uploadingImage: false,
24
28
  };
29
+ this.checkThumb = null;
25
30
  }
26
31
 
27
32
  componentDidMount() {
@@ -34,6 +39,10 @@ class RequestNotes extends Component {
34
39
  }
35
40
  }
36
41
 
42
+ componentWillUnmount() {
43
+ clearInterval(this.checkThumb);
44
+ }
45
+
37
46
  updateJobState() {
38
47
  const job = _.find(this.props.jobs, j => j.id === this.props.job.id) || this.props.job;
39
48
  this.setState({ job });
@@ -81,14 +90,10 @@ class RequestNotes extends Component {
81
90
  };
82
91
 
83
92
  isReadyToSaveNote = () => {
84
- if (
85
- _.some(this.state.noteAttachments, n => {
86
- return n.Uploading;
87
- })
88
- ) {
89
- return false;
90
- }
91
- return !_.isEmpty(this.state.noteInput) || !_.isEmpty(this.state.noteAttachments);
93
+ const uploadingAttachments = _.some(this.state.noteAttachments, n => n.Uploading);
94
+ const uploadingImages = _.some(this.state.noteImages, n => n.uploading);
95
+ if (uploadingAttachments || uploadingImages) return false;
96
+ return !_.isEmpty(this.state.noteInput) || !_.isEmpty(this.state.noteAttachments) || !_.isEmpty(this.state.noteImages.filter(img => !img.add));
92
97
  };
93
98
 
94
99
  openAddNote = () => {
@@ -106,13 +111,16 @@ class RequestNotes extends Component {
106
111
  if (!!this.state.editingNote) {
107
112
  newState.noteInput = '';
108
113
  newState.noteAttachments = [];
114
+ newState.noteImages = [];
109
115
  }
110
116
  this.setState(newState);
111
117
  };
112
118
 
113
119
  openEditNote = n => {
120
+ const noteImages = [...((n.Images || []).map(i => ({ url: i, thumbNailUrl: Helper.getThumb300(i) }))), { add: true }];
114
121
  this.setState({
115
122
  noteAttachments: n.Attachments || [],
123
+ noteImages,
116
124
  noteInput: n.Note || '',
117
125
  addNoteOpen: true,
118
126
  editingNote: n.Id,
@@ -127,28 +135,27 @@ class RequestNotes extends Component {
127
135
 
128
136
  try {
129
137
  this.setState({ submittingNote: true });
138
+ const attachments = this.state.noteAttachments.filter(a => !a.add).map(a => {
139
+ return {
140
+ Title: a.Title,
141
+ Source: a.Source,
142
+ };
143
+ });
144
+ const images = this.state.noteImages.filter(img => !img.add).map(img => img.url);
130
145
  const res = await (this.state.editingNote
131
146
  ? maintenanceActions.editNote(
132
- this.props.job.id,
133
- this.state.editingNote,
134
- this.state.noteInput,
135
- this.state.noteAttachments.map(a => {
136
- return {
137
- Title: a.Title,
138
- Source: a.Source,
139
- };
140
- }),
141
- )
147
+ this.props.job.id,
148
+ this.state.editingNote,
149
+ this.state.noteInput,
150
+ attachments,
151
+ images,
152
+ )
142
153
  : maintenanceActions.addNote(
143
- this.props.job.id,
144
- this.state.noteInput,
145
- this.state.noteAttachments.map(a => {
146
- return {
147
- Title: a.Title,
148
- Source: a.Source,
149
- };
150
- }),
151
- ));
154
+ this.props.job.id,
155
+ this.state.noteInput,
156
+ attachments,
157
+ images,
158
+ ));
152
159
  this.setState(
153
160
  {
154
161
  job: res.data.job,
@@ -156,6 +163,8 @@ class RequestNotes extends Component {
156
163
  addNoteOpen: false,
157
164
  noteInput: '',
158
165
  noteAttachments: [],
166
+ noteImages: [{ add: true }],
167
+ uploadingImage: false,
159
168
  editingNote: null,
160
169
  },
161
170
  () => {
@@ -168,10 +177,148 @@ class RequestNotes extends Component {
168
177
  console.log(err);
169
178
  this.setState({
170
179
  submittingNote: false,
180
+ uploadingImage: false,
171
181
  });
172
182
  }
173
183
  };
174
184
 
185
+ setImages = (noteImages, uploadingImage = false, callback = null) => {
186
+ this.setState({ noteImages, uploadingImage }, callback);
187
+ };
188
+
189
+ getImages = () => {
190
+ const { noteImages } = this.state;
191
+ const imagesList = _.cloneDeep(noteImages);
192
+ if (!imagesList || !Array.isArray(imagesList) || imagesList.length === 0) {
193
+ return [{ add: true }];
194
+ }
195
+ return imagesList;
196
+ };
197
+
198
+ getImageUrls = () => {
199
+ const imagesList = this.getImages();
200
+ return _.filter(imagesList, img => {
201
+ return !img.uploading && !img.add;
202
+ }).map(img => {
203
+ return img.url;
204
+ });
205
+ };
206
+
207
+ waitForThumbnails = () => {
208
+ if (this.checkThumb) return;
209
+
210
+ this.checkThumb = setInterval(async () => {
211
+ const imagesList = this.getImages();
212
+ const imagesUpdate = [];
213
+ await Promise.all(
214
+ imagesList.map(image => {
215
+ return new Promise(async resolve => {
216
+ const newImage = { ...image };
217
+ imagesUpdate.push(newImage);
218
+ if (newImage.url && !newImage.thumbNailExists) {
219
+ newImage.uploading = false;
220
+ newImage.allowRetry = false;
221
+ newImage.thumbNailExists = await Helper.imageExists(newImage.thumbNailUrl);
222
+ resolve(newImage.thumbNailExists);
223
+ }
224
+ resolve(true);
225
+ });
226
+ }),
227
+ );
228
+ const thumbnailsExist = imagesUpdate.every(image => !image.url || image.thumbNailExists);
229
+ if (thumbnailsExist) {
230
+ clearInterval(this.checkThumb);
231
+ this.checkThumb = null;
232
+ this.setImages(imagesUpdate);
233
+ }
234
+ }, 2000);
235
+ };
236
+
237
+ removeImage = (index) => {
238
+ const imagesUpdate = this.getImages();
239
+ imagesUpdate.splice(index, 1);
240
+
241
+ this.setImages(imagesUpdate);
242
+ };
243
+
244
+ showUploadMenu = () => {
245
+ Keyboard.dismiss();
246
+ const { uploadingImage, submittingNote } = this.state;
247
+ if (uploadingImage || submittingNote) return;
248
+ this.imageUploader.showUploadMenu();
249
+ };
250
+
251
+ toggleFullscreenVideo = url => {
252
+ if (typeof url !== 'string') url = '';
253
+ this.setState({ showFullscreenVideo: url.length > 0, currentVideoUrl: url });
254
+ };
255
+
256
+ onUploadStarted = (uploadUri, imageUri) => {
257
+ const imagesUpdate = this.getImages();
258
+ imagesUpdate.splice(imagesUpdate.length - 1, 0, {
259
+ uploading: true,
260
+ uploadProgress: '0%',
261
+ uploadUri,
262
+ imageUri,
263
+ allowRetry: true,
264
+ });
265
+
266
+ this.setImages(imagesUpdate, true);
267
+ };
268
+
269
+ onUploadProgress = progress => {
270
+ const imagesUpdate = this.getImages();
271
+ imagesUpdate.map(img => {
272
+ if (img.uploadUri === progress.uri) {
273
+ img.uploadProgress = progress.percentage;
274
+ img.uploading = true;
275
+ img.allowRetry = true;
276
+ }
277
+ });
278
+
279
+ this.setImages(imagesUpdate, true);
280
+ };
281
+
282
+ onUploadSuccess = async (uri, uploadUri) => {
283
+ const imagesUpdate = this.getImages();
284
+ imagesUpdate.map(img => {
285
+ if (img.uploadUri === uploadUri && img.uploading) {
286
+ img.url = uri.replace('/general/', '/general1400/');
287
+ img.thumbNailExists = false;
288
+ img.thumbNailUrl = Helper.getThumb300(img.url);
289
+ img.allowRetry = true;
290
+ }
291
+ });
292
+
293
+ this.setImages(imagesUpdate, false, () => this.waitForThumbnails());
294
+ };
295
+
296
+ onUploadFailed = uploadUri => {
297
+ const imagesUpdate = this.getImages();
298
+ imagesUpdate.map(img => {
299
+ if (img.uploadUri === uploadUri) {
300
+ img.uploading = true; // Requried for retry
301
+ img.uploadProgress = '';
302
+ img.allowRetry = true;
303
+ }
304
+ });
305
+
306
+ this.setImages(imagesUpdate);
307
+ };
308
+
309
+ onLibrarySelected = uri => {
310
+ const imagesUpdate = this.getImages();
311
+ imagesUpdate.splice(imagesUpdate.length - 1, 0, {
312
+ uploading: false,
313
+ allowRetry: false,
314
+ url: Helper.get1400(uri),
315
+ thumbNailExists: true,
316
+ thumbNailUrl: Helper.getThumb300(uri),
317
+ });
318
+
319
+ this.setImages(imagesUpdate);
320
+ };
321
+
175
322
  renderAttachment(a, i) {
176
323
  return (
177
324
  <Components.Attachment
@@ -272,10 +419,118 @@ class RequestNotes extends Component {
272
419
  );
273
420
  }
274
421
 
422
+ renderUploadMenu() {
423
+ return (
424
+ <Components.ImageUploader
425
+ ref={ref => (this.imageUploader = ref)}
426
+ onUploadStarted={this.onUploadStarted}
427
+ onUploadSuccess={this.onUploadSuccess}
428
+ onUploadFailed={this.onUploadFailed}
429
+ onUploadProgress={this.onUploadProgress}
430
+ onLibrarySelected={this.onLibrarySelected}
431
+ size={{ width: 1400 }}
432
+ quality={0.8}
433
+ fileName={'serviceNoteImage'}
434
+ popupTitle={'Upload Image'}
435
+ userId={this.props.user.uid}
436
+ allowsEditing={false}
437
+ multiple
438
+ hideLibrary
439
+ />
440
+ );
441
+ }
442
+
443
+ renderImage(item, index) {
444
+ const isVideoUrl = Helper.isVideo(item.url);
445
+ const imagesList = this.getImages();
446
+
447
+ if (item.add) {
448
+ return (
449
+ <TouchableOpacity activeOpacity={0.8} onPress={() => this.showUploadMenu()}>
450
+ <View
451
+ style={[
452
+ styles.imageContainer,
453
+ imagesList.length > 1 && styles.imageContainerNotEmpty,
454
+ index % 3 === 0 && { marginLeft: 0 },
455
+ index > 2 && { marginTop: 8 },
456
+ ]}
457
+ >
458
+ <View style={styles.imageCircle}>
459
+ <Icon name="camera" type="font-awesome" iconStyle={styles.addImageIcon} />
460
+ </View>
461
+ </View>
462
+ </TouchableOpacity>
463
+ );
464
+ }
465
+ return (
466
+ <View
467
+ style={[
468
+ styles.imageContainer,
469
+ imagesList.length > 1 && styles.imageContainerNotEmpty,
470
+ index % 3 === 0 && { marginLeft: 0 },
471
+ index > 2 && { marginTop: 8 },
472
+ ]}
473
+ >
474
+ {item.uploading ? (
475
+ <Components.ImageUploadProgress uploader={this.imageUploader} image={item} color={this.props.colourBrandingMain} />
476
+ ) : (
477
+ <ImageBackground
478
+ style={styles.imageBackground}
479
+ source={Helper.getImageSource(item.thumbNailExists ? item.thumbNailUrl : (item.url || item))}
480
+ >
481
+ {isVideoUrl && (
482
+ <View style={styles.imagePlayContainer}>
483
+ <TouchableOpacity onPress={this.toggleFullscreenVideo.bind(this, item.url)}>
484
+ <Icon name="play" type="font-awesome" iconStyle={styles.imageControlIcon} />
485
+ </TouchableOpacity>
486
+ </View>
487
+ )}
488
+ <TouchableOpacity style={styles.removeImage} onPress={() => this.removeImage(index)}>
489
+ <Icon name="remove" type="font-awesome" iconStyle={styles.imageControlIcon} style={styles.removeImage} />
490
+ </TouchableOpacity>
491
+ </ImageBackground>
492
+ )}
493
+ </View>
494
+ );
495
+ }
496
+
497
+ renderImageList() {
498
+ const imagesList = this.getImages();
499
+
500
+ return (
501
+ <View style={styles.imageListContainer}>
502
+ <FlatList
503
+ keyboardShouldPersistTaps="always"
504
+ enableEmptySections
505
+ data={imagesList}
506
+ renderItem={({ item, index }) => this.renderImage(item, index)}
507
+ keyExtractor={(item, index) => index}
508
+ numColumns={3}
509
+ scrollEnabled={false}
510
+ />
511
+ </View>
512
+ );
513
+ }
514
+
515
+ renderVideoPlayerPopup() {
516
+ const { showFullscreenVideo, currentVideoUrl } = this.state;
517
+ if (!currentVideoUrl) return;
518
+
519
+ return (
520
+ <Components.VideoPopup
521
+ uri={currentVideoUrl}
522
+ visible={showFullscreenVideo}
523
+ showFullscreenButton={false}
524
+ onClose={this.toggleFullscreenVideo}
525
+ />
526
+ );
527
+ }
528
+
275
529
  renderAdd() {
276
530
  return (
277
531
  <Modal animationType="slide" visible={this.state.addNoteOpen}>
278
532
  <KeyboardAvoidingView style={styles.container} behavior={Platform.OS === 'ios' && 'padding'}>
533
+ {this.renderUploadMenu()}
279
534
  <Components.Header leftText="Cancel" onPressLeft={this.closeAddNote} text="" />
280
535
  <ScrollView style={styles.scrollContainer} contentContainerStyle={styles.innerContainer}>
281
536
  <Components.TextStyle type="pageHeading">Add Staff Note</Components.TextStyle>
@@ -297,6 +552,7 @@ class RequestNotes extends Component {
297
552
  sectionStyle={styles.inputSection}
298
553
  />
299
554
  <Components.GenericInputSection label="Attachments" sectionStyle={styles.inputSection}>
555
+ {this.renderImageList()}
300
556
  {this.state.editingNote ? (
301
557
  (this.state.noteAttachments || []).map((a, i) => this.renderAttachment(a, i))
302
558
  ) : (
@@ -307,6 +563,7 @@ class RequestNotes extends Component {
307
563
  </Components.GenericInputSection>
308
564
  </ScrollView>
309
565
  <View style={styles.popupFooter}>{this.renderFooterContent()}</View>
566
+ {this.renderVideoPlayerPopup()}
310
567
  </KeyboardAvoidingView>
311
568
  </Modal>
312
569
  );
@@ -404,6 +661,69 @@ const styles = {
404
661
  attachmentInfo: {
405
662
  marginTop: 8,
406
663
  },
664
+ imageListContainer: {
665
+ marginVertical: 8,
666
+ },
667
+ imageContainer: {
668
+ width: PHOTO_SIZE,
669
+ height: PHOTO_SIZE,
670
+ borderStyle: 'dashed',
671
+ justifyContent: 'center',
672
+ alignItems: 'center',
673
+ borderWidth: 1,
674
+ borderColor: Colours.LINEGREY,
675
+ backgroundColor: Colours.BOXGREY,
676
+ borderRadius: 4,
677
+ marginLeft: 8,
678
+ },
679
+ imageContainerNotEmpty: {
680
+ borderWidth: 1,
681
+ borderColor: Colours.LINEGREY,
682
+ backgroundColor: '#fff',
683
+ borderStyle: 'dashed',
684
+ },
685
+ imageBackground: {
686
+ flex: 1,
687
+ height: '100%',
688
+ width: '100%',
689
+ borderRadius: 4,
690
+ },
691
+ imageCircle: {
692
+ width: 90,
693
+ height: 90,
694
+ borderRadius: 45,
695
+ backgroundColor: Colours.PINKISH_GREY,
696
+ justifyContent: 'center',
697
+ },
698
+ addImageIcon: {
699
+ color: '#fff',
700
+ fontSize: 32,
701
+ },
702
+ imagePlayContainer: {
703
+ position: 'absolute',
704
+ top: 0,
705
+ left: 0,
706
+ right: 0,
707
+ bottom: 0,
708
+ alignItems: 'center',
709
+ justifyContent: 'center',
710
+ },
711
+ imageControlIcon: {
712
+ color: '#fff',
713
+ fontSize: 20,
714
+ textShadowColor: 'rgba(0,0,0,0.3)',
715
+ textShadowOffset: { width: 2, height: 2 },
716
+ },
717
+ removeImage: {
718
+ position: 'absolute',
719
+ top: 0,
720
+ right: 0,
721
+ padding: 4,
722
+ width: 40,
723
+ height: 40,
724
+ alignItems: 'center',
725
+ justifyContent: 'center',
726
+ },
407
727
  };
408
728
 
409
729
  const mapStateToProps = state => {
@@ -8,6 +8,9 @@ const values = {
8
8
  actionJobsLoaded: 'JOBS_LOADEDA',
9
9
  actionJobAdded: 'JOB_ADDEDA',
10
10
  actionJobsAdded: 'JOBS_ADDEDA',
11
+ actionJobsStatusesLoaded: 'JOBS_STATUSES_LOADEDA',
12
+ actionJobsHideSeen: 'JOBS_HIDE_SEENA',
13
+ actionJobFilterLoaded: 'JOBS_FILTER_LOADEDA',
11
14
  screenMaintenance: 'maintenanceA',
12
15
  screenRequestDetail: 'requestDetailA',
13
16
  screenServiceRequest: 'serviceRequestA',
@@ -26,6 +29,8 @@ const values = {
26
29
  textMoreMenuTitle: 'Request A',
27
30
  textKioskActionTitle: 'Request A',
28
31
  textEntityName: 'Job',
32
+ stringConfigJobStatus: 'maintenanceJobStatusA',
33
+ stringConfigHideSeen: 'maintenanceDisableSeenA',
29
34
  };
30
35
 
31
36
  export { values };
@@ -8,6 +8,9 @@ const values = {
8
8
  actionJobsLoaded: 'JOBS_LOADED',
9
9
  actionJobAdded: 'JOB_ADDED',
10
10
  actionJobsAdded: 'JOBS_ADDED',
11
+ actionJobsStatusesLoaded: 'JOBS_STATUSES_LOADED',
12
+ actionJobsHideSeen: 'JOBS_HIDE_SEEN',
13
+ actionJobFilterLoaded: 'JOBS_FILTER_LOADED',
11
14
  screenMaintenance: 'maintenance',
12
15
  screenRequestDetail: 'requestDetail',
13
16
  screenServiceRequest: 'serviceRequest',
@@ -32,6 +35,8 @@ const values = {
32
35
  emptyRequestsStaff: 'No active Requests',
33
36
  emptyRequestsUser: 'Your Requests will show here',
34
37
  forceCustomFields: false,
38
+ stringConfigJobStatus: 'maintenanceJobStatus',
39
+ stringConfigHideSeen: 'maintenanceDisableSeen',
35
40
  };
36
41
 
37
42
  export { values };
@@ -8,6 +8,9 @@ const values = {
8
8
  actionJobsLoaded: 'JOBS_LOADEDForms',
9
9
  actionJobAdded: 'JOB_ADDEDForms',
10
10
  actionJobsAdded: 'JOBS_ADDEDForms',
11
+ actionJobsStatusesLoaded: 'JOBS_STATUSES_LOADEDForms',
12
+ actionJobsHideSeen: 'JOBS_HIDE_SEENForms',
13
+ actionJobFilterLoaded: 'JOBS_FILTER_LOADEDForms',
11
14
  screenMaintenance: 'maintenanceForms',
12
15
  screenRequestDetail: 'requestDetailForms',
13
16
  screenServiceRequest: 'serviceRequestForms',
@@ -32,6 +35,8 @@ const values = {
32
35
  emptyRequestsStaff: 'No active Form Submissions',
33
36
  emptyRequestsUser: 'Your Form Submissions will show here',
34
37
  forceCustomFields: true,
38
+ stringConfigJobStatus: 'maintenanceJobStatusForms',
39
+ stringConfigHideSeen: 'maintenanceDisableSeenForms',
35
40
  };
36
41
 
37
42
  export { values };
@@ -8,6 +8,9 @@ const values = {
8
8
  actionJobsLoaded: 'JOBS_LOADED',
9
9
  actionJobAdded: 'JOB_ADDED',
10
10
  actionJobsAdded: 'JOBS_ADDED',
11
+ actionJobsStatusesLoaded: 'JOBS_STATUSES_LOADED',
12
+ actionJobsHideSeen: 'JOBS_HIDE_SEEN',
13
+ actionJobFilterLoaded: 'JOBS_FILTER_LOADED',
11
14
  screenMaintenance: 'maintenance',
12
15
  screenRequestDetail: 'requestDetail',
13
16
  screenServiceRequest: 'serviceRequest',
@@ -32,6 +35,8 @@ const values = {
32
35
  emptyRequestsStaff: 'No active Requests',
33
36
  emptyRequestsUser: 'Your Requests will show here',
34
37
  forceCustomFields: false,
38
+ stringConfigJobStatus: 'maintenanceJobStatus',
39
+ stringConfigHideSeen: 'maintenanceDisableSeen',
35
40
  };
36
41
 
37
42
  export { values };