@plusscommunities/pluss-maintenance-app 6.0.10 → 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.
- package/dist/module/actions/JobActions.js +44 -1
- package/dist/module/actions/JobActions.js.map +1 -1
- package/dist/module/actions/types.js +3 -0
- package/dist/module/actions/types.js.map +1 -1
- package/dist/module/apis/index.js +2 -0
- package/dist/module/apis/index.js.map +1 -1
- package/dist/module/apis/maintenanceActions.js +21 -6
- package/dist/module/apis/maintenanceActions.js.map +1 -1
- package/dist/module/components/FilterPopupMenu.js +34 -18
- package/dist/module/components/FilterPopupMenu.js.map +1 -1
- package/dist/module/components/MaintenanceList.js +47 -56
- package/dist/module/components/MaintenanceList.js.map +1 -1
- package/dist/module/components/MaintenanceListItem.js +39 -26
- package/dist/module/components/MaintenanceListItem.js.map +1 -1
- package/dist/module/components/MaintenanceWidgetItem.js +12 -12
- package/dist/module/components/MaintenanceWidgetItem.js.map +1 -1
- package/dist/module/components/PrioritySelectorPopup.js +82 -0
- package/dist/module/components/PrioritySelectorPopup.js.map +1 -0
- package/dist/module/components/StatusSelectorPopup.js +9 -14
- package/dist/module/components/StatusSelectorPopup.js.map +1 -1
- package/dist/module/components/WidgetSmall.js +7 -3
- package/dist/module/components/WidgetSmall.js.map +1 -1
- package/dist/module/helper.js +39 -25
- package/dist/module/helper.js.map +1 -1
- package/dist/module/reducers/JobsReducer.js +31 -2
- package/dist/module/reducers/JobsReducer.js.map +1 -1
- package/dist/module/screens/RequestDetail.js +92 -20
- package/dist/module/screens/RequestDetail.js.map +1 -1
- package/dist/module/screens/RequestNotes.js +335 -19
- package/dist/module/screens/RequestNotes.js.map +1 -1
- package/dist/module/values.config.a.js +7 -1
- package/dist/module/values.config.a.js.map +1 -1
- package/dist/module/values.config.default.js +7 -1
- package/dist/module/values.config.default.js.map +1 -1
- package/dist/module/values.config.forms.js +7 -1
- package/dist/module/values.config.forms.js.map +1 -1
- package/dist/module/values.config.js +7 -1
- package/dist/module/values.config.js.map +1 -1
- package/package.json +1 -1
- package/src/actions/JobActions.js +53 -1
- package/src/actions/types.js +4 -0
- package/src/apis/index.js +4 -0
- package/src/apis/maintenanceActions.js +18 -6
- package/src/components/FilterPopupMenu.js +40 -21
- package/src/components/MaintenanceList.js +38 -47
- package/src/components/MaintenanceListItem.js +35 -21
- package/src/components/MaintenanceWidgetItem.js +16 -12
- package/src/components/PrioritySelectorPopup.js +79 -0
- package/src/components/StatusSelectorPopup.js +8 -14
- package/src/components/WidgetSmall.js +5 -3
- package/src/helper.js +50 -21
- package/src/reducers/JobsReducer.js +25 -1
- package/src/screens/RequestDetail.js +91 -28
- package/src/screens/RequestNotes.js +348 -28
- package/src/values.config.a.js +6 -0
- package/src/values.config.default.js +6 -0
- package/src/values.config.forms.js +6 -0
- package/src/values.config.js +6 -0
- package/dist/module/values.config.b.js +0 -30
- package/dist/module/values.config.b.js.map +0 -1
- package/dist/module/values.config.c.js +0 -30
- package/dist/module/values.config.c.js.map +0 -1
- package/dist/module/values.config.d.js +0 -30
- package/dist/module/values.config.d.js.map +0 -1
- package/src/values.config.b.js +0 -30
- package/src/values.config.c.js +0 -30
- package/src/values.config.d.js +0 -30
@@ -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
|
-
|
85
|
-
|
86
|
-
|
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
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
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
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
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 => {
|
package/src/values.config.a.js
CHANGED
@@ -4,9 +4,13 @@ const values = {
|
|
4
4
|
reducerKey: 'jobsA',
|
5
5
|
serviceKey: 'maintenanceA',
|
6
6
|
updateKey: 'jobsA',
|
7
|
+
commentKey: 'maintenanceA',
|
7
8
|
actionJobsLoaded: 'JOBS_LOADEDA',
|
8
9
|
actionJobAdded: 'JOB_ADDEDA',
|
9
10
|
actionJobsAdded: 'JOBS_ADDEDA',
|
11
|
+
actionJobsStatusesLoaded: 'JOBS_STATUSES_LOADEDA',
|
12
|
+
actionJobsHideSeen: 'JOBS_HIDE_SEENA',
|
13
|
+
actionJobFilterLoaded: 'JOBS_FILTER_LOADEDA',
|
10
14
|
screenMaintenance: 'maintenanceA',
|
11
15
|
screenRequestDetail: 'requestDetailA',
|
12
16
|
screenServiceRequest: 'serviceRequestA',
|
@@ -25,6 +29,8 @@ const values = {
|
|
25
29
|
textMoreMenuTitle: 'Request A',
|
26
30
|
textKioskActionTitle: 'Request A',
|
27
31
|
textEntityName: 'Job',
|
32
|
+
stringConfigJobStatus: 'maintenanceJobStatusA',
|
33
|
+
stringConfigHideSeen: 'maintenanceDisableSeenA',
|
28
34
|
};
|
29
35
|
|
30
36
|
export { values };
|
@@ -4,9 +4,13 @@ const values = {
|
|
4
4
|
reducerKey: 'jobs',
|
5
5
|
serviceKey: 'maintenance',
|
6
6
|
updateKey: 'jobs',
|
7
|
+
commentKey: 'maintenancerequest',
|
7
8
|
actionJobsLoaded: 'JOBS_LOADED',
|
8
9
|
actionJobAdded: 'JOB_ADDED',
|
9
10
|
actionJobsAdded: 'JOBS_ADDED',
|
11
|
+
actionJobsStatusesLoaded: 'JOBS_STATUSES_LOADED',
|
12
|
+
actionJobsHideSeen: 'JOBS_HIDE_SEEN',
|
13
|
+
actionJobFilterLoaded: 'JOBS_FILTER_LOADED',
|
10
14
|
screenMaintenance: 'maintenance',
|
11
15
|
screenRequestDetail: 'requestDetail',
|
12
16
|
screenServiceRequest: 'serviceRequest',
|
@@ -31,6 +35,8 @@ const values = {
|
|
31
35
|
emptyRequestsStaff: 'No active Requests',
|
32
36
|
emptyRequestsUser: 'Your Requests will show here',
|
33
37
|
forceCustomFields: false,
|
38
|
+
stringConfigJobStatus: 'maintenanceJobStatus',
|
39
|
+
stringConfigHideSeen: 'maintenanceDisableSeen',
|
34
40
|
};
|
35
41
|
|
36
42
|
export { values };
|
@@ -4,9 +4,13 @@ const values = {
|
|
4
4
|
reducerKey: 'maintenanceForms',
|
5
5
|
serviceKey: 'maintenanceForms',
|
6
6
|
updateKey: 'jobsForms',
|
7
|
+
commentKey: 'maintenanceForms',
|
7
8
|
actionJobsLoaded: 'JOBS_LOADEDForms',
|
8
9
|
actionJobAdded: 'JOB_ADDEDForms',
|
9
10
|
actionJobsAdded: 'JOBS_ADDEDForms',
|
11
|
+
actionJobsStatusesLoaded: 'JOBS_STATUSES_LOADEDForms',
|
12
|
+
actionJobsHideSeen: 'JOBS_HIDE_SEENForms',
|
13
|
+
actionJobFilterLoaded: 'JOBS_FILTER_LOADEDForms',
|
10
14
|
screenMaintenance: 'maintenanceForms',
|
11
15
|
screenRequestDetail: 'requestDetailForms',
|
12
16
|
screenServiceRequest: 'serviceRequestForms',
|
@@ -31,6 +35,8 @@ const values = {
|
|
31
35
|
emptyRequestsStaff: 'No active Form Submissions',
|
32
36
|
emptyRequestsUser: 'Your Form Submissions will show here',
|
33
37
|
forceCustomFields: true,
|
38
|
+
stringConfigJobStatus: 'maintenanceJobStatusForms',
|
39
|
+
stringConfigHideSeen: 'maintenanceDisableSeenForms',
|
34
40
|
};
|
35
41
|
|
36
42
|
export { values };
|
package/src/values.config.js
CHANGED
@@ -4,9 +4,13 @@ const values = {
|
|
4
4
|
reducerKey: 'jobs',
|
5
5
|
serviceKey: 'maintenance',
|
6
6
|
updateKey: 'jobs',
|
7
|
+
commentKey: 'maintenancerequest',
|
7
8
|
actionJobsLoaded: 'JOBS_LOADED',
|
8
9
|
actionJobAdded: 'JOB_ADDED',
|
9
10
|
actionJobsAdded: 'JOBS_ADDED',
|
11
|
+
actionJobsStatusesLoaded: 'JOBS_STATUSES_LOADED',
|
12
|
+
actionJobsHideSeen: 'JOBS_HIDE_SEEN',
|
13
|
+
actionJobFilterLoaded: 'JOBS_FILTER_LOADED',
|
10
14
|
screenMaintenance: 'maintenance',
|
11
15
|
screenRequestDetail: 'requestDetail',
|
12
16
|
screenServiceRequest: 'serviceRequest',
|
@@ -31,6 +35,8 @@ const values = {
|
|
31
35
|
emptyRequestsStaff: 'No active Requests',
|
32
36
|
emptyRequestsUser: 'Your Requests will show here',
|
33
37
|
forceCustomFields: false,
|
38
|
+
stringConfigJobStatus: 'maintenanceJobStatus',
|
39
|
+
stringConfigHideSeen: 'maintenanceDisableSeen',
|
34
40
|
};
|
35
41
|
|
36
42
|
export { values };
|
@@ -1,30 +0,0 @@
|
|
1
|
-
const values = {
|
2
|
-
featureKey: 'maintenanceB',
|
3
|
-
aliases: ['maintenanceRequestB'],
|
4
|
-
reducerKey: 'jobsB',
|
5
|
-
serviceKey: 'maintenanceB',
|
6
|
-
updateKey: 'jobsB',
|
7
|
-
actionJobsLoaded: 'JOBS_LOADEDB',
|
8
|
-
actionJobAdded: 'JOB_ADDEDB',
|
9
|
-
actionJobsAdded: 'JOBS_ADDEDB',
|
10
|
-
screenMaintenance: 'maintenanceB',
|
11
|
-
screenRequestDetail: 'requestDetailB',
|
12
|
-
screenServiceRequest: 'serviceRequestB',
|
13
|
-
screenJobTypePicker: 'jobTypePickerB',
|
14
|
-
screenRequestNotes: 'requestNotesB',
|
15
|
-
permissionMaintenanceTracking: 'maintenanceTrackingB',
|
16
|
-
permissionMaintenanceAssignment: 'maintenanceAssignmentB',
|
17
|
-
iconGridMenu: 'maintenance',
|
18
|
-
iconAddMenu: 'request',
|
19
|
-
iconKioskAction: 'wrench',
|
20
|
-
orderAddMenu: 5,
|
21
|
-
orderMoreMenu: 4,
|
22
|
-
orderKioskAction: 1,
|
23
|
-
textFeatureTitle: 'Request B',
|
24
|
-
textAddMenuTitle: 'Request B',
|
25
|
-
textMoreMenuTitle: 'Request B',
|
26
|
-
textKioskActionTitle: 'Request B',
|
27
|
-
textEntityName: 'Job'
|
28
|
-
};
|
29
|
-
export { values };
|
30
|
-
//# sourceMappingURL=values.config.b.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["values","featureKey","aliases","reducerKey","serviceKey","updateKey","actionJobsLoaded","actionJobAdded","actionJobsAdded","screenMaintenance","screenRequestDetail","screenServiceRequest","screenJobTypePicker","screenRequestNotes","permissionMaintenanceTracking","permissionMaintenanceAssignment","iconGridMenu","iconAddMenu","iconKioskAction","orderAddMenu","orderMoreMenu","orderKioskAction","textFeatureTitle","textAddMenuTitle","textMoreMenuTitle","textKioskActionTitle","textEntityName"],"sources":["values.config.b.js"],"sourcesContent":["const values = {\n featureKey: 'maintenanceB',\n aliases: ['maintenanceRequestB'],\n reducerKey: 'jobsB',\n serviceKey: 'maintenanceB',\n updateKey: 'jobsB',\n actionJobsLoaded: 'JOBS_LOADEDB',\n actionJobAdded: 'JOB_ADDEDB',\n actionJobsAdded: 'JOBS_ADDEDB',\n screenMaintenance: 'maintenanceB',\n screenRequestDetail: 'requestDetailB',\n screenServiceRequest: 'serviceRequestB',\n screenJobTypePicker: 'jobTypePickerB',\n screenRequestNotes: 'requestNotesB',\n permissionMaintenanceTracking: 'maintenanceTrackingB',\n permissionMaintenanceAssignment: 'maintenanceAssignmentB',\n iconGridMenu: 'maintenance',\n iconAddMenu: 'request',\n iconKioskAction: 'wrench',\n orderAddMenu: 5,\n orderMoreMenu: 4,\n orderKioskAction: 1,\n textFeatureTitle: 'Request B',\n textAddMenuTitle: 'Request B',\n textMoreMenuTitle: 'Request B',\n textKioskActionTitle: 'Request B',\n textEntityName: 'Job',\n};\n\nexport { values };\n"],"mappings":"AAAA,MAAMA,MAAM,GAAG;EACbC,UAAU,EAAE,cAAc;EAC1BC,OAAO,EAAE,CAAC,qBAAqB,CAAC;EAChCC,UAAU,EAAE,OAAO;EACnBC,UAAU,EAAE,cAAc;EAC1BC,SAAS,EAAE,OAAO;EAClBC,gBAAgB,EAAE,cAAc;EAChCC,cAAc,EAAE,YAAY;EAC5BC,eAAe,EAAE,aAAa;EAC9BC,iBAAiB,EAAE,cAAc;EACjCC,mBAAmB,EAAE,gBAAgB;EACrCC,oBAAoB,EAAE,iBAAiB;EACvCC,mBAAmB,EAAE,gBAAgB;EACrCC,kBAAkB,EAAE,eAAe;EACnCC,6BAA6B,EAAE,sBAAsB;EACrDC,+BAA+B,EAAE,wBAAwB;EACzDC,YAAY,EAAE,aAAa;EAC3BC,WAAW,EAAE,SAAS;EACtBC,eAAe,EAAE,QAAQ;EACzBC,YAAY,EAAE,CAAC;EACfC,aAAa,EAAE,CAAC;EAChBC,gBAAgB,EAAE,CAAC;EACnBC,gBAAgB,EAAE,WAAW;EAC7BC,gBAAgB,EAAE,WAAW;EAC7BC,iBAAiB,EAAE,WAAW;EAC9BC,oBAAoB,EAAE,WAAW;EACjCC,cAAc,EAAE;AAClB,CAAC;AAED,SAAS1B,MAAM","ignoreList":[]}
|
@@ -1,30 +0,0 @@
|
|
1
|
-
const values = {
|
2
|
-
featureKey: 'maintenanceC',
|
3
|
-
aliases: ['maintenanceRequestC'],
|
4
|
-
reducerKey: 'jobsC',
|
5
|
-
serviceKey: 'maintenanceC',
|
6
|
-
updateKey: 'jobsC',
|
7
|
-
actionJobsLoaded: 'JOBS_LOADEDC',
|
8
|
-
actionJobAdded: 'JOB_ADDEDC',
|
9
|
-
actionJobsAdded: 'JOBS_ADDEDC',
|
10
|
-
screenMaintenance: 'maintenanceC',
|
11
|
-
screenRequestDetail: 'requestDetailC',
|
12
|
-
screenServiceRequest: 'serviceRequestC',
|
13
|
-
screenJobTypePicker: 'jobTypePickerC',
|
14
|
-
screenRequestNotes: 'requestNotesC',
|
15
|
-
permissionMaintenanceTracking: 'maintenanceTrackingC',
|
16
|
-
permissionMaintenanceAssignment: 'maintenanceAssignmentC',
|
17
|
-
iconGridMenu: 'maintenance',
|
18
|
-
iconAddMenu: 'request',
|
19
|
-
iconKioskAction: 'wrench',
|
20
|
-
orderAddMenu: 5,
|
21
|
-
orderMoreMenu: 4,
|
22
|
-
orderKioskAction: 1,
|
23
|
-
textFeatureTitle: 'Request C',
|
24
|
-
textAddMenuTitle: 'Request C',
|
25
|
-
textMoreMenuTitle: 'Request C',
|
26
|
-
textKioskActionTitle: 'Request C',
|
27
|
-
textEntityName: 'Job'
|
28
|
-
};
|
29
|
-
export { values };
|
30
|
-
//# sourceMappingURL=values.config.c.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["values","featureKey","aliases","reducerKey","serviceKey","updateKey","actionJobsLoaded","actionJobAdded","actionJobsAdded","screenMaintenance","screenRequestDetail","screenServiceRequest","screenJobTypePicker","screenRequestNotes","permissionMaintenanceTracking","permissionMaintenanceAssignment","iconGridMenu","iconAddMenu","iconKioskAction","orderAddMenu","orderMoreMenu","orderKioskAction","textFeatureTitle","textAddMenuTitle","textMoreMenuTitle","textKioskActionTitle","textEntityName"],"sources":["values.config.c.js"],"sourcesContent":["const values = {\n featureKey: 'maintenanceC',\n aliases: ['maintenanceRequestC'],\n reducerKey: 'jobsC',\n serviceKey: 'maintenanceC',\n updateKey: 'jobsC',\n actionJobsLoaded: 'JOBS_LOADEDC',\n actionJobAdded: 'JOB_ADDEDC',\n actionJobsAdded: 'JOBS_ADDEDC',\n screenMaintenance: 'maintenanceC',\n screenRequestDetail: 'requestDetailC',\n screenServiceRequest: 'serviceRequestC',\n screenJobTypePicker: 'jobTypePickerC',\n screenRequestNotes: 'requestNotesC',\n permissionMaintenanceTracking: 'maintenanceTrackingC',\n permissionMaintenanceAssignment: 'maintenanceAssignmentC',\n iconGridMenu: 'maintenance',\n iconAddMenu: 'request',\n iconKioskAction: 'wrench',\n orderAddMenu: 5,\n orderMoreMenu: 4,\n orderKioskAction: 1,\n textFeatureTitle: 'Request C',\n textAddMenuTitle: 'Request C',\n textMoreMenuTitle: 'Request C',\n textKioskActionTitle: 'Request C',\n textEntityName: 'Job',\n};\n\nexport { values };\n"],"mappings":"AAAA,MAAMA,MAAM,GAAG;EACbC,UAAU,EAAE,cAAc;EAC1BC,OAAO,EAAE,CAAC,qBAAqB,CAAC;EAChCC,UAAU,EAAE,OAAO;EACnBC,UAAU,EAAE,cAAc;EAC1BC,SAAS,EAAE,OAAO;EAClBC,gBAAgB,EAAE,cAAc;EAChCC,cAAc,EAAE,YAAY;EAC5BC,eAAe,EAAE,aAAa;EAC9BC,iBAAiB,EAAE,cAAc;EACjCC,mBAAmB,EAAE,gBAAgB;EACrCC,oBAAoB,EAAE,iBAAiB;EACvCC,mBAAmB,EAAE,gBAAgB;EACrCC,kBAAkB,EAAE,eAAe;EACnCC,6BAA6B,EAAE,sBAAsB;EACrDC,+BAA+B,EAAE,wBAAwB;EACzDC,YAAY,EAAE,aAAa;EAC3BC,WAAW,EAAE,SAAS;EACtBC,eAAe,EAAE,QAAQ;EACzBC,YAAY,EAAE,CAAC;EACfC,aAAa,EAAE,CAAC;EAChBC,gBAAgB,EAAE,CAAC;EACnBC,gBAAgB,EAAE,WAAW;EAC7BC,gBAAgB,EAAE,WAAW;EAC7BC,iBAAiB,EAAE,WAAW;EAC9BC,oBAAoB,EAAE,WAAW;EACjCC,cAAc,EAAE;AAClB,CAAC;AAED,SAAS1B,MAAM","ignoreList":[]}
|
@@ -1,30 +0,0 @@
|
|
1
|
-
const values = {
|
2
|
-
featureKey: 'maintenanceD',
|
3
|
-
aliases: ['maintenanceRequestD'],
|
4
|
-
reducerKey: 'jobsD',
|
5
|
-
serviceKey: 'maintenanceD',
|
6
|
-
updateKey: 'jobsD',
|
7
|
-
actionJobsLoaded: 'JOBS_LOADEDD',
|
8
|
-
actionJobAdded: 'JOB_ADDEDD',
|
9
|
-
actionJobsAdded: 'JOBS_ADDEDD',
|
10
|
-
screenMaintenance: 'maintenanceD',
|
11
|
-
screenRequestDetail: 'requestDetailD',
|
12
|
-
screenServiceRequest: 'serviceRequestD',
|
13
|
-
screenJobTypePicker: 'jobTypePickerD',
|
14
|
-
screenRequestNotes: 'requestNotesD',
|
15
|
-
permissionMaintenanceTracking: 'maintenanceTrackingD',
|
16
|
-
permissionMaintenanceAssignment: 'maintenanceAssignmentD',
|
17
|
-
iconGridMenu: 'maintenance',
|
18
|
-
iconAddMenu: 'request',
|
19
|
-
iconKioskAction: 'wrench',
|
20
|
-
orderAddMenu: 5,
|
21
|
-
orderMoreMenu: 4,
|
22
|
-
orderKioskAction: 1,
|
23
|
-
textFeatureTitle: 'Request D',
|
24
|
-
textAddMenuTitle: 'Request D',
|
25
|
-
textMoreMenuTitle: 'Request D',
|
26
|
-
textKioskActionTitle: 'Request D',
|
27
|
-
textEntityName: 'Job'
|
28
|
-
};
|
29
|
-
export { values };
|
30
|
-
//# sourceMappingURL=values.config.d.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["values","featureKey","aliases","reducerKey","serviceKey","updateKey","actionJobsLoaded","actionJobAdded","actionJobsAdded","screenMaintenance","screenRequestDetail","screenServiceRequest","screenJobTypePicker","screenRequestNotes","permissionMaintenanceTracking","permissionMaintenanceAssignment","iconGridMenu","iconAddMenu","iconKioskAction","orderAddMenu","orderMoreMenu","orderKioskAction","textFeatureTitle","textAddMenuTitle","textMoreMenuTitle","textKioskActionTitle","textEntityName"],"sources":["values.config.d.js"],"sourcesContent":["const values = {\n featureKey: 'maintenanceD',\n aliases: ['maintenanceRequestD'],\n reducerKey: 'jobsD',\n serviceKey: 'maintenanceD',\n updateKey: 'jobsD',\n actionJobsLoaded: 'JOBS_LOADEDD',\n actionJobAdded: 'JOB_ADDEDD',\n actionJobsAdded: 'JOBS_ADDEDD',\n screenMaintenance: 'maintenanceD',\n screenRequestDetail: 'requestDetailD',\n screenServiceRequest: 'serviceRequestD',\n screenJobTypePicker: 'jobTypePickerD',\n screenRequestNotes: 'requestNotesD',\n permissionMaintenanceTracking: 'maintenanceTrackingD',\n permissionMaintenanceAssignment: 'maintenanceAssignmentD',\n iconGridMenu: 'maintenance',\n iconAddMenu: 'request',\n iconKioskAction: 'wrench',\n orderAddMenu: 5,\n orderMoreMenu: 4,\n orderKioskAction: 1,\n textFeatureTitle: 'Request D',\n textAddMenuTitle: 'Request D',\n textMoreMenuTitle: 'Request D',\n textKioskActionTitle: 'Request D',\n textEntityName: 'Job',\n};\n\nexport { values };\n"],"mappings":"AAAA,MAAMA,MAAM,GAAG;EACbC,UAAU,EAAE,cAAc;EAC1BC,OAAO,EAAE,CAAC,qBAAqB,CAAC;EAChCC,UAAU,EAAE,OAAO;EACnBC,UAAU,EAAE,cAAc;EAC1BC,SAAS,EAAE,OAAO;EAClBC,gBAAgB,EAAE,cAAc;EAChCC,cAAc,EAAE,YAAY;EAC5BC,eAAe,EAAE,aAAa;EAC9BC,iBAAiB,EAAE,cAAc;EACjCC,mBAAmB,EAAE,gBAAgB;EACrCC,oBAAoB,EAAE,iBAAiB;EACvCC,mBAAmB,EAAE,gBAAgB;EACrCC,kBAAkB,EAAE,eAAe;EACnCC,6BAA6B,EAAE,sBAAsB;EACrDC,+BAA+B,EAAE,wBAAwB;EACzDC,YAAY,EAAE,aAAa;EAC3BC,WAAW,EAAE,SAAS;EACtBC,eAAe,EAAE,QAAQ;EACzBC,YAAY,EAAE,CAAC;EACfC,aAAa,EAAE,CAAC;EAChBC,gBAAgB,EAAE,CAAC;EACnBC,gBAAgB,EAAE,WAAW;EAC7BC,gBAAgB,EAAE,WAAW;EAC7BC,iBAAiB,EAAE,WAAW;EAC9BC,oBAAoB,EAAE,WAAW;EACjCC,cAAc,EAAE;AAClB,CAAC;AAED,SAAS1B,MAAM","ignoreList":[]}
|