"use client" import { ArrowLeftIcon, ChevronLeft } from "lucide-react" import Link from "next/link" import { useRouter } from "next/navigation" import { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, } from "@/components/ui/drawer" import { Button } from "@/components/ui/button" import Image from "next/image" import { useEffect, useState } from "react" import { socket } from "@/components/socket" const dummy = [ { url: "/sample-1.jpg" }, { url: "/sample-2.jpg" }, { url: "/sample-3.jpg" }, { url: "/sample-4.jpg" }, { url: "/sample-1.jpg" }, { url: "/sample-2.jpg" }, { url: "/sample-3.jpg" }, { url: "/sample-4.jpg" }, { url: "/sample-1.jpg" }, ] const stream_dummy = [ "/app/static/uploads/ds1.mp4", "/app/static/uploads/ds2.mp4", "/app/static/uploads/ds3.mp4", "/app/static/uploads/ds4.mp4", ] export default function Etle() { const router = useRouter() const [sessionId, setSessionId] = useState(null) const [imageSrc, setImageSrc] = useState("") const [plate, setPlate] = useState("") const [confidence, setConfidence] = useState(null) const [history, setHistory] = useState([]) const startDetection = (index: number) => { const stream = stream_dummy[index] socket.emit("stop_detection") socket.emit("start_detection", { stream_url: stream, }) } useEffect(() => { if (!socket.connected) { socket.connect() } socket.on("connected", (data) => { setSessionId(data.session_id) socket.emit("start_detection", { stream_url: "/app/static/uploads/ds1.mp4", }) }) socket.on("video_frame", (data) => { const thumb = `data:image/jpeg;base64,${data.frame}` setImageSrc(thumb) setHistory((prev) => [thumb, ...prev].slice(0, 20)) }) socket.on("plate_detected", (data) => { setPlate(data.plate_text) setConfidence(data.confidence ?? null) const thumb = `data:image/jpeg;base64,${data.frame_thumb}` setHistory((prev) => [thumb, ...prev].slice(0, 20)) }) // socket.on("detection_stopped", (data) => { // console.log("Total:", data.total) // }) socket.on("error", (data) => { console.error(data.message) }) return () => { socket.emit("stop_detection") socket.removeAllListeners() socket.disconnect() } }, []) // const startDetection = () => { // socket.emit("start_detection", { // stream_url: "/app/static/uploads/ds1", // }) // } return (

ETLE Toll

TRAFFIC VIOLATIONS

{/* */}
{stream_dummy.map((stream, index) => ( ))}
{imageSrc && ( Realtime )}

VIOLATIONS

{plate ? `Plat ${plate} terdeteksi dengan confidence ${confidence}` : "Menunggu deteksi..."}

Total Image: {history.length}
{" "} {history.map((item, index) => (
{"image"
))} {history.map((img, index) => (
))}
{/*
Total Image: 10
{" "}
*/}
) }