@plusscommunities/pluss-maintenance-app-forms 7.0.21 → 8.0.1-auth.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/apis/maintenanceActions.js +12 -4
- package/dist/module/apis/maintenanceActions.js.map +1 -1
- package/dist/module/components/FilterPopupMenu.js +30 -14
- package/dist/module/components/FilterPopupMenu.js.map +1 -1
- package/dist/module/components/MaintenanceList.js +199 -25
- package/dist/module/components/MaintenanceList.js.map +1 -1
- package/dist/module/components/MaintenanceListItem.js +2 -1
- package/dist/module/components/MaintenanceListItem.js.map +1 -1
- package/dist/module/components/MaintenanceWidgetItem.js +2 -1
- package/dist/module/components/MaintenanceWidgetItem.js.map +1 -1
- package/dist/module/components/PrioritySelectorPopup.js +2 -1
- package/dist/module/components/PrioritySelectorPopup.js.map +1 -1
- package/dist/module/components/StatusSelectorPopup.js +2 -1
- package/dist/module/components/StatusSelectorPopup.js.map +1 -1
- package/dist/module/components/WidgetSmall.js +5 -4
- package/dist/module/components/WidgetSmall.js.map +1 -1
- package/dist/module/core.config.js +1 -2
- package/dist/module/core.config.js.map +1 -1
- package/dist/module/screens/JobTypePicker.js +2 -1
- package/dist/module/screens/JobTypePicker.js.map +1 -1
- package/dist/module/screens/MaintenanceUserPicker.js +73 -91
- package/dist/module/screens/MaintenanceUserPicker.js.map +1 -1
- package/dist/module/screens/RequestDetail.js +76 -29
- package/dist/module/screens/RequestDetail.js.map +1 -1
- package/dist/module/screens/RequestNotes.js +11 -7
- package/dist/module/screens/RequestNotes.js.map +1 -1
- package/dist/module/screens/ServiceRequest.js +43 -42
- package/dist/module/screens/ServiceRequest.js.map +1 -1
- package/dist/module/values.config.a.js +1 -2
- package/dist/module/values.config.a.js.map +1 -1
- package/dist/module/values.config.default.js +1 -2
- package/dist/module/values.config.default.js.map +1 -1
- package/dist/module/values.config.enquiry.js +1 -2
- package/dist/module/values.config.enquiry.js.map +1 -1
- package/dist/module/values.config.feedback.js +1 -2
- package/dist/module/values.config.feedback.js.map +1 -1
- package/dist/module/values.config.food.js +1 -2
- package/dist/module/values.config.food.js.map +1 -1
- package/package.json +18 -14
- package/src/apis/maintenanceActions.js +17 -7
- package/src/components/FilterPopupMenu.js +67 -40
- package/src/components/MaintenanceList.js +234 -40
- package/src/components/MaintenanceListItem.js +2 -1
- package/src/components/MaintenanceWidgetItem.js +2 -1
- package/src/components/PrioritySelectorPopup.js +2 -1
- package/src/components/StatusSelectorPopup.js +2 -1
- package/src/components/WidgetSmall.js +12 -4
- package/src/core.config.js +0 -2
- package/src/screens/JobTypePicker.js +2 -1
- package/src/screens/MaintenanceUserPicker.js +77 -114
- package/src/screens/RequestDetail.js +88 -32
- package/src/screens/RequestNotes.js +17 -10
- package/src/screens/ServiceRequest.js +85 -44
- package/src/values.config.a.js +0 -1
- package/src/values.config.default.js +0 -1
- package/src/values.config.enquiry.js +0 -1
- package/src/values.config.feedback.js +0 -1
- package/src/values.config.food.js +0 -1
|
@@ -2,7 +2,8 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
|
|
|
2
2
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
3
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
4
|
import React, { Component } from "react";
|
|
5
|
-
import {
|
|
5
|
+
import { Text } from "@plusscommunities/pluss-core-app/components";
|
|
6
|
+
import { View, StyleSheet, FlatList, TouchableOpacity, Animated } from "react-native";
|
|
6
7
|
import _ from "lodash";
|
|
7
8
|
import { connect } from "react-redux";
|
|
8
9
|
import { maintenanceActions } from "../apis";
|
|
@@ -14,23 +15,86 @@ import { values } from "../values.config";
|
|
|
14
15
|
class MaintenanceList extends Component {
|
|
15
16
|
constructor(props) {
|
|
16
17
|
super(props);
|
|
17
|
-
_defineProperty(this, "
|
|
18
|
+
_defineProperty(this, "_refreshCounter", 0);
|
|
19
|
+
_defineProperty(this, "_filterApplying", false);
|
|
20
|
+
_defineProperty(this, "_filterDataReady", false);
|
|
21
|
+
_defineProperty(this, "_overlayOpacity", new Animated.Value(0));
|
|
22
|
+
_defineProperty(this, "expandStatus", status => {
|
|
23
|
+
if (status !== "Incomplete") return status;
|
|
24
|
+
const {
|
|
25
|
+
statusTypes
|
|
26
|
+
} = this.props;
|
|
27
|
+
if (!statusTypes || !statusTypes.length) return status;
|
|
28
|
+
const incompleteStatuses = statusTypes.filter(s => s.category !== "Completed").map(s => s.text);
|
|
29
|
+
return incompleteStatuses.length > 0 ? incompleteStatuses.join(",") : status;
|
|
30
|
+
});
|
|
31
|
+
_defineProperty(this, "refresh", overrideFilters => {
|
|
32
|
+
const currentCounter = ++this._refreshCounter;
|
|
18
33
|
this.onLoadingChanged(true, async () => {
|
|
34
|
+
try {
|
|
35
|
+
const jobfilters = overrideFilters || this.props.jobfilters;
|
|
36
|
+
const res = await maintenanceActions.getJobs2(this.props.site, this.expandStatus(jobfilters.status), jobfilters.priority, jobfilters.type, null,
|
|
37
|
+
// No lastKey = first page
|
|
38
|
+
jobfilters.assignee);
|
|
39
|
+
|
|
40
|
+
// Discard stale responses from earlier filter changes
|
|
41
|
+
if (currentCounter !== this._refreshCounter) return;
|
|
42
|
+
const jobs = res.data.Items;
|
|
43
|
+
const lastKey = res.data.LastKey;
|
|
44
|
+
|
|
45
|
+
// Signal that the API response is ready before dispatching to Redux
|
|
46
|
+
this._filterDataReady = true;
|
|
47
|
+
|
|
48
|
+
// Always replace jobs on refresh (filters are server-side)
|
|
49
|
+
this.props.jobsLoaded(jobs);
|
|
50
|
+
this.setState({
|
|
51
|
+
lastKey,
|
|
52
|
+
hasMore: !!lastKey
|
|
53
|
+
});
|
|
54
|
+
} catch (error) {
|
|
55
|
+
if (currentCounter !== this._refreshCounter) return;
|
|
56
|
+
console.log("refresh error", error);
|
|
57
|
+
} finally {
|
|
58
|
+
if (currentCounter === this._refreshCounter) {
|
|
59
|
+
this.onLoadingChanged(false);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
_defineProperty(this, "loadMore", () => {
|
|
65
|
+
const {
|
|
66
|
+
loading,
|
|
67
|
+
loadingMore,
|
|
68
|
+
hasMore,
|
|
69
|
+
lastKey,
|
|
70
|
+
searchText
|
|
71
|
+
} = this.state;
|
|
72
|
+
|
|
73
|
+
// Don't load if already loading, no more pages, or during search
|
|
74
|
+
if (loading || loadingMore || !hasMore || !lastKey || searchText) return;
|
|
75
|
+
this.setState({
|
|
76
|
+
loadingMore: true
|
|
77
|
+
}, async () => {
|
|
19
78
|
try {
|
|
20
79
|
const {
|
|
21
80
|
jobfilters
|
|
22
81
|
} = this.props;
|
|
23
|
-
const res = await maintenanceActions.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
82
|
+
const res = await maintenanceActions.getJobs2(this.props.site, this.expandStatus(jobfilters.status), jobfilters.priority, jobfilters.type, lastKey, jobfilters.assignee);
|
|
83
|
+
const newJobs = res.data.Items;
|
|
84
|
+
const newLastKey = res.data.LastKey;
|
|
85
|
+
|
|
86
|
+
// Append to existing jobs
|
|
87
|
+
this.props.jobsAdded(newJobs);
|
|
88
|
+
this.setState({
|
|
89
|
+
lastKey: newLastKey,
|
|
90
|
+
hasMore: !!newLastKey
|
|
91
|
+
});
|
|
30
92
|
} catch (error) {
|
|
31
|
-
console.log("
|
|
93
|
+
console.log("loadMore error", error);
|
|
32
94
|
} finally {
|
|
33
|
-
this.
|
|
95
|
+
this.setState({
|
|
96
|
+
loadingMore: false
|
|
97
|
+
});
|
|
34
98
|
}
|
|
35
99
|
});
|
|
36
100
|
});
|
|
@@ -68,9 +132,6 @@ class MaintenanceList extends Component {
|
|
|
68
132
|
});
|
|
69
133
|
});
|
|
70
134
|
_defineProperty(this, "resetDataSource", (source = "") => {
|
|
71
|
-
const {
|
|
72
|
-
jobfilters
|
|
73
|
-
} = this.props;
|
|
74
135
|
const {
|
|
75
136
|
searchText
|
|
76
137
|
} = this.state;
|
|
@@ -79,6 +140,8 @@ class MaintenanceList extends Component {
|
|
|
79
140
|
} = this.props;
|
|
80
141
|
let filteredList = jobs;
|
|
81
142
|
let jobIdMatch = null;
|
|
143
|
+
|
|
144
|
+
// Client-side search filtering (search is not supported server-side)
|
|
82
145
|
if (searchText) {
|
|
83
146
|
jobIdMatch = _.find(jobs, j => j.jobId === searchText);
|
|
84
147
|
filteredList = jobs.filter(j => {
|
|
@@ -89,10 +152,10 @@ class MaintenanceList extends Component {
|
|
|
89
152
|
});
|
|
90
153
|
if (!jobIdMatch) this.fetchJob(searchText);
|
|
91
154
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
155
|
+
|
|
156
|
+
// Note: status, priority, type, and assignee filters are applied server-side
|
|
157
|
+
// via getJobs2, so no client-side filtering needed for those
|
|
158
|
+
|
|
96
159
|
if (jobIdMatch) {
|
|
97
160
|
const jobIndex = filteredList.indexOf(jobIdMatch);
|
|
98
161
|
if (jobIndex > -1) {
|
|
@@ -100,9 +163,21 @@ class MaintenanceList extends Component {
|
|
|
100
163
|
}
|
|
101
164
|
filteredList.unshift(jobIdMatch);
|
|
102
165
|
}
|
|
103
|
-
|
|
166
|
+
|
|
167
|
+
// During a filter transition, don't clear the list until the API
|
|
168
|
+
// response has arrived and been processed. This prevents the empty
|
|
169
|
+
// state from flashing when jobs transiently drop to [].
|
|
170
|
+
if (this._filterApplying && !this._filterDataReady && filteredList.length === 0) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
104
173
|
this.setState({
|
|
105
174
|
filteredList
|
|
175
|
+
}, () => {
|
|
176
|
+
if (this._filterDataReady) {
|
|
177
|
+
this._filterApplying = false;
|
|
178
|
+
this._filterDataReady = false;
|
|
179
|
+
this._showOverlay(false);
|
|
180
|
+
}
|
|
106
181
|
});
|
|
107
182
|
});
|
|
108
183
|
_defineProperty(this, "onLoadingChanged", (loading, callback) => {
|
|
@@ -129,8 +204,19 @@ class MaintenanceList extends Component {
|
|
|
129
204
|
});
|
|
130
205
|
});
|
|
131
206
|
_defineProperty(this, "onSelectFilter", selected => {
|
|
207
|
+
this._filterApplying = true;
|
|
208
|
+
this._filterDataReady = false;
|
|
209
|
+
this._showOverlay(true);
|
|
132
210
|
this.props.jobsFilterLoaded(selected);
|
|
133
211
|
this.onToggleFilter();
|
|
212
|
+
// Reset pagination but keep old list visible while loading
|
|
213
|
+
// Pass filters directly to avoid stale props from async Redux update
|
|
214
|
+
this.setState({
|
|
215
|
+
lastKey: null,
|
|
216
|
+
hasMore: true
|
|
217
|
+
}, () => {
|
|
218
|
+
this.refresh(selected);
|
|
219
|
+
});
|
|
134
220
|
});
|
|
135
221
|
_defineProperty(this, "getFilterButtonText", () => {
|
|
136
222
|
const {
|
|
@@ -154,10 +240,40 @@ class MaintenanceList extends Component {
|
|
|
154
240
|
}
|
|
155
241
|
return `Filtering by ${filterTexts.join(", ")}`;
|
|
156
242
|
});
|
|
243
|
+
_defineProperty(this, "clearFilters", () => {
|
|
244
|
+
const emptyFilters = {
|
|
245
|
+
status: "",
|
|
246
|
+
statusText: "",
|
|
247
|
+
priority: "",
|
|
248
|
+
priorityText: "",
|
|
249
|
+
type: "",
|
|
250
|
+
assignee: "",
|
|
251
|
+
assigneeName: ""
|
|
252
|
+
};
|
|
253
|
+
this.onSelectFilter(emptyFilters);
|
|
254
|
+
});
|
|
255
|
+
_defineProperty(this, "renderListFooter", () => {
|
|
256
|
+
if (!this.state.loadingMore) return null;
|
|
257
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
258
|
+
style: styles.loadingMore
|
|
259
|
+
}, /*#__PURE__*/React.createElement(Components.LoadingIndicator, {
|
|
260
|
+
visible: true
|
|
261
|
+
}));
|
|
262
|
+
});
|
|
263
|
+
_defineProperty(this, "_showOverlay", visible => {
|
|
264
|
+
Animated.timing(this._overlayOpacity, {
|
|
265
|
+
toValue: visible ? 1 : 0,
|
|
266
|
+
duration: 200,
|
|
267
|
+
useNativeDriver: true
|
|
268
|
+
}).start();
|
|
269
|
+
});
|
|
157
270
|
this.state = {
|
|
158
271
|
types: [],
|
|
159
272
|
filteredList: props.jobs,
|
|
160
273
|
loading: false,
|
|
274
|
+
loadingMore: false,
|
|
275
|
+
hasMore: true,
|
|
276
|
+
lastKey: null,
|
|
161
277
|
searchText: "",
|
|
162
278
|
showFilterPopup: false
|
|
163
279
|
};
|
|
@@ -179,13 +295,30 @@ class MaintenanceList extends Component {
|
|
|
179
295
|
}
|
|
180
296
|
return this.props.userCategory === "staff" ? values.emptyRequestsStaff : values.emptyRequestsUser;
|
|
181
297
|
}
|
|
298
|
+
hasFiltersActive() {
|
|
299
|
+
const {
|
|
300
|
+
jobfilters
|
|
301
|
+
} = this.props;
|
|
302
|
+
return !_.isEmpty(jobfilters.status) || !_.isEmpty(jobfilters.priority) || !_.isEmpty(jobfilters.type) || !_.isEmpty(jobfilters.assignee);
|
|
303
|
+
}
|
|
182
304
|
renderEmptyList() {
|
|
183
|
-
|
|
184
|
-
|
|
305
|
+
if (this.state.loading || this._filterApplying) return null;
|
|
306
|
+
const hasFilters = this.hasFiltersActive();
|
|
307
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
185
308
|
style: {
|
|
186
|
-
marginHorizontal: 16
|
|
309
|
+
marginHorizontal: 16,
|
|
310
|
+
alignItems: "center"
|
|
187
311
|
}
|
|
188
|
-
}
|
|
312
|
+
}, /*#__PURE__*/React.createElement(Components.EmptyStateMain, {
|
|
313
|
+
title: hasFilters ? "No requests match your filters" : this.getEmptyStateText()
|
|
314
|
+
}), hasFilters && /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
315
|
+
onPress: this.clearFilters,
|
|
316
|
+
style: styles.clearFiltersButton
|
|
317
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
318
|
+
style: [styles.clearFiltersText, {
|
|
319
|
+
color: this.props.colourBrandingMain
|
|
320
|
+
}]
|
|
321
|
+
}, "Clear filters")));
|
|
189
322
|
}
|
|
190
323
|
renderFilterButton() {
|
|
191
324
|
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
@@ -245,9 +378,23 @@ class MaintenanceList extends Component {
|
|
|
245
378
|
job: item
|
|
246
379
|
}),
|
|
247
380
|
ListEmptyComponent: this.renderEmptyList(),
|
|
248
|
-
ListHeaderComponent: this.renderListHeader()
|
|
381
|
+
ListHeaderComponent: this.renderListHeader(),
|
|
382
|
+
ListFooterComponent: this.renderListFooter(),
|
|
383
|
+
onEndReached: this.loadMore,
|
|
384
|
+
onEndReachedThreshold: 0.5
|
|
249
385
|
});
|
|
250
386
|
}
|
|
387
|
+
renderFilterOverlay() {
|
|
388
|
+
if (!this._filterApplying) return null;
|
|
389
|
+
return /*#__PURE__*/React.createElement(Animated.View, {
|
|
390
|
+
style: [styles.filterOverlay, {
|
|
391
|
+
opacity: this._overlayOpacity
|
|
392
|
+
}],
|
|
393
|
+
pointerEvents: "none"
|
|
394
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
395
|
+
style: styles.filterOverlayInner
|
|
396
|
+
}, /*#__PURE__*/React.createElement(Components.LoadingCircles, null)));
|
|
397
|
+
}
|
|
251
398
|
renderFilterPopup() {
|
|
252
399
|
const {
|
|
253
400
|
jobfilters
|
|
@@ -270,7 +417,7 @@ class MaintenanceList extends Component {
|
|
|
270
417
|
render() {
|
|
271
418
|
return /*#__PURE__*/React.createElement(View, {
|
|
272
419
|
style: [styles.container, this.props.style]
|
|
273
|
-
}, this.renderList(), this.renderFilterPopup());
|
|
420
|
+
}, this.renderList(), this.renderFilterOverlay(), this.renderFilterPopup());
|
|
274
421
|
}
|
|
275
422
|
}
|
|
276
423
|
const styles = StyleSheet.create({
|
|
@@ -317,6 +464,33 @@ const styles = StyleSheet.create({
|
|
|
317
464
|
filterButtonText: {
|
|
318
465
|
fontFamily: "sf-semibold",
|
|
319
466
|
fontSize: 16
|
|
467
|
+
},
|
|
468
|
+
loadingMore: {
|
|
469
|
+
paddingVertical: 20,
|
|
470
|
+
alignItems: "center"
|
|
471
|
+
},
|
|
472
|
+
clearFiltersButton: {
|
|
473
|
+
marginTop: 12,
|
|
474
|
+
paddingVertical: 10,
|
|
475
|
+
paddingHorizontal: 24,
|
|
476
|
+
borderRadius: 8,
|
|
477
|
+
borderWidth: 1,
|
|
478
|
+
borderColor: "#ccc",
|
|
479
|
+
backgroundColor: "#f9f9f9"
|
|
480
|
+
},
|
|
481
|
+
clearFiltersText: {
|
|
482
|
+
fontFamily: "sf-semibold",
|
|
483
|
+
fontSize: 15
|
|
484
|
+
},
|
|
485
|
+
filterOverlay: {
|
|
486
|
+
...StyleSheet.absoluteFillObject,
|
|
487
|
+
justifyContent: "center",
|
|
488
|
+
alignItems: "center",
|
|
489
|
+
backgroundColor: "rgba(255, 255, 255, 0.7)"
|
|
490
|
+
},
|
|
491
|
+
filterOverlayInner: {
|
|
492
|
+
padding: 20,
|
|
493
|
+
borderRadius: 12
|
|
320
494
|
}
|
|
321
495
|
});
|
|
322
496
|
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 {\n\tView,\n\tStyleSheet,\n\tFlatList,\n\tTouchableOpacity,\n\tText,\n} from \"react-native\";\nimport _ from \"lodash\";\nimport { connect } from \"react-redux\";\nimport { maintenanceActions } from \"../apis\";\nimport {\n\tjobsLoaded,\n\tjobAdded,\n\tjobsAdded,\n\tjobStatusesUpdate,\n\tjobHideSeenUpdate,\n\tjobsFilterLoaded,\n} 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\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\ttypes: [],\n\t\t\tfilteredList: props.jobs,\n\t\t\tloading: false,\n\t\t\tsearchText: \"\",\n\t\t\tshowFilterPopup: false,\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.props.jobStatusesUpdate(this.props.site);\n\t\tthis.props.jobHideSeenUpdate(this.props.site);\n\t\tthis.refresh();\n\t\tthis.refreshTypes();\n\t\tthis.resetDataSource();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n\t\tif (\n\t\t\t!_.isEqual(prevProps.jobs, this.props.jobs) ||\n\t\t\t!_.isEqual(prevProps.jobfilters, this.props.jobfilters)\n\t\t)\n\t\t\tthis.resetDataSource();\n\t}\n\n\trefresh = () => {\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tconst { jobfilters } = this.props;\n\t\t\t\tconst res = await maintenanceActions.getJobsRecursive(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tjobfilters.status,\n\t\t\t\t\tjobfilters.priority,\n\t\t\t\t\tjobfilters.type,\n\t\t\t\t);\n\t\t\t\t// console.log('refresh', res ? JSON.stringify(res[0], null, 2) : null);\n\t\t\t\tif (\n\t\t\t\t\t!_.isEmpty(jobfilters.status) ||\n\t\t\t\t\t!_.isEmpty(jobfilters.priority) ||\n\t\t\t\t\t!_.isEmpty(jobfilters.type)\n\t\t\t\t) {\n\t\t\t\t\tthis.props.jobsAdded(res);\n\t\t\t\t} else {\n\t\t\t\t\tthis.props.jobsLoaded(res);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"refresh error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\trefreshTypes = async () => {\n\t\tconst { data } = await maintenanceActions.getJobTypes(\n\t\t\tHelper.getSite(this.props.site),\n\t\t);\n\t\tconst types = data.map((t) => {\n\t\t\treturn { label: t.typeName, value: t.typeName };\n\t\t});\n\t\ttypes.splice(0, 0, { label: \"All\", value: \"\" });\n\t\t// console.log('refreshTypes', types);\n\t\tthis.setState({ types });\n\t};\n\n\tfetchJob = (jobId) => {\n\t\tif (this.state.loading) return;\n\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tconst job = await maintenanceActions.getJobByJobId(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tjobId,\n\t\t\t\t);\n\t\t\t\t// console.log('fetchJob', job?.data);\n\t\t\t\tthis.props.jobAdded(job.data);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"fetchJob error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tgetEmptyStateText() {\n\t\tif (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n\t\t\treturn this.props.options.EmptyText;\n\t\t}\n\t\treturn this.props.userCategory === \"staff\"\n\t\t\t? values.emptyRequestsStaff\n\t\t\t: values.emptyRequestsUser;\n\t}\n\n\tresetDataSource = (source = \"\") => {\n\t\tconst { jobfilters } = this.props;\n\t\tconst { searchText } = this.state;\n\t\tconst { jobs } = this.props;\n\n\t\tlet filteredList = jobs;\n\t\tlet jobIdMatch = null;\n\t\tif (searchText) {\n\t\t\tjobIdMatch = _.find(jobs, (j) => j.jobId === searchText);\n\t\t\tfilteredList = jobs.filter((j) => {\n\t\t\t\tif (\n\t\t\t\t\tj.room &&\n\t\t\t\t\tj.room.toLowerCase().indexOf(searchText.toLowerCase()) > -1\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t\tif (!jobIdMatch) this.fetchJob(searchText);\n\t\t}\n\t\tif (jobfilters.status)\n\t\t\tfilteredList = filteredList.filter((j) =>\n\t\t\t\tjobfilters.status.includes(j.status),\n\t\t\t);\n\t\tif (jobfilters.priority)\n\t\t\tfilteredList = filteredList.filter((j) =>\n\t\t\t\tjobfilters.priority.includes(j.priority),\n\t\t\t);\n\t\tif (jobfilters.type)\n\t\t\tfilteredList = filteredList.filter((j) =>\n\t\t\t\tjobfilters.type.includes(j.type),\n\t\t\t);\n\t\tif (jobfilters.assignee)\n\t\t\tfilteredList = filteredList.filter((j) =>\n\t\t\t\tjobfilters.assignee.includes(j.AssigneeId),\n\t\t\t);\n\t\tif (jobIdMatch) {\n\t\t\tconst jobIndex = filteredList.indexOf(jobIdMatch);\n\t\t\tif (jobIndex > -1) {\n\t\t\t\tfilteredList.splice(jobIndex, 1);\n\t\t\t}\n\t\t\tfilteredList.unshift(jobIdMatch);\n\t\t}\n\t\tif (source !== \"search\") this.refresh();\n\n\t\tthis.setState({ filteredList });\n\t};\n\n\tonLoadingChanged = (loading, callback) => {\n\t\tthis.setState({ loading }, () => {\n\t\t\tif (this.props.onLoadingChanged)\n\t\t\t\tthis.props.onLoadingChanged(this.state.loading);\n\t\t\tif (callback) callback();\n\t\t});\n\t};\n\n\tonSearchText = (value) => {\n\t\tthis.setState({ searchText: value }, () => {\n\t\t\tif (_.isEmpty(this.state.searchText)) this.resetDataSource(\"search\");\n\t\t});\n\t};\n\n\tonSearchSubmit = () => {\n\t\tthis.resetDataSource(\"search\");\n\t};\n\n\tonToggleFilter = () => {\n\t\tthis.setState({ showFilterPopup: !this.state.showFilterPopup });\n\t};\n\n\tonSelectFilter = (selected) => {\n\t\tthis.props.jobsFilterLoaded(selected);\n\t\tthis.onToggleFilter();\n\t};\n\n\tgetFilterButtonText = () => {\n\t\tconst { jobfilters } = this.props;\n\t\tconst filterTexts = [];\n\t\tif (!_.isEmpty(jobfilters.status)) {\n\t\t\tfilterTexts.push(jobfilters.statusText);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.priority)) {\n\t\t\tfilterTexts.push(jobfilters.priorityText);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.type)) {\n\t\t\tfilterTexts.push(jobfilters.type);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.assignee)) {\n\t\t\tfilterTexts.push(jobfilters.assigneeName);\n\t\t}\n\t\tif (_.isEmpty(filterTexts)) {\n\t\t\treturn \"Filter\";\n\t\t}\n\t\treturn `Filtering by ${filterTexts.join(\", \")}`;\n\t};\n\n\trenderEmptyList() {\n\t\treturn this.state.loading ? null : (\n\t\t\t<Components.EmptyStateMain\n\t\t\t\ttitle={this.getEmptyStateText()}\n\t\t\t\tstyle={{ marginHorizontal: 16 }}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderFilterButton() {\n\t\treturn (\n\t\t\t<TouchableOpacity onPress={this.onToggleFilter}>\n\t\t\t\t<View style={styles.filterButton}>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\tstyles.filterButtonText,\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\t\t{this.getFilterButtonText()}\n\t\t\t\t\t</Text>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trenderSearch() {\n\t\tif (!this.props.hasPermission) return null;\n\n\t\treturn (\n\t\t\t<View style={styles.searchContainer}>\n\t\t\t\t<Components.GenericInput\n\t\t\t\t\tplaceholder={`Search by ${values.textEntityName} ID or Address`}\n\t\t\t\t\tvalue={this.state.searchText}\n\t\t\t\t\tonChangeText={this.onSearchText}\n\t\t\t\t\tonSubmitEditing={this.onSearchSubmit}\n\t\t\t\t\tsquaredCorners\n\t\t\t\t\thasClear\n\t\t\t\t\t// keyboardType={'numeric'}\n\t\t\t\t\treturnKeyType={\"done\"}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderListHeader() {\n\t\tconst { ListHeaderComponent } = this.props;\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t{ListHeaderComponent ? (\n\t\t\t\t\tListHeaderComponent\n\t\t\t\t) : (\n\t\t\t\t\t<View style={{ height: 8 }} />\n\t\t\t\t)}\n\t\t\t\t{this.renderFilterButton()}\n\t\t\t\t{this.renderSearch()}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderList() {\n\t\tconst { filteredList } = this.state;\n\n\t\treturn (\n\t\t\t<FlatList\n\t\t\t\tkeyboardShouldPersistTaps=\"always\"\n\t\t\t\tstyle={{ flex: 1 }}\n\t\t\t\tcontentContainerStyle={{ paddingBottom: 16 }}\n\t\t\t\tdata={filteredList}\n\t\t\t\tkeyExtractor={(item) => item.id}\n\t\t\t\trenderItem={({ item }) => (\n\t\t\t\t\t<MaintenanceListItem style={this.props.itemStyle} job={item} />\n\t\t\t\t)}\n\t\t\t\tListEmptyComponent={this.renderEmptyList()}\n\t\t\t\tListHeaderComponent={this.renderListHeader()}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderFilterPopup() {\n\t\tconst { jobfilters } = this.props;\n\t\tconst { showFilterPopup, types } = this.state;\n\t\tif (!showFilterPopup) return null;\n\n\t\treturn (\n\t\t\t<FilterPopupMenu\n\t\t\t\tsite={this.props.site}\n\t\t\t\ttypes={types}\n\t\t\t\tstatus={jobfilters.status}\n\t\t\t\tpriority={jobfilters.priority}\n\t\t\t\tassignee={jobfilters.assignee}\n\t\t\t\ttype={jobfilters.type}\n\t\t\t\tonClose={this.onSelectFilter}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<View style={[styles.container, this.props.style]}>\n\t\t\t\t{this.renderList()}\n\t\t\t\t{this.renderFilterPopup()}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t\tbackgroundColor: \"#fff\",\n\t},\n\tfilterContainerOuter: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t\tpaddingHorizontal: 16,\n\t\tpaddingVertical: 16,\n\t},\n\tfilterTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 11,\n\t\tletterSpacing: 0.8,\n\t\tcolor: \"#4d4d4d\",\n\t},\n\tfilterContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tfilterText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tmarginRight: 6,\n\t},\n\tfilterIcon: {\n\t\tfontSize: 20,\n\t},\n\tsearchContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tpaddingBottom: 8,\n\t\tpaddingHorizontal: 16,\n\t},\n\tfilterButton: {\n\t\tpaddingBottom: 8,\n\t\tpaddingHorizontal: 16,\n\t\tflexDirection: \"row-reverse\",\n\t},\n\tfilterButtonText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\tconst { user, notifications } = state;\n\tconst jobs = state[values.reducerKey];\n\tconst jobsOrdered = _.orderBy(jobs.jobs, [\"createdUnix\"], [\"desc\"]);\n\tconst hasPermission = _.includes(user.permissions, \"maintenanceTracking\");\n\n\treturn {\n\t\thasPermission,\n\t\tjobs: jobsOrdered,\n\t\tsite: user.site,\n\t\tuserCategory: user.category,\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tdataUpdated: notifications.dataUpdated[values.updateKey],\n\t\tstatusTypes: state[values.reducerKey].jobstatuses,\n\t\tjobfilters: state[values.reducerKey].jobfilters || {},\n\t};\n};\n\nexport default connect(\n\tmapStateToProps,\n\t{\n\t\tjobsLoaded,\n\t\tjobAdded,\n\t\tjobsAdded,\n\t\tjobStatusesUpdate,\n\t\tjobHideSeenUpdate,\n\t\tjobsFilterLoaded,\n\t},\n\tnull,\n\t{\n\t\tforwardRef: true,\n\t},\n)(MaintenanceList);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Component","Text","View","StyleSheet","FlatList","TouchableOpacity","Animated","_","connect","maintenanceActions","jobsLoaded","jobAdded","jobsAdded","jobStatusesUpdate","jobHideSeenUpdate","jobsFilterLoaded","MaintenanceListItem","FilterPopupMenu","Components","Colours","Helper","values","MaintenanceList","constructor","props","_defineProperty","Value","status","statusTypes","length","incompleteStatuses","filter","s","category","map","text","join","overrideFilters","currentCounter","_refreshCounter","onLoadingChanged","jobfilters","res","getJobs2","site","expandStatus","priority","type","assignee","jobs","data","Items","lastKey","LastKey","_filterDataReady","setState","hasMore","error","console","log","loading","loadingMore","searchText","state","newJobs","newLastKey","getJobTypes","getSite","types","t","label","typeName","value","splice","jobId","job","getJobByJobId","source","filteredList","jobIdMatch","find","j","room","toLowerCase","indexOf","fetchJob","jobIndex","unshift","_filterApplying","_showOverlay","callback","isEmpty","resetDataSource","showFilterPopup","selected","onToggleFilter","refresh","filterTexts","push","statusText","priorityText","assigneeName","emptyFilters","onSelectFilter","createElement","style","styles","LoadingIndicator","visible","timing","_overlayOpacity","toValue","duration","useNativeDriver","start","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","emptyRequestsStaff","emptyRequestsUser","hasFiltersActive","renderEmptyList","hasFilters","marginHorizontal","alignItems","EmptyStateMain","title","onPress","clearFilters","clearFiltersButton","clearFiltersText","color","colourBrandingMain","renderFilterButton","filterButton","filterButtonText","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","renderFilterOverlay","filterOverlay","opacity","pointerEvents","filterOverlayInner","LoadingCircles","renderFilterPopup","onClose","render","container","create","backgroundColor","filterContainerOuter","flexDirection","justifyContent","paddingHorizontal","paddingVertical","filterTitle","fontFamily","fontSize","letterSpacing","filterContainer","filterText","marginRight","filterIcon","marginTop","borderRadius","borderWidth","borderColor","absoluteFillObject","padding","mapStateToProps","user","notifications","reducerKey","jobsOrdered","orderBy","includes","permissions","getMainBrandingColourFromState","updateKey","jobstatuses","forwardRef"],"sources":["MaintenanceList.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport {\n\tView,\n\tStyleSheet,\n\tFlatList,\n\tTouchableOpacity,\n\tAnimated,\n} from \"react-native\";\nimport _ from \"lodash\";\nimport { connect } from \"react-redux\";\nimport { maintenanceActions } from \"../apis\";\nimport {\n\tjobsLoaded,\n\tjobAdded,\n\tjobsAdded,\n\tjobStatusesUpdate,\n\tjobHideSeenUpdate,\n\tjobsFilterLoaded,\n} 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\t_refreshCounter = 0;\n\t_filterApplying = false;\n\t_filterDataReady = false;\n\t_overlayOpacity = new Animated.Value(0);\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\ttypes: [],\n\t\t\tfilteredList: props.jobs,\n\t\t\tloading: false,\n\t\t\tloadingMore: false,\n\t\t\thasMore: true,\n\t\t\tlastKey: null,\n\t\t\tsearchText: \"\",\n\t\t\tshowFilterPopup: false,\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.props.jobStatusesUpdate(this.props.site);\n\t\tthis.props.jobHideSeenUpdate(this.props.site);\n\t\tthis.refresh();\n\t\tthis.refreshTypes();\n\t\tthis.resetDataSource();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n\t\tif (\n\t\t\t!_.isEqual(prevProps.jobs, this.props.jobs) ||\n\t\t\t!_.isEqual(prevProps.jobfilters, this.props.jobfilters)\n\t\t)\n\t\t\tthis.resetDataSource();\n\t}\n\n\texpandStatus = (status) => {\n\t\tif (status !== \"Incomplete\") return status;\n\t\tconst { statusTypes } = this.props;\n\t\tif (!statusTypes || !statusTypes.length) return status;\n\t\tconst incompleteStatuses = statusTypes\n\t\t\t.filter((s) => s.category !== \"Completed\")\n\t\t\t.map((s) => s.text);\n\t\treturn incompleteStatuses.length > 0\n\t\t\t? incompleteStatuses.join(\",\")\n\t\t\t: status;\n\t};\n\n\trefresh = (overrideFilters) => {\n\t\tconst currentCounter = ++this._refreshCounter;\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tconst jobfilters = overrideFilters || this.props.jobfilters;\n\t\t\t\tconst res = await maintenanceActions.getJobs2(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tthis.expandStatus(jobfilters.status),\n\t\t\t\t\tjobfilters.priority,\n\t\t\t\t\tjobfilters.type,\n\t\t\t\t\tnull, // No lastKey = first page\n\t\t\t\t\tjobfilters.assignee,\n\t\t\t\t);\n\n\t\t\t\t// Discard stale responses from earlier filter changes\n\t\t\t\tif (currentCounter !== this._refreshCounter) return;\n\n\t\t\t\tconst jobs = res.data.Items;\n\t\t\t\tconst lastKey = res.data.LastKey;\n\n\t\t\t\t// Signal that the API response is ready before dispatching to Redux\n\t\t\t\tthis._filterDataReady = true;\n\n\t\t\t\t// Always replace jobs on refresh (filters are server-side)\n\t\t\t\tthis.props.jobsLoaded(jobs);\n\n\t\t\t\tthis.setState({\n\t\t\t\t\tlastKey,\n\t\t\t\t\thasMore: !!lastKey,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (currentCounter !== this._refreshCounter) return;\n\t\t\t\tconsole.log(\"refresh error\", error);\n\t\t\t} finally {\n\t\t\t\tif (currentCounter === this._refreshCounter) {\n\t\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\tloadMore = () => {\n\t\tconst { loading, loadingMore, hasMore, lastKey, searchText } = this.state;\n\n\t\t// Don't load if already loading, no more pages, or during search\n\t\tif (loading || loadingMore || !hasMore || !lastKey || searchText) return;\n\n\t\tthis.setState({ loadingMore: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst { jobfilters } = this.props;\n\t\t\t\tconst res = await maintenanceActions.getJobs2(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tthis.expandStatus(jobfilters.status),\n\t\t\t\t\tjobfilters.priority,\n\t\t\t\t\tjobfilters.type,\n\t\t\t\t\tlastKey,\n\t\t\t\t\tjobfilters.assignee,\n\t\t\t\t);\n\n\t\t\t\tconst newJobs = res.data.Items;\n\t\t\t\tconst newLastKey = res.data.LastKey;\n\n\t\t\t\t// Append to existing jobs\n\t\t\t\tthis.props.jobsAdded(newJobs);\n\n\t\t\t\tthis.setState({\n\t\t\t\t\tlastKey: newLastKey,\n\t\t\t\t\thasMore: !!newLastKey,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"loadMore error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loadingMore: false });\n\t\t\t}\n\t\t});\n\t};\n\n\trefreshTypes = async () => {\n\t\tconst { data } = await maintenanceActions.getJobTypes(\n\t\t\tHelper.getSite(this.props.site),\n\t\t);\n\t\tconst types = data.map((t) => {\n\t\t\treturn { label: t.typeName, value: t.typeName };\n\t\t});\n\t\ttypes.splice(0, 0, { label: \"All\", value: \"\" });\n\t\t// console.log('refreshTypes', types);\n\t\tthis.setState({ types });\n\t};\n\n\tfetchJob = (jobId) => {\n\t\tif (this.state.loading) return;\n\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tconst job = await maintenanceActions.getJobByJobId(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tjobId,\n\t\t\t\t);\n\t\t\t\t// console.log('fetchJob', job?.data);\n\t\t\t\tthis.props.jobAdded(job.data);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"fetchJob error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tgetEmptyStateText() {\n\t\tif (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n\t\t\treturn this.props.options.EmptyText;\n\t\t}\n\t\treturn this.props.userCategory === \"staff\"\n\t\t\t? values.emptyRequestsStaff\n\t\t\t: values.emptyRequestsUser;\n\t}\n\n\tresetDataSource = (source = \"\") => {\n\t\tconst { searchText } = this.state;\n\t\tconst { jobs } = this.props;\n\n\t\tlet filteredList = jobs;\n\t\tlet jobIdMatch = null;\n\n\t\t// Client-side search filtering (search is not supported server-side)\n\t\tif (searchText) {\n\t\t\tjobIdMatch = _.find(jobs, (j) => j.jobId === searchText);\n\t\t\tfilteredList = jobs.filter((j) => {\n\t\t\t\tif (\n\t\t\t\t\tj.room &&\n\t\t\t\t\tj.room.toLowerCase().indexOf(searchText.toLowerCase()) > -1\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t\tif (!jobIdMatch) this.fetchJob(searchText);\n\t\t}\n\n\t\t// Note: status, priority, type, and assignee filters are applied server-side\n\t\t// via getJobs2, so no client-side filtering needed for those\n\n\t\tif (jobIdMatch) {\n\t\t\tconst jobIndex = filteredList.indexOf(jobIdMatch);\n\t\t\tif (jobIndex > -1) {\n\t\t\t\tfilteredList.splice(jobIndex, 1);\n\t\t\t}\n\t\t\tfilteredList.unshift(jobIdMatch);\n\t\t}\n\n\t\t// During a filter transition, don't clear the list until the API\n\t\t// response has arrived and been processed. This prevents the empty\n\t\t// state from flashing when jobs transiently drop to [].\n\t\tif (\n\t\t\tthis._filterApplying &&\n\t\t\t!this._filterDataReady &&\n\t\t\tfilteredList.length === 0\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState({ filteredList }, () => {\n\t\t\tif (this._filterDataReady) {\n\t\t\t\tthis._filterApplying = false;\n\t\t\t\tthis._filterDataReady = false;\n\t\t\t\tthis._showOverlay(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tonLoadingChanged = (loading, callback) => {\n\t\tthis.setState({ loading }, () => {\n\t\t\tif (this.props.onLoadingChanged)\n\t\t\t\tthis.props.onLoadingChanged(this.state.loading);\n\t\t\tif (callback) callback();\n\t\t});\n\t};\n\n\tonSearchText = (value) => {\n\t\tthis.setState({ searchText: value }, () => {\n\t\t\tif (_.isEmpty(this.state.searchText)) this.resetDataSource(\"search\");\n\t\t});\n\t};\n\n\tonSearchSubmit = () => {\n\t\tthis.resetDataSource(\"search\");\n\t};\n\n\tonToggleFilter = () => {\n\t\tthis.setState({ showFilterPopup: !this.state.showFilterPopup });\n\t};\n\n\tonSelectFilter = (selected) => {\n\t\tthis._filterApplying = true;\n\t\tthis._filterDataReady = false;\n\t\tthis._showOverlay(true);\n\t\tthis.props.jobsFilterLoaded(selected);\n\t\tthis.onToggleFilter();\n\t\t// Reset pagination but keep old list visible while loading\n\t\t// Pass filters directly to avoid stale props from async Redux update\n\t\tthis.setState({ lastKey: null, hasMore: true }, () => {\n\t\t\tthis.refresh(selected);\n\t\t});\n\t};\n\n\tgetFilterButtonText = () => {\n\t\tconst { jobfilters } = this.props;\n\t\tconst filterTexts = [];\n\t\tif (!_.isEmpty(jobfilters.status)) {\n\t\t\tfilterTexts.push(jobfilters.statusText);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.priority)) {\n\t\t\tfilterTexts.push(jobfilters.priorityText);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.type)) {\n\t\t\tfilterTexts.push(jobfilters.type);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.assignee)) {\n\t\t\tfilterTexts.push(jobfilters.assigneeName);\n\t\t}\n\t\tif (_.isEmpty(filterTexts)) {\n\t\t\treturn \"Filter\";\n\t\t}\n\t\treturn `Filtering by ${filterTexts.join(\", \")}`;\n\t};\n\n\thasFiltersActive() {\n\t\tconst { jobfilters } = this.props;\n\t\treturn (\n\t\t\t!_.isEmpty(jobfilters.status) ||\n\t\t\t!_.isEmpty(jobfilters.priority) ||\n\t\t\t!_.isEmpty(jobfilters.type) ||\n\t\t\t!_.isEmpty(jobfilters.assignee)\n\t\t);\n\t}\n\n\tclearFilters = () => {\n\t\tconst emptyFilters = {\n\t\t\tstatus: \"\",\n\t\t\tstatusText: \"\",\n\t\t\tpriority: \"\",\n\t\t\tpriorityText: \"\",\n\t\t\ttype: \"\",\n\t\t\tassignee: \"\",\n\t\t\tassigneeName: \"\",\n\t\t};\n\t\tthis.onSelectFilter(emptyFilters);\n\t};\n\n\trenderEmptyList() {\n\t\tif (this.state.loading || this._filterApplying) return null;\n\n\t\tconst hasFilters = this.hasFiltersActive();\n\n\t\treturn (\n\t\t\t<View style={{ marginHorizontal: 16, alignItems: \"center\" }}>\n\t\t\t\t<Components.EmptyStateMain\n\t\t\t\t\ttitle={\n\t\t\t\t\t\thasFilters\n\t\t\t\t\t\t\t? \"No requests match your filters\"\n\t\t\t\t\t\t\t: this.getEmptyStateText()\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t{hasFilters && (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tonPress={this.clearFilters}\n\t\t\t\t\t\tstyle={styles.clearFiltersButton}\n\t\t\t\t\t>\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.clearFiltersText,\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>\n\t\t\t\t\t\t\tClear filters\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderFilterButton() {\n\t\treturn (\n\t\t\t<TouchableOpacity onPress={this.onToggleFilter}>\n\t\t\t\t<View style={styles.filterButton}>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\tstyles.filterButtonText,\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\t\t{this.getFilterButtonText()}\n\t\t\t\t\t</Text>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trenderSearch() {\n\t\tif (!this.props.hasPermission) return null;\n\n\t\treturn (\n\t\t\t<View style={styles.searchContainer}>\n\t\t\t\t<Components.GenericInput\n\t\t\t\t\tplaceholder={`Search by ${values.textEntityName} ID or Address`}\n\t\t\t\t\tvalue={this.state.searchText}\n\t\t\t\t\tonChangeText={this.onSearchText}\n\t\t\t\t\tonSubmitEditing={this.onSearchSubmit}\n\t\t\t\t\tsquaredCorners\n\t\t\t\t\thasClear\n\t\t\t\t\t// keyboardType={'numeric'}\n\t\t\t\t\treturnKeyType={\"done\"}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderListHeader() {\n\t\tconst { ListHeaderComponent } = this.props;\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t{ListHeaderComponent ? (\n\t\t\t\t\tListHeaderComponent\n\t\t\t\t) : (\n\t\t\t\t\t<View style={{ height: 8 }} />\n\t\t\t\t)}\n\t\t\t\t{this.renderFilterButton()}\n\t\t\t\t{this.renderSearch()}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderList() {\n\t\tconst { filteredList } = this.state;\n\n\t\treturn (\n\t\t\t<FlatList\n\t\t\t\tkeyboardShouldPersistTaps=\"always\"\n\t\t\t\tstyle={{ flex: 1 }}\n\t\t\t\tcontentContainerStyle={{ paddingBottom: 16 }}\n\t\t\t\tdata={filteredList}\n\t\t\t\tkeyExtractor={(item) => item.id}\n\t\t\t\trenderItem={({ item }) => (\n\t\t\t\t\t<MaintenanceListItem style={this.props.itemStyle} job={item} />\n\t\t\t\t)}\n\t\t\t\tListEmptyComponent={this.renderEmptyList()}\n\t\t\t\tListHeaderComponent={this.renderListHeader()}\n\t\t\t\tListFooterComponent={this.renderListFooter()}\n\t\t\t\tonEndReached={this.loadMore}\n\t\t\t\tonEndReachedThreshold={0.5}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderListFooter = () => {\n\t\tif (!this.state.loadingMore) return null;\n\n\t\treturn (\n\t\t\t<View style={styles.loadingMore}>\n\t\t\t\t<Components.LoadingIndicator visible={true} />\n\t\t\t</View>\n\t\t);\n\t};\n\n\t_showOverlay = (visible) => {\n\t\tAnimated.timing(this._overlayOpacity, {\n\t\t\ttoValue: visible ? 1 : 0,\n\t\t\tduration: 200,\n\t\t\tuseNativeDriver: true,\n\t\t}).start();\n\t};\n\n\trenderFilterOverlay() {\n\t\tif (!this._filterApplying) return null;\n\n\t\treturn (\n\t\t\t<Animated.View\n\t\t\t\tstyle={[styles.filterOverlay, { opacity: this._overlayOpacity }]}\n\t\t\t\tpointerEvents=\"none\"\n\t\t\t>\n\t\t\t\t<View style={styles.filterOverlayInner}>\n\t\t\t\t\t<Components.LoadingCircles />\n\t\t\t\t</View>\n\t\t\t</Animated.View>\n\t\t);\n\t}\n\n\trenderFilterPopup() {\n\t\tconst { jobfilters } = this.props;\n\t\tconst { showFilterPopup, types } = this.state;\n\t\tif (!showFilterPopup) return null;\n\n\t\treturn (\n\t\t\t<FilterPopupMenu\n\t\t\t\tsite={this.props.site}\n\t\t\t\ttypes={types}\n\t\t\t\tstatus={jobfilters.status}\n\t\t\t\tpriority={jobfilters.priority}\n\t\t\t\tassignee={jobfilters.assignee}\n\t\t\t\ttype={jobfilters.type}\n\t\t\t\tonClose={this.onSelectFilter}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<View style={[styles.container, this.props.style]}>\n\t\t\t\t{this.renderList()}\n\t\t\t\t{this.renderFilterOverlay()}\n\t\t\t\t{this.renderFilterPopup()}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t\tbackgroundColor: \"#fff\",\n\t},\n\tfilterContainerOuter: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t\tpaddingHorizontal: 16,\n\t\tpaddingVertical: 16,\n\t},\n\tfilterTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 11,\n\t\tletterSpacing: 0.8,\n\t\tcolor: \"#4d4d4d\",\n\t},\n\tfilterContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tfilterText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tmarginRight: 6,\n\t},\n\tfilterIcon: {\n\t\tfontSize: 20,\n\t},\n\tsearchContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tpaddingBottom: 8,\n\t\tpaddingHorizontal: 16,\n\t},\n\tfilterButton: {\n\t\tpaddingBottom: 8,\n\t\tpaddingHorizontal: 16,\n\t\tflexDirection: \"row-reverse\",\n\t},\n\tfilterButtonText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t},\n\tloadingMore: {\n\t\tpaddingVertical: 20,\n\t\talignItems: \"center\",\n\t},\n\tclearFiltersButton: {\n\t\tmarginTop: 12,\n\t\tpaddingVertical: 10,\n\t\tpaddingHorizontal: 24,\n\t\tborderRadius: 8,\n\t\tborderWidth: 1,\n\t\tborderColor: \"#ccc\",\n\t\tbackgroundColor: \"#f9f9f9\",\n\t},\n\tclearFiltersText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 15,\n\t},\n\tfilterOverlay: {\n\t\t...StyleSheet.absoluteFillObject,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tbackgroundColor: \"rgba(255, 255, 255, 0.7)\",\n\t},\n\tfilterOverlayInner: {\n\t\tpadding: 20,\n\t\tborderRadius: 12,\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\tconst { user, notifications } = state;\n\tconst jobs = state[values.reducerKey];\n\tconst jobsOrdered = _.orderBy(jobs.jobs, [\"createdUnix\"], [\"desc\"]);\n\tconst hasPermission = _.includes(user.permissions, \"maintenanceTracking\");\n\n\treturn {\n\t\thasPermission,\n\t\tjobs: jobsOrdered,\n\t\tsite: user.site,\n\t\tuserCategory: user.category,\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tdataUpdated: notifications.dataUpdated[values.updateKey],\n\t\tstatusTypes: state[values.reducerKey].jobstatuses,\n\t\tjobfilters: state[values.reducerKey].jobfilters || {},\n\t};\n};\n\nexport default connect(\n\tmapStateToProps,\n\t{\n\t\tjobsLoaded,\n\t\tjobAdded,\n\t\tjobsAdded,\n\t\tjobStatusesUpdate,\n\t\tjobHideSeenUpdate,\n\t\tjobsFilterLoaded,\n\t},\n\tnull,\n\t{\n\t\tforwardRef: true,\n\t},\n)(MaintenanceList);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,7 +2,8 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
|
|
|
2
2
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
3
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
4
|
import React, { Component } from "react";
|
|
5
|
-
import { Image,
|
|
5
|
+
import { Image, TouchableOpacity, View, StyleSheet } from "react-native";
|
|
6
|
+
import { Text } from "@plusscommunities/pluss-core-app/components";
|
|
6
7
|
import _ from "lodash";
|
|
7
8
|
import { Icon } from "@rneui/themed";
|
|
8
9
|
import { connect } from "react-redux";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","Image","Text","TouchableOpacity","View","StyleSheet","_","Icon","connect","moment","getJobStatus","getJobPriority","Services","Helper","Colours","values","MaintenanceListItem","constructor","args","_defineProperty","navigation","navigate","screenRequestDetail","job","props","renderCommentCount","commentCount","createElement","style","styles","commentCountContainer","commentCountText","renderDescription","isEmpty","description","jobDescriptionText","renderSeen","hideSeen","showSeen","status","text","seen","jobSeenContainer","name","type","iconStyle","jobSeenIcon","color","colourBrandingMain","jobSeenText","render","createdTime","createdUnix","createdTimeText","format","assigneeText","Assignee","displayName","priority","isStaff","user","category","onPress","onPressJob","jobContainer","jobInnerContainer","jobTopSection","jobTopLeft","jobId","jobIdText","textEntityName","jobTitleText","title","room","jobLocationText","jobTypeSeenContainer","jobTypeContainer","backgroundColor","hexToRGBAstring","jobTypeText","numberOfLines","jobTopRight","jobCommentImage","source","require","jobBottomSection","jobCreatedText","jobActivityContainer","jobStatusContainer","jobStatusText","jobStatusLine","borderColor","jobStatusLineMask","jobStatusCircle","jobStatusDateText","jobPriorityContainer","jobPriorityText","label","create","marginVertical","paddingHorizontal","getShadowStyle","flexDirection","alignItems","paddingVertical","borderBottomWidth","borderBottomColor","LINEGREY","flex","fontFamily","fontSize","marginBottom","TEXT_DARK","TEXT_LIGHT","marginTop","padding","minWidth","maxWidth","borderRadius","justifyContent","textAlign","marginLeft","paddingTop","width","height","resizeMode","position","top","right","borderWidth","COLOUR_GREEN","jobStatusIcon","borderStyle","left","zIndex","mapStateToProps","state","getMainBrandingColourFromState","statusTypes","reducerKey","jobstatuses"],"sources":["MaintenanceListItem.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Image, Text, TouchableOpacity, View, StyleSheet } from \"react-native\";\nimport _ from \"lodash\";\nimport { Icon } from \"@rneui/themed\";\nimport { connect } from \"react-redux\";\nimport moment from \"moment\";\nimport { getJobStatus, getJobPriority } from \"../helper\";\nimport { Services } from \"../feature.config\";\nimport { Helper, Colours } from \"../core.config\";\nimport { values } from \"../values.config\";\n\nclass MaintenanceListItem extends Component {\n\tonPressJob = () => {\n\t\tServices.navigation.navigate(values.screenRequestDetail, {\n\t\t\tjob: this.props.job,\n\t\t});\n\t};\n\n\trenderCommentCount() {\n\t\tconst { job } = this.props;\n\t\tif (!job.commentCount) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\t<View style={styles.commentCountContainer}>\n\t\t\t\t<Text style={styles.commentCountText}>\n\t\t\t\t\t{job.commentCount > 99 ? \"99\" : job.commentCount}\n\t\t\t\t</Text>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderDescription() {\n\t\tconst { job } = this.props;\n\t\tif (_.isEmpty(job.description)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn <Text style={styles.jobDescriptionText}>{job.description}</Text>;\n\t}\n\n\trenderSeen() {\n\t\tconst { job, hideSeen } = this.props;\n\t\tconst showSeen =\n\t\t\t!job.status || job.status === getJobStatus(null, this.props).text;\n\t\tif (hideSeen || !showSeen || !job.seen) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\t<View style={styles.jobSeenContainer}>\n\t\t\t\t<Icon\n\t\t\t\t\tname=\"check\"\n\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\tstyles.jobSeenIcon,\n\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t]}\n\t\t\t\t/>\n\t\t\t\t<Text\n\t\t\t\t\tstyle={[styles.jobSeenText, { color: this.props.colourBrandingMain }]}\n\t\t\t\t>\n\t\t\t\t\tSeen\n\t\t\t\t</Text>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trender() {\n\t\tconst { job } = this.props;\n\t\tconst createdTime = moment(job.createdUnix);\n\t\tconst createdTimeText = `${createdTime.format(\"ddd, D MMMM\")} • ${createdTime.format(\"h:mma\")}`;\n\t\tconst assigneeText = job.Assignee\n\t\t\t? `Assigned to\\n${job.Assignee.displayName}`\n\t\t\t: \"\";\n\t\tconst status = getJobStatus(job.status, this.props);\n\t\tconst priority = getJobPriority(job.priority);\n\t\tconst isStaff = this.props.user.category === \"staff\";\n\n\t\treturn (\n\t\t\t<TouchableOpacity onPress={this.onPressJob}>\n\t\t\t\t<View style={[styles.jobContainer, this.props.style]}>\n\t\t\t\t\t<View style={styles.jobInnerContainer}>\n\t\t\t\t\t\t<View style={styles.jobTopSection}>\n\t\t\t\t\t\t\t<View style={styles.jobTopLeft}>\n\t\t\t\t\t\t\t\t{job.jobId ? (\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\t\tstyles.jobIdText,\n\t\t\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\t>{`${values.textEntityName} #${job.jobId}`}</Text>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t<Text style={styles.jobTitleText}>{job.title}</Text>\n\t\t\t\t\t\t\t\t{job.room ? (\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobLocationText}>{job.room}</Text>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t<View style={styles.jobTypeSeenContainer}>\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.jobTypeContainer,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: Colours.hexToRGBAstring(\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.props.colourBrandingMain,\n\t\t\t\t\t\t\t\t\t\t\t\t\t0.2,\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t},\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<Text\n\t\t\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\t\t\tstyles.jobTypeText,\n\t\t\t\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\t\t\tnumberOfLines={2}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{job.type}\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\t{this.renderSeen()}\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t<View style={styles.jobTopRight}>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tstyle={styles.jobCommentImage}\n\t\t\t\t\t\t\t\t\tsource={require(\"../images/speechbubble.png\")}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{this.renderCommentCount()}\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<View style={styles.jobBottomSection}>\n\t\t\t\t\t\t\t{/* {this.renderDescription()} */}\n\t\t\t\t\t\t\t<Text style={styles.jobCreatedText}>{createdTimeText}</Text>\n\t\t\t\t\t\t\t<View style={styles.jobActivityContainer}>\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: status?.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{/* <Icon name=\"wrench\" type=\"font-awesome\" iconStyle={styles.jobStatusIcon} /> */}\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobStatusText}>{status?.text}</Text>\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tstyle={[styles.jobStatusLine, { borderColor: status?.color }]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<View style={styles.jobStatusLineMask} />\n\t\t\t\t\t\t\t\t</View>\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.jobStatusCircle,\n\t\t\t\t\t\t\t\t\t\t{ backgroundColor: status?.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<Text style={styles.jobStatusDateText}>{assigneeText}</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t{isStaff && (\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.jobPriorityContainer,\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.jobPriorityText}>{priority.label}</Text>\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tjobContainer: {\n\t\tmarginVertical: 8,\n\t\tpaddingHorizontal: 16,\n\t},\n\tjobInnerContainer: {\n\t\t...Helper.getShadowStyle(),\n\t},\n\tjobTopSection: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"flex-end\",\n\t\tpaddingHorizontal: 10,\n\t\tpaddingVertical: 10,\n\t\tborderBottomWidth: 1,\n\t\tborderBottomColor: Colours.LINEGREY,\n\t},\n\tjobTopLeft: {\n\t\tflex: 1,\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: 18,\n\t\tcolor: Colours.TEXT_DARK,\n\t\tmarginBottom: 4,\n\t},\n\tjobLocationText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 12,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t\tmarginBottom: 4,\n\t},\n\tjobTypeSeenContainer: {\n\t\tmarginTop: 4,\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\tjobTopRight: {\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tpaddingHorizontal: 10,\n\t\tpaddingTop: 10,\n\t},\n\tjobCommentImage: {\n\t\twidth: 34,\n\t\theight: 34,\n\t\tresizeMode: \"contain\",\n\t},\n\tcommentCountContainer: {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tright: 0,\n\t\tborderRadius: 10,\n\t\tborderWidth: 2,\n\t\tborderColor: \"#fff\",\n\t\twidth: 20,\n\t\theight: 20,\n\t\tbackgroundColor: Colours.COLOUR_GREEN,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t},\n\tcommentCountText: {\n\t\ttextAlign: \"center\",\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 10,\n\t\tcolor: \"#fff\",\n\t},\n\tjobBottomSection: {\n\t\tpaddingHorizontal: 10,\n\t\tpaddingVertical: 16,\n\t},\n\tjobDescriptionText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARK,\n\t\tmarginBottom: 8,\n\t},\n\tjobCreatedText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 12,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t\tmarginBottom: 10,\n\t},\n\tjobActivityContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tjobStatusContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\twidth: 105,\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},\n\tjobStatusText: {\n\t\tcolor: \"#fff\",\n\t\ttextAlign: \"center\",\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 13,\n\t},\n\tjobStatusLine: {\n\t\tborderWidth: 1,\n\t\tborderStyle: \"dashed\",\n\t\twidth: 30,\n\t},\n\tjobStatusLineMask: {\n\t\tposition: \"absolute\",\n\t\tleft: -1,\n\t\ttop: -1,\n\t\twidth: \"100%\",\n\t\theight: 1,\n\t\tbackgroundColor: \"#fff\",\n\t\tzIndex: 1,\n\t},\n\tjobStatusCircle: {\n\t\twidth: 18,\n\t\theight: 18,\n\t\tborderRadius: 9,\n\t},\n\tjobStatusDateText: {\n\t\tflex: 1,\n\t\ttextAlign: \"right\",\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARK,\n\t},\n\tjobPriorityContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\twidth: 105,\n\t\theight: 24,\n\t\tpaddingHorizontal: 8,\n\t\tborderRadius: 4,\n\t\tmarginTop: 8,\n\t},\n\tjobPriorityText: {\n\t\tcolor: \"#fff\",\n\t\ttextAlign: \"center\",\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 13,\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\treturn {\n\t\tuser: state.user,\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tstatusTypes: state[values.reducerKey].jobstatuses,\n\t\thideSeen: state[values.reducerKey].hideSeen,\n\t};\n};\n\nexport default connect(mapStateToProps, {})(MaintenanceListItem);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Component","Image","TouchableOpacity","View","StyleSheet","Text","_","Icon","connect","moment","getJobStatus","getJobPriority","Services","Helper","Colours","values","MaintenanceListItem","constructor","args","_defineProperty","navigation","navigate","screenRequestDetail","job","props","renderCommentCount","commentCount","createElement","style","styles","commentCountContainer","commentCountText","renderDescription","isEmpty","description","jobDescriptionText","renderSeen","hideSeen","showSeen","status","text","seen","jobSeenContainer","name","type","iconStyle","jobSeenIcon","color","colourBrandingMain","jobSeenText","render","createdTime","createdUnix","createdTimeText","format","assigneeText","Assignee","displayName","priority","isStaff","user","category","onPress","onPressJob","jobContainer","jobInnerContainer","jobTopSection","jobTopLeft","jobId","jobIdText","textEntityName","jobTitleText","title","room","jobLocationText","jobTypeSeenContainer","jobTypeContainer","backgroundColor","hexToRGBAstring","jobTypeText","numberOfLines","jobTopRight","jobCommentImage","source","require","jobBottomSection","jobCreatedText","jobActivityContainer","jobStatusContainer","jobStatusText","jobStatusLine","borderColor","jobStatusLineMask","jobStatusCircle","jobStatusDateText","jobPriorityContainer","jobPriorityText","label","create","marginVertical","paddingHorizontal","getShadowStyle","flexDirection","alignItems","paddingVertical","borderBottomWidth","borderBottomColor","LINEGREY","flex","fontFamily","fontSize","marginBottom","TEXT_DARK","TEXT_LIGHT","marginTop","padding","minWidth","maxWidth","borderRadius","justifyContent","textAlign","marginLeft","paddingTop","width","height","resizeMode","position","top","right","borderWidth","COLOUR_GREEN","jobStatusIcon","borderStyle","left","zIndex","mapStateToProps","state","getMainBrandingColourFromState","statusTypes","reducerKey","jobstatuses"],"sources":["MaintenanceListItem.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Image, TouchableOpacity, View, StyleSheet } from \"react-native\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport _ from \"lodash\";\nimport { Icon } from \"@rneui/themed\";\nimport { connect } from \"react-redux\";\nimport moment from \"moment\";\nimport { getJobStatus, getJobPriority } from \"../helper\";\nimport { Services } from \"../feature.config\";\nimport { Helper, Colours } from \"../core.config\";\nimport { values } from \"../values.config\";\n\nclass MaintenanceListItem extends Component {\n\tonPressJob = () => {\n\t\tServices.navigation.navigate(values.screenRequestDetail, {\n\t\t\tjob: this.props.job,\n\t\t});\n\t};\n\n\trenderCommentCount() {\n\t\tconst { job } = this.props;\n\t\tif (!job.commentCount) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\t<View style={styles.commentCountContainer}>\n\t\t\t\t<Text style={styles.commentCountText}>\n\t\t\t\t\t{job.commentCount > 99 ? \"99\" : job.commentCount}\n\t\t\t\t</Text>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderDescription() {\n\t\tconst { job } = this.props;\n\t\tif (_.isEmpty(job.description)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn <Text style={styles.jobDescriptionText}>{job.description}</Text>;\n\t}\n\n\trenderSeen() {\n\t\tconst { job, hideSeen } = this.props;\n\t\tconst showSeen =\n\t\t\t!job.status || job.status === getJobStatus(null, this.props).text;\n\t\tif (hideSeen || !showSeen || !job.seen) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\t<View style={styles.jobSeenContainer}>\n\t\t\t\t<Icon\n\t\t\t\t\tname=\"check\"\n\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\tstyles.jobSeenIcon,\n\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t]}\n\t\t\t\t/>\n\t\t\t\t<Text\n\t\t\t\t\tstyle={[styles.jobSeenText, { color: this.props.colourBrandingMain }]}\n\t\t\t\t>\n\t\t\t\t\tSeen\n\t\t\t\t</Text>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trender() {\n\t\tconst { job } = this.props;\n\t\tconst createdTime = moment(job.createdUnix);\n\t\tconst createdTimeText = `${createdTime.format(\"ddd, D MMMM\")} • ${createdTime.format(\"h:mma\")}`;\n\t\tconst assigneeText = job.Assignee\n\t\t\t? `Assigned to\\n${job.Assignee.displayName}`\n\t\t\t: \"\";\n\t\tconst status = getJobStatus(job.status, this.props);\n\t\tconst priority = getJobPriority(job.priority);\n\t\tconst isStaff = this.props.user.category === \"staff\";\n\n\t\treturn (\n\t\t\t<TouchableOpacity onPress={this.onPressJob}>\n\t\t\t\t<View style={[styles.jobContainer, this.props.style]}>\n\t\t\t\t\t<View style={styles.jobInnerContainer}>\n\t\t\t\t\t\t<View style={styles.jobTopSection}>\n\t\t\t\t\t\t\t<View style={styles.jobTopLeft}>\n\t\t\t\t\t\t\t\t{job.jobId ? (\n\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\t\tstyles.jobIdText,\n\t\t\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\t>{`${values.textEntityName} #${job.jobId}`}</Text>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t<Text style={styles.jobTitleText}>{job.title}</Text>\n\t\t\t\t\t\t\t\t{job.room ? (\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobLocationText}>{job.room}</Text>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t<View style={styles.jobTypeSeenContainer}>\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.jobTypeContainer,\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: Colours.hexToRGBAstring(\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.props.colourBrandingMain,\n\t\t\t\t\t\t\t\t\t\t\t\t\t0.2,\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t},\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<Text\n\t\t\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\t\t\tstyles.jobTypeText,\n\t\t\t\t\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\t\t\tnumberOfLines={2}\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{job.type}\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\t{this.renderSeen()}\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t<View style={styles.jobTopRight}>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tstyle={styles.jobCommentImage}\n\t\t\t\t\t\t\t\t\tsource={require(\"../images/speechbubble.png\")}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t{this.renderCommentCount()}\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<View style={styles.jobBottomSection}>\n\t\t\t\t\t\t\t{/* {this.renderDescription()} */}\n\t\t\t\t\t\t\t<Text style={styles.jobCreatedText}>{createdTimeText}</Text>\n\t\t\t\t\t\t\t<View style={styles.jobActivityContainer}>\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: status?.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{/* <Icon name=\"wrench\" type=\"font-awesome\" iconStyle={styles.jobStatusIcon} /> */}\n\t\t\t\t\t\t\t\t\t<Text style={styles.jobStatusText}>{status?.text}</Text>\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tstyle={[styles.jobStatusLine, { borderColor: status?.color }]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<View style={styles.jobStatusLineMask} />\n\t\t\t\t\t\t\t\t</View>\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.jobStatusCircle,\n\t\t\t\t\t\t\t\t\t\t{ backgroundColor: status?.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<Text style={styles.jobStatusDateText}>{assigneeText}</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t{isStaff && (\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.jobPriorityContainer,\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.jobPriorityText}>{priority.label}</Text>\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tjobContainer: {\n\t\tmarginVertical: 8,\n\t\tpaddingHorizontal: 16,\n\t},\n\tjobInnerContainer: {\n\t\t...Helper.getShadowStyle(),\n\t},\n\tjobTopSection: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"flex-end\",\n\t\tpaddingHorizontal: 10,\n\t\tpaddingVertical: 10,\n\t\tborderBottomWidth: 1,\n\t\tborderBottomColor: Colours.LINEGREY,\n\t},\n\tjobTopLeft: {\n\t\tflex: 1,\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: 18,\n\t\tcolor: Colours.TEXT_DARK,\n\t\tmarginBottom: 4,\n\t},\n\tjobLocationText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 12,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t\tmarginBottom: 4,\n\t},\n\tjobTypeSeenContainer: {\n\t\tmarginTop: 4,\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\tjobTopRight: {\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tpaddingHorizontal: 10,\n\t\tpaddingTop: 10,\n\t},\n\tjobCommentImage: {\n\t\twidth: 34,\n\t\theight: 34,\n\t\tresizeMode: \"contain\",\n\t},\n\tcommentCountContainer: {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tright: 0,\n\t\tborderRadius: 10,\n\t\tborderWidth: 2,\n\t\tborderColor: \"#fff\",\n\t\twidth: 20,\n\t\theight: 20,\n\t\tbackgroundColor: Colours.COLOUR_GREEN,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t},\n\tcommentCountText: {\n\t\ttextAlign: \"center\",\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 10,\n\t\tcolor: \"#fff\",\n\t},\n\tjobBottomSection: {\n\t\tpaddingHorizontal: 10,\n\t\tpaddingVertical: 16,\n\t},\n\tjobDescriptionText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARK,\n\t\tmarginBottom: 8,\n\t},\n\tjobCreatedText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 12,\n\t\tcolor: Colours.TEXT_LIGHT,\n\t\tmarginBottom: 10,\n\t},\n\tjobActivityContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tjobStatusContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\twidth: 105,\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},\n\tjobStatusText: {\n\t\tcolor: \"#fff\",\n\t\ttextAlign: \"center\",\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 13,\n\t},\n\tjobStatusLine: {\n\t\tborderWidth: 1,\n\t\tborderStyle: \"dashed\",\n\t\twidth: 30,\n\t},\n\tjobStatusLineMask: {\n\t\tposition: \"absolute\",\n\t\tleft: -1,\n\t\ttop: -1,\n\t\twidth: \"100%\",\n\t\theight: 1,\n\t\tbackgroundColor: \"#fff\",\n\t\tzIndex: 1,\n\t},\n\tjobStatusCircle: {\n\t\twidth: 18,\n\t\theight: 18,\n\t\tborderRadius: 9,\n\t},\n\tjobStatusDateText: {\n\t\tflex: 1,\n\t\ttextAlign: \"right\",\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARK,\n\t},\n\tjobPriorityContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\twidth: 105,\n\t\theight: 24,\n\t\tpaddingHorizontal: 8,\n\t\tborderRadius: 4,\n\t\tmarginTop: 8,\n\t},\n\tjobPriorityText: {\n\t\tcolor: \"#fff\",\n\t\ttextAlign: \"center\",\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 13,\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\treturn {\n\t\tuser: state.user,\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tstatusTypes: state[values.reducerKey].jobstatuses,\n\t\thideSeen: state[values.reducerKey].hideSeen,\n\t};\n};\n\nexport default connect(mapStateToProps, {})(MaintenanceListItem);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,7 +2,8 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
|
|
|
2
2
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
3
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
4
|
import React, { Component } from "react";
|
|
5
|
-
import {
|
|
5
|
+
import { View, StyleSheet, TouchableOpacity } from "react-native";
|
|
6
|
+
import { Text } from "@plusscommunities/pluss-core-app/components";
|
|
6
7
|
import { connect } from "react-redux";
|
|
7
8
|
import { Icon } from "@rneui/themed";
|
|
8
9
|
import moment from "moment";
|