TIF_NGANJUK_E41212433/screens/AksesAdmin/TambahTPS.js

222 lines
5.6 KiB
JavaScript

import React, { useState } from "react";
import {
View,
Text,
StyleSheet,
TextInput,
TouchableOpacity,
Alert,
} from "react-native";
import { Ionicons } from "@expo/vector-icons"; // Pastikan menggunakan Ionicons yang benar
import { useNavigation } from "@react-navigation/native";
import MapView, { Marker } from "react-native-maps"; // Import MapView
import { Picker } from "@react-native-picker/picker"; // Hanya gunakan ini saja
const TambahTPS = () => {
const navigation = useNavigation();
// State untuk form input
const [namaTPS, setNamaTPS] = useState("");
const [luasTPS, setLuasTPS] = useState("");
const [dayaTampung, setDayaTampung] = useState("");
const [jenisTPS, setJenisTPS] = useState("Container");
const [alamat, setAlamat] = useState("");
const [kecamatan, setKecamatan] = useState("Nganjuk");
const [latitude, setLatitude] = useState(null);
const [longitude, setLongitude] = useState(null);
// Fungsi untuk menangani penyimpanan TPS baru
const handleTambahTPS = () => {
if (
!namaTPS ||
!luasTPS ||
!dayaTampung ||
!alamat ||
!latitude ||
!longitude
) {
Alert.alert("Form belum lengkap", "Mohon lengkapi semua data TPS.");
return;
}
// Aksi penyimpanan TPS baru (misalnya kirim ke backend atau state global)
Alert.alert("Berhasil", "TPS baru berhasil ditambahkan!");
// Kembali ke halaman daftar TPS
navigation.goBack();
};
return (
<View style={styles.container}>
<View style={styles.header}>
<TouchableOpacity
style={styles.backButton}
onPress={() => navigation.goBack()}
>
<Ionicons name="arrow-back" size={28} color="#000" />
</TouchableOpacity>
<Text style={styles.title}>TAMBAH LOKASI TPS</Text>
</View>
{/* Form Input TPS */}
<View style={styles.formContainer}>
<TextInput
style={styles.input}
placeholder="Nama TPS"
value={namaTPS}
onChangeText={setNamaTPS}
/>
<TextInput
style={styles.input}
placeholder="Luas TPS (m2)"
value={luasTPS}
keyboardType="numeric"
onChangeText={setLuasTPS}
/>
<TextInput
style={styles.input}
placeholder="Daya Tampung"
value={dayaTampung}
keyboardType="numeric"
onChangeText={setDayaTampung}
/>
<Text style={styles.label}>Pilih Jenis TPS</Text>
<Picker
selectedValue={jenisTPS}
style={styles.picker}
onValueChange={(itemValue) => setJenisTPS(itemValue)}
>
<Picker.Item label="Container" value="Container" />
<Picker.Item label="Depo Kecil" value="Depo Kecil" />
</Picker>
{/* Form Detail Lokasi */}
<TextInput
style={styles.input}
placeholder="Alamat"
value={alamat}
onChangeText={setAlamat}
/>
<Text style={styles.label}>Pilih Kecamatan</Text>
<Picker
selectedValue={kecamatan}
style={styles.picker}
onValueChange={(itemValue) => setKecamatan(itemValue)}
>
<Picker.Item label="Nganjuk" value="Nganjuk" />
<Picker.Item label="Bagor" value="Bagor" />
<Picker.Item label="Wilangan" value="Wilangan" />
<Picker.Item label="Baron" value="Baron" />
</Picker>
<TextInput
style={styles.input}
placeholder="Latitude"
value={latitude}
keyboardType="numeric"
onChangeText={setLatitude}
/>
<TextInput
style={styles.input}
placeholder="Longitude"
value={longitude}
keyboardType="numeric"
onChangeText={setLongitude}
/>
{/* Peta */}
{latitude && longitude ? (
<MapView
style={styles.map}
initialRegion={{
latitude: parseFloat(latitude),
longitude: parseFloat(longitude),
latitudeDelta: 0.0922,
longitudeDelta: 0.0421,
}}
>
<Marker
coordinate={{
latitude: parseFloat(latitude),
longitude: parseFloat(longitude),
}}
/>
</MapView>
) : null}
{/* Tombol Simpan */}
<TouchableOpacity style={styles.saveButton} onPress={handleTambahTPS}>
<Text style={styles.saveButtonText}>SIMPAN</Text>
</TouchableOpacity>
</View>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: "#fff",
padding: 16,
marginTop: 0,
},
header: {
marginTop: 40,
flexDirection: "row",
alignItems: "center",
marginBottom: 20,
},
backButton: {
marginRight: 20,
},
title: {
fontSize: 20,
fontWeight: "bold",
color: "#000",
},
formContainer: {
marginTop: -15,
padding: 15,
},
input: {
borderWidth: 1,
borderColor: "#ccc",
borderRadius: 8,
padding: 15,
marginBottom: 12,
fontSize: 14,
},
label: {
fontSize: 14,
fontWeight: "bold",
marginBottom: 5,
},
picker: {
height: 50,
borderWidth: 1,
borderColor: "#ccc",
borderRadius: 8,
marginBottom: 12,
},
map: {
height: 200,
marginBottom: 20,
},
saveButton: {
width: "100%",
padding: 15,
backgroundColor: "#2D572C", // Warna hijau untuk tombol kirim
alignItems: "center",
borderRadius: 15,
},
saveButtonText: {
color: "#fff",
fontSize: 16,
fontWeight: "bold",
},
});
export default TambahTPS;