@plusscommunities/pluss-maintenance-app 2.1.4 → 2.2.2-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/actions/JobActions.js +7 -1
- package/dist/module/actions/JobActions.js.map +1 -1
- package/dist/module/actions/types.js +1 -0
- package/dist/module/actions/types.js.map +1 -1
- package/dist/module/apis/generalActions.js +17 -3
- package/dist/module/apis/generalActions.js.map +1 -1
- package/dist/module/components/FilterPopupMenu.js +249 -0
- package/dist/module/components/FilterPopupMenu.js.map +1 -0
- package/dist/module/components/MaintenanceList.js +165 -65
- package/dist/module/components/MaintenanceList.js.map +1 -1
- package/dist/module/components/MaintenanceListItem.js +23 -5
- package/dist/module/components/MaintenanceListItem.js.map +1 -1
- package/dist/module/reducers/JobsReducer.js +14 -1
- package/dist/module/reducers/JobsReducer.js.map +1 -1
- package/package.json +2 -2
- package/src/actions/JobActions.js +8 -1
- package/src/actions/types.js +1 -0
- package/src/apis/generalActions.js +10 -3
- package/src/components/FilterPopupMenu.js +224 -0
- package/src/components/MaintenanceList.js +129 -54
- package/src/components/MaintenanceListItem.js +17 -3
- package/src/reducers/JobsReducer.js +8 -1
@@ -2,25 +2,36 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
2
2
|
|
3
3
|
import React, { Component } from 'react';
|
4
4
|
import { View, StyleSheet, FlatList, TouchableOpacity, Text } from 'react-native';
|
5
|
-
import { Icon } from 'react-native-elements';
|
6
5
|
import _ from 'lodash';
|
7
6
|
import { connect } from 'react-redux';
|
8
7
|
import { generalActions } from '../apis';
|
9
|
-
import { jobsLoaded } from '../actions';
|
8
|
+
import { jobsLoaded, jobAdded, jobsAdded } from '../actions';
|
10
9
|
import MaintenanceListItem from '../components/MaintenanceListItem';
|
11
|
-
import
|
12
|
-
import { Components, Colours, Config } from '../core.config';
|
13
|
-
const SHOW_ALL_STATUS = 'Show All';
|
10
|
+
import FilterPopupMenu from './FilterPopupMenu';
|
11
|
+
import { Components, Colours, Config, Helper } from '../core.config';
|
14
12
|
|
15
13
|
class MaintenanceList extends Component {
|
16
14
|
constructor(props) {
|
15
|
+
var _this;
|
16
|
+
|
17
17
|
super(props);
|
18
|
+
_this = this;
|
18
19
|
|
19
20
|
_defineProperty(this, "refresh", () => {
|
20
21
|
this.onLoadingChanged(true, async () => {
|
21
22
|
try {
|
22
|
-
const
|
23
|
-
|
23
|
+
const {
|
24
|
+
selectedStatus,
|
25
|
+
selectedType
|
26
|
+
} = this.state; // console.log('filters', { selectedStatus, selectedType });
|
27
|
+
|
28
|
+
const res = await generalActions.getJobs(this.props.site, selectedStatus, selectedType); // console.log('refresh', res?.data);
|
29
|
+
|
30
|
+
if (selectedStatus || selectedType) {
|
31
|
+
this.props.jobsAdded(res.data);
|
32
|
+
} else {
|
33
|
+
this.props.jobsLoaded(res.data);
|
34
|
+
}
|
24
35
|
} catch (error) {
|
25
36
|
console.log('refresh error', error);
|
26
37
|
} finally {
|
@@ -29,6 +40,67 @@ class MaintenanceList extends Component {
|
|
29
40
|
});
|
30
41
|
});
|
31
42
|
|
43
|
+
_defineProperty(this, "refreshTypes", async () => {
|
44
|
+
const {
|
45
|
+
data
|
46
|
+
} = await generalActions.getJobTypes(Helper.getSite(this.props.site));
|
47
|
+
const types = data.map(t => {
|
48
|
+
return {
|
49
|
+
label: t.typeName,
|
50
|
+
value: t.typeName
|
51
|
+
};
|
52
|
+
});
|
53
|
+
types.splice(0, 0, {
|
54
|
+
label: 'All',
|
55
|
+
value: ''
|
56
|
+
}); // console.log('refreshTypes', types);
|
57
|
+
|
58
|
+
this.setState({
|
59
|
+
types
|
60
|
+
});
|
61
|
+
});
|
62
|
+
|
63
|
+
_defineProperty(this, "fetchJob", jobId => {
|
64
|
+
if (this.state.loading) return;
|
65
|
+
this.onLoadingChanged(true, async () => {
|
66
|
+
try {
|
67
|
+
const job = await generalActions.getJobByJobId(this.props.site, jobId); // console.log('fetchJob', job?.data);
|
68
|
+
|
69
|
+
this.props.jobAdded(job.data);
|
70
|
+
} catch (error) {
|
71
|
+
console.log('fetchJob error', error);
|
72
|
+
} finally {
|
73
|
+
this.onLoadingChanged(false);
|
74
|
+
}
|
75
|
+
});
|
76
|
+
});
|
77
|
+
|
78
|
+
_defineProperty(this, "resetDataSource", function () {
|
79
|
+
let source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
80
|
+
const {
|
81
|
+
searchText,
|
82
|
+
selectedStatus,
|
83
|
+
selectedType
|
84
|
+
} = _this.state;
|
85
|
+
const {
|
86
|
+
jobs
|
87
|
+
} = _this.props;
|
88
|
+
let filteredList = jobs;
|
89
|
+
|
90
|
+
if (searchText) {
|
91
|
+
filteredList = jobs.filter(j => j.jobId === searchText);
|
92
|
+
if (filteredList.length === 0) _this.fetchJob(searchText);
|
93
|
+
} else {
|
94
|
+
if (selectedStatus) filteredList = filteredList.filter(j => selectedStatus.includes(j.status));
|
95
|
+
if (selectedType) filteredList = filteredList.filter(j => selectedType.includes(j.type));
|
96
|
+
if (source !== 'search') _this.refresh();
|
97
|
+
}
|
98
|
+
|
99
|
+
_this.setState({
|
100
|
+
filteredList
|
101
|
+
});
|
102
|
+
});
|
103
|
+
|
32
104
|
_defineProperty(this, "onLoadingChanged", (loading, callback) => {
|
33
105
|
this.setState({
|
34
106
|
loading
|
@@ -38,45 +110,54 @@ class MaintenanceList extends Component {
|
|
38
110
|
});
|
39
111
|
});
|
40
112
|
|
41
|
-
_defineProperty(this, "
|
113
|
+
_defineProperty(this, "onSearchText", value => {
|
42
114
|
this.setState({
|
43
|
-
|
115
|
+
searchText: value
|
116
|
+
}, () => {
|
117
|
+
if (_.isEmpty(this.state.searchText)) this.resetDataSource('search');
|
44
118
|
});
|
45
119
|
});
|
46
120
|
|
47
|
-
_defineProperty(this, "
|
121
|
+
_defineProperty(this, "onSearchSubmit", () => {
|
122
|
+
this.resetDataSource('search');
|
123
|
+
});
|
124
|
+
|
125
|
+
_defineProperty(this, "onToggleFilter", () => {
|
48
126
|
this.setState({
|
49
|
-
|
127
|
+
showFilterPopup: !this.state.showFilterPopup
|
50
128
|
});
|
51
129
|
});
|
52
130
|
|
53
|
-
_defineProperty(this, "
|
131
|
+
_defineProperty(this, "onSelectFilter", selected => {
|
54
132
|
this.setState({
|
55
|
-
|
56
|
-
|
133
|
+
selectedStatus: selected.status,
|
134
|
+
selectedType: selected.type
|
135
|
+
}, () => {
|
136
|
+
this.resetDataSource();
|
137
|
+
this.onToggleFilter();
|
57
138
|
});
|
58
139
|
});
|
59
140
|
|
60
141
|
this.state = {
|
142
|
+
types: [],
|
143
|
+
filteredList: props.jobs,
|
61
144
|
loading: false,
|
62
|
-
|
63
|
-
|
145
|
+
searchText: '',
|
146
|
+
showFilterPopup: false,
|
147
|
+
selectedStatus: props.hasPermission ? 'Unassigned|In Progress' : '',
|
148
|
+
selectedType: ''
|
64
149
|
};
|
65
150
|
}
|
66
151
|
|
67
152
|
componentDidMount() {
|
68
153
|
this.refresh();
|
154
|
+
this.refreshTypes();
|
155
|
+
this.resetDataSource();
|
69
156
|
}
|
70
157
|
|
71
158
|
componentDidUpdate(prevProps) {
|
72
|
-
if (!_.isEqual(prevProps.statuses, this.props.statuses) && !this.props.statuses.includes(this.state.selectedStatus)) {
|
73
|
-
// Reset selected status if not exists
|
74
|
-
this.setState({
|
75
|
-
selectedStatus: SHOW_ALL_STATUS
|
76
|
-
});
|
77
|
-
}
|
78
|
-
|
79
159
|
if (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();
|
160
|
+
if (!_.isEqual(prevProps.jobs, this.props.jobs)) this.resetDataSource();
|
80
161
|
}
|
81
162
|
|
82
163
|
getEmptyStateText() {
|
@@ -96,43 +177,42 @@ class MaintenanceList extends Component {
|
|
96
177
|
});
|
97
178
|
}
|
98
179
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
if (((_this$props$statuses = this.props.statuses) === null || _this$props$statuses === void 0 ? void 0 : _this$props$statuses.length) <= 1) return;
|
103
|
-
return /*#__PURE__*/React.createElement(View, {
|
104
|
-
style: styles.filterContainerOuter
|
105
|
-
}, /*#__PURE__*/React.createElement(Text, {
|
106
|
-
style: styles.filterTitle
|
107
|
-
}, "FILTER"), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
108
|
-
onPress: this.onPressFilter
|
180
|
+
renderFilterButton() {
|
181
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
182
|
+
onPress: this.onToggleFilter
|
109
183
|
}, /*#__PURE__*/React.createElement(View, {
|
110
|
-
style: styles.
|
184
|
+
style: styles.filterButton
|
111
185
|
}, /*#__PURE__*/React.createElement(Text, {
|
112
|
-
style: [styles.
|
186
|
+
style: [styles.filterButtonText, {
|
113
187
|
color: this.props.colourBrandingMain
|
114
188
|
}]
|
115
|
-
},
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
189
|
+
}, "Filter")));
|
190
|
+
}
|
191
|
+
|
192
|
+
renderSearch() {
|
193
|
+
if (!this.props.hasPermission) return null;
|
194
|
+
return /*#__PURE__*/React.createElement(View, {
|
195
|
+
style: styles.searchContainer
|
196
|
+
}, /*#__PURE__*/React.createElement(Components.GenericInput, {
|
197
|
+
placeholder: "Search by Job ID",
|
198
|
+
value: this.state.searchText,
|
199
|
+
onChangeText: this.onSearchText,
|
200
|
+
onSubmitEditing: this.onSearchSubmit,
|
201
|
+
squaredCorners: true,
|
202
|
+
hasClear: true,
|
203
|
+
keyboardType: 'numeric',
|
204
|
+
returnKeyType: 'done'
|
205
|
+
}));
|
122
206
|
}
|
123
207
|
|
124
208
|
renderListHeader() {
|
125
|
-
return /*#__PURE__*/React.createElement(View, null, this.props.ListHeaderComponent, this.
|
209
|
+
return /*#__PURE__*/React.createElement(View, null, this.props.ListHeaderComponent, this.renderFilterButton(), this.renderSearch());
|
126
210
|
}
|
127
211
|
|
128
212
|
renderList() {
|
129
213
|
const {
|
130
|
-
|
214
|
+
filteredList
|
131
215
|
} = this.state;
|
132
|
-
const {
|
133
|
-
jobs
|
134
|
-
} = this.props;
|
135
|
-
const filteredList = selectedStatus === SHOW_ALL_STATUS ? jobs : jobs.filter(job => job.status === selectedStatus);
|
136
216
|
return /*#__PURE__*/React.createElement(FlatList, {
|
137
217
|
keyboardShouldPersistTaps: "always",
|
138
218
|
style: {
|
@@ -155,26 +235,29 @@ class MaintenanceList extends Component {
|
|
155
235
|
ListEmptyComponent: this.renderEmptyList(),
|
156
236
|
ListHeaderComponent: this.renderListHeader()
|
157
237
|
});
|
158
|
-
}
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
238
|
+
}
|
239
|
+
|
240
|
+
renderFilterPopup() {
|
241
|
+
const {
|
242
|
+
showFilterPopup,
|
243
|
+
types,
|
244
|
+
selectedStatus,
|
245
|
+
selectedType
|
246
|
+
} = this.state;
|
247
|
+
if (!showFilterPopup) return null;
|
248
|
+
return /*#__PURE__*/React.createElement(FilterPopupMenu, {
|
249
|
+
site: this.props.site,
|
250
|
+
types: types,
|
251
|
+
status: selectedStatus,
|
252
|
+
type: selectedType,
|
253
|
+
onClose: this.onSelectFilter
|
171
254
|
});
|
172
255
|
}
|
173
256
|
|
174
257
|
render() {
|
175
258
|
return /*#__PURE__*/React.createElement(View, {
|
176
259
|
style: [styles.container, this.props.style]
|
177
|
-
}, this.renderList());
|
260
|
+
}, this.renderList(), this.renderFilterPopup());
|
178
261
|
}
|
179
262
|
|
180
263
|
}
|
@@ -208,6 +291,21 @@ const styles = StyleSheet.create({
|
|
208
291
|
},
|
209
292
|
filterIcon: {
|
210
293
|
fontSize: 20
|
294
|
+
},
|
295
|
+
searchContainer: {
|
296
|
+
flexDirection: 'row',
|
297
|
+
alignItems: 'center',
|
298
|
+
paddingBottom: 8,
|
299
|
+
paddingHorizontal: 16
|
300
|
+
},
|
301
|
+
filterButton: {
|
302
|
+
position: 'absolute',
|
303
|
+
right: 20,
|
304
|
+
top: -32
|
305
|
+
},
|
306
|
+
filterButtonText: {
|
307
|
+
fontFamily: 'sf-semibold',
|
308
|
+
fontSize: 16
|
211
309
|
}
|
212
310
|
});
|
213
311
|
|
@@ -220,11 +318,11 @@ const mapStateToProps = state => {
|
|
220
318
|
|
221
319
|
const jobsOrdered = _.orderBy(jobs.jobs, ['createdUnix'], ['desc']);
|
222
320
|
|
223
|
-
const
|
321
|
+
const hasPermission = _.includes(user.permissions, 'maintenanceTracking');
|
224
322
|
|
225
323
|
return {
|
324
|
+
hasPermission,
|
226
325
|
jobs: jobsOrdered,
|
227
|
-
statuses,
|
228
326
|
site: user.site,
|
229
327
|
userCategory: user.category,
|
230
328
|
colourBrandingMain: Colours.getMainBrandingColourFromState(state),
|
@@ -233,7 +331,9 @@ const mapStateToProps = state => {
|
|
233
331
|
};
|
234
332
|
|
235
333
|
export default connect(mapStateToProps, {
|
236
|
-
jobsLoaded
|
334
|
+
jobsLoaded,
|
335
|
+
jobAdded,
|
336
|
+
jobsAdded
|
237
337
|
}, null, {
|
238
338
|
forwardRef: true
|
239
339
|
})(MaintenanceList);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","Component","View","StyleSheet","FlatList","TouchableOpacity","Text","Icon","_","connect","generalActions","jobsLoaded","MaintenanceListItem","StatusSelectorPopup","Components","Colours","Config","SHOW_ALL_STATUS","MaintenanceList","constructor","props","onLoadingChanged","res","getJobs","site","data","error","console","log","loading","callback","setState","state","showStatusPopup","selectedStatus","componentDidMount","refresh","componentDidUpdate","prevProps","isEqual","statuses","includes","dataUpdated","getEmptyStateText","options","isEmpty","EmptyText","userCategory","env","strings","EMPTY_REQUESTS_STAFF","EMPTY_REQUESTS_USER","renderEmptyList","marginHorizontal","renderFilter","length","styles","filterContainerOuter","filterTitle","onPressFilter","filterContainer","filterText","color","colourBrandingMain","filterIcon","renderListHeader","ListHeaderComponent","renderList","jobs","filteredList","filter","job","status","flex","paddingBottom","item","id","itemStyle","renderStatusPopup","onCloseFilter","onSelectStatus","render","container","style","create","backgroundColor","flexDirection","justifyContent","alignItems","paddingHorizontal","paddingVertical","fontFamily","fontSize","letterSpacing","marginRight","mapStateToProps","user","notifications","jobsOrdered","orderBy","uniq","map","category","getMainBrandingColourFromState","forwardRef"],"sources":["MaintenanceList.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, StyleSheet, FlatList, TouchableOpacity, Text } from 'react-native';\nimport { Icon } from 'react-native-elements';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { generalActions } from '../apis';\nimport { jobsLoaded } from '../actions';\nimport MaintenanceListItem from '../components/MaintenanceListItem';\nimport StatusSelectorPopup from './StatusSelectorPopup';\nimport { Components, Colours, Config } from '../core.config';\n\nconst SHOW_ALL_STATUS = 'Show All';\n\nclass MaintenanceList extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n loading: false,\n selectedStatus: SHOW_ALL_STATUS,\n showStatusPopup: false,\n };\n }\n\n componentDidMount() {\n this.refresh();\n }\n\n componentDidUpdate(prevProps) {\n if (!_.isEqual(prevProps.statuses, this.props.statuses) && !this.props.statuses.includes(this.state.selectedStatus)) {\n // Reset selected status if not exists\n this.setState({ selectedStatus: SHOW_ALL_STATUS });\n }\n if (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n }\n\n refresh = () => {\n this.onLoadingChanged(true, async () => {\n try {\n const res = await generalActions.getJobs(this.props.site);\n this.props.jobsLoaded(res.data);\n } catch (error) {\n console.log('refresh 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' ? Config.env.strings.EMPTY_REQUESTS_STAFF : Config.env.strings.EMPTY_REQUESTS_USER;\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 onPressFilter = () => {\n this.setState({ showStatusPopup: true });\n };\n\n onCloseFilter = () => {\n this.setState({ showStatusPopup: false });\n };\n\n onSelectStatus = selectedStatus => {\n this.setState({ showStatusPopup: false, selectedStatus });\n };\n\n renderEmptyList() {\n return this.state.loading ? null : <Components.EmptyStateMain title={this.getEmptyStateText()} style={{ marginHorizontal: 16 }} />;\n }\n\n renderFilter() {\n if (this.props.statuses?.length <= 1) return;\n\n return (\n <View style={styles.filterContainerOuter}>\n <Text style={styles.filterTitle}>FILTER</Text>\n <TouchableOpacity onPress={this.onPressFilter}>\n <View style={styles.filterContainer}>\n <Text style={[styles.filterText, { color: this.props.colourBrandingMain }]}>\n {this.state.selectedStatus || SHOW_ALL_STATUS}\n </Text>\n <Icon name=\"angle-down\" type=\"font-awesome\" iconStyle={[styles.filterIcon, { color: this.props.colourBrandingMain }]} />\n </View>\n </TouchableOpacity>\n </View>\n );\n }\n\n renderListHeader() {\n return (\n <View>\n {this.props.ListHeaderComponent}\n {this.renderFilter()}\n </View>\n );\n }\n\n renderList() {\n const { selectedStatus } = this.state;\n const { jobs } = this.props;\n const filteredList = selectedStatus === SHOW_ALL_STATUS ? jobs : jobs.filter(job => job.status === selectedStatus);\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 // renderAddButton() {\n // return this.props.enableAdd ? <Components.AddContentButton /> : null;\n // }\n\n renderStatusPopup() {\n if (!this.state.showStatusPopup) return null;\n\n return (\n <StatusSelectorPopup\n filter={this.props.statuses}\n includeAll\n allText={SHOW_ALL_STATUS}\n onClose={this.onCloseFilter}\n onSelect={this.onSelectStatus}\n />\n );\n }\n\n render() {\n return (\n <View style={[styles.container, this.props.style]}>\n {this.renderList()}\n {/* {this.renderAddButton()} */}\n {/* {this.renderStatusPopup()} */}\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});\n\nconst mapStateToProps = state => {\n const { user, jobs, notifications } = state;\n const jobsOrdered = _.orderBy(jobs.jobs, ['createdUnix'], ['desc']);\n const statuses = _.uniq(jobsOrdered.map(job => job.status));\n\n return {\n jobs: jobsOrdered,\n statuses,\n site: user.site,\n userCategory: user.category,\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n dataUpdated: notifications.dataUpdated['jobs'],\n };\n};\n\nexport default connect(mapStateToProps, { jobsLoaded }, null, { forwardRef: true })(MaintenanceList);\n"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,SAASC,IAAT,EAAeC,UAAf,EAA2BC,QAA3B,EAAqCC,gBAArC,EAAuDC,IAAvD,QAAmE,cAAnE;AACA,SAASC,IAAT,QAAqB,uBAArB;AACA,OAAOC,CAAP,MAAc,QAAd;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,SAASC,cAAT,QAA+B,SAA/B;AACA,SAASC,UAAT,QAA2B,YAA3B;AACA,OAAOC,mBAAP,MAAgC,mCAAhC;AACA,OAAOC,mBAAP,MAAgC,uBAAhC;AACA,SAASC,UAAT,EAAqBC,OAArB,EAA8BC,MAA9B,QAA4C,gBAA5C;AAEA,MAAMC,eAAe,GAAG,UAAxB;;AAEA,MAAMC,eAAN,SAA8BjB,SAA9B,CAAwC;EACtCkB,WAAW,CAACC,KAAD,EAAQ;IACjB,MAAMA,KAAN;;IADiB,iCAsBT,MAAM;MACd,KAAKC,gBAAL,CAAsB,IAAtB,EAA4B,YAAY;QACtC,IAAI;UACF,MAAMC,GAAG,GAAG,MAAMZ,cAAc,CAACa,OAAf,CAAuB,KAAKH,KAAL,CAAWI,IAAlC,CAAlB;UACA,KAAKJ,KAAL,CAAWT,UAAX,CAAsBW,GAAG,CAACG,IAA1B;QACD,CAHD,CAGE,OAAOC,KAAP,EAAc;UACdC,OAAO,CAACC,GAAR,CAAY,eAAZ,EAA6BF,KAA7B;QACD,CALD,SAKU;UACR,KAAKL,gBAAL,CAAsB,KAAtB;QACD;MACF,CATD;IAUD,CAjCkB;;IAAA,0CA0CA,CAACQ,OAAD,EAAUC,QAAV,KAAuB;MACxC,KAAKC,QAAL,CAAc;QAAEF;MAAF,CAAd,EAA2B,MAAM;QAC/B,IAAI,KAAKT,KAAL,CAAWC,gBAAf,EAAiC,KAAKD,KAAL,CAAWC,gBAAX,CAA4B,KAAKW,KAAL,CAAWH,OAAvC;QACjC,IAAIC,QAAJ,EAAcA,QAAQ;MACvB,CAHD;IAID,CA/CkB;;IAAA,uCAiDH,MAAM;MACpB,KAAKC,QAAL,CAAc;QAAEE,eAAe,EAAE;MAAnB,CAAd;IACD,CAnDkB;;IAAA,uCAqDH,MAAM;MACpB,KAAKF,QAAL,CAAc;QAAEE,eAAe,EAAE;MAAnB,CAAd;IACD,CAvDkB;;IAAA,wCAyDFC,cAAc,IAAI;MACjC,KAAKH,QAAL,CAAc;QAAEE,eAAe,EAAE,KAAnB;QAA0BC;MAA1B,CAAd;IACD,CA3DkB;;IAGjB,KAAKF,KAAL,GAAa;MACXH,OAAO,EAAE,KADE;MAEXK,cAAc,EAAEjB,eAFL;MAGXgB,eAAe,EAAE;IAHN,CAAb;EAKD;;EAEDE,iBAAiB,GAAG;IAClB,KAAKC,OAAL;EACD;;EAEDC,kBAAkB,CAACC,SAAD,EAAY;IAC5B,IAAI,CAAC9B,CAAC,CAAC+B,OAAF,CAAUD,SAAS,CAACE,QAApB,EAA8B,KAAKpB,KAAL,CAAWoB,QAAzC,CAAD,IAAuD,CAAC,KAAKpB,KAAL,CAAWoB,QAAX,CAAoBC,QAApB,CAA6B,KAAKT,KAAL,CAAWE,cAAxC,CAA5D,EAAqH;MACnH;MACA,KAAKH,QAAL,CAAc;QAAEG,cAAc,EAAEjB;MAAlB,CAAd;IACD;;IACD,IAAI,CAACqB,SAAS,CAACI,WAAX,IAA0B,KAAKtB,KAAL,CAAWsB,WAAzC,EAAsD,KAAKN,OAAL;EACvD;;EAeDO,iBAAiB,GAAG;IAClB,IAAI,KAAKvB,KAAL,CAAWwB,OAAX,IAAsB,CAACpC,CAAC,CAACqC,OAAF,CAAU,KAAKzB,KAAL,CAAWwB,OAAX,CAAmBE,SAA7B,CAA3B,EAAoE;MAClE,OAAO,KAAK1B,KAAL,CAAWwB,OAAX,CAAmBE,SAA1B;IACD;;IACD,OAAO,KAAK1B,KAAL,CAAW2B,YAAX,KAA4B,OAA5B,GAAsC/B,MAAM,CAACgC,GAAP,CAAWC,OAAX,CAAmBC,oBAAzD,GAAgFlC,MAAM,CAACgC,GAAP,CAAWC,OAAX,CAAmBE,mBAA1G;EACD;;EAqBDC,eAAe,GAAG;IAChB,OAAO,KAAKpB,KAAL,CAAWH,OAAX,GAAqB,IAArB,gBAA4B,oBAAC,UAAD,CAAY,cAAZ;MAA2B,KAAK,EAAE,KAAKc,iBAAL,EAAlC;MAA4D,KAAK,EAAE;QAAEU,gBAAgB,EAAE;MAApB;IAAnE,EAAnC;EACD;;EAEDC,YAAY,GAAG;IAAA;;IACb,IAAI,8BAAKlC,KAAL,CAAWoB,QAAX,8EAAqBe,MAArB,KAA+B,CAAnC,EAAsC;IAEtC,oBACE,oBAAC,IAAD;MAAM,KAAK,EAAEC,MAAM,CAACC;IAApB,gBACE,oBAAC,IAAD;MAAM,KAAK,EAAED,MAAM,CAACE;IAApB,YADF,eAEE,oBAAC,gBAAD;MAAkB,OAAO,EAAE,KAAKC;IAAhC,gBACE,oBAAC,IAAD;MAAM,KAAK,EAAEH,MAAM,CAACI;IAApB,gBACE,oBAAC,IAAD;MAAM,KAAK,EAAE,CAACJ,MAAM,CAACK,UAAR,EAAoB;QAAEC,KAAK,EAAE,KAAK1C,KAAL,CAAW2C;MAApB,CAApB;IAAb,GACG,KAAK/B,KAAL,CAAWE,cAAX,IAA6BjB,eADhC,CADF,eAIE,oBAAC,IAAD;MAAM,IAAI,EAAC,YAAX;MAAwB,IAAI,EAAC,cAA7B;MAA4C,SAAS,EAAE,CAACuC,MAAM,CAACQ,UAAR,EAAoB;QAAEF,KAAK,EAAE,KAAK1C,KAAL,CAAW2C;MAApB,CAApB;IAAvD,EAJF,CADF,CAFF,CADF;EAaD;;EAEDE,gBAAgB,GAAG;IACjB,oBACE,oBAAC,IAAD,QACG,KAAK7C,KAAL,CAAW8C,mBADd,EAEG,KAAKZ,YAAL,EAFH,CADF;EAMD;;EAEDa,UAAU,GAAG;IACX,MAAM;MAAEjC;IAAF,IAAqB,KAAKF,KAAhC;IACA,MAAM;MAAEoC;IAAF,IAAW,KAAKhD,KAAtB;IACA,MAAMiD,YAAY,GAAGnC,cAAc,KAAKjB,eAAnB,GAAqCmD,IAArC,GAA4CA,IAAI,CAACE,MAAL,CAAYC,GAAG,IAAIA,GAAG,CAACC,MAAJ,KAAetC,cAAlC,CAAjE;IAEA,oBACE,oBAAC,QAAD;MACE,yBAAyB,EAAC,QAD5B;MAEE,KAAK,EAAE;QAAEuC,IAAI,EAAE;MAAR,CAFT;MAGE,qBAAqB,EAAE;QAAEC,aAAa,EAAE;MAAjB,CAHzB;MAIE,IAAI,EAAEL,YAJR;MAKE,YAAY,EAAEM,IAAI,IAAIA,IAAI,CAACC,EAL7B;MAME,UAAU,EAAE;QAAA,IAAC;UAAED;QAAF,CAAD;QAAA,oBAAc,oBAAC,mBAAD;UAAqB,KAAK,EAAE,KAAKvD,KAAL,CAAWyD,SAAvC;UAAkD,GAAG,EAAEF;QAAvD,EAAd;MAAA,CANd;MAOE,kBAAkB,EAAE,KAAKvB,eAAL,EAPtB;MAQE,mBAAmB,EAAE,KAAKa,gBAAL;IARvB,EADF;EAYD,CA9GqC,CAgHtC;EACA;EACA;;;EAEAa,iBAAiB,GAAG;IAClB,IAAI,CAAC,KAAK9C,KAAL,CAAWC,eAAhB,EAAiC,OAAO,IAAP;IAEjC,oBACE,oBAAC,mBAAD;MACE,MAAM,EAAE,KAAKb,KAAL,CAAWoB,QADrB;MAEE,UAAU,MAFZ;MAGE,OAAO,EAAEvB,eAHX;MAIE,OAAO,EAAE,KAAK8D,aAJhB;MAKE,QAAQ,EAAE,KAAKC;IALjB,EADF;EASD;;EAEDC,MAAM,GAAG;IACP,oBACE,oBAAC,IAAD;MAAM,KAAK,EAAE,CAACzB,MAAM,CAAC0B,SAAR,EAAmB,KAAK9D,KAAL,CAAW+D,KAA9B;IAAb,GACG,KAAKhB,UAAL,EADH,CADF;EAOD;;AA1IqC;;AA6IxC,MAAMX,MAAM,GAAGrD,UAAU,CAACiF,MAAX,CAAkB;EAC/BF,SAAS,EAAE;IACTT,IAAI,EAAE,CADG;IAETY,eAAe,EAAE;EAFR,CADoB;EAK/B5B,oBAAoB,EAAE;IACpB6B,aAAa,EAAE,KADK;IAEpBC,cAAc,EAAE,eAFI;IAGpBC,UAAU,EAAE,QAHQ;IAIpBC,iBAAiB,EAAE,EAJC;IAKpBC,eAAe,EAAE;EALG,CALS;EAY/BhC,WAAW,EAAE;IACXiC,UAAU,EAAE,SADD;IAEXC,QAAQ,EAAE,EAFC;IAGXC,aAAa,EAAE,GAHJ;IAIX/B,KAAK,EAAE;EAJI,CAZkB;EAkB/BF,eAAe,EAAE;IACf0B,aAAa,EAAE,KADA;IAEfE,UAAU,EAAE;EAFG,CAlBc;EAsB/B3B,UAAU,EAAE;IACV8B,UAAU,EAAE,aADF;IAEVC,QAAQ,EAAE,EAFA;IAGVE,WAAW,EAAE;EAHH,CAtBmB;EA2B/B9B,UAAU,EAAE;IACV4B,QAAQ,EAAE;EADA;AA3BmB,CAAlB,CAAf;;AAgCA,MAAMG,eAAe,GAAG/D,KAAK,IAAI;EAC/B,MAAM;IAAEgE,IAAF;IAAQ5B,IAAR;IAAc6B;EAAd,IAAgCjE,KAAtC;;EACA,MAAMkE,WAAW,GAAG1F,CAAC,CAAC2F,OAAF,CAAU/B,IAAI,CAACA,IAAf,EAAqB,CAAC,aAAD,CAArB,EAAsC,CAAC,MAAD,CAAtC,CAApB;;EACA,MAAM5B,QAAQ,GAAGhC,CAAC,CAAC4F,IAAF,CAAOF,WAAW,CAACG,GAAZ,CAAgB9B,GAAG,IAAIA,GAAG,CAACC,MAA3B,CAAP,CAAjB;;EAEA,OAAO;IACLJ,IAAI,EAAE8B,WADD;IAEL1D,QAFK;IAGLhB,IAAI,EAAEwE,IAAI,CAACxE,IAHN;IAILuB,YAAY,EAAEiD,IAAI,CAACM,QAJd;IAKLvC,kBAAkB,EAAEhD,OAAO,CAACwF,8BAAR,CAAuCvE,KAAvC,CALf;IAMLU,WAAW,EAAEuD,aAAa,CAACvD,WAAd,CAA0B,MAA1B;EANR,CAAP;AAQD,CAbD;;AAeA,eAAejC,OAAO,CAACsF,eAAD,EAAkB;EAAEpF;AAAF,CAAlB,EAAkC,IAAlC,EAAwC;EAAE6F,UAAU,EAAE;AAAd,CAAxC,CAAP,CAAqEtF,eAArE,CAAf"}
|
1
|
+
{"version":3,"names":["React","Component","View","StyleSheet","FlatList","TouchableOpacity","Text","_","connect","generalActions","jobsLoaded","jobAdded","jobsAdded","MaintenanceListItem","FilterPopupMenu","Components","Colours","Config","Helper","MaintenanceList","constructor","props","onLoadingChanged","selectedStatus","selectedType","state","res","getJobs","site","data","error","console","log","getJobTypes","getSite","types","map","t","label","typeName","value","splice","setState","jobId","loading","job","getJobByJobId","source","searchText","jobs","filteredList","filter","j","length","fetchJob","includes","status","type","refresh","callback","isEmpty","resetDataSource","showFilterPopup","selected","onToggleFilter","hasPermission","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","env","strings","EMPTY_REQUESTS_STAFF","EMPTY_REQUESTS_USER","renderEmptyList","marginHorizontal","renderFilterButton","styles","filterButton","filterButtonText","color","colourBrandingMain","renderSearch","searchContainer","onSearchText","onSearchSubmit","renderListHeader","ListHeaderComponent","renderList","flex","paddingBottom","item","id","itemStyle","renderFilterPopup","onSelectFilter","render","container","style","create","backgroundColor","filterContainerOuter","flexDirection","justifyContent","alignItems","paddingHorizontal","paddingVertical","filterTitle","fontFamily","fontSize","letterSpacing","filterContainer","filterText","marginRight","filterIcon","position","right","top","mapStateToProps","user","notifications","jobsOrdered","orderBy","permissions","category","getMainBrandingColourFromState","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 { generalActions } from '../apis';\nimport { jobsLoaded, jobAdded, jobsAdded } from '../actions';\nimport MaintenanceListItem from '../components/MaintenanceListItem';\nimport FilterPopupMenu from './FilterPopupMenu';\nimport { Components, Colours, Config, Helper } from '../core.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 selectedStatus: props.hasPermission ? 'Unassigned|In Progress' : '',\n selectedType: '',\n };\n }\n\n componentDidMount() {\n this.refresh();\n this.refreshTypes();\n\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)) this.resetDataSource();\n }\n\n refresh = () => {\n this.onLoadingChanged(true, async () => {\n try {\n const { selectedStatus, selectedType } = this.state;\n // console.log('filters', { selectedStatus, selectedType });\n const res = await generalActions.getJobs(this.props.site, selectedStatus, selectedType);\n // console.log('refresh', res?.data);\n if (selectedStatus || selectedType) {\n this.props.jobsAdded(res.data);\n } else {\n this.props.jobsLoaded(res.data);\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 generalActions.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 generalActions.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' ? Config.env.strings.EMPTY_REQUESTS_STAFF : Config.env.strings.EMPTY_REQUESTS_USER;\n }\n\n resetDataSource = (source = '') => {\n const { searchText, selectedStatus, selectedType } = this.state;\n const { jobs } = this.props;\n\n let filteredList = jobs;\n if (searchText) {\n filteredList = jobs.filter(j => j.jobId === searchText);\n if (filteredList.length === 0) this.fetchJob(searchText);\n } else {\n if (selectedStatus) filteredList = filteredList.filter(j => selectedStatus.includes(j.status));\n if (selectedType) filteredList = filteredList.filter(j => selectedType.includes(j.type));\n if (source !== 'search') this.refresh();\n }\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.setState({ selectedStatus: selected.status, selectedType: selected.type }, () => {\n this.resetDataSource();\n this.onToggleFilter();\n });\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 }]}>Filter</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 Job ID\"\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 return (\n <View>\n {this.props.ListHeaderComponent}\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 { showFilterPopup, types, selectedStatus, selectedType } = this.state;\n if (!showFilterPopup) return null;\n\n return (\n <FilterPopupMenu site={this.props.site} types={types} status={selectedStatus} type={selectedType} onClose={this.onSelectFilter} />\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 position: 'absolute',\n right: 20,\n top: -32,\n },\n filterButtonText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n },\n});\n\nconst mapStateToProps = state => {\n const { user, jobs, notifications } = state;\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['jobs'],\n };\n};\n\nexport default connect(mapStateToProps, { jobsLoaded, jobAdded, jobsAdded }, null, { forwardRef: true })(MaintenanceList);\n"],"mappings":"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"}
|
@@ -109,9 +109,15 @@ class MaintenanceListItem extends Component {
|
|
109
109
|
style: styles.jobTopSection
|
110
110
|
}, /*#__PURE__*/React.createElement(View, {
|
111
111
|
style: styles.jobTopLeft
|
112
|
-
}, /*#__PURE__*/React.createElement(Text, {
|
112
|
+
}, job.jobId ? /*#__PURE__*/React.createElement(Text, {
|
113
|
+
style: [styles.jobIdText, {
|
114
|
+
color: this.props.colourBrandingMain
|
115
|
+
}]
|
116
|
+
}, `Job #${job.jobId}`) : null, /*#__PURE__*/React.createElement(Text, {
|
113
117
|
style: styles.jobTitleText
|
114
|
-
}, job.title), /*#__PURE__*/React.createElement(
|
118
|
+
}, job.title), job.room ? /*#__PURE__*/React.createElement(Text, {
|
119
|
+
style: styles.jobLocationText
|
120
|
+
}, job.room) : null, /*#__PURE__*/React.createElement(View, {
|
115
121
|
style: styles.jobTypeSeenContainer
|
116
122
|
}, /*#__PURE__*/React.createElement(View, {
|
117
123
|
style: [styles.jobTypeContainer, {
|
@@ -168,22 +174,34 @@ const styles = StyleSheet.create({
|
|
168
174
|
},
|
169
175
|
jobTopSection: {
|
170
176
|
flexDirection: 'row',
|
171
|
-
alignItems: '
|
177
|
+
alignItems: 'flex-end',
|
172
178
|
paddingHorizontal: 10,
|
173
|
-
paddingVertical:
|
179
|
+
paddingVertical: 10,
|
174
180
|
borderBottomWidth: 1,
|
175
181
|
borderBottomColor: Colours.LINEGREY
|
176
182
|
},
|
177
183
|
jobTopLeft: {
|
178
184
|
flex: 1
|
179
185
|
},
|
186
|
+
jobIdText: {
|
187
|
+
fontFamily: 'sf-medium',
|
188
|
+
fontSize: 12,
|
189
|
+
marginBottom: 4
|
190
|
+
},
|
180
191
|
jobTitleText: {
|
181
192
|
fontFamily: 'sf-semibold',
|
182
193
|
fontSize: 18,
|
183
194
|
color: Colours.TEXT_DARK,
|
184
|
-
marginBottom:
|
195
|
+
marginBottom: 4
|
196
|
+
},
|
197
|
+
jobLocationText: {
|
198
|
+
fontFamily: 'sf-medium',
|
199
|
+
fontSize: 12,
|
200
|
+
color: Colours.TEXT_LIGHT,
|
201
|
+
marginBottom: 4
|
185
202
|
},
|
186
203
|
jobTypeSeenContainer: {
|
204
|
+
marginTop: 4,
|
187
205
|
flexDirection: 'row',
|
188
206
|
alignItems: 'center'
|
189
207
|
},
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","Component","Image","Text","TouchableOpacity","View","StyleSheet","_","Icon","connect","moment","getJobStatusProps","jobStatusOptions","Services","Helper","Colours","MaintenanceListItem","navigation","navigate","job","props","renderCommentCount","commentCount","styles","commentCountContainer","commentCountText","renderDescription","isEmpty","description","jobDescriptionText","renderSeen","showSeen","status","name","seen","jobSeenContainer","jobSeenIcon","color","colourBrandingMain","jobSeenText","render","createdTime","createdUnix","createdTimeText","format","activityTimeText","expectedDate","statusText","statusColor","onPressJob","jobContainer","style","jobInnerContainer","jobTopSection","jobTopLeft","jobTitleText","title","jobTypeSeenContainer","jobTypeContainer","backgroundColor","hexToRGBAstring","jobTypeText","type","jobTopRight","jobCommentImage","require","jobBottomSection","jobCreatedText","jobActivityContainer","jobStatusContainer","jobStatusIcon","jobStatusText","jobStatusLine","borderColor","jobStatusLineMask","jobStatusCircle","jobStatusDateText","create","marginVertical","paddingHorizontal","getShadowStyle","flexDirection","alignItems","paddingVertical","borderBottomWidth","borderBottomColor","LINEGREY","flex","fontFamily","fontSize","TEXT_DARK","marginBottom","height","width","borderRadius","justifyContent","textAlign","marginLeft","paddingTop","resizeMode","position","top","right","borderWidth","COLOUR_GREEN","TEXT_LIGHT","borderStyle","left","zIndex","mapStateToProps","state","getMainBrandingColourFromState"],"sources":["MaintenanceListItem.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { Image, Text, TouchableOpacity, View, StyleSheet } from 'react-native';\nimport _ from 'lodash';\nimport { Icon } from 'react-native-elements';\nimport { connect } from 'react-redux';\nimport moment from 'moment';\n// import {\n// getShadowStyle,\n// LINEGREY,\n// TEXT_DARK,\n// TEXT_LIGHT,\n// COLOUR_GREEN,\n// getMainBrandingColourFromState,\n// hexToRGBAstring,\n// getJobStatusProps,\n// jobStatusOptions,\n// } from '../../js';\n// import NavigationService from '../../js/NavigationService';\nimport { getJobStatusProps, jobStatusOptions } from '../helper';\nimport { Services } from '../feature.config';\nimport { Helper, Colours } from '../core.config';\n\nclass MaintenanceListItem extends Component {\n onPressJob = () => {\n Services.navigation.navigate('requestDetail', { job: this.props.job });\n };\n\n renderCommentCount() {\n const { job } = this.props;\n if (!job.commentCount) {\n return null;\n }\n return (\n <View style={styles.commentCountContainer}>\n <Text style={styles.commentCountText}>{job.commentCount > 99 ? '99' : job.commentCount}</Text>\n </View>\n );\n }\n\n renderDescription() {\n const { job } = this.props;\n if (_.isEmpty(job.description)) {\n return null;\n }\n return <Text style={styles.jobDescriptionText}>{job.description}</Text>;\n }\n\n renderSeen() {\n const { job } = this.props;\n const showSeen = !job.status || job.status === jobStatusOptions[0].name;\n if (!showSeen || !job.seen) {\n return null;\n }\n return (\n <View style={styles.jobSeenContainer}>\n <Icon name=\"check\" type=\"font-awesome\" iconStyle={[styles.jobSeenIcon, { color: this.props.colourBrandingMain }]} />\n <Text style={[styles.jobSeenText, { color: this.props.colourBrandingMain }]}>Seen</Text>\n </View>\n );\n }\n\n render() {\n const { job } = this.props;\n const createdTime = moment(job.createdUnix);\n const createdTimeText = `${createdTime.format('ddd, D MMMM')} • ${createdTime.format('h:mma')}`;\n const activityTimeText = job.expectedDate ? moment(job.expectedDate).format('D MMMM') : '--';\n const { statusText, statusColor } = getJobStatusProps(job.status);\n\n return (\n <TouchableOpacity onPress={this.onPressJob}>\n <View style={[styles.jobContainer, this.props.style]}>\n <View style={styles.jobInnerContainer}>\n <View style={styles.jobTopSection}>\n <View style={styles.jobTopLeft}>\n <Text style={styles.jobTitleText}>{job.title}</Text>\n <View style={styles.jobTypeSeenContainer}>\n <View style={[styles.jobTypeContainer, { backgroundColor: Colours.hexToRGBAstring(this.props.colourBrandingMain, 0.2) }]}>\n <Text style={[styles.jobTypeText, { color: this.props.colourBrandingMain }]}>{job.type}</Text>\n </View>\n {this.renderSeen()}\n </View>\n </View>\n <View style={styles.jobTopRight}>\n <Image style={styles.jobCommentImage} source={require('../images/speechbubble.png')} />\n {this.renderCommentCount()}\n </View>\n </View>\n <View style={styles.jobBottomSection}>\n {this.renderDescription()}\n <Text style={styles.jobCreatedText}>{createdTimeText}</Text>\n <View style={styles.jobActivityContainer}>\n <View style={[styles.jobStatusContainer, { backgroundColor: statusColor }]}>\n <Icon name=\"wrench\" type=\"font-awesome\" iconStyle={styles.jobStatusIcon} />\n <Text style={styles.jobStatusText}>{statusText}</Text>\n </View>\n <View style={[styles.jobStatusLine, { borderColor: statusColor }]}>\n <View style={styles.jobStatusLineMask} />\n </View>\n <View style={[styles.jobStatusCircle, { backgroundColor: statusColor }]} />\n <Text style={styles.jobStatusDateText}>{activityTimeText}</Text>\n </View>\n </View>\n </View>\n </View>\n </TouchableOpacity>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n jobContainer: {\n marginVertical: 8,\n paddingHorizontal: 16,\n },\n jobInnerContainer: {\n ...Helper.getShadowStyle(),\n },\n jobTopSection: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingHorizontal: 10,\n paddingVertical: 16,\n borderBottomWidth: 1,\n borderBottomColor: Colours.LINEGREY,\n },\n jobTopLeft: {\n flex: 1,\n },\n jobTitleText: {\n fontFamily: 'sf-semibold',\n fontSize: 18,\n color: Colours.TEXT_DARK,\n marginBottom: 8,\n },\n jobTypeSeenContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n jobTypeContainer: {\n height: 20,\n width: 80,\n borderRadius: 4,\n justifyContent: 'center',\n },\n jobTypeText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n textAlign: 'center',\n },\n jobSeenContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n marginLeft: 10,\n },\n jobSeenIcon: {\n fontSize: 12,\n },\n jobSeenText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n marginLeft: 4,\n },\n jobTopRight: {\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 10,\n paddingTop: 10,\n },\n jobCommentImage: {\n width: 34,\n height: 34,\n resizeMode: 'contain',\n },\n commentCountContainer: {\n position: 'absolute',\n top: 0,\n right: 0,\n borderRadius: 10,\n borderWidth: 2,\n borderColor: '#fff',\n width: 20,\n height: 20,\n backgroundColor: Colours.COLOUR_GREEN,\n justifyContent: 'center',\n alignItems: 'center',\n },\n commentCountText: {\n textAlign: 'center',\n fontFamily: 'sf-bold',\n fontSize: 10,\n color: '#fff',\n },\n jobBottomSection: {\n paddingHorizontal: 10,\n paddingVertical: 16,\n },\n jobDescriptionText: {\n fontFamily: 'sf-medium',\n fontSize: 14,\n color: Colours.TEXT_DARK,\n marginBottom: 8,\n },\n jobCreatedText: {\n fontFamily: 'sf-medium',\n fontSize: 12,\n color: Colours.TEXT_LIGHT,\n marginBottom: 10,\n },\n jobActivityContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n jobStatusContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: 105,\n height: 30,\n paddingHorizontal: 8,\n borderRadius: 4,\n },\n jobStatusIcon: {\n color: '#fff',\n fontSize: 14,\n },\n jobStatusText: {\n color: '#fff',\n textAlign: 'center',\n fontFamily: 'sf-semibold',\n fontSize: 13,\n },\n jobStatusLine: {\n borderWidth: 1,\n borderStyle: 'dashed',\n width: 30,\n },\n jobStatusLineMask: {\n position: 'absolute',\n left: -1,\n top: -1,\n width: '100%',\n height: 1,\n backgroundColor: '#fff',\n zIndex: 1,\n },\n jobStatusCircle: {\n width: 18,\n height: 18,\n borderRadius: 9,\n },\n jobStatusDateText: {\n flex: 1,\n textAlign: 'right',\n fontFamily: 'sf-bold',\n fontSize: 14,\n color: Colours.TEXT_DARK,\n },\n});\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n };\n};\n\nexport default connect(mapStateToProps, {})(MaintenanceListItem);\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["React","Component","Image","Text","TouchableOpacity","View","StyleSheet","_","Icon","connect","moment","getJobStatusProps","jobStatusOptions","Services","Helper","Colours","MaintenanceListItem","navigation","navigate","job","props","renderCommentCount","commentCount","styles","commentCountContainer","commentCountText","renderDescription","isEmpty","description","jobDescriptionText","renderSeen","showSeen","status","name","seen","jobSeenContainer","jobSeenIcon","color","colourBrandingMain","jobSeenText","render","createdTime","createdUnix","createdTimeText","format","activityTimeText","expectedDate","statusText","statusColor","onPressJob","jobContainer","style","jobInnerContainer","jobTopSection","jobTopLeft","jobId","jobIdText","jobTitleText","title","room","jobLocationText","jobTypeSeenContainer","jobTypeContainer","backgroundColor","hexToRGBAstring","jobTypeText","type","jobTopRight","jobCommentImage","require","jobBottomSection","jobCreatedText","jobActivityContainer","jobStatusContainer","jobStatusIcon","jobStatusText","jobStatusLine","borderColor","jobStatusLineMask","jobStatusCircle","jobStatusDateText","create","marginVertical","paddingHorizontal","getShadowStyle","flexDirection","alignItems","paddingVertical","borderBottomWidth","borderBottomColor","LINEGREY","flex","fontFamily","fontSize","marginBottom","TEXT_DARK","TEXT_LIGHT","marginTop","height","width","borderRadius","justifyContent","textAlign","marginLeft","paddingTop","resizeMode","position","top","right","borderWidth","COLOUR_GREEN","borderStyle","left","zIndex","mapStateToProps","state","getMainBrandingColourFromState"],"sources":["MaintenanceListItem.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { Image, Text, TouchableOpacity, View, StyleSheet } from 'react-native';\nimport _ from 'lodash';\nimport { Icon } from 'react-native-elements';\nimport { connect } from 'react-redux';\nimport moment from 'moment';\n// import {\n// getShadowStyle,\n// LINEGREY,\n// TEXT_DARK,\n// TEXT_LIGHT,\n// COLOUR_GREEN,\n// getMainBrandingColourFromState,\n// hexToRGBAstring,\n// getJobStatusProps,\n// jobStatusOptions,\n// } from '../../js';\n// import NavigationService from '../../js/NavigationService';\nimport { getJobStatusProps, jobStatusOptions } from '../helper';\nimport { Services } from '../feature.config';\nimport { Helper, Colours } from '../core.config';\n\nclass MaintenanceListItem extends Component {\n onPressJob = () => {\n Services.navigation.navigate('requestDetail', { job: this.props.job });\n };\n\n renderCommentCount() {\n const { job } = this.props;\n if (!job.commentCount) {\n return null;\n }\n return (\n <View style={styles.commentCountContainer}>\n <Text style={styles.commentCountText}>{job.commentCount > 99 ? '99' : job.commentCount}</Text>\n </View>\n );\n }\n\n renderDescription() {\n const { job } = this.props;\n if (_.isEmpty(job.description)) {\n return null;\n }\n return <Text style={styles.jobDescriptionText}>{job.description}</Text>;\n }\n\n renderSeen() {\n const { job } = this.props;\n const showSeen = !job.status || job.status === jobStatusOptions[0].name;\n if (!showSeen || !job.seen) {\n return null;\n }\n return (\n <View style={styles.jobSeenContainer}>\n <Icon name=\"check\" type=\"font-awesome\" iconStyle={[styles.jobSeenIcon, { color: this.props.colourBrandingMain }]} />\n <Text style={[styles.jobSeenText, { color: this.props.colourBrandingMain }]}>Seen</Text>\n </View>\n );\n }\n\n render() {\n const { job } = this.props;\n const createdTime = moment(job.createdUnix);\n const createdTimeText = `${createdTime.format('ddd, D MMMM')} • ${createdTime.format('h:mma')}`;\n const activityTimeText = job.expectedDate ? moment(job.expectedDate).format('D MMMM') : '--';\n const { statusText, statusColor } = getJobStatusProps(job.status);\n\n return (\n <TouchableOpacity onPress={this.onPressJob}>\n <View style={[styles.jobContainer, this.props.style]}>\n <View style={styles.jobInnerContainer}>\n <View style={styles.jobTopSection}>\n <View style={styles.jobTopLeft}>\n {job.jobId ? <Text style={[styles.jobIdText, { color: this.props.colourBrandingMain }]}>{`Job #${job.jobId}`}</Text> : null}\n <Text style={styles.jobTitleText}>{job.title}</Text>\n {job.room ? <Text style={styles.jobLocationText}>{job.room}</Text> : null}\n <View style={styles.jobTypeSeenContainer}>\n <View style={[styles.jobTypeContainer, { backgroundColor: Colours.hexToRGBAstring(this.props.colourBrandingMain, 0.2) }]}>\n <Text style={[styles.jobTypeText, { color: this.props.colourBrandingMain }]}>{job.type}</Text>\n </View>\n {this.renderSeen()}\n </View>\n </View>\n <View style={styles.jobTopRight}>\n <Image style={styles.jobCommentImage} source={require('../images/speechbubble.png')} />\n {this.renderCommentCount()}\n </View>\n </View>\n <View style={styles.jobBottomSection}>\n {this.renderDescription()}\n <Text style={styles.jobCreatedText}>{createdTimeText}</Text>\n <View style={styles.jobActivityContainer}>\n <View style={[styles.jobStatusContainer, { backgroundColor: statusColor }]}>\n <Icon name=\"wrench\" type=\"font-awesome\" iconStyle={styles.jobStatusIcon} />\n <Text style={styles.jobStatusText}>{statusText}</Text>\n </View>\n <View style={[styles.jobStatusLine, { borderColor: statusColor }]}>\n <View style={styles.jobStatusLineMask} />\n </View>\n <View style={[styles.jobStatusCircle, { backgroundColor: statusColor }]} />\n <Text style={styles.jobStatusDateText}>{activityTimeText}</Text>\n </View>\n </View>\n </View>\n </View>\n </TouchableOpacity>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n jobContainer: {\n marginVertical: 8,\n paddingHorizontal: 16,\n },\n jobInnerContainer: {\n ...Helper.getShadowStyle(),\n },\n jobTopSection: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n paddingHorizontal: 10,\n paddingVertical: 10,\n borderBottomWidth: 1,\n borderBottomColor: Colours.LINEGREY,\n },\n jobTopLeft: {\n flex: 1,\n },\n jobIdText: {\n fontFamily: 'sf-medium',\n fontSize: 12,\n marginBottom: 4,\n },\n jobTitleText: {\n fontFamily: 'sf-semibold',\n fontSize: 18,\n color: Colours.TEXT_DARK,\n marginBottom: 4,\n },\n jobLocationText: {\n fontFamily: 'sf-medium',\n fontSize: 12,\n color: Colours.TEXT_LIGHT,\n marginBottom: 4,\n },\n jobTypeSeenContainer: {\n marginTop: 4,\n flexDirection: 'row',\n alignItems: 'center',\n },\n jobTypeContainer: {\n height: 20,\n width: 80,\n borderRadius: 4,\n justifyContent: 'center',\n },\n jobTypeText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n textAlign: 'center',\n },\n jobSeenContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n marginLeft: 10,\n },\n jobSeenIcon: {\n fontSize: 12,\n },\n jobSeenText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n marginLeft: 4,\n },\n jobTopRight: {\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 10,\n paddingTop: 10,\n },\n jobCommentImage: {\n width: 34,\n height: 34,\n resizeMode: 'contain',\n },\n commentCountContainer: {\n position: 'absolute',\n top: 0,\n right: 0,\n borderRadius: 10,\n borderWidth: 2,\n borderColor: '#fff',\n width: 20,\n height: 20,\n backgroundColor: Colours.COLOUR_GREEN,\n justifyContent: 'center',\n alignItems: 'center',\n },\n commentCountText: {\n textAlign: 'center',\n fontFamily: 'sf-bold',\n fontSize: 10,\n color: '#fff',\n },\n jobBottomSection: {\n paddingHorizontal: 10,\n paddingVertical: 16,\n },\n jobDescriptionText: {\n fontFamily: 'sf-medium',\n fontSize: 14,\n color: Colours.TEXT_DARK,\n marginBottom: 8,\n },\n jobCreatedText: {\n fontFamily: 'sf-medium',\n fontSize: 12,\n color: Colours.TEXT_LIGHT,\n marginBottom: 10,\n },\n jobActivityContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n jobStatusContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: 105,\n height: 30,\n paddingHorizontal: 8,\n borderRadius: 4,\n },\n jobStatusIcon: {\n color: '#fff',\n fontSize: 14,\n },\n jobStatusText: {\n color: '#fff',\n textAlign: 'center',\n fontFamily: 'sf-semibold',\n fontSize: 13,\n },\n jobStatusLine: {\n borderWidth: 1,\n borderStyle: 'dashed',\n width: 30,\n },\n jobStatusLineMask: {\n position: 'absolute',\n left: -1,\n top: -1,\n width: '100%',\n height: 1,\n backgroundColor: '#fff',\n zIndex: 1,\n },\n jobStatusCircle: {\n width: 18,\n height: 18,\n borderRadius: 9,\n },\n jobStatusDateText: {\n flex: 1,\n textAlign: 'right',\n fontFamily: 'sf-bold',\n fontSize: 14,\n color: Colours.TEXT_DARK,\n },\n});\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n };\n};\n\nexport default connect(mapStateToProps, {})(MaintenanceListItem);\n"],"mappings":"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"}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
/* eslint-disable no-param-reassign */
|
2
|
+
import _ from 'lodash';
|
2
3
|
import { REHYDRATE } from 'redux-persist';
|
3
|
-
import { JOBS_LOADED, JOB_ADDED } from '../actions/types';
|
4
|
+
import { JOBS_LOADED, JOB_ADDED, JOBS_ADDED } from '../actions/types';
|
4
5
|
import { ActionTypes } from '../core.config';
|
5
6
|
const REDUCER_KEY = 'jobs';
|
6
7
|
const INITIAL_STATE = {
|
@@ -25,6 +26,18 @@ export default (function () {
|
|
25
26
|
}))
|
26
27
|
};
|
27
28
|
|
29
|
+
case JOBS_ADDED:
|
30
|
+
updateJobs = action.payload.map(job => ({
|
31
|
+
title: job.title || job.description,
|
32
|
+
...job
|
33
|
+
}));
|
34
|
+
updateJobs = _.unionWith(updateJobs, state.jobs, (j1, j2) => {
|
35
|
+
return j1.id === j2.id;
|
36
|
+
});
|
37
|
+
return { ...state,
|
38
|
+
jobs: updateJobs
|
39
|
+
};
|
40
|
+
|
28
41
|
case JOB_ADDED:
|
29
42
|
updateJobs = [...state.jobs];
|
30
43
|
index = updateJobs.findIndex(item => item.id === action.payload.id);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["REHYDRATE","JOBS_LOADED","JOB_ADDED","ActionTypes","REDUCER_KEY","INITIAL_STATE","jobs","state","action","updateJobs","index","type","LOGOUT","CHANGE_ROLE","payload","map","job","title","description","
|
1
|
+
{"version":3,"names":["_","REHYDRATE","JOBS_LOADED","JOB_ADDED","JOBS_ADDED","ActionTypes","REDUCER_KEY","INITIAL_STATE","jobs","state","action","updateJobs","index","type","LOGOUT","CHANGE_ROLE","payload","map","job","title","description","unionWith","j1","j2","id","findIndex","item","push"],"sources":["JobsReducer.js"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport _ from 'lodash';\nimport { REHYDRATE } from 'redux-persist';\nimport { JOBS_LOADED, JOB_ADDED, JOBS_ADDED } from '../actions/types';\nimport { ActionTypes } from '../core.config';\n\nconst REDUCER_KEY = 'jobs';\n\nconst INITIAL_STATE = {\n jobs: [],\n};\n\nexport default (state = INITIAL_STATE, action) => {\n let updateJobs = [];\n let index = 0;\n\n switch (action.type) {\n case ActionTypes.LOGOUT:\n case ActionTypes.CHANGE_ROLE:\n return INITIAL_STATE;\n case JOBS_LOADED:\n return { ...state, jobs: action.payload.map(job => ({ title: job.title || job.description, ...job })) };\n case JOBS_ADDED:\n updateJobs = action.payload.map(job => ({ title: job.title || job.description, ...job }));\n updateJobs = _.unionWith(updateJobs, state.jobs, (j1, j2) => {\n return j1.id === j2.id;\n });\n return { ...state, jobs: updateJobs };\n case JOB_ADDED:\n updateJobs = [...state.jobs];\n index = updateJobs.findIndex(item => item.id === action.payload.id);\n if (index > -1) {\n updateJobs[index] = action.payload;\n } else {\n updateJobs.push(action.payload);\n }\n return { ...state, jobs: updateJobs };\n case REHYDRATE:\n if (!action.payload) return state;\n if (action.payload[REDUCER_KEY]) {\n if (action.payload[REDUCER_KEY].jobs == null) {\n action.payload[REDUCER_KEY].jobs = [];\n }\n return action.payload[REDUCER_KEY];\n }\n return state;\n default:\n return state;\n }\n};\n"],"mappings":"AAAA;AACA,OAAOA,CAAP,MAAc,QAAd;AACA,SAASC,SAAT,QAA0B,eAA1B;AACA,SAASC,WAAT,EAAsBC,SAAtB,EAAiCC,UAAjC,QAAmD,kBAAnD;AACA,SAASC,WAAT,QAA4B,gBAA5B;AAEA,MAAMC,WAAW,GAAG,MAApB;AAEA,MAAMC,aAAa,GAAG;EACpBC,IAAI,EAAE;AADc,CAAtB;AAIA,gBAAe,YAAmC;EAAA,IAAlCC,KAAkC,uEAA1BF,aAA0B;EAAA,IAAXG,MAAW;EAChD,IAAIC,UAAU,GAAG,EAAjB;EACA,IAAIC,KAAK,GAAG,CAAZ;;EAEA,QAAQF,MAAM,CAACG,IAAf;IACE,KAAKR,WAAW,CAACS,MAAjB;IACA,KAAKT,WAAW,CAACU,WAAjB;MACE,OAAOR,aAAP;;IACF,KAAKL,WAAL;MACE,OAAO,EAAE,GAAGO,KAAL;QAAYD,IAAI,EAAEE,MAAM,CAACM,OAAP,CAAeC,GAAf,CAAmBC,GAAG,KAAK;UAAEC,KAAK,EAAED,GAAG,CAACC,KAAJ,IAAaD,GAAG,CAACE,WAA1B;UAAuC,GAAGF;QAA1C,CAAL,CAAtB;MAAlB,CAAP;;IACF,KAAKd,UAAL;MACEO,UAAU,GAAGD,MAAM,CAACM,OAAP,CAAeC,GAAf,CAAmBC,GAAG,KAAK;QAAEC,KAAK,EAAED,GAAG,CAACC,KAAJ,IAAaD,GAAG,CAACE,WAA1B;QAAuC,GAAGF;MAA1C,CAAL,CAAtB,CAAb;MACAP,UAAU,GAAGX,CAAC,CAACqB,SAAF,CAAYV,UAAZ,EAAwBF,KAAK,CAACD,IAA9B,EAAoC,CAACc,EAAD,EAAKC,EAAL,KAAY;QAC3D,OAAOD,EAAE,CAACE,EAAH,KAAUD,EAAE,CAACC,EAApB;MACD,CAFY,CAAb;MAGA,OAAO,EAAE,GAAGf,KAAL;QAAYD,IAAI,EAAEG;MAAlB,CAAP;;IACF,KAAKR,SAAL;MACEQ,UAAU,GAAG,CAAC,GAAGF,KAAK,CAACD,IAAV,CAAb;MACAI,KAAK,GAAGD,UAAU,CAACc,SAAX,CAAqBC,IAAI,IAAIA,IAAI,CAACF,EAAL,KAAYd,MAAM,CAACM,OAAP,CAAeQ,EAAxD,CAAR;;MACA,IAAIZ,KAAK,GAAG,CAAC,CAAb,EAAgB;QACdD,UAAU,CAACC,KAAD,CAAV,GAAoBF,MAAM,CAACM,OAA3B;MACD,CAFD,MAEO;QACLL,UAAU,CAACgB,IAAX,CAAgBjB,MAAM,CAACM,OAAvB;MACD;;MACD,OAAO,EAAE,GAAGP,KAAL;QAAYD,IAAI,EAAEG;MAAlB,CAAP;;IACF,KAAKV,SAAL;MACE,IAAI,CAACS,MAAM,CAACM,OAAZ,EAAqB,OAAOP,KAAP;;MACrB,IAAIC,MAAM,CAACM,OAAP,CAAeV,WAAf,CAAJ,EAAiC;QAC/B,IAAII,MAAM,CAACM,OAAP,CAAeV,WAAf,EAA4BE,IAA5B,IAAoC,IAAxC,EAA8C;UAC5CE,MAAM,CAACM,OAAP,CAAeV,WAAf,EAA4BE,IAA5B,GAAmC,EAAnC;QACD;;QACD,OAAOE,MAAM,CAACM,OAAP,CAAeV,WAAf,CAAP;MACD;;MACD,OAAOG,KAAP;;IACF;MACE,OAAOA,KAAP;EA/BJ;AAiCD,CArCD"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@plusscommunities/pluss-maintenance-app",
|
3
|
-
"version": "2.
|
3
|
+
"version": "2.2.2-beta.0",
|
4
4
|
"description": "Extension package to enable maintenance on Pluss Communities Platform",
|
5
5
|
"main": "dist/module/index.js",
|
6
6
|
"module": "dist/module/index.js",
|
@@ -21,7 +21,7 @@
|
|
21
21
|
"author": "Phillip Suh",
|
22
22
|
"license": "ISC",
|
23
23
|
"dependencies": {
|
24
|
-
"@plusscommunities/pluss-core-app": "1.
|
24
|
+
"@plusscommunities/pluss-core-app": "1.8.1-beta.0",
|
25
25
|
"axios": "^0.16.2",
|
26
26
|
"lodash": "^4.17.4",
|
27
27
|
"moment": "^2.18.1",
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { JOBS_LOADED, JOB_ADDED } from './types';
|
1
|
+
import { JOBS_LOADED, JOB_ADDED, JOBS_ADDED } from './types';
|
2
2
|
|
3
3
|
export const jobsLoaded = jobs => {
|
4
4
|
return {
|
@@ -13,3 +13,10 @@ export const jobAdded = job => {
|
|
13
13
|
payload: job,
|
14
14
|
};
|
15
15
|
};
|
16
|
+
|
17
|
+
export const jobsAdded = jobs => {
|
18
|
+
return {
|
19
|
+
type: JOBS_ADDED,
|
20
|
+
payload: jobs,
|
21
|
+
};
|
22
|
+
};
|