Skip to main content

REACT NATIVE ITERATE ROWS WITH DIFFERENT COLOURS

 mytrip.tsx

import React from 'react'

import { View, Text, TouchableOpacity, Image } from 'react-native'

import { useNavigation } from '@react-navigation/native'

import { ScrollView } from 'react-native-gesture-handler'

import { SearchBar } from '../../components'

import { styles } from './styles'

import TripComponent from './TripComponent'


const mytripScreen = () => {

  const navigation = useNavigation()

  const [trips, setTrips] = React.useState(MYTRIPS)

  const searchTrips = (t: string) => {

    const newData = MYTRIPS.filter(function (item) {

      const itemData = item.title ? item.title.toUpperCase() : ''.toUpperCase()

      const textData = t.toUpperCase()

      return itemData.indexOf(textData) > -1

    })

    setTrips(newData)

  }


  return (

    <View style={styles.mytripMainContainer}>

      <View style={styles.mytripInnerContainer}>

        <View style={styles.tripSearchContainer}>

          <SearchBar type="trip" handleChange={(text: string) => searchTrips(text)} />

        </View>

        <ScrollView showsVerticalScrollIndicator={false} style={styles.tripScrollView}>

          {trips.map((item) => {

            return (

              <TripComponent

                id={item.id}

                heading={item.heading}

                title={item.title}

                days={item.days}

                dayfrom={item.dayfrom}

                dayto={item.dayto}

                price={item.price}

                members={item.members}

                type={item.type}

                status={item.status}

                handleChange={(id: string, title: string) => {

                  console.log('TRIP SELECTED : ', id + title)

                }}

              />

            )

          })}

        </ScrollView>

      </View>

      {/* <View style={styles.bottomBar}>

        <TouchableOpacity onPress={() => alert('search')}>

          <Image style={styles.imageStyle} source={require('../../assets/MyTrips/Search.png')} />

        </TouchableOpacity>

        <TouchableOpacity onPress={() => navigation.navigate('hamburgerMenuScreen')}>

          <Image style={styles.plusImageStyle} source={require('../../assets/MyTrips/Add.png')} />

        </TouchableOpacity>

        <TouchableOpacity onPress={() => alert('venue')}>

          <Image style={styles.imageStyle} source={require('../../assets/MyTrips/Trips_select.png')} />

        </TouchableOpacity>

      </View> */}

    </View>

  )

}


export default mytripScreen

const MYTRIPS = [

  {

    id: 1,

    heading: 'YOU CAN DO IT BETTER',

    title: 'Hawai trip Jan 21',

    days: 8,

    dayfrom: null,

    dayto: null,

    price: 3210,

    members: [

      { id: 1, name: 'A' },

      { id: 2, name: 'V' },

    ],

    type: 'Lock your holidays',

    status: 'Public',

  },

  {

    id: 2,

    heading: 'YOUR HOLIDAYS ARE ADVENTUROUS',

    title: 'Summer Vacations',

    days: null,

    dayfrom: '02 Jul, 20',

    dayto: '18 Jul, 20',

    price: 4990,

    members: [

      { id: 1, name: 'A' },

      { id: 2, name: 'V' },

      { id: 3, name: 'S' },

    ],

    type: 'All set to fly',

    status: 'Public',

  },

  {

    id: 3,

    heading: 'AWSOME IS A WORD FOR YOU!',

    title: 'Winters2020',

    days: null,

    dayfrom: '12 Feb, 20',

    dayto: '21 Feb, 20',

    price: 2010,

    members: [

      { id: 1, name: 'A' },

      { id: 2, name: 'V' },

      { id: 3, name: 'S' },

    ],

    type: 'All set to fly',

    status: 'Private',

  },

]



TripComponent.tsx

import React from 'react'

import { View, Text, TouchableOpacity, TextInput } from 'react-native'

import { styles } from './styles'


const priceValue = (price: string) => {

  return Number(parseFloat(price).toFixed(2)).toLocaleString('en', {

    minimumFractionDigits: 2,

  })

}


export default function TripComponent(props: any) {  

  const { id, heading, title, days, dayfrom, dayto, price, members, type, status } = props  

  const [value, onChangeText] = React.useState(title)

  const [isEdit, onEditText] = React.useState(-1)

  const onEdit = (index: number) => {

    onEditText(index)

  }

  if(BUTTON_COLORS.length == id){    

    let i=0

    BUTTON_COLORS.forEach(()=>{            

      BUTTON_COLORS.push(BUTTON_COLORS[i])

      i+=1;      

    })    

  }

  if(HEADING_COLORS.length == id){    

    let j=0

    HEADING_COLORS.forEach(()=>{            

      HEADING_COLORS.push(HEADING_COLORS[j])

      j+=1;      

    })    

  }

  return ( <View key={id} style={styles.card}>

    <View style={[{backgroundColor:HEADING_COLORS[id-1]},styles.cardTitleView]}>

      <Text>{heading} </Text>

    </View>

    <View style={styles.carLeftView}>

      <View style={styles.cardLeftViewInner}>

        {isEdit === -1 ? (

          <TouchableOpacity onPress={() => onEdit(0)}>

            <Text style={styles.leftText1}>{title} </Text>

          </TouchableOpacity>

        ) : (

          <TextInput

            style={styles.cardLeftViewTextInput}

            onChangeText={(text) => onChangeText(text)}

            // onBlur={() => alert('call')}

            // onFocus={() => alert('call')}

            onSubmitEditing={() => onEditText(-1)}

            value={title}

          />

        )}


        <Text style={styles.leftText2}>${priceValue(price)}</Text>

        <Text style={styles.leftText3}>{status}</Text>

        <View style={styles.circleContainer}>

          {members.length > 0 &&

            status == 'Public' &&

            members.map((i: any) => {

              return (

                <View style={styles.circleView}>

                  <Text>{i.name}</Text>

                </View>

              )

            })}              

        </View>

      </View>

      <View style={styles.rightViewContainer}>

        <View style={styles.rightTopView}>

          {days != null ? (

            <Text style={styles.rightDaysText}> {days} days</Text>

          ) : (

            <View style={styles.rightDaysContainer}>

              <View style={styles.rightDaysFrom}>

                <View style={styles.rightDaysFromCircle} />

                <Text style={styles.rightDaysFromText}>{dayfrom}</Text>

              </View>

              <View style={styles.rightDaysConnectingLine} />

              <View style={styles.rightDaysFrom}>

                <View style={styles.rightDaysToCircle} />

                <Text style={styles.rightDaysToText}>{dayto}</Text>

              </View>

            </View>

          )}

        </View>

        <TouchableOpacity style={[{backgroundColor: BUTTON_COLORS[id-1]},styles.button]} onPress={() => props.handleChange(id, value)}>                

          <Text style={styles.buttonText}>{type}</Text>                

        </TouchableOpacity>

      </View>

    </View>

  </View>)

}


const BUTTON_COLORS = ["#00CFCC", "#274792", "lightgray"];

const HEADING_COLORS = ["#FFCA9F", "#67d1a0", "lightgray"];



Comments

Popular posts from this blog

SETUP REST API IN CI

1. Create Rest_controller.php inside controllers and paste code: <?php defined('BASEPATH') OR exit('No direct script access allowed'); require APPPATH . '/libraries/API_Controller.php'; class Rest_controller extends API_Controller { public function __construct() { parent::__construct(); } public function index() { $this->api_return(             [ 'status' => true,                'result' => "Welcome to Testservices."             ],         200); } } ?> 2. Create api.php inside config and paste code : <?php defined('BASEPATH') OR exit('No direct script access allowed'); /**  * API Key Header Name  */ $config['api_key_header_name'] = 'X-API-KEY'; /**  * API Key GET Request Parameter Name  */ $config['api_key_get_name'] = 'key'; /**  * API Key POST Request Parameter Name ...

Array Difference, Radio Button Js,

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $a2=array("e"=>"red","f"=>"green","g"=>"blue"); $result=array_diff($a1,$a2); print_r($result); ______________________________________________________ <script type="text/javascript">  $(document).ready(function(){       $("input[type='radio']").click(function(){             var radioValue = $("input[name='duration']:checked").val();             if(radioValue){                 alert("Your are a - " + radioValue);             }         });  }); </script>   $(document).on("click", ".upappdesc", function(){ // alert($(this).data('id'));  var option = $(this).data("cat").split(",");  // alert($(this).data(...

KrutiDev To Unicode Conversion

http://wrd.bih.nic.in/font_KtoU.htm ___________________________________ <html> <head> <title>KrutiDev <=> Unicode Conversion</title> </title> <link rel="stylesheet" href="style.css">       <script src='script.js'></script> </head> <!--       body of the HTML starts here. one text box is provided each for input and output. --> <body bgcolor='#99CCFF'> <P style='text-align:center; font-family: Arial, Helvetica, sans-serif; font-size: 14pt; font-weight:bold; background-color: #FF6600; color: #FFFFFF'> Conversion between Krutidev-010 and Unicode क्रुतिदेव-०१० और यूनिकोड के बीच रूपांतरण </P> <form name="form1"> <p style='font-size:10pt'>क्रुतिदेव-०१० (Kruti Dev 010) फॉन्ट में टंकिट टेक्स्ट को "क्रुतिदेव-०१०" नामक टेक्स्ट बॉक्स में टाईप या पेस्ट करें तथा इसे यूनिकोड में रूपांतरित करने के लिए अधोमुख तीर वाल...