@plusscommunities/pluss-maintenance-app 3.0.1 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/apis/generalActions.js +36 -0
- package/dist/module/apis/generalActions.js.map +1 -1
- package/dist/module/components/MaintenanceList.js +3 -3
- package/dist/module/components/MaintenanceList.js.map +1 -1
- package/dist/module/components/WidgetSmall.js +2 -2
- package/dist/module/components/WidgetSmall.js.map +1 -1
- package/package.json +1 -1
- package/src/apis/generalActions.js +27 -0
- package/src/components/MaintenanceList.js +3 -3
- package/src/components/WidgetSmall.js +2 -2
@@ -36,6 +36,42 @@ export const generalActions = {
|
|
36
36
|
}
|
37
37
|
});
|
38
38
|
},
|
39
|
+
getJobs2: (site, status, type, lastKey) => {
|
40
|
+
const query = {
|
41
|
+
site
|
42
|
+
};
|
43
|
+
|
44
|
+
if (status) {
|
45
|
+
query.status = status;
|
46
|
+
}
|
47
|
+
|
48
|
+
if (type) {
|
49
|
+
query.type = type;
|
50
|
+
}
|
51
|
+
|
52
|
+
if (lastKey) {
|
53
|
+
query.lastKey = JSON.stringify(lastKey);
|
54
|
+
}
|
55
|
+
|
56
|
+
return Session.authedFunction({
|
57
|
+
method: 'GET',
|
58
|
+
url: Helper.getUrl('maintenance', 'get/requests', query)
|
59
|
+
});
|
60
|
+
},
|
61
|
+
getJobsRecursive: function (site, status, type, lastKey) {
|
62
|
+
let jobs = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
|
63
|
+
return new Promise(resolve => {
|
64
|
+
generalActions.getJobs2(site, status, type, lastKey).then(jobRes => {
|
65
|
+
const newJobs = [...jobs, ...jobRes.data.Items];
|
66
|
+
|
67
|
+
if (!jobRes.data.LastKey) {
|
68
|
+
return resolve(newJobs);
|
69
|
+
}
|
70
|
+
|
71
|
+
return resolve(generalActions.getJobsRecursive(site, status, type, jobRes.data.LastKey, newJobs));
|
72
|
+
});
|
73
|
+
});
|
74
|
+
},
|
39
75
|
sendMaintenanceRequest: (userID, userName, phone, room, title, description, date, type, images, location, isHome, homeText) => {
|
40
76
|
const request = {
|
41
77
|
method: 'POST',
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["Helper","Session","generalActions","getJob","site","id","authedFunction","method","url","getUrl","data","getJobByJobId","jobId","getJobs","status","type","sendMaintenanceRequest","userID","userName","phone","room","title","description","date","images","location","isHome","homeText","request","editJob","job","editJobStatus","addNote","note","attachments","action","editNote","noteId","deleteNote","getJobTypes"],"sources":["generalActions.js"],"sourcesContent":["// import axios from 'axios';\n// import { getUrl } from './helper';\n// import { authedFunction } from '../js';\nimport { Helper, Session } from '../core.config';\n\nexport const generalActions = {\n getJob: (site, id) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'getJob'),\n data: { site, id },\n });\n },\n getJobByJobId: (site, jobId) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'getJob'),\n data: { site, jobId },\n });\n },\n getJobs: (site, status = '', type = '') => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'getJobs'),\n data: { site, status, type },\n });\n },\n sendMaintenanceRequest: (userID, userName, phone, room, title, description, date, type, images, location, isHome, homeText) => {\n const request = {\n method: 'POST',\n url: Helper.getUrl('maintenance', 'sendMaintenance'),\n data: {\n userID,\n userName,\n phone,\n room,\n title,\n description,\n date,\n type,\n images,\n location,\n isHome,\n homeText,\n },\n };\n return Session.authedFunction(request);\n },\n editJob: (job, site) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'editJob'),\n data: { job, site },\n });\n },\n editJobStatus: (id, status) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'editJobStatus'),\n data: { id, status },\n });\n },\n addNote: (jobId, note, attachments) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'requests/note'),\n data: {\n id: jobId,\n note,\n attachments,\n action: 'AddNote',\n },\n });\n },\n editNote: (jobId, noteId, note, attachments) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'requests/note'),\n data: {\n id: jobId,\n note,\n attachments,\n noteId,\n action: 'EditNote',\n },\n });\n },\n deleteNote: (jobId, noteId) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'requests/note'),\n data: {\n id: jobId,\n noteId,\n action: 'DeleteNote',\n },\n });\n },\n // getWeeklyMenu: async time => {\n // //deprecated\n // return null;\n // },\n getJobTypes: async site => {\n const url = Helper.getUrl('maintenance', 'getjobtypes');\n return Session.authedFunction({\n method: 'POST',\n url,\n data: { site },\n });\n },\n // sendBookingRequest: async bookingInfo => {\n // return authedFunction({\n // method: 'POST',\n // data: {\n // bookingInfo,\n // },\n // url: getUrl('utility', 'sendBookingRequest'),\n // });\n // },\n // getString: async (site, id, useDefault) => {\n // return axios({\n // method: 'GET',\n // url: getUrl('strings', `get/${site}_${id}`, useDefault ? { useDefault } : undefined),\n // }).catch(error => {\n // console.log('getString error', error);\n // throw error;\n // });\n // },\n // getGeneralTerms: async () => {\n // return axios({\n // method: 'GET',\n // url: 'https://pluss.plussapp.com.au/strings-prd/get/plussSpace_termsofuse',\n // });\n // },\n // declineTerms: async (site, userID) => {\n // //deprecated\n // return null;\n // },\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAT,EAAiBC,OAAjB,QAAgC,gBAAhC;AAEA,OAAO,MAAMC,cAAc,GAAG;EAC5BC,MAAM,EAAE,CAACC,IAAD,EAAOC,EAAP,KAAc;IACpB,OAAOJ,OAAO,CAACK,cAAR,CAAuB;MAC5BC,MAAM,EAAE,MADoB;MAE5BC,GAAG,EAAER,MAAM,CAACS,MAAP,CAAc,aAAd,EAA6B,QAA7B,CAFuB;MAG5BC,IAAI,EAAE;QAAEN,IAAF;QAAQC;MAAR;IAHsB,CAAvB,CAAP;EAKD,CAP2B;EAQ5BM,aAAa,EAAE,CAACP,IAAD,EAAOQ,KAAP,KAAiB;IAC9B,OAAOX,OAAO,CAACK,cAAR,CAAuB;MAC5BC,MAAM,EAAE,MADoB;MAE5BC,GAAG,EAAER,MAAM,CAACS,MAAP,CAAc,aAAd,EAA6B,QAA7B,CAFuB;MAG5BC,IAAI,EAAE;QAAEN,IAAF;QAAQQ;MAAR;IAHsB,CAAvB,CAAP;EAKD,CAd2B;EAe5BC,OAAO,EAAE,UAACT,IAAD,EAAkC;IAAA,IAA3BU,MAA2B,uEAAlB,EAAkB;IAAA,IAAdC,IAAc,uEAAP,EAAO;IACzC,OAAOd,OAAO,CAACK,cAAR,CAAuB;MAC5BC,MAAM,EAAE,MADoB;MAE5BC,GAAG,EAAER,MAAM,CAACS,MAAP,CAAc,aAAd,EAA6B,SAA7B,CAFuB;MAG5BC,IAAI,EAAE;QAAEN,IAAF;QAAQU,MAAR;QAAgBC;MAAhB;IAHsB,CAAvB,CAAP;EAKD,CArB2B;EAsB5BC,sBAAsB,EAAE,CAACC,MAAD,EAASC,QAAT,EAAmBC,KAAnB,EAA0BC,IAA1B,EAAgCC,KAAhC,EAAuCC,WAAvC,EAAoDC,IAApD,
|
1
|
+
{"version":3,"names":["Helper","Session","generalActions","getJob","site","id","authedFunction","method","url","getUrl","data","getJobByJobId","jobId","getJobs","status","type","getJobs2","lastKey","query","JSON","stringify","getJobsRecursive","jobs","Promise","resolve","then","jobRes","newJobs","Items","LastKey","sendMaintenanceRequest","userID","userName","phone","room","title","description","date","images","location","isHome","homeText","request","editJob","job","editJobStatus","addNote","note","attachments","action","editNote","noteId","deleteNote","getJobTypes"],"sources":["generalActions.js"],"sourcesContent":["// import axios from 'axios';\n// import { getUrl } from './helper';\n// import { authedFunction } from '../js';\nimport { Helper, Session } from '../core.config';\n\nexport const generalActions = {\n getJob: (site, id) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'getJob'),\n data: { site, id },\n });\n },\n getJobByJobId: (site, jobId) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'getJob'),\n data: { site, jobId },\n });\n },\n getJobs: (site, status = '', type = '') => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'getJobs'),\n data: { site, status, type },\n });\n },\n getJobs2: (site, status, type, lastKey) => {\n const query = { site };\n if (status) {\n query.status = status;\n }\n if (type) {\n query.type = type;\n }\n if (lastKey) {\n query.lastKey = JSON.stringify(lastKey);\n }\n return Session.authedFunction({\n method: 'GET',\n url: Helper.getUrl('maintenance', 'get/requests', query),\n });\n },\n getJobsRecursive: (site, status, type, lastKey, jobs = []) => {\n return new Promise(resolve => {\n generalActions.getJobs2(site, status, type, lastKey).then(jobRes => {\n const newJobs = [...jobs, ...jobRes.data.Items];\n if (!jobRes.data.LastKey) {\n return resolve(newJobs);\n }\n return resolve(generalActions.getJobsRecursive(site, status, type, jobRes.data.LastKey, newJobs));\n });\n });\n },\n sendMaintenanceRequest: (userID, userName, phone, room, title, description, date, type, images, location, isHome, homeText) => {\n const request = {\n method: 'POST',\n url: Helper.getUrl('maintenance', 'sendMaintenance'),\n data: {\n userID,\n userName,\n phone,\n room,\n title,\n description,\n date,\n type,\n images,\n location,\n isHome,\n homeText,\n },\n };\n return Session.authedFunction(request);\n },\n editJob: (job, site) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'editJob'),\n data: { job, site },\n });\n },\n editJobStatus: (id, status) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'editJobStatus'),\n data: { id, status },\n });\n },\n addNote: (jobId, note, attachments) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'requests/note'),\n data: {\n id: jobId,\n note,\n attachments,\n action: 'AddNote',\n },\n });\n },\n editNote: (jobId, noteId, note, attachments) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'requests/note'),\n data: {\n id: jobId,\n note,\n attachments,\n noteId,\n action: 'EditNote',\n },\n });\n },\n deleteNote: (jobId, noteId) => {\n return Session.authedFunction({\n method: 'POST',\n url: Helper.getUrl('maintenance', 'requests/note'),\n data: {\n id: jobId,\n noteId,\n action: 'DeleteNote',\n },\n });\n },\n // getWeeklyMenu: async time => {\n // //deprecated\n // return null;\n // },\n getJobTypes: async site => {\n const url = Helper.getUrl('maintenance', 'getjobtypes');\n return Session.authedFunction({\n method: 'POST',\n url,\n data: { site },\n });\n },\n // sendBookingRequest: async bookingInfo => {\n // return authedFunction({\n // method: 'POST',\n // data: {\n // bookingInfo,\n // },\n // url: getUrl('utility', 'sendBookingRequest'),\n // });\n // },\n // getString: async (site, id, useDefault) => {\n // return axios({\n // method: 'GET',\n // url: getUrl('strings', `get/${site}_${id}`, useDefault ? { useDefault } : undefined),\n // }).catch(error => {\n // console.log('getString error', error);\n // throw error;\n // });\n // },\n // getGeneralTerms: async () => {\n // return axios({\n // method: 'GET',\n // url: 'https://pluss.plussapp.com.au/strings-prd/get/plussSpace_termsofuse',\n // });\n // },\n // declineTerms: async (site, userID) => {\n // //deprecated\n // return null;\n // },\n};\n"],"mappings":"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"}
|
@@ -25,12 +25,12 @@ class MaintenanceList extends Component {
|
|
25
25
|
selectedType
|
26
26
|
} = this.state; // console.log('filters', { selectedStatus, selectedType });
|
27
27
|
|
28
|
-
const res = await generalActions.
|
28
|
+
const res = await generalActions.getJobsRecursive(this.props.site, selectedStatus, selectedType); // console.log('refresh', res?.data);
|
29
29
|
|
30
30
|
if (selectedStatus || selectedType) {
|
31
|
-
this.props.jobsAdded(res
|
31
|
+
this.props.jobsAdded(res);
|
32
32
|
} else {
|
33
|
-
this.props.jobsLoaded(res
|
33
|
+
this.props.jobsLoaded(res);
|
34
34
|
}
|
35
35
|
} catch (error) {
|
36
36
|
console.log('refresh error', error);
|
@@ -1 +1 @@
|
|
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","jobIdMatch","find","j","filter","room","toLowerCase","indexOf","fetchJob","includes","status","type","jobIndex","unshift","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","height","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 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, 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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"}
|
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","getJobsRecursive","site","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","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","height","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.getJobsRecursive(this.props.site, selectedStatus, selectedType);\n // console.log('refresh', res?.data);\n if (selectedStatus || 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, 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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"}
|
@@ -35,9 +35,9 @@ class WidgetSmall extends Component {
|
|
35
35
|
_defineProperty(this, "refresh", () => {
|
36
36
|
this.onLoadingChanged(true, async () => {
|
37
37
|
try {
|
38
|
-
const res = await generalActions.
|
38
|
+
const res = await generalActions.getJobsRecursive(this.props.site); // console.log('WidgetSmall - refresh', res.data);
|
39
39
|
|
40
|
-
this.props.jobsLoaded(res
|
40
|
+
this.props.jobsLoaded(res);
|
41
41
|
} catch (error) {
|
42
42
|
console.log('refresh error', error);
|
43
43
|
} finally {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","Component","Text","View","ScrollView","StyleSheet","connect","_","generalActions","jobsLoaded","MaintenanceWidgetItem","Services","Colours","Components","Config","MAX_ITEMS","WidgetSmall","constructor","props","options","isEmpty","Title","env","strings","MAINTENANCE","userCategory","EmptyText","EMPTY_REQUESTS_STAFF","EMPTY_REQUESTS_USER","onLoadingChanged","res","
|
1
|
+
{"version":3,"names":["React","Component","Text","View","ScrollView","StyleSheet","connect","_","generalActions","jobsLoaded","MaintenanceWidgetItem","Services","Colours","Components","Config","MAX_ITEMS","WidgetSmall","constructor","props","options","isEmpty","Title","env","strings","MAINTENANCE","userCategory","EmptyText","EMPTY_REQUESTS_STAFF","EMPTY_REQUESTS_USER","onLoadingChanged","res","getJobsRecursive","site","error","console","log","loading","callback","setState","state","navigation","navigate","componentDidMount","refresh","componentDidUpdate","prevProps","dataUpdated","renderContent","jobs","styles","loadingPadding","getEmptyStateText","paddingLeft","paddingRight","slice","map","job","id","render","colourBrandingMain","sectionContainer","sectionPadding","sectionHeading","sectionTitle","getTitle","onPressAll","paddingTop","color","create","backgroundColor","paddingHorizontal","paddingBottom","marginBottom","flexDirection","alignContent","justifyContent","fontFamily","fontSize","TEXT_DARKEST","mapStateToProps","user","notifications","getMainBrandingColourFromState","orderBy","category","forwardRef"],"sources":["WidgetSmall.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { Text, View, ScrollView, StyleSheet } from 'react-native';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { generalActions } from '../apis';\nimport { jobsLoaded } from '../actions';\nimport MaintenanceWidgetItem from './MaintenanceWidgetItem';\nimport { Services } from '../feature.config';\nimport { Colours, Components, Config } from '../core.config';\n\nconst MAX_ITEMS = 10;\n\nclass WidgetSmall extends Component {\n constructor(props) {\n super(props);\n this.state = { loading: false };\n }\n\n componentDidMount() {\n this.refresh();\n }\n\n componentDidUpdate(prevProps) {\n if (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n }\n\n getTitle = () => {\n const { options } = this.props;\n if (options && !_.isEmpty(options.Title)) return options.Title;\n return Config.env.strings.MAINTENANCE;\n };\n\n getEmptyStateText = () => {\n const { options, userCategory } = this.props;\n if (options && !_.isEmpty(options.EmptyText)) return options.EmptyText;\n return userCategory === 'staff' ? Config.env.strings.EMPTY_REQUESTS_STAFF : Config.env.strings.EMPTY_REQUESTS_USER;\n };\n\n refresh = () => {\n this.onLoadingChanged(true, async () => {\n try {\n const res = await generalActions.getJobsRecursive(this.props.site);\n // console.log('WidgetSmall - refresh', res.data);\n this.props.jobsLoaded(res);\n } catch (error) {\n console.log('refresh error', error);\n } finally {\n this.onLoadingChanged(false);\n }\n });\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 onPressAll = () => {\n Services.navigation.navigate('maintenance', { options: this.props.options });\n };\n\n renderContent() {\n const { jobs } = this.props;\n if (_.isEmpty(jobs)) {\n if (this.state.loading) {\n return (\n <View style={styles.loadingPadding}>\n <Components.LoadingStateWidget height={180} />\n </View>\n );\n }\n return (\n <View style={styles.loadingPadding}>\n <Components.EmptyStateWidget title={this.getEmptyStateText()} height={180} />\n </View>\n );\n }\n return (\n <ScrollView horizontal contentContainerStyle={{ paddingLeft: 6, paddingRight: 8 }} showsHorizontalScrollIndicator={false}>\n {jobs.slice(0, MAX_ITEMS).map(job => {\n return <MaintenanceWidgetItem key={job.id} job={job} />;\n })}\n </ScrollView>\n );\n }\n\n render() {\n const { colourBrandingMain } = this.props;\n\n return (\n <View style={styles.sectionContainer}>\n <View style={styles.sectionPadding}>\n <View style={styles.sectionHeading}>\n <Text style={styles.sectionTitle}>{this.getTitle()}</Text>\n <Components.InlineButton\n onPress={this.onPressAll}\n color={colourBrandingMain}\n touchableStyle={{ paddingTop: 6 }}\n textStyle={{ color: '#fff' }}\n >\n View All\n </Components.InlineButton>\n </View>\n </View>\n {this.renderContent()}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n sectionContainer: {\n backgroundColor: '#fff',\n paddingTop: 16,\n },\n sectionPadding: {\n paddingHorizontal: 16,\n paddingBottom: 6,\n },\n loadingPadding: {\n paddingHorizontal: 16,\n },\n sectionHeading: {\n marginBottom: 4,\n flexDirection: 'row',\n alignContent: 'flex-start',\n justifyContent: 'space-between',\n },\n sectionTitle: {\n fontFamily: 'sf-bold',\n fontSize: 24,\n color: Colours.TEXT_DARKEST,\n },\n});\n\nconst mapStateToProps = state => {\n const { user, jobs, notifications } = state;\n return {\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n jobs: _.orderBy(jobs.jobs, ['createdUnix'], ['desc']),\n site: user.site,\n userCategory: user.category,\n dataUpdated: notifications.dataUpdated.jobs,\n };\n};\n\nexport default connect(mapStateToProps, { jobsLoaded }, null, { forwardRef: true })(WidgetSmall);\n"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -25,6 +25,33 @@ export const generalActions = {
|
|
25
25
|
data: { site, status, type },
|
26
26
|
});
|
27
27
|
},
|
28
|
+
getJobs2: (site, status, type, lastKey) => {
|
29
|
+
const query = { site };
|
30
|
+
if (status) {
|
31
|
+
query.status = status;
|
32
|
+
}
|
33
|
+
if (type) {
|
34
|
+
query.type = type;
|
35
|
+
}
|
36
|
+
if (lastKey) {
|
37
|
+
query.lastKey = JSON.stringify(lastKey);
|
38
|
+
}
|
39
|
+
return Session.authedFunction({
|
40
|
+
method: 'GET',
|
41
|
+
url: Helper.getUrl('maintenance', 'get/requests', query),
|
42
|
+
});
|
43
|
+
},
|
44
|
+
getJobsRecursive: (site, status, type, lastKey, jobs = []) => {
|
45
|
+
return new Promise(resolve => {
|
46
|
+
generalActions.getJobs2(site, status, type, lastKey).then(jobRes => {
|
47
|
+
const newJobs = [...jobs, ...jobRes.data.Items];
|
48
|
+
if (!jobRes.data.LastKey) {
|
49
|
+
return resolve(newJobs);
|
50
|
+
}
|
51
|
+
return resolve(generalActions.getJobsRecursive(site, status, type, jobRes.data.LastKey, newJobs));
|
52
|
+
});
|
53
|
+
});
|
54
|
+
},
|
28
55
|
sendMaintenanceRequest: (userID, userName, phone, room, title, description, date, type, images, location, isHome, homeText) => {
|
29
56
|
const request = {
|
30
57
|
method: 'POST',
|
@@ -40,12 +40,12 @@ class MaintenanceList extends Component {
|
|
40
40
|
try {
|
41
41
|
const { selectedStatus, selectedType } = this.state;
|
42
42
|
// console.log('filters', { selectedStatus, selectedType });
|
43
|
-
const res = await generalActions.
|
43
|
+
const res = await generalActions.getJobsRecursive(this.props.site, selectedStatus, selectedType);
|
44
44
|
// console.log('refresh', res?.data);
|
45
45
|
if (selectedStatus || selectedType) {
|
46
|
-
this.props.jobsAdded(res
|
46
|
+
this.props.jobsAdded(res);
|
47
47
|
} else {
|
48
|
-
this.props.jobsLoaded(res
|
48
|
+
this.props.jobsLoaded(res);
|
49
49
|
}
|
50
50
|
} catch (error) {
|
51
51
|
console.log('refresh error', error);
|
@@ -39,9 +39,9 @@ class WidgetSmall extends Component {
|
|
39
39
|
refresh = () => {
|
40
40
|
this.onLoadingChanged(true, async () => {
|
41
41
|
try {
|
42
|
-
const res = await generalActions.
|
42
|
+
const res = await generalActions.getJobsRecursive(this.props.site);
|
43
43
|
// console.log('WidgetSmall - refresh', res.data);
|
44
|
-
this.props.jobsLoaded(res
|
44
|
+
this.props.jobsLoaded(res);
|
45
45
|
} catch (error) {
|
46
46
|
console.log('refresh error', error);
|
47
47
|
} finally {
|