nice
This commit is contained in:
parent
f60eb301c1
commit
d6b412bce5
@ -8,6 +8,7 @@ import AdminUsersPage from './pages/AdminUsersPage';
|
|||||||
import AdminInvitePage from './pages/AdminInvitePage';
|
import AdminInvitePage from './pages/AdminInvitePage';
|
||||||
import RegisterPage from './pages/RegisterPage';
|
import RegisterPage from './pages/RegisterPage';
|
||||||
import TimeClockPage from './pages/TimeClockPage';
|
import TimeClockPage from './pages/TimeClockPage';
|
||||||
|
import WeeklySummaryPage from './pages/WeeklySummaryPage';
|
||||||
import './App.css';
|
import './App.css';
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
@ -41,6 +42,11 @@ function App() {
|
|||||||
<AdminInvitePage />
|
<AdminInvitePage />
|
||||||
</AdminRoute>
|
</AdminRoute>
|
||||||
} />
|
} />
|
||||||
|
<Route path="/weekly-summary" element={
|
||||||
|
<ProtectedRoute>
|
||||||
|
<WeeklySummaryPage />
|
||||||
|
</ProtectedRoute>
|
||||||
|
} />
|
||||||
<Route path="*" element={<Navigate to="/" replace />} />
|
<Route path="*" element={<Navigate to="/" replace />} />
|
||||||
</Routes>
|
</Routes>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@ -70,6 +70,7 @@ const Header = () => {
|
|||||||
{user ? (
|
{user ? (
|
||||||
<>
|
<>
|
||||||
<Link to="/" className="menu-link" onClick={toggleMenu}>Profil</Link>
|
<Link to="/" className="menu-link" onClick={toggleMenu}>Profil</Link>
|
||||||
|
<Link to="/weekly-summary" className="menu-link" onClick={toggleMenu}>Resumé Hebdomadaire</Link>
|
||||||
<Link to="/pointage" className="menu-link" onClick={toggleMenu}>Pointage</Link>
|
<Link to="/pointage" className="menu-link" onClick={toggleMenu}>Pointage</Link>
|
||||||
{user.is_admin && (
|
{user.is_admin && (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@ -72,10 +72,7 @@ const AdminUsersPage = () => {
|
|||||||
|
|
||||||
<div className="admin-toolbar">
|
<div className="admin-toolbar">
|
||||||
<button className="btn btn-primary" onClick={() => navigate('/invite')}>
|
<button className="btn btn-primary" onClick={() => navigate('/invite')}>
|
||||||
Nouvel utilisateur
|
Inviter quelqu'un
|
||||||
</button>
|
|
||||||
<button className="btn btn-secondary">
|
|
||||||
Exporter les utilisateurs
|
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -224,7 +224,6 @@ const TimeClockPage = () => {
|
|||||||
|
|
||||||
{/* Time tracking section */}
|
{/* Time tracking section */}
|
||||||
<div className="time-tracking-section">
|
<div className="time-tracking-section">
|
||||||
<h3>Historique des pointages</h3>
|
|
||||||
|
|
||||||
{/* Current time display */}
|
{/* Current time display */}
|
||||||
<div className="current-time-display">
|
<div className="current-time-display">
|
||||||
@ -232,39 +231,44 @@ const TimeClockPage = () => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Add new entry form */}
|
{/* Add new entry form */}
|
||||||
<div className="time-entry-form">
|
{user.is_admin ? (
|
||||||
<h4>Ajouter un pointage manuel</h4>
|
<div className="time-entry-form">
|
||||||
<form onSubmit={handleAddEntry}>
|
<h4>Ajouter un pointage manuel</h4>
|
||||||
<div className="form-group">
|
<form onSubmit={handleAddEntry}>
|
||||||
<label>Date:</label>
|
<div className="form-group">
|
||||||
<input
|
<label>Date:</label>
|
||||||
type="date"
|
<input
|
||||||
value={newEntry.date}
|
type="date"
|
||||||
onChange={(e) => setNewEntry({...newEntry, date: e.target.value})}
|
value={newEntry.date}
|
||||||
required
|
onChange={(e) => setNewEntry({...newEntry, date: e.target.value})}
|
||||||
/>
|
required
|
||||||
</div>
|
/>
|
||||||
<div className="form-group">
|
</div>
|
||||||
<label>Heure d'entrée:</label>
|
<div className="form-group">
|
||||||
<input
|
<label>Heure d'entrée:</label>
|
||||||
type="time"
|
<input
|
||||||
value={newEntry.start_time}
|
type="time"
|
||||||
onChange={(e) => setNewEntry({...newEntry, start_time: e.target.value})}
|
value={newEntry.start_time}
|
||||||
required
|
onChange={(e) => setNewEntry({...newEntry, start_time: e.target.value})}
|
||||||
/>
|
required
|
||||||
</div>
|
/>
|
||||||
<div className="form-group">
|
</div>
|
||||||
<label>Heure de sortie:</label>
|
<div className="form-group">
|
||||||
<input
|
<label>Heure de sortie:</label>
|
||||||
type="time"
|
<input
|
||||||
value={newEntry.end_time}
|
type="time"
|
||||||
onChange={(e) => setNewEntry({...newEntry, end_time: e.target.value})}
|
value={newEntry.end_time}
|
||||||
required
|
onChange={(e) => setNewEntry({...newEntry, end_time: e.target.value})}
|
||||||
/>
|
required
|
||||||
</div>
|
/>
|
||||||
<button type="submit" className="btn btn-primary">Ajouter le pointage</button>
|
</div>
|
||||||
</form>
|
<button type="submit" className="btn btn-primary">Ajouter le pointage</button>
|
||||||
</div>
|
</form>
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
</>
|
||||||
|
) }
|
||||||
|
|
||||||
{/* Time entries list */}
|
{/* Time entries list */}
|
||||||
<div className="time-entries-list">
|
<div className="time-entries-list">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user