@plusscommunities/pluss-maintenance-app-forms 6.0.12-beta.0 → 7.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/actions/JobActions.js +1 -44
- package/dist/module/actions/JobActions.js.map +1 -1
- package/dist/module/actions/types.js +0 -3
- package/dist/module/actions/types.js.map +1 -1
- package/dist/module/apis/index.js +0 -2
- package/dist/module/apis/index.js.map +1 -1
- package/dist/module/apis/maintenanceActions.js +6 -21
- package/dist/module/apis/maintenanceActions.js.map +1 -1
- package/dist/module/components/FilterPopupMenu.js +18 -34
- package/dist/module/components/FilterPopupMenu.js.map +1 -1
- package/dist/module/components/MaintenanceList.js +56 -47
- package/dist/module/components/MaintenanceList.js.map +1 -1
- package/dist/module/components/MaintenanceListItem.js +27 -40
- package/dist/module/components/MaintenanceListItem.js.map +1 -1
- package/dist/module/components/MaintenanceWidgetItem.js +13 -13
- package/dist/module/components/MaintenanceWidgetItem.js.map +1 -1
- package/dist/module/components/StatusSelectorPopup.js +14 -9
- package/dist/module/components/StatusSelectorPopup.js.map +1 -1
- package/dist/module/components/WidgetSmall.js +3 -7
- package/dist/module/components/WidgetSmall.js.map +1 -1
- package/dist/module/helper.js +25 -39
- package/dist/module/helper.js.map +1 -1
- package/dist/module/reducers/JobsReducer.js +2 -31
- package/dist/module/reducers/JobsReducer.js.map +1 -1
- package/dist/module/screens/JobTypePicker.js +1 -1
- package/dist/module/screens/JobTypePicker.js.map +1 -1
- package/dist/module/screens/RequestDetail.js +19 -91
- package/dist/module/screens/RequestDetail.js.map +1 -1
- package/dist/module/screens/RequestNotes.js +20 -336
- package/dist/module/screens/RequestNotes.js.map +1 -1
- package/dist/module/screens/ServiceRequest.js +1 -1
- package/dist/module/screens/ServiceRequest.js.map +1 -1
- package/dist/module/values.config.a.js +1 -6
- package/dist/module/values.config.a.js.map +1 -1
- package/dist/module/values.config.default.js +1 -6
- package/dist/module/values.config.default.js.map +1 -1
- package/dist/module/values.config.forms.js +1 -6
- package/dist/module/values.config.forms.js.map +1 -1
- package/dist/module/values.config.js +1 -6
- package/dist/module/values.config.js.map +1 -1
- package/package.json +9 -8
- package/src/actions/JobActions.js +1 -53
- package/src/actions/types.js +0 -4
- package/src/apis/index.js +0 -4
- package/src/apis/maintenanceActions.js +6 -18
- package/src/components/FilterPopupMenu.js +21 -40
- package/src/components/MaintenanceList.js +47 -38
- package/src/components/MaintenanceListItem.js +22 -36
- package/src/components/MaintenanceWidgetItem.js +13 -17
- package/src/components/StatusSelectorPopup.js +14 -8
- package/src/components/WidgetSmall.js +3 -5
- package/src/helper.js +21 -50
- package/src/reducers/JobsReducer.js +1 -25
- package/src/screens/JobTypePicker.js +1 -1
- package/src/screens/RequestDetail.js +25 -88
- package/src/screens/RequestNotes.js +22 -342
- package/src/screens/ServiceRequest.js +2 -2
- package/src/values.config.a.js +0 -5
- package/src/values.config.default.js +0 -5
- package/src/values.config.forms.js +0 -5
- package/src/values.config.js +0 -5
- package/dist/module/components/PrioritySelectorPopup.js +0 -82
- package/dist/module/components/PrioritySelectorPopup.js.map +0 -1
- package/src/components/PrioritySelectorPopup.js +0 -79
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
import React, { PureComponent } from 'react';
|
|
2
2
|
import { View, StyleSheet, TouchableOpacity, Text } from 'react-native';
|
|
3
3
|
import { connect } from 'react-redux';
|
|
4
|
-
import {
|
|
4
|
+
import { jobStatusOptions, getJobStatusColour } from '../helper';
|
|
5
5
|
import { Components, Colours } from '../core.config';
|
|
6
|
-
import { values } from '../values.config';
|
|
7
6
|
|
|
8
7
|
class StatusSelectorPopup extends PureComponent {
|
|
9
8
|
render() {
|
|
10
|
-
const { title, includeAll, allText, onClose, onSelect } = this.props;
|
|
11
|
-
let statuses =
|
|
9
|
+
const { title, filter, includeAll, allText, onClose, onSelect } = this.props;
|
|
10
|
+
let statuses = filter
|
|
11
|
+
? filter.map(status => {
|
|
12
|
+
return {
|
|
13
|
+
name: status,
|
|
14
|
+
label: getJobStatusLabel(status),
|
|
15
|
+
color: getJobStatusColour(status),
|
|
16
|
+
};
|
|
17
|
+
})
|
|
18
|
+
: jobStatusOptions;
|
|
12
19
|
if (includeAll)
|
|
13
20
|
statuses = [
|
|
14
21
|
{
|
|
15
|
-
|
|
22
|
+
name: allText || 'Show All',
|
|
16
23
|
color: this.props.colourBrandingMain,
|
|
17
24
|
},
|
|
18
25
|
...statuses,
|
|
@@ -24,9 +31,9 @@ class StatusSelectorPopup extends PureComponent {
|
|
|
24
31
|
<View style={styles.statusPopupOptionsContainer}>
|
|
25
32
|
{statuses.map(status => {
|
|
26
33
|
return (
|
|
27
|
-
<TouchableOpacity key={status.
|
|
34
|
+
<TouchableOpacity key={status.name} onPress={() => onSelect(status.name)}>
|
|
28
35
|
<View style={[styles.jobStatusContainer, { backgroundColor: status.color }]}>
|
|
29
|
-
<Text style={styles.jobStatusText}>{status.
|
|
36
|
+
<Text style={styles.jobStatusText}>{status.label}</Text>
|
|
30
37
|
</View>
|
|
31
38
|
</TouchableOpacity>
|
|
32
39
|
);
|
|
@@ -74,7 +81,6 @@ const styles = StyleSheet.create({
|
|
|
74
81
|
const mapStateToProps = state => {
|
|
75
82
|
return {
|
|
76
83
|
colourBrandingMain: Colours.getMainBrandingColourFromState(state),
|
|
77
|
-
statusTypes: state[values.reducerKey].jobstatuses,
|
|
78
84
|
};
|
|
79
85
|
};
|
|
80
86
|
|
|
@@ -3,10 +3,10 @@ import { Text, View, ScrollView, StyleSheet } from 'react-native';
|
|
|
3
3
|
import { connect } from 'react-redux';
|
|
4
4
|
import _ from 'lodash';
|
|
5
5
|
import { maintenanceActions } from '../apis';
|
|
6
|
-
import { jobsLoaded
|
|
6
|
+
import { jobsLoaded } from '../actions';
|
|
7
7
|
import MaintenanceWidgetItem from './MaintenanceWidgetItem';
|
|
8
8
|
import { Services } from '../feature.config';
|
|
9
|
-
import { Colours, Components } from '../core.config';
|
|
9
|
+
import { Colours, Components, Config } from '../core.config';
|
|
10
10
|
import { values } from '../values.config';
|
|
11
11
|
|
|
12
12
|
const MAX_ITEMS = 10;
|
|
@@ -18,8 +18,6 @@ class WidgetSmall extends Component {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
componentDidMount() {
|
|
21
|
-
this.props.jobStatusesUpdate(this.props.site);
|
|
22
|
-
this.props.jobHideSeenUpdate(this.props.site);
|
|
23
21
|
this.refresh();
|
|
24
22
|
}
|
|
25
23
|
|
|
@@ -151,4 +149,4 @@ const mapStateToProps = state => {
|
|
|
151
149
|
};
|
|
152
150
|
};
|
|
153
151
|
|
|
154
|
-
export default connect(mapStateToProps, { jobsLoaded
|
|
152
|
+
export default connect(mapStateToProps, { jobsLoaded }, null, { forwardRef: true })(WidgetSmall);
|
package/src/helper.js
CHANGED
|
@@ -1,68 +1,39 @@
|
|
|
1
|
+
import { label } from 'aws-amplify';
|
|
1
2
|
import { Colours } from './core.config';
|
|
2
3
|
|
|
3
|
-
const STATUS_NOT_ACTIONED = 'Not Actioned';
|
|
4
|
-
const STATUS_IN_PROGRESS = 'In Progress';
|
|
5
|
-
const STATUS_COMPLETED = 'Completed';
|
|
6
|
-
|
|
7
4
|
const jobStatusOptions = [
|
|
8
5
|
{
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
name: 'Unassigned',
|
|
7
|
+
label: 'Open',
|
|
11
8
|
color: Colours.LINEGREY,
|
|
12
|
-
category: STATUS_NOT_ACTIONED,
|
|
13
9
|
},
|
|
14
10
|
{
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
name: 'In Progress',
|
|
12
|
+
label: 'In Progress',
|
|
17
13
|
color: Colours.COLOUR_TEAL,
|
|
18
|
-
category: STATUS_IN_PROGRESS,
|
|
19
14
|
},
|
|
20
15
|
{
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
name: 'Completed',
|
|
17
|
+
label: 'Completed',
|
|
23
18
|
color: Colours.COLOUR_GREEN_LIGHT,
|
|
24
|
-
category: STATUS_COMPLETED,
|
|
25
|
-
},
|
|
26
|
-
];
|
|
27
|
-
|
|
28
|
-
const jobPriorityOptions = [
|
|
29
|
-
{
|
|
30
|
-
label: 'Low',
|
|
31
|
-
color: Colours.COLOUR_GREEN,
|
|
32
|
-
default: true,
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
label: 'Medium',
|
|
36
|
-
color: Colours.COLOUR_TANGERINE,
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
label: 'High',
|
|
40
|
-
color: Colours.COLOUR_RED,
|
|
41
19
|
},
|
|
42
20
|
];
|
|
43
21
|
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const getIncompleteJobStatuses = props => getJobStatusOptions(props).filter(s => s.category === STATUS_IN_PROGRESS);
|
|
22
|
+
const getJobStatusColour = status => {
|
|
23
|
+
const option = jobStatusOptions.find(item => item.name === status);
|
|
24
|
+
return option ? option.color : jobStatusOptions[0].color;
|
|
25
|
+
};
|
|
49
26
|
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (status) statusOption = statusOptions.find(s => s.text === status);
|
|
55
|
-
return statusOption || getDefaultJobStatuses(props)[0];
|
|
56
|
-
}
|
|
27
|
+
const getJobStatusLabel = status => {
|
|
28
|
+
const option = jobStatusOptions.find(item => item.name === status);
|
|
29
|
+
return option ? option.label : jobStatusOptions[0].label;
|
|
30
|
+
};
|
|
57
31
|
|
|
58
|
-
const
|
|
32
|
+
const getJobStatusProps = status => {
|
|
33
|
+
const statusText = getJobStatusLabel(status) || jobStatusOptions[0].label;
|
|
34
|
+
const statusColor = getJobStatusColour(statusText);
|
|
59
35
|
|
|
60
|
-
|
|
61
|
-
jobStatusOptions,
|
|
62
|
-
jobPriorityOptions,
|
|
63
|
-
getJobStatusOptions,
|
|
64
|
-
getDefaultJobStatuses,
|
|
65
|
-
getIncompleteJobStatuses,
|
|
66
|
-
getJobStatus,
|
|
67
|
-
getJobPriority,
|
|
36
|
+
return { statusText, statusColor };
|
|
68
37
|
};
|
|
38
|
+
|
|
39
|
+
export { jobStatusOptions, getJobStatusColour, getJobStatusProps, getJobStatusLabel };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable no-param-reassign */
|
|
2
2
|
import _ from 'lodash';
|
|
3
3
|
import { REHYDRATE } from 'redux-persist';
|
|
4
|
-
import { JOBS_LOADED, JOB_ADDED, JOBS_ADDED
|
|
4
|
+
import { JOBS_LOADED, JOB_ADDED, JOBS_ADDED } from '../actions/types';
|
|
5
5
|
import { ActionTypes } from '../core.config';
|
|
6
6
|
import { values } from '../values.config';
|
|
7
7
|
|
|
@@ -9,22 +9,11 @@ const REDUCER_KEY = values.reducerKey;
|
|
|
9
9
|
|
|
10
10
|
const INITIAL_STATE = {
|
|
11
11
|
jobs: [],
|
|
12
|
-
jobstatuses: [],
|
|
13
|
-
hideSeen: false,
|
|
14
|
-
jobfilters: {
|
|
15
|
-
status: '',
|
|
16
|
-
statusText: '',
|
|
17
|
-
priority: '',
|
|
18
|
-
type: '',
|
|
19
|
-
assignee: '',
|
|
20
|
-
assigneeName: '',
|
|
21
|
-
},
|
|
22
12
|
};
|
|
23
13
|
|
|
24
14
|
export default (state = INITIAL_STATE, action) => {
|
|
25
15
|
let updateJobs = [];
|
|
26
16
|
let index = 0;
|
|
27
|
-
let jobstatuses = [];
|
|
28
17
|
|
|
29
18
|
switch (action.type) {
|
|
30
19
|
case ActionTypes.LOGOUT:
|
|
@@ -47,19 +36,6 @@ export default (state = INITIAL_STATE, action) => {
|
|
|
47
36
|
updateJobs.push(action.payload);
|
|
48
37
|
}
|
|
49
38
|
return { ...state, jobs: updateJobs };
|
|
50
|
-
case JOBS_STATUSES_LOADED:
|
|
51
|
-
jobstatuses = _.orderBy(
|
|
52
|
-
_.unionWith(action.payload, state.jobstatuses, (v1, v2) => {
|
|
53
|
-
return v1 != null && v2 != null && v1.text === v2.text;
|
|
54
|
-
}),
|
|
55
|
-
'order',
|
|
56
|
-
'asc',
|
|
57
|
-
);
|
|
58
|
-
return { ...state, jobstatuses };
|
|
59
|
-
case JOBS_HIDE_SEEN:
|
|
60
|
-
return { ...state, hideSeen: action.payload };
|
|
61
|
-
case JOB_FILTER_LOADED:
|
|
62
|
-
return { ...state, jobfilters: action.payload };
|
|
63
39
|
case REHYDRATE:
|
|
64
40
|
if (!action.payload) return state;
|
|
65
41
|
if (action.payload[REDUCER_KEY]) {
|
|
@@ -2,7 +2,7 @@ import React, { Component } from 'react';
|
|
|
2
2
|
import _ from 'lodash';
|
|
3
3
|
import { TouchableOpacity, View, ScrollView, Text } from 'react-native';
|
|
4
4
|
import { connect } from 'react-redux';
|
|
5
|
-
import { Icon } from '
|
|
5
|
+
import { Icon } from '@rneui/themed';
|
|
6
6
|
import { Services } from '../feature.config';
|
|
7
7
|
import { Components, Colours } from '../core.config';
|
|
8
8
|
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import React, { Component } from 'react';
|
|
2
2
|
import { ScrollView, View, StyleSheet, Text, KeyboardAvoidingView, TouchableOpacity, ImageBackground, Platform } from 'react-native';
|
|
3
3
|
import DateTimePicker from 'react-native-modal-datetime-picker';
|
|
4
|
-
import { Icon } from '
|
|
4
|
+
import { Icon } from '@rneui/themed';
|
|
5
5
|
import _ from 'lodash';
|
|
6
6
|
import moment from 'moment';
|
|
7
7
|
import { connect } from 'react-redux';
|
|
8
8
|
import { maintenanceActions } from '../apis';
|
|
9
|
-
import { jobAdded
|
|
9
|
+
import { jobAdded } from '../actions';
|
|
10
10
|
import StatusSelectorPopup from '../components/StatusSelectorPopup';
|
|
11
|
-
import
|
|
12
|
-
import { getJobStatus, getJobPriority } from '../helper';
|
|
11
|
+
import { jobStatusOptions, getJobStatusProps } from '../helper';
|
|
13
12
|
import { Services } from '../feature.config';
|
|
14
13
|
import { Colours, Helper, Components, Config } from '../core.config';
|
|
15
14
|
import { values } from '../values.config';
|
|
@@ -23,13 +22,11 @@ class RequestDetail extends Component {
|
|
|
23
22
|
isDateTimePickerVisible: false,
|
|
24
23
|
popUpType: '',
|
|
25
24
|
status: '',
|
|
26
|
-
priority: '',
|
|
27
25
|
expectedDate: null,
|
|
28
26
|
expectedDateText: '',
|
|
29
27
|
seen: false,
|
|
30
28
|
showMore: true,
|
|
31
29
|
showStatusPopup: false,
|
|
32
|
-
showPriorityPopup: false,
|
|
33
30
|
loading: false,
|
|
34
31
|
showFullscreenVideo: false,
|
|
35
32
|
currentVideoUrl: '',
|
|
@@ -45,8 +42,6 @@ class RequestDetail extends Component {
|
|
|
45
42
|
}
|
|
46
43
|
|
|
47
44
|
componentDidMount() {
|
|
48
|
-
this.props.jobStatusesUpdate(this.props.job.site);
|
|
49
|
-
this.props.jobHideSeenUpdate(this.props.job.site);
|
|
50
45
|
this.getJob();
|
|
51
46
|
this.updateJobState(this.props.job);
|
|
52
47
|
this.getAssignees();
|
|
@@ -56,7 +51,6 @@ class RequestDetail extends Component {
|
|
|
56
51
|
this.setState({ loading: true }, async () => {
|
|
57
52
|
try {
|
|
58
53
|
const res = await maintenanceActions.getJob(this.props.job.site, this.props.job.id);
|
|
59
|
-
// console.log('getJob', JSON.stringify(res.data, null, 2));
|
|
60
54
|
this.props.jobAdded(res.data);
|
|
61
55
|
this.updateJobState(res.data);
|
|
62
56
|
} catch (error) {
|
|
@@ -161,20 +155,6 @@ class RequestDetail extends Component {
|
|
|
161
155
|
});
|
|
162
156
|
};
|
|
163
157
|
|
|
164
|
-
updateJobPriority = () => {
|
|
165
|
-
this.setState({ loading: true }, async () => {
|
|
166
|
-
try {
|
|
167
|
-
const res = await maintenanceActions.editJobPriority(this.props.job.id, this.state.priority);
|
|
168
|
-
this.props.jobAdded(res.data.job);
|
|
169
|
-
this.getJob();
|
|
170
|
-
} catch (error) {
|
|
171
|
-
console.log('updateJobPriority error', error);
|
|
172
|
-
} finally {
|
|
173
|
-
this.setState({ loading: false });
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
};
|
|
177
|
-
|
|
178
158
|
onPressBack = () => {
|
|
179
159
|
Services.navigation.goBack();
|
|
180
160
|
};
|
|
@@ -188,27 +168,11 @@ class RequestDetail extends Component {
|
|
|
188
168
|
};
|
|
189
169
|
|
|
190
170
|
onSelectStatus = status => {
|
|
191
|
-
if (this.state.loading) return;
|
|
192
171
|
this.setState({ status, showStatusPopup: false }, () => {
|
|
193
172
|
this.updateJobStatus();
|
|
194
173
|
});
|
|
195
174
|
};
|
|
196
175
|
|
|
197
|
-
onOpenPriorityPicker = () => {
|
|
198
|
-
this.setState({ showPriorityPopup: true });
|
|
199
|
-
};
|
|
200
|
-
|
|
201
|
-
onClosePriorityPopup = () => {
|
|
202
|
-
this.setState({ showPriorityPopup: false });
|
|
203
|
-
};
|
|
204
|
-
|
|
205
|
-
onSelectPriority = priority => {
|
|
206
|
-
if (this.state.loading) return;
|
|
207
|
-
this.setState({ priority, showPriorityPopup: false }, () => {
|
|
208
|
-
this.updateJobPriority();
|
|
209
|
-
});
|
|
210
|
-
};
|
|
211
|
-
|
|
212
176
|
openStaffNotes = () => {
|
|
213
177
|
Services.navigation.navigate(values.screenRequestNotes, { job: this.state.job, onChange: this.getJob });
|
|
214
178
|
};
|
|
@@ -330,11 +294,9 @@ class RequestDetail extends Component {
|
|
|
330
294
|
|
|
331
295
|
renderTop() {
|
|
332
296
|
const { status, job } = this.state;
|
|
333
|
-
const
|
|
334
|
-
const priority = getJobPriority(job.priority);
|
|
297
|
+
const { statusText, statusColor } = getJobStatusProps(status);
|
|
335
298
|
const canEdit = this.hasPermission();
|
|
336
|
-
const
|
|
337
|
-
const showSeen = !status || status === getJobStatus(null, this.props).text;
|
|
299
|
+
const showSeen = !status || status === jobStatusOptions[0].name;
|
|
338
300
|
|
|
339
301
|
return (
|
|
340
302
|
<View style={{ ...Helper.getShadowStyle() }}>
|
|
@@ -349,7 +311,7 @@ class RequestDetail extends Component {
|
|
|
349
311
|
{job.type}
|
|
350
312
|
</Text>
|
|
351
313
|
</View>
|
|
352
|
-
{
|
|
314
|
+
{showSeen && this.state.seen && (
|
|
353
315
|
<View style={styles.jobSeenContainer}>
|
|
354
316
|
<Icon name="check" type="font-awesome" iconStyle={[styles.jobSeenIcon, { color: this.props.colourBrandingMain }]} />
|
|
355
317
|
<Text style={[styles.jobSeenText, { color: this.props.colourBrandingMain }]}>Seen</Text>
|
|
@@ -379,34 +341,22 @@ class RequestDetail extends Component {
|
|
|
379
341
|
</TouchableOpacity>
|
|
380
342
|
</View> */}
|
|
381
343
|
</View>
|
|
382
|
-
<View style={styles.
|
|
383
|
-
<View style={styles.
|
|
384
|
-
<
|
|
385
|
-
|
|
386
|
-
<
|
|
387
|
-
<
|
|
388
|
-
<Text style={styles.jobStatusText}>{statusOption?.text}</Text>
|
|
389
|
-
</View>
|
|
390
|
-
</TouchableOpacity>
|
|
391
|
-
</View>
|
|
392
|
-
{this.hasPermission() && (
|
|
393
|
-
<View style={styles.jobStatusOuterContainer}>
|
|
394
|
-
<Text style={styles.jobStatusHeading}>STAFF NOTES</Text>
|
|
395
|
-
<TouchableOpacity onPress={this.openStaffNotes}>
|
|
396
|
-
<View style={[styles.jobStatusContainer, { backgroundColor: this.props.colourBrandingMain }]}>
|
|
397
|
-
<Icon name="pencil-square-o" type="font-awesome" iconStyle={styles.jobStatusIcon} />
|
|
398
|
-
<Text style={styles.jobStatusText}>Notes ({(job.Notes || []).length})</Text>
|
|
399
|
-
</View>
|
|
400
|
-
</TouchableOpacity>
|
|
344
|
+
<View style={styles.jobStatusExpectedContainer}>
|
|
345
|
+
<View style={styles.jobStatusOuterContainer}>
|
|
346
|
+
<Text style={styles.jobStatusHeading}>STATUS</Text>
|
|
347
|
+
<TouchableOpacity onPress={canEdit ? this.onOpenStatusPicker : null}>
|
|
348
|
+
<View style={[styles.jobStatusContainer, { backgroundColor: statusColor }]}>
|
|
349
|
+
<Text style={styles.jobStatusText}>{statusText}</Text>
|
|
401
350
|
</View>
|
|
402
|
-
|
|
351
|
+
</TouchableOpacity>
|
|
403
352
|
</View>
|
|
404
|
-
{
|
|
405
|
-
<View style={styles.
|
|
406
|
-
<Text style={styles.jobStatusHeading}>
|
|
407
|
-
<TouchableOpacity onPress={
|
|
408
|
-
<View style={[styles.jobStatusContainer, { backgroundColor:
|
|
409
|
-
<
|
|
353
|
+
{this.hasPermission() && (
|
|
354
|
+
<View style={styles.jobStatusOuterContainer}>
|
|
355
|
+
<Text style={styles.jobStatusHeading}>STAFF NOTES</Text>
|
|
356
|
+
<TouchableOpacity onPress={this.openStaffNotes}>
|
|
357
|
+
<View style={[styles.jobStatusContainer, { backgroundColor: this.props.colourBrandingMain }]}>
|
|
358
|
+
<Icon name="pencil-square-o" type="font-awesome" iconStyle={styles.jobStatusIcon} />
|
|
359
|
+
<Text style={styles.jobStatusText}>Notes ({(job.Notes || []).length})</Text>
|
|
410
360
|
</View>
|
|
411
361
|
</TouchableOpacity>
|
|
412
362
|
</View>
|
|
@@ -653,11 +603,6 @@ class RequestDetail extends Component {
|
|
|
653
603
|
return <StatusSelectorPopup onClose={this.onCloseStatusPopup} onSelect={this.onSelectStatus} />;
|
|
654
604
|
}
|
|
655
605
|
|
|
656
|
-
renderPriorityPopup() {
|
|
657
|
-
if (!this.state.showPriorityPopup) return null;
|
|
658
|
-
return <PrioritySelectorPopup onClose={this.onClosePriorityPopup} onSelect={this.onSelectPriority} />;
|
|
659
|
-
}
|
|
660
|
-
|
|
661
606
|
render() {
|
|
662
607
|
if (this.state.forbidden) {
|
|
663
608
|
return <Components.Forbidden />;
|
|
@@ -676,7 +621,6 @@ class RequestDetail extends Component {
|
|
|
676
621
|
</ScrollView>
|
|
677
622
|
{this.renderMessagesReply()}
|
|
678
623
|
{this.renderStatusPopup()}
|
|
679
|
-
{this.renderPriorityPopup()}
|
|
680
624
|
{this.renderImagePopup()}
|
|
681
625
|
<DateTimePicker
|
|
682
626
|
isVisible={this.state.isDateTimePickerVisible}
|
|
@@ -750,16 +694,14 @@ const styles = StyleSheet.create({
|
|
|
750
694
|
fontSize: 13,
|
|
751
695
|
color: Colours.TEXT_LIGHT,
|
|
752
696
|
},
|
|
753
|
-
jobInfoContainer: {
|
|
754
|
-
borderTopWidth: 1,
|
|
755
|
-
borderTopColor: Colours.LINEGREY,
|
|
756
|
-
paddingVertical: 14,
|
|
757
|
-
paddingHorizontal: 12,
|
|
758
|
-
},
|
|
759
697
|
jobStatusExpectedContainer: {
|
|
760
698
|
flexDirection: 'row',
|
|
761
699
|
alignItems: 'flex-start',
|
|
762
700
|
justifyContent: 'space-between',
|
|
701
|
+
borderTopWidth: 1,
|
|
702
|
+
borderTopColor: Colours.LINEGREY,
|
|
703
|
+
paddingVertical: 14,
|
|
704
|
+
paddingHorizontal: 12,
|
|
763
705
|
},
|
|
764
706
|
jobStatusOuterContainer: {
|
|
765
707
|
// marginRight: 50,
|
|
@@ -792,9 +734,6 @@ const styles = StyleSheet.create({
|
|
|
792
734
|
flex: 1,
|
|
793
735
|
textAlign: 'center',
|
|
794
736
|
},
|
|
795
|
-
jobPriorityOuterContainer: {
|
|
796
|
-
marginTop: 12,
|
|
797
|
-
},
|
|
798
737
|
jobExpectedDateContainer: {
|
|
799
738
|
backgroundColor: Colours.BOXGREY,
|
|
800
739
|
flexDirection: 'row',
|
|
@@ -969,9 +908,7 @@ const mapStateToProps = state => {
|
|
|
969
908
|
user: state.user,
|
|
970
909
|
colourBrandingMain: Colours.getMainBrandingColourFromState(state),
|
|
971
910
|
jobs: state[values.reducerKey].jobs,
|
|
972
|
-
statusTypes: state[values.reducerKey].jobstatuses,
|
|
973
|
-
hideSeen: state[values.reducerKey].hideSeen,
|
|
974
911
|
};
|
|
975
912
|
};
|
|
976
913
|
|
|
977
|
-
export default connect(mapStateToProps, { jobAdded
|
|
914
|
+
export default connect(mapStateToProps, { jobAdded })(RequestDetail);
|