ListViewV2.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. /**
  2. * 新版搜索列表复用组件
  3. * @邠心vbe on 2023/02/03
  4. */
  5. import React from 'react';
  6. import { Pressable, StyleSheet, Text, View } from 'react-native';
  7. import TextRadius from '../../components/TextRadius';
  8. import utils from '../../utils/utils';
  9. import Provider from '../charge/Provider';
  10. import ConnectType from './ConnectType';
  11. export default ListViewV2 = ({item, index, separators, onPress}) => {
  12. if (item.id) {
  13. return (
  14. <Pressable
  15. style={styles.itemView}
  16. key={index}
  17. onPress={onPress}
  18. android_ripple={ripple}>
  19. <Ionicons
  20. name="md-location-sharp"
  21. size={20}
  22. color="#E5E5E5"
  23. />
  24. <View style={styles.stationInfo} >
  25. <Text style={styles.stationName}>{item.name}</Text>
  26. <Text style={styles.stationAddress}>{item.address}</Text>
  27. {/* <Provider providers={item.serviceProvider}/> */}
  28. <View style={styles.connectView}>
  29. <ConnectType color={textCancel} {...item.acConnector}/>
  30. <ConnectType color={textCancel} {...item.dcConnector}/>
  31. </View>
  32. <View style={ui.flexc}>
  33. <TextRadius style={[styles.infoStatus, styles.available]}>{item.distance}</TextRadius>
  34. {item.allConnector && item.allConnector.available > 0 &&
  35. <TextRadius style={[styles.infoStatus, styles.available]}>Available</TextRadius>
  36. }
  37. {item.siteType == "Private" &&
  38. <TextRadius style={[styles.infoStatus, styles.private]}>Private Site</TextRadius>
  39. }
  40. </View>
  41. </View>
  42. <Pressable
  43. style={styles.directView}
  44. onPress={() => {
  45. utils.directMaps(item.latitude, item.longitude, item.address);
  46. }}>
  47. <MaterialIcons
  48. name='directions'
  49. size={32}
  50. color={colorAccent}/>
  51. </Pressable>
  52. </Pressable>
  53. );
  54. } else {
  55. return <></>;
  56. }
  57. }
  58. const styles = StyleSheet.create({
  59. itemView: {
  60. padding: 16,
  61. flexDirection: 'row',
  62. borderBottomWidth: 1,
  63. borderBottomColor: '#eee'
  64. },
  65. stationInfo: {
  66. flex: 1,
  67. paddingLeft: 8
  68. },
  69. nameView: {
  70. paddingTop: 3,
  71. alignItems: 'center',
  72. flexDirection: 'row'
  73. },
  74. stationName: {
  75. color: textPrimary,
  76. fontSize: 16,
  77. fontWeight: 'bold'
  78. },
  79. stationAddress: {
  80. color: textCancel,
  81. fontSize: 14,
  82. paddingTop: 4,
  83. paddingBottom: 4
  84. },
  85. infoStatus: {
  86. fontSize: 12,
  87. borderRadius: 3,
  88. marginRight: 5,
  89. borderWidth: 1,
  90. ...$padding(3, 8, 2)
  91. },
  92. selected: {
  93. color: textPrimary,
  94. borderColor: colorAccent
  95. },
  96. available: {
  97. color: '#90DB0A',
  98. borderColor: '#90DB0A'
  99. },
  100. unavailable: {
  101. color: '#999',
  102. fontSize: 10.5,
  103. paddingTop: 7,
  104. paddingLeft: 9,
  105. paddingRight: 9,
  106. paddingBottom: 7,
  107. backgroundColor: '#CCC'
  108. },
  109. private: {
  110. color: '#FDB702',
  111. borderColor: '#FDB702'
  112. },
  113. connectView: {
  114. paddingTop: 4,
  115. paddingBottom: 8,
  116. alignItems: 'center',
  117. flexDirection: 'row'
  118. },
  119. connectType: {
  120. borderWidth: 1,
  121. borderColor: textPrimary,
  122. borderRadius: 3,
  123. marginRight: 16,
  124. alignItems: 'center',
  125. flexDirection: 'row',
  126. },
  127. directView: {
  128. zIndex: 1,
  129. width: 32,
  130. height: 32,
  131. marginTop: 4,
  132. marginLeft: 8,
  133. alignItems: 'center'
  134. },
  135. distanceText: {
  136. color: textPrimary,
  137. fontSize: 12,
  138. paddingTop: 2
  139. },
  140. })