Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { Component } from 'react'
  2. import PropTypes from 'prop-types'
  3. import {ScrollView, View, StyleSheet, FlatList, TouchableOpacity, Text, Image} from 'react-native'
  4. import { connect } from 'react-redux'
  5. import { Formik } from 'formik'
  6.  
  7. import {colors, EVENTS} from '../../config'
  8. import { validationSchemas } from '../../libs/validation'
  9.  
  10. import ItemInput from '../../components/forms/ItemInput'
  11. import ActionButton from '../../components/buttons/ActionButton'
  12. import AdditionalDetails, {
  13.   SelectOtherEventType,
  14.   CommentPicture,
  15.   Comment,
  16. } from '../../components/forms/AdditionalDetails'
  17. import Icon from "react-native-vector-icons/FontAwesome";
  18.  
  19. const mapStateToProps = (state, ownProps) => {
  20.   const idToFind = ownProps.navigation.getParam('id')
  21.   const [event] = state.events.filter(evt => evt.id === idToFind)
  22.  
  23.   return {
  24.     event,
  25.   }
  26. }
  27.  
  28. const styles = StyleSheet.create({
  29.   additionalDetailsContent: {
  30.     justifyContent: 'center',
  31.     alignItems: 'center',
  32.     alignSelf: 'stretch',
  33.   },
  34.   picture: {
  35.     marginBottom: 12,
  36.   },
  37. })
  38.  
  39. class EntryDetailsScreen extends Component {
  40.   static propTypes = {
  41.     event: PropTypes.object.isRequired,
  42.     navigation: PropTypes.object.isRequired,
  43.   }
  44.  
  45.   static navigationOptions = ({ navigation }) => {
  46.     const title = navigation.getParam('title')
  47.     const id = navigation.getParam('id')
  48.  
  49.     return {
  50.       title: title || `Item #${id}`,
  51.     }
  52.   }
  53.  
  54.   state = {
  55.     detailsVisible: false,
  56.   }
  57.  
  58.   toggleDetails = () => this.setState(prevState => ({ detailsVisible: !prevState.detailsVisible }))
  59.  
  60.   goToList = () => {
  61.     const { navigation, event } = this.props
  62.     navigation.navigate(EVENTS[event.type].screen)
  63.   }
  64.  
  65.   render() {
  66.     const { event } = this.props
  67.     const { detailsVisible } = this.state
  68.  
  69.     const eventType = event.type
  70.     const showContainerOnly = eventType !== EVENTS.SEALED.type
  71.     console.log(event)
  72.     return (
  73.       <Formik
  74.         ref={(node) => {
  75.           this.form = node
  76.         }}
  77.         enableReinitialize
  78.         initialValues={{ ...event }}
  79.         validationSchema={validationSchemas[event.type]}
  80.         onSubmit={() => {}}
  81.         render={({ values }) => (
  82.           <View style={{ flex: 1 }}>
  83.             <ScrollView
  84.               alwaysBounceVertical
  85.               scrollEnabled
  86.               style={{ flex: 1 }}
  87.               contentContainerStyle={{
  88.                 flexGrow: 1,
  89.                 justifyContent: 'space-between',
  90.                 alignItems: 'stretch',
  91.                 paddingTop: 24,
  92.                 paddingLeft: 24,
  93.                 paddingRight: 24,
  94.               }}
  95.             >
  96.               <View>
  97.                 <ItemInput
  98.                   name="containerNumber"
  99.                   placeholderText="Container number"
  100.                   value={values.containerNumber}
  101.                   disabled
  102.                 />
  103.  
  104.                 {!showContainerOnly && (
  105.                   <>
  106.                     <ItemInput
  107.                       name="sealNumber"
  108.                       placeholderText="Seal number"
  109.                       value={values.sealNumber}
  110.                       disabled
  111.                     />
  112.  
  113.                     <ItemInput
  114.                       name="referenceNumber"
  115.                       placeholderText="Reference number"
  116.                       value={values.referenceNumber}
  117.                       disabled
  118.                     />
  119.                   </>
  120.                 )}
  121.  
  122.                 {eventType === EVENTS.OTHER_EVENT.type && (
  123.                   <SelectOtherEventType
  124.                     selectedValue={event.otherEventType}
  125.                     disabled
  126.                   />
  127.                 )}
  128.                 {event.grossWeight && (
  129.                   <ItemInput
  130.                     name="grossWeight"
  131.                     placeholderText="VGM"
  132.                     value={event.grossWeight + 'kg'}
  133.                     disableOCR
  134.                     disabled
  135.                   />
  136.                 )}
  137.                 {event.tare && (
  138.                   <ItemInput
  139.                     name="tare"
  140.                     placeholderText="Tare"
  141.                     value={event.tare + 'kg'}
  142.                     disableOCR
  143.                     disabled
  144.                   />
  145.                 )}
  146.                 {event.meansOfTransportId !== '' && (
  147.                   <>
  148.                     {event.meansOfTransportId && (
  149.                       <ItemInput
  150.                         name="meansOfTransportId"
  151.                         placeholderText="Means of transport ref. number"
  152.                         value={event.meansOfTransportId}
  153.                         disableOCR
  154.                         disabled
  155.                       />
  156.                     )}
  157.                   </>
  158.                 )}
  159.                 {event.meansOfTransport !== '' && (
  160.                   <>
  161.                     {event.meansOfTransport && (
  162.                       <ItemInput
  163.                         name="meansOfTransport"
  164.                         placeholderText="Means of transport"
  165.                         value={event.meansOfTransport}
  166.                         disableOCR
  167.                         disabled
  168.                       />
  169.                     )}
  170.                   </>
  171.                 )}
  172.                 {(event.details || (event.pictures && event.pictures.length > 0)) && (
  173.                   <AdditionalDetails
  174.                     visible={detailsVisible}
  175.                     onToggle={this.toggleDetails}
  176.                     readOnly
  177.                   >
  178.                     <View style={styles.additionalDetailsContent}>
  179.                       {(event.details && event.details.picture) && (
  180.                         <CommentPicture
  181.                           disabled
  182.                           picture={event.details.picture}
  183.                         />
  184.                         )}
  185.                       {((!event.details || !event.details.picture) && event.pictures !== null && event.pictures.length > 0) && (
  186.                       <FlatList
  187.                         horizontal
  188.                         data={[...event.pictures]}
  189.                         renderItem={({ item }) => {
  190.                           return (
  191.                             <View style={{ flexDirection: 'column', justifyContent: 'center', alignItems: 'center' }}>
  192.                               <Image
  193.                                 style={[
  194.                                   styles.picture,
  195.                                   {
  196.                                     width: item.isPortrait ? 200 / 1.33333 : 200,
  197.                                     height: item.isPortrait ? 200 : 200 / 1.33333,
  198.                                   },
  199.                                 ]}
  200.                                 source={item.source}
  201.                               />
  202.                             </View>
  203.                           )
  204.                         }}
  205.                         keyExtractor={(item, index) => index.toString()}
  206.                       />
  207.                       )}
  208.                       {(event.details && event.details.comment) && (
  209.                         <Comment disabled value={event.details.comment} />
  210.                       )}
  211.                     </View>
  212.                   </AdditionalDetails>
  213.                 )}
  214.               </View>
  215.             </ScrollView>
  216.             <ActionButton onPress={this.goToList} text="Back to list" />
  217.           </View>
  218.         )}
  219.       />
  220.     )
  221.   }
  222. }
  223.  
  224. export default connect(mapStateToProps)(EntryDetailsScreen)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement