Merge pull request #50 from Since-3/feature/course-filter

added filter for courses for nievaus
This commit is contained in:
Rajpreet0 2026-02-17 18:54:31 +01:00 • committed by GitHub
commit ac9e73b3f9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 24 additions and 5 deletions

View file

@ -24,6 +24,7 @@ interface FilterValues {
filterSport: string;
filterTrainer: string;
filterRoom: string;
filterLevel: string;
dateFrom: string;
dateTo: string;
timeFrom: string;
@ -40,6 +41,7 @@ interface CourseFilterProps {
filterSport: string;
filterTrainer: string;
filterRoom: string;
filterLevel: string;
dateFrom: string;
dateTo: string;
timeFrom: string;
@ -65,6 +67,7 @@ const CourseFilter: React.FC<CourseFilterProps> = ({
filterSport,
filterTrainer,
filterRoom,
filterLevel,
dateFrom,
dateTo,
timeFrom,
@ -84,6 +87,7 @@ const CourseFilter: React.FC<CourseFilterProps> = ({
const [localSport, setLocalSport] = useState(filterSport);
const [localTrainer, setLocalTrainer] = useState(filterTrainer);
const [localRoom, setLocalRoom] = useState(filterRoom);
const [localLevel, setLocalLevel] = useState(filterLevel);
const [localDateFrom, setLocalDateFrom] = useState(dateFrom);
const [localDateTo, setLocalDateTo] = useState(dateTo);
const [localTimeFrom, setLocalTimeFrom] = useState(timeFrom);
@ -99,6 +103,7 @@ const CourseFilter: React.FC<CourseFilterProps> = ({
setLocalSport(filterSport);
setLocalTrainer(filterTrainer);
setLocalRoom(filterRoom);
setLocalLevel(filterLevel);
setLocalDateFrom(dateFrom);
setLocalDateTo(dateTo);
setLocalTimeFrom(timeFrom);
@ -114,6 +119,7 @@ const CourseFilter: React.FC<CourseFilterProps> = ({
filterSport !== "all" ||
filterTrainer !== "all" ||
filterRoom !== "all" ||
filterLevel !== "all" ||
!!dateFrom ||
!!dateTo ||
!!timeFrom ||
@ -127,6 +133,7 @@ const CourseFilter: React.FC<CourseFilterProps> = ({
filterSport: localSport,
filterTrainer: localTrainer,
filterRoom: localRoom,
filterLevel: localLevel,
dateFrom: localDateFrom,
dateTo: localDateTo,
timeFrom: localTimeFrom,
@ -141,6 +148,7 @@ const CourseFilter: React.FC<CourseFilterProps> = ({
setLocalSport("all");
setLocalTrainer("all");
setLocalRoom("all");
setLocalLevel("all");
setLocalDateFrom("");
setLocalDateTo("");
setLocalTimeFrom("");
@ -276,14 +284,19 @@ const CourseFilter: React.FC<CourseFilterProps> = ({
</select>
</div>
{/* TODO: Niveau */}
{/* Niveau */}
<div className="space-y-1">
<label className="font-medium">Niveau</label>
<select className="h-10 w-full px-3 rounded-lg border border-gray-300 bg-gray-50 focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-300 transition">
<option value="everyone">Jedes Niveau</option>
<select
value={localLevel}
onChange={(e) => setLocalLevel(e.target.value)}
className="h-10 w-full px-3 rounded-lg border border-gray-300 bg-gray-50 focus:outline-none focus:border-blue-500 focus:ring-2 focus:ring-blue-300 transition"
>
<option value="all">Alle</option>
<option value="any">Jedes Niveau</option>
<option value="beginner">Anfänger</option>
<option value="intermediate">Fortgeschritten</option>
<option value="advanced">Profi</option>
<option value="advanced">Fortgeschrittene</option>
<option value="pro">Profi</option>
</select>
</div>

View file

@ -44,6 +44,7 @@ const CourseListView = () => {
const [filterSport, setFilterSport] = useState<string>("all");
const [filterTrainer, setFilterTrainer] = useState<string>("all");
const [filterRoom, setFilterRoom] = useState<string>(searchParams.get("room") ?? "all");
const [filterLevel, setFilterLevel] = useState<string>("all");
const [dateFrom, setDateFrom] = useState("");
const [dateTo, setDateTo] = useState("");
const [timeFrom, setTimeFrom] = useState("");
@ -280,6 +281,7 @@ const CourseListView = () => {
const filteredCourses = courses.filter((course) => {
if (filterStatus !== "all" && course.status !== filterStatus) return false;
if (filterSport !== "all" && !course.sport.includes(filterSport)) return false;
if (filterLevel !== "all" && course.level !== filterLevel) return false;
// Trainer filter
if (filterTrainer !== "all" && !course.trainers.includes(filterTrainer)) return false;
@ -375,6 +377,7 @@ const CourseListView = () => {
filterSport !== "all",
filterTrainer !== "all",
filterRoom !== "all",
filterLevel !== "all",
!!dateFrom,
!!dateTo,
!!timeFrom,
@ -392,6 +395,7 @@ const CourseListView = () => {
filterSport={filterSport}
filterTrainer={filterTrainer}
filterRoom={filterRoom}
filterLevel={filterLevel}
dateFrom={dateFrom}
dateTo={dateTo}
timeFrom={timeFrom}
@ -408,6 +412,7 @@ const CourseListView = () => {
setFilterSport(filters.filterSport);
setFilterTrainer(filters.filterTrainer);
setFilterRoom(filters.filterRoom);
setFilterLevel(filters.filterLevel);
setDateFrom(filters.dateFrom);
setDateTo(filters.dateTo);
setTimeFrom(filters.timeFrom);
@ -420,6 +425,7 @@ const CourseListView = () => {
setFilterSport("all");
setFilterTrainer("all");
setFilterRoom("all");
setFilterLevel("all");
setDateFrom("");
setDateTo("");
setTimeFrom("");