@plusscommunities/pluss-maintenance-app 2.2.3-beta.0 → 2.2.4
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/components/MaintenanceList.js +28 -9
- package/dist/module/components/MaintenanceList.js.map +1 -1
- package/dist/module/components/MaintenanceListItem.js +1 -1
- package/dist/module/components/MaintenanceListItem.js.map +1 -1
- package/package.json +2 -2
- package/src/components/MaintenanceList.js +21 -8
- package/src/components/MaintenanceListItem.js +1 -1
@@ -86,16 +86,35 @@ class MaintenanceList extends Component {
|
|
86
86
|
jobs
|
87
87
|
} = _this.props;
|
88
88
|
let filteredList = jobs;
|
89
|
+
let jobIdMatch = null;
|
89
90
|
|
90
91
|
if (searchText) {
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
92
|
+
jobIdMatch = _.find(jobs, j => j.jobId === searchText);
|
93
|
+
filteredList = jobs.filter(j => {
|
94
|
+
if (j.room && j.room.toLowerCase().indexOf(searchText.toLowerCase()) > -1) {
|
95
|
+
return true;
|
96
|
+
}
|
97
|
+
|
98
|
+
return false;
|
99
|
+
});
|
100
|
+
if (!jobIdMatch) _this.fetchJob(searchText);
|
101
|
+
}
|
102
|
+
|
103
|
+
if (selectedStatus) filteredList = filteredList.filter(j => selectedStatus.includes(j.status));
|
104
|
+
if (selectedType) filteredList = filteredList.filter(j => selectedType.includes(j.type));
|
105
|
+
|
106
|
+
if (jobIdMatch) {
|
107
|
+
const jobIndex = filteredList.indexOf(jobIdMatch);
|
108
|
+
|
109
|
+
if (jobIndex > -1) {
|
110
|
+
filteredList.splice(jobIndex, 1);
|
111
|
+
}
|
112
|
+
|
113
|
+
filteredList.unshift(jobIdMatch);
|
97
114
|
}
|
98
115
|
|
116
|
+
if (source !== 'search') _this.refresh();
|
117
|
+
|
99
118
|
_this.setState({
|
100
119
|
filteredList
|
101
120
|
});
|
@@ -194,13 +213,13 @@ class MaintenanceList extends Component {
|
|
194
213
|
return /*#__PURE__*/React.createElement(View, {
|
195
214
|
style: styles.searchContainer
|
196
215
|
}, /*#__PURE__*/React.createElement(Components.GenericInput, {
|
197
|
-
placeholder: "Search by Job ID",
|
216
|
+
placeholder: "Search by Job ID or Location",
|
198
217
|
value: this.state.searchText,
|
199
218
|
onChangeText: this.onSearchText,
|
200
219
|
onSubmitEditing: this.onSearchSubmit,
|
201
220
|
squaredCorners: true,
|
202
|
-
hasClear: true
|
203
|
-
|
221
|
+
hasClear: true // keyboardType={'numeric'}
|
222
|
+
,
|
204
223
|
returnKeyType: 'done'
|
205
224
|
}));
|
206
225
|
}
|
@@ -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","filter","j","length","fetchJob","includes","status","type","refresh","callback","isEmpty","resetDataSource","showFilterPopup","selected","onToggleFilter","hasPermission","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","env","strings","EMPTY_REQUESTS_STAFF","EMPTY_REQUESTS_USER","renderEmptyList","marginHorizontal","renderFilterButton","styles","filterButton","filterButtonText","color","colourBrandingMain","renderSearch","searchContainer","onSearchText","onSearchSubmit","renderListHeader","ListHeaderComponent","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 if (searchText) {\n filteredList = jobs.filter(j => j.jobId === searchText);\n if (filteredList.length === 0) this.fetchJob(searchText);\n } else {\n if (selectedStatus) filteredList = filteredList.filter(j => selectedStatus.includes(j.status));\n if (selectedType) filteredList = filteredList.filter(j => selectedType.includes(j.type));\n if (source !== 'search') this.refresh();\n }\n\n this.setState({ filteredList });\n };\n\n onLoadingChanged = (loading, callback) => {\n this.setState({ loading }, () => {\n if (this.props.onLoadingChanged) this.props.onLoadingChanged(this.state.loading);\n if (callback) callback();\n });\n };\n\n onSearchText = value => {\n this.setState({ searchText: value }, () => {\n if (_.isEmpty(this.state.searchText)) this.resetDataSource('search');\n });\n };\n\n onSearchSubmit = () => {\n this.resetDataSource('search');\n };\n\n onToggleFilter = () => {\n this.setState({ showFilterPopup: !this.state.showFilterPopup });\n };\n\n onSelectFilter = selected => {\n this.setState({ selectedStatus: selected.status, selectedType: selected.type }, () => {\n this.resetDataSource();\n this.onToggleFilter();\n });\n };\n\n renderEmptyList() {\n return this.state.loading ? null : <Components.EmptyStateMain title={this.getEmptyStateText()} style={{ marginHorizontal: 16 }} />;\n }\n\n renderFilterButton() {\n return (\n <TouchableOpacity onPress={this.onToggleFilter}>\n <View style={styles.filterButton}>\n <Text style={[styles.filterButtonText, { color: this.props.colourBrandingMain }]}>Filter</Text>\n </View>\n </TouchableOpacity>\n );\n }\n\n renderSearch() {\n if (!this.props.hasPermission) return null;\n\n return (\n <View style={styles.searchContainer}>\n <Components.GenericInput\n placeholder=\"Search by Job ID\"\n value={this.state.searchText}\n onChangeText={this.onSearchText}\n onSubmitEditing={this.onSearchSubmit}\n squaredCorners\n hasClear\n keyboardType={'numeric'}\n returnKeyType={'done'}\n />\n </View>\n );\n }\n\n renderListHeader() {\n 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","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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"}
|
@@ -134,7 +134,7 @@ class MaintenanceListItem extends Component {
|
|
134
134
|
source: require('../images/speechbubble.png')
|
135
135
|
}), this.renderCommentCount())), /*#__PURE__*/React.createElement(View, {
|
136
136
|
style: styles.jobBottomSection
|
137
|
-
},
|
137
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
138
138
|
style: styles.jobCreatedText
|
139
139
|
}, createdTimeText), /*#__PURE__*/React.createElement(View, {
|
140
140
|
style: styles.jobActivityContainer
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","Component","Image","Text","TouchableOpacity","View","StyleSheet","_","Icon","connect","moment","getJobStatusProps","jobStatusOptions","Services","Helper","Colours","MaintenanceListItem","navigation","navigate","job","props","renderCommentCount","commentCount","styles","commentCountContainer","commentCountText","renderDescription","isEmpty","description","jobDescriptionText","renderSeen","showSeen","status","name","seen","jobSeenContainer","jobSeenIcon","color","colourBrandingMain","jobSeenText","render","createdTime","createdUnix","createdTimeText","format","activityTimeText","expectedDate","statusText","statusColor","onPressJob","jobContainer","style","jobInnerContainer","jobTopSection","jobTopLeft","jobId","jobIdText","jobTitleText","title","room","jobLocationText","jobTypeSeenContainer","jobTypeContainer","backgroundColor","hexToRGBAstring","jobTypeText","type","jobTopRight","jobCommentImage","require","jobBottomSection","jobCreatedText","jobActivityContainer","jobStatusContainer","jobStatusIcon","jobStatusText","jobStatusLine","borderColor","jobStatusLineMask","jobStatusCircle","jobStatusDateText","create","marginVertical","paddingHorizontal","getShadowStyle","flexDirection","alignItems","paddingVertical","borderBottomWidth","borderBottomColor","LINEGREY","flex","fontFamily","fontSize","marginBottom","TEXT_DARK","TEXT_LIGHT","marginTop","height","width","borderRadius","justifyContent","textAlign","marginLeft","paddingTop","resizeMode","position","top","right","borderWidth","COLOUR_GREEN","borderStyle","left","zIndex","mapStateToProps","state","getMainBrandingColourFromState"],"sources":["MaintenanceListItem.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { Image, Text, TouchableOpacity, View, StyleSheet } from 'react-native';\nimport _ from 'lodash';\nimport { Icon } from 'react-native-elements';\nimport { connect } from 'react-redux';\nimport moment from 'moment';\n// import {\n// getShadowStyle,\n// LINEGREY,\n// TEXT_DARK,\n// TEXT_LIGHT,\n// COLOUR_GREEN,\n// getMainBrandingColourFromState,\n// hexToRGBAstring,\n// getJobStatusProps,\n// jobStatusOptions,\n// } from '../../js';\n// import NavigationService from '../../js/NavigationService';\nimport { getJobStatusProps, jobStatusOptions } from '../helper';\nimport { Services } from '../feature.config';\nimport { Helper, Colours } from '../core.config';\n\nclass MaintenanceListItem extends Component {\n onPressJob = () => {\n Services.navigation.navigate('requestDetail', { job: this.props.job });\n };\n\n renderCommentCount() {\n const { job } = this.props;\n if (!job.commentCount) {\n return null;\n }\n return (\n <View style={styles.commentCountContainer}>\n <Text style={styles.commentCountText}>{job.commentCount > 99 ? '99' : job.commentCount}</Text>\n </View>\n );\n }\n\n renderDescription() {\n const { job } = this.props;\n if (_.isEmpty(job.description)) {\n return null;\n }\n return <Text style={styles.jobDescriptionText}>{job.description}</Text>;\n }\n\n renderSeen() {\n const { job } = this.props;\n const showSeen = !job.status || job.status === jobStatusOptions[0].name;\n if (!showSeen || !job.seen) {\n return null;\n }\n return (\n <View style={styles.jobSeenContainer}>\n <Icon name=\"check\" type=\"font-awesome\" iconStyle={[styles.jobSeenIcon, { color: this.props.colourBrandingMain }]} />\n <Text style={[styles.jobSeenText, { color: this.props.colourBrandingMain }]}>Seen</Text>\n </View>\n );\n }\n\n render() {\n const { job } = this.props;\n const createdTime = moment(job.createdUnix);\n const createdTimeText = `${createdTime.format('ddd, D MMMM')} • ${createdTime.format('h:mma')}`;\n const activityTimeText = job.expectedDate ? moment(job.expectedDate).format('D MMMM') : '--';\n const { statusText, statusColor } = getJobStatusProps(job.status);\n\n return (\n <TouchableOpacity onPress={this.onPressJob}>\n <View style={[styles.jobContainer, this.props.style]}>\n <View style={styles.jobInnerContainer}>\n <View style={styles.jobTopSection}>\n <View style={styles.jobTopLeft}>\n {job.jobId ? <Text style={[styles.jobIdText, { color: this.props.colourBrandingMain }]}>{`Job #${job.jobId}`}</Text> : null}\n <Text style={styles.jobTitleText}>{job.title}</Text>\n {job.room ? <Text style={styles.jobLocationText}>{job.room}</Text> : null}\n <View style={styles.jobTypeSeenContainer}>\n <View style={[styles.jobTypeContainer, { backgroundColor: Colours.hexToRGBAstring(this.props.colourBrandingMain, 0.2) }]}>\n <Text style={[styles.jobTypeText, { color: this.props.colourBrandingMain }]}>{job.type}</Text>\n </View>\n {this.renderSeen()}\n </View>\n </View>\n <View style={styles.jobTopRight}>\n <Image style={styles.jobCommentImage} source={require('../images/speechbubble.png')} />\n {this.renderCommentCount()}\n </View>\n </View>\n <View style={styles.jobBottomSection}>\n {this.renderDescription()}\n <Text style={styles.jobCreatedText}>{createdTimeText}</Text>\n <View style={styles.jobActivityContainer}>\n <View style={[styles.jobStatusContainer, { backgroundColor: statusColor }]}>\n <Icon name=\"wrench\" type=\"font-awesome\" iconStyle={styles.jobStatusIcon} />\n <Text style={styles.jobStatusText}>{statusText}</Text>\n </View>\n <View style={[styles.jobStatusLine, { borderColor: statusColor }]}>\n <View style={styles.jobStatusLineMask} />\n </View>\n <View style={[styles.jobStatusCircle, { backgroundColor: statusColor }]} />\n <Text style={styles.jobStatusDateText}>{activityTimeText}</Text>\n </View>\n </View>\n </View>\n </View>\n </TouchableOpacity>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n jobContainer: {\n marginVertical: 8,\n paddingHorizontal: 16,\n },\n jobInnerContainer: {\n ...Helper.getShadowStyle(),\n },\n jobTopSection: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n paddingHorizontal: 10,\n paddingVertical: 10,\n borderBottomWidth: 1,\n borderBottomColor: Colours.LINEGREY,\n },\n jobTopLeft: {\n flex: 1,\n },\n jobIdText: {\n fontFamily: 'sf-medium',\n fontSize: 12,\n marginBottom: 4,\n },\n jobTitleText: {\n fontFamily: 'sf-semibold',\n fontSize: 18,\n color: Colours.TEXT_DARK,\n marginBottom: 4,\n },\n jobLocationText: {\n fontFamily: 'sf-medium',\n fontSize: 12,\n color: Colours.TEXT_LIGHT,\n marginBottom: 4,\n },\n jobTypeSeenContainer: {\n marginTop: 4,\n flexDirection: 'row',\n alignItems: 'center',\n },\n jobTypeContainer: {\n height: 20,\n width: 80,\n borderRadius: 4,\n justifyContent: 'center',\n },\n jobTypeText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n textAlign: 'center',\n },\n jobSeenContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n marginLeft: 10,\n },\n jobSeenIcon: {\n fontSize: 12,\n },\n jobSeenText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n marginLeft: 4,\n },\n jobTopRight: {\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 10,\n paddingTop: 10,\n },\n jobCommentImage: {\n width: 34,\n height: 34,\n resizeMode: 'contain',\n },\n commentCountContainer: {\n position: 'absolute',\n top: 0,\n right: 0,\n borderRadius: 10,\n borderWidth: 2,\n borderColor: '#fff',\n width: 20,\n height: 20,\n backgroundColor: Colours.COLOUR_GREEN,\n justifyContent: 'center',\n alignItems: 'center',\n },\n commentCountText: {\n textAlign: 'center',\n fontFamily: 'sf-bold',\n fontSize: 10,\n color: '#fff',\n },\n jobBottomSection: {\n paddingHorizontal: 10,\n paddingVertical: 16,\n },\n jobDescriptionText: {\n fontFamily: 'sf-medium',\n fontSize: 14,\n color: Colours.TEXT_DARK,\n marginBottom: 8,\n },\n jobCreatedText: {\n fontFamily: 'sf-medium',\n fontSize: 12,\n color: Colours.TEXT_LIGHT,\n marginBottom: 10,\n },\n jobActivityContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n jobStatusContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: 105,\n height: 30,\n paddingHorizontal: 8,\n borderRadius: 4,\n },\n jobStatusIcon: {\n color: '#fff',\n fontSize: 14,\n },\n jobStatusText: {\n color: '#fff',\n textAlign: 'center',\n fontFamily: 'sf-semibold',\n fontSize: 13,\n },\n jobStatusLine: {\n borderWidth: 1,\n borderStyle: 'dashed',\n width: 30,\n },\n jobStatusLineMask: {\n position: 'absolute',\n left: -1,\n top: -1,\n width: '100%',\n height: 1,\n backgroundColor: '#fff',\n zIndex: 1,\n },\n jobStatusCircle: {\n width: 18,\n height: 18,\n borderRadius: 9,\n },\n jobStatusDateText: {\n flex: 1,\n textAlign: 'right',\n fontFamily: 'sf-bold',\n fontSize: 14,\n color: Colours.TEXT_DARK,\n },\n});\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n };\n};\n\nexport default connect(mapStateToProps, {})(MaintenanceListItem);\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["React","Component","Image","Text","TouchableOpacity","View","StyleSheet","_","Icon","connect","moment","getJobStatusProps","jobStatusOptions","Services","Helper","Colours","MaintenanceListItem","navigation","navigate","job","props","renderCommentCount","commentCount","styles","commentCountContainer","commentCountText","renderDescription","isEmpty","description","jobDescriptionText","renderSeen","showSeen","status","name","seen","jobSeenContainer","jobSeenIcon","color","colourBrandingMain","jobSeenText","render","createdTime","createdUnix","createdTimeText","format","activityTimeText","expectedDate","statusText","statusColor","onPressJob","jobContainer","style","jobInnerContainer","jobTopSection","jobTopLeft","jobId","jobIdText","jobTitleText","title","room","jobLocationText","jobTypeSeenContainer","jobTypeContainer","backgroundColor","hexToRGBAstring","jobTypeText","type","jobTopRight","jobCommentImage","require","jobBottomSection","jobCreatedText","jobActivityContainer","jobStatusContainer","jobStatusIcon","jobStatusText","jobStatusLine","borderColor","jobStatusLineMask","jobStatusCircle","jobStatusDateText","create","marginVertical","paddingHorizontal","getShadowStyle","flexDirection","alignItems","paddingVertical","borderBottomWidth","borderBottomColor","LINEGREY","flex","fontFamily","fontSize","marginBottom","TEXT_DARK","TEXT_LIGHT","marginTop","height","width","borderRadius","justifyContent","textAlign","marginLeft","paddingTop","resizeMode","position","top","right","borderWidth","COLOUR_GREEN","borderStyle","left","zIndex","mapStateToProps","state","getMainBrandingColourFromState"],"sources":["MaintenanceListItem.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { Image, Text, TouchableOpacity, View, StyleSheet } from 'react-native';\nimport _ from 'lodash';\nimport { Icon } from 'react-native-elements';\nimport { connect } from 'react-redux';\nimport moment from 'moment';\n// import {\n// getShadowStyle,\n// LINEGREY,\n// TEXT_DARK,\n// TEXT_LIGHT,\n// COLOUR_GREEN,\n// getMainBrandingColourFromState,\n// hexToRGBAstring,\n// getJobStatusProps,\n// jobStatusOptions,\n// } from '../../js';\n// import NavigationService from '../../js/NavigationService';\nimport { getJobStatusProps, jobStatusOptions } from '../helper';\nimport { Services } from '../feature.config';\nimport { Helper, Colours } from '../core.config';\n\nclass MaintenanceListItem extends Component {\n onPressJob = () => {\n Services.navigation.navigate('requestDetail', { job: this.props.job });\n };\n\n renderCommentCount() {\n const { job } = this.props;\n if (!job.commentCount) {\n return null;\n }\n return (\n <View style={styles.commentCountContainer}>\n <Text style={styles.commentCountText}>{job.commentCount > 99 ? '99' : job.commentCount}</Text>\n </View>\n );\n }\n\n renderDescription() {\n const { job } = this.props;\n if (_.isEmpty(job.description)) {\n return null;\n }\n return <Text style={styles.jobDescriptionText}>{job.description}</Text>;\n }\n\n renderSeen() {\n const { job } = this.props;\n const showSeen = !job.status || job.status === jobStatusOptions[0].name;\n if (!showSeen || !job.seen) {\n return null;\n }\n return (\n <View style={styles.jobSeenContainer}>\n <Icon name=\"check\" type=\"font-awesome\" iconStyle={[styles.jobSeenIcon, { color: this.props.colourBrandingMain }]} />\n <Text style={[styles.jobSeenText, { color: this.props.colourBrandingMain }]}>Seen</Text>\n </View>\n );\n }\n\n render() {\n const { job } = this.props;\n const createdTime = moment(job.createdUnix);\n const createdTimeText = `${createdTime.format('ddd, D MMMM')} • ${createdTime.format('h:mma')}`;\n const activityTimeText = job.expectedDate ? moment(job.expectedDate).format('D MMMM') : '--';\n const { statusText, statusColor } = getJobStatusProps(job.status);\n\n return (\n <TouchableOpacity onPress={this.onPressJob}>\n <View style={[styles.jobContainer, this.props.style]}>\n <View style={styles.jobInnerContainer}>\n <View style={styles.jobTopSection}>\n <View style={styles.jobTopLeft}>\n {job.jobId ? <Text style={[styles.jobIdText, { color: this.props.colourBrandingMain }]}>{`Job #${job.jobId}`}</Text> : null}\n <Text style={styles.jobTitleText}>{job.title}</Text>\n {job.room ? <Text style={styles.jobLocationText}>{job.room}</Text> : null}\n <View style={styles.jobTypeSeenContainer}>\n <View style={[styles.jobTypeContainer, { backgroundColor: Colours.hexToRGBAstring(this.props.colourBrandingMain, 0.2) }]}>\n <Text style={[styles.jobTypeText, { color: this.props.colourBrandingMain }]}>{job.type}</Text>\n </View>\n {this.renderSeen()}\n </View>\n </View>\n <View style={styles.jobTopRight}>\n <Image style={styles.jobCommentImage} source={require('../images/speechbubble.png')} />\n {this.renderCommentCount()}\n </View>\n </View>\n <View style={styles.jobBottomSection}>\n {/* {this.renderDescription()} */}\n <Text style={styles.jobCreatedText}>{createdTimeText}</Text>\n <View style={styles.jobActivityContainer}>\n <View style={[styles.jobStatusContainer, { backgroundColor: statusColor }]}>\n <Icon name=\"wrench\" type=\"font-awesome\" iconStyle={styles.jobStatusIcon} />\n <Text style={styles.jobStatusText}>{statusText}</Text>\n </View>\n <View style={[styles.jobStatusLine, { borderColor: statusColor }]}>\n <View style={styles.jobStatusLineMask} />\n </View>\n <View style={[styles.jobStatusCircle, { backgroundColor: statusColor }]} />\n <Text style={styles.jobStatusDateText}>{activityTimeText}</Text>\n </View>\n </View>\n </View>\n </View>\n </TouchableOpacity>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n jobContainer: {\n marginVertical: 8,\n paddingHorizontal: 16,\n },\n jobInnerContainer: {\n ...Helper.getShadowStyle(),\n },\n jobTopSection: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n paddingHorizontal: 10,\n paddingVertical: 10,\n borderBottomWidth: 1,\n borderBottomColor: Colours.LINEGREY,\n },\n jobTopLeft: {\n flex: 1,\n },\n jobIdText: {\n fontFamily: 'sf-medium',\n fontSize: 12,\n marginBottom: 4,\n },\n jobTitleText: {\n fontFamily: 'sf-semibold',\n fontSize: 18,\n color: Colours.TEXT_DARK,\n marginBottom: 4,\n },\n jobLocationText: {\n fontFamily: 'sf-medium',\n fontSize: 12,\n color: Colours.TEXT_LIGHT,\n marginBottom: 4,\n },\n jobTypeSeenContainer: {\n marginTop: 4,\n flexDirection: 'row',\n alignItems: 'center',\n },\n jobTypeContainer: {\n height: 20,\n width: 80,\n borderRadius: 4,\n justifyContent: 'center',\n },\n jobTypeText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n textAlign: 'center',\n },\n jobSeenContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n marginLeft: 10,\n },\n jobSeenIcon: {\n fontSize: 12,\n },\n jobSeenText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n marginLeft: 4,\n },\n jobTopRight: {\n alignItems: 'center',\n justifyContent: 'center',\n paddingHorizontal: 10,\n paddingTop: 10,\n },\n jobCommentImage: {\n width: 34,\n height: 34,\n resizeMode: 'contain',\n },\n commentCountContainer: {\n position: 'absolute',\n top: 0,\n right: 0,\n borderRadius: 10,\n borderWidth: 2,\n borderColor: '#fff',\n width: 20,\n height: 20,\n backgroundColor: Colours.COLOUR_GREEN,\n justifyContent: 'center',\n alignItems: 'center',\n },\n commentCountText: {\n textAlign: 'center',\n fontFamily: 'sf-bold',\n fontSize: 10,\n color: '#fff',\n },\n jobBottomSection: {\n paddingHorizontal: 10,\n paddingVertical: 16,\n },\n jobDescriptionText: {\n fontFamily: 'sf-medium',\n fontSize: 14,\n color: Colours.TEXT_DARK,\n marginBottom: 8,\n },\n jobCreatedText: {\n fontFamily: 'sf-medium',\n fontSize: 12,\n color: Colours.TEXT_LIGHT,\n marginBottom: 10,\n },\n jobActivityContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n jobStatusContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: 105,\n height: 30,\n paddingHorizontal: 8,\n borderRadius: 4,\n },\n jobStatusIcon: {\n color: '#fff',\n fontSize: 14,\n },\n jobStatusText: {\n color: '#fff',\n textAlign: 'center',\n fontFamily: 'sf-semibold',\n fontSize: 13,\n },\n jobStatusLine: {\n borderWidth: 1,\n borderStyle: 'dashed',\n width: 30,\n },\n jobStatusLineMask: {\n position: 'absolute',\n left: -1,\n top: -1,\n width: '100%',\n height: 1,\n backgroundColor: '#fff',\n zIndex: 1,\n },\n jobStatusCircle: {\n width: 18,\n height: 18,\n borderRadius: 9,\n },\n jobStatusDateText: {\n flex: 1,\n textAlign: 'right',\n fontFamily: 'sf-bold',\n fontSize: 14,\n color: Colours.TEXT_DARK,\n },\n});\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n };\n};\n\nexport default connect(mapStateToProps, {})(MaintenanceListItem);\n"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@plusscommunities/pluss-maintenance-app",
|
3
|
-
"version": "2.2.
|
3
|
+
"version": "2.2.4",
|
4
4
|
"description": "Extension package to enable maintenance on Pluss Communities Platform",
|
5
5
|
"main": "dist/module/index.js",
|
6
6
|
"module": "dist/module/index.js",
|
@@ -21,7 +21,7 @@
|
|
21
21
|
"author": "Phillip Suh",
|
22
22
|
"license": "ISC",
|
23
23
|
"dependencies": {
|
24
|
-
"@plusscommunities/pluss-core-app": "1.8.1
|
24
|
+
"@plusscommunities/pluss-core-app": "1.8.1",
|
25
25
|
"axios": "^0.16.2",
|
26
26
|
"lodash": "^4.17.4",
|
27
27
|
"moment": "^2.18.1",
|
@@ -93,14 +93,27 @@ class MaintenanceList extends Component {
|
|
93
93
|
const { jobs } = this.props;
|
94
94
|
|
95
95
|
let filteredList = jobs;
|
96
|
+
let jobIdMatch = null;
|
96
97
|
if (searchText) {
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
98
|
+
jobIdMatch = _.find(jobs, j => j.jobId === searchText);
|
99
|
+
filteredList = jobs.filter(j => {
|
100
|
+
if (j.room && j.room.toLowerCase().indexOf(searchText.toLowerCase()) > -1) {
|
101
|
+
return true;
|
102
|
+
}
|
103
|
+
return false;
|
104
|
+
});
|
105
|
+
if (!jobIdMatch) this.fetchJob(searchText);
|
106
|
+
}
|
107
|
+
if (selectedStatus) filteredList = filteredList.filter(j => selectedStatus.includes(j.status));
|
108
|
+
if (selectedType) filteredList = filteredList.filter(j => selectedType.includes(j.type));
|
109
|
+
if (jobIdMatch) {
|
110
|
+
const jobIndex = filteredList.indexOf(jobIdMatch);
|
111
|
+
if (jobIndex > -1) {
|
112
|
+
filteredList.splice(jobIndex, 1);
|
113
|
+
}
|
114
|
+
filteredList.unshift(jobIdMatch);
|
103
115
|
}
|
116
|
+
if (source !== 'search') this.refresh();
|
104
117
|
|
105
118
|
this.setState({ filteredList });
|
106
119
|
};
|
@@ -153,13 +166,13 @@ class MaintenanceList extends Component {
|
|
153
166
|
return (
|
154
167
|
<View style={styles.searchContainer}>
|
155
168
|
<Components.GenericInput
|
156
|
-
placeholder="Search by Job ID"
|
169
|
+
placeholder="Search by Job ID or Location"
|
157
170
|
value={this.state.searchText}
|
158
171
|
onChangeText={this.onSearchText}
|
159
172
|
onSubmitEditing={this.onSearchSubmit}
|
160
173
|
squaredCorners
|
161
174
|
hasClear
|
162
|
-
keyboardType={'numeric'}
|
175
|
+
// keyboardType={'numeric'}
|
163
176
|
returnKeyType={'done'}
|
164
177
|
/>
|
165
178
|
</View>
|
@@ -88,7 +88,7 @@ class MaintenanceListItem extends Component {
|
|
88
88
|
</View>
|
89
89
|
</View>
|
90
90
|
<View style={styles.jobBottomSection}>
|
91
|
-
{this.renderDescription()}
|
91
|
+
{/* {this.renderDescription()} */}
|
92
92
|
<Text style={styles.jobCreatedText}>{createdTimeText}</Text>
|
93
93
|
<View style={styles.jobActivityContainer}>
|
94
94
|
<View style={[styles.jobStatusContainer, { backgroundColor: statusColor }]}>
|