import React, { Component, useEffect } from 'react';

import { AsyncStorage } from 'react-native';
import { useIsFocused } from "@react-navigation/native";
import { Card, Icon} from 'react-native-elements'
import PouchDB from 'pouchdb-react-native'
import {TouchableOpacity, View, FlatList, StyleSheet, Text, StatusBar, Dimensions, Image, Alert} from 'react-native';


//------Deside how many grid Display in main Activity----
const numColumns=1;
const WIDTH=Dimensions.get('window').width

var db = PouchDB('todo');
export default function MainActivity({ navigation, route, props}) {
   
    
  const isFocused = useIsFocused();
  //----define State----
  const [id, setId] = React.useState('');
  const [title, setTitle] = React.useState('');
  const [assigne, setAss] = React.useState('');
  const [description, setDes] = React.useState('');
  const [priority, setPriority] = React.useState('');
  const [date, setDate] = React.useState('');
  const [datalist, setRow]=React.useState([]);

  /////-----Create Object for isFocused----/////
  useEffect(()=>{
    db.allDocs(function(errdocs) {
           if (err) {     
              return console.log(err);
           } else {
              if (docs.rows.length){console.log("hello")}
             //  console.log (docs.rows.length);
                 //setRow(docs.rows)
           }
        });
   })
     
  //     }
    const fetchData = async () => {
      try{
          const documents=await db.allDocs({include_docs: true, descending: true}, function(errdoc) {
            const {id, title, assigne, description, priority, datetime}=documents.docs.rows;
            setId(id)
            setTitle(title)
            setAss(assigne)
            setDes(description)
            setPriority(priority)
            setDate(datetime)

          });
  //----------Update Data in State----------
      }catch(error){console.error(error);}
    }
    

    // Delete Task-----
 //Empty row handle
const formatData= (datalistnumColumns=>{
  const totalRows = Math.floor(datalist.length / numColumns)
  let totalLastRow=datalist.length-(totalRows * numColumns)
      while(totalLastRow !== 0 && totalLastRow !==numColumns){
          datalist.push({key:"blank", image:"blank", empty: true })
          totalLastRow++
      }
      return datalist
  }
  //
    //Render Items for Flatlist
  const _renderItem=({item, index}=> {
    let {mainflex, userText, itemInvisible, itemimg, dateText, firstflex, secondflex, desText} = styles
    return(
      <TouchableOpacity onPress={() =>navigation.navigate('CreatePostScreen')}>
      <Card>
      <Card.Title h4 >{title+id}</Card.Title>
      <Card.Divider/>
      
          <View  style={mainflex}>

              <View style={firstflex}>
                <View style={{flex:1, flexDirection:'row', alignItems:"flex-start", alignItems:"center"}}>
                    <Icon name='person' type='ionicon' color='#2A7FAA' size={20}/>
                    <Text style={userText}>{assigne}</Text>
                </View>
                <Card.Divider/>

                <View style={{flex:1, flexDirection:'row', alignItems:"flex-start", alignItems:"center"}}>
                    <Icon name='information-circle' type='ionicon' color='#2A7FAA' size={20}/>
                    <Text style={desText}>{description}</Text>
                </View>
                <Card.Divider/>

                <View style={{flex:1, flexDirection:'row', alignItems:"flex-start", alignItems:"center"}}>
                    <Icon name='time-sharp' type='ionicon' color='#2A7FAA' size={20}/>
                    <Text style={dateText}>{priority}</Text>
                </View>
                <Card.Divider/>

                <View style={{flex:1, flexDirection:'row', alignItems:"flex-start", alignItems:"center"}}>
                    <Icon name='time-sharp' type='ionicon' color='#2A7FAA' size={20}/>
                    <Text style={dateText}>{date}</Text>
                </View>
                  <Card.Divider/>
                  

              </View>
              <View style={secondflex}>
              <Icon name='cloud-download-outline' type='ionicon' color='#4169E1' size={25}/>
              <Icon name='create-outline' type='ionicon' color='green' size={25}/>
              <Icon name='trash-outline' type='ionicon' color='#FF0000' size={25}
                    onPress={()=> deleteTask()}
              />
              
                </View>
    
          </View>
         
          </Card>
          </TouchableOpacity>
    )
  }
    let {container}= styles
    return(
      <View style={container}>
          <FlatList
            data={formatData(datalist, numColumns)}
            renderItem={_renderItem}
            keyExtractor={(itemindex)=> index.toString()}
            numColumns={numColumns}
            
          />
          <View style={{alignItems:"flex-end", padding:5}}>
          <Icon name='add-circle-sharp' type='ionicon' color='#228B22' size={60}
          onPress={() => navigation.navigate('CreatePostScreen')}
          />
        </View>
        <View style={{alignItems:"flex-end", padding:5}}>
         <Icon name='add-circle-sharp' type='ionicon' color='#228B22' size={60}
          
          />
        </View>
          </View>
    )
}
const styles= StyleSheet.create({
container:{
  flex: 1,
},

mainflex:{
  flex:1,
  flexDirection:"row",

},

firstflex:{
  flex:5,
  flexDirection:"column",

},

secondflex:{
  flex:1,
  alignItems:"flex-end",
  justifyContent:"space-around",
  flexDirection:"column",

},

userText:{
  paddingLeft:5,
  color:'#000000',
  fontWeight: "bold",
  fontSize:20,
},

desText:{
  paddingLeft:5,
  color:'#000000',
  fontSize:15,
},

dateText:{
  margin:5,
  color:'#000000',
  fontWeight: "bold",
  fontSize:15,
},

itemInvisible:{
  backgroundColor: 'transparent'
}
})

Comments

Popular posts from this blog

RecyclerView Complete App

Integrating Google maps with React native