Sfoglia il codice sorgente

add app/pages/charge/SiteInfo.js

wudebin 6 mesi fa
parent
commit
bc933c24b2
1 ha cambiato i file con 99 aggiunte e 0 eliminazioni
  1. 99 0
      Strides-SPAPP/app/pages/charge/SiteInfo.js

+ 99 - 0
Strides-SPAPP/app/pages/charge/SiteInfo.js

@@ -0,0 +1,99 @@
+/**
+ * Site Information页面
+ * @邠心vbe on 2021/07/06
+ */
+import React, { Component } from 'react';
+import { View, Text, StyleSheet } from 'react-native';
+
+export default class SiteInfo extends Component {
+  constructor(props) {
+    super(props);
+    this.state = {
+      refreshId: 0,
+      stationInfo: {}
+    };
+  }
+
+  componentDidMount() {
+    if (this.props.stationInfo) {
+      this.setState({
+        stationInfo: this.props.stationInfo
+      });
+    }
+  }
+
+  componentDidUpdate() {
+    if (this.props.refreshId != this.state.refreshId) {
+      this.setState({
+        refreshId: this.props.refreshId,
+        stationInfo: this.props.stationInfo
+      });
+    }
+  }
+
+  getOperatingHours() {
+    if (this.state.stationInfo.endlessService) {
+      return "24/7";
+    } else if (this.state.stationInfo.operatingHours) {
+      return this.state.stationInfo.operatingHours;
+    } else {
+      return 'To be updated';
+    }
+  }
+
+  getParkingFee() {
+    if (this.state.stationInfo.parkingFeeFree) {
+      return "Free";
+    } else if (this.state.stationInfo.parkingFee) {
+      return this.state.stationInfo.parkingFee;
+    } else {
+      return 'To be updated';
+    }
+  }
+  
+  render() {
+    return (
+      <View style={{
+        paddingLeft: 16,
+        paddingRight: 16,
+        ...(this.props.style || {})
+      }}>
+        <Text style={styles.title}>Address</Text>
+        <View style={styles.infoView}>
+          <Text style={styles.infoText}>{this.state.stationInfo.address}</Text>
+        </View>
+        <Text style={styles.title}>Operating Hours</Text>
+        <View style={styles.infoView}>
+          <Text style={styles.infoText}>{this.getOperatingHours()}</Text>
+        </View>
+        <Text style={styles.title}>Parking Fee</Text>
+        <View style={styles.infoView}>
+          <Text style={styles.infoText}>{this.getParkingFee()}</Text>
+        </View>
+        <Text style={styles.title}>Additional Information</Text>
+        <View style={styles.infoView}>
+          <Text style={styles.infoText}>{this.state.stationInfo.additionalNotes}</Text>
+        </View>
+      </View>
+    );
+  }
+}
+
+const styles = StyleSheet.create({
+  title: {
+    color: '#000',
+    fontSize: 14,
+    fontWeight: 'bold',
+    ...$padding(16, 0, 8),
+    borderBottomColor: '#eee',
+    borderBottomWidth: 1
+  },
+  infoView: {
+    paddingTop: 8,
+    paddingBottom: 16
+  },
+  infoText: {
+    color: '#444',
+    fontSize: 14
+  }
+})