again n again
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import { useRouter } from 'next/navigation';
|
||||
import { ThemeToggle } from '@/components/theme-toggle';
|
||||
import { Menu, ChevronDown, BarChart, Database, GraduationCap, BookOpen, Award, LogOut, User, Users } from 'lucide-react';
|
||||
import { Menu, ChevronDown, BarChart, Database, GraduationCap, BookOpen, Award, LogOut, User, Users, BookOpenText } from 'lucide-react';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { Sheet, SheetContent, SheetTrigger } from '@/components/ui/sheet';
|
||||
import {
|
||||
@@ -220,6 +220,18 @@ const Navbar = () => {
|
||||
Dosen
|
||||
</Link>
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem asChild>
|
||||
<Link href="/keloladata/matakuliah" className="flex items-center gap-2 w-full">
|
||||
<BookOpen className="h-4 w-4" />
|
||||
Mata Kuliah
|
||||
</Link>
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem asChild>
|
||||
<Link href="/keloladata/nilaimahasiswa" className="flex items-center gap-2 w-full">
|
||||
<BookOpenText className="h-4 w-4" />
|
||||
Nilai Mahasiswa
|
||||
</Link>
|
||||
</DropdownMenuItem>
|
||||
</DropdownMenuContent>
|
||||
</DropdownMenu>
|
||||
)}
|
||||
@@ -339,6 +351,14 @@ const MobileNavContent = ({ user, onLogout }: MobileNavContentProps) => {
|
||||
<Users className="h-4 w-4" />
|
||||
Dosen
|
||||
</Link>
|
||||
<Link href="/keloladata/matakuliah" className="flex items-center gap-2 px-3 py-2 text-sm hover:bg-accent hover:text-accent-foreground rounded-md transition-colors">
|
||||
<BookOpen className="h-4 w-4" />
|
||||
Mata Kuliah
|
||||
</Link>
|
||||
<Link href="/keloladata/nilaimahasiswa" className="flex items-center gap-2 px-3 py-2 text-sm hover:bg-accent hover:text-accent-foreground rounded-md transition-colors">
|
||||
<BookOpenText className="h-4 w-4" />
|
||||
Nilai Mahasiswa
|
||||
</Link>
|
||||
</div>
|
||||
)}
|
||||
|
||||
|
||||
52
components/ui/filter-nama-dosen.tsx
Normal file
52
components/ui/filter-nama-dosen.tsx
Normal file
@@ -0,0 +1,52 @@
|
||||
'use client';
|
||||
|
||||
import { useState, useEffect } from 'react';
|
||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
|
||||
|
||||
interface Props {
|
||||
selectedDosen: string;
|
||||
onDosenChange: (dosen: string) => void;
|
||||
}
|
||||
|
||||
export default function FilterNamaDosen({ selectedDosen, onDosenChange }: Props) {
|
||||
const [dosenList, setDosenList] = useState<string[]>([]);
|
||||
|
||||
useEffect(() => {
|
||||
const fetchDosenList = async () => {
|
||||
try {
|
||||
const response = await fetch('/api/dosen/list');
|
||||
if (!response.ok) {
|
||||
throw new Error('Failed to fetch dosen list');
|
||||
}
|
||||
const data = await response.json();
|
||||
setDosenList(data);
|
||||
} catch (error) {
|
||||
console.error('Error fetching dosen list:', error);
|
||||
}
|
||||
};
|
||||
|
||||
fetchDosenList();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<div className="flex items-center gap-2">
|
||||
<span className="text-sm font-medium dark:text-white">Filter Dosen:</span>
|
||||
<Select value={selectedDosen} onValueChange={onDosenChange}>
|
||||
<SelectTrigger className="w-[250px] focus:outline-none focus:ring-0 focus:ring-offset-0 dark:text-white">
|
||||
<SelectValue placeholder="Pilih Nama Dosen" />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
<SelectItem value="all">Semua Dosen</SelectItem>
|
||||
{dosenList.map((dosen) => (
|
||||
<SelectItem
|
||||
key={dosen}
|
||||
value={dosen}
|
||||
>
|
||||
{dosen}
|
||||
</SelectItem>
|
||||
))}
|
||||
</SelectContent>
|
||||
</Select>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user