@plusscommunities/pluss-maintenance-app 6.1.2-beta.0 → 7.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/module/actions/JobActions.js +44 -1
  2. package/dist/module/actions/JobActions.js.map +1 -1
  3. package/dist/module/actions/types.js +3 -0
  4. package/dist/module/actions/types.js.map +1 -1
  5. package/dist/module/apis/index.js +3 -1
  6. package/dist/module/apis/index.js.map +1 -1
  7. package/dist/module/apis/{generalActions.js → maintenanceActions.js} +44 -45
  8. package/dist/module/apis/maintenanceActions.js.map +1 -0
  9. package/dist/module/components/FilterPopupMenu.js +78 -26
  10. package/dist/module/components/FilterPopupMenu.js.map +1 -1
  11. package/dist/module/components/MaintenanceList.js +70 -45
  12. package/dist/module/components/MaintenanceList.js.map +1 -1
  13. package/dist/module/components/MaintenanceListItem.js +54 -42
  14. package/dist/module/components/MaintenanceListItem.js.map +1 -1
  15. package/dist/module/components/MaintenanceWidgetItem.js +16 -20
  16. package/dist/module/components/MaintenanceWidgetItem.js.map +1 -1
  17. package/dist/module/components/PrioritySelectorPopup.js +82 -0
  18. package/dist/module/components/PrioritySelectorPopup.js.map +1 -0
  19. package/dist/module/components/StatusSelectorPopup.js +9 -13
  20. package/dist/module/components/StatusSelectorPopup.js.map +1 -1
  21. package/dist/module/components/WidgetSmall.js +13 -9
  22. package/dist/module/components/WidgetSmall.js.map +1 -1
  23. package/dist/module/feature.config.js +3 -3
  24. package/dist/module/feature.config.js.map +1 -1
  25. package/dist/module/helper.js +39 -17
  26. package/dist/module/helper.js.map +1 -1
  27. package/dist/module/reducers/JobsReducer.js +33 -3
  28. package/dist/module/reducers/JobsReducer.js.map +1 -1
  29. package/dist/module/screens/JobTypePicker.js +3 -3
  30. package/dist/module/screens/JobTypePicker.js.map +1 -1
  31. package/dist/module/screens/MaintenancePage.js +2 -2
  32. package/dist/module/screens/RequestDetail.js +340 -88
  33. package/dist/module/screens/RequestDetail.js.map +1 -1
  34. package/dist/module/screens/RequestNotes.js +437 -26
  35. package/dist/module/screens/RequestNotes.js.map +1 -1
  36. package/dist/module/screens/ServiceRequest.js +596 -93
  37. package/dist/module/screens/ServiceRequest.js.map +1 -1
  38. package/dist/module/values.config.a.js +9 -1
  39. package/dist/module/values.config.a.js.map +1 -1
  40. package/dist/module/values.config.default.js +15 -1
  41. package/dist/module/values.config.default.js.map +1 -1
  42. package/dist/module/values.config.forms.js +42 -0
  43. package/dist/module/values.config.forms.js.map +1 -0
  44. package/dist/module/values.config.js +34 -20
  45. package/dist/module/values.config.js.map +1 -1
  46. package/package.json +11 -11
  47. package/src/actions/JobActions.js +53 -1
  48. package/src/actions/types.js +4 -0
  49. package/src/apis/index.js +5 -1
  50. package/src/apis/{generalActions.js → maintenanceActions.js} +51 -43
  51. package/src/components/FilterPopupMenu.js +75 -24
  52. package/src/components/MaintenanceList.js +64 -33
  53. package/src/components/MaintenanceListItem.js +53 -31
  54. package/src/components/MaintenanceWidgetItem.js +18 -14
  55. package/src/components/PrioritySelectorPopup.js +79 -0
  56. package/src/components/StatusSelectorPopup.js +8 -13
  57. package/src/components/WidgetSmall.js +9 -7
  58. package/src/feature.config.js +15 -13
  59. package/src/helper.js +51 -13
  60. package/src/reducers/JobsReducer.js +27 -2
  61. package/src/screens/JobTypePicker.js +1 -1
  62. package/src/screens/RequestDetail.js +324 -75
  63. package/src/screens/RequestNotes.js +434 -33
  64. package/src/screens/ServiceRequest.js +642 -157
  65. package/src/values.config.a.js +8 -0
  66. package/src/values.config.default.js +14 -0
  67. package/src/values.config.forms.js +42 -0
  68. package/src/values.config.js +34 -20
  69. package/dist/module/apis/generalActions.js.map +0 -1
  70. package/dist/module/values.config.b.js +0 -28
  71. package/dist/module/values.config.b.js.map +0 -1
  72. package/dist/module/values.config.c.js +0 -28
  73. package/dist/module/values.config.c.js.map +0 -1
  74. package/dist/module/values.config.d.js +0 -28
  75. package/dist/module/values.config.d.js.map +0 -1
  76. package/src/values.config.b.js +0 -28
  77. package/src/values.config.c.js +0 -28
  78. package/src/values.config.d.js +0 -28
@@ -1,15 +1,15 @@
1
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
1
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
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
5
  import { View, StyleSheet, FlatList, TouchableOpacity, Text } from 'react-native';
6
6
  import _ from 'lodash';
7
7
  import { connect } from 'react-redux';
8
- import { generalActions } from '../apis';
9
- import { jobsLoaded, jobAdded, jobsAdded } from '../actions';
8
+ import { maintenanceActions } from '../apis';
9
+ import { jobsLoaded, jobAdded, jobsAdded, jobStatusesUpdate, jobHideSeenUpdate, jobsFilterLoaded } from '../actions';
10
10
  import MaintenanceListItem from '../components/MaintenanceListItem';
11
11
  import FilterPopupMenu from './FilterPopupMenu';
12
- import { Components, Colours, Config, Helper } from '../core.config';
12
+ import { Components, Colours, Helper } from '../core.config';
13
13
  import { values } from '../values.config';
14
14
  class MaintenanceList extends Component {
15
15
  constructor(props) {
@@ -18,13 +18,11 @@ class MaintenanceList extends Component {
18
18
  this.onLoadingChanged(true, async () => {
19
19
  try {
20
20
  const {
21
- selectedStatus,
22
- selectedType
23
- } = this.state;
24
- // console.log('filters', { selectedStatus, selectedType });
25
- const res = await generalActions.getJobsRecursive(this.props.site, selectedStatus, selectedType);
26
- // console.log('refresh', JSON.stringify(res, null, 2));
27
- if (selectedStatus !== this.initialStatus || !_.isEmpty(selectedType)) {
21
+ jobfilters
22
+ } = this.props;
23
+ const res = await maintenanceActions.getJobsRecursive(this.props.site, jobfilters.status, jobfilters.priority, jobfilters.type);
24
+ // console.log('refresh', res ? JSON.stringify(res[0], null, 2) : null);
25
+ if (!_.isEmpty(jobfilters.status) || !_.isEmpty(jobfilters.priority) || !_.isEmpty(jobfilters.type)) {
28
26
  this.props.jobsAdded(res);
29
27
  } else {
30
28
  this.props.jobsLoaded(res);
@@ -39,7 +37,7 @@ class MaintenanceList extends Component {
39
37
  _defineProperty(this, "refreshTypes", async () => {
40
38
  const {
41
39
  data
42
- } = await generalActions.getJobTypes(Helper.getSite(this.props.site));
40
+ } = await maintenanceActions.getJobTypes(Helper.getSite(this.props.site));
43
41
  const types = data.map(t => {
44
42
  return {
45
43
  label: t.typeName,
@@ -59,7 +57,7 @@ class MaintenanceList extends Component {
59
57
  if (this.state.loading) return;
60
58
  this.onLoadingChanged(true, async () => {
61
59
  try {
62
- const job = await generalActions.getJobByJobId(this.props.site, jobId);
60
+ const job = await maintenanceActions.getJobByJobId(this.props.site, jobId);
63
61
  // console.log('fetchJob', job?.data);
64
62
  this.props.jobAdded(job.data);
65
63
  } catch (error) {
@@ -71,9 +69,10 @@ class MaintenanceList extends Component {
71
69
  });
72
70
  _defineProperty(this, "resetDataSource", (source = '') => {
73
71
  const {
74
- searchText,
75
- selectedStatus,
76
- selectedType
72
+ jobfilters
73
+ } = this.props;
74
+ const {
75
+ searchText
77
76
  } = this.state;
78
77
  const {
79
78
  jobs
@@ -90,8 +89,10 @@ class MaintenanceList extends Component {
90
89
  });
91
90
  if (!jobIdMatch) this.fetchJob(searchText);
92
91
  }
93
- if (selectedStatus) filteredList = filteredList.filter(j => selectedStatus.includes(j.status));
94
- if (selectedType) filteredList = filteredList.filter(j => selectedType.includes(j.type));
92
+ if (jobfilters.status) filteredList = filteredList.filter(j => jobfilters.status.includes(j.status));
93
+ if (jobfilters.priority) filteredList = filteredList.filter(j => jobfilters.priority.includes(j.priority));
94
+ if (jobfilters.type) filteredList = filteredList.filter(j => jobfilters.type.includes(j.type));
95
+ if (jobfilters.assignee) filteredList = filteredList.filter(j => jobfilters.assignee.includes(j.AssigneeId));
95
96
  if (jobIdMatch) {
96
97
  const jobIndex = filteredList.indexOf(jobIdMatch);
97
98
  if (jobIndex > -1) {
@@ -128,39 +129,55 @@ class MaintenanceList extends Component {
128
129
  });
129
130
  });
130
131
  _defineProperty(this, "onSelectFilter", selected => {
131
- this.setState({
132
- selectedStatus: selected.status,
133
- selectedType: selected.type
134
- }, () => {
135
- this.resetDataSource();
136
- this.onToggleFilter();
137
- });
132
+ this.props.jobsFilterLoaded(selected);
133
+ this.onToggleFilter();
134
+ });
135
+ _defineProperty(this, "getFilterButtonText", () => {
136
+ const {
137
+ jobfilters
138
+ } = this.props;
139
+ const filterTexts = [];
140
+ if (!_.isEmpty(jobfilters.status)) {
141
+ filterTexts.push(jobfilters.statusText);
142
+ }
143
+ if (!_.isEmpty(jobfilters.priority)) {
144
+ filterTexts.push(jobfilters.priority);
145
+ }
146
+ if (!_.isEmpty(jobfilters.type)) {
147
+ filterTexts.push(jobfilters.type);
148
+ }
149
+ if (!_.isEmpty(jobfilters.assignee)) {
150
+ filterTexts.push(jobfilters.assigneeName);
151
+ }
152
+ if (_.isEmpty(filterTexts)) {
153
+ return 'Filter';
154
+ }
155
+ return `Filtering by ${filterTexts.join(', ')}`;
138
156
  });
139
- this.initialStatus = props.hasPermission ? 'Unassigned|In Progress' : '';
140
157
  this.state = {
141
158
  types: [],
142
159
  filteredList: props.jobs,
143
160
  loading: false,
144
161
  searchText: '',
145
- showFilterPopup: false,
146
- selectedStatus: this.initialStatus,
147
- selectedType: ''
162
+ showFilterPopup: false
148
163
  };
149
164
  }
150
165
  componentDidMount() {
166
+ this.props.jobStatusesUpdate(this.props.site);
167
+ this.props.jobHideSeenUpdate(this.props.site);
151
168
  this.refresh();
152
169
  this.refreshTypes();
153
170
  this.resetDataSource();
154
171
  }
155
172
  componentDidUpdate(prevProps) {
156
173
  if (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();
157
- if (!_.isEqual(prevProps.jobs, this.props.jobs)) this.resetDataSource();
174
+ if (!_.isEqual(prevProps.jobs, this.props.jobs) || !_.isEqual(prevProps.jobfilters, this.props.jobfilters)) this.resetDataSource();
158
175
  }
159
176
  getEmptyStateText() {
160
177
  if (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {
161
178
  return this.props.options.EmptyText;
162
179
  }
163
- return this.props.userCategory === 'staff' ? Config.env.strings.EMPTY_REQUESTS_STAFF : Config.env.strings.EMPTY_REQUESTS_USER;
180
+ return this.props.userCategory === 'staff' ? values.emptyRequestsStaff : values.emptyRequestsUser;
164
181
  }
165
182
  renderEmptyList() {
166
183
  return this.state.loading ? null : /*#__PURE__*/React.createElement(Components.EmptyStateMain, {
@@ -179,14 +196,14 @@ class MaintenanceList extends Component {
179
196
  style: [styles.filterButtonText, {
180
197
  color: this.props.colourBrandingMain
181
198
  }]
182
- }, "Filter")));
199
+ }, this.getFilterButtonText())));
183
200
  }
184
201
  renderSearch() {
185
202
  if (!this.props.hasPermission) return null;
186
203
  return /*#__PURE__*/React.createElement(View, {
187
204
  style: styles.searchContainer
188
205
  }, /*#__PURE__*/React.createElement(Components.GenericInput, {
189
- placeholder: "Search by Job ID or Location",
206
+ placeholder: `Search by ${values.textEntityName} ID or Address`,
190
207
  value: this.state.searchText,
191
208
  onChangeText: this.onSearchText,
192
209
  onSubmitEditing: this.onSearchSubmit,
@@ -203,7 +220,7 @@ class MaintenanceList extends Component {
203
220
  } = this.props;
204
221
  return /*#__PURE__*/React.createElement(View, null, ListHeaderComponent ? ListHeaderComponent : /*#__PURE__*/React.createElement(View, {
205
222
  style: {
206
- height: 32
223
+ height: 8
207
224
  }
208
225
  }), this.renderFilterButton(), this.renderSearch());
209
226
  }
@@ -232,18 +249,21 @@ class MaintenanceList extends Component {
232
249
  });
233
250
  }
234
251
  renderFilterPopup() {
252
+ const {
253
+ jobfilters
254
+ } = this.props;
235
255
  const {
236
256
  showFilterPopup,
237
- types,
238
- selectedStatus,
239
- selectedType
257
+ types
240
258
  } = this.state;
241
259
  if (!showFilterPopup) return null;
242
260
  return /*#__PURE__*/React.createElement(FilterPopupMenu, {
243
261
  site: this.props.site,
244
262
  types: types,
245
- status: selectedStatus,
246
- type: selectedType,
263
+ status: jobfilters.status,
264
+ priority: jobfilters.priority,
265
+ assignee: jobfilters.assignee,
266
+ type: jobfilters.type,
247
267
  onClose: this.onSelectFilter
248
268
  });
249
269
  }
@@ -290,9 +310,9 @@ const styles = StyleSheet.create({
290
310
  paddingHorizontal: 16
291
311
  },
292
312
  filterButton: {
293
- position: 'absolute',
294
- right: 20,
295
- top: -32
313
+ paddingBottom: 8,
314
+ paddingHorizontal: 16,
315
+ flexDirection: 'row-reverse'
296
316
  },
297
317
  filterButtonText: {
298
318
  fontFamily: 'sf-semibold',
@@ -313,13 +333,18 @@ const mapStateToProps = state => {
313
333
  site: user.site,
314
334
  userCategory: user.category,
315
335
  colourBrandingMain: Colours.getMainBrandingColourFromState(state),
316
- dataUpdated: notifications.dataUpdated[values.updateKey]
336
+ dataUpdated: notifications.dataUpdated[values.updateKey],
337
+ statusTypes: state[values.reducerKey].jobstatuses,
338
+ jobfilters: state[values.reducerKey].jobfilters
317
339
  };
318
340
  };
319
341
  export default connect(mapStateToProps, {
320
342
  jobsLoaded,
321
343
  jobAdded,
322
- jobsAdded
344
+ jobsAdded,
345
+ jobStatusesUpdate,
346
+ jobHideSeenUpdate,
347
+ jobsFilterLoaded
323
348
  }, null, {
324
349
  forwardRef: true
325
350
  })(MaintenanceList);
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","View","StyleSheet","FlatList","TouchableOpacity","Text","_","connect","generalActions","jobsLoaded","jobAdded","jobsAdded","MaintenanceListItem","FilterPopupMenu","Components","Colours","Config","Helper","values","MaintenanceList","constructor","props","_defineProperty","onLoadingChanged","selectedStatus","selectedType","state","res","getJobsRecursive","site","initialStatus","isEmpty","error","console","log","data","getJobTypes","getSite","types","map","t","label","typeName","value","splice","setState","jobId","loading","job","getJobByJobId","source","searchText","jobs","filteredList","jobIdMatch","find","j","filter","room","toLowerCase","indexOf","fetchJob","includes","status","type","jobIndex","unshift","refresh","callback","resetDataSource","showFilterPopup","selected","onToggleFilter","hasPermission","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","env","strings","EMPTY_REQUESTS_STAFF","EMPTY_REQUESTS_USER","renderEmptyList","createElement","EmptyStateMain","title","style","marginHorizontal","renderFilterButton","onPress","styles","filterButton","filterButtonText","color","colourBrandingMain","renderSearch","searchContainer","GenericInput","placeholder","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","position","right","top","mapStateToProps","user","notifications","reducerKey","jobsOrdered","orderBy","permissions","category","getMainBrandingColourFromState","updateKey","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';\nimport { values } from '../values.config';\n\nclass MaintenanceList extends Component {\n constructor(props) {\n super(props);\n\n this.initialStatus = props.hasPermission ? 'Unassigned|In Progress' : '';\n\n this.state = {\n types: [],\n filteredList: props.jobs,\n loading: false,\n searchText: '',\n showFilterPopup: false,\n selectedStatus: this.initialStatus,\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.getJobsRecursive(this.props.site, selectedStatus, selectedType);\n // console.log('refresh', JSON.stringify(res, null, 2));\n if (selectedStatus !== this.initialStatus || !_.isEmpty(selectedType)) {\n this.props.jobsAdded(res);\n } else {\n this.props.jobsLoaded(res);\n }\n } catch (error) {\n console.log('refresh error', error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\n };\n\n refreshTypes = async () => {\n const { data } = await 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 let jobIdMatch = null;\n if (searchText) {\n jobIdMatch = _.find(jobs, j => j.jobId === searchText);\n filteredList = jobs.filter(j => {\n if (j.room && j.room.toLowerCase().indexOf(searchText.toLowerCase()) > -1) {\n return true;\n }\n return false;\n });\n if (!jobIdMatch) this.fetchJob(searchText);\n }\n if (selectedStatus) filteredList = filteredList.filter(j => selectedStatus.includes(j.status));\n if (selectedType) filteredList = filteredList.filter(j => selectedType.includes(j.type));\n if (jobIdMatch) {\n const jobIndex = filteredList.indexOf(jobIdMatch);\n if (jobIndex > -1) {\n filteredList.splice(jobIndex, 1);\n }\n filteredList.unshift(jobIdMatch);\n }\n if (source !== 'search') this.refresh();\n\n this.setState({ filteredList });\n };\n\n onLoadingChanged = (loading, callback) => {\n this.setState({ loading }, () => {\n if (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);\n if (callback) callback();\n });\n };\n\n onSearchText = value => {\n this.setState({ searchText: value }, () => {\n if (_.isEmpty(this.state.searchText)) this.resetDataSource('search');\n });\n };\n\n onSearchSubmit = () => {\n this.resetDataSource('search');\n };\n\n onToggleFilter = () => {\n this.setState({ showFilterPopup: !this.state.showFilterPopup });\n };\n\n onSelectFilter = selected => {\n this.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 or Location\"\n value={this.state.searchText}\n onChangeText={this.onSearchText}\n onSubmitEditing={this.onSearchSubmit}\n squaredCorners\n hasClear\n // keyboardType={'numeric'}\n returnKeyType={'done'}\n />\n </View>\n );\n }\n\n renderListHeader() {\n const { ListHeaderComponent } = this.props;\n return (\n <View>\n {ListHeaderComponent ? ListHeaderComponent : <View style={{ height: 32 }} />}\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, notifications } = state;\n const jobs = state[values.reducerKey];\n const jobsOrdered = _.orderBy(jobs.jobs, ['createdUnix'], ['desc']);\n const hasPermission = _.includes(user.permissions, 'maintenanceTracking');\n\n return {\n hasPermission,\n jobs: jobsOrdered,\n site: user.site,\n userCategory: user.category,\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n dataUpdated: notifications.dataUpdated[values.updateKey],\n };\n};\n\nexport default connect(mapStateToProps, { jobsLoaded, jobAdded, jobsAdded }, null, { forwardRef: true })(MaintenanceList);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","Component","View","StyleSheet","FlatList","TouchableOpacity","Text","_","connect","maintenanceActions","jobsLoaded","jobAdded","jobsAdded","jobStatusesUpdate","jobHideSeenUpdate","jobsFilterLoaded","MaintenanceListItem","FilterPopupMenu","Components","Colours","Helper","values","MaintenanceList","constructor","props","_defineProperty","onLoadingChanged","jobfilters","res","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","assigneeName","join","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","emptyRequestsStaff","emptyRequestsUser","renderEmptyList","createElement","EmptyStateMain","title","style","marginHorizontal","renderFilterButton","onPress","styles","filterButton","filterButtonText","color","colourBrandingMain","getFilterButtonText","renderSearch","hasPermission","searchContainer","GenericInput","placeholder","textEntityName","onChangeText","onSearchText","onSubmitEditing","onSearchSubmit","squaredCorners","hasClear","returnKeyType","renderListHeader","ListHeaderComponent","height","renderList","keyboardShouldPersistTaps","flex","contentContainerStyle","paddingBottom","keyExtractor","item","id","renderItem","itemStyle","ListEmptyComponent","renderFilterPopup","onClose","onSelectFilter","render","container","create","backgroundColor","filterContainerOuter","flexDirection","justifyContent","alignItems","paddingHorizontal","paddingVertical","filterTitle","fontFamily","fontSize","letterSpacing","filterContainer","filterText","marginRight","filterIcon","mapStateToProps","user","notifications","reducerKey","jobsOrdered","orderBy","permissions","category","getMainBrandingColourFromState","updateKey","statusTypes","jobstatuses","forwardRef"],"sources":["MaintenanceList.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, StyleSheet, FlatList, TouchableOpacity, Text } from 'react-native';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { maintenanceActions } from '../apis';\nimport { jobsLoaded, jobAdded, jobsAdded, jobStatusesUpdate, jobHideSeenUpdate, jobsFilterLoaded } from '../actions';\nimport MaintenanceListItem from '../components/MaintenanceListItem';\nimport FilterPopupMenu from './FilterPopupMenu';\nimport { Components, Colours, Helper } from '../core.config';\nimport { values } from '../values.config';\n\nclass MaintenanceList extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n types: [],\n filteredList: props.jobs,\n loading: false,\n searchText: '',\n showFilterPopup: false,\n };\n }\n\n componentDidMount() {\n this.props.jobStatusesUpdate(this.props.site);\n this.props.jobHideSeenUpdate(this.props.site);\n this.refresh();\n this.refreshTypes();\n this.resetDataSource();\n }\n\n componentDidUpdate(prevProps) {\n if (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n if (!_.isEqual(prevProps.jobs, this.props.jobs) || !_.isEqual(prevProps.jobfilters, this.props.jobfilters)) this.resetDataSource();\n }\n\n refresh = () => {\n this.onLoadingChanged(true, async () => {\n try {\n const { jobfilters } = this.props;\n const res = await maintenanceActions.getJobsRecursive(this.props.site, jobfilters.status, jobfilters.priority, jobfilters.type);\n // console.log('refresh', res ? JSON.stringify(res[0], null, 2) : null);\n if (!_.isEmpty(jobfilters.status) || !_.isEmpty(jobfilters.priority) || !_.isEmpty(jobfilters.type)) {\n this.props.jobsAdded(res);\n } else {\n this.props.jobsLoaded(res);\n }\n } catch (error) {\n console.log('refresh error', error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\n };\n\n refreshTypes = async () => {\n const { data } = await maintenanceActions.getJobTypes(Helper.getSite(this.props.site));\n const types = data.map(t => {\n return { label: t.typeName, value: t.typeName };\n });\n types.splice(0, 0, { label: 'All', value: '' });\n // console.log('refreshTypes', types);\n this.setState({ types });\n };\n\n fetchJob = jobId => {\n if (this.state.loading) return;\n\n this.onLoadingChanged(true, async () => {\n try {\n const job = await maintenanceActions.getJobByJobId(this.props.site, jobId);\n // console.log('fetchJob', job?.data);\n this.props.jobAdded(job.data);\n } catch (error) {\n console.log('fetchJob error', error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\n };\n\n getEmptyStateText() {\n if (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n return this.props.options.EmptyText;\n }\n return this.props.userCategory === 'staff' ? values.emptyRequestsStaff : values.emptyRequestsUser;\n }\n\n resetDataSource = (source = '') => {\n const { jobfilters } = this.props;\n const { searchText } = this.state;\n const { jobs } = this.props;\n\n let filteredList = jobs;\n let jobIdMatch = null;\n if (searchText) {\n jobIdMatch = _.find(jobs, j => j.jobId === searchText);\n filteredList = jobs.filter(j => {\n if (j.room && j.room.toLowerCase().indexOf(searchText.toLowerCase()) > -1) {\n return true;\n }\n return false;\n });\n if (!jobIdMatch) this.fetchJob(searchText);\n }\n if (jobfilters.status) filteredList = filteredList.filter(j => jobfilters.status.includes(j.status));\n if (jobfilters.priority) filteredList = filteredList.filter(j => jobfilters.priority.includes(j.priority));\n if (jobfilters.type) filteredList = filteredList.filter(j => jobfilters.type.includes(j.type));\n if (jobfilters.assignee) filteredList = filteredList.filter(j => jobfilters.assignee.includes(j.AssigneeId));\n if (jobIdMatch) {\n const jobIndex = filteredList.indexOf(jobIdMatch);\n if (jobIndex > -1) {\n filteredList.splice(jobIndex, 1);\n }\n filteredList.unshift(jobIdMatch);\n }\n if (source !== 'search') this.refresh();\n\n this.setState({ filteredList });\n };\n\n onLoadingChanged = (loading, callback) => {\n this.setState({ loading }, () => {\n if (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);\n if (callback) callback();\n });\n };\n\n onSearchText = value => {\n this.setState({ searchText: value }, () => {\n if (_.isEmpty(this.state.searchText)) this.resetDataSource('search');\n });\n };\n\n onSearchSubmit = () => {\n this.resetDataSource('search');\n };\n\n onToggleFilter = () => {\n this.setState({ showFilterPopup: !this.state.showFilterPopup });\n };\n\n onSelectFilter = selected => {\n this.props.jobsFilterLoaded(selected);\n this.onToggleFilter();\n };\n\n getFilterButtonText = () => {\n const { jobfilters } = this.props;\n const filterTexts = [];\n if (!_.isEmpty(jobfilters.status)) {\n filterTexts.push(jobfilters.statusText);\n }\n if (!_.isEmpty(jobfilters.priority)) {\n filterTexts.push(jobfilters.priority);\n }\n if (!_.isEmpty(jobfilters.type)) {\n filterTexts.push(jobfilters.type);\n }\n if (!_.isEmpty(jobfilters.assignee)) {\n filterTexts.push(jobfilters.assigneeName);\n }\n if (_.isEmpty(filterTexts)) {\n return 'Filter';\n }\n return `Filtering by ${filterTexts.join(', ')}`;\n };\n\n renderEmptyList() {\n return this.state.loading ? null : <Components.EmptyStateMain title={this.getEmptyStateText()} style={{ marginHorizontal: 16 }} />;\n }\n\n renderFilterButton() {\n return (\n <TouchableOpacity onPress={this.onToggleFilter}>\n <View style={styles.filterButton}>\n <Text style={[styles.filterButtonText, { color: this.props.colourBrandingMain }]}>{this.getFilterButtonText()}</Text>\n </View>\n </TouchableOpacity>\n );\n }\n\n renderSearch() {\n if (!this.props.hasPermission) return null;\n\n return (\n <View style={styles.searchContainer}>\n <Components.GenericInput\n placeholder={`Search by ${values.textEntityName} ID or Address`}\n value={this.state.searchText}\n onChangeText={this.onSearchText}\n onSubmitEditing={this.onSearchSubmit}\n squaredCorners\n hasClear\n // keyboardType={'numeric'}\n returnKeyType={'done'}\n />\n </View>\n );\n }\n\n renderListHeader() {\n const { ListHeaderComponent } = this.props;\n return (\n <View>\n {ListHeaderComponent ? ListHeaderComponent : <View style={{ height: 8 }} />}\n {this.renderFilterButton()}\n {this.renderSearch()}\n </View>\n );\n }\n\n renderList() {\n const { filteredList } = this.state;\n\n return (\n <FlatList\n keyboardShouldPersistTaps=\"always\"\n style={{ flex: 1 }}\n contentContainerStyle={{ paddingBottom: 16 }}\n data={filteredList}\n keyExtractor={item => item.id}\n renderItem={({ item }) => <MaintenanceListItem style={this.props.itemStyle} job={item} />}\n ListEmptyComponent={this.renderEmptyList()}\n ListHeaderComponent={this.renderListHeader()}\n />\n );\n }\n\n renderFilterPopup() {\n const { jobfilters } = this.props;\n const { showFilterPopup, types } = this.state;\n if (!showFilterPopup) return null;\n\n return (\n <FilterPopupMenu\n site={this.props.site}\n types={types}\n status={jobfilters.status}\n priority={jobfilters.priority}\n assignee={jobfilters.assignee}\n type={jobfilters.type}\n onClose={this.onSelectFilter}\n />\n );\n }\n\n render() {\n return (\n <View style={[styles.container, this.props.style]}>\n {this.renderList()}\n {this.renderFilterPopup()}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#fff',\n },\n filterContainerOuter: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n paddingHorizontal: 16,\n paddingVertical: 16,\n },\n filterTitle: {\n fontFamily: 'sf-bold',\n fontSize: 11,\n letterSpacing: 0.8,\n color: '#4d4d4d',\n },\n filterContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n filterText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n marginRight: 6,\n },\n filterIcon: {\n fontSize: 20,\n },\n searchContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n paddingBottom: 8,\n paddingHorizontal: 16,\n },\n filterButton: {\n paddingBottom: 8,\n paddingHorizontal: 16,\n flexDirection: 'row-reverse',\n },\n filterButtonText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n },\n});\n\nconst mapStateToProps = state => {\n const { user, notifications } = state;\n const jobs = state[values.reducerKey];\n const jobsOrdered = _.orderBy(jobs.jobs, ['createdUnix'], ['desc']);\n const hasPermission = _.includes(user.permissions, 'maintenanceTracking');\n\n return {\n hasPermission,\n jobs: jobsOrdered,\n site: user.site,\n userCategory: user.category,\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n dataUpdated: notifications.dataUpdated[values.updateKey],\n statusTypes: state[values.reducerKey].jobstatuses,\n jobfilters: state[values.reducerKey].jobfilters,\n };\n};\n\nexport default connect(mapStateToProps, { jobsLoaded, jobAdded, jobsAdded, jobStatusesUpdate, jobHideSeenUpdate, jobsFilterLoaded }, null, { forwardRef: true })(\n MaintenanceList,\n);\n"],"mappings":"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","ignoreList":[]}
@@ -1,25 +1,13 @@
1
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
1
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
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
5
  import { Image, Text, TouchableOpacity, View, StyleSheet } from 'react-native';
6
6
  import _ from 'lodash';
7
- import { Icon } from 'react-native-elements';
7
+ import { Icon } from '@rneui/themed';
8
8
  import { connect } from 'react-redux';
9
9
  import moment from 'moment';
10
- // import {
11
- // getShadowStyle,
12
- // LINEGREY,
13
- // TEXT_DARK,
14
- // TEXT_LIGHT,
15
- // COLOUR_GREEN,
16
- // getMainBrandingColourFromState,
17
- // hexToRGBAstring,
18
- // getJobStatusProps,
19
- // jobStatusOptions,
20
- // } from '../../js';
21
- // import NavigationService from '../../js/NavigationService';
22
- import { getJobStatusProps, jobStatusOptions } from '../helper';
10
+ import { getJobStatus, getJobPriority } from '../helper';
23
11
  import { Services } from '../feature.config';
24
12
  import { Helper, Colours } from '../core.config';
25
13
  import { values } from '../values.config';
@@ -58,10 +46,11 @@ class MaintenanceListItem extends Component {
58
46
  }
59
47
  renderSeen() {
60
48
  const {
61
- job
49
+ job,
50
+ hideSeen
62
51
  } = this.props;
63
- const showSeen = !job.status || job.status === jobStatusOptions[0].name;
64
- if (!showSeen || !job.seen) {
52
+ const showSeen = !job.status || job.status === getJobStatus(null, this.props).text;
53
+ if (hideSeen || !showSeen || !job.seen) {
65
54
  return null;
66
55
  }
67
56
  return /*#__PURE__*/React.createElement(View, {
@@ -84,11 +73,10 @@ class MaintenanceListItem extends Component {
84
73
  } = this.props;
85
74
  const createdTime = moment(job.createdUnix);
86
75
  const createdTimeText = `${createdTime.format('ddd, D MMMM')} • ${createdTime.format('h:mma')}`;
87
- const activityTimeText = job.expectedDate ? moment(job.expectedDate).format('D MMMM') : '--';
88
- const {
89
- statusText,
90
- statusColor
91
- } = getJobStatusProps(job.status);
76
+ const assigneeText = job.Assignee ? `Assigned to\n${job.Assignee.displayName}` : '';
77
+ const status = getJobStatus(job.status, this.props);
78
+ const priority = getJobPriority(job.priority);
79
+ const isStaff = this.props.user.category === 'staff';
92
80
  return /*#__PURE__*/React.createElement(TouchableOpacity, {
93
81
  onPress: this.onPressJob
94
82
  }, /*#__PURE__*/React.createElement(View, {
@@ -103,7 +91,7 @@ class MaintenanceListItem extends Component {
103
91
  style: [styles.jobIdText, {
104
92
  color: this.props.colourBrandingMain
105
93
  }]
106
- }, `Job #${job.jobId}`) : null, /*#__PURE__*/React.createElement(Text, {
94
+ }, `${values.textEntityName} #${job.jobId}`) : null, /*#__PURE__*/React.createElement(Text, {
107
95
  style: styles.jobTitleText
108
96
  }, job.title), job.room ? /*#__PURE__*/React.createElement(Text, {
109
97
  style: styles.jobLocationText
@@ -116,7 +104,8 @@ class MaintenanceListItem extends Component {
116
104
  }, /*#__PURE__*/React.createElement(Text, {
117
105
  style: [styles.jobTypeText, {
118
106
  color: this.props.colourBrandingMain
119
- }]
107
+ }],
108
+ numberOfLines: 2
120
109
  }, job.type)), this.renderSeen())), /*#__PURE__*/React.createElement(View, {
121
110
  style: styles.jobTopRight
122
111
  }, /*#__PURE__*/React.createElement(Image, {
@@ -130,27 +119,29 @@ class MaintenanceListItem extends Component {
130
119
  style: styles.jobActivityContainer
131
120
  }, /*#__PURE__*/React.createElement(View, {
132
121
  style: [styles.jobStatusContainer, {
133
- backgroundColor: statusColor
122
+ backgroundColor: status === null || status === void 0 ? void 0 : status.color
134
123
  }]
135
- }, /*#__PURE__*/React.createElement(Icon, {
136
- name: "wrench",
137
- type: "font-awesome",
138
- iconStyle: styles.jobStatusIcon
139
- }), /*#__PURE__*/React.createElement(Text, {
124
+ }, /*#__PURE__*/React.createElement(Text, {
140
125
  style: styles.jobStatusText
141
- }, statusText)), /*#__PURE__*/React.createElement(View, {
126
+ }, status === null || status === void 0 ? void 0 : status.text)), /*#__PURE__*/React.createElement(View, {
142
127
  style: [styles.jobStatusLine, {
143
- borderColor: statusColor
128
+ borderColor: status === null || status === void 0 ? void 0 : status.color
144
129
  }]
145
130
  }, /*#__PURE__*/React.createElement(View, {
146
131
  style: styles.jobStatusLineMask
147
132
  })), /*#__PURE__*/React.createElement(View, {
148
133
  style: [styles.jobStatusCircle, {
149
- backgroundColor: statusColor
134
+ backgroundColor: status === null || status === void 0 ? void 0 : status.color
150
135
  }]
151
136
  }), /*#__PURE__*/React.createElement(Text, {
152
137
  style: styles.jobStatusDateText
153
- }, activityTimeText))))));
138
+ }, assigneeText)), isStaff && /*#__PURE__*/React.createElement(View, {
139
+ style: [styles.jobPriorityContainer, {
140
+ backgroundColor: priority.color
141
+ }]
142
+ }, /*#__PURE__*/React.createElement(Text, {
143
+ style: styles.jobPriorityText
144
+ }, priority.label))))));
154
145
  }
155
146
  }
156
147
  const styles = StyleSheet.create({
@@ -195,15 +186,17 @@ const styles = StyleSheet.create({
195
186
  alignItems: 'center'
196
187
  },
197
188
  jobTypeContainer: {
198
- height: 20,
199
- width: 80,
189
+ padding: 4,
190
+ minWidth: 80,
191
+ maxWidth: 140,
200
192
  borderRadius: 4,
201
193
  justifyContent: 'center'
202
194
  },
203
195
  jobTypeText: {
204
196
  fontFamily: 'sf-semibold',
205
197
  fontSize: 12,
206
- textAlign: 'center'
198
+ textAlign: 'center',
199
+ maxWidth: '100%'
207
200
  },
208
201
  jobSeenContainer: {
209
202
  flexDirection: 'row',
@@ -271,7 +264,7 @@ const styles = StyleSheet.create({
271
264
  jobStatusContainer: {
272
265
  flexDirection: 'row',
273
266
  alignItems: 'center',
274
- justifyContent: 'space-between',
267
+ justifyContent: 'center',
275
268
  width: 105,
276
269
  height: 30,
277
270
  paddingHorizontal: 8,
@@ -309,14 +302,33 @@ const styles = StyleSheet.create({
309
302
  jobStatusDateText: {
310
303
  flex: 1,
311
304
  textAlign: 'right',
312
- fontFamily: 'sf-bold',
305
+ fontFamily: 'sf-medium',
313
306
  fontSize: 14,
314
307
  color: Colours.TEXT_DARK
308
+ },
309
+ jobPriorityContainer: {
310
+ flexDirection: 'row',
311
+ alignItems: 'center',
312
+ justifyContent: 'center',
313
+ width: 105,
314
+ height: 24,
315
+ paddingHorizontal: 8,
316
+ borderRadius: 4,
317
+ marginTop: 8
318
+ },
319
+ jobPriorityText: {
320
+ color: '#fff',
321
+ textAlign: 'center',
322
+ fontFamily: 'sf-semibold',
323
+ fontSize: 13
315
324
  }
316
325
  });
317
326
  const mapStateToProps = state => {
318
327
  return {
319
- colourBrandingMain: Colours.getMainBrandingColourFromState(state)
328
+ user: state.user,
329
+ colourBrandingMain: Colours.getMainBrandingColourFromState(state),
330
+ statusTypes: state[values.reducerKey].jobstatuses,
331
+ hideSeen: state[values.reducerKey].hideSeen
320
332
  };
321
333
  };
322
334
  export default connect(mapStateToProps, {})(MaintenanceListItem);
@@ -1 +1 @@
1
- {"version":3,"names":["React","Component","Image","Text","TouchableOpacity","View","StyleSheet","_","Icon","connect","moment","getJobStatusProps","jobStatusOptions","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","showSeen","status","name","seen","jobSeenContainer","type","iconStyle","jobSeenIcon","color","colourBrandingMain","jobSeenText","render","createdTime","createdUnix","createdTimeText","format","activityTimeText","expectedDate","statusText","statusColor","onPress","onPressJob","jobContainer","jobInnerContainer","jobTopSection","jobTopLeft","jobId","jobIdText","jobTitleText","title","room","jobLocationText","jobTypeSeenContainer","jobTypeContainer","backgroundColor","hexToRGBAstring","jobTypeText","jobTopRight","jobCommentImage","source","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';\nimport { values } from '../values.config';\n\nclass MaintenanceListItem extends Component {\n onPressJob = () => {\n Services.navigation.navigate(values.screenRequestDetail, { 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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","ignoreList":[]}
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 onPressJob = () => {\n Services.navigation.navigate(values.screenRequestDetail, { 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, hideSeen } = this.props;\n const showSeen = !job.status || job.status === getJobStatus(null, this.props).text;\n if (hideSeen || !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 assigneeText = job.Assignee ? `Assigned to\\n${job.Assignee.displayName}` : '';\n const status = getJobStatus(job.status, this.props);\n const priority = getJobPriority(job.priority);\n const isStaff = this.props.user.category === 'staff'\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 ? (\n <Text\n style={[styles.jobIdText, { color: this.props.colourBrandingMain }]}\n >{`${values.textEntityName} #${job.jobId}`}</Text>\n ) : 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 }]} numberOfLines={2}>\n {job.type}\n </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: status?.color }]}>\n {/* <Icon name=\"wrench\" type=\"font-awesome\" iconStyle={styles.jobStatusIcon} /> */}\n <Text style={styles.jobStatusText}>{status?.text}</Text>\n </View>\n <View style={[styles.jobStatusLine, { borderColor: status?.color }]}>\n <View style={styles.jobStatusLineMask} />\n </View>\n <View style={[styles.jobStatusCircle, { backgroundColor: status?.color }]} />\n <Text style={styles.jobStatusDateText}>{assigneeText}</Text>\n </View>\n {isStaff && (\n <View style={[styles.jobPriorityContainer, { backgroundColor: priority.color }]}>\n <Text style={styles.jobPriorityText}>{priority.label}</Text>\n </View>\n )}\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 padding: 4,\n minWidth: 80,\n maxWidth: 140,\n borderRadius: 4,\n justifyContent: 'center',\n },\n jobTypeText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n textAlign: 'center',\n maxWidth: '100%',\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: 'center',\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-medium',\n fontSize: 14,\n color: Colours.TEXT_DARK,\n },\n jobPriorityContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n width: 105,\n height: 24,\n paddingHorizontal: 8,\n borderRadius: 4,\n marginTop: 8,\n },\n jobPriorityText: {\n color: '#fff',\n textAlign: 'center',\n fontFamily: 'sf-semibold',\n fontSize: 13,\n },\n});\n\nconst mapStateToProps = state => {\n return {\n user: state.user,\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n statusTypes: state[values.reducerKey].jobstatuses,\n hideSeen: state[values.reducerKey].hideSeen,\n };\n};\n\nexport default connect(mapStateToProps, {})(MaintenanceListItem);\n"],"mappings":"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","ignoreList":[]}