Ajout des messages de retour ajout objet
This commit is contained in:
parent
6d561a5f1e
commit
07af6af1d4
@ -31,7 +31,7 @@ function MeteoInfos({
|
|||||||
console.log(rawData.length);
|
console.log(rawData.length);
|
||||||
return (
|
return (
|
||||||
<div key={object.id} className="bg-white p-6 rounded-xl min-w-5xl">
|
<div key={object.id} className="bg-white p-6 rounded-xl min-w-5xl">
|
||||||
{(AffAlert) && (
|
{(AffAlert&&(object.status==="active")) && (
|
||||||
<AlertInactive affAlert={AffAlert} setAffAlert={setAffAlert} />
|
<AlertInactive affAlert={AffAlert} setAffAlert={setAffAlert} />
|
||||||
)}
|
)}
|
||||||
<div className="flex align-items gap-6">
|
<div className="flex align-items gap-6">
|
||||||
|
|||||||
@ -12,7 +12,8 @@ function AddObject() {
|
|||||||
const [Response, setResponse] = useState(null);
|
const [Response, setResponse] = useState(null);
|
||||||
const [isActive, setActive] = useState(true);
|
const [isActive, setActive] = useState(true);
|
||||||
const [verif, setVerif] = useState(false);
|
const [verif, setVerif] = useState(false);
|
||||||
|
const [enregistre, setEnregistre] = useState(false);
|
||||||
|
const [messRequete, setMessRequete] = useState("");
|
||||||
function handleSubmit(event) {
|
function handleSubmit(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
@ -27,19 +28,21 @@ function AddObject() {
|
|||||||
status,
|
status,
|
||||||
})
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
console.log("Modification réussie :", response.data);
|
setMessRequete("Votre objet à bien été enregistré !");
|
||||||
|
setEnregistre(true);
|
||||||
|
console.log("Ajout de l'objet réussit :", response.data);
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
console.error("Erreur lors de la modification :", error);
|
setMessRequete("Il y a eu une erreur dans l'ajout de votre objet !");
|
||||||
|
console.error("Erreur lors de l'ajout de l'objet :", error);
|
||||||
});
|
});
|
||||||
}else{
|
setVerif(false);
|
||||||
|
resetForm();
|
||||||
|
} else {
|
||||||
setVerif(true);
|
setVerif(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function handleCancel() {
|
function resetForm() {
|
||||||
if(verif){
|
|
||||||
setVerif(false);
|
|
||||||
}else{
|
|
||||||
setNom("");
|
setNom("");
|
||||||
setStatus("");
|
setStatus("");
|
||||||
setDescription("");
|
setDescription("");
|
||||||
@ -47,6 +50,12 @@ function AddObject() {
|
|||||||
setLocalisation("");
|
setLocalisation("");
|
||||||
setActive(true);
|
setActive(true);
|
||||||
}
|
}
|
||||||
|
function handleCancel() {
|
||||||
|
if (verif) {
|
||||||
|
setVerif(false);
|
||||||
|
} else {
|
||||||
|
resetForm();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleStatusChange() {
|
function handleStatusChange() {
|
||||||
@ -74,7 +83,9 @@ function AddObject() {
|
|||||||
<BadgePlus className="text-indigo-600" size={24} />
|
<BadgePlus className="text-indigo-600" size={24} />
|
||||||
</div>
|
</div>
|
||||||
<h1 className="text-black text-2xl font-bold mb-1">
|
<h1 className="text-black text-2xl font-bold mb-1">
|
||||||
{(!verif)?("Entrez les données de votre nouvel objet"):("Êtes-vous sûr de ces données ?")}
|
{!verif
|
||||||
|
? "Entrez les données de votre nouvel objet"
|
||||||
|
: "Êtes-vous sûr de ces données ?"}
|
||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
<div className="mb-5">
|
<div className="mb-5">
|
||||||
@ -187,16 +198,19 @@ function AddObject() {
|
|||||||
type={"submit"}
|
type={"submit"}
|
||||||
className="text-blue-500 hover:cursor-pointer hover:underline mb-2"
|
className="text-blue-500 hover:cursor-pointer hover:underline mb-2"
|
||||||
>
|
>
|
||||||
{(!verif)?("Confirmer les informations"):("Oui je suis sûr !")}
|
{!verif ? "Confirmer les informations" : "Oui je suis sûr !"}
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="text-red-500 hover:cursor-pointer hover:underline"
|
className="text-red-500 hover:cursor-pointer hover:underline"
|
||||||
onClick={handleCancel}
|
onClick={handleCancel}
|
||||||
>
|
>
|
||||||
{(!verif)?("Supprimer les informations"):("Non je veux changer !")}
|
{!verif ? "Supprimer les informations" : "Non je veux changer !"}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
<p className={(enregistre)?("text-green-700"):("text-red-700")}>
|
||||||
|
{messRequete}
|
||||||
|
</p>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,17 +1,5 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import {
|
import { Search, ArrowRight, RadioTower,Plus } from "lucide-react";
|
||||||
Search,
|
|
||||||
MapPin,
|
|
||||||
Calendar,
|
|
||||||
Bus,
|
|
||||||
ArrowRight,
|
|
||||||
LogIn,
|
|
||||||
UserPlus,
|
|
||||||
RadioTower,
|
|
||||||
Binoculars,
|
|
||||||
Settings,
|
|
||||||
ChartArea,
|
|
||||||
} from "lucide-react";
|
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
|
|
||||||
@ -19,7 +7,7 @@ function ObjectManagement() {
|
|||||||
const [searchQuery, setSearchQuery] = useState("");
|
const [searchQuery, setSearchQuery] = useState("");
|
||||||
const [activeFilter, setActiveFilter] = useState("");
|
const [activeFilter, setActiveFilter] = useState("");
|
||||||
const [objects, setObjects] = useState([]);
|
const [objects, setObjects] = useState([]);
|
||||||
|
const [nbAffObject,setnbAffObject] = useState(6);
|
||||||
const filteredDATA = objects.filter((node) => {
|
const filteredDATA = objects.filter((node) => {
|
||||||
const matchesSearchQuery =
|
const matchesSearchQuery =
|
||||||
searchQuery === "" ||
|
searchQuery === "" ||
|
||||||
@ -29,19 +17,12 @@ function ObjectManagement() {
|
|||||||
const matchesTag =
|
const matchesTag =
|
||||||
activeFilter === "" ||
|
activeFilter === "" ||
|
||||||
node.name.toLowerCase().includes(activeFilter.toLowerCase()) ||
|
node.name.toLowerCase().includes(activeFilter.toLowerCase()) ||
|
||||||
node.description.includes(activeFilter.toLowerCase())||
|
node.description.includes(activeFilter.toLowerCase()) ||
|
||||||
(activeFilter=== "Active" && node.status.toLowerCase()==="active")||
|
(activeFilter === "Active" && node.status.toLowerCase() === "active") ||
|
||||||
(activeFilter=== "Inactive" && node.status.toLowerCase()==="inactive");
|
(activeFilter === "Inactive" && node.status.toLowerCase() === "inactive");
|
||||||
return matchesSearchQuery && matchesTag;
|
return matchesSearchQuery && matchesTag;
|
||||||
|
|
||||||
});
|
});
|
||||||
const handleSearchChange = (event) => {
|
|
||||||
setSearchQuery(event.target.value);
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleTagFilterChange = (selectedTags) => {
|
|
||||||
setFilterTags(selectedTags);
|
|
||||||
};
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
axios.get("http://localhost:8888/objets").then((response) => {
|
axios.get("http://localhost:8888/objets").then((response) => {
|
||||||
setObjects(response.data);
|
setObjects(response.data);
|
||||||
@ -126,19 +107,19 @@ function ObjectManagement() {
|
|||||||
{filteredDATA.length === 0 ? (
|
{filteredDATA.length === 0 ? (
|
||||||
<p>Aucun objet trouvé</p>
|
<p>Aucun objet trouvé</p>
|
||||||
) : (
|
) : (
|
||||||
filteredDATA.map((object) => (
|
filteredDATA.slice(0,nbAffObject).map((object) => (
|
||||||
<div
|
<div
|
||||||
key={object.id}
|
key={object.id}
|
||||||
className="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition-shadow "
|
className="bg-white p-6 rounded-xl shadow-sm hover:shadow-md transition-shadow "
|
||||||
>
|
>
|
||||||
{(object.status==="active")?(
|
{object.status === "active" ? (
|
||||||
<div className="relative w-full">
|
<div className="relative w-full">
|
||||||
<span className="absolute right-0 flex size-3">
|
<span className="absolute right-0 flex size-3">
|
||||||
<span className="absolute inline-flex h-full w-full rounded-full animate-ping bg-green-400 opacity-75"></span>
|
<span className="absolute inline-flex h-full w-full rounded-full animate-ping bg-green-400 opacity-75"></span>
|
||||||
<span className="relative inline-flex size-3 rounded-full bg-green-500"></span>
|
<span className="relative inline-flex size-3 rounded-full bg-green-500"></span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
):(
|
) : (
|
||||||
<div className="relative w-full">
|
<div className="relative w-full">
|
||||||
<span className="absolute right-0 flex size-3">
|
<span className="absolute right-0 flex size-3">
|
||||||
<span className="relative inline-flex size-3 rounded-full bg-red-600"></span>
|
<span className="relative inline-flex size-3 rounded-full bg-red-600"></span>
|
||||||
@ -161,6 +142,12 @@ function ObjectManagement() {
|
|||||||
))
|
))
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
{(nbAffObject<filteredDATA.length)&&(
|
||||||
|
<div className="flex items-center flex-col mt-6">
|
||||||
|
<button onClick={()=>{setnbAffObject((prev)=>prev+6 )}}><Plus size={40}/></button>
|
||||||
|
<label>Voir plus</label>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user