@plusscommunities/pluss-maintenance-app 1.1.15 → 1.2.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/actions/JobActions.js +14 -0
- package/dist/module/actions/JobActions.js.map +1 -0
- package/dist/module/actions/index.js +2 -0
- package/dist/module/actions/index.js.map +1 -0
- package/dist/module/actions/types.js +3 -0
- package/dist/module/actions/types.js.map +1 -0
- package/dist/module/apis/generalActions.js +145 -0
- package/dist/module/apis/generalActions.js.map +1 -0
- package/dist/module/apis/index.js +2 -0
- package/dist/module/apis/index.js.map +1 -0
- package/dist/module/components/MaintenanceList.js +240 -0
- package/dist/module/components/MaintenanceList.js.map +1 -0
- package/dist/module/components/MaintenanceListItem.js +282 -0
- package/dist/module/components/MaintenanceListItem.js.map +1 -0
- package/dist/module/components/MaintenanceWidgetItem.js +161 -0
- package/dist/module/components/MaintenanceWidgetItem.js.map +1 -0
- package/dist/module/components/StatusSelectorPopup.js +93 -0
- package/dist/module/components/StatusSelectorPopup.js.map +1 -0
- package/dist/module/components/WidgetLarge.js +12 -0
- package/dist/module/components/WidgetLarge.js.map +1 -0
- package/dist/module/components/WidgetSmall.js +185 -0
- package/dist/module/components/WidgetSmall.js.map +1 -0
- package/dist/module/core.config.js +17 -0
- package/dist/module/core.config.js.map +1 -0
- package/dist/module/feature.config.js +91 -0
- package/dist/module/feature.config.js.map +1 -0
- package/dist/module/helper.js +28 -0
- package/dist/module/helper.js.map +1 -0
- package/dist/module/images/speechbubble.png +0 -0
- package/dist/module/index.js +20 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/reducers/JobsReducer.js +59 -0
- package/dist/module/reducers/JobsReducer.js.map +1 -0
- package/dist/module/screens/JobTypePicker.js +139 -0
- package/dist/module/screens/JobTypePicker.js.map +1 -0
- package/dist/module/screens/MaintenancePage.js +99 -0
- package/dist/module/screens/MaintenancePage.js.map +1 -0
- package/dist/module/screens/RequestDetail.js +839 -0
- package/dist/module/screens/RequestDetail.js.map +1 -0
- package/dist/module/screens/RequestNotes.js +420 -0
- package/dist/module/screens/RequestNotes.js.map +1 -0
- package/dist/module/screens/ServiceRequest.js +803 -0
- package/dist/module/screens/ServiceRequest.js.map +1 -0
- package/package.json +25 -12
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["RequestDetail.js"],"names":["React","Component","ScrollView","View","StyleSheet","Text","KeyboardAvoidingView","TouchableOpacity","ImageBackground","DateTimePicker","Icon","_","moment","connect","generalActions","jobAdded","StatusSelectorPopup","jobStatusOptions","getJobStatusProps","Services","Colours","Helper","Components","Config","RequestDetail","constructor","props","user","job","state","seen","hasPermission","Id","userID","setState","loading","updated","id","status","res","editJob","site","data","error","console","log","expectedDate","utc","toISOString","editJobStatus","navigation","goBack","showStatusPopup","updateJobStatus","navigate","popUpType","isDateTimePickerVisible","date","expectedDateText","format","updateJob","showMore","showMessages","count","getJob","permissions","includes","url","showFullscreenVideo","length","currentVideoUrl","galleryOpen","componentDidMount","updateJobState","componentDidUpdate","prevProps","jobs","find","j","newState","markSeen","openGallery","index","refs","imagePopup","scrollTo","closeGallery","renderLoading","renderTop","statusText","statusColor","canEdit","showSeen","name","getShadowStyle","styles","jobTitleContainer","jobTitleText","title","jobTypeSeenContainer","jobTypeContainer","backgroundColor","hexToRGBAstring","colourBrandingMain","jobTypeText","color","type","jobSeenContainer","jobSeenIcon","jobSeenText","lastActivityUnix","textSectionInner","textSectionLabel","textSectionTextContainer","textSectionText","onOpenDatePicker","textSectionAngleRight","jobStatusExpectedContainer","jobStatusOuterContainer","jobStatusHeading","onOpenStatusPicker","jobStatusContainer","jobStatusIcon","jobStatusText","openStaffNotes","Notes","renderPlayableImageUrl","containerStyle","thumbUrl","getThumb300","isVideo","flex","uri","imagePlayContainer","toggleFullscreenVideo","bind","imageControlIcon","imageUrl","get1400","imageContainer","plusImages","images","renderPlayableImage","renderImage","isNil","isEmpty","sideBySideImages","sideBySideImageContainer","singleImageContainer","image","renderImagePopup","rendeDetails","onToggleDetails","detailsText","detailsSection","description","jobDescriptionText","locationLabel","locationText","room","requesterLabel","profileContainer","userProfilePic","nameContainer","nameText","userName","phone","phoneText","renderMessages","ref","commentSection","commentReply","scrollView","paddingHorizontal","paddingTop","onCommentsLoaded","onCommentAdded","onLeaveMessage","marginTop","height","renderMessagesReply","location","renderStatusPopup","onCloseStatusPopup","onSelectStatus","render","Platform","OS","container","onPressBack","env","strings","MAINTENANCE_REQUEST_DETAILS","paddingBottom","innerContainer","onDateSelected","onCloseDatePicker","create","paddingVertical","fontFamily","fontSize","TEXT_DARKEST","marginBottom","flexDirection","alignItems","width","borderRadius","justifyContent","textAlign","marginLeft","jobStatusDateText","TEXT_LIGHT","borderTopWidth","borderTopColor","LINEGREY","letterSpacing","TEXT_DARK","marginRight","jobExpectedDateContainer","BOXGREY","paddingLeft","jobExpectedDate","overflow","position","top","left","right","bottom","textShadowColor","textShadowOffset","textShadowRadius","lineHeight","mapStateToProps","getMainBrandingColourFromState"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { ScrollView, View, StyleSheet, Text, KeyboardAvoidingView, TouchableOpacity, ImageBackground } from 'react-native';\nimport DateTimePicker from 'react-native-modal-datetime-picker';\nimport { Icon } from 'react-native-elements';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport { connect } from 'react-redux';\nimport { generalActions } from '../apis';\nimport { jobAdded } from '../actions';\nimport StatusSelectorPopup from '../components/StatusSelectorPopup';\nimport { jobStatusOptions, getJobStatusProps } from '../helper';\nimport { Services } from '../feature.config';\nimport { Colours, Helper, Components, Config } from '../core.config';\n\nclass RequestDetail extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n job: {},\n isDateTimePickerVisible: false,\n popUpType: '',\n status: '',\n expectedDate: null,\n expectedDateText: '',\n seen: false,\n showMore: false,\n showStatusPopup: false,\n loading: false,\n showFullscreenVideo: false,\n currentVideoUrl: '',\n galleryOpen: false,\n showMessages: false,\n };\n }\n\n componentDidMount() {\n this.updateJobState();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.jobs !== this.props.jobs) {\n this.updateJobState();\n }\n }\n\n updateJobState() {\n const job = _.find(this.props.jobs, j => j.id === this.props.job.id) || this.props.job;\n const newState = { job, status: job.status };\n if (job.expectedDate) {\n newState.expectedDate = moment(job.expectedDate);\n newState.expectedDateText = newState.expectedDate.format('DD/MM/YYYY');\n }\n if (job.seen) newState.seen = job.seen;\n this.setState(newState, () => {\n this.markSeen();\n });\n }\n\n markSeen = () => {\n const { user } = this.props;\n const { job } = this.state;\n // Must have maintenance permission and not the requester\n // console.log('markSeen check', job.userID, user.Id);\n if (job.seen === true) return;\n if (!this.hasPermission()) return;\n if (user.Id === job.userID) return;\n\n this.setState({ loading: true }, async () => {\n try {\n const updated = { id: job.id, seen: true, status: job.status || 'Unassigned' };\n const res = await generalActions.editJob(updated, user.site);\n // console.log('markSeen updated');\n this.props.jobAdded(res.data.job);\n this.setState({ loading: false, seen: true });\n } catch (error) {\n console.log('markSeen error', error);\n this.setState({ loading: false });\n }\n });\n };\n\n updateJob = () => {\n this.setState({ loading: true }, async () => {\n const { user } = this.props;\n const { job } = this.state;\n try {\n const updated = { id: job.id };\n if (this.state.expectedDate) {\n updated.expectedDate = moment(this.state.expectedDate)\n .utc()\n .toISOString();\n }\n const res = await generalActions.editJob(updated, user.site);\n this.props.jobAdded(res.data.job);\n } catch (error) {\n console.log('updateJob error', error);\n } finally {\n this.setState({ loading: false });\n }\n });\n };\n\n updateJobStatus = () => {\n this.setState({ loading: true }, async () => {\n try {\n const res = await generalActions.editJobStatus(this.props.job.id, this.state.status);\n this.props.jobAdded(res.data.job);\n } catch (error) {\n console.log('updateJobStatus error', error);\n } finally {\n this.setState({ loading: false });\n }\n });\n };\n\n onPressBack = () => {\n Services.navigation.goBack();\n };\n\n onOpenStatusPicker = () => {\n this.setState({ showStatusPopup: true });\n };\n\n onCloseStatusPopup = () => {\n this.setState({ showStatusPopup: false });\n };\n\n onSelectStatus = status => {\n this.setState({ status, showStatusPopup: false }, () => {\n this.updateJobStatus();\n });\n };\n\n openStaffNotes = () => {\n Services.navigation.navigate('requestNotes', { job: this.state.job });\n };\n\n onOpenDatePicker = () => {\n this.setState({ popUpType: 'date', isDateTimePickerVisible: true });\n };\n\n onCloseDatePicker = () => {\n this.setState({ isDateTimePickerVisible: false });\n };\n\n onDateSelected = date => {\n if (this.state.popUpType === 'date') {\n date = moment(date);\n this.setState(\n {\n expectedDate: date,\n expectedDateText: date.format('DD/MM/YYYY'),\n isDateTimePickerVisible: false,\n },\n () => {\n this.updateJob();\n },\n );\n }\n };\n\n onToggleDetails = () => {\n this.setState({ showMore: !this.state.showMore });\n };\n\n onLeaveMessage = () => {\n this.setState({ showMessages: true });\n };\n\n onCommentsLoaded = count => {\n if (count > 0) {\n this.setState({ showMessages: true });\n }\n };\n\n onCommentAdded = () => {\n this.setState({ loading: true }, async () => {\n try {\n const job = await generalActions.getJob(this.props.user.site, this.props.job.id);\n // console.log('onCommentAdded', job?.data);\n this.props.jobAdded(job.data);\n } catch (error) {\n console.log('onCommentAdded error', error);\n } finally {\n this.setState({ loading: false });\n }\n });\n };\n\n hasPermission = () => {\n const { permissions } = this.props.user;\n return _.includes(permissions, 'maintenanceTracking');\n };\n\n toggleFullscreenVideo = url => {\n if (typeof url !== 'string') url = '';\n this.setState({ showFullscreenVideo: url.length > 0, currentVideoUrl: url });\n };\n\n openGallery(index) {\n this.setState({\n galleryOpen: true,\n });\n this.refs.imagePopup.scrollTo(index);\n }\n\n closeGallery() {\n this.setState({\n galleryOpen: false,\n });\n }\n\n renderLoading() {\n return <Components.LoadingIndicator visible={this.state.loading} />;\n }\n\n renderTop() {\n const { status, job } = this.state;\n const { statusText, statusColor } = getJobStatusProps(status);\n const canEdit = this.hasPermission();\n const showSeen = !status || status === jobStatusOptions[0].name;\n\n return (\n <View style={{ ...Helper.getShadowStyle() }}>\n <View style={styles.jobTitleContainer}>\n <Text style={styles.jobTitleText}>{job.title}</Text>\n <View style={styles.jobTypeSeenContainer}>\n <View style={[styles.jobTypeContainer, { backgroundColor: Colours.hexToRGBAstring(this.props.colourBrandingMain, 0.2) }]}>\n <Text style={[styles.jobTypeText, { color: this.props.colourBrandingMain }]}>{job.type}</Text>\n </View>\n {showSeen && this.state.seen && (\n <View style={styles.jobSeenContainer}>\n <Icon name=\"check\" type=\"font-awesome\" iconStyle={[styles.jobSeenIcon, { color: this.props.colourBrandingMain }]} />\n <Text style={[styles.jobSeenText, { color: this.props.colourBrandingMain }]}>Seen</Text>\n </View>\n )}\n </View>\n\n {job.lastActivityUnix && (\n <View style={styles.textSectionInner}>\n <Text style={styles.textSectionLabel}>Last Updated On</Text>\n <View style={styles.textSectionTextContainer}>\n <Text style={styles.textSectionText}>{moment(job.lastActivityUnix).format('ddd D MMMM, h:mm A')}</Text>\n </View>\n </View>\n )}\n <View style={styles.textSectionInner}>\n <Text style={styles.textSectionLabel}>Expected Date</Text>\n <TouchableOpacity onPress={this.onOpenDatePicker}>\n <View style={styles.textSectionTextContainer}>\n <Text style={styles.textSectionText}>{this.state.expectedDateText || 'Select Date'}</Text>\n <Icon\n name=\"angle-right\"\n type=\"font-awesome\"\n iconStyle={[styles.textSectionAngleRight, { color: this.props.colourBrandingMain }]}\n />\n </View>\n </TouchableOpacity>\n </View>\n </View>\n <View style={styles.jobStatusExpectedContainer}>\n <View style={styles.jobStatusOuterContainer}>\n <Text style={styles.jobStatusHeading}>STATUS</Text>\n <TouchableOpacity onPress={canEdit ? this.onOpenStatusPicker : null}>\n <View style={[styles.jobStatusContainer, { backgroundColor: statusColor }]}>\n <Icon name=\"wrench\" type=\"font-awesome\" iconStyle={styles.jobStatusIcon} />\n <Text style={styles.jobStatusText}>{statusText}</Text>\n </View>\n </TouchableOpacity>\n </View>\n {this.hasPermission() && (\n <View style={styles.jobStatusOuterContainer}>\n <Text style={styles.jobStatusHeading}>STAFF NOTES</Text>\n <TouchableOpacity onPress={this.openStaffNotes}>\n <View style={[styles.jobStatusContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"pencil-square-o\" type=\"font-awesome\" iconStyle={styles.jobStatusIcon} />\n <Text style={styles.jobStatusText}>Notes ({(job.Notes || []).length})</Text>\n </View>\n </TouchableOpacity>\n </View>\n )}\n </View>\n </View>\n );\n }\n\n renderPlayableImageUrl(url, index, containerStyle, showMore) {\n const thumbUrl = Helper.getThumb300(url);\n\n if (Helper.isVideo(url)) {\n return (\n <ImageBackground style={[{ flex: 1 }, containerStyle]} source={{ uri: thumbUrl }}>\n <View style={styles.imagePlayContainer}>\n <TouchableOpacity onPress={this.toggleFullscreenVideo.bind(this, url)}>\n <Icon name=\"play\" type=\"font-awesome\" iconStyle={styles.imageControlIcon} />\n </TouchableOpacity>\n </View>\n </ImageBackground>\n );\n }\n\n const imageUrl = Helper.get1400(url);\n return (\n <TouchableOpacity style={containerStyle} onPress={this.openGallery.bind(this, index || 0)}>\n <ImageBackground style={styles.imageContainer} source={{ uri: imageUrl }}>\n {showMore && <Text style={styles.plusImages}>+{this.state.job.images.length - 2}</Text>}\n </ImageBackground>\n </TouchableOpacity>\n );\n }\n\n renderPlayableImage(index, containerStyle, showMore) {\n const url = this.state.job.images[index];\n return this.renderPlayableImageUrl(url, index, containerStyle, showMore);\n }\n\n renderImage() {\n const { job } = this.state;\n if (!_.isNil(job.images) && !_.isEmpty(job.images)) {\n if (job.images.length >= 2) {\n return (\n <View style={styles.sideBySideImages}>\n {this.renderPlayableImage(0, styles.sideBySideImageContainer)}\n {this.renderPlayableImage(1, styles.sideBySideImageContainer, job.images.length > 2)}\n </View>\n );\n } else {\n return <View style={styles.singleImageContainer}>{this.renderPlayableImage(0)}</View>;\n }\n } else if (!_.isNil(job.image)) {\n return <View style={styles.singleImageContainer}>{this.renderPlayableImageUrl(job.image)}</View>;\n }\n return null;\n }\n\n renderImagePopup() {\n return (\n <Components.ImagePopup\n visible={this.state.galleryOpen}\n images={this.state.job.images || [this.state.job.image]}\n onClose={this.closeGallery.bind(this)}\n ref=\"imagePopup\"\n />\n );\n }\n\n rendeDetails() {\n const { job } = this.state;\n\n return (\n <View>\n <Components.FormCardSectionOptionLauncher\n onPress={this.onToggleDetails}\n title=\"Details\"\n icon={this.state.showMore ? 'angle-up' : 'angle-down'}\n textStyle={styles.detailsText}\n sectionStyle={styles.detailsSection}\n />\n {this.state.showMore && (\n <View>\n {this.renderImage()}\n {!_.isEmpty(job.description) && (\n <Text numberOfLines={10} style={styles.jobDescriptionText}>\n {job.description}\n </Text>\n )}\n <Text style={styles.locationLabel}>Location</Text>\n <Text style={styles.locationText}>{job.room}</Text>\n <Text style={styles.requesterLabel}>Person Requesting</Text>\n <View style={styles.profileContainer}>\n <Components.ProfilePic ProfilePic={job.userProfilePic} Diameter={40} />\n <View style={styles.nameContainer}>\n <Text style={styles.nameText}>{job.userName}</Text>\n {!_.isEmpty(job.phone) && <Text style={styles.phoneText}>{job.phone}</Text>}\n </View>\n </View>\n </View>\n )}\n </View>\n );\n }\n\n renderMessages() {\n return (\n <View>\n <Components.CommentSection\n ref={ref => {\n this.commentSection = ref;\n }}\n commentReply={this.commentReply}\n scrollView={this.scrollView}\n adminPermission=\"maintenanceTracking\"\n entityType=\"maintenancerequest\"\n entityId={this.props.job.id}\n entityName={this.props.job.title}\n live\n refreshFrequency={10000}\n placeHolder={''}\n style={{ flex: 1, paddingHorizontal: 0, paddingTop: 16 }}\n onCommentsLoaded={this.onCommentsLoaded}\n onCommentAdded={this.onCommentAdded}\n hideAddComment\n disableFlag\n />\n {!this.state.showMessages && (\n <Components.InlineButton\n onPress={this.onLeaveMessage}\n color={this.props.colourBrandingMain}\n touchableStyle={{ marginTop: 10 }}\n style={{ height: 36 }}\n textStyle={{ color: '#fff' }}\n fullWidth\n >\n Leave Message\n </Components.InlineButton>\n )}\n </View>\n );\n }\n\n renderMessagesReply() {\n if (!this.state.showMessages) return null;\n\n return (\n <Components.CommentReply\n ref={ref => {\n this.commentReply = ref;\n }}\n commentSection={this.commentSection}\n scrollView={this.scrollView}\n entityType=\"maintenancerequest\"\n entityId={this.props.job.id}\n entityName={this.props.job.title}\n site={this.state.job.site || this.state.job.location}\n // noScroll={true}\n // style={{ position: 'absolute', bottom: 0, left: 0, right: 0 }}\n />\n );\n }\n\n renderStatusPopup() {\n if (!this.state.showStatusPopup) return null;\n return <StatusSelectorPopup onClose={this.onCloseStatusPopup} onSelect={this.onSelectStatus} />;\n }\n\n render() {\n return (\n <KeyboardAvoidingView behavior={Platform.OS === 'ios' && 'padding'} style={styles.container}>\n <Components.Header leftIcon=\"angle-left\" onPressLeft={this.onPressBack} text={Config.env.strings.MAINTENANCE_REQUEST_DETAILS} />\n {this.renderLoading()}\n <ScrollView\n ref={ref => {\n this.scrollView = ref;\n }}\n contentContainerStyle={{ paddingBottom: 26 }}\n style={{ height: '100%' }}\n >\n <View style={styles.innerContainer}>\n {this.renderTop()}\n {this.rendeDetails()}\n {this.renderMessages()}\n </View>\n </ScrollView>\n {this.renderMessagesReply()}\n {this.renderStatusPopup()}\n {this.renderImagePopup()}\n <DateTimePicker\n isVisible={this.state.isDateTimePickerVisible}\n onConfirm={this.onDateSelected}\n onCancel={this.onCloseDatePicker}\n mode={this.state.popUpType}\n headerTextIOS={`Pick a ${this.state.popUpType}`}\n />\n </KeyboardAvoidingView>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#fff',\n },\n innerContainer: {\n paddingTop: 23,\n paddingHorizontal: 16,\n },\n jobTitleContainer: {\n paddingVertical: 14,\n paddingHorizontal: 12,\n },\n jobTitleText: {\n fontFamily: 'sf-semibold',\n fontSize: 20,\n color: Colours.TEXT_DARKEST,\n marginBottom: 8,\n },\n jobTypeSeenContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n jobTypeContainer: {\n height: 20,\n width: 80,\n borderRadius: 4,\n justifyContent: 'center',\n },\n jobTypeText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n textAlign: 'center',\n },\n jobSeenContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n marginLeft: 10,\n },\n jobSeenIcon: {\n fontSize: 12,\n },\n jobSeenText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n marginLeft: 4,\n },\n jobStatusDateText: {\n marginTop: 8,\n fontFamily: 'sf-medium',\n fontSize: 13,\n color: Colours.TEXT_LIGHT,\n },\n jobStatusExpectedContainer: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n borderTopWidth: 1,\n borderTopColor: Colours.LINEGREY,\n paddingVertical: 14,\n paddingHorizontal: 12,\n },\n jobStatusOuterContainer: {\n // marginRight: 50,\n },\n jobStatusHeading: {\n fontFamily: 'sf-bold',\n fontSize: 11,\n letterSpacing: 0.8,\n color: Colours.TEXT_DARK,\n marginBottom: 6,\n },\n jobStatusContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n width: 120,\n height: 30,\n paddingHorizontal: 8,\n borderRadius: 4,\n },\n jobStatusIcon: {\n color: '#fff',\n fontSize: 14,\n marginRight: 8,\n },\n jobStatusText: {\n color: '#fff',\n textAlign: 'center',\n fontFamily: 'sf-semibold',\n fontSize: 13,\n flex: 1,\n textAlign: 'center',\n },\n jobExpectedDateContainer: {\n backgroundColor: Colours.BOXGREY,\n flexDirection: 'row',\n width: 115,\n height: 30,\n borderRadius: 4,\n alignItems: 'center',\n paddingLeft: 8,\n },\n jobExpectedDate: {\n fontFamily: 'sf-regular',\n fontSize: 13,\n color: Colours.hexToRGBAstring(Colours.TEXT_DARKEST, 0.5),\n },\n detailsText: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n color: Colours.TEXT_DARKEST,\n },\n detailsSection: {\n marginTop: 8,\n paddingHorizontal: 0,\n paddingBottom: 12,\n },\n sideBySideImages: {\n flex: 1,\n flexDirection: 'row',\n justifyContent: 'space-between',\n marginBottom: 16,\n },\n sideBySideImageContainer: {\n backgroundColor: '#fff',\n width: '48%',\n height: 150,\n borderRadius: 2,\n overflow: 'hidden',\n },\n singleImageContainer: {\n backgroundColor: '#fff',\n width: '100%',\n height: 150,\n flex: 1,\n borderRadius: 2,\n overflow: 'hidden',\n marginBottom: 16,\n },\n imageContainer: {\n height: 150,\n width: 'auto',\n justifyContent: 'center',\n },\n imagePlayContainer: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: 'center',\n justifyContent: 'center',\n },\n imageControlIcon: {\n color: '#fff',\n fontSize: 30,\n textShadowColor: 'rgba(0,0,0,0.3)',\n textShadowOffset: { width: 2, height: 2 },\n },\n plusImages: {\n fontFamily: 'sf-bold',\n fontSize: 32,\n textAlign: 'center',\n color: '#fff',\n textShadowColor: 'rgba(0, 0, 0, 0.5)',\n textShadowOffset: { width: 0, height: 2 },\n textShadowRadius: 8,\n },\n jobDescriptionText: {\n fontFamily: 'sf-medium',\n fontSize: 14,\n color: Colours.TEXT_LIGHT,\n paddingBottom: 16,\n },\n locationLabel: {\n fontFamily: 'sf-bold',\n fontSize: 14,\n color: Colours.TEXT_DARKEST,\n },\n locationText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n color: Colours.TEXT_DARKEST,\n paddingVertical: 8,\n },\n requesterLabel: {\n fontFamily: 'sf-bold',\n fontSize: 14,\n color: Colours.TEXT_DARKEST,\n paddingVertical: 10,\n },\n profileContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n nameContainer: {\n marginLeft: 18,\n },\n nameText: {\n fontSize: 'sf-semibold',\n fontSize: 14,\n color: Colours.TEXT_DARKEST,\n marginBottom: 4,\n },\n phoneText: {\n fontSize: 'sf-medium',\n fontSize: 14,\n color: Colours.TEXT_LIGHT,\n },\n textSectionInner: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginTop: 8,\n },\n textSectionLabel: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n lineHeight: 24,\n color: Colours.TEXT_DARKEST,\n },\n textSectionTextContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n textSectionText: {\n fontFamily: 'sf-regular',\n fontSize: 13,\n lineHeight: 24,\n color: Colours.TEXT_LIGHT,\n },\n textSectionAngleRight: {\n fontSize: 24,\n marginLeft: 10,\n lineHeight: 24,\n },\n});\n\nconst mapStateToProps = state => {\n return {\n user: state.user,\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n jobs: state.jobs.jobs,\n };\n};\n\nexport default connect(mapStateToProps, { jobAdded })(RequestDetail);\n"]}
|
@@ -0,0 +1,420 @@
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
2
|
+
|
3
|
+
import React, { Component } from 'react';
|
4
|
+
import { ScrollView, View, Text, TouchableOpacity, Modal, KeyboardAvoidingView } from 'react-native';
|
5
|
+
import { connect } from 'react-redux';
|
6
|
+
import { Icon } from 'react-native-elements';
|
7
|
+
import _ from 'lodash';
|
8
|
+
import moment from 'moment';
|
9
|
+
import { jobAdded } from '../actions';
|
10
|
+
import { generalActions } from '../apis';
|
11
|
+
import { getBottomSpace } from 'react-native-iphone-x-helper';
|
12
|
+
import { Services } from '../feature.config';
|
13
|
+
import { Components, Colours, Helper } from '../core.config';
|
14
|
+
|
15
|
+
class RequestNotes extends Component {
|
16
|
+
constructor(props) {
|
17
|
+
super(props);
|
18
|
+
|
19
|
+
_defineProperty(this, "onPressBack", () => {
|
20
|
+
Services.navigation.goBack();
|
21
|
+
});
|
22
|
+
|
23
|
+
_defineProperty(this, "onOpenAttachment", a => {
|
24
|
+
this.setState({
|
25
|
+
selectedPDF: a
|
26
|
+
});
|
27
|
+
});
|
28
|
+
|
29
|
+
_defineProperty(this, "onCloseAttachment", () => {
|
30
|
+
this.setState({
|
31
|
+
selectedPDF: null
|
32
|
+
});
|
33
|
+
});
|
34
|
+
|
35
|
+
_defineProperty(this, "onPressDeleteNote", n => {
|
36
|
+
this.setState({
|
37
|
+
noteToDelete: n
|
38
|
+
});
|
39
|
+
});
|
40
|
+
|
41
|
+
_defineProperty(this, "onPressConfirmDelete", () => {
|
42
|
+
generalActions.deleteNote(this.props.job.id, this.state.noteToDelete.Id);
|
43
|
+
|
44
|
+
const newNotes = _.filter(this.state.job.Notes, note => {
|
45
|
+
return note.Id !== this.state.noteToDelete.Id;
|
46
|
+
});
|
47
|
+
|
48
|
+
const newJob = { ...this.props.job
|
49
|
+
};
|
50
|
+
newJob.Notes = newNotes;
|
51
|
+
this.props.jobAdded(newJob);
|
52
|
+
this.setState({
|
53
|
+
job: newJob,
|
54
|
+
noteToDelete: null
|
55
|
+
});
|
56
|
+
});
|
57
|
+
|
58
|
+
_defineProperty(this, "onPressCancelDelete", () => {
|
59
|
+
this.setState({
|
60
|
+
noteToDelete: null
|
61
|
+
});
|
62
|
+
});
|
63
|
+
|
64
|
+
_defineProperty(this, "isReadyToSaveNote", () => {
|
65
|
+
if (_.some(this.state.noteAttachments, n => {
|
66
|
+
return n.Uploading;
|
67
|
+
})) {
|
68
|
+
return false;
|
69
|
+
}
|
70
|
+
|
71
|
+
return !_.isEmpty(this.state.noteInput) || !_.isEmpty(this.state.noteAttachments);
|
72
|
+
});
|
73
|
+
|
74
|
+
_defineProperty(this, "openAddNote", () => {
|
75
|
+
this.setState({
|
76
|
+
addNoteOpen: true,
|
77
|
+
editingNote: null
|
78
|
+
});
|
79
|
+
});
|
80
|
+
|
81
|
+
_defineProperty(this, "closeAddNote", () => {
|
82
|
+
const newState = {
|
83
|
+
addNoteOpen: false,
|
84
|
+
editingNote: null
|
85
|
+
};
|
86
|
+
|
87
|
+
if (!!this.state.editingNote) {
|
88
|
+
newState.noteInput = '';
|
89
|
+
newState.noteAttachments = [];
|
90
|
+
}
|
91
|
+
|
92
|
+
this.setState(newState);
|
93
|
+
});
|
94
|
+
|
95
|
+
_defineProperty(this, "openEditNote", n => {
|
96
|
+
this.setState({
|
97
|
+
noteAttachments: n.Attachments || [],
|
98
|
+
noteInput: n.Note || '',
|
99
|
+
addNoteOpen: true,
|
100
|
+
editingNote: n.Id,
|
101
|
+
noteMenuOpen: null
|
102
|
+
});
|
103
|
+
});
|
104
|
+
|
105
|
+
_defineProperty(this, "confirmAddNote", async () => {
|
106
|
+
if (!this.isReadyToSaveNote()) {
|
107
|
+
return;
|
108
|
+
}
|
109
|
+
|
110
|
+
try {
|
111
|
+
this.setState({
|
112
|
+
submittingNote: true
|
113
|
+
});
|
114
|
+
const res = await (this.state.editingNote ? generalActions.editNote(this.props.job.id, this.state.editingNote, this.state.noteInput, this.state.noteAttachments.map(a => {
|
115
|
+
return {
|
116
|
+
Title: a.Title,
|
117
|
+
Source: a.Source
|
118
|
+
};
|
119
|
+
})) : generalActions.addNote(this.props.job.id, this.state.noteInput, this.state.noteAttachments.map(a => {
|
120
|
+
return {
|
121
|
+
Title: a.Title,
|
122
|
+
Source: a.Source
|
123
|
+
};
|
124
|
+
})));
|
125
|
+
this.setState({
|
126
|
+
job: res.data.job,
|
127
|
+
submittingNote: false,
|
128
|
+
addNoteOpen: false,
|
129
|
+
noteInput: '',
|
130
|
+
noteAttachments: [],
|
131
|
+
editingNote: null
|
132
|
+
}, () => {
|
133
|
+
this.props.jobAdded(res.data.job);
|
134
|
+
});
|
135
|
+
} catch (err) {
|
136
|
+
console.log('error');
|
137
|
+
console.log(err);
|
138
|
+
this.setState({
|
139
|
+
submittingNote: false
|
140
|
+
});
|
141
|
+
}
|
142
|
+
});
|
143
|
+
|
144
|
+
this.state = {
|
145
|
+
job: {},
|
146
|
+
selectedPDF: null,
|
147
|
+
noteAttachments: [],
|
148
|
+
noteInput: '',
|
149
|
+
addNoteOpen: false
|
150
|
+
};
|
151
|
+
}
|
152
|
+
|
153
|
+
componentDidMount() {
|
154
|
+
this.updateJobState();
|
155
|
+
}
|
156
|
+
|
157
|
+
componentDidUpdate(prevProps) {
|
158
|
+
if (prevProps.jobs !== this.props.jobs) {
|
159
|
+
this.updateJobState();
|
160
|
+
}
|
161
|
+
}
|
162
|
+
|
163
|
+
updateJobState() {
|
164
|
+
const job = _.find(this.props.jobs, j => j.id === this.props.job.id) || this.props.job;
|
165
|
+
this.setState({
|
166
|
+
job
|
167
|
+
});
|
168
|
+
}
|
169
|
+
|
170
|
+
renderAttachment(a, i) {
|
171
|
+
return /*#__PURE__*/React.createElement(Components.Attachment, {
|
172
|
+
onPress: () => {
|
173
|
+
this.onOpenAttachment(a);
|
174
|
+
},
|
175
|
+
key: i,
|
176
|
+
title: a.Title
|
177
|
+
});
|
178
|
+
}
|
179
|
+
|
180
|
+
renderNote(n) {
|
181
|
+
return /*#__PURE__*/React.createElement(View, {
|
182
|
+
style: styles.noteContainer,
|
183
|
+
key: n.Id
|
184
|
+
}, /*#__PURE__*/React.createElement(View, {
|
185
|
+
style: styles.noteContainerTop
|
186
|
+
}, /*#__PURE__*/React.createElement(Components.ProfilePic, {
|
187
|
+
Diameter: 30,
|
188
|
+
ProfilePic: n.User.profilePic,
|
189
|
+
style: styles.profilePic
|
190
|
+
}), /*#__PURE__*/React.createElement(View, {
|
191
|
+
style: styles.noteContainerTopRight
|
192
|
+
}, this.props.user.uid === n.User.id && /*#__PURE__*/React.createElement(TouchableOpacity, {
|
193
|
+
onPress: () => {
|
194
|
+
this.onPressDeleteNote(n);
|
195
|
+
}
|
196
|
+
}, /*#__PURE__*/React.createElement(View, {
|
197
|
+
style: [styles.noteContainerButtonContainer, {
|
198
|
+
backgroundColor: this.props.colourBrandingMain
|
199
|
+
}]
|
200
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
201
|
+
name: "trash",
|
202
|
+
type: "font-awesome",
|
203
|
+
iconStyle: styles.noteContainerButtonIcon
|
204
|
+
}))), this.props.user.uid === n.User.id && /*#__PURE__*/React.createElement(TouchableOpacity, {
|
205
|
+
onPress: () => {
|
206
|
+
this.openEditNote(n);
|
207
|
+
}
|
208
|
+
}, /*#__PURE__*/React.createElement(View, {
|
209
|
+
style: [styles.noteContainerButtonContainer, {
|
210
|
+
backgroundColor: this.props.colourBrandingMain
|
211
|
+
}]
|
212
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
213
|
+
name: "pencil",
|
214
|
+
type: "font-awesome",
|
215
|
+
iconStyle: styles.noteContainerButtonIcon
|
216
|
+
}))), /*#__PURE__*/React.createElement(View, {
|
217
|
+
style: styles.noteContainerTopFill
|
218
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
219
|
+
style: styles.noteContainerName
|
220
|
+
}, n.User.displayName)))), /*#__PURE__*/React.createElement(Text, {
|
221
|
+
style: styles.noteContainerText
|
222
|
+
}, n.Note), (n.Attachments || []).map((a, i) => this.renderAttachment(a, i)), /*#__PURE__*/React.createElement(Text, {
|
223
|
+
style: styles.noteTimestamp
|
224
|
+
}, moment.utc(n.Timestamp).local().format(Helper.TIMESTAMP_FORMAT)));
|
225
|
+
}
|
226
|
+
|
227
|
+
renderNotes() {
|
228
|
+
return (this.state.job.Notes || []).map((n, i) => {
|
229
|
+
return this.renderNote(n, i);
|
230
|
+
});
|
231
|
+
}
|
232
|
+
|
233
|
+
renderPDF() {
|
234
|
+
if (_.isEmpty(this.state.selectedPDF)) {
|
235
|
+
return null;
|
236
|
+
}
|
237
|
+
|
238
|
+
return /*#__PURE__*/React.createElement(Components.PDFPopup, {
|
239
|
+
source: this.state.selectedPDF.Source,
|
240
|
+
onClose: this.onCloseAttachment,
|
241
|
+
title: this.state.selectedPDF.Title,
|
242
|
+
pdfCount: 1
|
243
|
+
});
|
244
|
+
}
|
245
|
+
|
246
|
+
renderNoteDeleteConfirm() {
|
247
|
+
return /*#__PURE__*/React.createElement(Components.ConfirmPopup, {
|
248
|
+
visible: !!this.state.noteToDelete,
|
249
|
+
onConfirm: this.onPressConfirmDelete,
|
250
|
+
onCancel: this.onPressCancelDelete,
|
251
|
+
onClose: this.onPressCancelDelete,
|
252
|
+
text: "Are you sure you want to delete this note?"
|
253
|
+
});
|
254
|
+
}
|
255
|
+
|
256
|
+
renderFooterContent() {
|
257
|
+
if (this.state.submittingNote) {
|
258
|
+
return /*#__PURE__*/React.createElement(Components.Spinner, null);
|
259
|
+
}
|
260
|
+
|
261
|
+
return /*#__PURE__*/React.createElement(Components.InlineButton, {
|
262
|
+
color: this.props.colourBrandingMain,
|
263
|
+
onPress: this.confirmAddNote,
|
264
|
+
fillTouchable: true,
|
265
|
+
large: true
|
266
|
+
}, "Save");
|
267
|
+
}
|
268
|
+
|
269
|
+
renderAdd() {
|
270
|
+
return /*#__PURE__*/React.createElement(Modal, {
|
271
|
+
animationType: "slide",
|
272
|
+
visible: this.state.addNoteOpen
|
273
|
+
}, /*#__PURE__*/React.createElement(KeyboardAvoidingView, {
|
274
|
+
style: styles.container,
|
275
|
+
behavior: Platform.OS === 'ios' && 'padding'
|
276
|
+
}, /*#__PURE__*/React.createElement(Components.Header, {
|
277
|
+
leftText: "Cancel",
|
278
|
+
onPressLeft: this.closeAddNote,
|
279
|
+
text: ""
|
280
|
+
}), /*#__PURE__*/React.createElement(ScrollView, {
|
281
|
+
style: styles.scrollContainer,
|
282
|
+
contentContainerStyle: styles.innerContainer
|
283
|
+
}, /*#__PURE__*/React.createElement(Components.TextStyle, {
|
284
|
+
type: "pageHeading"
|
285
|
+
}, "Add Staff Note"), /*#__PURE__*/React.createElement(Components.GenericInputSection, {
|
286
|
+
label: "Content",
|
287
|
+
placeholder: "Insert your notes here...",
|
288
|
+
value: this.state.noteInput,
|
289
|
+
onChangeText: noteInput => this.setState({
|
290
|
+
noteInput
|
291
|
+
}),
|
292
|
+
isValid: () => {
|
293
|
+
return !_.isEmpty(this.state.noteInput);
|
294
|
+
},
|
295
|
+
autoCapitalize: "sentences",
|
296
|
+
minHeight: 135,
|
297
|
+
autoCorrect: true,
|
298
|
+
multiline: true,
|
299
|
+
autoGrow: true,
|
300
|
+
required: true,
|
301
|
+
squaredCorners: true,
|
302
|
+
sectionStyle: styles.inputSection
|
303
|
+
}), /*#__PURE__*/React.createElement(Components.GenericInputSection, {
|
304
|
+
label: "Attachments",
|
305
|
+
sectionStyle: styles.inputSection
|
306
|
+
}, this.state.editingNote ? (this.state.noteAttachments || []).map((a, i) => this.renderAttachment(a, i)) : /*#__PURE__*/React.createElement(Components.TextStyle, {
|
307
|
+
type: "body",
|
308
|
+
style: styles.attachmentInfo
|
309
|
+
}, "PDFs can only be attached to notes from the Community Manager."))), /*#__PURE__*/React.createElement(View, {
|
310
|
+
style: styles.popupFooter
|
311
|
+
}, this.renderFooterContent())));
|
312
|
+
}
|
313
|
+
|
314
|
+
render() {
|
315
|
+
return /*#__PURE__*/React.createElement(View, {
|
316
|
+
style: styles.container
|
317
|
+
}, this.renderPDF(), this.renderNoteDeleteConfirm(), this.renderAdd(), /*#__PURE__*/React.createElement(Components.Header, {
|
318
|
+
leftIcon: "angle-left",
|
319
|
+
onPressLeft: this.onPressBack,
|
320
|
+
text: "Staff Notes"
|
321
|
+
}), /*#__PURE__*/React.createElement(ScrollView, {
|
322
|
+
style: styles.scrollContainer,
|
323
|
+
contentContainerStyle: styles.innerContainer
|
324
|
+
}, this.renderNotes()), /*#__PURE__*/React.createElement(Components.AddButton, {
|
325
|
+
onPress: this.openAddNote
|
326
|
+
}));
|
327
|
+
}
|
328
|
+
|
329
|
+
}
|
330
|
+
|
331
|
+
const styles = {
|
332
|
+
container: {
|
333
|
+
flex: 1,
|
334
|
+
position: 'relative',
|
335
|
+
backgroundColor: '#fff'
|
336
|
+
},
|
337
|
+
scrollContainer: {
|
338
|
+
flex: 1
|
339
|
+
},
|
340
|
+
innerContainer: {
|
341
|
+
padding: 16
|
342
|
+
},
|
343
|
+
popupFooter: {
|
344
|
+
paddingHorizontal: 16,
|
345
|
+
paddingBottom: getBottomSpace() + 16
|
346
|
+
},
|
347
|
+
noteContainer: { ...Helper.getShadowStyle(),
|
348
|
+
padding: 8,
|
349
|
+
marginBottom: 16
|
350
|
+
},
|
351
|
+
noteContainerTop: {
|
352
|
+
flexDirection: 'row',
|
353
|
+
alignItems: 'center'
|
354
|
+
},
|
355
|
+
profilePic: {
|
356
|
+
marginRight: 8
|
357
|
+
},
|
358
|
+
noteContainerTopFill: {
|
359
|
+
flex: 1
|
360
|
+
},
|
361
|
+
noteContainerName: {
|
362
|
+
fontFamily: 'sf-semibold',
|
363
|
+
fontSize: 13,
|
364
|
+
color: Colours.TEXT_DARKEST
|
365
|
+
},
|
366
|
+
noteContainerText: {
|
367
|
+
marginTop: 8,
|
368
|
+
fontFamily: 'sf-regular',
|
369
|
+
fontSize: 13,
|
370
|
+
color: Colours.TEXT_DARKEST
|
371
|
+
},
|
372
|
+
noteTimestamp: {
|
373
|
+
marginTop: 8,
|
374
|
+
fontFamily: 'sf-semibold',
|
375
|
+
fontSize: 11,
|
376
|
+
color: Colours.TEXT_LIGHT
|
377
|
+
},
|
378
|
+
noteContainerTopRight: {
|
379
|
+
flex: 1,
|
380
|
+
flexDirection: 'row-reverse',
|
381
|
+
alignItems: 'center'
|
382
|
+
},
|
383
|
+
noteContainerButtonContainer: {
|
384
|
+
width: 24,
|
385
|
+
height: 24,
|
386
|
+
borderRadius: 12,
|
387
|
+
alignItems: 'center',
|
388
|
+
justifyContent: 'center',
|
389
|
+
marginLeft: 8
|
390
|
+
},
|
391
|
+
noteContainerButtonIcon: {
|
392
|
+
fontSize: 13,
|
393
|
+
color: '#fff'
|
394
|
+
},
|
395
|
+
inputSection: {
|
396
|
+
marginTop: 24
|
397
|
+
},
|
398
|
+
sectionHeading: {
|
399
|
+
fontFamily: 'qs-bold',
|
400
|
+
fontSize: 24,
|
401
|
+
color: Colours.TEXT_DARKEST
|
402
|
+
},
|
403
|
+
attachmentInfo: {
|
404
|
+
marginTop: 8
|
405
|
+
}
|
406
|
+
};
|
407
|
+
|
408
|
+
const mapStateToProps = state => {
|
409
|
+
return {
|
410
|
+
user: state.user,
|
411
|
+
colourBrandingMain: Colours.getMainBrandingColourFromState(state),
|
412
|
+
colourBrandingLight: Colours.getLightBrandingColourFromState(state),
|
413
|
+
jobs: state.jobs.jobs
|
414
|
+
};
|
415
|
+
};
|
416
|
+
|
417
|
+
export default connect(mapStateToProps, {
|
418
|
+
jobAdded
|
419
|
+
})(RequestNotes);
|
420
|
+
//# sourceMappingURL=RequestNotes.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["RequestNotes.js"],"names":["React","Component","ScrollView","View","Text","TouchableOpacity","Modal","KeyboardAvoidingView","connect","Icon","_","moment","jobAdded","generalActions","getBottomSpace","Services","Components","Colours","Helper","RequestNotes","constructor","props","navigation","goBack","a","setState","selectedPDF","n","noteToDelete","deleteNote","job","id","state","Id","newNotes","filter","Notes","note","newJob","some","noteAttachments","Uploading","isEmpty","noteInput","addNoteOpen","editingNote","newState","Attachments","Note","noteMenuOpen","isReadyToSaveNote","submittingNote","res","editNote","map","Title","Source","addNote","data","err","console","log","componentDidMount","updateJobState","componentDidUpdate","prevProps","jobs","find","j","renderAttachment","i","onOpenAttachment","renderNote","styles","noteContainer","noteContainerTop","User","profilePic","noteContainerTopRight","user","uid","onPressDeleteNote","noteContainerButtonContainer","backgroundColor","colourBrandingMain","noteContainerButtonIcon","openEditNote","noteContainerTopFill","noteContainerName","displayName","noteContainerText","noteTimestamp","utc","Timestamp","local","format","TIMESTAMP_FORMAT","renderNotes","renderPDF","onCloseAttachment","renderNoteDeleteConfirm","onPressConfirmDelete","onPressCancelDelete","renderFooterContent","confirmAddNote","renderAdd","container","Platform","OS","closeAddNote","scrollContainer","innerContainer","inputSection","attachmentInfo","popupFooter","render","onPressBack","openAddNote","flex","position","padding","paddingHorizontal","paddingBottom","getShadowStyle","marginBottom","flexDirection","alignItems","marginRight","fontFamily","fontSize","color","TEXT_DARKEST","marginTop","TEXT_LIGHT","width","height","borderRadius","justifyContent","marginLeft","sectionHeading","mapStateToProps","getMainBrandingColourFromState","colourBrandingLight","getLightBrandingColourFromState"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { ScrollView, View, Text, TouchableOpacity, Modal, KeyboardAvoidingView } from 'react-native';\nimport { connect } from 'react-redux';\nimport { Icon } from 'react-native-elements';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport { jobAdded } from '../actions';\nimport { generalActions } from '../apis';\nimport { getBottomSpace } from 'react-native-iphone-x-helper';\nimport { Services } from '../feature.config';\nimport { Components, Colours, Helper } from '../core.config';\n\nclass RequestNotes extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n job: {},\n selectedPDF: null,\n noteAttachments: [],\n noteInput: '',\n addNoteOpen: false,\n };\n }\n\n componentDidMount() {\n this.updateJobState();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.jobs !== this.props.jobs) {\n this.updateJobState();\n }\n }\n\n updateJobState() {\n const job = _.find(this.props.jobs, j => j.id === this.props.job.id) || this.props.job;\n this.setState({ job });\n }\n\n onPressBack = () => {\n Services.navigation.goBack();\n };\n\n onOpenAttachment = a => {\n this.setState({\n selectedPDF: a,\n });\n };\n\n onCloseAttachment = () => {\n this.setState({\n selectedPDF: null,\n });\n };\n\n onPressDeleteNote = n => {\n this.setState({\n noteToDelete: n,\n });\n };\n\n onPressConfirmDelete = () => {\n generalActions.deleteNote(this.props.job.id, this.state.noteToDelete.Id);\n const newNotes = _.filter(this.state.job.Notes, note => {\n return note.Id !== this.state.noteToDelete.Id;\n });\n const newJob = { ...this.props.job };\n newJob.Notes = newNotes;\n this.props.jobAdded(newJob);\n this.setState({\n job: newJob,\n noteToDelete: null,\n });\n };\n\n onPressCancelDelete = () => {\n this.setState({ noteToDelete: null });\n };\n\n isReadyToSaveNote = () => {\n if (\n _.some(this.state.noteAttachments, n => {\n return n.Uploading;\n })\n ) {\n return false;\n }\n return !_.isEmpty(this.state.noteInput) || !_.isEmpty(this.state.noteAttachments);\n };\n\n openAddNote = () => {\n this.setState({\n addNoteOpen: true,\n editingNote: null,\n });\n };\n\n closeAddNote = () => {\n const newState = {\n addNoteOpen: false,\n editingNote: null,\n };\n if (!!this.state.editingNote) {\n newState.noteInput = '';\n newState.noteAttachments = [];\n }\n this.setState(newState);\n };\n\n openEditNote = n => {\n this.setState({\n noteAttachments: n.Attachments || [],\n noteInput: n.Note || '',\n addNoteOpen: true,\n editingNote: n.Id,\n noteMenuOpen: null,\n });\n };\n\n confirmAddNote = async () => {\n if (!this.isReadyToSaveNote()) {\n return;\n }\n\n try {\n this.setState({ submittingNote: true });\n const res = await (this.state.editingNote\n ? generalActions.editNote(\n this.props.job.id,\n this.state.editingNote,\n this.state.noteInput,\n this.state.noteAttachments.map(a => {\n return {\n Title: a.Title,\n Source: a.Source,\n };\n }),\n )\n : generalActions.addNote(\n this.props.job.id,\n this.state.noteInput,\n this.state.noteAttachments.map(a => {\n return {\n Title: a.Title,\n Source: a.Source,\n };\n }),\n ));\n this.setState(\n {\n job: res.data.job,\n submittingNote: false,\n addNoteOpen: false,\n noteInput: '',\n noteAttachments: [],\n editingNote: null,\n },\n () => {\n this.props.jobAdded(res.data.job);\n },\n );\n } catch (err) {\n console.log('error');\n console.log(err);\n this.setState({\n submittingNote: false,\n });\n }\n };\n\n renderAttachment(a, i) {\n return (\n <Components.Attachment\n onPress={() => {\n this.onOpenAttachment(a);\n }}\n key={i}\n title={a.Title}\n />\n );\n }\n\n renderNote(n) {\n return (\n <View style={styles.noteContainer} key={n.Id}>\n <View style={styles.noteContainerTop}>\n <Components.ProfilePic Diameter={30} ProfilePic={n.User.profilePic} style={styles.profilePic} />\n <View style={styles.noteContainerTopRight}>\n {this.props.user.uid === n.User.id && (\n <TouchableOpacity\n onPress={() => {\n this.onPressDeleteNote(n);\n }}\n >\n <View style={[styles.noteContainerButtonContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"trash\" type=\"font-awesome\" iconStyle={styles.noteContainerButtonIcon} />\n </View>\n </TouchableOpacity>\n )}\n {this.props.user.uid === n.User.id && (\n <TouchableOpacity\n onPress={() => {\n this.openEditNote(n);\n }}\n >\n <View style={[styles.noteContainerButtonContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"pencil\" type=\"font-awesome\" iconStyle={styles.noteContainerButtonIcon} />\n </View>\n </TouchableOpacity>\n )}\n <View style={styles.noteContainerTopFill}>\n <Text style={styles.noteContainerName}>{n.User.displayName}</Text>\n </View>\n </View>\n </View>\n <Text style={styles.noteContainerText}>{n.Note}</Text>\n {(n.Attachments || []).map((a, i) => this.renderAttachment(a, i))}\n <Text style={styles.noteTimestamp}>\n {moment\n .utc(n.Timestamp)\n .local()\n .format(Helper.TIMESTAMP_FORMAT)}\n </Text>\n </View>\n );\n }\n\n renderNotes() {\n return (this.state.job.Notes || []).map((n, i) => {\n return this.renderNote(n, i);\n });\n }\n\n renderPDF() {\n if (_.isEmpty(this.state.selectedPDF)) {\n return null;\n }\n return (\n <Components.PDFPopup\n source={this.state.selectedPDF.Source}\n onClose={this.onCloseAttachment}\n title={this.state.selectedPDF.Title}\n pdfCount={1}\n />\n );\n }\n\n renderNoteDeleteConfirm() {\n return (\n <Components.ConfirmPopup\n visible={!!this.state.noteToDelete}\n onConfirm={this.onPressConfirmDelete}\n onCancel={this.onPressCancelDelete}\n onClose={this.onPressCancelDelete}\n text=\"Are you sure you want to delete this note?\"\n />\n );\n }\n\n renderFooterContent() {\n if (this.state.submittingNote) {\n return <Components.Spinner />;\n }\n return (\n <Components.InlineButton color={this.props.colourBrandingMain} onPress={this.confirmAddNote} fillTouchable large>\n Save\n </Components.InlineButton>\n );\n }\n\n renderAdd() {\n return (\n <Modal animationType=\"slide\" visible={this.state.addNoteOpen}>\n <KeyboardAvoidingView style={styles.container} behavior={Platform.OS === 'ios' && 'padding'}>\n <Components.Header leftText=\"Cancel\" onPressLeft={this.closeAddNote} text=\"\" />\n <ScrollView style={styles.scrollContainer} contentContainerStyle={styles.innerContainer}>\n <Components.TextStyle type=\"pageHeading\">Add Staff Note</Components.TextStyle>\n <Components.GenericInputSection\n label=\"Content\"\n placeholder=\"Insert your notes here...\"\n value={this.state.noteInput}\n onChangeText={noteInput => this.setState({ noteInput })}\n isValid={() => {\n return !_.isEmpty(this.state.noteInput);\n }}\n autoCapitalize=\"sentences\"\n minHeight={135}\n autoCorrect\n multiline\n autoGrow\n required\n squaredCorners\n sectionStyle={styles.inputSection}\n />\n <Components.GenericInputSection label=\"Attachments\" sectionStyle={styles.inputSection}>\n {this.state.editingNote ? (\n (this.state.noteAttachments || []).map((a, i) => this.renderAttachment(a, i))\n ) : (\n <Components.TextStyle type=\"body\" style={styles.attachmentInfo}>\n PDFs can only be attached to notes from the Community Manager.\n </Components.TextStyle>\n )}\n </Components.GenericInputSection>\n </ScrollView>\n <View style={styles.popupFooter}>{this.renderFooterContent()}</View>\n </KeyboardAvoidingView>\n </Modal>\n );\n }\n\n render() {\n return (\n <View style={styles.container}>\n {this.renderPDF()}\n {this.renderNoteDeleteConfirm()}\n {this.renderAdd()}\n <Components.Header leftIcon=\"angle-left\" onPressLeft={this.onPressBack} text=\"Staff Notes\" />\n <ScrollView style={styles.scrollContainer} contentContainerStyle={styles.innerContainer}>\n {this.renderNotes()}\n </ScrollView>\n <Components.AddButton onPress={this.openAddNote} />\n </View>\n );\n }\n}\n\nconst styles = {\n container: {\n flex: 1,\n position: 'relative',\n backgroundColor: '#fff',\n },\n scrollContainer: {\n flex: 1,\n },\n innerContainer: {\n padding: 16,\n },\n popupFooter: {\n paddingHorizontal: 16,\n paddingBottom: getBottomSpace() + 16,\n },\n noteContainer: {\n ...Helper.getShadowStyle(),\n padding: 8,\n marginBottom: 16,\n },\n noteContainerTop: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n profilePic: {\n marginRight: 8,\n },\n noteContainerTopFill: {\n flex: 1,\n },\n noteContainerName: {\n fontFamily: 'sf-semibold',\n fontSize: 13,\n color: Colours.TEXT_DARKEST,\n },\n noteContainerText: {\n marginTop: 8,\n fontFamily: 'sf-regular',\n fontSize: 13,\n color: Colours.TEXT_DARKEST,\n },\n noteTimestamp: {\n marginTop: 8,\n fontFamily: 'sf-semibold',\n fontSize: 11,\n color: Colours.TEXT_LIGHT,\n },\n noteContainerTopRight: {\n flex: 1,\n flexDirection: 'row-reverse',\n alignItems: 'center',\n },\n noteContainerButtonContainer: {\n width: 24,\n height: 24,\n borderRadius: 12,\n alignItems: 'center',\n justifyContent: 'center',\n marginLeft: 8,\n },\n noteContainerButtonIcon: {\n fontSize: 13,\n color: '#fff',\n },\n inputSection: {\n marginTop: 24,\n },\n sectionHeading: {\n fontFamily: 'qs-bold',\n fontSize: 24,\n color: Colours.TEXT_DARKEST,\n },\n attachmentInfo: {\n marginTop: 8,\n },\n};\n\nconst mapStateToProps = state => {\n return {\n user: state.user,\n colourBrandingMain: Colours.getMainBrandingColourFromState(state),\n colourBrandingLight: Colours.getLightBrandingColourFromState(state),\n jobs: state.jobs.jobs,\n };\n};\n\nexport default connect(mapStateToProps, { jobAdded })(RequestNotes);\n"]}
|