Bővítés a 4. feladatig megvan.
This commit is contained in:
BIN
12.B-2_Férfi_2025.pdf
Normal file
BIN
12.B-2_Férfi_2025.pdf
Normal file
Binary file not shown.
BIN
react_gyak_bevasarlas_bovites.pdf
Normal file
BIN
react_gyak_bevasarlas_bovites.pdf
Normal file
Binary file not shown.
21
src/App.jsx
21
src/App.jsx
@@ -3,6 +3,8 @@ import reactLogo from './assets/react.svg'
|
|||||||
import viteLogo from '/vite.svg'
|
import viteLogo from '/vite.svg'
|
||||||
import './App.css'
|
import './App.css'
|
||||||
import BevasarloLista from './components/BevasarloLista';
|
import BevasarloLista from './components/BevasarloLista';
|
||||||
|
import HozzaAdasForm from './components/HozzaAdasForm';
|
||||||
|
import Statisztika from './components/Statisztika';
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
const [venniKell, setVenniKell] = useState(
|
const [venniKell, setVenniKell] = useState(
|
||||||
@@ -15,14 +17,29 @@ function App() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const vetelKezeles = (id, ertek) => {
|
const vetelKezeles = (id, ertek) => {
|
||||||
const ujTomb = venniKell.map(aru => {aru.id==id ? {...aru, megveve: ertek} : aru})
|
const ujTomb = venniKell.map(aru => {return aru.id==id ? {...aru, megveve: ertek} : aru})
|
||||||
setVenniKell(ujTomb)
|
setVenniKell(ujTomb)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const hozzaAdas = (elem) => {
|
||||||
|
console.log(elem)
|
||||||
|
setVenniKell([...venniKell, elem])
|
||||||
|
}
|
||||||
|
|
||||||
|
const elemTorles = (id) => {
|
||||||
|
const ujTomb = venniKell.filter(aru=>aru.id!=id)
|
||||||
|
setVenniKell(ujTomb)
|
||||||
|
}
|
||||||
|
|
||||||
|
const total = venniKell.length
|
||||||
|
const megvett = venniKell.filter(a => a.megveve).length
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<h1>Bevásárlólista</h1>
|
<h1>Bevásárlólista</h1>
|
||||||
<BevasarloLista aruk={venniKell} vetelk={vetelKezeles} />
|
<Statisztika total={total} megvett={megvett}/>
|
||||||
|
<HozzaAdasForm hozzaAd={hozzaAdas} />
|
||||||
|
<BevasarloLista aruk={venniKell} vetelk={vetelKezeles} torlesk={elemTorles} />
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import React from 'react'
|
import React from 'react'
|
||||||
import ListaElem from './ListaElem'
|
import ListaElem from './ListaElem'
|
||||||
|
|
||||||
const BevasarloLista = ({aruk, vetelk}) => {
|
const BevasarloLista = ({aruk, vetelk, torlesk}) => {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
{aruk.map((elem,index) => {
|
{aruk.map((elem,index) => {
|
||||||
//console.log(elem.megveve)
|
//console.log(elem.megveve)
|
||||||
return (
|
return (
|
||||||
<ListaElem key={index} aru={elem} vetelk={vetelk}/>
|
<ListaElem key={index} aru={elem} vetelk={vetelk} torlesk={torlesk}/>
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
30
src/components/HozzaAdasForm.jsx
Normal file
30
src/components/HozzaAdasForm.jsx
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
import React, {useState} from 'react'
|
||||||
|
|
||||||
|
const HozzaAdasForm = ({hozzaAd}) => {
|
||||||
|
|
||||||
|
const [nev, setNev] = useState("")
|
||||||
|
const [mennyiseg, setMennyiseg] = useState("")
|
||||||
|
const [egyseg, setEgyseg] = useState("")
|
||||||
|
|
||||||
|
const hozzaAdKezel = (e) => {
|
||||||
|
if (nev==="") return
|
||||||
|
e.preventDefault()
|
||||||
|
hozzaAd({nev,mennyiseg,egyseg,megjegyzes: "",megveve: false, id: Date.now()})
|
||||||
|
setNev("")
|
||||||
|
setMennyiseg("")
|
||||||
|
setEgyseg("")
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<form onSubmit={hozzaAdKezel}>
|
||||||
|
<input type="text" value={nev} onChange={(e) => setNev(e.target.value)} placeholder="Név" />
|
||||||
|
<input type="text" value={mennyiseg} onChange={(e) => setMennyiseg(e.target.value)} placeholder="Mennyiség" />
|
||||||
|
<input type="text" value={egyseg} onChange={(e) => setEgyseg(e.target.value)} placeholder="Egység" />
|
||||||
|
<input type="submit" value="Hozzáad" />
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default HozzaAdasForm
|
||||||
@@ -1,23 +1,29 @@
|
|||||||
import React, { useState } from 'react'
|
import React, { useState } from 'react'
|
||||||
import AruInfo from './AruInfo'
|
import AruInfo from './AruInfo'
|
||||||
import MegveveGomb from './MegveveGomb'
|
import MegveveGomb from './MegveveGomb'
|
||||||
|
import TorlesGomb from './TorlesGomb'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const ListaElem = ({aru, vetelk}) => {
|
|
||||||
|
|
||||||
const [megVetel, setMegvetel] = useState(false)
|
const ListaElem = ({aru, vetelk, torlesk}) => {
|
||||||
|
|
||||||
|
//const [megVetel, setMegvetel] = useState(false)
|
||||||
|
|
||||||
const kezelVetel = () => {
|
const kezelVetel = () => {
|
||||||
setMegvetel(elozo => !elozo)
|
//setMegvetel(elozo => !elozo)
|
||||||
vetelk(aru.id, megVetel)
|
vetelk(aru.id, !aru.megveve)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const torlesKezel = () => {
|
||||||
|
torlesk(aru.id)
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<AruInfo nev={aru.nev} mennyiseg={aru.mennyiseg} egyseg={aru.egyseg} megjegyzes={aru.megjegyzes} />
|
<AruInfo nev={aru.nev} mennyiseg={aru.mennyiseg} egyseg={aru.egyseg} megjegyzes={aru.megjegyzes} />
|
||||||
<MegveveGomb onGomb={kezelVetel} megVeve={megVetel} />
|
<MegveveGomb onGomb={kezelVetel} megVeve={aru.megveve} />
|
||||||
|
<TorlesGomb onGomb={torlesKezel} />
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ import React from 'react'
|
|||||||
|
|
||||||
const MegveveGomb = ({onGomb, megVeve}) => {
|
const MegveveGomb = ({onGomb, megVeve}) => {
|
||||||
return (
|
return (
|
||||||
<div>
|
<>
|
||||||
<button onClick={onGomb} style={{ backgroundColor: megVeve ? "green" : "red"}}>
|
<button onClick={onGomb} style={{ backgroundColor: megVeve ? "green" : "red"}}>
|
||||||
{megVeve ? "Megvásárolva" : "Beszerzendő"}
|
{megVeve ? "Megvásárolva" : "Beszerzendő"}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
29
src/components/Statisztika.jsx
Normal file
29
src/components/Statisztika.jsx
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import React from 'react'
|
||||||
|
|
||||||
|
const Statisztika = ({total, megvett}) => {
|
||||||
|
|
||||||
|
const megvenni = total-megvett;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>Összesen:</th>
|
||||||
|
<td>{total}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Megvett:</th>
|
||||||
|
<td>{megvett}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Beszerzendő:</th>
|
||||||
|
<td>{megvenni}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Statisztika
|
||||||
13
src/components/TorlesGomb.jsx
Normal file
13
src/components/TorlesGomb.jsx
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import React from 'react'
|
||||||
|
|
||||||
|
const TorlesGomb = ({onGomb}) => {
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<button onClick={onGomb} style={{ backgroundColor: "blue", color: "white"}}>
|
||||||
|
Törlés
|
||||||
|
</button>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default TorlesGomb
|
||||||
Reference in New Issue
Block a user