diff --git a/class/class.tsx b/class/class.tsx index dd59d2b..23fa415 100644 --- a/class/class.tsx +++ b/class/class.tsx @@ -26,7 +26,7 @@ export type User = { export type Ressources = { id: number; name: string; - type: string; //"machine","ouvrier" + type: string; //"machine","outil","ouvrier" Image: string; quantity: number; available_quantity: number; diff --git a/components/add/addChantier.tsx b/components/add/addChantier.tsx index 0bf458a..6b7bd6e 100644 --- a/components/add/addChantier.tsx +++ b/components/add/addChantier.tsx @@ -155,7 +155,7 @@ export default function AddChantier() { ) } - const renderInutDate = (name : string) => { + const renderInputDate = (name : string) => { return ( {name}: @@ -211,7 +211,7 @@ export default function AddChantier() { {renderInut("Objet","Renovation",objet,setObjet,false)} {//renderInut("Date de départ","TOTO : JOUR + Demi journé",date,setDate) } - {renderInutDate("Date de départ")} + {renderInputDate("Date de départ")} {renderInut("Estimation de la durée (en demi-journées)","14",duree,setDuree,true)} {renderInut("Adresse","1 Rue de la Coutellerie, Paris",adresse,setAdresse,false)} {renderInut("Contact client","07 01 02 03 04 05",contact,setContact,true)} diff --git a/components/selectChantier.tsx b/components/selectChantier.tsx index df19452..8e2f78e 100644 --- a/components/selectChantier.tsx +++ b/components/selectChantier.tsx @@ -6,6 +6,7 @@ import { useEffect, useState } from "react"; import { ActivityIndicator, Dimensions, + FlatList, Image, Pressable, ScrollView, @@ -13,7 +14,11 @@ import { View } from "react-native"; import Animated, { - LinearTransition + interpolate, + LinearTransition, + useAnimatedStyle, + useSharedValue, + withTiming } from "react-native-reanimated"; import { ThemedButton } from "@/components/theme/themed-button"; import { ThemedText } from "@/components/theme/themed-text"; @@ -56,10 +61,9 @@ export default function SelectChantier() { } } - function onPressAddChantier(){ - router.push("/(tabs)/addScreen") - setIsOpen(false) - } + useEffect(() => { + open.value = withTiming(isOpen ? 1 : 0); + }, [isOpen]); useEffect(() => { async function loadChantiers() { @@ -70,22 +74,57 @@ export default function SelectChantier() { loadChantiers(); }, []); + const filteredChantiers = chantiers.filter((chantier) => { + var keyWords:string[] = search.toLowerCase().split(" ") ; + var containsAllKeyWord:boolean = true; + keyWords.forEach(keyWord => { + containsAllKeyWord = containsAllKeyWord && (chantier.adresse.toLowerCase().includes(keyWord)) + }); + return containsAllKeyWord + }); + function selectChantier(chantier: Chantier): void { setChantier(chantier); setIsOpen(false); } - const renderChantier = (chantier: Chantier, index: number) => { + + const open = useSharedValue(0); + + const animatedWindowStyle = useAnimatedStyle(() => { + return { + width: `${interpolate(open.value, [0, 1], [50, 100])}%`, + height: interpolate( + open.value, + [0, 1], + [60, screenHeight * 0.75] + ), + padding: 10, + overflow: "hidden", + zIndex: 1000, + }; + }); + + const animatedButtonStyle = useAnimatedStyle(() => ({ + width: `${interpolate(open.value, [0, 1], [100, 50])}%`, + margin: interpolate(open.value, [0, 1], [0, 5]), + borderRadius: interpolate(open.value, [0, 1], [15, 10]), + padding: 10, + height: 40, + })); + + + const renderChantier = ({ item }: { item:Chantier }) => { return ( - selectChantier(chantier)}> + selectChantier(item)}> - Adresse: {chantier.adresse} - Chef de chantier: {chantier.chef.last_name}{" "}{chantier.chef.name} - État: {chantier.etat} + Adresse: {item.adresse} + Chef de chantier: {item.chef.last_name}{" "}{item.chef.name} + État: {item.etat} @@ -93,10 +132,10 @@ export default function SelectChantier() { }; return ( - + {isOpen && ( setIsOpen(false)}/>)} - - onPressOpen()}> + + onPressOpen()}> {isOpen ? "Fermer" : (chantier!=null ? chantier.adresse : "Chantier")} @@ -105,29 +144,28 @@ export default function SelectChantier() { - - onPressAddChantier()}> - - + - - {isLoaded? - - {chantiers.map((chantier, index) => - renderChantier(chantier, index) - )} - + index.toString()} + contentContainerStyle={{ gap: 8 }} + /> + + + : } )} - + ); } + const styles = StyleSheet.create({ windowClose: { //backgroundColor: '#00FF0040', @@ -220,11 +258,4 @@ const styles = StyleSheet.create({ buttonText: { textAlign: "center", }, - buttonAdd:{ - borderRadius: 10, - marginBottom: 10, - height: 30, - alignItems: 'center', - justifyContent: 'center', - } });