Skip to content

Commit

Permalink
front end
Browse files Browse the repository at this point in the history
  • Loading branch information
MehdiAloui committed Sep 25, 2023
1 parent b925bae commit 5b91789
Show file tree
Hide file tree
Showing 17 changed files with 4,181 additions and 69 deletions.
3,190 changes: 3,137 additions & 53 deletions package-lock.json

Large diffs are not rendered by default.

10 changes: 10 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,15 @@
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^13.3.0",
"@testing-library/user-event": "^13.5.0",
"autoprefixer": "10.4.5",
"axios": "^0.27.2",
"bootstrap": "^5.2.0-beta1",
"devextreme": "22.1.3",
"devextreme-react": "22.1.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-modal": "^3.15.1",
"react-router-dom": "^6.3.0",
"react-scripts": "5.0.1",
"web-vitals": "^2.1.4"
},
Expand All @@ -34,5 +41,8 @@
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"devextreme-themebuilder": "^22.1.3"
}
}
1 change: 1 addition & 0 deletions public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8" />

<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
Expand Down
9 changes: 9 additions & 0 deletions src/App.css
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,15 @@
.App-link {
color: #61dafb;
}
.footer {
position: absolute;
bottom: 0;
width:100%;
height: 50px;
background-color: rgb(37, 33, 160);
text-align: center;
color: white;
}

@keyframes App-logo-spin {
from {
Expand Down
46 changes: 30 additions & 16 deletions src/App.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,38 @@
import logo from './logo.svg';
import 'devextreme/dist/css/dx.common.css';
import 'devextreme/dist/css/dx.light.css';
import './App.css';
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom'
import FooterComponent from './components/FooterComponent';
import HeaderComponent from './components/HeaderComponent';
import ListEmployeeComponent from './components/ListEmployeeComponent';
import CreateEmployeeComponent from './components/CreateEmployeeComponent';
import UpdateEmployeeComponent from './components/UpdateEmployeeComponent';
import PieChat from './components/PieChat';
import Final from './components/Final';
import ModalInClassComponents from './components/ModalInClassComponents';
import Enseignant from './components/EnseignantC';

function App() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
<div>
<Router>
<HeaderComponent />
<div className="container">
<Routes>
{/*<Route exact path="/" element={<ListEmployeeComponent/>} />*/}
<Route exact path="/" element={<Enseignant/>} />
<Route path="/employees" element={<ListEmployeeComponent/>} />
<Route path="/add-employee" element={<CreateEmployeeComponent/>} />
<Route path="/update-employee/:id" element={<UpdateEmployeeComponent/>} />
<Route path="/pie" element={<PieChat/>}/>
<Route path="/final" element={<Final/>}/>
<Route path="/test" element={<ModalInClassComponents/>}/>
</Routes>
</div>
<FooterComponent />
</Router>
</div>

);
}

Expand Down
91 changes: 91 additions & 0 deletions src/components/CreateEmployeeComponent.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
import React, { Component } from 'react';
import EmployeeService from '../servises/EnseignantService';
import { withRouter } from './withRouter';
class CreateEmployeeComponent extends Component {
constructor(props) {
super(props)
this.state = {
firstName: '',
lastName: '',
emailId: '',
gender: ''
}
this.changeFirstNameHandler = this.changeFirstNameHandler.bind(this);
this.changeLastNameHandler = this.changeLastNameHandler.bind(this);
this.changeEmailIdHandler = this.changeEmailIdHandler.bind(this);
this.changeGenderIdHandler = this.changeGenderIdHandler.bind(this);
this.saveEmployee = this.saveEmployee.bind(this)
}
changeFirstNameHandler(event) {
this.setState({ firstName: event.target.value })

}
changeLastNameHandler(event) {
this.setState({ lastName: event.target.value })

}
changeEmailIdHandler(event) {
this.setState({ emailId: event.target.value })

}
changeGenderIdHandler(event) {
this.setState({ gender: event.target.value })
}

saveEmployee = (e) => {
e.preventDefault();

let employee = { firstName: this.state.firstName, lastName: this.state.lastName, emailId: this.state.emailId, gender: this.state.gender };
console.log('employee=>' + JSON.stringify(employee));
EmployeeService.createEmployees(employee).then(res => {
this.props.navigate('/employees');
});
}
cancel() {
this.props.navigate('/employees');
}
render() {
return (
<div>
<div className='container'>
<div className='row'>
<div className='card col-md-6 offset-md-3 offset-md-3'>
<h3 className='text-center'>Add Employee</h3>
<div className='form-group'>
<label> first Name</label>
<input placeholder='First Name' name='firstName' className='form-control' value={this.state.firstName} onChange={this.changeFirstNameHandler} />

</div>
<div className='form-group'>
<label> Last Name</label>
<input placeholder='Last Name' name='lastName' className='form-control' value={this.state.lastName} onChange={this.changeLastNameHandler} />

</div>
<div className='form-group'>
<label> Email Adress</label>
<input placeholder='Email Adress' name='emailId' className='form-control' value={this.state.emailId} onChange={this.changeEmailIdHandler} />

</div>
<div>
<label>Gender</label>
</div>
<div>
<input className="form-check-input" type="radio" value="Male" name="gender" onChange={this.changeGenderIdHandler}/> Male
<input className="form-check-input" type="radio" value="Female" name="gender" onChange={this.changeGenderIdHandler}/> Female
</div>


<button className="btn btn-success" onClick={this.saveEmployee}>Save</button>
<button className="btn btn-danger" onClick={this.cancel.bind(this)} >Cancel</button>

</div>

</div>

</div>
</div >
);
}
}

export default withRouter(CreateEmployeeComponent);
95 changes: 95 additions & 0 deletions src/components/EnseignantC.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
import React, { useState, useEffect } from 'react';
import axios from 'axios';
import Modal from 'react-modal';


const Enseignant = () => {
const [enseignants, setEnseignants] = useState([]);

useEffect(() => {
axios.get('http://localhost:9001/enseignant-service/enseignants')
.then(res => setEnseignants(res.data))
.catch(err => console.log(err));
}, []);

return (
<div>
<h2 className='text-center'>enseignant List</h2>
<div className='row'>
{/*<button className='btn btn-primary' onClick={this.addEmployee}> Add Employee</button>*/}
</div>
<div className='row'>
<table className='table table-striped table-bordered'>
<thead>
<tr>
<th>
enseignant First name
</th>
<th>
enseignant Last name
</th>
<th>
enseignant Email ID
</th>
<th>
Gender
</th>
<th>
Actions
</th>
</tr>
</thead>
<tbody>


{enseignants.map(enseignant => (
<tr key={enseignant.id}>
<td>{enseignant.nom}</td>
<td>{enseignant.prenom}</td>
<td>{enseignant.cin}</td>
<td>{enseignant.email}</td>


<Modal>
<div className='container'>
<div className='row'>
<div className='card col-md-6 offset-md-3 offset-md-3'>
<h3 className='text-center'>Update Employee</h3>
<div className='form-group'>
<label> first Name</label>
<input placeholder='First Name' name='prenom' className='form-control' value={enseignant.nom} />

</div>
<div className='form-group'>
<label> Last Name</label>
<input placeholder='Last Name' name='nomame' className='form-control' value={enseignant.prenom} />

</div>
<div className='form-group'>
<label> Email Adress</label>
<input placeholder='Email Adress' name='email' className='form-control' value={enseignant.email}/>

</div>
{/*<button className="btn btn-success" onClick={this.updateEmployee}>Save</button>
<button className="btn btn-danger" onClick={this.handleCloseModal} >Cancel</button>*/}
</div>
</div>

</div>
{/*<UpdateEmployeeComponent employee={employee} />*/}
</Modal>
<button /*onClick={() => this.deleteEmployee(employee.id)}*/ className="btn btn-info">Delete</button>

</tr>
))}

</tbody>
</table>


</div>

</div >)}


export default Enseignant;
Loading

0 comments on commit 5b91789

Please sign in to comment.