import Head from 'next/head' import Link from 'next/link' import Form from 'react-bootstrap/Form'; import Table from 'react-bootstrap/Table' import { useState } from 'react'; import Image from 'next/image' import Container from 'react-bootstrap/Container' import Nav from 'react-bootstrap/Nav' import Navbar from 'react-bootstrap/Navbar'; import NavDropdown from 'react-bootstrap/NavDropdown' import Row from 'react-bootstrap/Row' import Col from 'react-bootstrap/Col' import Button from 'react-bootstrap/Button'; import { useRouter } from 'next/router'; import { useContext } from 'react'; import { ProgramContext } from '../src/ProgramContext'; export default function Home() { const router = useRouter(); const { updateProgram } = useContext(ProgramContext); const handleClick = () => { const program = { name: 'John', age: 25 }; updateProgram(program); router.push('/runner'); }; const [instructionStatus, setInstructionStatus] = useState([]); const geraTabelaParaInserirInstrucoes = (nInst) => { let tabela = []; for (let i = 0; i < nInst; i++) { let d = "D" + i; let r = "R" + i; let s = "S" + i; let t = "T" + i; tabela.push( <tr key={i}> <td> <select className="form-control" size="1" name={d} id={d}> <option value="">Operand</option> <option value="ADD">ADD</option> <option value="ADDD">ADDD</option> <option value="BEQ">BEQ</option> <option value="BNEZ">BNEZ</option> <option value="DADDUI">DADDUI</option> <option value="DIVD">DIVD</option> <option value="LD">LD</option> <option value="MULTD">MULTD</option> <option value="SD">SD</option> <option value="SUBD">SUBD</option> </select> </td> <td> <input className="form-control" type="text" name={r} id={r} size="3" maxLength="3" /> </td> <td> <input className="form-control" type="text" name={s} id={s} size="3" maxLength="5" /> </td> <td> <input className="form-control" type="text" name={t} id={t} size="3" maxLength="3" /> </td> </tr> ); } return tabela; }; const handleGenerateTable = (event) => { const nInst = event.target.value; setInstructionStatus(geraTabelaParaInserirInstrucoes(nInst)); }; return ( <> <Head> <title>Tomasulo</title> <meta name="description" content="Generated by create next app" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="icon" href="/favicon.ico" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous" /> </Head> <Navbar bg="dark" variant="dark" expand="lg"> <Container> <Navbar.Brand href="/">Tomasulo</Navbar.Brand> </Container> </Navbar> <main> <Container> <Row className="row my-4"> <Col> <h3>Instructions</h3> </Col> <Col className="text-end"> <Button className="ms-4" variant="primary" onClick={handleClick}>Execute</Button> </Col> </Row> <Row className="mb-3"> <Col> <Form.Control className="form-control-sm" type="number" placeholder="Select number of instructions" onChange={handleGenerateTable} /> </Col> </Row> <Row> <Col> <Table bordered> <thead> <tr> <th>Op</th> <th>RD</th> <th>RS</th> <th>RT</th> </tr> </thead> <tbody> {instructionStatus} </tbody> </Table> </Col> </Row> </Container> </main> </> ) }