Skip to content

Commit

Permalink
fix: vehiclelist showing wrong data
Browse files Browse the repository at this point in the history
  • Loading branch information
BubbleDK committed Aug 23, 2024
1 parent ad7775d commit 0927f48
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 88 deletions.

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion web/build/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<link href="https://fonts.googleapis.com/css2?family=Nunito&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@latest/tabler-icons.min.css" />
<title>Bubble MDT</title>
<script type="module" crossorigin src="./assets/index-70d9712c.js"></script>
<script type="module" crossorigin src="./assets/index-28d9c9ba.js"></script>
<link rel="stylesheet" href="./assets/index-40fcadd0.css">
</head>
<body>
Expand Down
187 changes: 101 additions & 86 deletions web/src/layers/mdt/components/Vehicles/components/VehicleList.tsx
Original file line number Diff line number Diff line change
@@ -1,101 +1,116 @@
import { rem, Input, Divider, Text, ScrollArea, Center, Loader } from "@mantine/core"
import { IconSearch, IconCar } from "@tabler/icons-react"
import '../index.css'
import { useState, useEffect } from "react"
import { PartialVehicleData } from "../../../../../typings"
import locales from "../../../../../locales"
import useVehiclesStore from "../../../../../stores/vehicles/vehicles"
import { capitalizeFirstLetter } from "../../../../../helpers"
import {
rem,
Input,
Divider,
Text,
ScrollArea,
Center,
Loader,
} from "@mantine/core";
import { IconSearch, IconCar } from "@tabler/icons-react";
import "../index.css";
import { useState, useEffect } from "react";
import { PartialVehicleData } from "../../../../../typings";
import locales from "../../../../../locales";
import useVehiclesStore from "../../../../../stores/vehicles/vehicles";
import { capitalizeFirstLetter } from "../../../../../helpers";

interface VehicleListProps {
handleVehicleClick: (vehicle: PartialVehicleData) => void
handleVehicleClick: (vehicle: PartialVehicleData) => void;
}

const VehicleList = (props: VehicleListProps) => {
const [searchQuery, setSearchQuery] = useState('');
const { getVehicles } = useVehiclesStore();
const [vehicles, setVehicles] = useState<PartialVehicleData[]>([]);
const [filteredVehicles, setFilteredVehicles] = useState<PartialVehicleData[]>(vehicles);
const [isLoading, setIsLoading] = useState(false);
const [searchQuery, setSearchQuery] = useState("");
const { getVehicles } = useVehiclesStore();
const [vehicles, setVehicles] = useState<PartialVehicleData[]>([]);
const [filteredVehicles, setFilteredVehicles] =
useState<PartialVehicleData[]>(vehicles);
const [isLoading, setIsLoading] = useState(false);

useEffect(() => {
setIsLoading(true);
const fetchData = async () => {
return await getVehicles();
};
useEffect(() => {
setIsLoading(true);
const fetchData = async () => {
return await getVehicles();
};

fetchData().then((data) => {
setVehicles(data);
setFilteredVehicles(data);
setIsLoading(false);
});
}, [])
fetchData().then((data) => {
setVehicles(data);
setFilteredVehicles(data);
setIsLoading(false);
});
}, []);

useEffect(() => {
if (searchQuery.trim() === '') {
setFilteredVehicles(vehicles);
} else {
const results = vehicles.filter(vehicle =>
(vehicle.plate || '').toLowerCase().includes(searchQuery.toLowerCase()) ||
(vehicle.model || '').toLowerCase().includes(searchQuery.toLowerCase())
);
setFilteredVehicles(results);
}
}, [searchQuery, filteredVehicles]);
useEffect(() => {
if (searchQuery.trim() === "") {
setFilteredVehicles(vehicles);
} else {
const results = vehicles.filter(
(vehicle) =>
(vehicle.plate || "")
.toLowerCase()
.includes(searchQuery.toLowerCase()) ||
(vehicle.model || "")
.toLowerCase()
.includes(searchQuery.toLowerCase())
);
setFilteredVehicles(results);
}
}, [searchQuery, filteredVehicles]);

return (
<div className='vehicle-content-list-width'>
<div className='card-background'>
<div className='card-title'>
<Text style={{ fontSize: 17, color: "white" }} weight={500}>
{locales.vehicles}
</Text>
return (
<div className='vehicle-content-list-width'>
<div className='card-background'>
<div className='card-title'>
<Text style={{ fontSize: 17, color: "white" }} weight={500}>
{locales.vehicles}
</Text>

<IconCar size={rem(25)} color='white' />
</div>
<IconCar size={rem(25)} color='white' />
</div>

<Input
icon={<IconSearch />}
variant="filled"
placeholder={locales.search}
mt={10}
mb={10}
value={searchQuery}
onChange={e => setSearchQuery(e.target.value)}
/>
<Input
icon={<IconSearch />}
variant='filled'
placeholder={locales.search}
mt={10}
mb={10}
value={searchQuery}
onChange={(e) => setSearchQuery(e.target.value)}
/>

<Divider mt={5} mb={5} />
<Divider mt={5} mb={5} />

<div className='Vehicles-card-content'>
<ScrollArea h={860}>
<div className="Vehicles-card-content-flex">
{isLoading ? (
<Center h={'100%'}>
<Loader />
</Center>
) : filteredVehicles.length > 0 ? (
filteredVehicles.map((vehicle) => (
<div className='vehicles-card' onClick={() => props.handleVehicleClick(vehicle)} key={vehicle.plate}>
<Text weight={600} style={{ fontSize: 14, color: 'white' }}>
{capitalizeFirstLetter(vehicle.model)}
</Text>
<div className='Vehicles-card-content'>
<ScrollArea h={860}>
<div className='Vehicles-card-content-flex'>
{isLoading ? (
<Center h={"100%"}>
<Loader />
</Center>
) : (
filteredVehicles.length > 0 &&
filteredVehicles.map((vehicle) => (
<div
className='vehicles-card'
onClick={() => props.handleVehicleClick(vehicle)}
key={vehicle.plate}
>
<Text weight={600} style={{ fontSize: 14, color: "white" }}>
{capitalizeFirstLetter(vehicle.model)}
</Text>

<Text weight={500} style={{ fontSize: 10, color: 'white' }}>
{vehicle.plate}
</Text>
</div>
))
) : (
<Text color='dimmed' size='xs'>
{locales.no_profiles_found}
</Text>
)}
</div>
</ScrollArea>
</div>
</div>
</div>
)
}
<Text weight={500} style={{ fontSize: 10, color: "white" }}>
{vehicle.plate}
</Text>
</div>
))
)}
</div>
</ScrollArea>
</div>
</div>
</div>
);
};

export default VehicleList;
export default VehicleList;

0 comments on commit 0927f48

Please sign in to comment.