BusPathComponent.js 4.97 KB
import React, {useState, useContext, useEffect, useCallback} from 'react';
import {Text, View, StyleSheet, TouchableOpacity, ScrollView} from 'react-native';
import {useDispatch, useSelector} from "react-redux";
import {useNavigation} from '@react-navigation/native';
import styled from "styled-components";
import {AntDesign, MaterialCommunityIcons} from "@expo/vector-icons";


const Banner = styled.View`
    flex: 1;
    margin-left: 15px;
    margin-bottom: 5px;
    width: 3px;
    height: 3px;
    border-radius: 20px;
    border: 3px solid #88c600;
    
`;

const BusPathComponent = (props) => {
    const navigation = useNavigation();
    const [busPath, setBusPath] = useState(null);
    const [seeStaList, setSeeStaList] = useState(false);
    const {pathDetail} = props;

    const changeSeeStaList = () => {
        setSeeStaList(!seeStaList);
        console.log(seeStaList)
    };

    useEffect(() => {
        console.log(props.pathDetail);
        setBusPath(props.pathDetail);
    }, []);

    return (
        <ScrollView>
            <View style={{flexDirection: 'row', flex: 5}}>
                <View style={styles.pathType}>
                    <MaterialCommunityIcons style={{flex: 1}} color={'#88c600'} name={'bus'} size={20}/>
                    <Text style={{flex: 1, fontSize: 13}}>{pathDetail.time}</Text>
                </View>
                <View style={{flex: 1}}>
                    <Banner/>
                    <Banner/>
                    <Banner/>
                    <Banner/>
                    <Banner/>
                    <Banner/>
                    <Banner/>
                </View>
                <View style={styles.inputTile}>
                    <Text style={styles.stationStyle}>{pathDetail.startName}</Text>
                    <Text style={styles.idStyle}>{pathDetail.startID}</Text>
                    {pathDetail.arrivalInfo.map((bus, index) => {
                        return (
                            <View>
                                <Text style={styles.busStyle}>{bus.busNo}</Text>
                                {bus.msg.msg1.indexOf('undefined') !== -1 ?
                                    null
                                    :
                                    <>
                                        <Text style={styles.busSubStyle}>{bus.msg.msg1}</Text>
                                    </>
                                }
                                {bus.msg.msg2.indexOf('undefined') !== -1 ?
                                    null
                                    :
                                    <>
                                        <Text style={styles.busSubStyle}>{bus.msg.msg2}</Text>
                                    </>
                                }
                            </View>
                        )
                    })}
                    <View style={styles.stationListStyle}>
                        <Text style={styles.cntStyle}>{pathDetail.stationCnt} 정류소 이동</Text>
                        <TouchableOpacity style={{flex: 1, marginTop: 17}} onPress={changeSeeStaList}>
                            <AntDesign color={'darkgrey'} name={'caretdown'} size={15}/>
                        </TouchableOpacity>
                    </View>
                    <View>
                        {seeStaList === true ?
                            <View>
                                {pathDetail.stationList.map((bus, index) => {
                                    return (
                                        <>
                                            <Text>{bus.stationName}</Text>
                                        </>
                                    )
                                })}
                            </View>
                            :
                            null
                        }
                    </View>
                    <Text style={styles.stationStyle}>{pathDetail.endName}</Text>
                </View>
            </View>
        </ScrollView>
    );
}
export default BusPathComponent;

const styles = StyleSheet.create({
    inputTile: {
        marginLeft: 6,
        flex: 4,
        color: 'grey',
    },
    inputText: {
        fontWeight: 'normal',
        fontSize: 15,
    },
    pathType: {
        flexDirection: 'column',
        flex: 0.4,
        alignItems: 'center',
        justifyContent: 'center',
        marginLeft: 5,
        marginTop: 10,
    },
    stationStyle: {
        fontWeight: 'bold',
        fontSize: 15,
    },
    idStyle: {
        marginTop: 3,
        marginBottom: 20,
        color: 'grey',
        fontSize: 14
    },
    busStyle: {
        fontWeight: 'bold',
        fontSize: 14,
        color: '#88c600'
    },
    cntStyle: {
        flex: 1,
        marginTop: 20,
        marginBottom: 3,
        color: 'grey',
        fontSize: 14
    },
    stationListStyle: {
        flexDirection: 'row',
        flex: 1,
    },
    busSubStyle: {
        marginTop: 2,
        fontSize: 12,
        color: 'red',
    }
})