ui updated
This commit is contained in:
parent
d50ac4ed64
commit
adf9d8ef3e
@ -1,144 +1,8 @@
|
||||
// "use client";
|
||||
// import React, { useRef, useState, useEffect } from "react";
|
||||
// import "./Register.css"; // Import CSS for styling
|
||||
|
||||
// const Register: React.FC = () => {
|
||||
// const videoRef = useRef<HTMLVideoElement>(null);
|
||||
// const canvasRef = useRef<HTMLCanvasElement>(null);
|
||||
// const [name, setName] = useState<string>("");
|
||||
// const [error, setError] = useState<string>(""); // State for error message
|
||||
|
||||
// // Automatically open the camera when the component mounts
|
||||
// useEffect(() => {
|
||||
// const openCamera = async () => {
|
||||
// try {
|
||||
// const stream = await navigator.mediaDevices.getUserMedia({
|
||||
// video: true,
|
||||
// });
|
||||
// if (videoRef.current) {
|
||||
// videoRef.current.srcObject = stream;
|
||||
// }
|
||||
// } catch (err) {
|
||||
// console.error("Error accessing the camera", err);
|
||||
// }
|
||||
// };
|
||||
|
||||
// openCamera();
|
||||
// }, []);
|
||||
|
||||
// // Capture image from video stream
|
||||
// const captureImage = () => {
|
||||
// if (!name.trim()) {
|
||||
// setError("Name is required"); // Set error message if name is empty
|
||||
// return;
|
||||
// }
|
||||
|
||||
// const video = videoRef.current;
|
||||
// const canvas = canvasRef.current;
|
||||
|
||||
// if (video && canvas) {
|
||||
// const context = canvas.getContext("2d");
|
||||
// if (context) {
|
||||
// // Draw the current frame from the video on the canvas
|
||||
// context.drawImage(video, 0, 0, canvas.width, canvas.height);
|
||||
// canvas.toBlob((blob) => {
|
||||
// if (blob) {
|
||||
// const file = new File([blob], "captured-image.png", {
|
||||
// type: "image/png",
|
||||
// });
|
||||
// callApi(name, file);
|
||||
// }
|
||||
// }, "image/png");
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
|
||||
// // Call API with name and image file
|
||||
// const callApi = async (name: string, file: File) => {
|
||||
// const formData = new FormData();
|
||||
// formData.append("name", name);
|
||||
// formData.append("image", file);
|
||||
|
||||
// try {
|
||||
// const startTime = performance.now();
|
||||
// const response = await fetch(
|
||||
// `${process.env.NEXT_PUBLIC_BASE_URL}/register`,
|
||||
// {
|
||||
// method: "POST",
|
||||
// body: formData,
|
||||
// }
|
||||
// );
|
||||
|
||||
// // End measuring time
|
||||
// const endTime = performance.now();
|
||||
// const totalTime = (endTime - startTime) / 1000; // Convert milliseconds to seconds
|
||||
|
||||
// if (response.ok) {
|
||||
// const data = await response.json();
|
||||
// console.log("API call successful");
|
||||
// alert(
|
||||
// `Message: ${data.message}\nName: ${
|
||||
// data?.name
|
||||
// }\nTime taken: ${totalTime.toFixed(2)} seconds`
|
||||
// ); // Show success message with time taken
|
||||
// setError(""); // Clear error message on success
|
||||
// } else {
|
||||
// console.error("API call failed");
|
||||
// setError("Failed to register. Please try again."); // Set error message on failure
|
||||
// }
|
||||
// } catch (error) {
|
||||
// console.error("Error calling API", error);
|
||||
// setError("An error occurred. Please try again."); // Set error message on exception
|
||||
// }
|
||||
// };
|
||||
|
||||
// return (
|
||||
// <div className="container">
|
||||
// <h1 className="title">Face Capture Form</h1>
|
||||
// <form className="form">
|
||||
// <div className="form-group">
|
||||
// <label htmlFor="name" className="label">
|
||||
// Name:
|
||||
// </label>
|
||||
// <input
|
||||
// id="name"
|
||||
// type="text"
|
||||
// value={name}
|
||||
// onChange={(e) => {
|
||||
// setName(e.target.value);
|
||||
// setError(""); // Clear error message when user starts typing
|
||||
// }}
|
||||
// className="input"
|
||||
// placeholder="Enter your name"
|
||||
// required
|
||||
// />
|
||||
// {error && !name.trim() && (
|
||||
// <p className="error-message">{error}</p> // Display error message if name is empty
|
||||
// )}
|
||||
// </div>
|
||||
// <div className="video-container">
|
||||
// <video ref={videoRef} autoPlay playsInline className="video" />
|
||||
// </div>
|
||||
// <button type="button" onClick={captureImage} className="capture-button">
|
||||
// Capture Image
|
||||
// </button>
|
||||
// <canvas
|
||||
// ref={canvasRef}
|
||||
// style={{ display: "none" }}
|
||||
// width="640"
|
||||
// height="480"
|
||||
// />
|
||||
// </form>
|
||||
// </div>
|
||||
// );
|
||||
// };
|
||||
|
||||
// export default Register;
|
||||
|
||||
|
||||
"use client";
|
||||
import React, { useRef, useState, useEffect } from "react";
|
||||
import "./Register.css"; // Import CSS for styling
|
||||
import { toast } from "@/hooks/use-toast";
|
||||
import { Button } from "../ui/button";
|
||||
|
||||
const Register: React.FC = () => {
|
||||
const videoRef = useRef<HTMLVideoElement>(null);
|
||||
@ -235,18 +99,19 @@ const Register: React.FC = () => {
|
||||
|
||||
if (response.ok) {
|
||||
const data = await response.json();
|
||||
console.log("API call successful");
|
||||
alert(
|
||||
`Message: ${data.message}\nName: ${data?.name}\nTime taken: ${totalTime.toFixed(2)} seconds`
|
||||
); // Show success message with time taken
|
||||
setError(""); // Clear error message on success
|
||||
console.log("API call successful", totalTime);
|
||||
toast({
|
||||
title: data.message,
|
||||
description: `Name: ${data?.name} `,
|
||||
});
|
||||
setError("");
|
||||
} else {
|
||||
console.error("API call failed");
|
||||
setError("Failed to register. Please try again."); // Set error message on failure
|
||||
setError("Failed to register. Please try again.");
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error calling API", error);
|
||||
setError("An error occurred. Please try again."); // Set error message on exception
|
||||
setError("An error occurred. Please try again.");
|
||||
}
|
||||
};
|
||||
|
||||
@ -275,15 +140,20 @@ const Register: React.FC = () => {
|
||||
)}
|
||||
</div>
|
||||
|
||||
<div className="video-container">
|
||||
<video ref={videoRef} autoPlay playsInline className="video" />
|
||||
<button
|
||||
<div className="mb-5">
|
||||
<video
|
||||
ref={videoRef}
|
||||
autoPlay
|
||||
playsInline
|
||||
className="w-full max-w-[500px] rounded-lg shadow-md scale-x-[-1]"
|
||||
/>
|
||||
<Button
|
||||
type="button"
|
||||
onClick={captureImage}
|
||||
className="capture-button"
|
||||
>
|
||||
Capture Image
|
||||
</button>
|
||||
</Button>
|
||||
</div>
|
||||
<div>Or</div>
|
||||
|
||||
|
@ -1,105 +1,7 @@
|
||||
// import React, { useRef, useEffect } from "react";
|
||||
// import "./Search.css"; // Import CSS for styling
|
||||
|
||||
// const Search: React.FC = () => {
|
||||
// const videoRef = useRef<HTMLVideoElement>(null);
|
||||
// const canvasRef = useRef<HTMLCanvasElement>(null);
|
||||
|
||||
// // Automatically open the camera when the component mounts
|
||||
// useEffect(() => {
|
||||
// const openCamera = async () => {
|
||||
// try {
|
||||
// const stream = await navigator.mediaDevices.getUserMedia({
|
||||
// video: true,
|
||||
// });
|
||||
// if (videoRef.current) {
|
||||
// videoRef.current.srcObject = stream;
|
||||
// }
|
||||
// } catch (err) {
|
||||
// console.error("Error accessing the camera", err);
|
||||
// }
|
||||
// };
|
||||
|
||||
// openCamera();
|
||||
// }, []);
|
||||
|
||||
// // Capture image from video stream
|
||||
// const captureImage = () => {
|
||||
// const video = videoRef.current;
|
||||
// const canvas = canvasRef.current;
|
||||
|
||||
// if (video && canvas) {
|
||||
// const context = canvas.getContext("2d");
|
||||
// if (context) {
|
||||
// context.drawImage(video, 0, 0, canvas.width, canvas.height);
|
||||
// canvas.toBlob((blob) => {
|
||||
// if (blob) {
|
||||
// const file = new File([blob], "captured-image.png", {
|
||||
// type: "image/png",
|
||||
// });
|
||||
// callApi(file);
|
||||
// }
|
||||
// }, "image/png");
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
|
||||
// // Call API with the captured image file
|
||||
// const callApi = async (file: File) => {
|
||||
// const formData = new FormData();
|
||||
// formData.append("image", file); // Append the file to the form data
|
||||
|
||||
// try {
|
||||
// const startTime = performance.now();
|
||||
// const response = await fetch(
|
||||
// `${process.env.NEXT_PUBLIC_BASE_URL}/search`,
|
||||
// {
|
||||
// method: "POST",
|
||||
// body: formData, // Send the form data
|
||||
// }
|
||||
// );
|
||||
// // End measuring time
|
||||
// const endTime = performance.now();
|
||||
// const totalTime = (endTime - startTime) / 1000;
|
||||
// if (response.ok) {
|
||||
// const data = await response.json();
|
||||
// console.log("API call successful", data);
|
||||
// alert(
|
||||
// `Search result: ${data.message}\nName: ${
|
||||
// data?.name
|
||||
// }\nTime taken: ${totalTime.toFixed(2)} seconds`
|
||||
// );
|
||||
// } else {
|
||||
// console.error("API call failed");
|
||||
// }
|
||||
// } catch (error) {
|
||||
// console.error("Error calling API", error);
|
||||
// }
|
||||
// };
|
||||
|
||||
// return (
|
||||
// <div className="search-container">
|
||||
// <h2>Search</h2>
|
||||
// <div className="video-container">
|
||||
// <video ref={videoRef} autoPlay playsInline className="video" />
|
||||
// </div>
|
||||
// <button type="button" onClick={captureImage} className="capture-button">
|
||||
// Capture Image
|
||||
// </button>
|
||||
// <canvas
|
||||
// ref={canvasRef}
|
||||
// style={{ display: "none" }}
|
||||
// width="640"
|
||||
// height="480"
|
||||
// />
|
||||
// </div>
|
||||
// );
|
||||
// };
|
||||
|
||||
// export default Search;
|
||||
|
||||
import React, { useRef, useEffect } from "react";
|
||||
import "./Search.css"; // Import CSS for styling
|
||||
import { Button } from "../ui/button";
|
||||
import { toast } from "@/hooks/use-toast";
|
||||
|
||||
const Search: React.FC = () => {
|
||||
const videoRef = useRef<HTMLVideoElement>(null);
|
||||
@ -169,11 +71,12 @@ const Search: React.FC = () => {
|
||||
if (response.ok) {
|
||||
const data = await response.json();
|
||||
console.log("API call successful", data);
|
||||
alert(
|
||||
`Search result: ${data.message}\nName: ${
|
||||
data?.name
|
||||
}\nTime taken: ${totalTime.toFixed(2)} seconds`
|
||||
);
|
||||
toast({
|
||||
title: data.message,
|
||||
description: `Name: ${data?.name}\n\nTime taken: ${totalTime.toFixed(
|
||||
2
|
||||
)} seconds`,
|
||||
});
|
||||
} else {
|
||||
console.error("API call failed");
|
||||
}
|
||||
@ -188,9 +91,9 @@ const Search: React.FC = () => {
|
||||
<div className="video-container">
|
||||
<video ref={videoRef} autoPlay playsInline className="video" />
|
||||
</div>
|
||||
<button type="button" onClick={captureImage} className="capture-button">
|
||||
<Button type="button" onClick={captureImage} className="capture-button">
|
||||
Capture Image
|
||||
</button>
|
||||
</Button>
|
||||
<div>Or</div>
|
||||
<div className="upload-container">
|
||||
<label htmlFor="upload" className="upload-label">
|
||||
|
Loading…
x
Reference in New Issue
Block a user