| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- /**
- * 新版搜索列表复用组件
- * @邠心vbe on 2023/02/03
- */
- import React from 'react';
- import { Pressable, StyleSheet, Text, View } from 'react-native';
- import TextView from '../../components/TextView';
- import utils from '../../utils/utils';
- import Provider from '../charge/Provider';
- import ConnectType from './ConnectType';
- import app from '../../../app.json';
- export default ListViewV2 = ({item, index, separators, onPress, onFavorite}) => {
- if (item.id) {
- return (
- <Pressable
- style={styles.itemView}
- key={index}
- onPress={onPress}
- android_ripple={ripple}>
- {/* <Ionicons
- name="md-location-sharp"
- size={20}
- color="#E5E5E5"
- /> */}
- <View style={styles.stationInfo} >
- <TextView style={styles.stationName}>{item.name}</TextView>
- <View style={ui.flex}>
- <View style={ui.flex1}>
- <TextView style={styles.stationAddress}>{item.address}</TextView>
- {/* <Provider providers={item.serviceProvider}/> */}
- <View style={styles.connectView}>
- <ConnectType color={textCancel} {...item.acConnector}/>
- <ConnectType color={textCancel} {...item.dcConnector}/>
- </View>
- <View style={ui.flexc}>
- <TextView style={[styles.infoStatus, styles.available]}>{item.distance}</TextView>
- {item.allConnector && item.allConnector.available > 0 &&
- <TextView style={[styles.infoStatus, styles.available]}>{$t('charging.statusAvailable')}</TextView>
- }
- {item.siteType == "Private" &&
- <TextView style={[styles.infoStatus, styles.private]}>{$t('home.statusPrivate')}</TextView>
- }
- </View>
- </View>
- { app.modules.bookmarks &&
- <Pressable
- style={[styles.directIconView, {backgroundColor: item.favorite ? colorPrimary : colorCancel}]}
- android_ripple={rippleLess}
- onPress={onFavorite}>
- <MaterialIcons
- name="star"
- size={22}
- color={colorLight}/>
- </Pressable>
- }
- <Pressable
- style={styles.directIconView}
- android_ripple={rippleLess}
- onPress={() => {
- utils.directMaps(item.latitude, item.longitude, item.address);
- }}>
- <MaterialCommunityIcons
- name="navigation-variant"
- size={22}
- color={colorLight}/>
- </Pressable>
- {/* <Pressable
- style={styles.directView}
- onPress={() => {
- utils.directMaps(item.latitude, item.longitude, item.address);
- }}>
- <MaterialIcons
- name='directions'
- size={32}
- color={colorAccent}/>
- </Pressable> */}
- </View>
- </View>
- </Pressable>
- );
- } else {
- return <></>;
- }
- }
- const styles = StyleSheet.create({
- itemView: {
- padding: 16,
- flexDirection: 'row',
- borderBottomWidth: 1,
- borderBottomColor: '#eee'
- },
- stationInfo: {
- flex: 1,
- paddingLeft: 0
- },
- nameView: {
- paddingTop: 3,
- alignItems: 'center',
- flexDirection: 'row'
- },
- stationName: {
- color: textPrimary,
- fontSize: 16,
- fontWeight: 'bold'
- },
- stationAddress: {
- color: textCancel,
- fontSize: 14,
- paddingTop: 4,
- paddingBottom: 4
- },
- infoStatus: {
- fontSize: 12,
- borderRadius: 3,
- marginRight: 5,
- borderWidth: 1,
- ...$padding(3, 8, 2)
- },
- selected: {
- color: textPrimary,
- borderColor: colorAccent
- },
- available: {
- color: '#90DB0A',
- borderColor: '#90DB0A'
- },
- unavailable: {
- color: '#999',
- fontSize: 10.5,
- paddingTop: 7,
- paddingLeft: 9,
- paddingRight: 9,
- paddingBottom: 7,
- backgroundColor: '#CCC'
- },
- private: {
- color: '#FDB702',
- borderColor: '#FDB702'
- },
- connectView: {
- paddingTop: 4,
- paddingBottom: 8,
- alignItems: 'center',
- flexDirection: 'row'
- },
- connectType: {
- borderWidth: 1,
- borderColor: textPrimary,
- borderRadius: 3,
- marginRight: 16,
- alignItems: 'center',
- flexDirection: 'row',
- },
- directView: {
- zIndex: 1,
- width: 32,
- height: 32,
- marginTop: 4,
- marginLeft: 8,
- alignItems: 'center'
- },
- distanceText: {
- color: textPrimary,
- fontSize: 12,
- paddingTop: 2
- },
- directIconView: {
- zIndex: 1,
- width: 32,
- height: 32,
- marginTop: 4,
- marginLeft: 16,
- borderRadius: 45,
- alignItems: 'center',
- justifyContent: 'center',
- backgroundColor: colorAccent
- },
- })
|