@plusscommunities/pluss-maintenance-app 8.0.17 → 8.0.18
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 +8 -3
- package/dist/module/components/FilterPopupMenu.js.map +1 -1
- package/dist/module/components/MaintenanceList.js.map +1 -1
- package/dist/module/screens/RequestDetail.js +27 -13
- package/dist/module/screens/RequestDetail.js.map +1 -1
- package/dist/module/screens/RequestNotes.js +7 -4
- package/dist/module/screens/RequestNotes.js.map +1 -1
- package/dist/module/screens/ServiceRequest.js.map +1 -1
- package/package.json +1 -2
- package/src/components/FilterPopupMenu.js +15 -6
- package/src/components/MaintenanceList.js +11 -6
- package/src/screens/RequestDetail.js +40 -13
- package/src/screens/RequestNotes.js +13 -4
- package/src/screens/ServiceRequest.js +4 -3
|
@@ -3,9 +3,10 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
3
3
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
4
|
import React, { Component } from "react";
|
|
5
5
|
import { Text } from "@plusscommunities/pluss-core-app/components";
|
|
6
|
-
import { View, TouchableOpacity, Modal, ScrollView, Dimensions } from "react-native";
|
|
6
|
+
import { View, TouchableOpacity, Modal, ScrollView, Dimensions, Platform } from "react-native";
|
|
7
7
|
import { SafeAreaProvider, SafeAreaView } from "react-native-safe-area-context";
|
|
8
8
|
import { connect } from "react-redux";
|
|
9
|
+
import { withSafeAreaInsets } from "react-native-safe-area-context";
|
|
9
10
|
import _ from "lodash";
|
|
10
11
|
import { maintenanceActions } from "../apis";
|
|
11
12
|
import { Colours, Helper } from "../core.config";
|
|
@@ -148,14 +149,18 @@ class FilterPopupMenu extends Component {
|
|
|
148
149
|
}, title || "Filter By"));
|
|
149
150
|
}
|
|
150
151
|
renderCancel() {
|
|
152
|
+
var _this$props$insets;
|
|
151
153
|
const {
|
|
152
154
|
colourBrandingMain,
|
|
153
155
|
cancelText
|
|
154
156
|
} = this.props;
|
|
157
|
+
const bottom = Platform.OS === "android" ? ((_this$props$insets = this.props.insets) === null || _this$props$insets === void 0 ? void 0 : _this$props$insets.bottom) ?? 0 : 0;
|
|
155
158
|
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
156
159
|
onPress: this.onDone
|
|
157
160
|
}, /*#__PURE__*/React.createElement(View, {
|
|
158
|
-
style: styles.cancelContainer
|
|
161
|
+
style: [styles.cancelContainer, bottom > 0 && {
|
|
162
|
+
paddingBottom: 16 + bottom
|
|
163
|
+
}]
|
|
159
164
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
160
165
|
style: [styles.cancelText, {
|
|
161
166
|
color: colourBrandingMain
|
|
@@ -301,5 +306,5 @@ const mapStateToProps = state => {
|
|
|
301
306
|
statusTypes: state[values.reducerKey].jobstatuses
|
|
302
307
|
};
|
|
303
308
|
};
|
|
304
|
-
export default connect(mapStateToProps, {})(FilterPopupMenu);
|
|
309
|
+
export default connect(mapStateToProps, {})(withSafeAreaInsets(FilterPopupMenu));
|
|
305
310
|
//# sourceMappingURL=FilterPopupMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","Text","View","TouchableOpacity","Modal","ScrollView","Dimensions","SafeAreaProvider","SafeAreaView","connect","_","maintenanceActions","Colours","Helper","getJobStatusOptions","jobPriorityOptions","getDefaultJobPriority","values","SCREEN_HEIGHT","get","height","FilterPopupMenu","constructor","props","_defineProperty","statusOptions","options","label","value","map","s","text","priorityOptions","defaultPriority","p","res","getAssignees","site","newState","loadingAssignees","assignees","data","Users","t","displayName","id","orderBy","splice","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","permissionMaintenanceTracking","permissionMaintenanceAssignment","visible","transparent","animationType","onRequestClose","container","menu","edges","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 { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport {\n\tView,\n\tTouchableOpacity,\n\tModal,\n\tScrollView,\n\tDimensions,\n} from \"react-native\";\nimport {\n\tSafeAreaProvider,\n\tSafeAreaView,\n} from \"react-native-safe-area-context\";\nimport { connect } from \"react-redux\";\nimport _ from \"lodash\";\nimport { maintenanceActions } from \"../apis\";\nimport { Colours, Helper } from \"../core.config\";\nimport {\n\tgetJobStatusOptions,\n\tjobPriorityOptions,\n\tgetDefaultJobPriority,\n} from \"../helper\";\nimport { values } from \"../values.config\";\n\nconst SCREEN_HEIGHT = Dimensions.get(\"window\").height;\n\nclass FilterPopupMenu extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\ttypes: props.types || [],\n\t\t\tselectedStatus: props.status || \"\",\n\t\t\tselectedPriority: props.priority || \"\",\n\t\t\tselectedType: props.type || \"\",\n\t\t\tselectedAssignee: props.assignee || \"\",\n\t\t\tassignees: [],\n\t\t\tloadingAssignees: true,\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.getAssignees();\n\t\tif (_.isEmpty(this.state.types)) this.refreshTypes();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (prevProps.site !== this.props.site) {\n\t\t\tthis.refreshTypes();\n\t\t}\n\t}\n\n\tgetStatusOptions = () => {\n\t\tconst statusOptions = getJobStatusOptions(this.props);\n\t\tconst options = [\n\t\t\t{\n\t\t\t\tlabel: \"All\",\n\t\t\t\tvalue: \"\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: \"Incomplete\",\n\t\t\t\tvalue: \"Incomplete\",\n\t\t\t},\n\t\t\t...statusOptions.map((s) => ({\n\t\t\t\tlabel: s.text,\n\t\t\t\tvalue: s.text,\n\t\t\t})),\n\t\t];\n\t\t// console.log('getStatusOptions', JSON.stringify(options, null, 2));\n\t\treturn options;\n\t};\n\n\tgetPriorityOptions = () => {\n\t\tconst priorityOptions = jobPriorityOptions;\n\t\tconst defaultPriority = getDefaultJobPriority();\n\t\tconst options = [\n\t\t\t{\n\t\t\t\tlabel: \"All\",\n\t\t\t\tvalue: \"\",\n\t\t\t},\n\t\t\t...priorityOptions.map((p) => ({\n\t\t\t\tlabel: p.label,\n\t\t\t\tvalue:\n\t\t\t\t\tp.label === defaultPriority?.label ? `${p.label}|undefined` : p.label,\n\t\t\t})),\n\t\t];\n\t\t// console.log('getPriorityOptions', JSON.stringify(options, null, 2));\n\t\treturn options;\n\t};\n\n\tgetAssignees = async () => {\n\t\ttry {\n\t\t\tconst res = await maintenanceActions.getAssignees(this.props.site);\n\t\t\tconst newState = { loadingAssignees: false };\n\t\t\tlet assignees = res.data.Users.map((t) => {\n\t\t\t\treturn { label: t.displayName, value: t.id };\n\t\t\t});\n\t\t\tassignees = _.orderBy(assignees, \"label\");\n\n\t\t\tassignees.splice(0, 0, { label: \"All\", value: \"\" });\n\n\t\t\tif (!assignees.some((a) => a.value === this.state.selectedAssignee)) {\n\t\t\t\tnewState.selectedAssignee = \"\";\n\t\t\t}\n\t\t\tnewState.assignees = assignees;\n\t\t\t// console.log('refreshassignees', assignees);\n\t\t\tthis.setState(newState);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"getAssignees\", error);\n\t\t\tthis.setState({ loadingAssignees: false });\n\t\t}\n\t};\n\n\trefreshTypes = async () => {\n\t\tconst { data } = await maintenanceActions.getJobTypes(\n\t\t\tHelper.getSite(this.props.site),\n\t\t);\n\t\tconst types = data.map((t) => {\n\t\t\treturn { label: t.typeName, value: t.typeName };\n\t\t});\n\t\ttypes.splice(0, 0, { label: \"All\", value: \"\" });\n\t\t// console.log('refreshTypes', types);\n\t\tthis.setState({ types });\n\t};\n\n\tonSelectOption = (key, value) => {\n\t\tconst newState = {};\n\t\tnewState[key] = value;\n\t\tthis.setState(newState);\n\t};\n\n\tonDone = () => {\n\t\tconst { onClose } = this.props;\n\t\tconst { selectedStatus, selectedPriority, selectedType, selectedAssignee } =\n\t\t\tthis.state;\n\t\tif (onClose)\n\t\t\tonClose({\n\t\t\t\tstatus: selectedStatus,\n\t\t\t\tstatusText: this.getStatusOptions().find(\n\t\t\t\t\t(o) => o.value === selectedStatus,\n\t\t\t\t)?.label,\n\t\t\t\tpriority: selectedPriority,\n\t\t\t\tpriorityText: this.getPriorityOptions().find(\n\t\t\t\t\t(o) => o.value === selectedPriority,\n\t\t\t\t)?.label,\n\t\t\t\ttype: selectedType,\n\t\t\t\tassignee: selectedAssignee,\n\t\t\t\tassigneeName: this.state.assignees.find(\n\t\t\t\t\t(a) => a.value === selectedAssignee,\n\t\t\t\t)?.label,\n\t\t\t});\n\t};\n\n\trenderTitle() {\n\t\tconst { title } = this.props;\n\t\treturn (\n\t\t\t<View style={styles.titleContainer}>\n\t\t\t\t<Text style={styles.titleText}>{title || \"Filter By\"}</Text>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderCancel() {\n\t\tconst { colourBrandingMain, cancelText } = this.props;\n\t\treturn (\n\t\t\t<TouchableOpacity onPress={this.onDone}>\n\t\t\t\t<View style={styles.cancelContainer}>\n\t\t\t\t\t<Text style={[styles.cancelText, { color: colourBrandingMain }]}>\n\t\t\t\t\t\t{cancelText || \"Done\"}\n\t\t\t\t\t</Text>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trenderOptions(title, options, selectedKey) {\n\t\tconst { colourBrandingMain } = this.props;\n\t\treturn (\n\t\t\t<View style={styles.optionsContainer}>\n\t\t\t\t<Text style={styles.optionsTitle}>{title}</Text>\n\t\t\t\t<View style={styles.options}>\n\t\t\t\t\t{options.map((o) => {\n\t\t\t\t\t\tconst selected = this.state[selectedKey];\n\t\t\t\t\t\tconst backgroundColor =\n\t\t\t\t\t\t\to.value === selected ? colourBrandingMain : \"#fff\";\n\t\t\t\t\t\tconst color = o.value === selected ? \"#fff\" : colourBrandingMain;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\tkey={o.label}\n\t\t\t\t\t\t\t\tonPress={() => this.onSelectOption(selectedKey, o.value)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.optionContainer,\n\t\t\t\t\t\t\t\t\t\t{ backgroundColor, borderColor: colourBrandingMain },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text style={[styles.optionText, { color }]}>{o.label}</Text>\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trender() {\n\t\t// console.log('FilterPopupMenu', JSON.stringify({ category: this.props.user.category, permissions: this.props.user.permissions }, null, 2))\n\t\tconst isStaff = this.props.user.category === \"staff\";\n\t\tconst canFilterAssignee =\n\t\t\tthis.props.user.category === \"master\" ||\n\t\t\tthis.props.user.category === \"staff\" ||\n\t\t\t_.includes(\n\t\t\t\tthis.props.user.permissions,\n\t\t\t\tvalues.permissionMaintenanceTracking,\n\t\t\t) ||\n\t\t\t_.includes(\n\t\t\t\tthis.props.user.permissions,\n\t\t\t\tvalues.permissionMaintenanceAssignment,\n\t\t\t);\n\n\t\treturn (\n\t\t\t<Modal\n\t\t\t\tvisible\n\t\t\t\ttransparent\n\t\t\t\tanimationType=\"slide\"\n\t\t\t\tonRequestClose={this.onDone}\n\t\t\t>\n\t\t\t\t<SafeAreaProvider>\n\t\t\t\t\t<View style={styles.container}>\n\t\t\t\t\t\t<SafeAreaView style={styles.menu} edges={[\"bottom\"]}>\n\t\t\t\t\t\t\t{this.renderTitle()}\n\t\t\t\t\t\t\t<ScrollView style={styles.optionContent}>\n\t\t\t\t\t\t\t\t{this.renderOptions(\n\t\t\t\t\t\t\t\t\t\"Status\",\n\t\t\t\t\t\t\t\t\tthis.getStatusOptions(),\n\t\t\t\t\t\t\t\t\t\"selectedStatus\",\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{isStaff\n\t\t\t\t\t\t\t\t\t? this.renderOptions(\n\t\t\t\t\t\t\t\t\t\t\t\"Priority\",\n\t\t\t\t\t\t\t\t\t\t\tthis.getPriorityOptions(),\n\t\t\t\t\t\t\t\t\t\t\t\"selectedPriority\",\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t\t{this.renderOptions(\"Type\", this.state.types, \"selectedType\")}\n\t\t\t\t\t\t\t\t{canFilterAssignee\n\t\t\t\t\t\t\t\t\t? this.state.loadingAssignees\n\t\t\t\t\t\t\t\t\t\t? this.renderOptions(\n\t\t\t\t\t\t\t\t\t\t\t\t\"Assigned To\",\n\t\t\t\t\t\t\t\t\t\t\t\t[{ label: \"Loading...\", value: \"\" }],\n\t\t\t\t\t\t\t\t\t\t\t\t\"selectedAssignee\",\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t: this.renderOptions(\n\t\t\t\t\t\t\t\t\t\t\t\t\"Assigned To\",\n\t\t\t\t\t\t\t\t\t\t\t\tthis.state.assignees,\n\t\t\t\t\t\t\t\t\t\t\t\t\"selectedAssignee\",\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t</ScrollView>\n\t\t\t\t\t\t\t{this.renderCancel()}\n\t\t\t\t\t\t</SafeAreaView>\n\t\t\t\t\t</View>\n\t\t\t\t</SafeAreaProvider>\n\t\t\t</Modal>\n\t\t);\n\t}\n}\n\nconst styles = {\n\tcontainer: {\n\t\tposition: \"absolute\",\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\ttop: 0,\n\t\tbackgroundColor: \"rgba(0,0,0,0.5)\",\n\t\tzIndex: 1000,\n\t},\n\tmenu: {\n\t\tposition: \"absolute\",\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tbackgroundColor: \"#fff\",\n\t\tborderTopLeftRadius: 12,\n\t\tborderTopRightRadius: 12,\n\t\tmaxHeight: SCREEN_HEIGHT * 0.8,\n\t},\n\tcancelContainer: {\n\t\tpaddingVertical: 16,\n\t\tborderColor: Colours.LINEGREY,\n\t\tborderTopWidth: 1,\n\t\tpaddingHorizontal: 16,\n\t},\n\tcancelText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 16,\n\t\ttextAlign: \"center\",\n\t\tcolor: Colours.TEXT_DARK,\n\t},\n\ttitleContainer: {\n\t\tpadding: 16,\n\t\tborderColor: Colours.LINEGREY,\n\t\tborderBottomWidth: 1,\n\t},\n\ttitleText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\ttextAlign: \"center\",\n\t\tcolor: Colours.TEXT_DARK,\n\t},\n\toptionContent: {\n\t\tpaddingVertical: 10,\n\t},\n\toptionsContainer: {\n\t\tmarginHorizontal: 14,\n\t},\n\toptionsTitle: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tmarginBottom: 4,\n\t},\n\toptions: {\n\t\tflex: 1,\n\t\tflexDirection: \"row\",\n\t\tflexWrap: \"wrap\",\n\t},\n\toptionContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tminWidth: 50,\n\t\theight: 30,\n\t\tpaddingHorizontal: 8,\n\t\tborderRadius: 4,\n\t\tborderWidth: 1,\n\t\tmarginRight: 8,\n\t\tmarginBottom: 8,\n\t},\n\toptionText: {\n\t\tcolor: \"#fff\",\n\t\ttextAlign: \"center\",\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 13,\n\t},\n};\n\nconst mapStateToProps = (state) => {\n\tconst { user } = state;\n\n\treturn {\n\t\tuser,\n\t\tsite: user.site,\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tstatusTypes: state[values.reducerKey].jobstatuses,\n\t};\n};\n\nexport default connect(mapStateToProps, {})(FilterPopupMenu);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Component","Text","View","TouchableOpacity","Modal","ScrollView","Dimensions","Platform","SafeAreaProvider","SafeAreaView","connect","withSafeAreaInsets","_","maintenanceActions","Colours","Helper","getJobStatusOptions","jobPriorityOptions","getDefaultJobPriority","values","SCREEN_HEIGHT","get","height","FilterPopupMenu","constructor","props","_defineProperty","statusOptions","options","label","value","map","s","text","priorityOptions","defaultPriority","p","res","getAssignees","site","newState","loadingAssignees","assignees","data","Users","t","displayName","id","orderBy","splice","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","_this$props$insets","colourBrandingMain","cancelText","bottom","OS","insets","onPress","onDone","cancelContainer","paddingBottom","color","renderOptions","selectedKey","optionsContainer","optionsTitle","selected","backgroundColor","onSelectOption","optionContainer","borderColor","optionText","render","isStaff","user","category","canFilterAssignee","includes","permissions","permissionMaintenanceTracking","permissionMaintenanceAssignment","visible","transparent","animationType","onRequestClose","container","menu","edges","optionContent","position","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 { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport {\n\tView,\n\tTouchableOpacity,\n\tModal,\n\tScrollView,\n\tDimensions,\n\tPlatform,\n} from \"react-native\";\nimport { SafeAreaProvider, SafeAreaView } from \"react-native-safe-area-context\";\nimport { connect } from \"react-redux\";\nimport { withSafeAreaInsets } from \"react-native-safe-area-context\";\nimport _ from \"lodash\";\nimport { maintenanceActions } from \"../apis\";\nimport { Colours, Helper } from \"../core.config\";\nimport {\n\tgetJobStatusOptions,\n\tjobPriorityOptions,\n\tgetDefaultJobPriority,\n} from \"../helper\";\nimport { values } from \"../values.config\";\n\nconst SCREEN_HEIGHT = Dimensions.get(\"window\").height;\n\nclass FilterPopupMenu extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\ttypes: props.types || [],\n\t\t\tselectedStatus: props.status || \"\",\n\t\t\tselectedPriority: props.priority || \"\",\n\t\t\tselectedType: props.type || \"\",\n\t\t\tselectedAssignee: props.assignee || \"\",\n\t\t\tassignees: [],\n\t\t\tloadingAssignees: true,\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.getAssignees();\n\t\tif (_.isEmpty(this.state.types)) this.refreshTypes();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (prevProps.site !== this.props.site) {\n\t\t\tthis.refreshTypes();\n\t\t}\n\t}\n\n\tgetStatusOptions = () => {\n\t\tconst statusOptions = getJobStatusOptions(this.props);\n\t\tconst options = [\n\t\t\t{\n\t\t\t\tlabel: \"All\",\n\t\t\t\tvalue: \"\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: \"Incomplete\",\n\t\t\t\tvalue: \"Incomplete\",\n\t\t\t},\n\t\t\t...statusOptions.map((s) => ({\n\t\t\t\tlabel: s.text,\n\t\t\t\tvalue: s.text,\n\t\t\t})),\n\t\t];\n\t\t// console.log('getStatusOptions', JSON.stringify(options, null, 2));\n\t\treturn options;\n\t};\n\n\tgetPriorityOptions = () => {\n\t\tconst priorityOptions = jobPriorityOptions;\n\t\tconst defaultPriority = getDefaultJobPriority();\n\t\tconst options = [\n\t\t\t{\n\t\t\t\tlabel: \"All\",\n\t\t\t\tvalue: \"\",\n\t\t\t},\n\t\t\t...priorityOptions.map((p) => ({\n\t\t\t\tlabel: p.label,\n\t\t\t\tvalue:\n\t\t\t\t\tp.label === defaultPriority?.label ? `${p.label}|undefined` : p.label,\n\t\t\t})),\n\t\t];\n\t\t// console.log('getPriorityOptions', JSON.stringify(options, null, 2));\n\t\treturn options;\n\t};\n\n\tgetAssignees = async () => {\n\t\ttry {\n\t\t\tconst res = await maintenanceActions.getAssignees(this.props.site);\n\t\t\tconst newState = { loadingAssignees: false };\n\t\t\tlet assignees = res.data.Users.map((t) => {\n\t\t\t\treturn { label: t.displayName, value: t.id };\n\t\t\t});\n\t\t\tassignees = _.orderBy(assignees, \"label\");\n\n\t\t\tassignees.splice(0, 0, { label: \"All\", value: \"\" });\n\n\t\t\tif (!assignees.some((a) => a.value === this.state.selectedAssignee)) {\n\t\t\t\tnewState.selectedAssignee = \"\";\n\t\t\t}\n\t\t\tnewState.assignees = assignees;\n\t\t\t// console.log('refreshassignees', assignees);\n\t\t\tthis.setState(newState);\n\t\t} catch (error) {\n\t\t\tconsole.error(\"getAssignees\", error);\n\t\t\tthis.setState({ loadingAssignees: false });\n\t\t}\n\t};\n\n\trefreshTypes = async () => {\n\t\tconst { data } = await maintenanceActions.getJobTypes(\n\t\t\tHelper.getSite(this.props.site),\n\t\t);\n\t\tconst types = data.map((t) => {\n\t\t\treturn { label: t.typeName, value: t.typeName };\n\t\t});\n\t\ttypes.splice(0, 0, { label: \"All\", value: \"\" });\n\t\t// console.log('refreshTypes', types);\n\t\tthis.setState({ types });\n\t};\n\n\tonSelectOption = (key, value) => {\n\t\tconst newState = {};\n\t\tnewState[key] = value;\n\t\tthis.setState(newState);\n\t};\n\n\tonDone = () => {\n\t\tconst { onClose } = this.props;\n\t\tconst { selectedStatus, selectedPriority, selectedType, selectedAssignee } =\n\t\t\tthis.state;\n\t\tif (onClose)\n\t\t\tonClose({\n\t\t\t\tstatus: selectedStatus,\n\t\t\t\tstatusText: this.getStatusOptions().find(\n\t\t\t\t\t(o) => o.value === selectedStatus,\n\t\t\t\t)?.label,\n\t\t\t\tpriority: selectedPriority,\n\t\t\t\tpriorityText: this.getPriorityOptions().find(\n\t\t\t\t\t(o) => o.value === selectedPriority,\n\t\t\t\t)?.label,\n\t\t\t\ttype: selectedType,\n\t\t\t\tassignee: selectedAssignee,\n\t\t\t\tassigneeName: this.state.assignees.find(\n\t\t\t\t\t(a) => a.value === selectedAssignee,\n\t\t\t\t)?.label,\n\t\t\t});\n\t};\n\n\trenderTitle() {\n\t\tconst { title } = this.props;\n\t\treturn (\n\t\t\t<View style={styles.titleContainer}>\n\t\t\t\t<Text style={styles.titleText}>{title || \"Filter By\"}</Text>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderCancel() {\n\t\tconst { colourBrandingMain, cancelText } = this.props;\n\t\tconst bottom =\n\t\t\tPlatform.OS === \"android\" ? (this.props.insets?.bottom ?? 0) : 0;\n\t\treturn (\n\t\t\t<TouchableOpacity onPress={this.onDone}>\n\t\t\t\t<View\n\t\t\t\t\tstyle={[\n\t\t\t\t\t\tstyles.cancelContainer,\n\t\t\t\t\t\tbottom > 0 && { paddingBottom: 16 + bottom },\n\t\t\t\t\t]}\n\t\t\t\t>\n\t\t\t\t\t<Text style={[styles.cancelText, { color: colourBrandingMain }]}>\n\t\t\t\t\t\t{cancelText || \"Done\"}\n\t\t\t\t\t</Text>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trenderOptions(title, options, selectedKey) {\n\t\tconst { colourBrandingMain } = this.props;\n\t\treturn (\n\t\t\t<View style={styles.optionsContainer}>\n\t\t\t\t<Text style={styles.optionsTitle}>{title}</Text>\n\t\t\t\t<View style={styles.options}>\n\t\t\t\t\t{options.map((o) => {\n\t\t\t\t\t\tconst selected = this.state[selectedKey];\n\t\t\t\t\t\tconst backgroundColor =\n\t\t\t\t\t\t\to.value === selected ? colourBrandingMain : \"#fff\";\n\t\t\t\t\t\tconst color = o.value === selected ? \"#fff\" : colourBrandingMain;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\t\t\tkey={o.label}\n\t\t\t\t\t\t\t\tonPress={() => this.onSelectOption(selectedKey, o.value)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\tstyles.optionContainer,\n\t\t\t\t\t\t\t\t\t\t{ backgroundColor, borderColor: colourBrandingMain },\n\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Text style={[styles.optionText, { color }]}>{o.label}</Text>\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trender() {\n\t\t// console.log('FilterPopupMenu', JSON.stringify({ category: this.props.user.category, permissions: this.props.user.permissions }, null, 2))\n\t\tconst isStaff = this.props.user.category === \"staff\";\n\t\tconst canFilterAssignee =\n\t\t\tthis.props.user.category === \"master\" ||\n\t\t\tthis.props.user.category === \"staff\" ||\n\t\t\t_.includes(\n\t\t\t\tthis.props.user.permissions,\n\t\t\t\tvalues.permissionMaintenanceTracking,\n\t\t\t) ||\n\t\t\t_.includes(\n\t\t\t\tthis.props.user.permissions,\n\t\t\t\tvalues.permissionMaintenanceAssignment,\n\t\t\t);\n\n\t\treturn (\n\t\t\t<Modal\n\t\t\t\tvisible\n\t\t\t\ttransparent\n\t\t\t\tanimationType=\"slide\"\n\t\t\t\tonRequestClose={this.onDone}\n\t\t\t>\n\t\t\t\t<SafeAreaProvider>\n\t\t\t\t\t<View style={styles.container}>\n\t\t\t\t\t\t<SafeAreaView style={styles.menu} edges={[\"bottom\"]}>\n\t\t\t\t\t\t\t{this.renderTitle()}\n\t\t\t\t\t\t\t<ScrollView style={styles.optionContent}>\n\t\t\t\t\t\t\t\t{this.renderOptions(\n\t\t\t\t\t\t\t\t\t\"Status\",\n\t\t\t\t\t\t\t\t\tthis.getStatusOptions(),\n\t\t\t\t\t\t\t\t\t\"selectedStatus\",\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{isStaff\n\t\t\t\t\t\t\t\t\t? this.renderOptions(\n\t\t\t\t\t\t\t\t\t\t\t\"Priority\",\n\t\t\t\t\t\t\t\t\t\t\tthis.getPriorityOptions(),\n\t\t\t\t\t\t\t\t\t\t\t\"selectedPriority\",\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t\t{this.renderOptions(\"Type\", this.state.types, \"selectedType\")}\n\t\t\t\t\t\t\t\t{canFilterAssignee\n\t\t\t\t\t\t\t\t\t? this.state.loadingAssignees\n\t\t\t\t\t\t\t\t\t\t? this.renderOptions(\n\t\t\t\t\t\t\t\t\t\t\t\t\"Assigned To\",\n\t\t\t\t\t\t\t\t\t\t\t\t[{ label: \"Loading...\", value: \"\" }],\n\t\t\t\t\t\t\t\t\t\t\t\t\"selectedAssignee\",\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t: this.renderOptions(\n\t\t\t\t\t\t\t\t\t\t\t\t\"Assigned To\",\n\t\t\t\t\t\t\t\t\t\t\t\tthis.state.assignees,\n\t\t\t\t\t\t\t\t\t\t\t\t\"selectedAssignee\",\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t: null}\n\t\t\t\t\t\t\t</ScrollView>\n\t\t\t\t\t\t\t{this.renderCancel()}\n\t\t\t\t\t\t</SafeAreaView>\n\t\t\t\t\t</View>\n\t\t\t\t</SafeAreaProvider>\n\t\t\t</Modal>\n\t\t);\n\t}\n}\n\nconst styles = {\n\tcontainer: {\n\t\tposition: \"absolute\",\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\ttop: 0,\n\t\tbackgroundColor: \"rgba(0,0,0,0.5)\",\n\t\tzIndex: 1000,\n\t},\n\tmenu: {\n\t\tposition: \"absolute\",\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tbackgroundColor: \"#fff\",\n\t\tborderTopLeftRadius: 12,\n\t\tborderTopRightRadius: 12,\n\t\tmaxHeight: SCREEN_HEIGHT * 0.8,\n\t},\n\tcancelContainer: {\n\t\tpaddingVertical: 16,\n\t\tborderColor: Colours.LINEGREY,\n\t\tborderTopWidth: 1,\n\t\tpaddingHorizontal: 16,\n\t},\n\tcancelText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 16,\n\t\ttextAlign: \"center\",\n\t\tcolor: Colours.TEXT_DARK,\n\t},\n\ttitleContainer: {\n\t\tpadding: 16,\n\t\tborderColor: Colours.LINEGREY,\n\t\tborderBottomWidth: 1,\n\t},\n\ttitleText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\ttextAlign: \"center\",\n\t\tcolor: Colours.TEXT_DARK,\n\t},\n\toptionContent: {\n\t\tpaddingVertical: 10,\n\t},\n\toptionsContainer: {\n\t\tmarginHorizontal: 14,\n\t},\n\toptionsTitle: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tmarginBottom: 4,\n\t},\n\toptions: {\n\t\tflex: 1,\n\t\tflexDirection: \"row\",\n\t\tflexWrap: \"wrap\",\n\t},\n\toptionContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tminWidth: 50,\n\t\theight: 30,\n\t\tpaddingHorizontal: 8,\n\t\tborderRadius: 4,\n\t\tborderWidth: 1,\n\t\tmarginRight: 8,\n\t\tmarginBottom: 8,\n\t},\n\toptionText: {\n\t\tcolor: \"#fff\",\n\t\ttextAlign: \"center\",\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 13,\n\t},\n};\n\nconst mapStateToProps = (state) => {\n\tconst { user } = state;\n\n\treturn {\n\t\tuser,\n\t\tsite: user.site,\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tstatusTypes: state[values.reducerKey].jobstatuses,\n\t};\n};\n\nexport default connect(\n\tmapStateToProps,\n\t{},\n)(withSafeAreaInsets(FilterPopupMenu));\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","Text","View","StyleSheet","FlatList","TouchableOpacity","Animated","_","connect","maintenanceActions","jobsLoaded","jobAdded","jobsAdded","jobStatusesUpdate","jobHideSeenUpdate","jobsFilterLoaded","MaintenanceListItem","FilterPopupMenu","Components","Colours","Helper","values","MaintenanceList","constructor","props","_defineProperty","Value","status","statusTypes","length","incompleteStatuses","filter","s","category","map","text","join","overrideFilters","currentCounter","_refreshCounter","onLoadingChanged","jobfilters","res","getJobs2","site","expandStatus","priority","type","assignee","jobs","data","Items","lastKey","LastKey","_filterDataReady","setState","hasMore","error","console","log","loading","loadingMore","searchText","state","newJobs","newLastKey","getJobTypes","getSite","types","t","label","typeName","value","splice","jobId","job","getJobByJobId","source","filteredList","jobIdMatch","find","j","room","toLowerCase","indexOf","fetchJob","jobIndex","unshift","_filterApplying","_showOverlay","callback","isEmpty","resetDataSource","showFilterPopup","selected","onToggleFilter","refresh","filterTexts","push","statusText","priorityText","assigneeName","emptyFilters","onSelectFilter","createElement","style","styles","LoadingIndicator","visible","timing","_overlayOpacity","toValue","duration","useNativeDriver","start","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","emptyRequestsStaff","emptyRequestsUser","hasFiltersActive","renderEmptyList","hasFilters","marginHorizontal","alignItems","EmptyStateMain","title","onPress","clearFilters","clearFiltersButton","clearFiltersText","color","colourBrandingMain","renderFilterButton","filterButton","filterButtonText","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","ListFooterComponent","renderListFooter","onEndReached","loadMore","onEndReachedThreshold","renderFilterOverlay","filterOverlay","opacity","pointerEvents","filterOverlayInner","LoadingCircles","renderFilterPopup","onClose","render","container","create","backgroundColor","filterContainerOuter","flexDirection","justifyContent","paddingHorizontal","paddingVertical","filterTitle","fontFamily","fontSize","letterSpacing","filterContainer","filterText","marginRight","filterIcon","marginTop","borderRadius","borderWidth","borderColor","absoluteFillObject","padding","mapStateToProps","user","notifications","reducerKey","jobsOrdered","orderBy","includes","permissions","getMainBrandingColourFromState","updateKey","jobstatuses","forwardRef"],"sources":["MaintenanceList.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport { View, StyleSheet, FlatList, TouchableOpacity, Animated } from \"react-native\";\nimport _ from \"lodash\";\nimport { connect } from \"react-redux\";\nimport { maintenanceActions } from \"../apis\";\nimport {\n\tjobsLoaded,\n\tjobAdded,\n\tjobsAdded,\n\tjobStatusesUpdate,\n\tjobHideSeenUpdate,\n\tjobsFilterLoaded,\n} 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\t_refreshCounter = 0;\n\t_filterApplying = false;\n\t_filterDataReady = false;\n\t_overlayOpacity = new Animated.Value(0);\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\ttypes: [],\n\t\t\tfilteredList: props.jobs,\n\t\t\tloading: false,\n\t\t\tloadingMore: false,\n\t\t\thasMore: true,\n\t\t\tlastKey: null,\n\t\t\tsearchText: \"\",\n\t\t\tshowFilterPopup: false,\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.props.jobStatusesUpdate(this.props.site);\n\t\tthis.props.jobHideSeenUpdate(this.props.site);\n\t\tthis.refresh();\n\t\tthis.refreshTypes();\n\t\tthis.resetDataSource();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n\t\tif (\n\t\t\t!_.isEqual(prevProps.jobs, this.props.jobs) ||\n\t\t\t!_.isEqual(prevProps.jobfilters, this.props.jobfilters)\n\t\t)\n\t\t\tthis.resetDataSource();\n\t}\n\n\texpandStatus = (status) => {\n\t\tif (status !== \"Incomplete\") return status;\n\t\tconst { statusTypes } = this.props;\n\t\tif (!statusTypes || !statusTypes.length) return status;\n\t\tconst incompleteStatuses = statusTypes\n\t\t\t.filter((s) => s.category !== \"Completed\")\n\t\t\t.map((s) => s.text);\n\t\treturn incompleteStatuses.length > 0 ? incompleteStatuses.join(\",\") : status;\n\t};\n\n\trefresh = (overrideFilters) => {\n\t\tconst currentCounter = ++this._refreshCounter;\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tconst jobfilters = overrideFilters || this.props.jobfilters;\n\t\t\t\tconst res = await maintenanceActions.getJobs2(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tthis.expandStatus(jobfilters.status),\n\t\t\t\t\tjobfilters.priority,\n\t\t\t\t\tjobfilters.type,\n\t\t\t\t\tnull, // No lastKey = first page\n\t\t\t\t\tjobfilters.assignee,\n\t\t\t\t);\n\n\t\t\t\t// Discard stale responses from earlier filter changes\n\t\t\t\tif (currentCounter !== this._refreshCounter) return;\n\n\t\t\t\tconst jobs = res.data.Items;\n\t\t\t\tconst lastKey = res.data.LastKey;\n\n\t\t\t\t// Signal that the API response is ready before dispatching to Redux\n\t\t\t\tthis._filterDataReady = true;\n\n\t\t\t\t// Always replace jobs on refresh (filters are server-side)\n\t\t\t\tthis.props.jobsLoaded(jobs);\n\n\t\t\t\tthis.setState({\n\t\t\t\t\tlastKey,\n\t\t\t\t\thasMore: !!lastKey,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (currentCounter !== this._refreshCounter) return;\n\t\t\t\tconsole.log(\"refresh error\", error);\n\t\t\t} finally {\n\t\t\t\tif (currentCounter === this._refreshCounter) {\n\t\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\tloadMore = () => {\n\t\tconst { loading, loadingMore, hasMore, lastKey, searchText } = this.state;\n\n\t\t// Don't load if already loading, no more pages, or during search\n\t\tif (loading || loadingMore || !hasMore || !lastKey || searchText) return;\n\n\t\tthis.setState({ loadingMore: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst { jobfilters } = this.props;\n\t\t\t\tconst res = await maintenanceActions.getJobs2(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tthis.expandStatus(jobfilters.status),\n\t\t\t\t\tjobfilters.priority,\n\t\t\t\t\tjobfilters.type,\n\t\t\t\t\tlastKey,\n\t\t\t\t\tjobfilters.assignee,\n\t\t\t\t);\n\n\t\t\t\tconst newJobs = res.data.Items;\n\t\t\t\tconst newLastKey = res.data.LastKey;\n\n\t\t\t\t// Append to existing jobs\n\t\t\t\tthis.props.jobsAdded(newJobs);\n\n\t\t\t\tthis.setState({\n\t\t\t\t\tlastKey: newLastKey,\n\t\t\t\t\thasMore: !!newLastKey,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"loadMore error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loadingMore: false });\n\t\t\t}\n\t\t});\n\t};\n\n\trefreshTypes = async () => {\n\t\tconst { data } = await maintenanceActions.getJobTypes(\n\t\t\tHelper.getSite(this.props.site),\n\t\t);\n\t\tconst types = data.map((t) => {\n\t\t\treturn { label: t.typeName, value: t.typeName };\n\t\t});\n\t\ttypes.splice(0, 0, { label: \"All\", value: \"\" });\n\t\t// console.log('refreshTypes', types);\n\t\tthis.setState({ types });\n\t};\n\n\tfetchJob = (jobId) => {\n\t\tif (this.state.loading) return;\n\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tconst job = await maintenanceActions.getJobByJobId(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tjobId,\n\t\t\t\t);\n\t\t\t\t// console.log('fetchJob', job?.data);\n\t\t\t\tthis.props.jobAdded(job.data);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"fetchJob error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tgetEmptyStateText() {\n\t\tif (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n\t\t\treturn this.props.options.EmptyText;\n\t\t}\n\t\treturn this.props.userCategory === \"staff\"\n\t\t\t? values.emptyRequestsStaff\n\t\t\t: values.emptyRequestsUser;\n\t}\n\n\tresetDataSource = (source = \"\") => {\n\t\tconst { searchText } = this.state;\n\t\tconst { jobs } = this.props;\n\n\t\tlet filteredList = jobs;\n\t\tlet jobIdMatch = null;\n\n\t\t// Client-side search filtering (search is not supported server-side)\n\t\tif (searchText) {\n\t\t\tjobIdMatch = _.find(jobs, (j) => j.jobId === searchText);\n\t\t\tfilteredList = jobs.filter((j) => {\n\t\t\t\tif (\n\t\t\t\t\tj.room &&\n\t\t\t\t\tj.room.toLowerCase().indexOf(searchText.toLowerCase()) > -1\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t\tif (!jobIdMatch) this.fetchJob(searchText);\n\t\t}\n\n\t\t// Note: status, priority, type, and assignee filters are applied server-side\n\t\t// via getJobs2, so no client-side filtering needed for those\n\n\t\tif (jobIdMatch) {\n\t\t\tconst jobIndex = filteredList.indexOf(jobIdMatch);\n\t\t\tif (jobIndex > -1) {\n\t\t\t\tfilteredList.splice(jobIndex, 1);\n\t\t\t}\n\t\t\tfilteredList.unshift(jobIdMatch);\n\t\t}\n\n\t\t// During a filter transition, don't clear the list until the API\n\t\t// response has arrived and been processed. This prevents the empty\n\t\t// state from flashing when jobs transiently drop to [].\n\t\tif (\n\t\t\tthis._filterApplying &&\n\t\t\t!this._filterDataReady &&\n\t\t\tfilteredList.length === 0\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState({ filteredList }, () => {\n\t\t\tif (this._filterDataReady) {\n\t\t\t\tthis._filterApplying = false;\n\t\t\t\tthis._filterDataReady = false;\n\t\t\t\tthis._showOverlay(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tonLoadingChanged = (loading, callback) => {\n\t\tthis.setState({ loading }, () => {\n\t\t\tif (this.props.onLoadingChanged)\n\t\t\t\tthis.props.onLoadingChanged(this.state.loading);\n\t\t\tif (callback) callback();\n\t\t});\n\t};\n\n\tonSearchText = (value) => {\n\t\tthis.setState({ searchText: value }, () => {\n\t\t\tif (_.isEmpty(this.state.searchText)) this.resetDataSource(\"search\");\n\t\t});\n\t};\n\n\tonSearchSubmit = () => {\n\t\tthis.resetDataSource(\"search\");\n\t};\n\n\tonToggleFilter = () => {\n\t\tthis.setState({ showFilterPopup: !this.state.showFilterPopup });\n\t};\n\n\tonSelectFilter = (selected) => {\n\t\tthis._filterApplying = true;\n\t\tthis._filterDataReady = false;\n\t\tthis._showOverlay(true);\n\t\tthis.props.jobsFilterLoaded(selected);\n\t\tthis.onToggleFilter();\n\t\t// Reset pagination but keep old list visible while loading\n\t\t// Pass filters directly to avoid stale props from async Redux update\n\t\tthis.setState({ lastKey: null, hasMore: true }, () => {\n\t\t\tthis.refresh(selected);\n\t\t});\n\t};\n\n\tgetFilterButtonText = () => {\n\t\tconst { jobfilters } = this.props;\n\t\tconst filterTexts = [];\n\t\tif (!_.isEmpty(jobfilters.status)) {\n\t\t\tfilterTexts.push(jobfilters.statusText);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.priority)) {\n\t\t\tfilterTexts.push(jobfilters.priorityText);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.type)) {\n\t\t\tfilterTexts.push(jobfilters.type);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.assignee)) {\n\t\t\tfilterTexts.push(jobfilters.assigneeName);\n\t\t}\n\t\tif (_.isEmpty(filterTexts)) {\n\t\t\treturn \"Filter\";\n\t\t}\n\t\treturn `Filtering by ${filterTexts.join(\", \")}`;\n\t};\n\n\thasFiltersActive() {\n\t\tconst { jobfilters } = this.props;\n\t\treturn (\n\t\t\t!_.isEmpty(jobfilters.status) ||\n\t\t\t!_.isEmpty(jobfilters.priority) ||\n\t\t\t!_.isEmpty(jobfilters.type) ||\n\t\t\t!_.isEmpty(jobfilters.assignee)\n\t\t);\n\t}\n\n\tclearFilters = () => {\n\t\tconst emptyFilters = {\n\t\t\tstatus: \"\",\n\t\t\tstatusText: \"\",\n\t\t\tpriority: \"\",\n\t\t\tpriorityText: \"\",\n\t\t\ttype: \"\",\n\t\t\tassignee: \"\",\n\t\t\tassigneeName: \"\",\n\t\t};\n\t\tthis.onSelectFilter(emptyFilters);\n\t};\n\n\trenderEmptyList() {\n\t\tif (this.state.loading || this._filterApplying) return null;\n\n\t\tconst hasFilters = this.hasFiltersActive();\n\n\t\treturn (\n\t\t\t<View style={{ marginHorizontal: 16, alignItems: \"center\" }}>\n\t\t\t\t<Components.EmptyStateMain\n\t\t\t\t\ttitle={\n\t\t\t\t\t\thasFilters\n\t\t\t\t\t\t\t? \"No requests match your filters\"\n\t\t\t\t\t\t\t: this.getEmptyStateText()\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t{hasFilters && (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tonPress={this.clearFilters}\n\t\t\t\t\t\tstyle={styles.clearFiltersButton}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\tstyles.clearFiltersText,\n\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tClear filters\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderFilterButton() {\n\t\treturn (\n\t\t\t<TouchableOpacity onPress={this.onToggleFilter}>\n\t\t\t\t<View style={styles.filterButton}>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\tstyles.filterButtonText,\n\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t]}\n\t\t\t\t\t>\n\t\t\t\t\t\t{this.getFilterButtonText()}\n\t\t\t\t\t</Text>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trenderSearch() {\n\t\tif (!this.props.hasPermission) return null;\n\n\t\treturn (\n\t\t\t<View style={styles.searchContainer}>\n\t\t\t\t<Components.GenericInput\n\t\t\t\t\tplaceholder={`Search by ${values.textEntityName} ID or Address`}\n\t\t\t\t\tvalue={this.state.searchText}\n\t\t\t\t\tonChangeText={this.onSearchText}\n\t\t\t\t\tonSubmitEditing={this.onSearchSubmit}\n\t\t\t\t\tsquaredCorners\n\t\t\t\t\thasClear\n\t\t\t\t\t// keyboardType={'numeric'}\n\t\t\t\t\treturnKeyType={\"done\"}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderListHeader() {\n\t\tconst { ListHeaderComponent } = this.props;\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t{ListHeaderComponent ? (\n\t\t\t\t\tListHeaderComponent\n\t\t\t\t) : (\n\t\t\t\t\t<View style={{ height: 8 }} />\n\t\t\t\t)}\n\t\t\t\t{this.renderFilterButton()}\n\t\t\t\t{this.renderSearch()}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderList() {\n\t\tconst { filteredList } = this.state;\n\n\t\treturn (\n\t\t\t<FlatList\n\t\t\t\tkeyboardShouldPersistTaps=\"always\"\n\t\t\t\tstyle={{ flex: 1 }}\n\t\t\t\tcontentContainerStyle={{ paddingBottom: 16 }}\n\t\t\t\tdata={filteredList}\n\t\t\t\tkeyExtractor={(item) => item.id}\n\t\t\t\trenderItem={({ item }) => (\n\t\t\t\t\t<MaintenanceListItem style={this.props.itemStyle} job={item} />\n\t\t\t\t)}\n\t\t\t\tListEmptyComponent={this.renderEmptyList()}\n\t\t\t\tListHeaderComponent={this.renderListHeader()}\n\t\t\t\tListFooterComponent={this.renderListFooter()}\n\t\t\t\tonEndReached={this.loadMore}\n\t\t\t\tonEndReachedThreshold={0.5}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderListFooter = () => {\n\t\tif (!this.state.loadingMore) return null;\n\n\t\treturn (\n\t\t\t<View style={styles.loadingMore}>\n\t\t\t\t<Components.LoadingIndicator visible={true} />\n\t\t\t</View>\n\t\t);\n\t};\n\n\t_showOverlay = (visible) => {\n\t\tAnimated.timing(this._overlayOpacity, {\n\t\t\ttoValue: visible ? 1 : 0,\n\t\t\tduration: 200,\n\t\t\tuseNativeDriver: true,\n\t\t}).start();\n\t};\n\n\trenderFilterOverlay() {\n\t\tif (!this._filterApplying) return null;\n\n\t\treturn (\n\t\t\t<Animated.View\n\t\t\t\tstyle={[\n\t\t\t\t\tstyles.filterOverlay,\n\t\t\t\t\t{ opacity: this._overlayOpacity },\n\t\t\t\t]}\n\t\t\t\tpointerEvents=\"none\"\n\t\t\t>\n\t\t\t\t<View style={styles.filterOverlayInner}>\n\t\t\t\t\t<Components.LoadingCircles />\n\t\t\t\t</View>\n\t\t\t</Animated.View>\n\t\t);\n\t}\n\n\trenderFilterPopup() {\n\t\tconst { jobfilters } = this.props;\n\t\tconst { showFilterPopup, types } = this.state;\n\t\tif (!showFilterPopup) return null;\n\n\t\treturn (\n\t\t\t<FilterPopupMenu\n\t\t\t\tsite={this.props.site}\n\t\t\t\ttypes={types}\n\t\t\t\tstatus={jobfilters.status}\n\t\t\t\tpriority={jobfilters.priority}\n\t\t\t\tassignee={jobfilters.assignee}\n\t\t\t\ttype={jobfilters.type}\n\t\t\t\tonClose={this.onSelectFilter}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<View style={[styles.container, this.props.style]}>\n\t\t\t\t{this.renderList()}\n\t\t\t\t{this.renderFilterOverlay()}\n\t\t\t\t{this.renderFilterPopup()}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t\tbackgroundColor: \"#fff\",\n\t},\n\tfilterContainerOuter: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t\tpaddingHorizontal: 16,\n\t\tpaddingVertical: 16,\n\t},\n\tfilterTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 11,\n\t\tletterSpacing: 0.8,\n\t\tcolor: \"#4d4d4d\",\n\t},\n\tfilterContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tfilterText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tmarginRight: 6,\n\t},\n\tfilterIcon: {\n\t\tfontSize: 20,\n\t},\n\tsearchContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tpaddingBottom: 8,\n\t\tpaddingHorizontal: 16,\n\t},\n\tfilterButton: {\n\t\tpaddingBottom: 8,\n\t\tpaddingHorizontal: 16,\n\t\tflexDirection: \"row-reverse\",\n\t},\n\tfilterButtonText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t},\n\tloadingMore: {\n\t\tpaddingVertical: 20,\n\t\talignItems: \"center\",\n\t},\n\tclearFiltersButton: {\n\t\tmarginTop: 12,\n\t\tpaddingVertical: 10,\n\t\tpaddingHorizontal: 24,\n\t\tborderRadius: 8,\n\t\tborderWidth: 1,\n\t\tborderColor: \"#ccc\",\n\t\tbackgroundColor: \"#f9f9f9\",\n\t},\n\tclearFiltersText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 15,\n\t},\n\tfilterOverlay: {\n\t\t...StyleSheet.absoluteFillObject,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tbackgroundColor: \"rgba(255, 255, 255, 0.7)\",\n\t},\n\tfilterOverlayInner: {\n\t\tpadding: 20,\n\t\tborderRadius: 12,\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\tconst { user, notifications } = state;\n\tconst jobs = state[values.reducerKey];\n\tconst jobsOrdered = _.orderBy(jobs.jobs, [\"createdUnix\"], [\"desc\"]);\n\tconst hasPermission = _.includes(user.permissions, \"maintenanceTracking\");\n\n\treturn {\n\t\thasPermission,\n\t\tjobs: jobsOrdered,\n\t\tsite: user.site,\n\t\tuserCategory: user.category,\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tdataUpdated: notifications.dataUpdated[values.updateKey],\n\t\tstatusTypes: state[values.reducerKey].jobstatuses,\n\t\tjobfilters: state[values.reducerKey].jobfilters || {},\n\t};\n};\n\nexport default connect(\n\tmapStateToProps,\n\t{\n\t\tjobsLoaded,\n\t\tjobAdded,\n\t\tjobsAdded,\n\t\tjobStatusesUpdate,\n\t\tjobHideSeenUpdate,\n\t\tjobsFilterLoaded,\n\t},\n\tnull,\n\t{\n\t\tforwardRef: true,\n\t},\n)(MaintenanceList);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Component","Text","View","StyleSheet","FlatList","TouchableOpacity","Animated","_","connect","maintenanceActions","jobsLoaded","jobAdded","jobsAdded","jobStatusesUpdate","jobHideSeenUpdate","jobsFilterLoaded","MaintenanceListItem","FilterPopupMenu","Components","Colours","Helper","values","MaintenanceList","constructor","props","_defineProperty","Value","status","statusTypes","length","incompleteStatuses","filter","s","category","map","text","join","overrideFilters","currentCounter","_refreshCounter","onLoadingChanged","jobfilters","res","getJobs2","site","expandStatus","priority","type","assignee","jobs","data","Items","lastKey","LastKey","_filterDataReady","setState","hasMore","error","console","log","loading","loadingMore","searchText","state","newJobs","newLastKey","getJobTypes","getSite","types","t","label","typeName","value","splice","jobId","job","getJobByJobId","source","filteredList","jobIdMatch","find","j","room","toLowerCase","indexOf","fetchJob","jobIndex","unshift","_filterApplying","_showOverlay","callback","isEmpty","resetDataSource","showFilterPopup","selected","onToggleFilter","refresh","filterTexts","push","statusText","priorityText","assigneeName","emptyFilters","onSelectFilter","createElement","style","styles","LoadingIndicator","visible","timing","_overlayOpacity","toValue","duration","useNativeDriver","start","componentDidMount","refreshTypes","componentDidUpdate","prevProps","dataUpdated","isEqual","getEmptyStateText","options","EmptyText","userCategory","emptyRequestsStaff","emptyRequestsUser","hasFiltersActive","renderEmptyList","hasFilters","marginHorizontal","alignItems","EmptyStateMain","title","onPress","clearFilters","clearFiltersButton","clearFiltersText","color","colourBrandingMain","renderFilterButton","filterButton","filterButtonText","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","ListFooterComponent","renderListFooter","onEndReached","loadMore","onEndReachedThreshold","renderFilterOverlay","filterOverlay","opacity","pointerEvents","filterOverlayInner","LoadingCircles","renderFilterPopup","onClose","render","container","create","backgroundColor","filterContainerOuter","flexDirection","justifyContent","paddingHorizontal","paddingVertical","filterTitle","fontFamily","fontSize","letterSpacing","filterContainer","filterText","marginRight","filterIcon","marginTop","borderRadius","borderWidth","borderColor","absoluteFillObject","padding","mapStateToProps","user","notifications","reducerKey","jobsOrdered","orderBy","includes","permissions","getMainBrandingColourFromState","updateKey","jobstatuses","forwardRef"],"sources":["MaintenanceList.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport {\n\tView,\n\tStyleSheet,\n\tFlatList,\n\tTouchableOpacity,\n\tAnimated,\n} from \"react-native\";\nimport _ from \"lodash\";\nimport { connect } from \"react-redux\";\nimport { maintenanceActions } from \"../apis\";\nimport {\n\tjobsLoaded,\n\tjobAdded,\n\tjobsAdded,\n\tjobStatusesUpdate,\n\tjobHideSeenUpdate,\n\tjobsFilterLoaded,\n} 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\t_refreshCounter = 0;\n\t_filterApplying = false;\n\t_filterDataReady = false;\n\t_overlayOpacity = new Animated.Value(0);\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\ttypes: [],\n\t\t\tfilteredList: props.jobs,\n\t\t\tloading: false,\n\t\t\tloadingMore: false,\n\t\t\thasMore: true,\n\t\t\tlastKey: null,\n\t\t\tsearchText: \"\",\n\t\t\tshowFilterPopup: false,\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.props.jobStatusesUpdate(this.props.site);\n\t\tthis.props.jobHideSeenUpdate(this.props.site);\n\t\tthis.refresh();\n\t\tthis.refreshTypes();\n\t\tthis.resetDataSource();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (!prevProps.dataUpdated && this.props.dataUpdated) this.refresh();\n\t\tif (\n\t\t\t!_.isEqual(prevProps.jobs, this.props.jobs) ||\n\t\t\t!_.isEqual(prevProps.jobfilters, this.props.jobfilters)\n\t\t)\n\t\t\tthis.resetDataSource();\n\t}\n\n\texpandStatus = (status) => {\n\t\tif (status !== \"Incomplete\") return status;\n\t\tconst { statusTypes } = this.props;\n\t\tif (!statusTypes || !statusTypes.length) return status;\n\t\tconst incompleteStatuses = statusTypes\n\t\t\t.filter((s) => s.category !== \"Completed\")\n\t\t\t.map((s) => s.text);\n\t\treturn incompleteStatuses.length > 0\n\t\t\t? incompleteStatuses.join(\",\")\n\t\t\t: status;\n\t};\n\n\trefresh = (overrideFilters) => {\n\t\tconst currentCounter = ++this._refreshCounter;\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tconst jobfilters = overrideFilters || this.props.jobfilters;\n\t\t\t\tconst res = await maintenanceActions.getJobs2(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tthis.expandStatus(jobfilters.status),\n\t\t\t\t\tjobfilters.priority,\n\t\t\t\t\tjobfilters.type,\n\t\t\t\t\tnull, // No lastKey = first page\n\t\t\t\t\tjobfilters.assignee,\n\t\t\t\t);\n\n\t\t\t\t// Discard stale responses from earlier filter changes\n\t\t\t\tif (currentCounter !== this._refreshCounter) return;\n\n\t\t\t\tconst jobs = res.data.Items;\n\t\t\t\tconst lastKey = res.data.LastKey;\n\n\t\t\t\t// Signal that the API response is ready before dispatching to Redux\n\t\t\t\tthis._filterDataReady = true;\n\n\t\t\t\t// Always replace jobs on refresh (filters are server-side)\n\t\t\t\tthis.props.jobsLoaded(jobs);\n\n\t\t\t\tthis.setState({\n\t\t\t\t\tlastKey,\n\t\t\t\t\thasMore: !!lastKey,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tif (currentCounter !== this._refreshCounter) return;\n\t\t\t\tconsole.log(\"refresh error\", error);\n\t\t\t} finally {\n\t\t\t\tif (currentCounter === this._refreshCounter) {\n\t\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\tloadMore = () => {\n\t\tconst { loading, loadingMore, hasMore, lastKey, searchText } = this.state;\n\n\t\t// Don't load if already loading, no more pages, or during search\n\t\tif (loading || loadingMore || !hasMore || !lastKey || searchText) return;\n\n\t\tthis.setState({ loadingMore: true }, async () => {\n\t\t\ttry {\n\t\t\t\tconst { jobfilters } = this.props;\n\t\t\t\tconst res = await maintenanceActions.getJobs2(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tthis.expandStatus(jobfilters.status),\n\t\t\t\t\tjobfilters.priority,\n\t\t\t\t\tjobfilters.type,\n\t\t\t\t\tlastKey,\n\t\t\t\t\tjobfilters.assignee,\n\t\t\t\t);\n\n\t\t\t\tconst newJobs = res.data.Items;\n\t\t\t\tconst newLastKey = res.data.LastKey;\n\n\t\t\t\t// Append to existing jobs\n\t\t\t\tthis.props.jobsAdded(newJobs);\n\n\t\t\t\tthis.setState({\n\t\t\t\t\tlastKey: newLastKey,\n\t\t\t\t\thasMore: !!newLastKey,\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"loadMore error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.setState({ loadingMore: false });\n\t\t\t}\n\t\t});\n\t};\n\n\trefreshTypes = async () => {\n\t\tconst { data } = await maintenanceActions.getJobTypes(\n\t\t\tHelper.getSite(this.props.site),\n\t\t);\n\t\tconst types = data.map((t) => {\n\t\t\treturn { label: t.typeName, value: t.typeName };\n\t\t});\n\t\ttypes.splice(0, 0, { label: \"All\", value: \"\" });\n\t\t// console.log('refreshTypes', types);\n\t\tthis.setState({ types });\n\t};\n\n\tfetchJob = (jobId) => {\n\t\tif (this.state.loading) return;\n\n\t\tthis.onLoadingChanged(true, async () => {\n\t\t\ttry {\n\t\t\t\tconst job = await maintenanceActions.getJobByJobId(\n\t\t\t\t\tthis.props.site,\n\t\t\t\t\tjobId,\n\t\t\t\t);\n\t\t\t\t// console.log('fetchJob', job?.data);\n\t\t\t\tthis.props.jobAdded(job.data);\n\t\t\t} catch (error) {\n\t\t\t\tconsole.log(\"fetchJob error\", error);\n\t\t\t} finally {\n\t\t\t\tthis.onLoadingChanged(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tgetEmptyStateText() {\n\t\tif (this.props.options && !_.isEmpty(this.props.options.EmptyText)) {\n\t\t\treturn this.props.options.EmptyText;\n\t\t}\n\t\treturn this.props.userCategory === \"staff\"\n\t\t\t? values.emptyRequestsStaff\n\t\t\t: values.emptyRequestsUser;\n\t}\n\n\tresetDataSource = (source = \"\") => {\n\t\tconst { searchText } = this.state;\n\t\tconst { jobs } = this.props;\n\n\t\tlet filteredList = jobs;\n\t\tlet jobIdMatch = null;\n\n\t\t// Client-side search filtering (search is not supported server-side)\n\t\tif (searchText) {\n\t\t\tjobIdMatch = _.find(jobs, (j) => j.jobId === searchText);\n\t\t\tfilteredList = jobs.filter((j) => {\n\t\t\t\tif (\n\t\t\t\t\tj.room &&\n\t\t\t\t\tj.room.toLowerCase().indexOf(searchText.toLowerCase()) > -1\n\t\t\t\t) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\t\t\tif (!jobIdMatch) this.fetchJob(searchText);\n\t\t}\n\n\t\t// Note: status, priority, type, and assignee filters are applied server-side\n\t\t// via getJobs2, so no client-side filtering needed for those\n\n\t\tif (jobIdMatch) {\n\t\t\tconst jobIndex = filteredList.indexOf(jobIdMatch);\n\t\t\tif (jobIndex > -1) {\n\t\t\t\tfilteredList.splice(jobIndex, 1);\n\t\t\t}\n\t\t\tfilteredList.unshift(jobIdMatch);\n\t\t}\n\n\t\t// During a filter transition, don't clear the list until the API\n\t\t// response has arrived and been processed. This prevents the empty\n\t\t// state from flashing when jobs transiently drop to [].\n\t\tif (\n\t\t\tthis._filterApplying &&\n\t\t\t!this._filterDataReady &&\n\t\t\tfilteredList.length === 0\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState({ filteredList }, () => {\n\t\t\tif (this._filterDataReady) {\n\t\t\t\tthis._filterApplying = false;\n\t\t\t\tthis._filterDataReady = false;\n\t\t\t\tthis._showOverlay(false);\n\t\t\t}\n\t\t});\n\t};\n\n\tonLoadingChanged = (loading, callback) => {\n\t\tthis.setState({ loading }, () => {\n\t\t\tif (this.props.onLoadingChanged)\n\t\t\t\tthis.props.onLoadingChanged(this.state.loading);\n\t\t\tif (callback) callback();\n\t\t});\n\t};\n\n\tonSearchText = (value) => {\n\t\tthis.setState({ searchText: value }, () => {\n\t\t\tif (_.isEmpty(this.state.searchText)) this.resetDataSource(\"search\");\n\t\t});\n\t};\n\n\tonSearchSubmit = () => {\n\t\tthis.resetDataSource(\"search\");\n\t};\n\n\tonToggleFilter = () => {\n\t\tthis.setState({ showFilterPopup: !this.state.showFilterPopup });\n\t};\n\n\tonSelectFilter = (selected) => {\n\t\tthis._filterApplying = true;\n\t\tthis._filterDataReady = false;\n\t\tthis._showOverlay(true);\n\t\tthis.props.jobsFilterLoaded(selected);\n\t\tthis.onToggleFilter();\n\t\t// Reset pagination but keep old list visible while loading\n\t\t// Pass filters directly to avoid stale props from async Redux update\n\t\tthis.setState({ lastKey: null, hasMore: true }, () => {\n\t\t\tthis.refresh(selected);\n\t\t});\n\t};\n\n\tgetFilterButtonText = () => {\n\t\tconst { jobfilters } = this.props;\n\t\tconst filterTexts = [];\n\t\tif (!_.isEmpty(jobfilters.status)) {\n\t\t\tfilterTexts.push(jobfilters.statusText);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.priority)) {\n\t\t\tfilterTexts.push(jobfilters.priorityText);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.type)) {\n\t\t\tfilterTexts.push(jobfilters.type);\n\t\t}\n\t\tif (!_.isEmpty(jobfilters.assignee)) {\n\t\t\tfilterTexts.push(jobfilters.assigneeName);\n\t\t}\n\t\tif (_.isEmpty(filterTexts)) {\n\t\t\treturn \"Filter\";\n\t\t}\n\t\treturn `Filtering by ${filterTexts.join(\", \")}`;\n\t};\n\n\thasFiltersActive() {\n\t\tconst { jobfilters } = this.props;\n\t\treturn (\n\t\t\t!_.isEmpty(jobfilters.status) ||\n\t\t\t!_.isEmpty(jobfilters.priority) ||\n\t\t\t!_.isEmpty(jobfilters.type) ||\n\t\t\t!_.isEmpty(jobfilters.assignee)\n\t\t);\n\t}\n\n\tclearFilters = () => {\n\t\tconst emptyFilters = {\n\t\t\tstatus: \"\",\n\t\t\tstatusText: \"\",\n\t\t\tpriority: \"\",\n\t\t\tpriorityText: \"\",\n\t\t\ttype: \"\",\n\t\t\tassignee: \"\",\n\t\t\tassigneeName: \"\",\n\t\t};\n\t\tthis.onSelectFilter(emptyFilters);\n\t};\n\n\trenderEmptyList() {\n\t\tif (this.state.loading || this._filterApplying) return null;\n\n\t\tconst hasFilters = this.hasFiltersActive();\n\n\t\treturn (\n\t\t\t<View style={{ marginHorizontal: 16, alignItems: \"center\" }}>\n\t\t\t\t<Components.EmptyStateMain\n\t\t\t\t\ttitle={\n\t\t\t\t\t\thasFilters\n\t\t\t\t\t\t\t? \"No requests match your filters\"\n\t\t\t\t\t\t\t: this.getEmptyStateText()\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t{hasFilters && (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tonPress={this.clearFilters}\n\t\t\t\t\t\tstyle={styles.clearFiltersButton}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\tstyles.clearFiltersText,\n\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tClear filters\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderFilterButton() {\n\t\treturn (\n\t\t\t<TouchableOpacity onPress={this.onToggleFilter}>\n\t\t\t\t<View style={styles.filterButton}>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\tstyles.filterButtonText,\n\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t]}\n\t\t\t\t\t>\n\t\t\t\t\t\t{this.getFilterButtonText()}\n\t\t\t\t\t</Text>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trenderSearch() {\n\t\tif (!this.props.hasPermission) return null;\n\n\t\treturn (\n\t\t\t<View style={styles.searchContainer}>\n\t\t\t\t<Components.GenericInput\n\t\t\t\t\tplaceholder={`Search by ${values.textEntityName} ID or Address`}\n\t\t\t\t\tvalue={this.state.searchText}\n\t\t\t\t\tonChangeText={this.onSearchText}\n\t\t\t\t\tonSubmitEditing={this.onSearchSubmit}\n\t\t\t\t\tsquaredCorners\n\t\t\t\t\thasClear\n\t\t\t\t\t// keyboardType={'numeric'}\n\t\t\t\t\treturnKeyType={\"done\"}\n\t\t\t\t/>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderListHeader() {\n\t\tconst { ListHeaderComponent } = this.props;\n\t\treturn (\n\t\t\t<View>\n\t\t\t\t{ListHeaderComponent ? (\n\t\t\t\t\tListHeaderComponent\n\t\t\t\t) : (\n\t\t\t\t\t<View style={{ height: 8 }} />\n\t\t\t\t)}\n\t\t\t\t{this.renderFilterButton()}\n\t\t\t\t{this.renderSearch()}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderList() {\n\t\tconst { filteredList } = this.state;\n\n\t\treturn (\n\t\t\t<FlatList\n\t\t\t\tkeyboardShouldPersistTaps=\"always\"\n\t\t\t\tstyle={{ flex: 1 }}\n\t\t\t\tcontentContainerStyle={{ paddingBottom: 16 }}\n\t\t\t\tdata={filteredList}\n\t\t\t\tkeyExtractor={(item) => item.id}\n\t\t\t\trenderItem={({ item }) => (\n\t\t\t\t\t<MaintenanceListItem style={this.props.itemStyle} job={item} />\n\t\t\t\t)}\n\t\t\t\tListEmptyComponent={this.renderEmptyList()}\n\t\t\t\tListHeaderComponent={this.renderListHeader()}\n\t\t\t\tListFooterComponent={this.renderListFooter()}\n\t\t\t\tonEndReached={this.loadMore}\n\t\t\t\tonEndReachedThreshold={0.5}\n\t\t\t/>\n\t\t);\n\t}\n\n\trenderListFooter = () => {\n\t\tif (!this.state.loadingMore) return null;\n\n\t\treturn (\n\t\t\t<View style={styles.loadingMore}>\n\t\t\t\t<Components.LoadingIndicator visible={true} />\n\t\t\t</View>\n\t\t);\n\t};\n\n\t_showOverlay = (visible) => {\n\t\tAnimated.timing(this._overlayOpacity, {\n\t\t\ttoValue: visible ? 1 : 0,\n\t\t\tduration: 200,\n\t\t\tuseNativeDriver: true,\n\t\t}).start();\n\t};\n\n\trenderFilterOverlay() {\n\t\tif (!this._filterApplying) return null;\n\n\t\treturn (\n\t\t\t<Animated.View\n\t\t\t\tstyle={[styles.filterOverlay, { opacity: this._overlayOpacity }]}\n\t\t\t\tpointerEvents=\"none\"\n\t\t\t>\n\t\t\t\t<View style={styles.filterOverlayInner}>\n\t\t\t\t\t<Components.LoadingCircles />\n\t\t\t\t</View>\n\t\t\t</Animated.View>\n\t\t);\n\t}\n\n\trenderFilterPopup() {\n\t\tconst { jobfilters } = this.props;\n\t\tconst { showFilterPopup, types } = this.state;\n\t\tif (!showFilterPopup) return null;\n\n\t\treturn (\n\t\t\t<FilterPopupMenu\n\t\t\t\tsite={this.props.site}\n\t\t\t\ttypes={types}\n\t\t\t\tstatus={jobfilters.status}\n\t\t\t\tpriority={jobfilters.priority}\n\t\t\t\tassignee={jobfilters.assignee}\n\t\t\t\ttype={jobfilters.type}\n\t\t\t\tonClose={this.onSelectFilter}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<View style={[styles.container, this.props.style]}>\n\t\t\t\t{this.renderList()}\n\t\t\t\t{this.renderFilterOverlay()}\n\t\t\t\t{this.renderFilterPopup()}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t\tbackgroundColor: \"#fff\",\n\t},\n\tfilterContainerOuter: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t\tpaddingHorizontal: 16,\n\t\tpaddingVertical: 16,\n\t},\n\tfilterTitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 11,\n\t\tletterSpacing: 0.8,\n\t\tcolor: \"#4d4d4d\",\n\t},\n\tfilterContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tfilterText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\tmarginRight: 6,\n\t},\n\tfilterIcon: {\n\t\tfontSize: 20,\n\t},\n\tsearchContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tpaddingBottom: 8,\n\t\tpaddingHorizontal: 16,\n\t},\n\tfilterButton: {\n\t\tpaddingBottom: 8,\n\t\tpaddingHorizontal: 16,\n\t\tflexDirection: \"row-reverse\",\n\t},\n\tfilterButtonText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t},\n\tloadingMore: {\n\t\tpaddingVertical: 20,\n\t\talignItems: \"center\",\n\t},\n\tclearFiltersButton: {\n\t\tmarginTop: 12,\n\t\tpaddingVertical: 10,\n\t\tpaddingHorizontal: 24,\n\t\tborderRadius: 8,\n\t\tborderWidth: 1,\n\t\tborderColor: \"#ccc\",\n\t\tbackgroundColor: \"#f9f9f9\",\n\t},\n\tclearFiltersText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 15,\n\t},\n\tfilterOverlay: {\n\t\t...StyleSheet.absoluteFillObject,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tbackgroundColor: \"rgba(255, 255, 255, 0.7)\",\n\t},\n\tfilterOverlayInner: {\n\t\tpadding: 20,\n\t\tborderRadius: 12,\n\t},\n});\n\nconst mapStateToProps = (state) => {\n\tconst { user, notifications } = state;\n\tconst jobs = state[values.reducerKey];\n\tconst jobsOrdered = _.orderBy(jobs.jobs, [\"createdUnix\"], [\"desc\"]);\n\tconst hasPermission = _.includes(user.permissions, \"maintenanceTracking\");\n\n\treturn {\n\t\thasPermission,\n\t\tjobs: jobsOrdered,\n\t\tsite: user.site,\n\t\tuserCategory: user.category,\n\t\tcolourBrandingMain: Colours.getMainBrandingColourFromState(state),\n\t\tdataUpdated: notifications.dataUpdated[values.updateKey],\n\t\tstatusTypes: state[values.reducerKey].jobstatuses,\n\t\tjobfilters: state[values.reducerKey].jobfilters || {},\n\t};\n};\n\nexport default connect(\n\tmapStateToProps,\n\t{\n\t\tjobsLoaded,\n\t\tjobAdded,\n\t\tjobsAdded,\n\t\tjobStatusesUpdate,\n\t\tjobHideSeenUpdate,\n\t\tjobsFilterLoaded,\n\t},\n\tnull,\n\t{\n\t\tforwardRef: true,\n\t},\n)(MaintenanceList);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -456,11 +456,13 @@ class RequestDetail extends Component {
|
|
|
456
456
|
}, /*#__PURE__*/React.createElement(View, {
|
|
457
457
|
style: styles.jobTitleContainer
|
|
458
458
|
}, job.jobId ? /*#__PURE__*/React.createElement(Text, {
|
|
459
|
+
maxFontSizeMultiplier: 1.5,
|
|
459
460
|
style: [styles.jobIdText, {
|
|
460
461
|
color: this.props.colourBrandingMain
|
|
461
462
|
}]
|
|
462
463
|
}, `${values.textEntityName} #${job.jobId}`) : null, /*#__PURE__*/React.createElement(Text, {
|
|
463
|
-
style: styles.jobTitleText
|
|
464
|
+
style: styles.jobTitleText,
|
|
465
|
+
maxFontSizeMultiplier: 1.4
|
|
464
466
|
}, job.title), /*#__PURE__*/React.createElement(View, {
|
|
465
467
|
style: styles.jobTypeSeenContainer
|
|
466
468
|
}, /*#__PURE__*/React.createElement(View, {
|
|
@@ -487,7 +489,8 @@ class RequestDetail extends Component {
|
|
|
487
489
|
}, "Seen"))), job.lastActivityUnix && /*#__PURE__*/React.createElement(View, {
|
|
488
490
|
style: styles.textSectionInner
|
|
489
491
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
490
|
-
style: styles.textSectionLabel
|
|
492
|
+
style: styles.textSectionLabel,
|
|
493
|
+
maxFontSizeMultiplier: 1.5
|
|
491
494
|
}, "Last Updated On"), /*#__PURE__*/React.createElement(View, {
|
|
492
495
|
style: styles.textSectionTextContainer
|
|
493
496
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
@@ -499,7 +502,8 @@ class RequestDetail extends Component {
|
|
|
499
502
|
}, /*#__PURE__*/React.createElement(View, {
|
|
500
503
|
style: styles.jobStatusOuterContainer
|
|
501
504
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
502
|
-
style: styles.jobStatusHeading
|
|
505
|
+
style: styles.jobStatusHeading,
|
|
506
|
+
maxFontSizeMultiplier: 1.5
|
|
503
507
|
}, "STATUS"), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
504
508
|
onPress: canEdit ? this.onOpenStatusPicker : null
|
|
505
509
|
}, /*#__PURE__*/React.createElement(View, {
|
|
@@ -507,7 +511,8 @@ class RequestDetail extends Component {
|
|
|
507
511
|
backgroundColor: statusOption.color
|
|
508
512
|
}]
|
|
509
513
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
510
|
-
style: styles.jobStatusText
|
|
514
|
+
style: styles.jobStatusText,
|
|
515
|
+
maxFontSizeMultiplier: 1.4
|
|
511
516
|
}, statusOption === null || statusOption === void 0 ? void 0 : statusOption.text)))), this.hasPermission() && /*#__PURE__*/React.createElement(View, {
|
|
512
517
|
style: styles.jobStatusOuterContainer
|
|
513
518
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
@@ -720,19 +725,23 @@ class RequestDetail extends Component {
|
|
|
720
725
|
switch (field.type) {
|
|
721
726
|
case "date":
|
|
722
727
|
return /*#__PURE__*/React.createElement(Text, {
|
|
723
|
-
style: styles.customText
|
|
728
|
+
style: styles.customText,
|
|
729
|
+
maxFontSizeMultiplier: 1.5
|
|
724
730
|
}, field.answer ? moment(field.answer, "YYYY-MM-DD").format("DD MMM YYYY") : "");
|
|
725
731
|
case "time":
|
|
726
732
|
return /*#__PURE__*/React.createElement(Text, {
|
|
727
|
-
style: styles.customText
|
|
733
|
+
style: styles.customText,
|
|
734
|
+
maxFontSizeMultiplier: 1.5
|
|
728
735
|
}, field.answer ? moment(field.answer, "HH:mm").format("h:mm a") : "");
|
|
729
736
|
case "yn":
|
|
730
737
|
return /*#__PURE__*/React.createElement(Text, {
|
|
731
|
-
style: styles.customText
|
|
738
|
+
style: styles.customText,
|
|
739
|
+
maxFontSizeMultiplier: 1.5
|
|
732
740
|
}, field.answer ? "Yes" : "No");
|
|
733
741
|
case "checkbox":
|
|
734
742
|
return /*#__PURE__*/React.createElement(Text, {
|
|
735
|
-
style: styles.customText
|
|
743
|
+
style: styles.customText,
|
|
744
|
+
maxFontSizeMultiplier: 1.5
|
|
736
745
|
}, field.answer && Array.isArray(field.answer) ? field.answer.join(", ") : "");
|
|
737
746
|
case "image":
|
|
738
747
|
return /*#__PURE__*/React.createElement(View, {
|
|
@@ -744,7 +753,8 @@ class RequestDetail extends Component {
|
|
|
744
753
|
}, this.renderDocument(field.answer));
|
|
745
754
|
default:
|
|
746
755
|
return /*#__PURE__*/React.createElement(Text, {
|
|
747
|
-
style: styles.customText
|
|
756
|
+
style: styles.customText,
|
|
757
|
+
maxFontSizeMultiplier: 1.5
|
|
748
758
|
}, field.answer);
|
|
749
759
|
}
|
|
750
760
|
};
|
|
@@ -754,7 +764,8 @@ class RequestDetail extends Component {
|
|
|
754
764
|
return /*#__PURE__*/React.createElement(View, {
|
|
755
765
|
key: index
|
|
756
766
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
757
|
-
style: styles.customLabel
|
|
767
|
+
style: styles.customLabel,
|
|
768
|
+
maxFontSizeMultiplier: 1.5
|
|
758
769
|
}, field.label), renderAnswer(field));
|
|
759
770
|
});
|
|
760
771
|
}
|
|
@@ -773,11 +784,14 @@ class RequestDetail extends Component {
|
|
|
773
784
|
textStyle: styles.detailsText,
|
|
774
785
|
sectionStyle: styles.detailsSection
|
|
775
786
|
}), this.state.showMore && /*#__PURE__*/React.createElement(View, null, hasCustomFields ? this.renderCustomFields() : null, !hasCustomFields ? /*#__PURE__*/React.createElement(React.Fragment, null, this.renderImage(job.images, job.image), !_.isEmpty(job.description) && /*#__PURE__*/React.createElement(Text, {
|
|
776
|
-
style: styles.jobDescriptionText
|
|
787
|
+
style: styles.jobDescriptionText,
|
|
788
|
+
maxFontSizeMultiplier: 1.5
|
|
777
789
|
}, job.description)) : null, /*#__PURE__*/React.createElement(Text, {
|
|
778
|
-
style: styles.locationLabel
|
|
790
|
+
style: styles.locationLabel,
|
|
791
|
+
maxFontSizeMultiplier: 1.5
|
|
779
792
|
}, "Address"), /*#__PURE__*/React.createElement(Text, {
|
|
780
|
-
style: styles.locationText
|
|
793
|
+
style: styles.locationText,
|
|
794
|
+
maxFontSizeMultiplier: 1.5
|
|
781
795
|
}, job.room), !hasCustomFields && job.isHome ? /*#__PURE__*/React.createElement(View, {
|
|
782
796
|
style: styles.detailsSection
|
|
783
797
|
}, /*#__PURE__*/React.createElement(Text, {
|