@plusscommunities/pluss-maintenance-app 6.0.21 → 6.0.22-beta.1
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/apis/maintenanceActions.js +12 -4
- package/dist/module/apis/maintenanceActions.js.map +1 -1
- package/dist/module/components/MaintenanceList.js +84 -16
- package/dist/module/components/MaintenanceList.js.map +1 -1
- package/dist/module/screens/RequestDetail.js +12 -4
- package/dist/module/screens/RequestDetail.js.map +1 -1
- package/package.json +1 -1
- package/src/apis/maintenanceActions.js +15 -4
- package/src/components/MaintenanceList.js +87 -13
- package/src/screens/RequestDetail.js +9 -2
|
@@ -32,7 +32,7 @@ export const maintenanceActions = {
|
|
|
32
32
|
}
|
|
33
33
|
});
|
|
34
34
|
},
|
|
35
|
-
getJobs2: (site, status, priority, type, lastKey) => {
|
|
35
|
+
getJobs2: (site, status, priority, type, lastKey, assignee) => {
|
|
36
36
|
const query = {
|
|
37
37
|
site
|
|
38
38
|
};
|
|
@@ -48,20 +48,28 @@ export const maintenanceActions = {
|
|
|
48
48
|
if (lastKey) {
|
|
49
49
|
query.lastKey = JSON.stringify(lastKey);
|
|
50
50
|
}
|
|
51
|
+
if (assignee) {
|
|
52
|
+
query.assignee = assignee;
|
|
53
|
+
}
|
|
51
54
|
return Session.authedFunction({
|
|
52
55
|
method: 'GET',
|
|
53
56
|
url: Helper.getUrl(values.serviceKey, 'get/requests', query)
|
|
54
57
|
});
|
|
55
58
|
},
|
|
59
|
+
/**
|
|
60
|
+
* @deprecated Use getJobs2 with pagination instead.
|
|
61
|
+
* This method recursively fetches ALL pages which can be slow for large datasets.
|
|
62
|
+
* For better performance, use getJobs2 directly and implement pagination in the UI.
|
|
63
|
+
*/
|
|
56
64
|
getJobsRecursive: (site, status, priority, type, lastKey, jobs = []) => {
|
|
57
|
-
return new Promise(resolve => {
|
|
65
|
+
return new Promise((resolve, reject) => {
|
|
58
66
|
maintenanceActions.getJobs2(site, status, priority, type, lastKey).then(jobRes => {
|
|
59
67
|
const newJobs = [...jobs, ...jobRes.data.Items];
|
|
60
68
|
if (!jobRes.data.LastKey) {
|
|
61
69
|
return resolve(newJobs);
|
|
62
70
|
}
|
|
63
|
-
|
|
64
|
-
});
|
|
71
|
+
maintenanceActions.getJobsRecursive(site, status, priority, type, jobRes.data.LastKey, newJobs).then(resolve).catch(reject);
|
|
72
|
+
}).catch(reject);
|
|
65
73
|
});
|
|
66
74
|
},
|
|
67
75
|
sendMaintenanceRequest: (userID, userName, phone, room, title, description, date, type, images, location, isHome, homeText, customFields) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Helper","Session","values","maintenanceActions","getJob","site","id","authedFunction","method","url","getUrl","serviceKey","data","getJobByJobId","jobId","getJobs","status","type","getJobs2","priority","lastKey","query","JSON","stringify","getJobsRecursive","jobs","Promise","resolve","then","jobRes","newJobs","Items","LastKey","sendMaintenanceRequest","userID","userName","phone","room","title","description","date","images","location","isHome","homeText","customFields","request","editJob","job","editJobStatus","editJobPriority","assignJob","userId","getAssignees","addNote","note","attachments","action","editNote","noteId","deleteNote","getJobTypes","getExternalSync"],"sources":["maintenanceActions.js"],"sourcesContent":["import { Helper, Session } from '../core.config';\nimport { values } from '../values.config';\n\nexport const maintenanceActions = {\n getJob: (site, id) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'getJob'),\n data: { site, id },\n });\n },\n getJobByJobId: (site, jobId) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'getJob'),\n data: { site, jobId },\n });\n },\n getJobs: (site, status = '', type = '') => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'getJobs'),\n data: { site, status, type },\n });\n },\n getJobs2: (site, status, priority, type, lastKey) => {\n const query = { site };\n if (status) {\n query.status = status;\n }\n if (priority) {\n query.priority = priority;\n }\n if (type) {\n query.type = type;\n }\n if (lastKey) {\n query.lastKey = JSON.stringify(lastKey);\n }\n return Session.authedFunction({\n method: 'GET',\n url: Helper.getUrl(values.serviceKey, 'get/requests', query),\n });\n },\n getJobsRecursive: (site, status, priority, type, lastKey, jobs = []) => {\n return new Promise(resolve => {\n maintenanceActions.getJobs2(site, status, priority, type, lastKey).then(jobRes => {\n const newJobs = [...jobs, ...jobRes.data.Items];\n if (!jobRes.data.LastKey) {\n return resolve(newJobs);\n }\n return resolve(maintenanceActions.getJobsRecursive(site, status, priority, type, jobRes.data.LastKey, newJobs));\n });\n });\n },\n sendMaintenanceRequest: (\n userID,\n userName,\n phone,\n room,\n title,\n description,\n date,\n type,\n images,\n location,\n isHome,\n homeText,\n customFields,\n ) => {\n const request = {\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'sendMaintenance'),\n data: {\n userID,\n userName,\n phone,\n room,\n title,\n description,\n date,\n type,\n images,\n location,\n isHome,\n homeText,\n customFields,\n },\n };\n return Session.authedFunction(request);\n },\n editJob: (job, site) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'editJob'),\n data: { job, site },\n });\n },\n editJobStatus: (id, status) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'editJobStatus'),\n data: { id, status },\n });\n },\n editJobPriority: (id, priority) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'update/priority'),\n data: { id, priority },\n });\n },\n assignJob: (jobId, userId) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'update/assign'),\n data: {\n id: jobId,\n userId,\n },\n });\n },\n getAssignees: site => {\n return Session.authedFunction({\n method: 'GET',\n url: Helper.getUrl(values.serviceKey, 'get/assignees', { site }),\n });\n },\n addNote: (jobId, note, attachments, images) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'requests/note'),\n data: {\n id: jobId,\n note,\n attachments,\n images,\n action: 'AddNote',\n },\n });\n },\n editNote: (jobId, noteId, note, attachments, images) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'requests/note'),\n data: {\n id: jobId,\n note,\n attachments,\n images,\n noteId,\n action: 'EditNote',\n },\n });\n },\n deleteNote: (jobId, noteId) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'requests/note'),\n data: {\n id: jobId,\n noteId,\n action: 'DeleteNote',\n },\n });\n },\n getJobTypes: async site => {\n const url = Helper.getUrl(values.serviceKey, 'getjobtypes');\n return Session.authedFunction({\n method: 'POST',\n url,\n data: { site },\n });\n },\n getExternalSync: (jobId) => {\n return Session.authedFunction({\n method: 'GET',\n url: Helper.getUrl(values.serviceKey, 'get/externalsync', { id: jobId }),\n });\n },\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Helper","Session","values","maintenanceActions","getJob","site","id","authedFunction","method","url","getUrl","serviceKey","data","getJobByJobId","jobId","getJobs","status","type","getJobs2","priority","lastKey","assignee","query","JSON","stringify","getJobsRecursive","jobs","Promise","resolve","reject","then","jobRes","newJobs","Items","LastKey","catch","sendMaintenanceRequest","userID","userName","phone","room","title","description","date","images","location","isHome","homeText","customFields","request","editJob","job","editJobStatus","editJobPriority","assignJob","userId","getAssignees","addNote","note","attachments","action","editNote","noteId","deleteNote","getJobTypes","getExternalSync"],"sources":["maintenanceActions.js"],"sourcesContent":["import { Helper, Session } from '../core.config';\nimport { values } from '../values.config';\n\nexport const maintenanceActions = {\n getJob: (site, id) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'getJob'),\n data: { site, id },\n });\n },\n getJobByJobId: (site, jobId) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'getJob'),\n data: { site, jobId },\n });\n },\n getJobs: (site, status = '', type = '') => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'getJobs'),\n data: { site, status, type },\n });\n },\n getJobs2: (site, status, priority, type, lastKey, assignee) => {\n const query = { site };\n if (status) {\n query.status = status;\n }\n if (priority) {\n query.priority = priority;\n }\n if (type) {\n query.type = type;\n }\n if (lastKey) {\n query.lastKey = JSON.stringify(lastKey);\n }\n if (assignee) {\n query.assignee = assignee;\n }\n return Session.authedFunction({\n method: 'GET',\n url: Helper.getUrl(values.serviceKey, 'get/requests', query),\n });\n },\n /**\n * @deprecated Use getJobs2 with pagination instead.\n * This method recursively fetches ALL pages which can be slow for large datasets.\n * For better performance, use getJobs2 directly and implement pagination in the UI.\n */\n getJobsRecursive: (site, status, priority, type, lastKey, jobs = []) => {\n return new Promise((resolve, reject) => {\n maintenanceActions.getJobs2(site, status, priority, type, lastKey).then(jobRes => {\n const newJobs = [...jobs, ...jobRes.data.Items];\n if (!jobRes.data.LastKey) {\n return resolve(newJobs);\n }\n maintenanceActions\n .getJobsRecursive(site, status, priority, type, jobRes.data.LastKey, newJobs)\n .then(resolve)\n .catch(reject);\n }).catch(reject);\n });\n },\n sendMaintenanceRequest: (\n userID,\n userName,\n phone,\n room,\n title,\n description,\n date,\n type,\n images,\n location,\n isHome,\n homeText,\n customFields,\n ) => {\n const request = {\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'sendMaintenance'),\n data: {\n userID,\n userName,\n phone,\n room,\n title,\n description,\n date,\n type,\n images,\n location,\n isHome,\n homeText,\n customFields,\n },\n };\n return Session.authedFunction(request);\n },\n editJob: (job, site) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'editJob'),\n data: { job, site },\n });\n },\n editJobStatus: (id, status) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'editJobStatus'),\n data: { id, status },\n });\n },\n editJobPriority: (id, priority) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'update/priority'),\n data: { id, priority },\n });\n },\n assignJob: (jobId, userId) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'update/assign'),\n data: {\n id: jobId,\n userId,\n },\n });\n },\n getAssignees: site => {\n return Session.authedFunction({\n method: 'GET',\n url: Helper.getUrl(values.serviceKey, 'get/assignees', { site }),\n });\n },\n addNote: (jobId, note, attachments, images) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'requests/note'),\n data: {\n id: jobId,\n note,\n attachments,\n images,\n action: 'AddNote',\n },\n });\n },\n editNote: (jobId, noteId, note, attachments, images) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'requests/note'),\n data: {\n id: jobId,\n note,\n attachments,\n images,\n noteId,\n action: 'EditNote',\n },\n });\n },\n deleteNote: (jobId, noteId) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl(values.serviceKey, 'requests/note'),\n data: {\n id: jobId,\n noteId,\n action: 'DeleteNote',\n },\n });\n },\n getJobTypes: async site => {\n const url = Helper.getUrl(values.serviceKey, 'getjobtypes');\n return Session.authedFunction({\n method: 'POST',\n url,\n data: { site },\n });\n },\n getExternalSync: (jobId) => {\n return Session.authedFunction({\n method: 'GET',\n url: Helper.getUrl(values.serviceKey, 'get/externalsync', { id: jobId }),\n });\n },\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -20,13 +20,18 @@ class MaintenanceList extends Component {
|
|
|
20
20
|
const {
|
|
21
21
|
jobfilters
|
|
22
22
|
} = this.props;
|
|
23
|
-
const res = await maintenanceActions.
|
|
24
|
-
//
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
const res = await maintenanceActions.getJobs2(this.props.site, jobfilters.status, jobfilters.priority, jobfilters.type, null,
|
|
24
|
+
// No lastKey = first page
|
|
25
|
+
jobfilters.assignee);
|
|
26
|
+
const jobs = res.data.Items;
|
|
27
|
+
const lastKey = res.data.LastKey;
|
|
28
|
+
|
|
29
|
+
// Always replace jobs on refresh (filters are server-side)
|
|
30
|
+
this.props.jobsLoaded(jobs);
|
|
31
|
+
this.setState({
|
|
32
|
+
lastKey,
|
|
33
|
+
hasMore: !!lastKey
|
|
34
|
+
});
|
|
30
35
|
} catch (error) {
|
|
31
36
|
console.log('refresh error', error);
|
|
32
37
|
} finally {
|
|
@@ -34,6 +39,43 @@ class MaintenanceList extends Component {
|
|
|
34
39
|
}
|
|
35
40
|
});
|
|
36
41
|
});
|
|
42
|
+
_defineProperty(this, "loadMore", () => {
|
|
43
|
+
const {
|
|
44
|
+
loading,
|
|
45
|
+
loadingMore,
|
|
46
|
+
hasMore,
|
|
47
|
+
lastKey,
|
|
48
|
+
searchText
|
|
49
|
+
} = this.state;
|
|
50
|
+
|
|
51
|
+
// Don't load if already loading, no more pages, or during search
|
|
52
|
+
if (loading || loadingMore || !hasMore || !lastKey || searchText) return;
|
|
53
|
+
this.setState({
|
|
54
|
+
loadingMore: true
|
|
55
|
+
}, async () => {
|
|
56
|
+
try {
|
|
57
|
+
const {
|
|
58
|
+
jobfilters
|
|
59
|
+
} = this.props;
|
|
60
|
+
const res = await maintenanceActions.getJobs2(this.props.site, jobfilters.status, jobfilters.priority, jobfilters.type, lastKey, jobfilters.assignee);
|
|
61
|
+
const newJobs = res.data.Items;
|
|
62
|
+
const newLastKey = res.data.LastKey;
|
|
63
|
+
|
|
64
|
+
// Append to existing jobs
|
|
65
|
+
this.props.jobsAdded(newJobs);
|
|
66
|
+
this.setState({
|
|
67
|
+
lastKey: newLastKey,
|
|
68
|
+
hasMore: !!newLastKey
|
|
69
|
+
});
|
|
70
|
+
} catch (error) {
|
|
71
|
+
console.log('loadMore error', error);
|
|
72
|
+
} finally {
|
|
73
|
+
this.setState({
|
|
74
|
+
loadingMore: false
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
});
|
|
37
79
|
_defineProperty(this, "refreshTypes", async () => {
|
|
38
80
|
const {
|
|
39
81
|
data
|
|
@@ -68,9 +110,6 @@ class MaintenanceList extends Component {
|
|
|
68
110
|
});
|
|
69
111
|
});
|
|
70
112
|
_defineProperty(this, "resetDataSource", (source = '') => {
|
|
71
|
-
const {
|
|
72
|
-
jobfilters
|
|
73
|
-
} = this.props;
|
|
74
113
|
const {
|
|
75
114
|
searchText
|
|
76
115
|
} = this.state;
|
|
@@ -79,6 +118,8 @@ class MaintenanceList extends Component {
|
|
|
79
118
|
} = this.props;
|
|
80
119
|
let filteredList = jobs;
|
|
81
120
|
let jobIdMatch = null;
|
|
121
|
+
|
|
122
|
+
// Client-side search filtering (search is not supported server-side)
|
|
82
123
|
if (searchText) {
|
|
83
124
|
jobIdMatch = _.find(jobs, j => j.jobId === searchText);
|
|
84
125
|
filteredList = jobs.filter(j => {
|
|
@@ -89,10 +130,10 @@ class MaintenanceList extends Component {
|
|
|
89
130
|
});
|
|
90
131
|
if (!jobIdMatch) this.fetchJob(searchText);
|
|
91
132
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
133
|
+
|
|
134
|
+
// Note: status, priority, type, and assignee filters are applied server-side
|
|
135
|
+
// via getJobs2, so no client-side filtering needed for those
|
|
136
|
+
|
|
96
137
|
if (jobIdMatch) {
|
|
97
138
|
const jobIndex = filteredList.indexOf(jobIdMatch);
|
|
98
139
|
if (jobIndex > -1) {
|
|
@@ -100,7 +141,8 @@ class MaintenanceList extends Component {
|
|
|
100
141
|
}
|
|
101
142
|
filteredList.unshift(jobIdMatch);
|
|
102
143
|
}
|
|
103
|
-
|
|
144
|
+
// Only refresh on initial load, not on filter changes (pagination handles data)
|
|
145
|
+
if (source !== 'search' && source !== 'filter') this.refresh();
|
|
104
146
|
this.setState({
|
|
105
147
|
filteredList
|
|
106
148
|
});
|
|
@@ -131,6 +173,14 @@ class MaintenanceList extends Component {
|
|
|
131
173
|
_defineProperty(this, "onSelectFilter", selected => {
|
|
132
174
|
this.props.jobsFilterLoaded(selected);
|
|
133
175
|
this.onToggleFilter();
|
|
176
|
+
// Reset pagination and clear existing list before refresh
|
|
177
|
+
this.setState({
|
|
178
|
+
lastKey: null,
|
|
179
|
+
hasMore: true,
|
|
180
|
+
filteredList: []
|
|
181
|
+
}, () => {
|
|
182
|
+
this.refresh();
|
|
183
|
+
});
|
|
134
184
|
});
|
|
135
185
|
_defineProperty(this, "getFilterButtonText", () => {
|
|
136
186
|
const {
|
|
@@ -154,10 +204,21 @@ class MaintenanceList extends Component {
|
|
|
154
204
|
}
|
|
155
205
|
return `Filtering by ${filterTexts.join(', ')}`;
|
|
156
206
|
});
|
|
207
|
+
_defineProperty(this, "renderListFooter", () => {
|
|
208
|
+
if (!this.state.loadingMore) return null;
|
|
209
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
210
|
+
style: styles.loadingMore
|
|
211
|
+
}, /*#__PURE__*/React.createElement(Components.LoadingIndicator, {
|
|
212
|
+
visible: true
|
|
213
|
+
}));
|
|
214
|
+
});
|
|
157
215
|
this.state = {
|
|
158
216
|
types: [],
|
|
159
217
|
filteredList: props.jobs,
|
|
160
218
|
loading: false,
|
|
219
|
+
loadingMore: false,
|
|
220
|
+
hasMore: true,
|
|
221
|
+
lastKey: null,
|
|
161
222
|
searchText: '',
|
|
162
223
|
showFilterPopup: false
|
|
163
224
|
};
|
|
@@ -245,7 +306,10 @@ class MaintenanceList extends Component {
|
|
|
245
306
|
job: item
|
|
246
307
|
}),
|
|
247
308
|
ListEmptyComponent: this.renderEmptyList(),
|
|
248
|
-
ListHeaderComponent: this.renderListHeader()
|
|
309
|
+
ListHeaderComponent: this.renderListHeader(),
|
|
310
|
+
ListFooterComponent: this.renderListFooter(),
|
|
311
|
+
onEndReached: this.loadMore,
|
|
312
|
+
onEndReachedThreshold: 0.5
|
|
249
313
|
});
|
|
250
314
|
}
|
|
251
315
|
renderFilterPopup() {
|
|
@@ -317,6 +381,10 @@ const styles = StyleSheet.create({
|
|
|
317
381
|
filterButtonText: {
|
|
318
382
|
fontFamily: 'sf-semibold',
|
|
319
383
|
fontSize: 16
|
|
384
|
+
},
|
|
385
|
+
loadingMore: {
|
|
386
|
+
paddingVertical: 20,
|
|
387
|
+
alignItems: 'center'
|
|
320
388
|
}
|
|
321
389
|
});
|
|
322
390
|
const mapStateToProps = state => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","View","StyleSheet","FlatList","TouchableOpacity","Text","_","connect","maintenanceActions","jobsLoaded","jobAdded","jobsAdded","jobStatusesUpdate","jobHideSeenUpdate","jobsFilterLoaded","MaintenanceListItem","FilterPopupMenu","Components","Colours","Helper","values","MaintenanceList","constructor","props","_defineProperty","onLoadingChanged","jobfilters","res","getJobsRecursive","site","status","priority","type","isEmpty","error","console","log","data","getJobTypes","getSite","types","map","t","label","typeName","value","splice","setState","jobId","state","loading","job","getJobByJobId","source","searchText","jobs","filteredList","jobIdMatch","find","j","filter","room","toLowerCase","indexOf","fetchJob","includes","assignee","AssigneeId","jobIndex","unshift","refresh","callback","resetDataSource","showFilterPopup","selected","onToggleFilter","filterTexts","push","statusText","priorityText","assigneeName","join","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","emptyRequestsStaff","emptyRequestsUser","renderEmptyList","createElement","EmptyStateMain","title","style","marginHorizontal","renderFilterButton","onPress","styles","filterButton","filterButtonText","color","colourBrandingMain","getFilterButtonText","renderSearch","hasPermission","searchContainer","GenericInput","placeholder","textEntityName","onChangeText","onSearchText","onSubmitEditing","onSearchSubmit","squaredCorners","hasClear","returnKeyType","renderListHeader","ListHeaderComponent","height","renderList","keyboardShouldPersistTaps","flex","contentContainerStyle","paddingBottom","keyExtractor","item","id","renderItem","itemStyle","ListEmptyComponent","renderFilterPopup","onClose","onSelectFilter","render","container","create","backgroundColor","filterContainerOuter","flexDirection","justifyContent","alignItems","paddingHorizontal","paddingVertical","filterTitle","fontFamily","fontSize","letterSpacing","filterContainer","filterText","marginRight","filterIcon","mapStateToProps","user","notifications","reducerKey","jobsOrdered","orderBy","permissions","category","getMainBrandingColourFromState","updateKey","statusTypes","jobstatuses","forwardRef"],"sources":["MaintenanceList.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, StyleSheet, FlatList, TouchableOpacity, Text } from 'react-native';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { maintenanceActions } from '../apis';\nimport { jobsLoaded, jobAdded, jobsAdded, jobStatusesUpdate, jobHideSeenUpdate, jobsFilterLoaded } from '../actions';\nimport MaintenanceListItem from '../components/MaintenanceListItem';\nimport FilterPopupMenu from './FilterPopupMenu';\nimport { Components, Colours, Helper } from '../core.config';\nimport { values } from '../values.config';\n\nclass MaintenanceList extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n types: [],\n filteredList: props.jobs,\n loading: false,\n searchText: '',\n showFilterPopup: false,\n };\n }\n\n componentDidMount() {\n this.props.jobStatusesUpdate(this.props.site);\n this.props.jobHideSeenUpdate(this.props.site);\n this.refresh();\n this.refreshTypes();\n this.resetDataSource();\n }\n\n componentDidUpdate(prevProps) {\n if (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n if (!_.isEqual(prevProps.jobs, this.props.jobs) || !_.isEqual(prevProps.jobfilters, this.props.jobfilters)) this.resetDataSource();\n }\n\n refresh = () => {\n this.onLoadingChanged(true, async () => {\n try {\n const { jobfilters } = this.props;\n const res = await maintenanceActions.getJobsRecursive(this.props.site, jobfilters.status, jobfilters.priority, jobfilters.type);\n // console.log('refresh', res ? JSON.stringify(res[0], null, 2) : null);\n if (!_.isEmpty(jobfilters.status) || !_.isEmpty(jobfilters.priority) || !_.isEmpty(jobfilters.type)) {\n this.props.jobsAdded(res);\n } else {\n this.props.jobsLoaded(res);\n }\n } catch (error) {\n console.log('refresh error', error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\n };\n\n refreshTypes = async () => {\n const { data } = await maintenanceActions.getJobTypes(Helper.getSite(this.props.site));\n const types = data.map(t => {\n return { label: t.typeName, value: t.typeName };\n });\n types.splice(0, 0, { label: 'All', value: '' });\n // console.log('refreshTypes', types);\n this.setState({ types });\n };\n\n fetchJob = jobId => {\n if (this.state.loading) return;\n\n this.onLoadingChanged(true, async () => {\n try {\n const job = await maintenanceActions.getJobByJobId(this.props.site, jobId);\n // console.log('fetchJob', job?.data);\n this.props.jobAdded(job.data);\n } catch (error) {\n console.log('fetchJob error', error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\n };\n\n getEmptyStateText() {\n if (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n return this.props.options.EmptyText;\n }\n return this.props.userCategory === 'staff' ? values.emptyRequestsStaff : values.emptyRequestsUser;\n }\n\n resetDataSource = (source = '') => {\n const { jobfilters } = this.props;\n const { searchText } = this.state;\n const { jobs } = this.props;\n\n let filteredList = jobs;\n let jobIdMatch = null;\n if (searchText) {\n jobIdMatch = _.find(jobs, j => j.jobId === searchText);\n filteredList = jobs.filter(j => {\n if (j.room && j.room.toLowerCase().indexOf(searchText.toLowerCase()) > -1) {\n return true;\n }\n return false;\n });\n if (!jobIdMatch) this.fetchJob(searchText);\n }\n if (jobfilters.status) filteredList = filteredList.filter(j => jobfilters.status.includes(j.status));\n if (jobfilters.priority) filteredList = filteredList.filter(j => jobfilters.priority.includes(j.priority));\n if (jobfilters.type) filteredList = filteredList.filter(j => jobfilters.type.includes(j.type));\n if (jobfilters.assignee) filteredList = filteredList.filter(j => jobfilters.assignee.includes(j.AssigneeId));\n if (jobIdMatch) {\n const jobIndex = filteredList.indexOf(jobIdMatch);\n if (jobIndex > -1) {\n filteredList.splice(jobIndex, 1);\n }\n filteredList.unshift(jobIdMatch);\n }\n if (source !== 'search') this.refresh();\n\n this.setState({ filteredList });\n };\n\n onLoadingChanged = (loading, callback) => {\n this.setState({ loading }, () => {\n if (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);\n if (callback) callback();\n });\n };\n\n onSearchText = value => {\n this.setState({ searchText: value }, () => {\n if (_.isEmpty(this.state.searchText)) this.resetDataSource('search');\n });\n };\n\n onSearchSubmit = () => {\n this.resetDataSource('search');\n };\n\n onToggleFilter = () => {\n this.setState({ showFilterPopup: !this.state.showFilterPopup });\n };\n\n onSelectFilter = selected => {\n this.props.jobsFilterLoaded(selected);\n this.onToggleFilter();\n };\n\n getFilterButtonText = () => {\n const { jobfilters } = this.props;\n const filterTexts = [];\n if (!_.isEmpty(jobfilters.status)) {\n filterTexts.push(jobfilters.statusText);\n }\n if (!_.isEmpty(jobfilters.priority)) {\n filterTexts.push(jobfilters.priorityText);\n }\n if (!_.isEmpty(jobfilters.type)) {\n filterTexts.push(jobfilters.type);\n }\n if (!_.isEmpty(jobfilters.assignee)) {\n filterTexts.push(jobfilters.assigneeName);\n }\n if (_.isEmpty(filterTexts)) {\n return 'Filter';\n }\n return `Filtering by ${filterTexts.join(', ')}`;\n };\n\n renderEmptyList() {\n return this.state.loading ? null : <Components.EmptyStateMain title={this.getEmptyStateText()} style={{ marginHorizontal: 16 }} />;\n }\n\n renderFilterButton() {\n return (\n <TouchableOpacity onPress={this.onToggleFilter}>\n <View style={styles.filterButton}>\n <Text style={[styles.filterButtonText, { color: this.props.colourBrandingMain }]}>{this.getFilterButtonText()}</Text>\n </View>\n </TouchableOpacity>\n );\n }\n\n renderSearch() {\n if (!this.props.hasPermission) return null;\n\n return (\n <View style={styles.searchContainer}>\n <Components.GenericInput\n placeholder={`Search by ${values.textEntityName} ID or Address`}\n value={this.state.searchText}\n onChangeText={this.onSearchText}\n onSubmitEditing={this.onSearchSubmit}\n squaredCorners\n hasClear\n // keyboardType={'numeric'}\n returnKeyType={'done'}\n />\n </View>\n );\n }\n\n renderListHeader() {\n const { ListHeaderComponent } = this.props;\n return (\n <View>\n {ListHeaderComponent ? ListHeaderComponent : <View style={{ height: 8 }} />}\n {this.renderFilterButton()}\n {this.renderSearch()}\n </View>\n );\n }\n\n renderList() {\n const { filteredList } = this.state;\n\n return (\n <FlatList\n keyboardShouldPersistTaps=\"always\"\n style={{ flex: 1 }}\n contentContainerStyle={{ paddingBottom: 16 }}\n data={filteredList}\n keyExtractor={item => item.id}\n renderItem={({ item }) => <MaintenanceListItem style={this.props.itemStyle} job={item} />}\n ListEmptyComponent={this.renderEmptyList()}\n ListHeaderComponent={this.renderListHeader()}\n />\n );\n }\n\n renderFilterPopup() {\n const { jobfilters } = this.props;\n const { showFilterPopup, types } = this.state;\n if (!showFilterPopup) return null;\n\n return (\n <FilterPopupMenu\n site={this.props.site}\n types={types}\n status={jobfilters.status}\n priority={jobfilters.priority}\n assignee={jobfilters.assignee}\n type={jobfilters.type}\n onClose={this.onSelectFilter}\n />\n );\n }\n\n render() {\n return (\n <View style={[styles.container, this.props.style]}>\n {this.renderList()}\n {this.renderFilterPopup()}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#fff',\n },\n filterContainerOuter: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingHorizontal: 16,\n paddingVertical: 16,\n },\n filterTitle: {\n fontFamily: 'sf-bold',\n fontSize: 11,\n letterSpacing: 0.8,\n color: '#4d4d4d',\n },\n filterContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n filterText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n marginRight: 6,\n },\n filterIcon: {\n fontSize: 20,\n },\n searchContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingBottom: 8,\n paddingHorizontal: 16,\n },\n filterButton: {\n paddingBottom: 8,\n paddingHorizontal: 16,\n flexDirection: 'row-reverse',\n },\n filterButtonText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n },\n});\n\nconst mapStateToProps = state => {\n const { user, notifications } = state;\n const jobs = state[values.reducerKey];\n const jobsOrdered = _.orderBy(jobs.jobs, ['createdUnix'], ['desc']);\n const hasPermission = _.includes(user.permissions, 'maintenanceTracking');\n\n return {\n hasPermission,\n jobs: jobsOrdered,\n site: user.site,\n userCategory: user.category,\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n dataUpdated: notifications.dataUpdated[values.updateKey],\n statusTypes: state[values.reducerKey].jobstatuses,\n jobfilters: state[values.reducerKey].jobfilters || {},\n };\n};\n\nexport default connect(mapStateToProps, { jobsLoaded, jobAdded, jobsAdded, jobStatusesUpdate, jobHideSeenUpdate, jobsFilterLoaded }, null, {\n forwardRef: true,\n})(MaintenanceList);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Component","View","StyleSheet","FlatList","TouchableOpacity","Text","_","connect","maintenanceActions","jobsLoaded","jobAdded","jobsAdded","jobStatusesUpdate","jobHideSeenUpdate","jobsFilterLoaded","MaintenanceListItem","FilterPopupMenu","Components","Colours","Helper","values","MaintenanceList","constructor","props","_defineProperty","onLoadingChanged","jobfilters","res","getJobs2","site","status","priority","type","assignee","jobs","data","Items","lastKey","LastKey","setState","hasMore","error","console","log","loading","loadingMore","searchText","state","newJobs","newLastKey","getJobTypes","getSite","types","map","t","label","typeName","value","splice","jobId","job","getJobByJobId","source","filteredList","jobIdMatch","find","j","filter","room","toLowerCase","indexOf","fetchJob","jobIndex","unshift","refresh","callback","isEmpty","resetDataSource","showFilterPopup","selected","onToggleFilter","filterTexts","push","statusText","priorityText","assigneeName","join","createElement","style","styles","LoadingIndicator","visible","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","emptyRequestsStaff","emptyRequestsUser","renderEmptyList","EmptyStateMain","title","marginHorizontal","renderFilterButton","onPress","filterButton","filterButtonText","color","colourBrandingMain","getFilterButtonText","renderSearch","hasPermission","searchContainer","GenericInput","placeholder","textEntityName","onChangeText","onSearchText","onSubmitEditing","onSearchSubmit","squaredCorners","hasClear","returnKeyType","renderListHeader","ListHeaderComponent","height","renderList","keyboardShouldPersistTaps","flex","contentContainerStyle","paddingBottom","keyExtractor","item","id","renderItem","itemStyle","ListEmptyComponent","ListFooterComponent","renderListFooter","onEndReached","loadMore","onEndReachedThreshold","renderFilterPopup","onClose","onSelectFilter","render","container","create","backgroundColor","filterContainerOuter","flexDirection","justifyContent","alignItems","paddingHorizontal","paddingVertical","filterTitle","fontFamily","fontSize","letterSpacing","filterContainer","filterText","marginRight","filterIcon","mapStateToProps","user","notifications","reducerKey","jobsOrdered","orderBy","includes","permissions","category","getMainBrandingColourFromState","updateKey","statusTypes","jobstatuses","forwardRef"],"sources":["MaintenanceList.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, StyleSheet, FlatList, TouchableOpacity, Text } from 'react-native';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { maintenanceActions } from '../apis';\nimport { jobsLoaded, jobAdded, jobsAdded, jobStatusesUpdate, jobHideSeenUpdate, jobsFilterLoaded } from '../actions';\nimport MaintenanceListItem from '../components/MaintenanceListItem';\nimport FilterPopupMenu from './FilterPopupMenu';\nimport { Components, Colours, Helper } from '../core.config';\nimport { values } from '../values.config';\n\nclass MaintenanceList extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n types: [],\n filteredList: props.jobs,\n loading: false,\n loadingMore: false,\n hasMore: true,\n lastKey: null,\n searchText: '',\n showFilterPopup: false,\n };\n }\n\n componentDidMount() {\n this.props.jobStatusesUpdate(this.props.site);\n this.props.jobHideSeenUpdate(this.props.site);\n this.refresh();\n this.refreshTypes();\n this.resetDataSource();\n }\n\n componentDidUpdate(prevProps) {\n if (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n if (!_.isEqual(prevProps.jobs, this.props.jobs) || !_.isEqual(prevProps.jobfilters, this.props.jobfilters)) this.resetDataSource();\n }\n\n refresh = () => {\n this.onLoadingChanged(true, async () => {\n try {\n const { jobfilters } = this.props;\n const res = await maintenanceActions.getJobs2(\n this.props.site,\n jobfilters.status,\n jobfilters.priority,\n jobfilters.type,\n null, // No lastKey = first page\n jobfilters.assignee,\n );\n\n const jobs = res.data.Items;\n const lastKey = res.data.LastKey;\n\n // Always replace jobs on refresh (filters are server-side)\n this.props.jobsLoaded(jobs);\n\n this.setState({\n lastKey,\n hasMore: !!lastKey,\n });\n } catch (error) {\n console.log('refresh error', error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\n };\n\n loadMore = () => {\n const { loading, loadingMore, hasMore, lastKey, searchText } = this.state;\n\n // Don't load if already loading, no more pages, or during search\n if (loading || loadingMore || !hasMore || !lastKey || searchText) return;\n\n this.setState({ loadingMore: true }, async () => {\n try {\n const { jobfilters } = this.props;\n const res = await maintenanceActions.getJobs2(\n this.props.site,\n jobfilters.status,\n jobfilters.priority,\n jobfilters.type,\n lastKey,\n jobfilters.assignee,\n );\n\n const newJobs = res.data.Items;\n const newLastKey = res.data.LastKey;\n\n // Append to existing jobs\n this.props.jobsAdded(newJobs);\n\n this.setState({\n lastKey: newLastKey,\n hasMore: !!newLastKey,\n });\n } catch (error) {\n console.log('loadMore error', error);\n } finally {\n this.setState({ loadingMore: false });\n }\n });\n };\n\n refreshTypes = async () => {\n const { data } = await maintenanceActions.getJobTypes(Helper.getSite(this.props.site));\n const types = data.map(t => {\n return { label: t.typeName, value: t.typeName };\n });\n types.splice(0, 0, { label: 'All', value: '' });\n // console.log('refreshTypes', types);\n this.setState({ types });\n };\n\n fetchJob = jobId => {\n if (this.state.loading) return;\n\n this.onLoadingChanged(true, async () => {\n try {\n const job = await maintenanceActions.getJobByJobId(this.props.site, jobId);\n // console.log('fetchJob', job?.data);\n this.props.jobAdded(job.data);\n } catch (error) {\n console.log('fetchJob error', error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\n };\n\n getEmptyStateText() {\n if (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n return this.props.options.EmptyText;\n }\n return this.props.userCategory === 'staff' ? values.emptyRequestsStaff : values.emptyRequestsUser;\n }\n\n resetDataSource = (source = '') => {\n const { searchText } = this.state;\n const { jobs } = this.props;\n\n let filteredList = jobs;\n let jobIdMatch = null;\n\n // Client-side search filtering (search is not supported server-side)\n if (searchText) {\n jobIdMatch = _.find(jobs, j => j.jobId === searchText);\n filteredList = jobs.filter(j => {\n if (j.room && j.room.toLowerCase().indexOf(searchText.toLowerCase()) > -1) {\n return true;\n }\n return false;\n });\n if (!jobIdMatch) this.fetchJob(searchText);\n }\n\n // Note: status, priority, type, and assignee filters are applied server-side\n // via getJobs2, so no client-side filtering needed for those\n\n if (jobIdMatch) {\n const jobIndex = filteredList.indexOf(jobIdMatch);\n if (jobIndex > -1) {\n filteredList.splice(jobIndex, 1);\n }\n filteredList.unshift(jobIdMatch);\n }\n // Only refresh on initial load, not on filter changes (pagination handles data)\n if (source !== 'search' && source !== 'filter') this.refresh();\n\n this.setState({ filteredList });\n };\n\n onLoadingChanged = (loading, callback) => {\n this.setState({ loading }, () => {\n if (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);\n if (callback) callback();\n });\n };\n\n onSearchText = value => {\n this.setState({ searchText: value }, () => {\n if (_.isEmpty(this.state.searchText)) this.resetDataSource('search');\n });\n };\n\n onSearchSubmit = () => {\n this.resetDataSource('search');\n };\n\n onToggleFilter = () => {\n this.setState({ showFilterPopup: !this.state.showFilterPopup });\n };\n\n onSelectFilter = selected => {\n this.props.jobsFilterLoaded(selected);\n this.onToggleFilter();\n // Reset pagination and clear existing list before refresh\n this.setState({ lastKey: null, hasMore: true, filteredList: [] }, () => {\n this.refresh();\n });\n };\n\n getFilterButtonText = () => {\n const { jobfilters } = this.props;\n const filterTexts = [];\n if (!_.isEmpty(jobfilters.status)) {\n filterTexts.push(jobfilters.statusText);\n }\n if (!_.isEmpty(jobfilters.priority)) {\n filterTexts.push(jobfilters.priorityText);\n }\n if (!_.isEmpty(jobfilters.type)) {\n filterTexts.push(jobfilters.type);\n }\n if (!_.isEmpty(jobfilters.assignee)) {\n filterTexts.push(jobfilters.assigneeName);\n }\n if (_.isEmpty(filterTexts)) {\n return 'Filter';\n }\n return `Filtering by ${filterTexts.join(', ')}`;\n };\n\n renderEmptyList() {\n return this.state.loading ? null : <Components.EmptyStateMain title={this.getEmptyStateText()} style={{ marginHorizontal: 16 }} />;\n }\n\n renderFilterButton() {\n return (\n <TouchableOpacity onPress={this.onToggleFilter}>\n <View style={styles.filterButton}>\n <Text style={[styles.filterButtonText, { color: this.props.colourBrandingMain }]}>{this.getFilterButtonText()}</Text>\n </View>\n </TouchableOpacity>\n );\n }\n\n renderSearch() {\n if (!this.props.hasPermission) return null;\n\n return (\n <View style={styles.searchContainer}>\n <Components.GenericInput\n placeholder={`Search by ${values.textEntityName} ID or Address`}\n value={this.state.searchText}\n onChangeText={this.onSearchText}\n onSubmitEditing={this.onSearchSubmit}\n squaredCorners\n hasClear\n // keyboardType={'numeric'}\n returnKeyType={'done'}\n />\n </View>\n );\n }\n\n renderListHeader() {\n const { ListHeaderComponent } = this.props;\n return (\n <View>\n {ListHeaderComponent ? ListHeaderComponent : <View style={{ height: 8 }} />}\n {this.renderFilterButton()}\n {this.renderSearch()}\n </View>\n );\n }\n\n renderList() {\n const { filteredList } = this.state;\n\n return (\n <FlatList\n keyboardShouldPersistTaps=\"always\"\n style={{ flex: 1 }}\n contentContainerStyle={{ paddingBottom: 16 }}\n data={filteredList}\n keyExtractor={item => item.id}\n renderItem={({ item }) => <MaintenanceListItem style={this.props.itemStyle} job={item} />}\n ListEmptyComponent={this.renderEmptyList()}\n ListHeaderComponent={this.renderListHeader()}\n ListFooterComponent={this.renderListFooter()}\n onEndReached={this.loadMore}\n onEndReachedThreshold={0.5}\n />\n );\n }\n\n renderListFooter = () => {\n if (!this.state.loadingMore) return null;\n\n return (\n <View style={styles.loadingMore}>\n <Components.LoadingIndicator visible={true} />\n </View>\n );\n };\n\n renderFilterPopup() {\n const { jobfilters } = this.props;\n const { showFilterPopup, types } = this.state;\n if (!showFilterPopup) return null;\n\n return (\n <FilterPopupMenu\n site={this.props.site}\n types={types}\n status={jobfilters.status}\n priority={jobfilters.priority}\n assignee={jobfilters.assignee}\n type={jobfilters.type}\n onClose={this.onSelectFilter}\n />\n );\n }\n\n render() {\n return (\n <View style={[styles.container, this.props.style]}>\n {this.renderList()}\n {this.renderFilterPopup()}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#fff',\n },\n filterContainerOuter: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingHorizontal: 16,\n paddingVertical: 16,\n },\n filterTitle: {\n fontFamily: 'sf-bold',\n fontSize: 11,\n letterSpacing: 0.8,\n color: '#4d4d4d',\n },\n filterContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n filterText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n marginRight: 6,\n },\n filterIcon: {\n fontSize: 20,\n },\n searchContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingBottom: 8,\n paddingHorizontal: 16,\n },\n filterButton: {\n paddingBottom: 8,\n paddingHorizontal: 16,\n flexDirection: 'row-reverse',\n },\n filterButtonText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n },\n loadingMore: {\n paddingVertical: 20,\n alignItems: 'center',\n },\n});\n\nconst mapStateToProps = state => {\n const { user, notifications } = state;\n const jobs = state[values.reducerKey];\n const jobsOrdered = _.orderBy(jobs.jobs, ['createdUnix'], ['desc']);\n const hasPermission = _.includes(user.permissions, 'maintenanceTracking');\n\n return {\n hasPermission,\n jobs: jobsOrdered,\n site: user.site,\n userCategory: user.category,\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n dataUpdated: notifications.dataUpdated[values.updateKey],\n statusTypes: state[values.reducerKey].jobstatuses,\n jobfilters: state[values.reducerKey].jobfilters || {},\n };\n};\n\nexport default connect(mapStateToProps, { jobsLoaded, jobAdded, jobsAdded, jobStatusesUpdate, jobHideSeenUpdate, jobsFilterLoaded }, null, {\n forwardRef: true,\n})(MaintenanceList);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -31,9 +31,17 @@ class RequestDetail extends Component {
|
|
|
31
31
|
// Refresh external sync data when job is refreshed
|
|
32
32
|
this.getExternalSync();
|
|
33
33
|
} catch (error) {
|
|
34
|
+
var _error$response, _error$response2, _error$response3, _error$response4;
|
|
34
35
|
console.log("getJob error", error.toString());
|
|
35
|
-
//
|
|
36
|
-
|
|
36
|
+
// Log full error details for debugging
|
|
37
|
+
console.log("getJob error details:", {
|
|
38
|
+
message: error.message,
|
|
39
|
+
code: error.code,
|
|
40
|
+
responseStatus: (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status,
|
|
41
|
+
responseData: (_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.data
|
|
42
|
+
});
|
|
43
|
+
// check for 403 or 404 error (use optional chaining to prevent crash)
|
|
44
|
+
if (((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.status) === 403 || ((_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : _error$response4.status) === 404) {
|
|
37
45
|
this.setState({
|
|
38
46
|
forbidden: true
|
|
39
47
|
});
|
|
@@ -72,9 +80,9 @@ class RequestDetail extends Component {
|
|
|
72
80
|
loadingExternalSync: false
|
|
73
81
|
});
|
|
74
82
|
} catch (error) {
|
|
75
|
-
var _error$
|
|
83
|
+
var _error$response5;
|
|
76
84
|
// 404 is expected if no sync - don't show error
|
|
77
|
-
if (((_error$
|
|
85
|
+
if (((_error$response5 = error.response) === null || _error$response5 === void 0 ? void 0 : _error$response5.status) !== 404) {
|
|
78
86
|
console.log("getExternalSync error", error);
|
|
79
87
|
}
|
|
80
88
|
this.setState({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","ScrollView","View","StyleSheet","Text","KeyboardAvoidingView","TouchableOpacity","ImageBackground","Platform","DateTimePicker","Icon","_","moment","connect","maintenanceActions","jobAdded","jobStatusesUpdate","jobHideSeenUpdate","StatusSelectorPopup","PrioritySelectorPopup","getJobStatus","getJobPriority","Services","Colours","Helper","Components","Config","values","RequestDetail","constructor","props","_defineProperty","setState","loading","res","getJob","job","site","id","data","updateJobState","getExternalSync","error","console","log","toString","response","status","forbidden","hasPermission","getAssignees","user","assignees","Users","_this$props$job","loadingExternalSync","externalSync","_error$response","state","seen","Id","userID","updated","editJob","expectedDate","utc","toISOString","editJobStatus","editJobPriority","priority","navigation","goBack","showStatusPopup","updateJobStatus","showPriorityPopup","updateJobPriority","navigate","screenRequestNotes","onChange","popUpType","isDateTimePickerVisible","date","expectedDateText","format","updateJob","showMore","showMessages","count","permissions","includes","permissionMaintenanceTracking","permissionMaintenanceAssignment","AssigneeId","url","showFullscreenVideo","length","currentVideoUrl","options","map","a","key","name","displayName","selection","title","onSelect","onSelectAssignee","assignee","assignJob","galleryOpen","galleryImages","selectedPDF","scrollView","createRef","commentReply","commentSection","componentDidMount","defaultJob","find","jobs","j","newState","markSeen","openGallery","index","refs","imagePopup","scrollTo","closeGallery","renderLoading","createElement","LoadingIndicator","visible","renderTop","statusOption","canEdit","isStaff","category","showSeen","text","style","getShadowStyle","styles","jobTitleContainer","jobId","jobIdText","color","colourBrandingMain","textEntityName","jobTitleText","jobTypeSeenContainer","jobTypeContainer","backgroundColor","hexToRGBAstring","jobTypeText","numberOfLines","type","hideSeen","jobSeenContainer","iconStyle","jobSeenIcon","jobSeenText","lastActivityUnix","textSectionInner","textSectionLabel","textSectionTextContainer","textSectionText","jobInfoContainer","jobStatusExpectedContainer","jobStatusOuterContainer","jobStatusHeading","onPress","onOpenStatusPicker","jobStatusContainer","jobStatusText","openStaffNotes","jobStatusIcon","Notes","jobPriorityOuterContainer","onOpenPriorityPicker","label","renderPlayableImageUrl","images","containerStyle","thumbUrl","getThumb300","isVideo","flex","source","uri","imagePlayContainer","toggleFullscreenVideo","bind","imageControlIcon","imageUrl","get1400","imageContainer","plusImages","renderPlayableImage","renderImage","image","isNil","isEmpty","sideBySideImages","sideBySideImageContainer","singleImageContainer","renderDocument","documents","document","documentContainer","documentTypeContainer","documentTypeText","ext","documentText","uploading","uploadProgress","renderImagePopup","ImagePopup","onClose","ref","renderDocumentPopup","PDFPopup","pdfCount","renderAssignee","Assignee","content","locationLabel","profileContainer","ProfilePic","profilePic","Diameter","nameContainer","nameText","FormCardSectionOptionLauncher","onOpenAssigneePicker","value","textStyle","detailsText","sectionStyle","detailsSection","renderExternalSync","externalSyncContainer","externalSyncHeader","externalSyncTitle","externalSyncIcon","externalSyncContent","systemType","externalSyncRow","externalSyncLabel","externalSyncValue","externalId","syncedAt","renderCustomFields","customFields","renderAnswer","field","customText","answer","Array","isArray","join","customImage","customDocument","customLabel","rendeDetails","hasCustomFields","onToggleDetails","icon","Fragment","description","jobDescriptionText","locationText","room","isHome","homeText","requesterLabel","userProfilePic","userName","phone","phoneText","renderMessages","CommentSection","adminPermission","entityType","commentKey","entityId","entityName","location","live","refreshFrequency","placeHolder","paddingHorizontal","paddingTop","onCommentsLoaded","onCommentAdded","hideAddComment","disableFlag","InlineButton","onLeaveMessage","touchableStyle","marginTop","height","fullWidth","renderMessagesReply","CommentReply","renderStatusPopup","onCloseStatusPopup","onSelectStatus","renderPriorityPopup","onClosePriorityPopup","onSelectPriority","render","Forbidden","behavior","OS","container","Header","leftIcon","onPressLeft","onPressBack","env","strings","MAINTENANCE_REQUEST_DETAILS","contentContainerStyle","paddingBottom","innerContainer","isVisible","onConfirm","onDateSelected","onCancel","onCloseDatePicker","mode","headerTextIOS","create","paddingVertical","fontFamily","fontSize","marginBottom","TEXT_DARKEST","flexDirection","alignItems","padding","minWidth","maxWidth","borderRadius","justifyContent","textAlign","marginLeft","jobStatusDateText","TEXT_LIGHT","borderTopWidth","borderTopColor","LINEGREY","letterSpacing","TEXT_DARK","width","marginRight","jobExpectedDateContainer","BOXGREY","paddingLeft","jobExpectedDate","overflow","position","top","left","right","bottom","textShadowColor","textShadowOffset","textShadowRadius","lineHeight","textSectionAngleRight","customStaticTitle","customStaticText","borderBottomWidth","borderBottomColor","mapStateToProps","getMainBrandingColourFromState","reducerKey","statusTypes","jobstatuses"],"sources":["RequestDetail.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport {\n\tScrollView,\n\tView,\n\tStyleSheet,\n\tText,\n\tKeyboardAvoidingView,\n\tTouchableOpacity,\n\tImageBackground,\n\tPlatform,\n} from \"react-native\";\nimport DateTimePicker from \"react-native-modal-datetime-picker\";\nimport { Icon } from \"react-native-elements\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport { connect } from \"react-redux\";\nimport { maintenanceActions } from \"../apis\";\nimport { jobAdded, jobStatusesUpdate, jobHideSeenUpdate } from \"../actions\";\nimport StatusSelectorPopup from \"../components/StatusSelectorPopup\";\nimport PrioritySelectorPopup from \"../components/PrioritySelectorPopup\";\nimport { getJobStatus, getJobPriority } from \"../helper\";\nimport { Services } from \"../feature.config\";\nimport { Colours, Helper, Components, Config } from \"../core.config\";\nimport { values } from \"../values.config\";\n\nclass RequestDetail extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tjob: {},\n\t\t\tisDateTimePickerVisible: false,\n\t\t\tpopUpType: \"\",\n\t\t\tstatus: \"\",\n\t\t\tpriority: \"\",\n\t\t\texpectedDate: null,\n\t\t\texpectedDateText: \"\",\n\t\t\tseen: false,\n\t\t\tshowMore: true,\n\t\t\tshowStatusPopup: false,\n\t\t\tshowPriorityPopup: false,\n\t\t\tloading: false,\n\t\t\tshowFullscreenVideo: false,\n\t\t\tcurrentVideoUrl: \"\",\n\t\t\tgalleryOpen: false,\n\t\t\tgalleryImages: [],\n\t\t\tshowMessages: false,\n\t\t\tassignees: [],\n\t\t\tselectedPDF: null,\n\t\t\texternalSync: null,\n\t\t\tloadingExternalSync: false,\n\t\t};\n\n\t\tthis.scrollView = React.createRef();\n\t\tthis.commentReply = React.createRef();\n\t\tthis.commentSection = React.createRef();\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.props.jobStatusesUpdate(this.props.job.site);\n\t\tthis.props.jobHideSeenUpdate(this.props.job.site);\n\t\tthis.getJob();\n\t\tthis.updateJobState(this.props.job);\n\t\tthis.getAssignees();\n\t\tthis.getExternalSync();\n\t}\n\n\tgetJob = async () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst res = await maintenanceActions.getJob(\n\t\t\t\t\tthis.props.job.site,\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t);\n\t\t\t\t// console.log('getJob', JSON.stringify(res.data, null, 2));\n\t\t\t\tthis.props.jobAdded(res.data);\n\t\t\t\tthis.updateJobState(res.data);\n\t\t\t\t// Refresh external sync data when job is refreshed\n\t\t\t\tthis.getExternalSync();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"getJob error\", error.toString());\n\t\t\t\t// check for 403 or 404 error\n\t\t\t\tif (error.response.status === 403 || error.response.status === 404) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\tforbidden: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconsole.log(\"getJob error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tgetAssignees = async () => {\n\t\tif (!this.hasPermission()) return;\n\t\ttry {\n\t\t\tconst res = await maintenanceActions.getAssignees(this.props.user.site);\n\t\t\tthis.setState({ assignees: res.data.Users });\n\t\t} catch (error) {\n\t\t\tconsole.log(\"getAssignees error\", error);\n\t\t}\n\t};\n\n\tgetExternalSync = async () => {\n\t\t// Only fetch if user has maintenance tracking permission\n\t\tif (!this.hasPermission()) return;\n\t\tif (!this.props.job?.id) return;\n\n\t\ttry {\n\t\t\tthis.setState({ loadingExternalSync: true });\n\t\t\tconst res = await maintenanceActions.getExternalSync(this.props.job.id);\n\t\t\tthis.setState({ externalSync: res.data, loadingExternalSync: false });\n\t\t} catch (error) {\n\t\t\t// 404 is expected if no sync - don't show error\n\t\t\tif (error.response?.status !== 404) {\n\t\t\t\tconsole.log(\"getExternalSync error\", error);\n\t\t\t}\n\t\t\tthis.setState({ loadingExternalSync: false });\n\t\t}\n\t};\n\n\tupdateJobState(defaultJob) {\n\t\tconst job =\n\t\t\t_.find(this.props.jobs, (j) => j.id === this.props.job.id) || defaultJob;\n\t\tif (!job) {\n\t\t\tthis.getJob();\n\t\t\treturn;\n\t\t}\n\t\tconst newState = { job, status: job.status };\n\t\tif (job.expectedDate) {\n\t\t\tnewState.expectedDate = moment(job.expectedDate);\n\t\t\tnewState.expectedDateText = newState.expectedDate.format(\"DD/MM/YYYY\");\n\t\t}\n\t\tif (job.seen) newState.seen = job.seen;\n\t\tthis.setState(newState, () => {\n\t\t\tthis.markSeen();\n\t\t});\n\t}\n\n\tmarkSeen = () => {\n\t\tconst { user } = this.props;\n\t\tconst { job } = this.state;\n\t\t// Must have maintenance permission and not the requester\n\t\t// console.log('markSeen check', job.userID, user.Id);\n\t\tif (job.seen === true) return;\n\t\tif (!this.hasPermission()) return;\n\t\tif (user.Id === job.userID) return;\n\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst updated = {\n\t\t\t\t\tid: job.id,\n\t\t\t\t\tseen: true,\n\t\t\t\t\tstatus: job.status || \"Unassigned\",\n\t\t\t\t};\n\t\t\t\tconst res = await maintenanceActions.editJob(updated, user.site);\n\t\t\t\t// console.log('markSeen updated');\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t\tthis.setState({ loading: false, seen: true });\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"markSeen error\", error);\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tupdateJob = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\tconst { user } = this.props;\n\t\t\tconst { job } = this.state;\n\t\t\ttry {\n\t\t\t\tconst updated = { id: job.id };\n\t\t\t\tif (this.state.expectedDate) {\n\t\t\t\t\tupdated.expectedDate = moment(this.state.expectedDate)\n\t\t\t\t\t\t.utc()\n\t\t\t\t\t\t.toISOString();\n\t\t\t\t}\n\t\t\t\tconst res = await maintenanceActions.editJob(updated, user.site);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"updateJob error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tupdateJobStatus = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst res = await maintenanceActions.editJobStatus(\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t\tthis.state.status,\n\t\t\t\t);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"updateJobStatus error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tupdateJobPriority = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst res = await maintenanceActions.editJobPriority(\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t\tthis.state.priority,\n\t\t\t\t);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"updateJobPriority error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tonPressBack = () => {\n\t\tServices.navigation.goBack();\n\t};\n\n\tonOpenStatusPicker = () => {\n\t\tthis.setState({ showStatusPopup: true });\n\t};\n\n\tonCloseStatusPopup = () => {\n\t\tthis.setState({ showStatusPopup: false });\n\t};\n\n\tonSelectStatus = (status) => {\n\t\tif (this.state.loading) return;\n\t\tthis.setState({ status, showStatusPopup: false }, () => {\n\t\t\tthis.updateJobStatus();\n\t\t});\n\t};\n\n\tonOpenPriorityPicker = () => {\n\t\tthis.setState({ showPriorityPopup: true });\n\t};\n\n\tonClosePriorityPopup = () => {\n\t\tthis.setState({ showPriorityPopup: false });\n\t};\n\n\tonSelectPriority = (priority) => {\n\t\tif (this.state.loading) return;\n\t\tthis.setState({ priority, showPriorityPopup: false }, () => {\n\t\t\tthis.updateJobPriority();\n\t\t});\n\t};\n\n\topenStaffNotes = () => {\n\t\tServices.navigation.navigate(values.screenRequestNotes, {\n\t\t\tjob: this.state.job,\n\t\t\tonChange: this.getJob,\n\t\t});\n\t};\n\n\tonOpenDatePicker = () => {\n\t\tthis.setState({ popUpType: \"date\", isDateTimePickerVisible: true });\n\t};\n\n\tonCloseDatePicker = () => {\n\t\tthis.setState({ isDateTimePickerVisible: false });\n\t};\n\n\tonDateSelected = (date) => {\n\t\tif (this.state.popUpType === \"date\") {\n\t\t\tdate = moment(date);\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\texpectedDate: date,\n\t\t\t\t\texpectedDateText: date.format(\"DD/MM/YYYY\"),\n\t\t\t\t\tisDateTimePickerVisible: false,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.updateJob();\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t};\n\n\tonToggleDetails = () => {\n\t\tthis.setState({ showMore: !this.state.showMore });\n\t};\n\n\tonLeaveMessage = () => {\n\t\tthis.setState({ showMessages: true });\n\t};\n\n\tonCommentsLoaded = (count) => {\n\t\tif (count > 0) {\n\t\t\tthis.setState({ showMessages: true });\n\t\t}\n\t};\n\n\tonCommentAdded = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst job = await maintenanceActions.getJob(\n\t\t\t\t\tthis.props.user.site,\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t);\n\t\t\t\t// console.log('onCommentAdded', job?.data);\n\t\t\t\tthis.props.jobAdded(job.data);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"onCommentAdded error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\thasPermission = () => {\n\t\tconst { job } = this.state;\n\t\tconst { permissions } = this.props.user;\n\t\tif (_.includes(permissions, values.permissionMaintenanceTracking)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (_.includes(permissions, values.permissionMaintenanceAssignment)) {\n\t\t\treturn job.AssigneeId === this.props.user.Id;\n\t\t}\n\t\treturn false;\n\t};\n\n\ttoggleFullscreenVideo = (url) => {\n\t\tif (typeof url !== \"string\") url = \"\";\n\t\tthis.setState({\n\t\t\tshowFullscreenVideo: url.length > 0,\n\t\t\tcurrentVideoUrl: url,\n\t\t});\n\t};\n\n\topenGallery(galleryImages, index) {\n\t\tthis.setState({\n\t\t\tgalleryOpen: true,\n\t\t\tgalleryImages,\n\t\t});\n\t\tthis.refs.imagePopup.scrollTo(index);\n\t}\n\n\tcloseGallery() {\n\t\tthis.setState({\n\t\t\tgalleryOpen: false,\n\t\t});\n\t}\n\n\tonOpenAssigneePicker = () => {\n\t\tconst options = this.state.assignees.map((a) => {\n\t\t\treturn { key: a.id, name: a.displayName };\n\t\t});\n\t\tServices.navigation.navigate(\"optionSelector\", {\n\t\t\toptions,\n\t\t\tselection: this.state.job.AssigneeId,\n\t\t\ttitle: \"Assign request\",\n\t\t\tonSelect: this.onSelectAssignee,\n\t\t});\n\t};\n\n\tonSelectAssignee = (assignee) => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconsole.log(\"onSelectAssignee\", this.props.job.id, assignee.key);\n\t\t\t\tconst res = await maintenanceActions.assignJob(\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t\tassignee.key,\n\t\t\t\t);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"onSelectAssignee error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\trenderLoading() {\n\t\treturn <Components.LoadingIndicator visible={this.state.loading} />;\n\t}\n\n\trenderTop() {\n\t\tconst { status, job } = this.state;\n\t\tconst statusOption = getJobStatus(status, this.props);\n\t\tconst priority = getJobPriority(job.priority);\n\t\tconst canEdit = this.hasPermission();\n\t\tconst isStaff = this.props.user.category === \"staff\";\n\t\tconst showSeen = !status || status === getJobStatus(null, this.props).text;\n\n\t\treturn (\n\t\t\t<View style={{ ...Helper.getShadowStyle() }}>\n\t\t\t\t<View style={styles.jobTitleContainer}>\n\t\t\t\t\t{job.jobId ? (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\tstyles.jobIdText,\n\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>{`${values.textEntityName} #${job.jobId}`}</Text>\n\t\t\t\t\t) : null}\n\t\t\t\t\t<Text style={styles.jobTitleText}>{job.title}</Text>\n\t\t\t\t\t<View style={styles.jobTypeSeenContainer}>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\tstyles.jobTypeContainer,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbackgroundColor: Colours.hexToRGBAstring(\n\t\t\t\t\t\t\t\t\t\tthis.props.colourBrandingMain,\n\t\t\t\t\t\t\t\t\t\t0.2,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\tstyles.jobTypeText,\n\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\tnumberOfLines={2}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{job.type}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t{!this.props.hideSeen && showSeen && this.state.seen && (\n\t\t\t\t\t\t\t<View style={styles.jobSeenContainer}>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\tname=\"check\"\n\t\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobSeenIcon,\n\t\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobSeenText,\n\t\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tSeen\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</View>\n\n\t\t\t\t\t{job.lastActivityUnix && (\n\t\t\t\t\t\t<View style={styles.textSectionInner}>\n\t\t\t\t\t\t\t<Text style={styles.textSectionLabel}>Last Updated On</Text>\n\t\t\t\t\t\t\t<View style={styles.textSectionTextContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.textSectionText}>\n\t\t\t\t\t\t\t\t\t{moment(job.lastActivityUnix).format(\"ddd D MMMM, h:mm A\")}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t\t{/* <View style={styles.textSectionInner}>\n <Text style={styles.textSectionLabel}>Expected Date</Text>\n <TouchableOpacity onPress={this.onOpenDatePicker}>\n <View style={styles.textSectionTextContainer}>\n <Text style={styles.textSectionText}>{this.state.expectedDateText || 'Select Date'}</Text>\n <Icon\n name=\"angle-right\"\n type=\"font-awesome\"\n iconStyle={[styles.textSectionAngleRight, { color: this.props.colourBrandingMain }]}\n />\n </View>\n </TouchableOpacity>\n </View> */}\n\t\t\t\t</View>\n\t\t\t\t<View style={styles.jobInfoContainer}>\n\t\t\t\t\t<View style={styles.jobStatusExpectedContainer}>\n\t\t\t\t\t\t<View style={styles.jobStatusOuterContainer}>\n\t\t\t\t\t\t\t<Text style={styles.jobStatusHeading}>STATUS</Text>\n\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\tonPress={canEdit ? this.onOpenStatusPicker : null}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobStatusContainer,\n\t\t\t\t\t\t\t\t\t\t{ backgroundColor: statusOption.color },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobStatusText}>{statusOption?.text}</Text>\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t{this.hasPermission() && (\n\t\t\t\t\t\t\t<View style={styles.jobStatusOuterContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.jobStatusHeading}>STAFF NOTES</Text>\n\t\t\t\t\t\t\t\t<TouchableOpacity onPress={this.openStaffNotes}>\n\t\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\t\tstyles.jobStatusContainer,\n\t\t\t\t\t\t\t\t\t\t\t{ backgroundColor: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\tname=\"pencil-square-o\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\t\t\t\ticonStyle={styles.jobStatusIcon}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<Text style={styles.jobStatusText}>\n\t\t\t\t\t\t\t\t\t\t\tNotes ({(job.Notes || []).length})\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</View>\n\t\t\t\t\t{isStaff && (\n\t\t\t\t\t\t<View style={styles.jobPriorityOuterContainer}>\n\t\t\t\t\t\t\t<Text style={styles.jobStatusHeading}>PRIORITY</Text>\n\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\tonPress={canEdit ? this.onOpenPriorityPicker : null}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobStatusContainer,\n\t\t\t\t\t\t\t\t\t\t{ backgroundColor: priority.color },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobStatusText}>{priority.label}</Text>\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderPlayableImageUrl(images, index, containerStyle, showMore) {\n\t\tconst url = images[index || 0];\n\t\tconst thumbUrl = Helper.getThumb300(url);\n\n\t\tif (Helper.isVideo(url)) {\n\t\t\treturn (\n\t\t\t\t<ImageBackground\n\t\t\t\t\tstyle={[{ flex: 1 }, containerStyle]}\n\t\t\t\t\tsource={{ uri: thumbUrl }}\n\t\t\t\t>\n\t\t\t\t\t<View style={styles.imagePlayContainer}>\n\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\tonPress={this.toggleFullscreenVideo.bind(this, url)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tname=\"play\"\n\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\ticonStyle={styles.imageControlIcon}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t</View>\n\t\t\t\t</ImageBackground>\n\t\t\t);\n\t\t}\n\n\t\tconst imageUrl = Helper.get1400(url);\n\t\treturn (\n\t\t\t<TouchableOpacity\n\t\t\t\tstyle={containerStyle}\n\t\t\t\tonPress={this.openGallery.bind(this, images, index || 0)}\n\t\t\t>\n\t\t\t\t<ImageBackground\n\t\t\t\t\tstyle={styles.imageContainer}\n\t\t\t\t\tsource={{ uri: imageUrl }}\n\t\t\t\t>\n\t\t\t\t\t{showMore && (\n\t\t\t\t\t\t<Text style={styles.plusImages}>\n\t\t\t\t\t\t\t+{this.state.job.images.length - 2}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</ImageBackground>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trenderPlayableImage(images, index, containerStyle, showMore) {\n\t\treturn this.renderPlayableImageUrl(images, index, containerStyle, showMore);\n\t}\n\n\trenderImage(images, image = null) {\n\t\tif (!_.isNil(images) && !_.isEmpty(images)) {\n\t\t\tif (images.length >= 2) {\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.sideBySideImages}>\n\t\t\t\t\t\t{this.renderPlayableImage(\n\t\t\t\t\t\t\timages,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\tstyles.sideBySideImageContainer,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{this.renderPlayableImage(\n\t\t\t\t\t\t\timages,\n\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\tstyles.sideBySideImageContainer,\n\t\t\t\t\t\t\timages.length > 2,\n\t\t\t\t\t\t)}\n\t\t\t\t\t</View>\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.singleImageContainer}>\n\t\t\t\t\t\t{this.renderPlayableImage(images, 0)}\n\t\t\t\t\t</View>\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (!_.isNil(image)) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.singleImageContainer}>\n\t\t\t\t\t{this.renderPlayableImageUrl([image], 0)}\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\n\trenderDocument(documents) {\n\t\tconst { colourBrandingMain } = this.props;\n\n\t\tif (!_.isNil(documents) && !_.isEmpty(documents)) {\n\t\t\treturn documents.map((document, index) => {\n\t\t\t\treturn (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tstyle={styles.documentContainer}\n\t\t\t\t\t\tonPress={() => this.setState({ selectedPDF: document })}\n\t\t\t\t\t>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t...styles.documentTypeContainer,\n\t\t\t\t\t\t\t\tbackgroundColor: colourBrandingMain,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text style={styles.documentTypeText}>{document.ext}</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tstyle={styles.documentText}\n\t\t\t\t\t\t>{`${document.name}${document.uploading ? ` - ${document.uploadProgress}` : \"\"}`}</Text>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t\treturn null;\n\t}\n\n\trenderImagePopup() {\n\t\treturn (\n\t\t\t<Components.ImagePopup\n\t\t\t\tvisible={this.state.galleryOpen}\n\t\t\t\timages={this.state.galleryImages}\n\t\t\t\tonClose={this.closeGallery.bind(this)}\n\t\t\t\tref=\"imagePopup\"\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderDocumentPopup() {\n\t\tif (_.isEmpty(this.state.selectedPDF)) return null;\n\t\treturn (\n\t\t\t<Components.PDFPopup\n\t\t\t\tsource={this.state.selectedPDF.url}\n\t\t\t\tonClose={() => this.setState({ selectedPDF: null })}\n\t\t\t\ttitle={this.state.selectedPDF.name}\n\t\t\t\tpdfCount={1}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderAssignee() {\n\t\tconst { job } = this.state;\n\t\tif (!this.hasPermission() && !job.Assignee) return null;\n\n\t\tconst content = (\n\t\t\t<View>\n\t\t\t\t<Text style={styles.locationLabel}>Assigned To</Text>\n\t\t\t\t<View>\n\t\t\t\t\t{job.Assignee && (\n\t\t\t\t\t\t<View style={styles.profileContainer}>\n\t\t\t\t\t\t\t<Components.ProfilePic\n\t\t\t\t\t\t\t\tProfilePic={job.Assignee.profilePic}\n\t\t\t\t\t\t\t\tDiameter={40}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<View style={styles.nameContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.nameText}>{job.Assignee.displayName}</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\n\t\tif (this.hasPermission()) {\n\t\t\treturn (\n\t\t\t\t<Components.FormCardSectionOptionLauncher\n\t\t\t\t\tonPress={this.onOpenAssigneePicker}\n\t\t\t\t\ttitle=\"Assigned To\"\n\t\t\t\t\tvalue={job.Assignee ? job.Assignee.displayName : \"Unassigned\"}\n\t\t\t\t\ttextStyle={styles.detailsText}\n\t\t\t\t\tsectionStyle={styles.detailsSection}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</Components.FormCardSectionOptionLauncher>\n\t\t\t);\n\t\t}\n\t\treturn content;\n\t}\n\n\trenderExternalSync() {\n\t\tconst { externalSync, loadingExternalSync } = this.state;\n\n\t\t// Only show if user has permission and external sync data exists\n\t\tif (!this.hasPermission()) return null;\n\t\tif (!externalSync || loadingExternalSync) return null;\n\n\t\treturn (\n\t\t\t<View style={[styles.externalSyncContainer, Helper.getShadowStyle()]}>\n\t\t\t\t<View style={styles.externalSyncHeader}>\n\t\t\t\t\t<Text style={styles.externalSyncTitle}>External Sync</Text>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tname=\"sync\"\n\t\t\t\t\t\ttype=\"material\"\n\t\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\t\tstyles.externalSyncIcon,\n\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t]}\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t\t<View style={styles.externalSyncContent}>\n\t\t\t\t\t{externalSync.systemType && (\n\t\t\t\t\t\t<View style={styles.externalSyncRow}>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncLabel}>System:</Text>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncValue}>\n\t\t\t\t\t\t\t\t{externalSync.systemType}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t\t{externalSync.externalId && (\n\t\t\t\t\t\t<View style={styles.externalSyncRow}>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncLabel}>External ID:</Text>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncValue}>\n\t\t\t\t\t\t\t\t{externalSync.externalId}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t\t{externalSync.syncedAt && (\n\t\t\t\t\t\t<View style={styles.externalSyncRow}>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncLabel}>Synced:</Text>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncValue}>\n\t\t\t\t\t\t\t\t{moment(externalSync.syncedAt).format(\"D MMM YYYY h:mma\")}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderCustomFields() {\n\t\tconst { job } = this.state;\n\t\tconst { customFields } = job;\n\n\t\tconst renderAnswer = (field) => {\n\t\t\tswitch (field.type) {\n\t\t\t\tcase \"date\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>\n\t\t\t\t\t\t\t{field.answer\n\t\t\t\t\t\t\t\t? moment(field.answer, \"YYYY-MM-DD\").format(\"DD MMM YYYY\")\n\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"time\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>\n\t\t\t\t\t\t\t{field.answer\n\t\t\t\t\t\t\t\t? moment(field.answer, \"HH:mm\").format(\"h:mm a\")\n\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"yn\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>{field.answer ? \"Yes\" : \"No\"}</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"checkbox\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>\n\t\t\t\t\t\t\t{field.answer && Array.isArray(field.answer)\n\t\t\t\t\t\t\t\t? field.answer.join(\", \")\n\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"image\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<View style={styles.customImage}>\n\t\t\t\t\t\t\t{this.renderImage(field.answer)}\n\t\t\t\t\t\t</View>\n\t\t\t\t\t);\n\t\t\t\tcase \"document\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<View style={styles.customDocument}>\n\t\t\t\t\t\t\t{this.renderDocument(field.answer)}\n\t\t\t\t\t\t</View>\n\t\t\t\t\t);\n\t\t\t\tdefault:\n\t\t\t\t\treturn <Text style={styles.customText}>{field.answer}</Text>;\n\t\t\t}\n\t\t};\n\n\t\treturn customFields.map((field, index) => {\n\t\t\tif ([\"staticTitle\", \"staticText\"].includes(field.type)) return null;\n\t\t\tif (\n\t\t\t\t_.isNil(field.answer) ||\n\t\t\t\tfield.answer === \"\" ||\n\t\t\t\t(Array.isArray(field.answer) && field.answer.length === 0)\n\t\t\t)\n\t\t\t\treturn null;\n\t\t\treturn (\n\t\t\t\t<View key={index}>\n\t\t\t\t\t<Text style={styles.customLabel}>{field.label}</Text>\n\t\t\t\t\t{renderAnswer(field)}\n\t\t\t\t</View>\n\t\t\t);\n\t\t});\n\t}\n\n\trendeDetails() {\n\t\tconst { job } = this.state;\n\t\tconst { customFields } = job;\n\t\tconst hasCustomFields = customFields && customFields.length > 0;\n\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t<Components.FormCardSectionOptionLauncher\n\t\t\t\t\tonPress={this.onToggleDetails}\n\t\t\t\t\ttitle=\"Details\"\n\t\t\t\t\ticon={this.state.showMore ? \"angle-up\" : \"angle-down\"}\n\t\t\t\t\ttextStyle={styles.detailsText}\n\t\t\t\t\tsectionStyle={styles.detailsSection}\n\t\t\t\t/>\n\t\t\t\t{this.state.showMore && (\n\t\t\t\t\t<View>\n\t\t\t\t\t\t{hasCustomFields ? this.renderCustomFields() : null}\n\t\t\t\t\t\t{!hasCustomFields ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{this.renderImage(job.images, job.image)}\n\t\t\t\t\t\t\t\t{!_.isEmpty(job.description) && (\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobDescriptionText}>\n\t\t\t\t\t\t\t\t\t\t{job.description}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<Text style={styles.locationLabel}>Address</Text>\n\t\t\t\t\t\t<Text style={styles.locationText}>{job.room}</Text>\n\t\t\t\t\t\t{!hasCustomFields && job.isHome ? (\n\t\t\t\t\t\t\t<View style={styles.detailsSection}>\n\t\t\t\t\t\t\t\t<Text style={styles.locationLabel}>Must be home</Text>\n\t\t\t\t\t\t\t\t<Text style={styles.locationText}>{job.homeText}</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<Text style={styles.requesterLabel}>Submitted By</Text>\n\t\t\t\t\t\t<View style={styles.profileContainer}>\n\t\t\t\t\t\t\t<Components.ProfilePic\n\t\t\t\t\t\t\t\tProfilePic={job.userProfilePic}\n\t\t\t\t\t\t\t\tDiameter={40}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<View style={styles.nameContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.nameText}>{job.userName}</Text>\n\t\t\t\t\t\t\t\t{!_.isEmpty(job.phone) && (\n\t\t\t\t\t\t\t\t\t<Text style={styles.phoneText}>{job.phone}</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t{this.renderExternalSync()}\n\t\t\t\t\t</View>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderMessages() {\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t<Components.CommentSection\n\t\t\t\t\tref={this.commentSection}\n\t\t\t\t\tcommentReply={this.commentReply}\n\t\t\t\t\tscrollView={this.scrollView}\n\t\t\t\t\tadminPermission={values.permissionMaintenanceTracking}\n\t\t\t\t\tentityType={values.commentKey}\n\t\t\t\t\tentityId={this.props.job.id}\n\t\t\t\t\tentityName={this.props.job.title}\n\t\t\t\t\tsite={this.state.job.site || this.state.job.location}\n\t\t\t\t\tlive\n\t\t\t\t\trefreshFrequency={10000}\n\t\t\t\t\tplaceHolder={\"\"}\n\t\t\t\t\tstyle={{ flex: 1, paddingHorizontal: 0, paddingTop: 16 }}\n\t\t\t\t\tonCommentsLoaded={this.onCommentsLoaded}\n\t\t\t\t\tonCommentAdded={this.onCommentAdded}\n\t\t\t\t\thideAddComment\n\t\t\t\t\tdisableFlag\n\t\t\t\t/>\n\t\t\t\t{!this.state.showMessages && (\n\t\t\t\t\t<Components.InlineButton\n\t\t\t\t\t\tonPress={this.onLeaveMessage}\n\t\t\t\t\t\tcolor={this.props.colourBrandingMain}\n\t\t\t\t\t\ttouchableStyle={{ marginTop: 10 }}\n\t\t\t\t\t\tstyle={{ height: 36 }}\n\t\t\t\t\t\ttextStyle={{ color: \"#fff\" }}\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t>\n\t\t\t\t\t\tLeave Message\n\t\t\t\t\t</Components.InlineButton>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderMessagesReply() {\n\t\tif (!this.state.showMessages) return null;\n\n\t\treturn (\n\t\t\t<Components.CommentReply\n\t\t\t\tref={this.commentReply}\n\t\t\t\tcommentSection={this.commentSection}\n\t\t\t\tscrollView={this.scrollView}\n\t\t\t\tentityType={values.commentKey}\n\t\t\t\tentityId={this.props.job.id}\n\t\t\t\tentityName={this.props.job.title}\n\t\t\t\tsite={this.state.job.site || this.state.job.location}\n\t\t\t\t// noScroll={true}\n\t\t\t\t// style={{ position: 'absolute', bottom: 0, left: 0, right: 0 }}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderStatusPopup() {\n\t\tif (!this.state.showStatusPopup) return null;\n\t\treturn (\n\t\t\t<StatusSelectorPopup\n\t\t\t\tonClose={this.onCloseStatusPopup}\n\t\t\t\tonSelect={this.onSelectStatus}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderPriorityPopup() {\n\t\tif (!this.state.showPriorityPopup) return null;\n\t\treturn (\n\t\t\t<PrioritySelectorPopup\n\t\t\t\tonClose={this.onClosePriorityPopup}\n\t\t\t\tonSelect={this.onSelectPriority}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\tif (this.state.forbidden) {\n\t\t\treturn <Components.Forbidden />;\n\t\t}\n\t\treturn (\n\t\t\t<KeyboardAvoidingView\n\t\t\t\tbehavior={Platform.OS === \"ios\" && \"padding\"}\n\t\t\t\tstyle={styles.container}\n\t\t\t>\n\t\t\t\t<Components.Header\n\t\t\t\t\tleftIcon=\"angle-left\"\n\t\t\t\t\tonPressLeft={this.onPressBack}\n\t\t\t\t\ttext={Config.env.strings.MAINTENANCE_REQUEST_DETAILS}\n\t\t\t\t/>\n\t\t\t\t{this.renderLoading()}\n\t\t\t\t<ScrollView\n\t\t\t\t\tref={this.scrollView}\n\t\t\t\t\tcontentContainerStyle={{ paddingBottom: 26 }}\n\t\t\t\t\tstyle={{ height: \"100%\" }}\n\t\t\t\t>\n\t\t\t\t\t<View style={styles.innerContainer}>\n\t\t\t\t\t\t{this.renderTop()}\n\t\t\t\t\t\t{this.renderAssignee()}\n\t\t\t\t\t\t{this.rendeDetails()}\n\t\t\t\t\t\t{this.renderMessages()}\n\t\t\t\t\t</View>\n\t\t\t\t</ScrollView>\n\t\t\t\t{this.renderMessagesReply()}\n\t\t\t\t{this.renderStatusPopup()}\n\t\t\t\t{this.renderPriorityPopup()}\n\t\t\t\t{this.renderImagePopup()}\n\t\t\t\t{this.renderDocumentPopup()}\n\t\t\t\t<DateTimePicker\n\t\t\t\t\tisVisible={this.state.isDateTimePickerVisible}\n\t\t\t\t\tonConfirm={this.onDateSelected}\n\t\t\t\t\tonCancel={this.onCloseDatePicker}\n\t\t\t\t\tmode={this.state.popUpType}\n\t\t\t\t\theaderTextIOS={`Pick a ${this.state.popUpType}`}\n\t\t\t\t/>\n\t\t\t</KeyboardAvoidingView>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t\tbackgroundColor: \"#fff\",\n\t},\n\tinnerContainer: {\n\t\tpaddingTop: 23,\n\t\tpaddingHorizontal: 16,\n\t},\n\tjobTitleContainer: {\n\t\tpaddingVertical: 14,\n\t\tpaddingHorizontal: 12,\n\t},\n\tjobIdText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 12,\n\t\tmarginBottom: 4,\n\t},\n\tjobTitleText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 20,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tmarginBottom: 8,\n\t},\n\tjobTypeSeenContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tjobTypeContainer: {\n\t\tpadding: 4,\n\t\tminWidth: 80,\n\t\tmaxWidth: 140,\n\t\tborderRadius: 4,\n\t\tjustifyContent: \"center\",\n\t},\n\tjobTypeText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 12,\n\t\ttextAlign: \"center\",\n\t\tmaxWidth: \"100%\",\n\t},\n\tjobSeenContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tmarginLeft: 10,\n\t},\n\tjobSeenIcon: {\n\t\tfontSize: 12,\n\t},\n\tjobSeenText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 12,\n\t\tmarginLeft: 4,\n\t},\n\tjobStatusDateText: {\n\t\tmarginTop: 8,\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 13,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t},\n\tjobInfoContainer: {\n\t\tborderTopWidth: 1,\n\t\tborderTopColor: Colours.LINEGREY,\n\t\tpaddingVertical: 14,\n\t\tpaddingHorizontal: 12,\n\t},\n\tjobStatusExpectedContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"flex-start\",\n\t\tjustifyContent: \"space-between\",\n\t},\n\tjobStatusOuterContainer: {\n\t\t// marginRight: 50,\n\t},\n\tjobStatusHeading: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 11,\n\t\tletterSpacing: 0.8,\n\t\tcolor: Colours.TEXT_DARK,\n\t\tmarginBottom: 6,\n\t},\n\tjobStatusContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\twidth: 120,\n\t\theight: 30,\n\t\tpaddingHorizontal: 8,\n\t\tborderRadius: 4,\n\t},\n\tjobStatusIcon: {\n\t\tcolor: \"#fff\",\n\t\tfontSize: 14,\n\t\tmarginRight: 8,\n\t},\n\tjobStatusText: {\n\t\tcolor: \"#fff\",\n\t\ttextAlign: \"center\",\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 13,\n\t\tflex: 1,\n\t\ttextAlign: \"center\",\n\t},\n\tjobPriorityOuterContainer: {\n\t\tmarginTop: 12,\n\t},\n\tjobExpectedDateContainer: {\n\t\tbackgroundColor: Colours.BOXGREY,\n\t\tflexDirection: \"row\",\n\t\twidth: 115,\n\t\theight: 30,\n\t\tborderRadius: 4,\n\t\talignItems: \"center\",\n\t\tpaddingLeft: 8,\n\t},\n\tjobExpectedDate: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 13,\n\t\tcolor: Colours.hexToRGBAstring(Colours.TEXT_DARKEST, 0.5),\n\t},\n\tdetailsText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\tdetailsSection: {\n\t\tmarginTop: 8,\n\t\tpaddingHorizontal: 0,\n\t\tpaddingBottom: 12,\n\t},\n\tsideBySideImages: {\n\t\tflex: 1,\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\tmarginBottom: 16,\n\t},\n\tsideBySideImageContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\twidth: \"48%\",\n\t\theight: 150,\n\t\tborderRadius: 2,\n\t\toverflow: \"hidden\",\n\t},\n\tsingleImageContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\twidth: \"100%\",\n\t\theight: 150,\n\t\tflex: 1,\n\t\tborderRadius: 2,\n\t\toverflow: \"hidden\",\n\t\tmarginBottom: 16,\n\t},\n\timageContainer: {\n\t\theight: 150,\n\t\twidth: \"auto\",\n\t\tjustifyContent: \"center\",\n\t},\n\timagePlayContainer: {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tbottom: 0,\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t},\n\timageControlIcon: {\n\t\tcolor: \"#fff\",\n\t\tfontSize: 30,\n\t\ttextShadowColor: \"rgba(0,0,0,0.3)\",\n\t\ttextShadowOffset: { width: 2, height: 2 },\n\t},\n\tplusImages: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 32,\n\t\ttextAlign: \"center\",\n\t\tcolor: \"#fff\",\n\t\ttextShadowColor: \"rgba(0, 0, 0, 0.5)\",\n\t\ttextShadowOffset: { width: 0, height: 2 },\n\t\ttextShadowRadius: 8,\n\t},\n\tjobDescriptionText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t\tpaddingBottom: 16,\n\t},\n\tlocationLabel: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\tlocationText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tpaddingVertical: 8,\n\t},\n\trequesterLabel: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tpaddingVertical: 10,\n\t},\n\tprofileContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tnameContainer: {\n\t\tmarginLeft: 18,\n\t},\n\tnameText: {\n\t\tfontSize: \"sf-semibold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tmarginBottom: 4,\n\t},\n\tphoneText: {\n\t\tfontSize: \"sf-medium\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t},\n\ttextSectionInner: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t\tmarginTop: 8,\n\t},\n\ttextSectionLabel: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 12,\n\t\tlineHeight: 24,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\ttextSectionTextContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\ttextSectionText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 13,\n\t\tlineHeight: 24,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t},\n\ttextSectionAngleRight: {\n\t\tfontSize: 24,\n\t\tmarginLeft: 10,\n\t\tlineHeight: 24,\n\t},\n\tcustomLabel: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\tcustomText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tpaddingVertical: 8,\n\t},\n\tcustomImage: {\n\t\tmarginTop: 8,\n\t},\n\tcustomDocument: {\n\t\tmarginTop: 8,\n\t\tmarginBottom: 16,\n\t},\n\tcustomStaticTitle: {\n\t\tfontSize: 20,\n\t\tfontFamily: \"sf-semibold\",\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tmarginBottom: 10,\n\t},\n\tcustomStaticText: {\n\t\tfontSize: 17,\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tlineHeight: 24,\n\t\tmarginBottom: 10,\n\t},\n\tdocumentContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"space-between\",\n\t\tpaddingVertical: 4,\n\t},\n\tdocumentTypeContainer: {\n\t\twidth: 50,\n\t\theight: 60,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tborderRadius: 5,\n\t\tmarginRight: 8,\n\t},\n\tdocumentTypeText: {\n\t\tcolor: \"#fff\",\n\t\tfontFamily: \"sf-semibold\",\n\t\ttextAlign: \"center\",\n\t},\n\tdocumentText: {\n\t\tflex: 1,\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tcolor: \"#65686D\",\n\t},\n\texternalSyncContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\tmarginTop: 16,\n\t\tborderRadius: 8,\n\t\tpadding: 16,\n\t},\n\texternalSyncHeader: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t\tmarginBottom: 12,\n\t\tpaddingBottom: 12,\n\t\tborderBottomWidth: 1,\n\t\tborderBottomColor: Colours.LINEGREY,\n\t},\n\texternalSyncTitle: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\texternalSyncIcon: {\n\t\tfontSize: 20,\n\t},\n\texternalSyncContent: {\n\t\tpaddingTop: 4,\n\t},\n\texternalSyncRow: {\n\t\tflexDirection: \"row\",\n\t\tmarginBottom: 10,\n\t},\n\texternalSyncLabel: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARK,\n\t\twidth: 100,\n\t},\n\texternalSyncValue: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tflex: 1,\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\treturn {\n\t\tuser: state.user,\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tjobs: state[values.reducerKey].jobs,\n\t\tstatusTypes: state[values.reducerKey].jobstatuses,\n\t\thideSeen: state[values.reducerKey].hideSeen,\n\t};\n};\n\nexport default connect(mapStateToProps, {\n\tjobAdded,\n\tjobStatusesUpdate,\n\tjobHideSeenUpdate,\n})(RequestDetail);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Component","ScrollView","View","StyleSheet","Text","KeyboardAvoidingView","TouchableOpacity","ImageBackground","Platform","DateTimePicker","Icon","_","moment","connect","maintenanceActions","jobAdded","jobStatusesUpdate","jobHideSeenUpdate","StatusSelectorPopup","PrioritySelectorPopup","getJobStatus","getJobPriority","Services","Colours","Helper","Components","Config","values","RequestDetail","constructor","props","_defineProperty","setState","loading","res","getJob","job","site","id","data","updateJobState","getExternalSync","error","_error$response","_error$response2","_error$response3","_error$response4","console","log","toString","message","code","responseStatus","response","status","responseData","forbidden","hasPermission","getAssignees","user","assignees","Users","_this$props$job","loadingExternalSync","externalSync","_error$response5","state","seen","Id","userID","updated","editJob","expectedDate","utc","toISOString","editJobStatus","editJobPriority","priority","navigation","goBack","showStatusPopup","updateJobStatus","showPriorityPopup","updateJobPriority","navigate","screenRequestNotes","onChange","popUpType","isDateTimePickerVisible","date","expectedDateText","format","updateJob","showMore","showMessages","count","permissions","includes","permissionMaintenanceTracking","permissionMaintenanceAssignment","AssigneeId","url","showFullscreenVideo","length","currentVideoUrl","options","map","a","key","name","displayName","selection","title","onSelect","onSelectAssignee","assignee","assignJob","galleryOpen","galleryImages","selectedPDF","scrollView","createRef","commentReply","commentSection","componentDidMount","defaultJob","find","jobs","j","newState","markSeen","openGallery","index","refs","imagePopup","scrollTo","closeGallery","renderLoading","createElement","LoadingIndicator","visible","renderTop","statusOption","canEdit","isStaff","category","showSeen","text","style","getShadowStyle","styles","jobTitleContainer","jobId","jobIdText","color","colourBrandingMain","textEntityName","jobTitleText","jobTypeSeenContainer","jobTypeContainer","backgroundColor","hexToRGBAstring","jobTypeText","numberOfLines","type","hideSeen","jobSeenContainer","iconStyle","jobSeenIcon","jobSeenText","lastActivityUnix","textSectionInner","textSectionLabel","textSectionTextContainer","textSectionText","jobInfoContainer","jobStatusExpectedContainer","jobStatusOuterContainer","jobStatusHeading","onPress","onOpenStatusPicker","jobStatusContainer","jobStatusText","openStaffNotes","jobStatusIcon","Notes","jobPriorityOuterContainer","onOpenPriorityPicker","label","renderPlayableImageUrl","images","containerStyle","thumbUrl","getThumb300","isVideo","flex","source","uri","imagePlayContainer","toggleFullscreenVideo","bind","imageControlIcon","imageUrl","get1400","imageContainer","plusImages","renderPlayableImage","renderImage","image","isNil","isEmpty","sideBySideImages","sideBySideImageContainer","singleImageContainer","renderDocument","documents","document","documentContainer","documentTypeContainer","documentTypeText","ext","documentText","uploading","uploadProgress","renderImagePopup","ImagePopup","onClose","ref","renderDocumentPopup","PDFPopup","pdfCount","renderAssignee","Assignee","content","locationLabel","profileContainer","ProfilePic","profilePic","Diameter","nameContainer","nameText","FormCardSectionOptionLauncher","onOpenAssigneePicker","value","textStyle","detailsText","sectionStyle","detailsSection","renderExternalSync","externalSyncContainer","externalSyncHeader","externalSyncTitle","externalSyncIcon","externalSyncContent","systemType","externalSyncRow","externalSyncLabel","externalSyncValue","externalId","syncedAt","renderCustomFields","customFields","renderAnswer","field","customText","answer","Array","isArray","join","customImage","customDocument","customLabel","rendeDetails","hasCustomFields","onToggleDetails","icon","Fragment","description","jobDescriptionText","locationText","room","isHome","homeText","requesterLabel","userProfilePic","userName","phone","phoneText","renderMessages","CommentSection","adminPermission","entityType","commentKey","entityId","entityName","location","live","refreshFrequency","placeHolder","paddingHorizontal","paddingTop","onCommentsLoaded","onCommentAdded","hideAddComment","disableFlag","InlineButton","onLeaveMessage","touchableStyle","marginTop","height","fullWidth","renderMessagesReply","CommentReply","renderStatusPopup","onCloseStatusPopup","onSelectStatus","renderPriorityPopup","onClosePriorityPopup","onSelectPriority","render","Forbidden","behavior","OS","container","Header","leftIcon","onPressLeft","onPressBack","env","strings","MAINTENANCE_REQUEST_DETAILS","contentContainerStyle","paddingBottom","innerContainer","isVisible","onConfirm","onDateSelected","onCancel","onCloseDatePicker","mode","headerTextIOS","create","paddingVertical","fontFamily","fontSize","marginBottom","TEXT_DARKEST","flexDirection","alignItems","padding","minWidth","maxWidth","borderRadius","justifyContent","textAlign","marginLeft","jobStatusDateText","TEXT_LIGHT","borderTopWidth","borderTopColor","LINEGREY","letterSpacing","TEXT_DARK","width","marginRight","jobExpectedDateContainer","BOXGREY","paddingLeft","jobExpectedDate","overflow","position","top","left","right","bottom","textShadowColor","textShadowOffset","textShadowRadius","lineHeight","textSectionAngleRight","customStaticTitle","customStaticText","borderBottomWidth","borderBottomColor","mapStateToProps","getMainBrandingColourFromState","reducerKey","statusTypes","jobstatuses"],"sources":["RequestDetail.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport {\n\tScrollView,\n\tView,\n\tStyleSheet,\n\tText,\n\tKeyboardAvoidingView,\n\tTouchableOpacity,\n\tImageBackground,\n\tPlatform,\n} from \"react-native\";\nimport DateTimePicker from \"react-native-modal-datetime-picker\";\nimport { Icon } from \"react-native-elements\";\nimport _ from \"lodash\";\nimport moment from \"moment\";\nimport { connect } from \"react-redux\";\nimport { maintenanceActions } from \"../apis\";\nimport { jobAdded, jobStatusesUpdate, jobHideSeenUpdate } from \"../actions\";\nimport StatusSelectorPopup from \"../components/StatusSelectorPopup\";\nimport PrioritySelectorPopup from \"../components/PrioritySelectorPopup\";\nimport { getJobStatus, getJobPriority } from \"../helper\";\nimport { Services } from \"../feature.config\";\nimport { Colours, Helper, Components, Config } from \"../core.config\";\nimport { values } from \"../values.config\";\n\nclass RequestDetail extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tjob: {},\n\t\t\tisDateTimePickerVisible: false,\n\t\t\tpopUpType: \"\",\n\t\t\tstatus: \"\",\n\t\t\tpriority: \"\",\n\t\t\texpectedDate: null,\n\t\t\texpectedDateText: \"\",\n\t\t\tseen: false,\n\t\t\tshowMore: true,\n\t\t\tshowStatusPopup: false,\n\t\t\tshowPriorityPopup: false,\n\t\t\tloading: false,\n\t\t\tshowFullscreenVideo: false,\n\t\t\tcurrentVideoUrl: \"\",\n\t\t\tgalleryOpen: false,\n\t\t\tgalleryImages: [],\n\t\t\tshowMessages: false,\n\t\t\tassignees: [],\n\t\t\tselectedPDF: null,\n\t\t\texternalSync: null,\n\t\t\tloadingExternalSync: false,\n\t\t};\n\n\t\tthis.scrollView = React.createRef();\n\t\tthis.commentReply = React.createRef();\n\t\tthis.commentSection = React.createRef();\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.props.jobStatusesUpdate(this.props.job.site);\n\t\tthis.props.jobHideSeenUpdate(this.props.job.site);\n\t\tthis.getJob();\n\t\tthis.updateJobState(this.props.job);\n\t\tthis.getAssignees();\n\t\tthis.getExternalSync();\n\t}\n\n\tgetJob = async () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst res = await maintenanceActions.getJob(\n\t\t\t\t\tthis.props.job.site,\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t);\n\t\t\t\t// console.log('getJob', JSON.stringify(res.data, null, 2));\n\t\t\t\tthis.props.jobAdded(res.data);\n\t\t\t\tthis.updateJobState(res.data);\n\t\t\t\t// Refresh external sync data when job is refreshed\n\t\t\t\tthis.getExternalSync();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"getJob error\", error.toString());\n\t\t\t\t// Log full error details for debugging\n\t\t\t\tconsole.log(\"getJob error details:\", {\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\tcode: error.code,\n\t\t\t\t\tresponseStatus: error.response?.status,\n\t\t\t\t\tresponseData: error.response?.data,\n\t\t\t\t});\n\t\t\t\t// check for 403 or 404 error (use optional chaining to prevent crash)\n\t\t\t\tif (error.response?.status === 403 || error.response?.status === 404) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\tforbidden: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconsole.log(\"getJob error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tgetAssignees = async () => {\n\t\tif (!this.hasPermission()) return;\n\t\ttry {\n\t\t\tconst res = await maintenanceActions.getAssignees(this.props.user.site);\n\t\t\tthis.setState({ assignees: res.data.Users });\n\t\t} catch (error) {\n\t\t\tconsole.log(\"getAssignees error\", error);\n\t\t}\n\t};\n\n\tgetExternalSync = async () => {\n\t\t// Only fetch if user has maintenance tracking permission\n\t\tif (!this.hasPermission()) return;\n\t\tif (!this.props.job?.id) return;\n\n\t\ttry {\n\t\t\tthis.setState({ loadingExternalSync: true });\n\t\t\tconst res = await maintenanceActions.getExternalSync(this.props.job.id);\n\t\t\tthis.setState({ externalSync: res.data, loadingExternalSync: false });\n\t\t} catch (error) {\n\t\t\t// 404 is expected if no sync - don't show error\n\t\t\tif (error.response?.status !== 404) {\n\t\t\t\tconsole.log(\"getExternalSync error\", error);\n\t\t\t}\n\t\t\tthis.setState({ loadingExternalSync: false });\n\t\t}\n\t};\n\n\tupdateJobState(defaultJob) {\n\t\tconst job =\n\t\t\t_.find(this.props.jobs, (j) => j.id === this.props.job.id) || defaultJob;\n\t\tif (!job) {\n\t\t\tthis.getJob();\n\t\t\treturn;\n\t\t}\n\t\tconst newState = { job, status: job.status };\n\t\tif (job.expectedDate) {\n\t\t\tnewState.expectedDate = moment(job.expectedDate);\n\t\t\tnewState.expectedDateText = newState.expectedDate.format(\"DD/MM/YYYY\");\n\t\t}\n\t\tif (job.seen) newState.seen = job.seen;\n\t\tthis.setState(newState, () => {\n\t\t\tthis.markSeen();\n\t\t});\n\t}\n\n\tmarkSeen = () => {\n\t\tconst { user } = this.props;\n\t\tconst { job } = this.state;\n\t\t// Must have maintenance permission and not the requester\n\t\t// console.log('markSeen check', job.userID, user.Id);\n\t\tif (job.seen === true) return;\n\t\tif (!this.hasPermission()) return;\n\t\tif (user.Id === job.userID) return;\n\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst updated = {\n\t\t\t\t\tid: job.id,\n\t\t\t\t\tseen: true,\n\t\t\t\t\tstatus: job.status || \"Unassigned\",\n\t\t\t\t};\n\t\t\t\tconst res = await maintenanceActions.editJob(updated, user.site);\n\t\t\t\t// console.log('markSeen updated');\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t\tthis.setState({ loading: false, seen: true });\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"markSeen error\", error);\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tupdateJob = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\tconst { user } = this.props;\n\t\t\tconst { job } = this.state;\n\t\t\ttry {\n\t\t\t\tconst updated = { id: job.id };\n\t\t\t\tif (this.state.expectedDate) {\n\t\t\t\t\tupdated.expectedDate = moment(this.state.expectedDate)\n\t\t\t\t\t\t.utc()\n\t\t\t\t\t\t.toISOString();\n\t\t\t\t}\n\t\t\t\tconst res = await maintenanceActions.editJob(updated, user.site);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"updateJob error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tupdateJobStatus = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst res = await maintenanceActions.editJobStatus(\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t\tthis.state.status,\n\t\t\t\t);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"updateJobStatus error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tupdateJobPriority = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst res = await maintenanceActions.editJobPriority(\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t\tthis.state.priority,\n\t\t\t\t);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"updateJobPriority error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\tonPressBack = () => {\n\t\tServices.navigation.goBack();\n\t};\n\n\tonOpenStatusPicker = () => {\n\t\tthis.setState({ showStatusPopup: true });\n\t};\n\n\tonCloseStatusPopup = () => {\n\t\tthis.setState({ showStatusPopup: false });\n\t};\n\n\tonSelectStatus = (status) => {\n\t\tif (this.state.loading) return;\n\t\tthis.setState({ status, showStatusPopup: false }, () => {\n\t\t\tthis.updateJobStatus();\n\t\t});\n\t};\n\n\tonOpenPriorityPicker = () => {\n\t\tthis.setState({ showPriorityPopup: true });\n\t};\n\n\tonClosePriorityPopup = () => {\n\t\tthis.setState({ showPriorityPopup: false });\n\t};\n\n\tonSelectPriority = (priority) => {\n\t\tif (this.state.loading) return;\n\t\tthis.setState({ priority, showPriorityPopup: false }, () => {\n\t\t\tthis.updateJobPriority();\n\t\t});\n\t};\n\n\topenStaffNotes = () => {\n\t\tServices.navigation.navigate(values.screenRequestNotes, {\n\t\t\tjob: this.state.job,\n\t\t\tonChange: this.getJob,\n\t\t});\n\t};\n\n\tonOpenDatePicker = () => {\n\t\tthis.setState({ popUpType: \"date\", isDateTimePickerVisible: true });\n\t};\n\n\tonCloseDatePicker = () => {\n\t\tthis.setState({ isDateTimePickerVisible: false });\n\t};\n\n\tonDateSelected = (date) => {\n\t\tif (this.state.popUpType === \"date\") {\n\t\t\tdate = moment(date);\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\texpectedDate: date,\n\t\t\t\t\texpectedDateText: date.format(\"DD/MM/YYYY\"),\n\t\t\t\t\tisDateTimePickerVisible: false,\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.updateJob();\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t};\n\n\tonToggleDetails = () => {\n\t\tthis.setState({ showMore: !this.state.showMore });\n\t};\n\n\tonLeaveMessage = () => {\n\t\tthis.setState({ showMessages: true });\n\t};\n\n\tonCommentsLoaded = (count) => {\n\t\tif (count > 0) {\n\t\t\tthis.setState({ showMessages: true });\n\t\t}\n\t};\n\n\tonCommentAdded = () => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst job = await maintenanceActions.getJob(\n\t\t\t\t\tthis.props.user.site,\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t);\n\t\t\t\t// console.log('onCommentAdded', job?.data);\n\t\t\t\tthis.props.jobAdded(job.data);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"onCommentAdded error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\thasPermission = () => {\n\t\tconst { job } = this.state;\n\t\tconst { permissions } = this.props.user;\n\t\tif (_.includes(permissions, values.permissionMaintenanceTracking)) {\n\t\t\treturn true;\n\t\t}\n\t\tif (_.includes(permissions, values.permissionMaintenanceAssignment)) {\n\t\t\treturn job.AssigneeId === this.props.user.Id;\n\t\t}\n\t\treturn false;\n\t};\n\n\ttoggleFullscreenVideo = (url) => {\n\t\tif (typeof url !== \"string\") url = \"\";\n\t\tthis.setState({\n\t\t\tshowFullscreenVideo: url.length > 0,\n\t\t\tcurrentVideoUrl: url,\n\t\t});\n\t};\n\n\topenGallery(galleryImages, index) {\n\t\tthis.setState({\n\t\t\tgalleryOpen: true,\n\t\t\tgalleryImages,\n\t\t});\n\t\tthis.refs.imagePopup.scrollTo(index);\n\t}\n\n\tcloseGallery() {\n\t\tthis.setState({\n\t\t\tgalleryOpen: false,\n\t\t});\n\t}\n\n\tonOpenAssigneePicker = () => {\n\t\tconst options = this.state.assignees.map((a) => {\n\t\t\treturn { key: a.id, name: a.displayName };\n\t\t});\n\t\tServices.navigation.navigate(\"optionSelector\", {\n\t\t\toptions,\n\t\t\tselection: this.state.job.AssigneeId,\n\t\t\ttitle: \"Assign request\",\n\t\t\tonSelect: this.onSelectAssignee,\n\t\t});\n\t};\n\n\tonSelectAssignee = (assignee) => {\n\t\tthis.setState({ loading: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconsole.log(\"onSelectAssignee\", this.props.job.id, assignee.key);\n\t\t\t\tconst res = await maintenanceActions.assignJob(\n\t\t\t\t\tthis.props.job.id,\n\t\t\t\t\tassignee.key,\n\t\t\t\t);\n\t\t\t\tthis.props.jobAdded(res.data.job);\n\t\t\t\tthis.getJob();\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"onSelectAssignee error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loading: false });\n\t\t\t}\n\t\t});\n\t};\n\n\trenderLoading() {\n\t\treturn <Components.LoadingIndicator visible={this.state.loading} />;\n\t}\n\n\trenderTop() {\n\t\tconst { status, job } = this.state;\n\t\tconst statusOption = getJobStatus(status, this.props);\n\t\tconst priority = getJobPriority(job.priority);\n\t\tconst canEdit = this.hasPermission();\n\t\tconst isStaff = this.props.user.category === \"staff\";\n\t\tconst showSeen = !status || status === getJobStatus(null, this.props).text;\n\n\t\treturn (\n\t\t\t<View style={{ ...Helper.getShadowStyle() }}>\n\t\t\t\t<View style={styles.jobTitleContainer}>\n\t\t\t\t\t{job.jobId ? (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\tstyles.jobIdText,\n\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>{`${values.textEntityName} #${job.jobId}`}</Text>\n\t\t\t\t\t) : null}\n\t\t\t\t\t<Text style={styles.jobTitleText}>{job.title}</Text>\n\t\t\t\t\t<View style={styles.jobTypeSeenContainer}>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\tstyles.jobTypeContainer,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tbackgroundColor: Colours.hexToRGBAstring(\n\t\t\t\t\t\t\t\t\t\tthis.props.colourBrandingMain,\n\t\t\t\t\t\t\t\t\t\t0.2,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\tstyles.jobTypeText,\n\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\tnumberOfLines={2}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{job.type}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t{!this.props.hideSeen && showSeen && this.state.seen && (\n\t\t\t\t\t\t\t<View style={styles.jobSeenContainer}>\n\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\tname=\"check\"\n\t\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobSeenIcon,\n\t\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobSeenText,\n\t\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tSeen\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</View>\n\n\t\t\t\t\t{job.lastActivityUnix && (\n\t\t\t\t\t\t<View style={styles.textSectionInner}>\n\t\t\t\t\t\t\t<Text style={styles.textSectionLabel}>Last Updated On</Text>\n\t\t\t\t\t\t\t<View style={styles.textSectionTextContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.textSectionText}>\n\t\t\t\t\t\t\t\t\t{moment(job.lastActivityUnix).format(\"ddd D MMMM, h:mm A\")}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t\t{/* <View style={styles.textSectionInner}>\n <Text style={styles.textSectionLabel}>Expected Date</Text>\n <TouchableOpacity onPress={this.onOpenDatePicker}>\n <View style={styles.textSectionTextContainer}>\n <Text style={styles.textSectionText}>{this.state.expectedDateText || 'Select Date'}</Text>\n <Icon\n name=\"angle-right\"\n type=\"font-awesome\"\n iconStyle={[styles.textSectionAngleRight, { color: this.props.colourBrandingMain }]}\n />\n </View>\n </TouchableOpacity>\n </View> */}\n\t\t\t\t</View>\n\t\t\t\t<View style={styles.jobInfoContainer}>\n\t\t\t\t\t<View style={styles.jobStatusExpectedContainer}>\n\t\t\t\t\t\t<View style={styles.jobStatusOuterContainer}>\n\t\t\t\t\t\t\t<Text style={styles.jobStatusHeading}>STATUS</Text>\n\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\tonPress={canEdit ? this.onOpenStatusPicker : null}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobStatusContainer,\n\t\t\t\t\t\t\t\t\t\t{ backgroundColor: statusOption.color },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobStatusText}>{statusOption?.text}</Text>\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t{this.hasPermission() && (\n\t\t\t\t\t\t\t<View style={styles.jobStatusOuterContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.jobStatusHeading}>STAFF NOTES</Text>\n\t\t\t\t\t\t\t\t<TouchableOpacity onPress={this.openStaffNotes}>\n\t\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\t\tstyles.jobStatusContainer,\n\t\t\t\t\t\t\t\t\t\t\t{ backgroundColor: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\tname=\"pencil-square-o\"\n\t\t\t\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\t\t\t\ticonStyle={styles.jobStatusIcon}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<Text style={styles.jobStatusText}>\n\t\t\t\t\t\t\t\t\t\t\tNotes ({(job.Notes || []).length})\n\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</View>\n\t\t\t\t\t{isStaff && (\n\t\t\t\t\t\t<View style={styles.jobPriorityOuterContainer}>\n\t\t\t\t\t\t\t<Text style={styles.jobStatusHeading}>PRIORITY</Text>\n\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\tonPress={canEdit ? this.onOpenPriorityPicker : null}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.jobStatusContainer,\n\t\t\t\t\t\t\t\t\t\t{ backgroundColor: priority.color },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobStatusText}>{priority.label}</Text>\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderPlayableImageUrl(images, index, containerStyle, showMore) {\n\t\tconst url = images[index || 0];\n\t\tconst thumbUrl = Helper.getThumb300(url);\n\n\t\tif (Helper.isVideo(url)) {\n\t\t\treturn (\n\t\t\t\t<ImageBackground\n\t\t\t\t\tstyle={[{ flex: 1 }, containerStyle]}\n\t\t\t\t\tsource={{ uri: thumbUrl }}\n\t\t\t\t>\n\t\t\t\t\t<View style={styles.imagePlayContainer}>\n\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\tonPress={this.toggleFullscreenVideo.bind(this, url)}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tname=\"play\"\n\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\ticonStyle={styles.imageControlIcon}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t</View>\n\t\t\t\t</ImageBackground>\n\t\t\t);\n\t\t}\n\n\t\tconst imageUrl = Helper.get1400(url);\n\t\treturn (\n\t\t\t<TouchableOpacity\n\t\t\t\tstyle={containerStyle}\n\t\t\t\tonPress={this.openGallery.bind(this, images, index || 0)}\n\t\t\t>\n\t\t\t\t<ImageBackground\n\t\t\t\t\tstyle={styles.imageContainer}\n\t\t\t\t\tsource={{ uri: imageUrl }}\n\t\t\t\t>\n\t\t\t\t\t{showMore && (\n\t\t\t\t\t\t<Text style={styles.plusImages}>\n\t\t\t\t\t\t\t+{this.state.job.images.length - 2}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t)}\n\t\t\t\t</ImageBackground>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trenderPlayableImage(images, index, containerStyle, showMore) {\n\t\treturn this.renderPlayableImageUrl(images, index, containerStyle, showMore);\n\t}\n\n\trenderImage(images, image = null) {\n\t\tif (!_.isNil(images) && !_.isEmpty(images)) {\n\t\t\tif (images.length >= 2) {\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.sideBySideImages}>\n\t\t\t\t\t\t{this.renderPlayableImage(\n\t\t\t\t\t\t\timages,\n\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\tstyles.sideBySideImageContainer,\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{this.renderPlayableImage(\n\t\t\t\t\t\t\timages,\n\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\tstyles.sideBySideImageContainer,\n\t\t\t\t\t\t\timages.length > 2,\n\t\t\t\t\t\t)}\n\t\t\t\t\t</View>\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn (\n\t\t\t\t\t<View style={styles.singleImageContainer}>\n\t\t\t\t\t\t{this.renderPlayableImage(images, 0)}\n\t\t\t\t\t</View>\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (!_.isNil(image)) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.singleImageContainer}>\n\t\t\t\t\t{this.renderPlayableImageUrl([image], 0)}\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\n\trenderDocument(documents) {\n\t\tconst { colourBrandingMain } = this.props;\n\n\t\tif (!_.isNil(documents) && !_.isEmpty(documents)) {\n\t\t\treturn documents.map((document, index) => {\n\t\t\t\treturn (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tstyle={styles.documentContainer}\n\t\t\t\t\t\tonPress={() => this.setState({ selectedPDF: document })}\n\t\t\t\t\t>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t...styles.documentTypeContainer,\n\t\t\t\t\t\t\t\tbackgroundColor: colourBrandingMain,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text style={styles.documentTypeText}>{document.ext}</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tstyle={styles.documentText}\n\t\t\t\t\t\t>{`${document.name}${document.uploading ? ` - ${document.uploadProgress}` : \"\"}`}</Text>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t\treturn null;\n\t}\n\n\trenderImagePopup() {\n\t\treturn (\n\t\t\t<Components.ImagePopup\n\t\t\t\tvisible={this.state.galleryOpen}\n\t\t\t\timages={this.state.galleryImages}\n\t\t\t\tonClose={this.closeGallery.bind(this)}\n\t\t\t\tref=\"imagePopup\"\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderDocumentPopup() {\n\t\tif (_.isEmpty(this.state.selectedPDF)) return null;\n\t\treturn (\n\t\t\t<Components.PDFPopup\n\t\t\t\tsource={this.state.selectedPDF.url}\n\t\t\t\tonClose={() => this.setState({ selectedPDF: null })}\n\t\t\t\ttitle={this.state.selectedPDF.name}\n\t\t\t\tpdfCount={1}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderAssignee() {\n\t\tconst { job } = this.state;\n\t\tif (!this.hasPermission() && !job.Assignee) return null;\n\n\t\tconst content = (\n\t\t\t<View>\n\t\t\t\t<Text style={styles.locationLabel}>Assigned To</Text>\n\t\t\t\t<View>\n\t\t\t\t\t{job.Assignee && (\n\t\t\t\t\t\t<View style={styles.profileContainer}>\n\t\t\t\t\t\t\t<Components.ProfilePic\n\t\t\t\t\t\t\t\tProfilePic={job.Assignee.profilePic}\n\t\t\t\t\t\t\t\tDiameter={40}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<View style={styles.nameContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.nameText}>{job.Assignee.displayName}</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\n\t\tif (this.hasPermission()) {\n\t\t\treturn (\n\t\t\t\t<Components.FormCardSectionOptionLauncher\n\t\t\t\t\tonPress={this.onOpenAssigneePicker}\n\t\t\t\t\ttitle=\"Assigned To\"\n\t\t\t\t\tvalue={job.Assignee ? job.Assignee.displayName : \"Unassigned\"}\n\t\t\t\t\ttextStyle={styles.detailsText}\n\t\t\t\t\tsectionStyle={styles.detailsSection}\n\t\t\t\t>\n\t\t\t\t\t{content}\n\t\t\t\t</Components.FormCardSectionOptionLauncher>\n\t\t\t);\n\t\t}\n\t\treturn content;\n\t}\n\n\trenderExternalSync() {\n\t\tconst { externalSync, loadingExternalSync } = this.state;\n\n\t\t// Only show if user has permission and external sync data exists\n\t\tif (!this.hasPermission()) return null;\n\t\tif (!externalSync || loadingExternalSync) return null;\n\n\t\treturn (\n\t\t\t<View style={[styles.externalSyncContainer, Helper.getShadowStyle()]}>\n\t\t\t\t<View style={styles.externalSyncHeader}>\n\t\t\t\t\t<Text style={styles.externalSyncTitle}>External Sync</Text>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tname=\"sync\"\n\t\t\t\t\t\ttype=\"material\"\n\t\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\t\tstyles.externalSyncIcon,\n\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t]}\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t\t<View style={styles.externalSyncContent}>\n\t\t\t\t\t{externalSync.systemType && (\n\t\t\t\t\t\t<View style={styles.externalSyncRow}>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncLabel}>System:</Text>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncValue}>\n\t\t\t\t\t\t\t\t{externalSync.systemType}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t\t{externalSync.externalId && (\n\t\t\t\t\t\t<View style={styles.externalSyncRow}>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncLabel}>External ID:</Text>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncValue}>\n\t\t\t\t\t\t\t\t{externalSync.externalId}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t\t{externalSync.syncedAt && (\n\t\t\t\t\t\t<View style={styles.externalSyncRow}>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncLabel}>Synced:</Text>\n\t\t\t\t\t\t\t<Text style={styles.externalSyncValue}>\n\t\t\t\t\t\t\t\t{moment(externalSync.syncedAt).format(\"D MMM YYYY h:mma\")}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderCustomFields() {\n\t\tconst { job } = this.state;\n\t\tconst { customFields } = job;\n\n\t\tconst renderAnswer = (field) => {\n\t\t\tswitch (field.type) {\n\t\t\t\tcase \"date\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>\n\t\t\t\t\t\t\t{field.answer\n\t\t\t\t\t\t\t\t? moment(field.answer, \"YYYY-MM-DD\").format(\"DD MMM YYYY\")\n\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"time\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>\n\t\t\t\t\t\t\t{field.answer\n\t\t\t\t\t\t\t\t? moment(field.answer, \"HH:mm\").format(\"h:mm a\")\n\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"yn\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>{field.answer ? \"Yes\" : \"No\"}</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"checkbox\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Text style={styles.customText}>\n\t\t\t\t\t\t\t{field.answer && Array.isArray(field.answer)\n\t\t\t\t\t\t\t\t? field.answer.join(\", \")\n\t\t\t\t\t\t\t\t: \"\"}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t);\n\t\t\t\tcase \"image\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<View style={styles.customImage}>\n\t\t\t\t\t\t\t{this.renderImage(field.answer)}\n\t\t\t\t\t\t</View>\n\t\t\t\t\t);\n\t\t\t\tcase \"document\":\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<View style={styles.customDocument}>\n\t\t\t\t\t\t\t{this.renderDocument(field.answer)}\n\t\t\t\t\t\t</View>\n\t\t\t\t\t);\n\t\t\t\tdefault:\n\t\t\t\t\treturn <Text style={styles.customText}>{field.answer}</Text>;\n\t\t\t}\n\t\t};\n\n\t\treturn customFields.map((field, index) => {\n\t\t\tif ([\"staticTitle\", \"staticText\"].includes(field.type)) return null;\n\t\t\tif (\n\t\t\t\t_.isNil(field.answer) ||\n\t\t\t\tfield.answer === \"\" ||\n\t\t\t\t(Array.isArray(field.answer) && field.answer.length === 0)\n\t\t\t)\n\t\t\t\treturn null;\n\t\t\treturn (\n\t\t\t\t<View key={index}>\n\t\t\t\t\t<Text style={styles.customLabel}>{field.label}</Text>\n\t\t\t\t\t{renderAnswer(field)}\n\t\t\t\t</View>\n\t\t\t);\n\t\t});\n\t}\n\n\trendeDetails() {\n\t\tconst { job } = this.state;\n\t\tconst { customFields } = job;\n\t\tconst hasCustomFields = customFields && customFields.length > 0;\n\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t<Components.FormCardSectionOptionLauncher\n\t\t\t\t\tonPress={this.onToggleDetails}\n\t\t\t\t\ttitle=\"Details\"\n\t\t\t\t\ticon={this.state.showMore ? \"angle-up\" : \"angle-down\"}\n\t\t\t\t\ttextStyle={styles.detailsText}\n\t\t\t\t\tsectionStyle={styles.detailsSection}\n\t\t\t\t/>\n\t\t\t\t{this.state.showMore && (\n\t\t\t\t\t<View>\n\t\t\t\t\t\t{hasCustomFields ? this.renderCustomFields() : null}\n\t\t\t\t\t\t{!hasCustomFields ? (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{this.renderImage(job.images, job.image)}\n\t\t\t\t\t\t\t\t{!_.isEmpty(job.description) && (\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobDescriptionText}>\n\t\t\t\t\t\t\t\t\t\t{job.description}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<Text style={styles.locationLabel}>Address</Text>\n\t\t\t\t\t\t<Text style={styles.locationText}>{job.room}</Text>\n\t\t\t\t\t\t{!hasCustomFields && job.isHome ? (\n\t\t\t\t\t\t\t<View style={styles.detailsSection}>\n\t\t\t\t\t\t\t\t<Text style={styles.locationLabel}>Must be home</Text>\n\t\t\t\t\t\t\t\t<Text style={styles.locationText}>{job.homeText}</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t<Text style={styles.requesterLabel}>Submitted By</Text>\n\t\t\t\t\t\t<View style={styles.profileContainer}>\n\t\t\t\t\t\t\t<Components.ProfilePic\n\t\t\t\t\t\t\t\tProfilePic={job.userProfilePic}\n\t\t\t\t\t\t\t\tDiameter={40}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<View style={styles.nameContainer}>\n\t\t\t\t\t\t\t\t<Text style={styles.nameText}>{job.userName}</Text>\n\t\t\t\t\t\t\t\t{!_.isEmpty(job.phone) && (\n\t\t\t\t\t\t\t\t\t<Text style={styles.phoneText}>{job.phone}</Text>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t{this.renderExternalSync()}\n\t\t\t\t\t</View>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderMessages() {\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t<Components.CommentSection\n\t\t\t\t\tref={this.commentSection}\n\t\t\t\t\tcommentReply={this.commentReply}\n\t\t\t\t\tscrollView={this.scrollView}\n\t\t\t\t\tadminPermission={values.permissionMaintenanceTracking}\n\t\t\t\t\tentityType={values.commentKey}\n\t\t\t\t\tentityId={this.props.job.id}\n\t\t\t\t\tentityName={this.props.job.title}\n\t\t\t\t\tsite={this.state.job.site || this.state.job.location}\n\t\t\t\t\tlive\n\t\t\t\t\trefreshFrequency={10000}\n\t\t\t\t\tplaceHolder={\"\"}\n\t\t\t\t\tstyle={{ flex: 1, paddingHorizontal: 0, paddingTop: 16 }}\n\t\t\t\t\tonCommentsLoaded={this.onCommentsLoaded}\n\t\t\t\t\tonCommentAdded={this.onCommentAdded}\n\t\t\t\t\thideAddComment\n\t\t\t\t\tdisableFlag\n\t\t\t\t/>\n\t\t\t\t{!this.state.showMessages && (\n\t\t\t\t\t<Components.InlineButton\n\t\t\t\t\t\tonPress={this.onLeaveMessage}\n\t\t\t\t\t\tcolor={this.props.colourBrandingMain}\n\t\t\t\t\t\ttouchableStyle={{ marginTop: 10 }}\n\t\t\t\t\t\tstyle={{ height: 36 }}\n\t\t\t\t\t\ttextStyle={{ color: \"#fff\" }}\n\t\t\t\t\t\tfullWidth\n\t\t\t\t\t>\n\t\t\t\t\t\tLeave Message\n\t\t\t\t\t</Components.InlineButton>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderMessagesReply() {\n\t\tif (!this.state.showMessages) return null;\n\n\t\treturn (\n\t\t\t<Components.CommentReply\n\t\t\t\tref={this.commentReply}\n\t\t\t\tcommentSection={this.commentSection}\n\t\t\t\tscrollView={this.scrollView}\n\t\t\t\tentityType={values.commentKey}\n\t\t\t\tentityId={this.props.job.id}\n\t\t\t\tentityName={this.props.job.title}\n\t\t\t\tsite={this.state.job.site || this.state.job.location}\n\t\t\t\t// noScroll={true}\n\t\t\t\t// style={{ position: 'absolute', bottom: 0, left: 0, right: 0 }}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderStatusPopup() {\n\t\tif (!this.state.showStatusPopup) return null;\n\t\treturn (\n\t\t\t<StatusSelectorPopup\n\t\t\t\tonClose={this.onCloseStatusPopup}\n\t\t\t\tonSelect={this.onSelectStatus}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderPriorityPopup() {\n\t\tif (!this.state.showPriorityPopup) return null;\n\t\treturn (\n\t\t\t<PrioritySelectorPopup\n\t\t\t\tonClose={this.onClosePriorityPopup}\n\t\t\t\tonSelect={this.onSelectPriority}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\tif (this.state.forbidden) {\n\t\t\treturn <Components.Forbidden />;\n\t\t}\n\t\treturn (\n\t\t\t<KeyboardAvoidingView\n\t\t\t\tbehavior={Platform.OS === \"ios\" && \"padding\"}\n\t\t\t\tstyle={styles.container}\n\t\t\t>\n\t\t\t\t<Components.Header\n\t\t\t\t\tleftIcon=\"angle-left\"\n\t\t\t\t\tonPressLeft={this.onPressBack}\n\t\t\t\t\ttext={Config.env.strings.MAINTENANCE_REQUEST_DETAILS}\n\t\t\t\t/>\n\t\t\t\t{this.renderLoading()}\n\t\t\t\t<ScrollView\n\t\t\t\t\tref={this.scrollView}\n\t\t\t\t\tcontentContainerStyle={{ paddingBottom: 26 }}\n\t\t\t\t\tstyle={{ height: \"100%\" }}\n\t\t\t\t>\n\t\t\t\t\t<View style={styles.innerContainer}>\n\t\t\t\t\t\t{this.renderTop()}\n\t\t\t\t\t\t{this.renderAssignee()}\n\t\t\t\t\t\t{this.rendeDetails()}\n\t\t\t\t\t\t{this.renderMessages()}\n\t\t\t\t\t</View>\n\t\t\t\t</ScrollView>\n\t\t\t\t{this.renderMessagesReply()}\n\t\t\t\t{this.renderStatusPopup()}\n\t\t\t\t{this.renderPriorityPopup()}\n\t\t\t\t{this.renderImagePopup()}\n\t\t\t\t{this.renderDocumentPopup()}\n\t\t\t\t<DateTimePicker\n\t\t\t\t\tisVisible={this.state.isDateTimePickerVisible}\n\t\t\t\t\tonConfirm={this.onDateSelected}\n\t\t\t\t\tonCancel={this.onCloseDatePicker}\n\t\t\t\t\tmode={this.state.popUpType}\n\t\t\t\t\theaderTextIOS={`Pick a ${this.state.popUpType}`}\n\t\t\t\t/>\n\t\t\t</KeyboardAvoidingView>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t\tbackgroundColor: \"#fff\",\n\t},\n\tinnerContainer: {\n\t\tpaddingTop: 23,\n\t\tpaddingHorizontal: 16,\n\t},\n\tjobTitleContainer: {\n\t\tpaddingVertical: 14,\n\t\tpaddingHorizontal: 12,\n\t},\n\tjobIdText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 12,\n\t\tmarginBottom: 4,\n\t},\n\tjobTitleText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 20,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tmarginBottom: 8,\n\t},\n\tjobTypeSeenContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tjobTypeContainer: {\n\t\tpadding: 4,\n\t\tminWidth: 80,\n\t\tmaxWidth: 140,\n\t\tborderRadius: 4,\n\t\tjustifyContent: \"center\",\n\t},\n\tjobTypeText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 12,\n\t\ttextAlign: \"center\",\n\t\tmaxWidth: \"100%\",\n\t},\n\tjobSeenContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tmarginLeft: 10,\n\t},\n\tjobSeenIcon: {\n\t\tfontSize: 12,\n\t},\n\tjobSeenText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 12,\n\t\tmarginLeft: 4,\n\t},\n\tjobStatusDateText: {\n\t\tmarginTop: 8,\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 13,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t},\n\tjobInfoContainer: {\n\t\tborderTopWidth: 1,\n\t\tborderTopColor: Colours.LINEGREY,\n\t\tpaddingVertical: 14,\n\t\tpaddingHorizontal: 12,\n\t},\n\tjobStatusExpectedContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"flex-start\",\n\t\tjustifyContent: \"space-between\",\n\t},\n\tjobStatusOuterContainer: {\n\t\t// marginRight: 50,\n\t},\n\tjobStatusHeading: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 11,\n\t\tletterSpacing: 0.8,\n\t\tcolor: Colours.TEXT_DARK,\n\t\tmarginBottom: 6,\n\t},\n\tjobStatusContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\twidth: 120,\n\t\theight: 30,\n\t\tpaddingHorizontal: 8,\n\t\tborderRadius: 4,\n\t},\n\tjobStatusIcon: {\n\t\tcolor: \"#fff\",\n\t\tfontSize: 14,\n\t\tmarginRight: 8,\n\t},\n\tjobStatusText: {\n\t\tcolor: \"#fff\",\n\t\ttextAlign: \"center\",\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 13,\n\t\tflex: 1,\n\t\ttextAlign: \"center\",\n\t},\n\tjobPriorityOuterContainer: {\n\t\tmarginTop: 12,\n\t},\n\tjobExpectedDateContainer: {\n\t\tbackgroundColor: Colours.BOXGREY,\n\t\tflexDirection: \"row\",\n\t\twidth: 115,\n\t\theight: 30,\n\t\tborderRadius: 4,\n\t\talignItems: \"center\",\n\t\tpaddingLeft: 8,\n\t},\n\tjobExpectedDate: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 13,\n\t\tcolor: Colours.hexToRGBAstring(Colours.TEXT_DARKEST, 0.5),\n\t},\n\tdetailsText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\tdetailsSection: {\n\t\tmarginTop: 8,\n\t\tpaddingHorizontal: 0,\n\t\tpaddingBottom: 12,\n\t},\n\tsideBySideImages: {\n\t\tflex: 1,\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\tmarginBottom: 16,\n\t},\n\tsideBySideImageContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\twidth: \"48%\",\n\t\theight: 150,\n\t\tborderRadius: 2,\n\t\toverflow: \"hidden\",\n\t},\n\tsingleImageContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\twidth: \"100%\",\n\t\theight: 150,\n\t\tflex: 1,\n\t\tborderRadius: 2,\n\t\toverflow: \"hidden\",\n\t\tmarginBottom: 16,\n\t},\n\timageContainer: {\n\t\theight: 150,\n\t\twidth: \"auto\",\n\t\tjustifyContent: \"center\",\n\t},\n\timagePlayContainer: {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tbottom: 0,\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t},\n\timageControlIcon: {\n\t\tcolor: \"#fff\",\n\t\tfontSize: 30,\n\t\ttextShadowColor: \"rgba(0,0,0,0.3)\",\n\t\ttextShadowOffset: { width: 2, height: 2 },\n\t},\n\tplusImages: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 32,\n\t\ttextAlign: \"center\",\n\t\tcolor: \"#fff\",\n\t\ttextShadowColor: \"rgba(0, 0, 0, 0.5)\",\n\t\ttextShadowOffset: { width: 0, height: 2 },\n\t\ttextShadowRadius: 8,\n\t},\n\tjobDescriptionText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t\tpaddingBottom: 16,\n\t},\n\tlocationLabel: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\tlocationText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tpaddingVertical: 8,\n\t},\n\trequesterLabel: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tpaddingVertical: 10,\n\t},\n\tprofileContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tnameContainer: {\n\t\tmarginLeft: 18,\n\t},\n\tnameText: {\n\t\tfontSize: \"sf-semibold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tmarginBottom: 4,\n\t},\n\tphoneText: {\n\t\tfontSize: \"sf-medium\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t},\n\ttextSectionInner: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t\tmarginTop: 8,\n\t},\n\ttextSectionLabel: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 12,\n\t\tlineHeight: 24,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\ttextSectionTextContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\ttextSectionText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 13,\n\t\tlineHeight: 24,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t},\n\ttextSectionAngleRight: {\n\t\tfontSize: 24,\n\t\tmarginLeft: 10,\n\t\tlineHeight: 24,\n\t},\n\tcustomLabel: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\tcustomText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tpaddingVertical: 8,\n\t},\n\tcustomImage: {\n\t\tmarginTop: 8,\n\t},\n\tcustomDocument: {\n\t\tmarginTop: 8,\n\t\tmarginBottom: 16,\n\t},\n\tcustomStaticTitle: {\n\t\tfontSize: 20,\n\t\tfontFamily: \"sf-semibold\",\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tmarginBottom: 10,\n\t},\n\tcustomStaticText: {\n\t\tfontSize: 17,\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tlineHeight: 24,\n\t\tmarginBottom: 10,\n\t},\n\tdocumentContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"space-between\",\n\t\tpaddingVertical: 4,\n\t},\n\tdocumentTypeContainer: {\n\t\twidth: 50,\n\t\theight: 60,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tborderRadius: 5,\n\t\tmarginRight: 8,\n\t},\n\tdocumentTypeText: {\n\t\tcolor: \"#fff\",\n\t\tfontFamily: \"sf-semibold\",\n\t\ttextAlign: \"center\",\n\t},\n\tdocumentText: {\n\t\tflex: 1,\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tcolor: \"#65686D\",\n\t},\n\texternalSyncContainer: {\n\t\tbackgroundColor: \"#fff\",\n\t\tmarginTop: 16,\n\t\tborderRadius: 8,\n\t\tpadding: 16,\n\t},\n\texternalSyncHeader: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t\tmarginBottom: 12,\n\t\tpaddingBottom: 12,\n\t\tborderBottomWidth: 1,\n\t\tborderBottomColor: Colours.LINEGREY,\n\t},\n\texternalSyncTitle: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t},\n\texternalSyncIcon: {\n\t\tfontSize: 20,\n\t},\n\texternalSyncContent: {\n\t\tpaddingTop: 4,\n\t},\n\texternalSyncRow: {\n\t\tflexDirection: \"row\",\n\t\tmarginBottom: 10,\n\t},\n\texternalSyncLabel: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARK,\n\t\twidth: 100,\n\t},\n\texternalSyncValue: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARKEST,\n\t\tflex: 1,\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\treturn {\n\t\tuser: state.user,\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tjobs: state[values.reducerKey].jobs,\n\t\tstatusTypes: state[values.reducerKey].jobstatuses,\n\t\thideSeen: state[values.reducerKey].hideSeen,\n\t};\n};\n\nexport default connect(mapStateToProps, {\n\tjobAdded,\n\tjobStatusesUpdate,\n\tjobHideSeenUpdate,\n})(RequestDetail);\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -23,7 +23,7 @@ export const maintenanceActions = {
|
|
|
23
23
|
data: { site, status, type },
|
|
24
24
|
});
|
|
25
25
|
},
|
|
26
|
-
getJobs2: (site, status, priority, type, lastKey) => {
|
|
26
|
+
getJobs2: (site, status, priority, type, lastKey, assignee) => {
|
|
27
27
|
const query = { site };
|
|
28
28
|
if (status) {
|
|
29
29
|
query.status = status;
|
|
@@ -37,20 +37,31 @@ export const maintenanceActions = {
|
|
|
37
37
|
if (lastKey) {
|
|
38
38
|
query.lastKey = JSON.stringify(lastKey);
|
|
39
39
|
}
|
|
40
|
+
if (assignee) {
|
|
41
|
+
query.assignee = assignee;
|
|
42
|
+
}
|
|
40
43
|
return Session.authedFunction({
|
|
41
44
|
method: 'GET',
|
|
42
45
|
url: Helper.getUrl(values.serviceKey, 'get/requests', query),
|
|
43
46
|
});
|
|
44
47
|
},
|
|
48
|
+
/**
|
|
49
|
+
* @deprecated Use getJobs2 with pagination instead.
|
|
50
|
+
* This method recursively fetches ALL pages which can be slow for large datasets.
|
|
51
|
+
* For better performance, use getJobs2 directly and implement pagination in the UI.
|
|
52
|
+
*/
|
|
45
53
|
getJobsRecursive: (site, status, priority, type, lastKey, jobs = []) => {
|
|
46
|
-
return new Promise(resolve => {
|
|
54
|
+
return new Promise((resolve, reject) => {
|
|
47
55
|
maintenanceActions.getJobs2(site, status, priority, type, lastKey).then(jobRes => {
|
|
48
56
|
const newJobs = [...jobs, ...jobRes.data.Items];
|
|
49
57
|
if (!jobRes.data.LastKey) {
|
|
50
58
|
return resolve(newJobs);
|
|
51
59
|
}
|
|
52
|
-
|
|
53
|
-
|
|
60
|
+
maintenanceActions
|
|
61
|
+
.getJobsRecursive(site, status, priority, type, jobRes.data.LastKey, newJobs)
|
|
62
|
+
.then(resolve)
|
|
63
|
+
.catch(reject);
|
|
64
|
+
}).catch(reject);
|
|
54
65
|
});
|
|
55
66
|
},
|
|
56
67
|
sendMaintenanceRequest: (
|
|
@@ -17,6 +17,9 @@ class MaintenanceList extends Component {
|
|
|
17
17
|
types: [],
|
|
18
18
|
filteredList: props.jobs,
|
|
19
19
|
loading: false,
|
|
20
|
+
loadingMore: false,
|
|
21
|
+
hasMore: true,
|
|
22
|
+
lastKey: null,
|
|
20
23
|
searchText: '',
|
|
21
24
|
showFilterPopup: false,
|
|
22
25
|
};
|
|
@@ -39,13 +42,25 @@ class MaintenanceList extends Component {
|
|
|
39
42
|
this.onLoadingChanged(true, async () => {
|
|
40
43
|
try {
|
|
41
44
|
const { jobfilters } = this.props;
|
|
42
|
-
const res = await maintenanceActions.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
const res = await maintenanceActions.getJobs2(
|
|
46
|
+
this.props.site,
|
|
47
|
+
jobfilters.status,
|
|
48
|
+
jobfilters.priority,
|
|
49
|
+
jobfilters.type,
|
|
50
|
+
null, // No lastKey = first page
|
|
51
|
+
jobfilters.assignee,
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
const jobs = res.data.Items;
|
|
55
|
+
const lastKey = res.data.LastKey;
|
|
56
|
+
|
|
57
|
+
// Always replace jobs on refresh (filters are server-side)
|
|
58
|
+
this.props.jobsLoaded(jobs);
|
|
59
|
+
|
|
60
|
+
this.setState({
|
|
61
|
+
lastKey,
|
|
62
|
+
hasMore: !!lastKey,
|
|
63
|
+
});
|
|
49
64
|
} catch (error) {
|
|
50
65
|
console.log('refresh error', error);
|
|
51
66
|
} finally {
|
|
@@ -54,6 +69,42 @@ class MaintenanceList extends Component {
|
|
|
54
69
|
});
|
|
55
70
|
};
|
|
56
71
|
|
|
72
|
+
loadMore = () => {
|
|
73
|
+
const { loading, loadingMore, hasMore, lastKey, searchText } = this.state;
|
|
74
|
+
|
|
75
|
+
// Don't load if already loading, no more pages, or during search
|
|
76
|
+
if (loading || loadingMore || !hasMore || !lastKey || searchText) return;
|
|
77
|
+
|
|
78
|
+
this.setState({ loadingMore: true }, async () => {
|
|
79
|
+
try {
|
|
80
|
+
const { jobfilters } = this.props;
|
|
81
|
+
const res = await maintenanceActions.getJobs2(
|
|
82
|
+
this.props.site,
|
|
83
|
+
jobfilters.status,
|
|
84
|
+
jobfilters.priority,
|
|
85
|
+
jobfilters.type,
|
|
86
|
+
lastKey,
|
|
87
|
+
jobfilters.assignee,
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
const newJobs = res.data.Items;
|
|
91
|
+
const newLastKey = res.data.LastKey;
|
|
92
|
+
|
|
93
|
+
// Append to existing jobs
|
|
94
|
+
this.props.jobsAdded(newJobs);
|
|
95
|
+
|
|
96
|
+
this.setState({
|
|
97
|
+
lastKey: newLastKey,
|
|
98
|
+
hasMore: !!newLastKey,
|
|
99
|
+
});
|
|
100
|
+
} catch (error) {
|
|
101
|
+
console.log('loadMore error', error);
|
|
102
|
+
} finally {
|
|
103
|
+
this.setState({ loadingMore: false });
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
|
|
57
108
|
refreshTypes = async () => {
|
|
58
109
|
const { data } = await maintenanceActions.getJobTypes(Helper.getSite(this.props.site));
|
|
59
110
|
const types = data.map(t => {
|
|
@@ -88,12 +139,13 @@ class MaintenanceList extends Component {
|
|
|
88
139
|
}
|
|
89
140
|
|
|
90
141
|
resetDataSource = (source = '') => {
|
|
91
|
-
const { jobfilters } = this.props;
|
|
92
142
|
const { searchText } = this.state;
|
|
93
143
|
const { jobs } = this.props;
|
|
94
144
|
|
|
95
145
|
let filteredList = jobs;
|
|
96
146
|
let jobIdMatch = null;
|
|
147
|
+
|
|
148
|
+
// Client-side search filtering (search is not supported server-side)
|
|
97
149
|
if (searchText) {
|
|
98
150
|
jobIdMatch = _.find(jobs, j => j.jobId === searchText);
|
|
99
151
|
filteredList = jobs.filter(j => {
|
|
@@ -104,10 +156,10 @@ class MaintenanceList extends Component {
|
|
|
104
156
|
});
|
|
105
157
|
if (!jobIdMatch) this.fetchJob(searchText);
|
|
106
158
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
159
|
+
|
|
160
|
+
// Note: status, priority, type, and assignee filters are applied server-side
|
|
161
|
+
// via getJobs2, so no client-side filtering needed for those
|
|
162
|
+
|
|
111
163
|
if (jobIdMatch) {
|
|
112
164
|
const jobIndex = filteredList.indexOf(jobIdMatch);
|
|
113
165
|
if (jobIndex > -1) {
|
|
@@ -115,7 +167,8 @@ class MaintenanceList extends Component {
|
|
|
115
167
|
}
|
|
116
168
|
filteredList.unshift(jobIdMatch);
|
|
117
169
|
}
|
|
118
|
-
|
|
170
|
+
// Only refresh on initial load, not on filter changes (pagination handles data)
|
|
171
|
+
if (source !== 'search' && source !== 'filter') this.refresh();
|
|
119
172
|
|
|
120
173
|
this.setState({ filteredList });
|
|
121
174
|
};
|
|
@@ -144,6 +197,10 @@ class MaintenanceList extends Component {
|
|
|
144
197
|
onSelectFilter = selected => {
|
|
145
198
|
this.props.jobsFilterLoaded(selected);
|
|
146
199
|
this.onToggleFilter();
|
|
200
|
+
// Reset pagination and clear existing list before refresh
|
|
201
|
+
this.setState({ lastKey: null, hasMore: true, filteredList: [] }, () => {
|
|
202
|
+
this.refresh();
|
|
203
|
+
});
|
|
147
204
|
};
|
|
148
205
|
|
|
149
206
|
getFilterButtonText = () => {
|
|
@@ -224,10 +281,23 @@ class MaintenanceList extends Component {
|
|
|
224
281
|
renderItem={({ item }) => <MaintenanceListItem style={this.props.itemStyle} job={item} />}
|
|
225
282
|
ListEmptyComponent={this.renderEmptyList()}
|
|
226
283
|
ListHeaderComponent={this.renderListHeader()}
|
|
284
|
+
ListFooterComponent={this.renderListFooter()}
|
|
285
|
+
onEndReached={this.loadMore}
|
|
286
|
+
onEndReachedThreshold={0.5}
|
|
227
287
|
/>
|
|
228
288
|
);
|
|
229
289
|
}
|
|
230
290
|
|
|
291
|
+
renderListFooter = () => {
|
|
292
|
+
if (!this.state.loadingMore) return null;
|
|
293
|
+
|
|
294
|
+
return (
|
|
295
|
+
<View style={styles.loadingMore}>
|
|
296
|
+
<Components.LoadingIndicator visible={true} />
|
|
297
|
+
</View>
|
|
298
|
+
);
|
|
299
|
+
};
|
|
300
|
+
|
|
231
301
|
renderFilterPopup() {
|
|
232
302
|
const { jobfilters } = this.props;
|
|
233
303
|
const { showFilterPopup, types } = this.state;
|
|
@@ -301,6 +371,10 @@ const styles = StyleSheet.create({
|
|
|
301
371
|
fontFamily: 'sf-semibold',
|
|
302
372
|
fontSize: 16,
|
|
303
373
|
},
|
|
374
|
+
loadingMore: {
|
|
375
|
+
paddingVertical: 20,
|
|
376
|
+
alignItems: 'center',
|
|
377
|
+
},
|
|
304
378
|
});
|
|
305
379
|
|
|
306
380
|
const mapStateToProps = state => {
|
|
@@ -79,8 +79,15 @@ class RequestDetail extends Component {
|
|
|
79
79
|
this.getExternalSync();
|
|
80
80
|
} catch (error) {
|
|
81
81
|
console.log("getJob error", error.toString());
|
|
82
|
-
//
|
|
83
|
-
|
|
82
|
+
// Log full error details for debugging
|
|
83
|
+
console.log("getJob error details:", {
|
|
84
|
+
message: error.message,
|
|
85
|
+
code: error.code,
|
|
86
|
+
responseStatus: error.response?.status,
|
|
87
|
+
responseData: error.response?.data,
|
|
88
|
+
});
|
|
89
|
+
// check for 403 or 404 error (use optional chaining to prevent crash)
|
|
90
|
+
if (error.response?.status === 403 || error.response?.status === 404) {
|
|
84
91
|
this.setState({
|
|
85
92
|
forbidden: true,
|
|
86
93
|
});
|