diff --git a/src/App.tsx b/src/App.tsx index 3d6c7fc..2f4b2bb 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -7,7 +7,10 @@ import Footer from "./components/Footer"; const App: React.FC = () => { const [formData, setFormData] = useState(null); - const [generatedImageDataUrl, setGeneratedImageDataUrl] = useState< + const [selectedRole, setSelectedRole] = useState(""); + const [selectedRegion, setSelectedRegion] = useState("") + const [generatedImageDataUrl, setGeneratedImageDataUrl] = useState + < string | null >(null); @@ -22,11 +25,11 @@ const App: React.FC = () => {
-
+ {generatedImageDataUrl && ( - + )} diff --git a/src/components/Form.tsx b/src/components/Form.tsx index 6c80b1a..9d97dfd 100644 --- a/src/components/Form.tsx +++ b/src/components/Form.tsx @@ -1,8 +1,10 @@ import React, { useState } from "react"; -import { TextField, Button, Grid, Card } from "@mui/material"; +import { TextField, Button, Grid, Card, MenuItem, Select, SelectChangeEvent } from "@mui/material"; interface FormProps { onSubmit: (formData: FormData, imageDataUrl: string) => void; + selectedRole: string; // Define selectedRole prop + setSelectedRole: React.Dispatch>; } interface FormData { @@ -11,40 +13,46 @@ interface FormData { role: string; } -const Form: React.FC = ({ onSubmit }) => { +const Form: React.FC = ({ onSubmit, selectedRole, setSelectedRole }) => { const [formData, setFormData] = useState({ name: "", region: "", role: "", - }); + }) const [imageDataUrl, setImageDataUrl] = useState(null); + const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData({ ...formData, [name]: value }); }; + const handleRegionChange = (e: SelectChangeEvent) => { + const value = e.target.value; + setFormData({ ...formData, region: value }); + }; + + const handleRoleChange = (e: SelectChangeEvent) => { + const value = e.target.value; + setSelectedRole(value); + setFormData({ ...formData, role: value }); + }; + + const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); - // Generate image - const canvas = document.createElement("canvas"); - canvas.width = 400; - canvas.height = 200; - const ctx = canvas.getContext("2d"); - if (ctx) { - ctx.fillStyle = "#ffffff"; - ctx.fillRect(0, 0, canvas.width, canvas.height); - ctx.fillStyle = "#000000"; - ctx.font = "20px Arial"; - ctx.fillText(`Name: ${formData.name}`, 10, 30); - ctx.fillText(`Region: ${formData.region}`, 10, 60); - ctx.fillText(`Role: ${formData.role}`, 10, 90); - const dataUrl = canvas.toDataURL("image/png"); - setImageDataUrl(dataUrl); - onSubmit(formData, dataUrl); // Call the onSubmit callback with form data and image data URL - } + const img = document.createElement('img'); + const url = `https://robohash.org/${formData.name}?size=200x200`; + fetch(url) + .then(response => response.blob()) + .then(blob => { + const dataURL = URL.createObjectURL(blob); + document.body.appendChild(img); + setImageDataUrl(dataURL); + onSubmit(formData, dataURL); + }); }; return ( @@ -67,26 +75,33 @@ const Form: React.FC = ({ onSubmit }) => { /> - + onChange={handleRegionChange} + > + London + Birmingham + Glasgow + - + onChange={handleRoleChange} + > + Volunteer + Trainee +