@plusscommunities/pluss-maintenance-app-forms 7.0.21 → 8.0.1-auth.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/apis/maintenanceActions.js +12 -4
- package/dist/module/apis/maintenanceActions.js.map +1 -1
- package/dist/module/components/FilterPopupMenu.js +30 -14
- package/dist/module/components/FilterPopupMenu.js.map +1 -1
- package/dist/module/components/MaintenanceList.js +199 -25
- package/dist/module/components/MaintenanceList.js.map +1 -1
- package/dist/module/components/MaintenanceListItem.js +2 -1
- package/dist/module/components/MaintenanceListItem.js.map +1 -1
- package/dist/module/components/MaintenanceWidgetItem.js +2 -1
- package/dist/module/components/MaintenanceWidgetItem.js.map +1 -1
- package/dist/module/components/PrioritySelectorPopup.js +2 -1
- package/dist/module/components/PrioritySelectorPopup.js.map +1 -1
- package/dist/module/components/StatusSelectorPopup.js +2 -1
- package/dist/module/components/StatusSelectorPopup.js.map +1 -1
- package/dist/module/components/WidgetSmall.js +5 -4
- package/dist/module/components/WidgetSmall.js.map +1 -1
- package/dist/module/core.config.js +1 -2
- package/dist/module/core.config.js.map +1 -1
- package/dist/module/screens/JobTypePicker.js +2 -1
- package/dist/module/screens/JobTypePicker.js.map +1 -1
- package/dist/module/screens/MaintenanceUserPicker.js +73 -91
- package/dist/module/screens/MaintenanceUserPicker.js.map +1 -1
- package/dist/module/screens/RequestDetail.js +76 -29
- package/dist/module/screens/RequestDetail.js.map +1 -1
- package/dist/module/screens/RequestNotes.js +11 -7
- package/dist/module/screens/RequestNotes.js.map +1 -1
- package/dist/module/screens/ServiceRequest.js +43 -42
- package/dist/module/screens/ServiceRequest.js.map +1 -1
- package/dist/module/values.config.a.js +1 -2
- package/dist/module/values.config.a.js.map +1 -1
- package/dist/module/values.config.default.js +1 -2
- package/dist/module/values.config.default.js.map +1 -1
- package/dist/module/values.config.enquiry.js +1 -2
- package/dist/module/values.config.enquiry.js.map +1 -1
- package/dist/module/values.config.feedback.js +1 -2
- package/dist/module/values.config.feedback.js.map +1 -1
- package/dist/module/values.config.food.js +1 -2
- package/dist/module/values.config.food.js.map +1 -1
- package/package.json +18 -14
- package/src/apis/maintenanceActions.js +17 -7
- package/src/components/FilterPopupMenu.js +67 -40
- package/src/components/MaintenanceList.js +234 -40
- package/src/components/MaintenanceListItem.js +2 -1
- package/src/components/MaintenanceWidgetItem.js +2 -1
- package/src/components/PrioritySelectorPopup.js +2 -1
- package/src/components/StatusSelectorPopup.js +2 -1
- package/src/components/WidgetSmall.js +12 -4
- package/src/core.config.js +0 -2
- package/src/screens/JobTypePicker.js +2 -1
- package/src/screens/MaintenanceUserPicker.js +77 -114
- package/src/screens/RequestDetail.js +88 -32
- package/src/screens/RequestNotes.js +17 -10
- package/src/screens/ServiceRequest.js +85 -44
- package/src/values.config.a.js +0 -1
- package/src/values.config.default.js +0 -1
- package/src/values.config.enquiry.js +0 -1
- package/src/values.config.feedback.js +0 -1
- package/src/values.config.food.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","_","TouchableOpacity","View","ScrollView","Text","TextInput","connect","Icon","Services","Components","Colours","Fonts","MaintenanceUserPicker","constructor","args","_defineProperty","currentUser","searchText","filteredUsers","text","setState","getFilteredUsers","users","usersList","props","length","filter","user","displayName","unit","searchLower","toLowerCase","includes","createElement","style","styles","searchContainer","PlIcon","name","searchIcon","placeholder","autoCorrect","placeholderTextColor","onChangeText","onChangeSearch","value","state","underlineColorAndroid","returnKeyType","onPress","clearButton","type","iconStyle","clearIcon","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","nextProps","onPressBack","navigation","goBack","onUserPress","onSelectUser","setTimeout","renderMain","isEmpty","marginTop","Spinner","FormCard","renderOptions","noResultsContainer","noResultsText","map","index","key","bind","FormCardSection","label","labelStyle","height","margin","hasUnderline","hasContent","rowContainer","userContainer","ProfilePic","profilePic","Diameter","labelText","color","fontSize","isEqual","COLOUR_GREEN","render","container","Header","leftIcon","onPressLeft","renderSearch","flex","position","backgroundColor","row","flexDirection","alignItems","minHeight","fontFamily","TEXT_DARK","justifyContent","marginLeft","paddingHorizontal","paddingVertical","borderBottomWidth","borderBottomColor","marginRight","padding","TEXT_LIGHT","textAlign"],"sources":["MaintenanceUserPicker.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport _ from \"lodash\";\nimport {\n\tTouchableOpacity,\n\tView,\n\tScrollView,\n\tText,\n\tTextInput,\n} from \"react-native\";\nimport { connect } from \"react-redux\";\nimport { Icon } from \"@rneui/themed\";\nimport { Services } from \"../feature.config\";\nimport { Components, Colours, Fonts } from \"../core.config\";\n\nclass MaintenanceUserPicker extends Component {\n\tstate = {\n\t\tcurrentUser: null,\n\t\tsearchText: \"\",\n\t\tfilteredUsers: [],\n\t};\n\n\tUNSAFE_componentWillMount() {\n\t\tthis.setState({\n\t\t\tcurrentUser: this.props.currentUser,\n\t\t\tfilteredUsers: this.props.users || [],\n\t\t});\n\t}\n\n\tUNSAFE_componentWillReceiveProps(nextProps) {\n\t\tif (nextProps.users !== this.props.users) {\n\t\t\tthis.setState({\n\t\t\t\tfilteredUsers: this.getFilteredUsers(\n\t\t\t\t\tthis.state.searchText,\n\t\t\t\t\tnextProps.users,\n\t\t\t\t),\n\t\t\t});\n\t\t}\n\t\tif (nextProps.currentUser !== this.props.currentUser) {\n\t\t\tthis.setState({\n\t\t\t\tcurrentUser: nextProps.currentUser,\n\t\t\t});\n\t\t}\n\t}\n\n\tonPressBack() {\n\t\tServices.navigation.goBack();\n\t}\n\n\tonUserPress(user) {\n\t\tthis.props.onSelectUser(user);\n\t\tthis.setState({ currentUser: user });\n\t\tsetTimeout(() => {\n\t\t\tthis.onPressBack();\n\t\t}, 200);\n\t}\n\n\tonChangeSearch = (text) => {\n\t\tthis.setState({\n\t\t\tsearchText: text,\n\t\t\tfilteredUsers: this.getFilteredUsers(text),\n\t\t});\n\t};\n\n\tgetFilteredUsers = (searchText, users) => {\n\t\tconst usersList = users || this.props.users || [];\n\n\t\tif (!searchText || searchText.length === 0) {\n\t\t\treturn usersList;\n\t\t}\n\n\t\tif (!usersList || usersList.length === 0) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn usersList.filter((user) => {\n\t\t\tconst displayName = user.displayName || \"\";\n\t\t\tconst unit = user.unit || \"\";\n\t\t\tconst searchLower = searchText.toLowerCase();\n\n\t\t\treturn (\n\t\t\t\tdisplayName.toLowerCase().includes(searchLower) ||\n\t\t\t\tunit.toLowerCase().includes(searchLower)\n\t\t\t);\n\t\t});\n\t};\n\n\trenderSearch = () => {\n\t\treturn (\n\t\t\t<View style={styles.searchContainer}>\n\t\t\t\t<Fonts.PlIcon name=\"nav-search\" style={styles.searchIcon} />\n\t\t\t\t<TextInput\n\t\t\t\t\tplaceholder=\"Search by name or unit\"\n\t\t\t\t\tautoCorrect={false}\n\t\t\t\t\tplaceholderTextColor={\"rgba(60, 60, 80, .1)\"}\n\t\t\t\t\tonChangeText={this.onChangeSearch}\n\t\t\t\t\tvalue={this.state.searchText}\n\t\t\t\t\tstyle={styles.searchText}\n\t\t\t\t\tunderlineColorAndroid={\"rgba(0,0,0,0)\"}\n\t\t\t\t\treturnKeyType=\"search\"\n\t\t\t\t/>\n\t\t\t\t{this.state.searchText.length > 0 && (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tonPress={() => this.onChangeSearch(\"\")}\n\t\t\t\t\t\tstyle={styles.clearButton}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tname=\"times-circle\"\n\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\ticonStyle={styles.clearIcon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t};\n\n\trenderMain() {\n\t\tif (_.isEmpty(this.props.users)) {\n\t\t\treturn (\n\t\t\t\t<View style={{ marginTop: 16 }}>\n\t\t\t\t\t<Components.Spinner />\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<Components.FormCard style={{ marginTop: 16 }}>\n\t\t\t\t{this.renderOptions()}\n\t\t\t</Components.FormCard>\n\t\t);\n\t}\n\n\trenderOptions() {\n\t\tconst users = this.state.filteredUsers;\n\n\t\tif (users.length === 0 && this.state.searchText.length > 0) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.noResultsContainer}>\n\t\t\t\t\t<Text style={styles.noResultsText}>\n\t\t\t\t\t\tNo users found matching \"{this.state.searchText}\"\n\t\t\t\t\t</Text>\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\treturn users.map((user, index) => {\n\t\t\treturn (\n\t\t\t\t<TouchableOpacity\n\t\t\t\t\tkey={index}\n\t\t\t\t\tonPress={this.onUserPress.bind(this, user)}\n\t\t\t\t>\n\t\t\t\t\t<Components.FormCardSection\n\t\t\t\t\t\tlabel={user.displayName}\n\t\t\t\t\t\tlabelStyle={{ height: 0, margin: 0 }}\n\t\t\t\t\t\thasUnderline\n\t\t\t\t\t\thasContent\n\t\t\t\t\t>\n\t\t\t\t\t\t<View style={styles.rowContainer}>\n\t\t\t\t\t\t\t<View style={styles.userContainer}>\n\t\t\t\t\t\t\t\t<Components.ProfilePic\n\t\t\t\t\t\t\t\t\tProfilePic={user.profilePic}\n\t\t\t\t\t\t\t\t\tDiameter={30}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Text style={styles.labelText}>{user.displayName}</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tname=\"check-circle\"\n\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\t\t\t\t{ color: \"#d5d9e0\", fontSize: 20 },\n\t\t\t\t\t\t\t\t\t_.isEqual(user, this.state.currentUser) && {\n\t\t\t\t\t\t\t\t\t\tcolor: Colours.COLOUR_GREEN,\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/>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</Components.FormCardSection>\n\t\t\t\t</TouchableOpacity>\n\t\t\t);\n\t\t});\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<View style={styles.container}>\n\t\t\t\t<Components.Header\n\t\t\t\t\tleftIcon=\"angle-left\"\n\t\t\t\t\tonPressLeft={this.onPressBack.bind(this)}\n\t\t\t\t\ttext=\"Select user\"\n\t\t\t\t/>\n\t\t\t\t{this.renderSearch()}\n\t\t\t\t<ScrollView style={{ flex: 1 }}>{this.renderMain()}</ScrollView>\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = {\n\tcontainer: {\n\t\tflex: 1,\n\t\tposition: \"relative\",\n\t\tbackgroundColor: \"#f0f0f5\",\n\t},\n\trow: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tminHeight: 22,\n\t},\n\ttext: {\n\t\tflex: 1,\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 14,\n\t\tcolor: Colours.TEXT_DARK,\n\t},\n\trowContainer: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t},\n\tuserContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tlabelText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARK,\n\t\tmarginLeft: 8,\n\t},\n\tsearchContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tpaddingHorizontal: 16,\n\t\tpaddingVertical: 12,\n\t\tbackgroundColor: \"#fff\",\n\t\tborderBottomWidth: 1,\n\t\tborderBottomColor: \"#f0f0f5\",\n\t},\n\tsearchIcon: {\n\t\tfontSize: 20,\n\t\tmarginRight: 10,\n\t\tcolor: \"rgba(90, 90, 110, .5)\",\n\t},\n\tsearchText: {\n\t\tflex: 1,\n\t\tfontSize: 16,\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: Colours.TEXT_DARK,\n\t},\n\tclearButton: {\n\t\tpadding: 8,\n\t},\n\tclearIcon: {\n\t\tfontSize: 18,\n\t\tcolor: \"rgba(90, 90, 110, .5)\",\n\t},\n\tnoResultsContainer: {\n\t\tflex: 1,\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tpaddingVertical: 40,\n\t},\n\tnoResultsText: {\n\t\tfontSize: 16,\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: Colours.TEXT_LIGHT,\n\t\ttextAlign: \"center\",\n\t},\n};\n\nexport default connect(null, {})(MaintenanceUserPicker);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Component","Text","_","TouchableOpacity","View","ScrollView","TextInput","Keyboard","connect","Icon","Services","Components","Colours","MaintenanceUserPicker","constructor","args","_defineProperty","currentUser","searchText","text","setState","state","users","props","length","searchLower","toLowerCase","filter","user","displayName","unit","includes","UNSAFE_componentWillMount","onPressBack","navigation","goBack","onUserPress","dismiss","onSelectUser","setTimeout","renderMain","isEmpty","createElement","style","marginTop","Spinner","filteredUsers","getFilteredUsers","styles","noResultsContainer","noResultsText","FormCard","renderOptions","map","index","key","onPress","bind","FormCardSection","label","labelStyle","height","margin","hasUnderline","hasContent","rowContainer","userContainer","ProfilePic","profilePic","Diameter","labelText","name","type","iconStyle","color","fontSize","isEqual","COLOUR_GREEN","renderSearch","searchContainer","searchIcon","placeholder","autoCorrect","placeholderTextColor","TEXT_MID_ALPHA50","onChangeText","onChangeSearch","value","underlineColorAndroid","COLOUR_TRANSPARENT","returnKeyType","clearButton","clearIcon","render","container","Header","leftIcon","onPressLeft","flex","keyboardShouldPersistTaps","keyboardDismissMode","position","backgroundColor","flexDirection","justifyContent","alignItems","fontFamily","TEXT_DARK","marginLeft","marginHorizontal","marginBottom","borderRadius","paddingHorizontal","paddingVertical","marginRight","padding","TEXT_LIGHT","textAlign"],"sources":["MaintenanceUserPicker.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport _ from \"lodash\";\nimport {\n\tTouchableOpacity,\n\tView,\n\tScrollView,\n\tTextInput,\n\tKeyboard,\n} from \"react-native\";\nimport { connect } from \"react-redux\";\nimport { Icon } from \"@rneui/themed\";\nimport { Services } from \"../feature.config\";\nimport { Components, Colours } from \"../core.config\";\n\nclass MaintenanceUserPicker extends Component {\n\tstate = {\n\t\tcurrentUser: null,\n\t\tsearchText: \"\",\n\t};\n\n\tUNSAFE_componentWillMount() {\n\t\tthis.setState({ currentUser: this.props.currentUser });\n\t}\n\n\tonPressBack() {\n\t\tServices.navigation.goBack();\n\t}\n\n\tonUserPress(user) {\n\t\tKeyboard.dismiss();\n\t\tthis.props.onSelectUser(user);\n\t\tthis.setState({ currentUser: user });\n\t\tsetTimeout(() => {\n\t\t\tthis.onPressBack();\n\t\t}, 200);\n\t}\n\n\tonChangeSearch = (text) => {\n\t\tthis.setState({ searchText: text });\n\t};\n\n\tgetFilteredUsers = () => {\n\t\tconst { searchText } = this.state;\n\t\tconst { users } = this.props;\n\t\tif (!users) return [];\n\t\tif (!searchText || searchText.length === 0) return users;\n\t\tconst searchLower = searchText.toLowerCase();\n\t\treturn users.filter((user) => {\n\t\t\tconst displayName = (user.displayName || \"\").toLowerCase();\n\t\t\tconst unit = (user.unit || \"\").toLowerCase();\n\t\t\treturn displayName.includes(searchLower) || unit.includes(searchLower);\n\t\t});\n\t};\n\n\trenderMain() {\n\t\tif (_.isEmpty(this.props.users)) {\n\t\t\treturn (\n\t\t\t\t<View style={{ marginTop: 8 }}>\n\t\t\t\t\t<Components.Spinner />\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\tconst filteredUsers = this.getFilteredUsers();\n\t\tif (filteredUsers.length === 0 && this.state.searchText.length > 0) {\n\t\t\treturn (\n\t\t\t\t<View style={styles.noResultsContainer}>\n\t\t\t\t\t<Text style={styles.noResultsText}>No users found</Text>\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<Components.FormCard style={{ marginTop: 8 }}>\n\t\t\t\t{this.renderOptions(filteredUsers)}\n\t\t\t</Components.FormCard>\n\t\t);\n\t}\n\n\trenderOptions(users) {\n\t\treturn users.map((user, index) => {\n\t\t\treturn (\n\t\t\t\t<TouchableOpacity\n\t\t\t\t\tkey={index}\n\t\t\t\t\tonPress={this.onUserPress.bind(this, user)}\n\t\t\t\t>\n\t\t\t\t\t<Components.FormCardSection\n\t\t\t\t\t\tlabel={user.displayName}\n\t\t\t\t\t\tlabelStyle={{ height: 0, margin: 0 }}\n\t\t\t\t\t\thasUnderline\n\t\t\t\t\t\thasContent\n\t\t\t\t\t>\n\t\t\t\t\t\t<View style={styles.rowContainer}>\n\t\t\t\t\t\t\t<View style={styles.userContainer}>\n\t\t\t\t\t\t\t\t<Components.ProfilePic\n\t\t\t\t\t\t\t\t\tProfilePic={user.profilePic}\n\t\t\t\t\t\t\t\t\tDiameter={30}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Text style={styles.labelText}>{user.displayName}</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\tname=\"check-circle\"\n\t\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\t\t\t\t{ color: \"#d5d9e0\", fontSize: 20 },\n\t\t\t\t\t\t\t\t\t_.isEqual(user, this.state.currentUser) && {\n\t\t\t\t\t\t\t\t\t\tcolor: Colours.COLOUR_GREEN,\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/>\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</Components.FormCardSection>\n\t\t\t\t</TouchableOpacity>\n\t\t\t);\n\t\t});\n\t}\n\n\trenderSearch() {\n\t\treturn (\n\t\t\t<View style={styles.searchContainer}>\n\t\t\t\t<Icon name=\"search\" type=\"font-awesome\" iconStyle={styles.searchIcon} />\n\t\t\t\t<TextInput\n\t\t\t\t\tplaceholder=\"Search by name or address\"\n\t\t\t\t\tautoCorrect={false}\n\t\t\t\t\tplaceholderTextColor={Colours.TEXT_MID_ALPHA50}\n\t\t\t\t\tonChangeText={this.onChangeSearch}\n\t\t\t\t\tvalue={this.state.searchText}\n\t\t\t\t\tstyle={styles.searchText}\n\t\t\t\t\tunderlineColorAndroid={Colours.COLOUR_TRANSPARENT}\n\t\t\t\t\treturnKeyType=\"search\"\n\t\t\t\t/>\n\t\t\t\t{this.state.searchText.length > 0 && (\n\t\t\t\t\t<TouchableOpacity\n\t\t\t\t\t\tonPress={() => this.onChangeSearch(\"\")}\n\t\t\t\t\t\tstyle={styles.clearButton}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\tname=\"times-circle\"\n\t\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\t\ticonStyle={styles.clearIcon}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</TouchableOpacity>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<View style={styles.container}>\n\t\t\t\t<Components.Header\n\t\t\t\t\tleftIcon=\"angle-left\"\n\t\t\t\t\tonPressLeft={this.onPressBack.bind(this)}\n\t\t\t\t\ttext=\"Select user\"\n\t\t\t\t/>\n\t\t\t\t{this.renderSearch()}\n\t\t\t\t<ScrollView\n\t\t\t\t\tstyle={{ flex: 1 }}\n\t\t\t\t\tkeyboardShouldPersistTaps=\"handled\"\n\t\t\t\t\tkeyboardDismissMode=\"on-drag\"\n\t\t\t\t>\n\t\t\t\t\t{this.renderMain()}\n\t\t\t\t</ScrollView>\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = {\n\tcontainer: {\n\t\tflex: 1,\n\t\tposition: \"relative\",\n\t\tbackgroundColor: \"#f0f0f5\",\n\t},\n\trowContainer: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t},\n\tuserContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t},\n\tlabelText: {\n\t\tfontFamily: \"sf-medium\",\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_DARK,\n\t\tmarginLeft: 8,\n\t},\n\tsearchContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tmarginHorizontal: 15,\n\t\tmarginTop: 10,\n\t\tmarginBottom: 0,\n\t\tbackgroundColor: \"#fff\",\n\t\tborderRadius: 8,\n\t\tpaddingHorizontal: 12,\n\t\tpaddingVertical: 8,\n\t},\n\tsearchIcon: {\n\t\tfontSize: 16,\n\t\tmarginRight: 10,\n\t\tcolor: Colours.TEXT_MID_ALPHA50,\n\t},\n\tsearchText: {\n\t\tflex: 1,\n\t\tfontSize: 16,\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: Colours.TEXT_DARK,\n\t\tpadding: 0,\n\t},\n\tclearButton: {\n\t\tpadding: 4,\n\t},\n\tclearIcon: {\n\t\tfontSize: 16,\n\t\tcolor: Colours.TEXT_MID_ALPHA50,\n\t},\n\tnoResultsContainer: {\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tpaddingVertical: 40,\n\t},\n\tnoResultsText: {\n\t\tfontSize: 16,\n\t\tfontFamily: \"sf-regular\",\n\t\tcolor: Colours.TEXT_LIGHT,\n\t\ttextAlign: \"center\",\n\t},\n};\n\nexport default connect(null, {})(MaintenanceUserPicker);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,7 +2,8 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
|
|
|
2
2
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
3
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
4
|
import React, { Component } from "react";
|
|
5
|
-
import {
|
|
5
|
+
import { Text } from "@plusscommunities/pluss-core-app/components";
|
|
6
|
+
import { ScrollView, View, StyleSheet, KeyboardAvoidingView, TouchableOpacity, ImageBackground, Platform } from "react-native";
|
|
6
7
|
import DateTimePicker from "react-native-modal-datetime-picker";
|
|
7
8
|
import { Icon } from "@rneui/themed";
|
|
8
9
|
import _ from "lodash";
|
|
@@ -21,24 +22,49 @@ class RequestDetail extends Component {
|
|
|
21
22
|
super(props);
|
|
22
23
|
_defineProperty(this, "getJob", async () => {
|
|
23
24
|
this.setState({
|
|
24
|
-
loading: true
|
|
25
|
+
loading: true,
|
|
26
|
+
loadError: false
|
|
25
27
|
}, async () => {
|
|
28
|
+
// Timeout fallback: if API doesn't respond in 15s, show error
|
|
29
|
+
const timeoutId = setTimeout(() => {
|
|
30
|
+
if (this.state.loading) {
|
|
31
|
+
this.setState({
|
|
32
|
+
loading: false,
|
|
33
|
+
loadError: true
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}, 15000);
|
|
26
37
|
try {
|
|
27
38
|
const res = await maintenanceActions.getJob(this.props.job.site, this.props.job.id);
|
|
28
39
|
// console.log('getJob', JSON.stringify(res.data, null, 2));
|
|
29
|
-
|
|
30
|
-
this.
|
|
31
|
-
|
|
32
|
-
|
|
40
|
+
clearTimeout(timeoutId);
|
|
41
|
+
if (!this.state.loadError) {
|
|
42
|
+
this.props.jobAdded(res.data);
|
|
43
|
+
this.updateJobState(res.data);
|
|
44
|
+
// Refresh external sync data when job is refreshed
|
|
45
|
+
this.getExternalSync();
|
|
46
|
+
}
|
|
33
47
|
} catch (error) {
|
|
48
|
+
var _error$response, _error$response2, _error$response3, _error$response4;
|
|
49
|
+
clearTimeout(timeoutId);
|
|
34
50
|
console.log("getJob error", error.toString());
|
|
35
|
-
//
|
|
36
|
-
|
|
51
|
+
// Log full error details for debugging
|
|
52
|
+
console.log("getJob error details:", {
|
|
53
|
+
message: error.message,
|
|
54
|
+
code: error.code,
|
|
55
|
+
responseStatus: (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status,
|
|
56
|
+
responseData: (_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : _error$response2.data
|
|
57
|
+
});
|
|
58
|
+
// check for 403 or 404 error (use optional chaining to prevent crash)
|
|
59
|
+
if (((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : _error$response3.status) === 403 || ((_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : _error$response4.status) === 404) {
|
|
37
60
|
this.setState({
|
|
38
61
|
forbidden: true
|
|
39
62
|
});
|
|
63
|
+
} else {
|
|
64
|
+
this.setState({
|
|
65
|
+
loadError: true
|
|
66
|
+
});
|
|
40
67
|
}
|
|
41
|
-
console.log("getJob error", error);
|
|
42
68
|
} finally {
|
|
43
69
|
this.setState({
|
|
44
70
|
loading: false
|
|
@@ -72,9 +98,9 @@ class RequestDetail extends Component {
|
|
|
72
98
|
loadingExternalSync: false
|
|
73
99
|
});
|
|
74
100
|
} catch (error) {
|
|
75
|
-
var _error$
|
|
101
|
+
var _error$response5;
|
|
76
102
|
// 404 is expected if no sync - don't show error
|
|
77
|
-
if (((_error$
|
|
103
|
+
if (((_error$response5 = error.response) === null || _error$response5 === void 0 ? void 0 : _error$response5.status) !== 404) {
|
|
78
104
|
console.log("getExternalSync error", error);
|
|
79
105
|
}
|
|
80
106
|
this.setState({
|
|
@@ -106,7 +132,6 @@ class RequestDetail extends Component {
|
|
|
106
132
|
const res = await maintenanceActions.editJob(updated, user.site);
|
|
107
133
|
// console.log('markSeen updated');
|
|
108
134
|
this.props.jobAdded(res.data.job);
|
|
109
|
-
this.getJob();
|
|
110
135
|
this.setState({
|
|
111
136
|
loading: false,
|
|
112
137
|
seen: true
|
|
@@ -354,6 +379,7 @@ class RequestDetail extends Component {
|
|
|
354
379
|
showStatusPopup: false,
|
|
355
380
|
showPriorityPopup: false,
|
|
356
381
|
loading: false,
|
|
382
|
+
loadError: false,
|
|
357
383
|
showFullscreenVideo: false,
|
|
358
384
|
currentVideoUrl: "",
|
|
359
385
|
galleryOpen: false,
|
|
@@ -367,6 +393,7 @@ class RequestDetail extends Component {
|
|
|
367
393
|
this.scrollView = /*#__PURE__*/React.createRef();
|
|
368
394
|
this.commentReply = /*#__PURE__*/React.createRef();
|
|
369
395
|
this.commentSection = /*#__PURE__*/React.createRef();
|
|
396
|
+
this.imagePopup = /*#__PURE__*/React.createRef();
|
|
370
397
|
}
|
|
371
398
|
componentDidMount() {
|
|
372
399
|
this.props.jobStatusesUpdate(this.props.job.site);
|
|
@@ -400,7 +427,7 @@ class RequestDetail extends Component {
|
|
|
400
427
|
galleryOpen: true,
|
|
401
428
|
galleryImages
|
|
402
429
|
});
|
|
403
|
-
this.
|
|
430
|
+
this.imagePopup.current.scrollTo(index);
|
|
404
431
|
}
|
|
405
432
|
closeGallery() {
|
|
406
433
|
this.setState({
|
|
@@ -429,11 +456,13 @@ class RequestDetail extends Component {
|
|
|
429
456
|
}, /*#__PURE__*/React.createElement(View, {
|
|
430
457
|
style: styles.jobTitleContainer
|
|
431
458
|
}, job.jobId ? /*#__PURE__*/React.createElement(Text, {
|
|
459
|
+
maxFontSizeMultiplier: 1.5,
|
|
432
460
|
style: [styles.jobIdText, {
|
|
433
461
|
color: this.props.colourBrandingMain
|
|
434
462
|
}]
|
|
435
463
|
}, `${values.textEntityName} #${job.jobId}`) : null, /*#__PURE__*/React.createElement(Text, {
|
|
436
|
-
style: styles.jobTitleText
|
|
464
|
+
style: styles.jobTitleText,
|
|
465
|
+
maxFontSizeMultiplier: 1.4
|
|
437
466
|
}, job.title), /*#__PURE__*/React.createElement(View, {
|
|
438
467
|
style: styles.jobTypeSeenContainer
|
|
439
468
|
}, /*#__PURE__*/React.createElement(View, {
|
|
@@ -460,7 +489,8 @@ class RequestDetail extends Component {
|
|
|
460
489
|
}, "Seen"))), job.lastActivityUnix && /*#__PURE__*/React.createElement(View, {
|
|
461
490
|
style: styles.textSectionInner
|
|
462
491
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
463
|
-
style: styles.textSectionLabel
|
|
492
|
+
style: styles.textSectionLabel,
|
|
493
|
+
maxFontSizeMultiplier: 1.5
|
|
464
494
|
}, "Last Updated On"), /*#__PURE__*/React.createElement(View, {
|
|
465
495
|
style: styles.textSectionTextContainer
|
|
466
496
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
@@ -472,7 +502,8 @@ class RequestDetail extends Component {
|
|
|
472
502
|
}, /*#__PURE__*/React.createElement(View, {
|
|
473
503
|
style: styles.jobStatusOuterContainer
|
|
474
504
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
475
|
-
style: styles.jobStatusHeading
|
|
505
|
+
style: styles.jobStatusHeading,
|
|
506
|
+
maxFontSizeMultiplier: 1.5
|
|
476
507
|
}, "STATUS"), /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
477
508
|
onPress: canEdit ? this.onOpenStatusPicker : null
|
|
478
509
|
}, /*#__PURE__*/React.createElement(View, {
|
|
@@ -480,7 +511,8 @@ class RequestDetail extends Component {
|
|
|
480
511
|
backgroundColor: statusOption.color
|
|
481
512
|
}]
|
|
482
513
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
483
|
-
style: styles.jobStatusText
|
|
514
|
+
style: styles.jobStatusText,
|
|
515
|
+
maxFontSizeMultiplier: 1.4
|
|
484
516
|
}, statusOption === null || statusOption === void 0 ? void 0 : statusOption.text)))), this.hasPermission() && /*#__PURE__*/React.createElement(View, {
|
|
485
517
|
style: styles.jobStatusOuterContainer
|
|
486
518
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
@@ -597,7 +629,7 @@ class RequestDetail extends Component {
|
|
|
597
629
|
visible: this.state.galleryOpen,
|
|
598
630
|
images: this.state.galleryImages,
|
|
599
631
|
onClose: this.closeGallery.bind(this),
|
|
600
|
-
ref:
|
|
632
|
+
ref: this.imagePopup
|
|
601
633
|
});
|
|
602
634
|
}
|
|
603
635
|
renderDocumentPopup() {
|
|
@@ -693,19 +725,23 @@ class RequestDetail extends Component {
|
|
|
693
725
|
switch (field.type) {
|
|
694
726
|
case "date":
|
|
695
727
|
return /*#__PURE__*/React.createElement(Text, {
|
|
696
|
-
style: styles.customText
|
|
728
|
+
style: styles.customText,
|
|
729
|
+
maxFontSizeMultiplier: 1.5
|
|
697
730
|
}, field.answer ? moment(field.answer, "YYYY-MM-DD").format("DD MMM YYYY") : "");
|
|
698
731
|
case "time":
|
|
699
732
|
return /*#__PURE__*/React.createElement(Text, {
|
|
700
|
-
style: styles.customText
|
|
733
|
+
style: styles.customText,
|
|
734
|
+
maxFontSizeMultiplier: 1.5
|
|
701
735
|
}, field.answer ? moment(field.answer, "HH:mm").format("h:mm a") : "");
|
|
702
736
|
case "yn":
|
|
703
737
|
return /*#__PURE__*/React.createElement(Text, {
|
|
704
|
-
style: styles.customText
|
|
738
|
+
style: styles.customText,
|
|
739
|
+
maxFontSizeMultiplier: 1.5
|
|
705
740
|
}, field.answer ? "Yes" : "No");
|
|
706
741
|
case "checkbox":
|
|
707
742
|
return /*#__PURE__*/React.createElement(Text, {
|
|
708
|
-
style: styles.customText
|
|
743
|
+
style: styles.customText,
|
|
744
|
+
maxFontSizeMultiplier: 1.5
|
|
709
745
|
}, field.answer && Array.isArray(field.answer) ? field.answer.join(", ") : "");
|
|
710
746
|
case "image":
|
|
711
747
|
return /*#__PURE__*/React.createElement(View, {
|
|
@@ -717,7 +753,8 @@ class RequestDetail extends Component {
|
|
|
717
753
|
}, this.renderDocument(field.answer));
|
|
718
754
|
default:
|
|
719
755
|
return /*#__PURE__*/React.createElement(Text, {
|
|
720
|
-
style: styles.customText
|
|
756
|
+
style: styles.customText,
|
|
757
|
+
maxFontSizeMultiplier: 1.5
|
|
721
758
|
}, field.answer);
|
|
722
759
|
}
|
|
723
760
|
};
|
|
@@ -727,7 +764,8 @@ class RequestDetail extends Component {
|
|
|
727
764
|
return /*#__PURE__*/React.createElement(View, {
|
|
728
765
|
key: index
|
|
729
766
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
730
|
-
style: styles.customLabel
|
|
767
|
+
style: styles.customLabel,
|
|
768
|
+
maxFontSizeMultiplier: 1.5
|
|
731
769
|
}, field.label), renderAnswer(field));
|
|
732
770
|
});
|
|
733
771
|
}
|
|
@@ -746,12 +784,14 @@ class RequestDetail extends Component {
|
|
|
746
784
|
textStyle: styles.detailsText,
|
|
747
785
|
sectionStyle: styles.detailsSection
|
|
748
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, {
|
|
749
|
-
|
|
750
|
-
|
|
787
|
+
style: styles.jobDescriptionText,
|
|
788
|
+
maxFontSizeMultiplier: 1.5
|
|
751
789
|
}, job.description)) : null, /*#__PURE__*/React.createElement(Text, {
|
|
752
|
-
style: styles.locationLabel
|
|
790
|
+
style: styles.locationLabel,
|
|
791
|
+
maxFontSizeMultiplier: 1.5
|
|
753
792
|
}, "Address"), /*#__PURE__*/React.createElement(Text, {
|
|
754
|
-
style: styles.locationText
|
|
793
|
+
style: styles.locationText,
|
|
794
|
+
maxFontSizeMultiplier: 1.5
|
|
755
795
|
}, job.room), !hasCustomFields && job.isHome ? /*#__PURE__*/React.createElement(View, {
|
|
756
796
|
style: styles.detailsSection
|
|
757
797
|
}, /*#__PURE__*/React.createElement(Text, {
|
|
@@ -842,6 +882,12 @@ class RequestDetail extends Component {
|
|
|
842
882
|
if (this.state.forbidden) {
|
|
843
883
|
return /*#__PURE__*/React.createElement(Components.Forbidden, null);
|
|
844
884
|
}
|
|
885
|
+
if (this.state.loadError) {
|
|
886
|
+
return /*#__PURE__*/React.createElement(Components.Forbidden, {
|
|
887
|
+
title: "Something went wrong",
|
|
888
|
+
description: "Failed to load this request. Please check your connection and try again."
|
|
889
|
+
});
|
|
890
|
+
}
|
|
845
891
|
return /*#__PURE__*/React.createElement(KeyboardAvoidingView, {
|
|
846
892
|
behavior: "padding",
|
|
847
893
|
style: styles.container
|
|
@@ -864,7 +910,8 @@ class RequestDetail extends Component {
|
|
|
864
910
|
onConfirm: this.onDateSelected,
|
|
865
911
|
onCancel: this.onCloseDatePicker,
|
|
866
912
|
mode: this.state.popUpType,
|
|
867
|
-
headerTextIOS: `Pick a ${this.state.popUpType}
|
|
913
|
+
headerTextIOS: `Pick a ${this.state.popUpType}`,
|
|
914
|
+
date: new Date()
|
|
868
915
|
}));
|
|
869
916
|
}
|
|
870
917
|
}
|