@plusscommunities/pluss-maintenance-app 6.0.13-beta.0 → 6.0.13
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/FilterPopupMenu.js +18 -11
- package/dist/module/components/FilterPopupMenu.js.map +1 -1
- package/dist/module/components/MaintenanceList.js +1 -1
- package/dist/module/components/MaintenanceList.js.map +1 -1
- package/dist/module/helper.js +3 -2
- package/dist/module/helper.js.map +1 -1
- package/dist/module/reducers/JobsReducer.js +1 -0
- package/dist/module/reducers/JobsReducer.js.map +1 -1
- package/package.json +1 -1
- package/src/components/FilterPopupMenu.js +26 -16
- package/src/components/MaintenanceList.js +1 -1
- package/src/helper.js +6 -3
- package/src/reducers/JobsReducer.js +1 -0
@@ -7,7 +7,7 @@ import { connect } from 'react-redux';
|
|
7
7
|
import _ from 'lodash';
|
8
8
|
import { maintenanceActions } from '../apis';
|
9
9
|
import { Colours, Helper } from '../core.config';
|
10
|
-
import { getJobStatusOptions, getIncompleteJobStatuses, jobPriorityOptions } from '../helper';
|
10
|
+
import { getJobStatusOptions, getIncompleteJobStatuses, jobPriorityOptions, getDefaultJobPriority } from '../helper';
|
11
11
|
import { values } from '../values.config';
|
12
12
|
const SCREEN_HEIGHT = Dimensions.get('window').height;
|
13
13
|
class FilterPopupMenu extends Component {
|
@@ -25,7 +25,20 @@ class FilterPopupMenu extends Component {
|
|
25
25
|
label: s.text,
|
26
26
|
value: s.text
|
27
27
|
}))];
|
28
|
-
// console.log('getStatusOptions', options);
|
28
|
+
// console.log('getStatusOptions', JSON.stringify(options, null, 2));
|
29
|
+
return options;
|
30
|
+
});
|
31
|
+
_defineProperty(this, "getPriorityOptions", () => {
|
32
|
+
const priorityOptions = jobPriorityOptions;
|
33
|
+
const defaultPriority = getDefaultJobPriority();
|
34
|
+
const options = [{
|
35
|
+
label: 'All',
|
36
|
+
value: ''
|
37
|
+
}, ...priorityOptions.map(p => ({
|
38
|
+
label: p.label,
|
39
|
+
value: p.label === (defaultPriority === null || defaultPriority === void 0 ? void 0 : defaultPriority.label) ? `${p.label}|undefined` : p.label
|
40
|
+
}))];
|
41
|
+
// console.log('getPriorityOptions', JSON.stringify(options, null, 2));
|
29
42
|
return options;
|
30
43
|
});
|
31
44
|
_defineProperty(this, "getAssignees", async () => {
|
@@ -79,7 +92,7 @@ class FilterPopupMenu extends Component {
|
|
79
92
|
this.setState(newState);
|
80
93
|
});
|
81
94
|
_defineProperty(this, "onDone", () => {
|
82
|
-
var _this$getStatusOption, _this$state$assignees;
|
95
|
+
var _this$getStatusOption, _this$getPriorityOpti, _this$state$assignees;
|
83
96
|
const {
|
84
97
|
onClose
|
85
98
|
} = this.props;
|
@@ -93,6 +106,7 @@ class FilterPopupMenu extends Component {
|
|
93
106
|
status: selectedStatus,
|
94
107
|
statusText: (_this$getStatusOption = this.getStatusOptions().find(o => o.value === selectedStatus)) === null || _this$getStatusOption === void 0 ? void 0 : _this$getStatusOption.label,
|
95
108
|
priority: selectedPriority,
|
109
|
+
priorityText: (_this$getPriorityOpti = this.getPriorityOptions().find(o => o.value === selectedPriority)) === null || _this$getPriorityOpti === void 0 ? void 0 : _this$getPriorityOpti.label,
|
96
110
|
type: selectedType,
|
97
111
|
assignee: selectedAssignee,
|
98
112
|
assigneeName: (_this$state$assignees = this.state.assignees.find(a => a.value === selectedAssignee)) === null || _this$state$assignees === void 0 ? void 0 : _this$state$assignees.label
|
@@ -106,13 +120,6 @@ class FilterPopupMenu extends Component {
|
|
106
120
|
selectedAssignee: props.assignee || '',
|
107
121
|
assignees: []
|
108
122
|
};
|
109
|
-
this.priorityOptions = [{
|
110
|
-
label: 'All',
|
111
|
-
value: ''
|
112
|
-
}, ...jobPriorityOptions.map(p => ({
|
113
|
-
label: p.label,
|
114
|
-
value: p.label
|
115
|
-
}))];
|
116
123
|
}
|
117
124
|
componentDidMount() {
|
118
125
|
this.getAssignees();
|
@@ -192,7 +199,7 @@ class FilterPopupMenu extends Component {
|
|
192
199
|
style: styles.menu
|
193
200
|
}, this.renderTitle(), /*#__PURE__*/React.createElement(ScrollView, {
|
194
201
|
style: styles.optionContent
|
195
|
-
}, this.renderOptions('Status', this.getStatusOptions(), 'selectedStatus'), isStaff ? this.renderOptions('Priority', this.
|
202
|
+
}, this.renderOptions('Status', this.getStatusOptions(), 'selectedStatus'), isStaff ? this.renderOptions('Priority', this.getPriorityOptions(), 'selectedPriority') : null, this.renderOptions('Type', this.state.types, 'selectedType'), canFilterAssignee ? this.renderOptions('Assigned To', this.state.assignees, 'selectedAssignee') : null), this.renderCancel())));
|
196
203
|
}
|
197
204
|
}
|
198
205
|
const styles = {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","Component","View","Text","TouchableOpacity","Modal","ScrollView","Dimensions","connect","_","maintenanceActions","Colours","Helper","getJobStatusOptions","getIncompleteJobStatuses","jobPriorityOptions","values","SCREEN_HEIGHT","get","height","FilterPopupMenu","constructor","props","_defineProperty","statusOptions","options","label","value","map","s","text","join","res","getAssignees","site","assignees","data","Users","t","displayName","id","orderBy","splice","newState","some","a","state","selectedAssignee","setState","error","console","getJobTypes","getSite","types","typeName","key","_this$getStatusOption","_this$state$assignees","onClose","selectedStatus","selectedPriority","selectedType","status","statusText","getStatusOptions","find","o","priority","type","assignee","assigneeName","priorityOptions","p","componentDidMount","isEmpty","refreshTypes","componentDidUpdate","prevProps","renderTitle","title","createElement","style","styles","titleContainer","titleText","renderCancel","colourBrandingMain","cancelText","onPress","onDone","cancelContainer","color","renderOptions","selectedKey","optionsContainer","optionsTitle","selected","backgroundColor","onSelectOption","optionContainer","borderColor","optionText","render","isStaff","user","category","canFilterAssignee","includes","permissions","permissionMaintenanceAssignment","visible","transparent","animationType","onRequestClose","container","menu","optionContent","position","bottom","left","right","top","zIndex","borderTopLeftRadius","borderTopRightRadius","maxHeight","paddingVertical","LINEGREY","borderTopWidth","paddingHorizontal","fontFamily","fontSize","textAlign","TEXT_DARK","padding","borderBottomWidth","marginHorizontal","marginBottom","flex","flexDirection","flexWrap","alignItems","justifyContent","minWidth","borderRadius","borderWidth","marginRight","mapStateToProps","getMainBrandingColourFromState","statusTypes","reducerKey","jobstatuses"],"sources":["FilterPopupMenu.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, Text, TouchableOpacity, Modal, ScrollView, Dimensions } from 'react-native';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { maintenanceActions } from '../apis';\nimport { Colours, Helper } from '../core.config';\nimport { getJobStatusOptions, getIncompleteJobStatuses, jobPriorityOptions } from '../helper';\nimport { values } from '../values.config';\n\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\n\nclass FilterPopupMenu extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n types: props.types || [],\n selectedStatus: props.status || '',\n selectedPriority: props.priority || '',\n selectedType: props.type || '',\n selectedAssignee: props.assignee || '',\n assignees: [],\n };\n this.priorityOptions = [\n {\n label: 'All',\n value: '',\n },\n ...jobPriorityOptions.map(p => ({\n label: p.label,\n value: p.label,\n }))\n ];\n }\n\n componentDidMount() {\n this.getAssignees();\n if (_.isEmpty(this.state.types)) this.refreshTypes();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.site !== this.props.site) {\n this.refreshTypes();\n }\n }\n\n getStatusOptions = () => {\n const statusOptions = getJobStatusOptions(this.props);\n const options = [\n {\n label: 'All',\n value: '',\n },\n {\n label: 'Incomplete',\n value: `Unassigned|${getIncompleteJobStatuses(this.props).map(s => s.text).join('|')}`,\n },\n ...statusOptions.map(s => ({\n label: s.text,\n value: s.text,\n })),\n ];\n // console.log('getStatusOptions', options);\n return options;\n }\n\n getAssignees = async () => {\n try {\n const res = await maintenanceActions.getAssignees(this.props.site);\n let assignees = res.data.Users.map(t => {\n return { label: t.displayName, value: t.id };\n });\n assignees = _.orderBy(assignees, 'label');\n\n assignees.splice(0, 0, { label: 'All', value: '' });\n\n const newState = { assignees };\n\n if (!assignees.some(a => a.value === this.state.selectedAssignee)) {\n newState.selectedAssignee = '';\n }\n // console.log('refreshassignees', assignees);\n this.setState(newState);\n } catch (error) {\n console.error('getAssignees', error);\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 onSelectOption = (key, value) => {\n const newState = {};\n newState[key] = value;\n this.setState(newState);\n };\n\n onDone = () => {\n const { onClose } = this.props;\n const { selectedStatus, selectedPriority, selectedType, selectedAssignee } = this.state;\n if (onClose)\n onClose({\n status: selectedStatus,\n statusText: this.getStatusOptions().find(o => o.value === selectedStatus)?.label,\n priority: selectedPriority,\n type: selectedType,\n assignee: selectedAssignee,\n assigneeName: this.state.assignees.find(a => a.value === selectedAssignee)?.label,\n });\n };\n\n renderTitle() {\n const { title } = this.props;\n return (\n <View style={styles.titleContainer}>\n <Text style={styles.titleText}>{title || 'Filter By'}</Text>\n </View>\n );\n }\n\n renderCancel() {\n const { colourBrandingMain, cancelText } = this.props;\n return (\n <TouchableOpacity onPress={this.onDone}>\n <View style={styles.cancelContainer}>\n <Text style={[styles.cancelText, { color: colourBrandingMain }]}>{cancelText || 'Done'}</Text>\n </View>\n </TouchableOpacity>\n );\n }\n\n renderOptions(title, options, selectedKey) {\n const { colourBrandingMain } = this.props;\n return (\n <View style={styles.optionsContainer}>\n <Text style={styles.optionsTitle}>{title}</Text>\n <View style={styles.options}>\n {options.map(o => {\n const selected = this.state[selectedKey];\n const backgroundColor = o.value === selected ? colourBrandingMain : '#fff';\n const color = o.value === selected ? '#fff' : colourBrandingMain;\n return (\n <TouchableOpacity key={o.label} onPress={() => this.onSelectOption(selectedKey, o.value)}>\n <View style={[styles.optionContainer, { backgroundColor, borderColor: colourBrandingMain }]}>\n <Text style={[styles.optionText, { color }]}>{o.label}</Text>\n </View>\n </TouchableOpacity>\n );\n })}\n </View>\n </View>\n );\n }\n\n render() {\n // console.log('FilterPopupMenu', JSON.stringify({ category: this.props.user.category, permissions: this.props.user.permissions }, null, 2))\n const isStaff = this.props.user.category === 'staff'\n const canFilterAssignee = !_.includes(this.props.user.permissions, values.permissionMaintenanceAssignment);\n\n return (\n <Modal visible transparent animationType=\"slide\" onRequestClose={this.onDone}>\n <View style={styles.container}>\n <View style={styles.menu}>\n {this.renderTitle()}\n <ScrollView style={styles.optionContent}>\n {this.renderOptions('Status', this.getStatusOptions(), 'selectedStatus')}\n {isStaff ? this.renderOptions('Priority', this.priorityOptions, 'selectedPriority') : null}\n {this.renderOptions('Type', this.state.types, 'selectedType')}\n {canFilterAssignee ? this.renderOptions('Assigned To', this.state.assignees, 'selectedAssignee') : null}\n </ScrollView>\n {this.renderCancel()}\n </View>\n </View>\n </Modal>\n );\n }\n}\n\nconst styles = {\n container: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n backgroundColor: 'rgba(0,0,0,0.5)',\n zIndex: 1000,\n },\n menu: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: '#fff',\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n maxHeight: SCREEN_HEIGHT * 0.8,\n },\n cancelContainer: {\n paddingVertical: 16,\n borderColor: Colours.LINEGREY,\n borderTopWidth: 1,\n paddingHorizontal: 16,\n },\n cancelText: {\n fontFamily: 'sf-medium',\n fontSize: 16,\n textAlign: 'center',\n color: Colours.TEXT_DARK,\n },\n titleContainer: {\n padding: 16,\n borderColor: Colours.LINEGREY,\n borderBottomWidth: 1,\n },\n titleText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n textAlign: 'center',\n color: Colours.TEXT_DARK,\n },\n optionContent: {\n paddingVertical: 10,\n },\n optionsContainer: {\n marginHorizontal: 14,\n },\n optionsTitle: {\n fontFamily: 'sf-semibold',\n marginBottom: 4,\n },\n options: {\n flex: 1,\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n optionContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: 50,\n height: 30,\n paddingHorizontal: 8,\n borderRadius: 4,\n borderWidth: 1,\n marginRight: 8,\n marginBottom: 8,\n },\n optionText: {\n color: '#fff',\n textAlign: 'center',\n fontFamily: 'sf-semibold',\n fontSize: 13,\n },\n};\n\nconst mapStateToProps = state => {\n const { user } = state;\n\n return {\n user,\n site: user.site,\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n statusTypes: state[values.reducerKey].jobstatuses,\n };\n};\n\nexport default connect(mapStateToProps, {})(FilterPopupMenu);\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["React","Component","View","Text","TouchableOpacity","Modal","ScrollView","Dimensions","connect","_","maintenanceActions","Colours","Helper","getJobStatusOptions","getIncompleteJobStatuses","jobPriorityOptions","getDefaultJobPriority","values","SCREEN_HEIGHT","get","height","FilterPopupMenu","constructor","props","_defineProperty","statusOptions","options","label","value","map","s","text","join","priorityOptions","defaultPriority","p","res","getAssignees","site","assignees","data","Users","t","displayName","id","orderBy","splice","newState","some","a","state","selectedAssignee","setState","error","console","getJobTypes","getSite","types","typeName","key","_this$getStatusOption","_this$getPriorityOpti","_this$state$assignees","onClose","selectedStatus","selectedPriority","selectedType","status","statusText","getStatusOptions","find","o","priority","priorityText","getPriorityOptions","type","assignee","assigneeName","componentDidMount","isEmpty","refreshTypes","componentDidUpdate","prevProps","renderTitle","title","createElement","style","styles","titleContainer","titleText","renderCancel","colourBrandingMain","cancelText","onPress","onDone","cancelContainer","color","renderOptions","selectedKey","optionsContainer","optionsTitle","selected","backgroundColor","onSelectOption","optionContainer","borderColor","optionText","render","isStaff","user","category","canFilterAssignee","includes","permissions","permissionMaintenanceAssignment","visible","transparent","animationType","onRequestClose","container","menu","optionContent","position","bottom","left","right","top","zIndex","borderTopLeftRadius","borderTopRightRadius","maxHeight","paddingVertical","LINEGREY","borderTopWidth","paddingHorizontal","fontFamily","fontSize","textAlign","TEXT_DARK","padding","borderBottomWidth","marginHorizontal","marginBottom","flex","flexDirection","flexWrap","alignItems","justifyContent","minWidth","borderRadius","borderWidth","marginRight","mapStateToProps","getMainBrandingColourFromState","statusTypes","reducerKey","jobstatuses"],"sources":["FilterPopupMenu.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, Text, TouchableOpacity, Modal, ScrollView, Dimensions } from 'react-native';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport { maintenanceActions } from '../apis';\nimport { Colours, Helper } from '../core.config';\nimport { getJobStatusOptions, getIncompleteJobStatuses, jobPriorityOptions, getDefaultJobPriority } from '../helper';\nimport { values } from '../values.config';\n\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\n\nclass FilterPopupMenu extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n types: props.types || [],\n selectedStatus: props.status || '',\n selectedPriority: props.priority || '',\n selectedType: props.type || '',\n selectedAssignee: props.assignee || '',\n assignees: [],\n };\n }\n\n componentDidMount() {\n this.getAssignees();\n if (_.isEmpty(this.state.types)) this.refreshTypes();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.site !== this.props.site) {\n this.refreshTypes();\n }\n }\n\n getStatusOptions = () => {\n const statusOptions = getJobStatusOptions(this.props);\n const options = [\n {\n label: 'All',\n value: '',\n },\n {\n label: 'Incomplete',\n value: `Unassigned|${getIncompleteJobStatuses(this.props)\n .map(s => s.text)\n .join('|')}`,\n },\n ...statusOptions.map(s => ({\n label: s.text,\n value: s.text,\n })),\n ];\n // console.log('getStatusOptions', JSON.stringify(options, null, 2));\n return options;\n };\n\n getPriorityOptions = () => {\n const priorityOptions = jobPriorityOptions;\n const defaultPriority = getDefaultJobPriority();\n const options = [\n {\n label: 'All',\n value: '',\n },\n ...priorityOptions.map(p => ({\n label: p.label,\n value: p.label === defaultPriority?.label ? `${p.label}|undefined` : p.label,\n })),\n ];\n // console.log('getPriorityOptions', JSON.stringify(options, null, 2));\n return options;\n };\n\n getAssignees = async () => {\n try {\n const res = await maintenanceActions.getAssignees(this.props.site);\n let assignees = res.data.Users.map(t => {\n return { label: t.displayName, value: t.id };\n });\n assignees = _.orderBy(assignees, 'label');\n\n assignees.splice(0, 0, { label: 'All', value: '' });\n\n const newState = { assignees };\n\n if (!assignees.some(a => a.value === this.state.selectedAssignee)) {\n newState.selectedAssignee = '';\n }\n // console.log('refreshassignees', assignees);\n this.setState(newState);\n } catch (error) {\n console.error('getAssignees', error);\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 onSelectOption = (key, value) => {\n const newState = {};\n newState[key] = value;\n this.setState(newState);\n };\n\n onDone = () => {\n const { onClose } = this.props;\n const { selectedStatus, selectedPriority, selectedType, selectedAssignee } = this.state;\n if (onClose)\n onClose({\n status: selectedStatus,\n statusText: this.getStatusOptions().find(o => o.value === selectedStatus)?.label,\n priority: selectedPriority,\n priorityText: this.getPriorityOptions().find(o => o.value === selectedPriority)?.label,\n type: selectedType,\n assignee: selectedAssignee,\n assigneeName: this.state.assignees.find(a => a.value === selectedAssignee)?.label,\n });\n };\n\n renderTitle() {\n const { title } = this.props;\n return (\n <View style={styles.titleContainer}>\n <Text style={styles.titleText}>{title || 'Filter By'}</Text>\n </View>\n );\n }\n\n renderCancel() {\n const { colourBrandingMain, cancelText } = this.props;\n return (\n <TouchableOpacity onPress={this.onDone}>\n <View style={styles.cancelContainer}>\n <Text style={[styles.cancelText, { color: colourBrandingMain }]}>{cancelText || 'Done'}</Text>\n </View>\n </TouchableOpacity>\n );\n }\n\n renderOptions(title, options, selectedKey) {\n const { colourBrandingMain } = this.props;\n return (\n <View style={styles.optionsContainer}>\n <Text style={styles.optionsTitle}>{title}</Text>\n <View style={styles.options}>\n {options.map(o => {\n const selected = this.state[selectedKey];\n const backgroundColor = o.value === selected ? colourBrandingMain : '#fff';\n const color = o.value === selected ? '#fff' : colourBrandingMain;\n return (\n <TouchableOpacity key={o.label} onPress={() => this.onSelectOption(selectedKey, o.value)}>\n <View style={[styles.optionContainer, { backgroundColor, borderColor: colourBrandingMain }]}>\n <Text style={[styles.optionText, { color }]}>{o.label}</Text>\n </View>\n </TouchableOpacity>\n );\n })}\n </View>\n </View>\n );\n }\n\n render() {\n // console.log('FilterPopupMenu', JSON.stringify({ category: this.props.user.category, permissions: this.props.user.permissions }, null, 2))\n const isStaff = this.props.user.category === 'staff';\n const canFilterAssignee = !_.includes(this.props.user.permissions, values.permissionMaintenanceAssignment);\n\n return (\n <Modal visible transparent animationType=\"slide\" onRequestClose={this.onDone}>\n <View style={styles.container}>\n <View style={styles.menu}>\n {this.renderTitle()}\n <ScrollView style={styles.optionContent}>\n {this.renderOptions('Status', this.getStatusOptions(), 'selectedStatus')}\n {isStaff ? this.renderOptions('Priority', this.getPriorityOptions(), 'selectedPriority') : null}\n {this.renderOptions('Type', this.state.types, 'selectedType')}\n {canFilterAssignee ? this.renderOptions('Assigned To', this.state.assignees, 'selectedAssignee') : null}\n </ScrollView>\n {this.renderCancel()}\n </View>\n </View>\n </Modal>\n );\n }\n}\n\nconst styles = {\n container: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n backgroundColor: 'rgba(0,0,0,0.5)',\n zIndex: 1000,\n },\n menu: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: '#fff',\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n maxHeight: SCREEN_HEIGHT * 0.8,\n },\n cancelContainer: {\n paddingVertical: 16,\n borderColor: Colours.LINEGREY,\n borderTopWidth: 1,\n paddingHorizontal: 16,\n },\n cancelText: {\n fontFamily: 'sf-medium',\n fontSize: 16,\n textAlign: 'center',\n color: Colours.TEXT_DARK,\n },\n titleContainer: {\n padding: 16,\n borderColor: Colours.LINEGREY,\n borderBottomWidth: 1,\n },\n titleText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n textAlign: 'center',\n color: Colours.TEXT_DARK,\n },\n optionContent: {\n paddingVertical: 10,\n },\n optionsContainer: {\n marginHorizontal: 14,\n },\n optionsTitle: {\n fontFamily: 'sf-semibold',\n marginBottom: 4,\n },\n options: {\n flex: 1,\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n optionContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n minWidth: 50,\n height: 30,\n paddingHorizontal: 8,\n borderRadius: 4,\n borderWidth: 1,\n marginRight: 8,\n marginBottom: 8,\n },\n optionText: {\n color: '#fff',\n textAlign: 'center',\n fontFamily: 'sf-semibold',\n fontSize: 13,\n },\n};\n\nconst mapStateToProps = state => {\n const { user } = state;\n\n return {\n user,\n site: user.site,\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n statusTypes: state[values.reducerKey].jobstatuses,\n };\n};\n\nexport default connect(mapStateToProps, {})(FilterPopupMenu);\n"],"mappings":"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","ignoreList":[]}
|
@@ -141,7 +141,7 @@ class MaintenanceList extends Component {
|
|
141
141
|
filterTexts.push(jobfilters.statusText);
|
142
142
|
}
|
143
143
|
if (!_.isEmpty(jobfilters.priority)) {
|
144
|
-
filterTexts.push(jobfilters.
|
144
|
+
filterTexts.push(jobfilters.priorityText);
|
145
145
|
}
|
146
146
|
if (!_.isEmpty(jobfilters.type)) {
|
147
147
|
filterTexts.push(jobfilters.type);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","Component","View","StyleSheet","FlatList","TouchableOpacity","Text","_","connect","maintenanceActions","jobsLoaded","jobAdded","jobsAdded","jobStatusesUpdate","jobHideSeenUpdate","jobsFilterLoaded","MaintenanceListItem","FilterPopupMenu","Components","Colours","Helper","values","MaintenanceList","constructor","props","_defineProperty","onLoadingChanged","jobfilters","res","getJobsRecursive","site","status","priority","type","isEmpty","error","console","log","data","getJobTypes","getSite","types","map","t","label","typeName","value","splice","setState","jobId","state","loading","job","getJobByJobId","source","searchText","jobs","filteredList","jobIdMatch","find","j","filter","room","toLowerCase","indexOf","fetchJob","includes","assignee","AssigneeId","jobIndex","unshift","refresh","callback","resetDataSource","showFilterPopup","selected","onToggleFilter","filterTexts","push","statusText","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, {\n forwardRef: true,\n})(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","priorityText","assigneeName","join","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","emptyRequestsStaff","emptyRequestsUser","renderEmptyList","createElement","EmptyStateMain","title","style","marginHorizontal","renderFilterButton","onPress","styles","filterButton","filterButtonText","color","colourBrandingMain","getFilterButtonText","renderSearch","hasPermission","searchContainer","GenericInput","placeholder","textEntityName","onChangeText","onSearchText","onSubmitEditing","onSearchSubmit","squaredCorners","hasClear","returnKeyType","renderListHeader","ListHeaderComponent","height","renderList","keyboardShouldPersistTaps","flex","contentContainerStyle","paddingBottom","keyExtractor","item","id","renderItem","itemStyle","ListEmptyComponent","renderFilterPopup","onClose","onSelectFilter","render","container","create","backgroundColor","filterContainerOuter","flexDirection","justifyContent","alignItems","paddingHorizontal","paddingVertical","filterTitle","fontFamily","fontSize","letterSpacing","filterContainer","filterText","marginRight","filterIcon","mapStateToProps","user","notifications","reducerKey","jobsOrdered","orderBy","permissions","category","getMainBrandingColourFromState","updateKey","statusTypes","jobstatuses","forwardRef"],"sources":["MaintenanceList.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { 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.priorityText);\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, {\n forwardRef: true,\n})(MaintenanceList);\n"],"mappings":"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","ignoreList":[]}
|
package/dist/module/helper.js
CHANGED
@@ -42,6 +42,7 @@ const getJobStatus = (status, props) => {
|
|
42
42
|
if (status) statusOption = statusOptions.find(s => s.text === status);
|
43
43
|
return statusOption || getDefaultJobStatuses(props)[0];
|
44
44
|
};
|
45
|
-
const
|
46
|
-
|
45
|
+
const getDefaultJobPriority = () => jobPriorityOptions.find(p => p.default);
|
46
|
+
const getJobPriority = priority => jobPriorityOptions.find(p => p.label === priority) || getDefaultJobPriority();
|
47
|
+
export { jobStatusOptions, jobPriorityOptions, getJobStatusOptions, getDefaultJobStatuses, getIncompleteJobStatuses, getJobStatus, getJobPriority, getDefaultJobPriority };
|
47
48
|
//# sourceMappingURL=helper.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["Colours","STATUS_NOT_ACTIONED","STATUS_IN_PROGRESS","STATUS_COMPLETED","jobStatusOptions","text","order","color","LINEGREY","category","COLOUR_TEAL","COLOUR_GREEN_LIGHT","jobPriorityOptions","label","COLOUR_GREEN","default","COLOUR_TANGERINE","COLOUR_RED","getJobStatusOptions","props","_props$statusTypes","statusTypes","length","getDefaultJobStatuses","filter","s","getIncompleteJobStatuses","getJobStatus","status","statusOptions","statusOption","find","
|
1
|
+
{"version":3,"names":["Colours","STATUS_NOT_ACTIONED","STATUS_IN_PROGRESS","STATUS_COMPLETED","jobStatusOptions","text","order","color","LINEGREY","category","COLOUR_TEAL","COLOUR_GREEN_LIGHT","jobPriorityOptions","label","COLOUR_GREEN","default","COLOUR_TANGERINE","COLOUR_RED","getJobStatusOptions","props","_props$statusTypes","statusTypes","length","getDefaultJobStatuses","filter","s","getIncompleteJobStatuses","getJobStatus","status","statusOptions","statusOption","find","getDefaultJobPriority","p","getJobPriority","priority"],"sources":["helper.js"],"sourcesContent":["import { Colours } from './core.config';\n\nconst STATUS_NOT_ACTIONED = 'Not Actioned';\nconst STATUS_IN_PROGRESS = 'In Progress';\nconst STATUS_COMPLETED = 'Completed';\n\nconst jobStatusOptions = [\n {\n text: 'Open',\n order: 0,\n color: Colours.LINEGREY,\n category: STATUS_NOT_ACTIONED,\n },\n {\n text: 'In Progress',\n order: 1,\n color: Colours.COLOUR_TEAL,\n category: STATUS_IN_PROGRESS,\n },\n {\n text: 'Completed',\n order: 2,\n color: Colours.COLOUR_GREEN_LIGHT,\n category: STATUS_COMPLETED,\n },\n];\n\nconst jobPriorityOptions = [\n {\n label: 'Low',\n color: Colours.COLOUR_GREEN,\n default: true,\n },\n {\n label: 'Medium',\n color: Colours.COLOUR_TANGERINE,\n },\n {\n label: 'High',\n color: Colours.COLOUR_RED,\n },\n];\n\nconst getJobStatusOptions = props => (props?.statusTypes?.length ? props?.statusTypes : jobStatusOptions);\n\nconst getDefaultJobStatuses = props => getJobStatusOptions(props).filter(s => s.category === STATUS_NOT_ACTIONED);\n\nconst getIncompleteJobStatuses = props => getJobStatusOptions(props).filter(s => s.category === STATUS_IN_PROGRESS);\n\nconst getJobStatus = (status, props) => {\n const statusOptions = getJobStatusOptions(props);\n // console.log('getJobStatus', JSON.stringify({ status, statusOptions }, null, 2));\n let statusOption = null;\n if (status) statusOption = statusOptions.find(s => s.text === status);\n return statusOption || getDefaultJobStatuses(props)[0];\n};\n\nconst getDefaultJobPriority = () => jobPriorityOptions.find(p => p.default);\n\nconst getJobPriority = priority => jobPriorityOptions.find(p => p.label === priority) || getDefaultJobPriority();\n\nexport {\n jobStatusOptions,\n jobPriorityOptions,\n getJobStatusOptions,\n getDefaultJobStatuses,\n getIncompleteJobStatuses,\n getJobStatus,\n getJobPriority,\n getDefaultJobPriority,\n};\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,eAAe;AAEvC,MAAMC,mBAAmB,GAAG,cAAc;AAC1C,MAAMC,kBAAkB,GAAG,aAAa;AACxC,MAAMC,gBAAgB,GAAG,WAAW;AAEpC,MAAMC,gBAAgB,GAAG,CACvB;EACEC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,CAAC;EACRC,KAAK,EAAEP,OAAO,CAACQ,QAAQ;EACvBC,QAAQ,EAAER;AACZ,CAAC,EACD;EACEI,IAAI,EAAE,aAAa;EACnBC,KAAK,EAAE,CAAC;EACRC,KAAK,EAAEP,OAAO,CAACU,WAAW;EAC1BD,QAAQ,EAAEP;AACZ,CAAC,EACD;EACEG,IAAI,EAAE,WAAW;EACjBC,KAAK,EAAE,CAAC;EACRC,KAAK,EAAEP,OAAO,CAACW,kBAAkB;EACjCF,QAAQ,EAAEN;AACZ,CAAC,CACF;AAED,MAAMS,kBAAkB,GAAG,CACzB;EACEC,KAAK,EAAE,KAAK;EACZN,KAAK,EAAEP,OAAO,CAACc,YAAY;EAC3BC,OAAO,EAAE;AACX,CAAC,EACD;EACEF,KAAK,EAAE,QAAQ;EACfN,KAAK,EAAEP,OAAO,CAACgB;AACjB,CAAC,EACD;EACEH,KAAK,EAAE,MAAM;EACbN,KAAK,EAAEP,OAAO,CAACiB;AACjB,CAAC,CACF;AAED,MAAMC,mBAAmB,GAAGC,KAAK;EAAA,IAAAC,kBAAA;EAAA,OAAKD,KAAK,aAALA,KAAK,gBAAAC,kBAAA,GAALD,KAAK,CAAEE,WAAW,cAAAD,kBAAA,eAAlBA,kBAAA,CAAoBE,MAAM,GAAGH,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEE,WAAW,GAAGjB,gBAAgB;AAAA,CAAC;AAEzG,MAAMmB,qBAAqB,GAAGJ,KAAK,IAAID,mBAAmB,CAACC,KAAK,CAAC,CAACK,MAAM,CAACC,CAAC,IAAIA,CAAC,CAAChB,QAAQ,KAAKR,mBAAmB,CAAC;AAEjH,MAAMyB,wBAAwB,GAAGP,KAAK,IAAID,mBAAmB,CAACC,KAAK,CAAC,CAACK,MAAM,CAACC,CAAC,IAAIA,CAAC,CAAChB,QAAQ,KAAKP,kBAAkB,CAAC;AAEnH,MAAMyB,YAAY,GAAGA,CAACC,MAAM,EAAET,KAAK,KAAK;EACtC,MAAMU,aAAa,GAAGX,mBAAmB,CAACC,KAAK,CAAC;EAChD;EACA,IAAIW,YAAY,GAAG,IAAI;EACvB,IAAIF,MAAM,EAAEE,YAAY,GAAGD,aAAa,CAACE,IAAI,CAACN,CAAC,IAAIA,CAAC,CAACpB,IAAI,KAAKuB,MAAM,CAAC;EACrE,OAAOE,YAAY,IAAIP,qBAAqB,CAACJ,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAMa,qBAAqB,GAAGA,CAAA,KAAMpB,kBAAkB,CAACmB,IAAI,CAACE,CAAC,IAAIA,CAAC,CAAClB,OAAO,CAAC;AAE3E,MAAMmB,cAAc,GAAGC,QAAQ,IAAIvB,kBAAkB,CAACmB,IAAI,CAACE,CAAC,IAAIA,CAAC,CAACpB,KAAK,KAAKsB,QAAQ,CAAC,IAAIH,qBAAqB,CAAC,CAAC;AAEhH,SACE5B,gBAAgB,EAChBQ,kBAAkB,EAClBM,mBAAmB,EACnBK,qBAAqB,EACrBG,wBAAwB,EACxBC,YAAY,EACZO,cAAc,EACdF,qBAAqB","ignoreList":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_","REHYDRATE","JOBS_LOADED","JOB_ADDED","JOBS_ADDED","JOBS_STATUSES_LOADED","JOBS_HIDE_SEEN","JOB_FILTER_LOADED","ActionTypes","values","REDUCER_KEY","reducerKey","INITIAL_STATE","jobs","jobstatuses","hideSeen","jobfilters","status","statusText","priority","type","assignee","assigneeName","state","action","updateJobs","index","LOGOUT","CHANGE_ROLE","payload","map","job","title","description","unionWith","j1","j2","id","findIndex","item","push","orderBy","v1","v2","text"],"sources":["JobsReducer.js"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport _ from 'lodash';\nimport { REHYDRATE } from 'redux-persist';\nimport { JOBS_LOADED, JOB_ADDED, JOBS_ADDED, JOBS_STATUSES_LOADED, JOBS_HIDE_SEEN, JOB_FILTER_LOADED } from '../actions/types';\nimport { ActionTypes } from '../core.config';\nimport { values } from '../values.config';\n\nconst REDUCER_KEY = values.reducerKey;\n\nconst INITIAL_STATE = {\n jobs: [],\n jobstatuses: [],\n hideSeen: false,\n jobfilters: {\n status: '',\n statusText: '',\n priority: '',\n type: '',\n assignee: '',\n assigneeName: '',\n },\n};\n\nexport default (state = INITIAL_STATE, action) => {\n let updateJobs = [];\n let index = 0;\n let jobstatuses = [];\n\n switch (action.type) {\n case ActionTypes.LOGOUT:\n case ActionTypes.CHANGE_ROLE:\n return INITIAL_STATE;\n case JOBS_LOADED:\n return { ...state, jobs: action.payload.map(job => ({ title: job.title || job.description, ...job })) };\n case JOBS_ADDED:\n updateJobs = action.payload.map(job => ({ title: job.title || job.description, ...job }));\n updateJobs = _.unionWith(updateJobs, state.jobs, (j1, j2) => {\n return j1.id === j2.id;\n });\n return { ...state, jobs: updateJobs };\n case JOB_ADDED:\n updateJobs = [...state.jobs];\n index = updateJobs.findIndex(item => item.id === action.payload.id);\n if (index > -1) {\n updateJobs[index] = action.payload;\n } else {\n updateJobs.push(action.payload);\n }\n return { ...state, jobs: updateJobs };\n case JOBS_STATUSES_LOADED:\n jobstatuses = _.orderBy(\n _.unionWith(action.payload, state.jobstatuses, (v1, v2) => {\n return v1 != null && v2 != null && v1.text === v2.text;\n }),\n 'order',\n 'asc',\n );\n return { ...state, jobstatuses };\n case JOBS_HIDE_SEEN:\n return { ...state, hideSeen: action.payload };\n case JOB_FILTER_LOADED:\n return { ...state, jobfilters: action.payload || INITIAL_STATE.jobfilters };\n case REHYDRATE:\n if (!action.payload) return state;\n if (action.payload[REDUCER_KEY]) {\n if (action.payload[REDUCER_KEY].jobs == null) {\n action.payload[REDUCER_KEY].jobs = [];\n }\n return action.payload[REDUCER_KEY];\n }\n return state;\n default:\n return state;\n }\n};\n"],"mappings":"AAAA;AACA,OAAOA,CAAC,MAAM,QAAQ;AACtB,SAASC,SAAS,QAAQ,eAAe;AACzC,SAASC,WAAW,EAAEC,SAAS,EAAEC,UAAU,EAAEC,oBAAoB,EAAEC,cAAc,EAAEC,iBAAiB,QAAQ,kBAAkB;AAC9H,SAASC,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,MAAM,QAAQ,kBAAkB;AAEzC,MAAMC,WAAW,GAAGD,MAAM,CAACE,UAAU;AAErC,MAAMC,aAAa,GAAG;EACpBC,IAAI,EAAE,EAAE;EACRC,WAAW,EAAE,EAAE;EACfC,QAAQ,EAAE,KAAK;EACfC,UAAU,EAAE;IACVC,MAAM,EAAE,EAAE;IACVC,UAAU,EAAE,EAAE;IACdC,QAAQ,EAAE,EAAE;IACZC,IAAI,EAAE,EAAE;IACRC,QAAQ,EAAE,EAAE;IACZC,YAAY,EAAE;EAChB;AACF,CAAC;AAED,eAAe,CAACC,KAAK,
|
1
|
+
{"version":3,"names":["_","REHYDRATE","JOBS_LOADED","JOB_ADDED","JOBS_ADDED","JOBS_STATUSES_LOADED","JOBS_HIDE_SEEN","JOB_FILTER_LOADED","ActionTypes","values","REDUCER_KEY","reducerKey","INITIAL_STATE","jobs","jobstatuses","hideSeen","jobfilters","status","statusText","priority","priorityText","type","assignee","assigneeName","state","action","updateJobs","index","LOGOUT","CHANGE_ROLE","payload","map","job","title","description","unionWith","j1","j2","id","findIndex","item","push","orderBy","v1","v2","text"],"sources":["JobsReducer.js"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport _ from 'lodash';\nimport { REHYDRATE } from 'redux-persist';\nimport { JOBS_LOADED, JOB_ADDED, JOBS_ADDED, JOBS_STATUSES_LOADED, JOBS_HIDE_SEEN, JOB_FILTER_LOADED } from '../actions/types';\nimport { ActionTypes } from '../core.config';\nimport { values } from '../values.config';\n\nconst REDUCER_KEY = values.reducerKey;\n\nconst INITIAL_STATE = {\n jobs: [],\n jobstatuses: [],\n hideSeen: false,\n jobfilters: {\n status: '',\n statusText: '',\n priority: '',\n priorityText: '',\n type: '',\n assignee: '',\n assigneeName: '',\n },\n};\n\nexport default (state = INITIAL_STATE, action) => {\n let updateJobs = [];\n let index = 0;\n let jobstatuses = [];\n\n switch (action.type) {\n case ActionTypes.LOGOUT:\n case ActionTypes.CHANGE_ROLE:\n return INITIAL_STATE;\n case JOBS_LOADED:\n return { ...state, jobs: action.payload.map(job => ({ title: job.title || job.description, ...job })) };\n case JOBS_ADDED:\n updateJobs = action.payload.map(job => ({ title: job.title || job.description, ...job }));\n updateJobs = _.unionWith(updateJobs, state.jobs, (j1, j2) => {\n return j1.id === j2.id;\n });\n return { ...state, jobs: updateJobs };\n case JOB_ADDED:\n updateJobs = [...state.jobs];\n index = updateJobs.findIndex(item => item.id === action.payload.id);\n if (index > -1) {\n updateJobs[index] = action.payload;\n } else {\n updateJobs.push(action.payload);\n }\n return { ...state, jobs: updateJobs };\n case JOBS_STATUSES_LOADED:\n jobstatuses = _.orderBy(\n _.unionWith(action.payload, state.jobstatuses, (v1, v2) => {\n return v1 != null && v2 != null && v1.text === v2.text;\n }),\n 'order',\n 'asc',\n );\n return { ...state, jobstatuses };\n case JOBS_HIDE_SEEN:\n return { ...state, hideSeen: action.payload };\n case JOB_FILTER_LOADED:\n return { ...state, jobfilters: action.payload || INITIAL_STATE.jobfilters };\n case REHYDRATE:\n if (!action.payload) return state;\n if (action.payload[REDUCER_KEY]) {\n if (action.payload[REDUCER_KEY].jobs == null) {\n action.payload[REDUCER_KEY].jobs = [];\n }\n return action.payload[REDUCER_KEY];\n }\n return state;\n default:\n return state;\n }\n};\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
@@ -4,7 +4,7 @@ import { connect } from 'react-redux';
|
|
4
4
|
import _ from 'lodash';
|
5
5
|
import { maintenanceActions } from '../apis';
|
6
6
|
import { Colours, Helper } from '../core.config';
|
7
|
-
import { getJobStatusOptions, getIncompleteJobStatuses, jobPriorityOptions } from '../helper';
|
7
|
+
import { getJobStatusOptions, getIncompleteJobStatuses, jobPriorityOptions, getDefaultJobPriority } from '../helper';
|
8
8
|
import { values } from '../values.config';
|
9
9
|
|
10
10
|
const SCREEN_HEIGHT = Dimensions.get('window').height;
|
@@ -21,16 +21,6 @@ class FilterPopupMenu extends Component {
|
|
21
21
|
selectedAssignee: props.assignee || '',
|
22
22
|
assignees: [],
|
23
23
|
};
|
24
|
-
this.priorityOptions = [
|
25
|
-
{
|
26
|
-
label: 'All',
|
27
|
-
value: '',
|
28
|
-
},
|
29
|
-
...jobPriorityOptions.map(p => ({
|
30
|
-
label: p.label,
|
31
|
-
value: p.label,
|
32
|
-
}))
|
33
|
-
];
|
34
24
|
}
|
35
25
|
|
36
26
|
componentDidMount() {
|
@@ -53,16 +43,35 @@ class FilterPopupMenu extends Component {
|
|
53
43
|
},
|
54
44
|
{
|
55
45
|
label: 'Incomplete',
|
56
|
-
value: `Unassigned|${getIncompleteJobStatuses(this.props)
|
46
|
+
value: `Unassigned|${getIncompleteJobStatuses(this.props)
|
47
|
+
.map(s => s.text)
|
48
|
+
.join('|')}`,
|
57
49
|
},
|
58
50
|
...statusOptions.map(s => ({
|
59
51
|
label: s.text,
|
60
52
|
value: s.text,
|
61
53
|
})),
|
62
54
|
];
|
63
|
-
// console.log('getStatusOptions', options);
|
55
|
+
// console.log('getStatusOptions', JSON.stringify(options, null, 2));
|
64
56
|
return options;
|
65
|
-
}
|
57
|
+
};
|
58
|
+
|
59
|
+
getPriorityOptions = () => {
|
60
|
+
const priorityOptions = jobPriorityOptions;
|
61
|
+
const defaultPriority = getDefaultJobPriority();
|
62
|
+
const options = [
|
63
|
+
{
|
64
|
+
label: 'All',
|
65
|
+
value: '',
|
66
|
+
},
|
67
|
+
...priorityOptions.map(p => ({
|
68
|
+
label: p.label,
|
69
|
+
value: p.label === defaultPriority?.label ? `${p.label}|undefined` : p.label,
|
70
|
+
})),
|
71
|
+
];
|
72
|
+
// console.log('getPriorityOptions', JSON.stringify(options, null, 2));
|
73
|
+
return options;
|
74
|
+
};
|
66
75
|
|
67
76
|
getAssignees = async () => {
|
68
77
|
try {
|
@@ -110,6 +119,7 @@ class FilterPopupMenu extends Component {
|
|
110
119
|
status: selectedStatus,
|
111
120
|
statusText: this.getStatusOptions().find(o => o.value === selectedStatus)?.label,
|
112
121
|
priority: selectedPriority,
|
122
|
+
priorityText: this.getPriorityOptions().find(o => o.value === selectedPriority)?.label,
|
113
123
|
type: selectedType,
|
114
124
|
assignee: selectedAssignee,
|
115
125
|
assigneeName: this.state.assignees.find(a => a.value === selectedAssignee)?.label,
|
@@ -161,7 +171,7 @@ class FilterPopupMenu extends Component {
|
|
161
171
|
|
162
172
|
render() {
|
163
173
|
// console.log('FilterPopupMenu', JSON.stringify({ category: this.props.user.category, permissions: this.props.user.permissions }, null, 2))
|
164
|
-
const isStaff = this.props.user.category === 'staff'
|
174
|
+
const isStaff = this.props.user.category === 'staff';
|
165
175
|
const canFilterAssignee = !_.includes(this.props.user.permissions, values.permissionMaintenanceAssignment);
|
166
176
|
|
167
177
|
return (
|
@@ -171,7 +181,7 @@ class FilterPopupMenu extends Component {
|
|
171
181
|
{this.renderTitle()}
|
172
182
|
<ScrollView style={styles.optionContent}>
|
173
183
|
{this.renderOptions('Status', this.getStatusOptions(), 'selectedStatus')}
|
174
|
-
{isStaff ? this.renderOptions('Priority', this.
|
184
|
+
{isStaff ? this.renderOptions('Priority', this.getPriorityOptions(), 'selectedPriority') : null}
|
175
185
|
{this.renderOptions('Type', this.state.types, 'selectedType')}
|
176
186
|
{canFilterAssignee ? this.renderOptions('Assigned To', this.state.assignees, 'selectedAssignee') : null}
|
177
187
|
</ScrollView>
|
@@ -153,7 +153,7 @@ class MaintenanceList extends Component {
|
|
153
153
|
filterTexts.push(jobfilters.statusText);
|
154
154
|
}
|
155
155
|
if (!_.isEmpty(jobfilters.priority)) {
|
156
|
-
filterTexts.push(jobfilters.
|
156
|
+
filterTexts.push(jobfilters.priorityText);
|
157
157
|
}
|
158
158
|
if (!_.isEmpty(jobfilters.type)) {
|
159
159
|
filterTexts.push(jobfilters.type);
|
package/src/helper.js
CHANGED
@@ -41,7 +41,7 @@ const jobPriorityOptions = [
|
|
41
41
|
},
|
42
42
|
];
|
43
43
|
|
44
|
-
const getJobStatusOptions = props => props?.statusTypes?.length ? props?.statusTypes : jobStatusOptions;
|
44
|
+
const getJobStatusOptions = props => (props?.statusTypes?.length ? props?.statusTypes : jobStatusOptions);
|
45
45
|
|
46
46
|
const getDefaultJobStatuses = props => getJobStatusOptions(props).filter(s => s.category === STATUS_NOT_ACTIONED);
|
47
47
|
|
@@ -53,9 +53,11 @@ const getJobStatus = (status, props) => {
|
|
53
53
|
let statusOption = null;
|
54
54
|
if (status) statusOption = statusOptions.find(s => s.text === status);
|
55
55
|
return statusOption || getDefaultJobStatuses(props)[0];
|
56
|
-
}
|
56
|
+
};
|
57
|
+
|
58
|
+
const getDefaultJobPriority = () => jobPriorityOptions.find(p => p.default);
|
57
59
|
|
58
|
-
const getJobPriority = priority => jobPriorityOptions.find(p => p.label === priority) ||
|
60
|
+
const getJobPriority = priority => jobPriorityOptions.find(p => p.label === priority) || getDefaultJobPriority();
|
59
61
|
|
60
62
|
export {
|
61
63
|
jobStatusOptions,
|
@@ -65,4 +67,5 @@ export {
|
|
65
67
|
getIncompleteJobStatuses,
|
66
68
|
getJobStatus,
|
67
69
|
getJobPriority,
|
70
|
+
getDefaultJobPriority,
|
68
71
|
};
|