import { ThemedText } from "@/components/theme/themed-text"; import { ThemedTextInput } from "@/components/theme/themed-textinput"; import { ThemedView } from "@/components/theme/themed-view"; import Constants from "expo-constants"; //pour connaître la taille de la barre menu de l'OS en haut import { ThemedButton } from "@/components/theme/themed-button"; import { useLocalSearchParams, useRouter } from "expo-router"; import React, { useEffect, useState } from "react"; import { FlatList, Image, StyleSheet, Text, View } from "react-native"; import { Ressources } from "../../class/class"; import { getRessources } from "../../services/ressourcesService"; import SelectChantier from "@/components/selectChantier"; export default function GestionnaireRessource() { const { nom, prenom } = useLocalSearchParams(); const [search, setSearch] = useState(""); const [ressource, setRessources] = useState([]); const [filterType, setFilterType] = useState("tout"); const [showFilterMenu, setShowFilterMenu] = useState(false); const router = useRouter(); useEffect(() => { async function loadData() { try { const data = await getRessources(); setRessources(data); } catch (error) { console.error("Erreur lors du chargement :", error); } } loadData(); }, []); const filteredData = ressource.filter((r) => { const matchName = r.name.toLowerCase().includes(search.toLowerCase()); const matchType = filterType === "tout" || r.type === filterType; return matchName && matchType; }); const renderRessource = ({ item }: { item: Ressources }) => { if (!item) return null; return ( {item.id} {item.name} {item.type} {item.quantity} {item.available_quantity} ); }; return ( {/* Overlay menu filtre */} {showFilterMenu && ( Filtrer par type {["tout", "Outil", "Machine"].map((t) => ( { setFilterType(t); setShowFilterMenu(false); }} > {t} ))} {/* Bouton "Fermer" remplacé */} setShowFilterMenu(false)} > Fermer )} index.toString()} contentContainerStyle={{ paddingBottom: 40 }} ListHeaderComponent={ {/* Bouton filtre en haut à droite */} setShowFilterMenu(true)} > {`Filtre: ${filterType}`} } ListEmptyComponent={ Aucun résultat trouvé } /> ); } const styles = StyleSheet.create({ back:{ height:"100%", width:"100%", }, container: { flex: 1, marginTop: Constants.statusBarHeight, }, header: { marginTop: 60, marginBottom: 20, alignItems: "center", paddingHorizontal: 20, }, text: { fontSize: 22, fontWeight: "bold", marginBottom: 10, }, inputBack: { width: "100%", borderRadius: 10, backgroundColor: "transparent", }, input: { width: "100%", borderRadius: 10, padding: 10, fontSize: 16, }, card: { flexDirection: "row", marginHorizontal: 20, marginBottom: 15, borderRadius: 10, padding: 10, }, image: { width: 80, height: 80, borderRadius: 8, marginRight: 10, }, info: { flex: 1, justifyContent: "center", }, footer: { padding: 20, }, empty: { textAlign: "center", marginTop: 30, color: "#888", }, filterMenuOverlay: { position: "absolute", top: 0, left: 0, right: 0, bottom: 0, backgroundColor: "rgba(0,0,0,0.4)", justifyContent: "center", alignItems: "center", zIndex: 999, }, filterMenu: { width: "80%", borderRadius: 12, padding: 20, }, filterTitle: { fontSize: 18, fontWeight: "bold", marginBottom: 20, textAlign: "center", }, });