import { ScrollView, Text, View, StyleSheet, Pressable, ImageSourcePropType } from 'react-native'; import NormalInput from '../global/normal_input'; import NormalButton from '../global/normal_button'; import { FlashList } from '@shopify/flash-list'; import { ArrowIconSvg } from '../global/SVG'; import { SafeAreaView } from 'react-native-safe-area-context'; import { useEffect, useRef, useState } from 'react'; import { router } from 'expo-router'; import extractedInfoStore from '../../providers/extractedReservationInfo_store'; interface BookingHistory { charingStationName: string; chargingStationAddress: string; } interface SearchPageComponentProps {} interface TabItem { imgURL: ImageSourcePropType; date: string; time: string; chargeStationName: string; chargeStationAddress: string; distance: string; latitude: number; longitude: number; } const dummyTabItems: TabItem[] = [ { imgURL: require('../../assets/dummyStationPicture.png'), date: '今天', time: '16:30', chargeStationName: '觀塘偉業街充電站', chargeStationAddress: '九龍觀塘偉業街143號地下', distance: '400米', latitude: 22.31337, longitude: 114.21823 }, { imgURL: require('../../assets/dummyStationPicture5.jpeg'), date: '3月15', time: '17:45', chargeStationName: '香港沙頭角農莊', chargeStationAddress: '香港沙頭角農莊停車場', distance: '680米', latitude: 22.53898, longitude: 114.21319 }, { imgURL: require('../../assets/dummyStationPicture4.jpeg'), date: '3月15', time: '17:45', chargeStationName: '黃竹坑香葉道充電站', chargeStationAddress: '黃竹坑香葉道44號地下', distance: '680米', latitude: 22.24839, longitude: 114.16303 } ]; const SearchPageComponent: React.FC = () => { const inputRef = useRef(null); const extractedInfo = extractedInfoStore((state) => state.extractedInfo); const [searchInput, setSearchInput] = useState(''); const [filteredItems, setFilteredItems] = useState([]); useEffect(() => { if (inputRef.current) { inputRef.current.focus(); } }, []); useEffect(() => { if (searchInput === '') { setFilteredItems([]); } else { const filteredData = dummyTabItems.filter((item) => item.chargeStationName.includes(searchInput.toLocaleUpperCase()) ); setFilteredItems(filteredData); } }, [searchInput]); return ( { if (router.canGoBack()) { router.back(); } else { router.replace('/(auth)/(tabs)/(home)'); } }} > { setSearchInput(text); }} extendedStyle={styles.textInput} ref={inputRef} /> {filteredItems.length > 0 && ( {filteredItems.map((item, index) => ( { setSearchInput(item.chargeStationName); setFilteredItems([]); router.push({ pathname: '/searchResultPage', params: { latitude: item.latitude, longitude: item.longitude, chargeStationName: item.chargeStationName } }); }} style={({ pressed }) => [ styles.dropdownItem, pressed && styles.dropdownItemPress ]} > {item.chargeStationName} ))} )} 瀏覽地圖查看現有充電站} // onPress={() => console.log('附近的充電站')} onPress={() => router.push('/(auth)/(tabs)/(home)/(booking)/searchResultPage')} buttonPressedStyle={{ backgroundColor: '#CFDEE4' }} extendedStyle={{ backgroundColor: '#E3F2F8', borderRadius: 8, paddingVertical: 12 }} /> {/* 可Walk-in的充電站 } onPress={() => console.log('可Walk-in的充電站')} buttonPressedStyle={{ backgroundColor: '#CFDEE4' }} extendedStyle={{ backgroundColor: '#E3F2F8', borderRadius: 8, paddingVertical: 12 }} /> Test Tab #1 } onPress={() => console.log('Test Tab #1')} buttonPressedStyle={{ backgroundColor: '#CFDEE4' }} extendedStyle={{ backgroundColor: '#E3F2F8', borderRadius: 8, paddingVertical: 12 }} /> Test Tab #2 } onPress={() => console.log('Test Tab #2')} buttonPressedStyle={{ backgroundColor: '#CFDEE4' }} extendedStyle={{ backgroundColor: '#E3F2F8', borderRadius: 8, paddingVertical: 12 }} /> */} {/* 預約記錄 ( console.log('abc')} onPress={() => { router.push({ pathname: '/resultDetailPage', params: { chargeStationAddress: item.address, chargeStationID: item.stationID, chargeStationName: item.stationName // chargeStationLng: item.lng, // chargeStationLat: item.lat } }); }} > {item.stationName} {item.address} )} /> */} ); }; export default SearchPageComponent; const styles = StyleSheet.create({ leftArrowBackButton: { width: '15%', maxWidth: '100%', fontSize: 16, padding: 20, paddingLeft: 30, borderBottomLeftRadius: 12, borderTopLeftRadius: 12, borderColor: '#bbbbbb', borderTopWidth: 1, borderBottomWidth: 1, borderLeftWidth: 1, alignItems: 'center', justifyContent: 'center' }, textInput: { // width: '100', // maxWidth: '100%', flex: 1, fontSize: 16, padding: 20, paddingLeft: 0, borderLeftWidth: 0, borderTopWidth: 1, borderBottomWidth: 1, borderRightWidth: 1, borderBottomRightRadius: 12, borderTopRightRadius: 12, borderRadius: 0, borderColor: '#bbbbbb' }, dropdown: { backgroundColor: 'white', borderWidth: 1, borderBottomLeftRadius: 12, borderBottomRightRadius: 12, borderLeftWidth: 1, borderRightWidth: 1, // borderBottomWidth: 1, marginTop: 10, maxHeight: 200, width: '96%', position: 'absolute', top: 50, zIndex: 2, borderColor: '#bbbbbb' }, // dropdown: { // backgroundColor: 'white', // borderBottomLeftRadius: 12, // borderBottomRightRadius: 12, // borderLeftWidth: 1, // borderRightWidth: 1, // borderBottomWidth: 1, // marginTop: 10, // maxHeight: 200, // width: '100%', // position: 'absolute', // top: 50, // zIndex: 2, // borderColor: '#bbbbbb' // }, dropdownItem: { padding: 10, borderBottomColor: '#ddd' }, dropdownItemPress: { backgroundColor: '#e8f8fc' } });