import React, { Component } from 'react'; import { View, FlatList, TouchableOpacity, StyleSheet } from 'react-native'; import Image from 'react-native-fast-image' import ImageBackground from 'react-native-fast-image' import LinearGradient from 'react-native-linear-gradient' import Text from '../../components/Text'; import Carousel from 'react-native-snap-carousel' import { itemWidth, sliderWidth } from '../../styles/SliderEntry.style' import Icon from '../../components/Icon' import {getMeterList,getRoomSlideList} from '../../api/UserApi'; import moment from 'moment'; import ImagePicker from 'react-native-image-crop-picker' import IndicatorLoading from '../../components/IndicatorLoading'; import { NavigationEvents } from 'react-navigation'; import { t } from '../../utils/i18n'; export default class Meter extends Component { constructor(props) { super(props); this.state = { room_snap_index:0, room_list:[], cost_list:[], image_selected: {}, selected_type: '', isLoading: true, }; this.onTakeCamera = this.onTakeCamera.bind(this) this.selectedImage = this.selectedImage.bind(this) this.getSlideList = this.getSlideList.bind(this) this.getMeter = this.getMeter.bind(this) } componentWillUnmount() { if(this.props && this.props.navigation && this.props.navigation.state && this.props.navigation.state.params && this.props.navigation.state.params.getNotification){ this.props.navigation.state.params.getNotification() } } getMeter(){ this.setState({ isLoading: true }) getMeterList() .then(res => { console.log('check response meter list ----------> ',res.data); if(res.ok){ // let room_list = [ // {id: 87576, name: 'CN1-005', project_name: 'CNK', electric: 1264, water: 0} // ] this.setState({ room_list: res.data.rooms, // room_list, cost_list: res.data.data, }) } this.setState({isLoading:false}) }) } getSlideList(room_id){ this.setState({ isLoading: true }) getRoomSlideList(room_id) .then(res => { console.log('check response meter list ----------> ',res.data); if(res.ok){ this.setState({ // room_list: res.data.rooms, cost_list: res.data.data, }) } this.setState({isLoading:false}) }) } onTakeCamera() { ImagePicker.openCamera({ cropping: true, width: 300, height: 100, includeExif: true }).then(image => { console.log('received image', image) let image_meter = { uri: image.path, type: image.mime, name: 'image_meter.jpg', } this.setState({ image_url: {uri: image.path, width: image.width, height: image.height, mime: image.mime}, images: null, }, () => { this.selectedImage(this.state.image_url) }) }).catch(e => {console.log('e >>>> ', e)}) } selectedImage(image_meter){ this.setState({ image_selected: image_meter, },() => { console.log('selected image ',this.state.image_selected) if(this.state.selected_type == 'pea'){ this.props.navigation.navigate('PEAMeter',{image: this.state.image_selected,room_id: this.state.room_list[this.state.room_snap_index].id}) }else{ this.props.navigation.navigate('WaterMeter',{image: this.state.image_selected,room_id: this.state.room_list[this.state.room_snap_index].id}) } }) } _keyExtractor = (item, index) => 'meter_room_'+index; _renderItem = ({item}) => ( {item.name} {item.project_name} {item.water} {item.electric} ); _keyExtractorCost = (item, index) => 'cost_list_'+index _renderItemCost = ({item,index}) => ( // {}}> {item.type == 'ค่าน้ำ' ? t('water_bill') : t('electric_unit')} {t('unit')} {item.amount} {t('unit_price')} {t('amount')} {item.cost} {t('baht')} {moment(item.created_at).format('DD MMMM YYYY')} // ); render() { return ( { this.getMeter() }} /> { this.state.room_list.length > 0 && { this._carousel = c }} data={this.state.room_list} renderItem={this._renderItem} sliderWidth={sliderWidth} itemWidth={itemWidth} containerCustomStyle={{}} slideStyle={{ justifyContent: 'center' }} onSnapToItem={(item) => { this.setState({room_snap_index:item}) this.getSlideList(this.state.room_list[item].id) }} /> {this.state.room_list.map((item, i) => )} { this.setState({ selected_type: 'water' },() => { this.onTakeCamera() }) }}> {t('save_water_meter')} { this.setState({ selected_type: 'pea' },() => { this.onTakeCamera() }) }}> {t('save_electric_meter')} } {t('no_water_electric_bill')} } /> ); } } const styles = StyleSheet.create({ viewBtn:{ flex:1, flexDirection:'row', height: 50, justifyContent:'center', alignItems:'center', borderRadius:5 }, textBtn:{ color:'white', fontSize:14, marginLeft:10, }, cardText:{ marginHorizontal: 10, color: 'white', fontSize: 16 }, viewTextFlatlist:{ alignItems:'center', flexDirection:'row' }, textFliatlist:{ fontSize:12, color:'#000000' } })