malik-AI's picture
Upload 23 files
bf8ba08 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WiFi Attendance Tracker - Advanced</title>
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<!-- Header -->
<header class="header">
<div class="header-content">
<h1><i class="fas fa-wifi"></i> WiFi Attendance Tracker</h1>
<p class="subtitle">Advanced Employee Management & Time Tracking</p>
</div>
<div class="header-actions">
<button id="settingsBtn" class="btn btn-secondary">
<i class="fas fa-cog"></i> Settings
</button>
<button id="addEmployeeBtn" class="btn btn-primary">
<i class="fas fa-user-plus"></i> Add Employee
</button>
</div>
</header>
<!-- System Status -->
<div class="status-bar">
<div class="status-item">
<span class="status-label">System Status:</span>
<span id="systemStatus" class="status-value">Loading...</span>
</div>
<div class="status-item">
<span class="status-label">Last Update:</span>
<span id="lastUpdate" class="status-value">Never</span>
</div>
<div class="status-item">
<span class="status-label">Employees:</span>
<span id="employeeCount" class="status-value">0</span>
</div>
</div>
<!-- Control Panel -->
<div class="control-panel">
<div class="control-group">
<button id="startBtn" class="btn btn-success">
<i class="fas fa-play"></i> Start Monitoring
</button>
<button id="stopBtn" class="btn btn-danger" disabled>
<i class="fas fa-stop"></i> Stop Monitoring
</button>
<button id="refreshBtn" class="btn btn-info">
<i class="fas fa-sync-alt"></i> Refresh Data
</button>
</div>
<div class="control-group">
<div class="search-container">
<input type="text" id="searchInput" placeholder="Search employees..." class="search-input">
<button id="searchBtn" class="btn btn-outline">
<i class="fas fa-search"></i>
</button>
<button id="clearSearchBtn" class="btn btn-outline">
<i class="fas fa-times"></i>
</button>
</div>
</div>
</div>
<!-- Statistics Cards -->
<div class="stats-grid">
<div class="stat-card present">
<div class="stat-icon">
<i class="fas fa-user-check"></i>
</div>
<div class="stat-content">
<h3 id="presentCount">0</h3>
<p>Present</p>
</div>
</div>
<div class="stat-card absent">
<div class="stat-icon">
<i class="fas fa-user-times"></i>
</div>
<div class="stat-content">
<h3 id="absentCount">0</h3>
<p>Absent</p>
</div>
</div>
<div class="stat-card break">
<div class="stat-icon">
<i class="fas fa-coffee"></i>
</div>
<div class="stat-content">
<h3 id="breakCount">0</h3>
<p>On Break</p>
</div>
</div>
<div class="stat-card timeout">
<div class="stat-icon">
<i class="fas fa-clock"></i>
</div>
<div class="stat-content">
<h3 id="timeoutCount">0</h3>
<p>Timed Out</p>
</div>
</div>
</div>
<!-- Main Content Grid -->
<div class="main-grid">
<!-- Employee Status -->
<div class="panel">
<div class="panel-header">
<h2><i class="fas fa-users"></i> Employee Status</h2>
<div class="panel-actions">
<button id="exportBtn" class="btn btn-outline">
<i class="fas fa-download"></i> Export CSV
</button>
</div>
</div>
<div class="panel-content">
<div id="employeeList" class="employee-list">
<div class="loading">Loading employees...</div>
</div>
</div>
</div>
<!-- Recent Events -->
<div class="panel">
<div class="panel-header">
<h2><i class="fas fa-history"></i> Recent Events</h2>
<div class="panel-actions">
<select id="eventDateFilter" class="date-filter">
<option value="">All Events</option>
</select>
</div>
</div>
<div class="panel-content">
<div id="eventsList" class="events-list">
<div class="loading">Loading events...</div>
</div>
</div>
</div>
</div>
<!-- Daily Summary -->
<div class="panel">
<div class="panel-header">
<h2><i class="fas fa-calendar-day"></i> Daily Summary</h2>
<div class="panel-actions">
<input type="date" id="summaryDate" class="date-input">
<button id="summaryRefreshBtn" class="btn btn-outline">
<i class="fas fa-sync-alt"></i> Refresh
</button>
</div>
</div>
<div class="panel-content">
<div id="summaryTable" class="summary-table">
<div class="loading">Loading daily summary...</div>
</div>
</div>
</div>
</div>
<!-- Add Employee Modal -->
<div id="addEmployeeModal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h3><i class="fas fa-user-plus"></i> Add New Employee</h3>
<button class="modal-close">&times;</button>
</div>
<div class="modal-body">
<form id="addEmployeeForm">
<div class="form-group">
<label for="employeeName">Employee Name</label>
<input type="text" id="employeeName" name="name" required placeholder="Enter employee name">
</div>
<div class="form-group">
<label for="employeeMac">MAC Address</label>
<input type="text" id="employeeMac" name="mac" required placeholder="aa-bb-cc-dd-ee-ff" pattern="[a-fA-F0-9]{2}-[a-fA-F0-9]{2}-[a-fA-F0-9]{2}-[a-fA-F0-9]{2}-[a-fA-F0-9]{2}-[a-fA-F0-9]{2}">
<small>Format: aa-bb-cc-dd-ee-ff (lowercase with dashes)</small>
</div>
<div class="form-group">
<label for="employeePicture">Picture Path (Optional)</label>
<input type="text" id="employeePicture" name="picture" placeholder="static/img/employee.jpg">
<small>Path to employee picture file</small>
</div>
<div class="form-group">
<label for="adminPassword">Admin Password</label>
<input type="password" id="adminPassword" name="password" required placeholder="Enter admin password">
<small>Default password: 1122</small>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" onclick="closeModal('addEmployeeModal')">Cancel</button>
<button type="submit" form="addEmployeeForm" class="btn btn-primary">Add Employee</button>
</div>
</div>
</div>
<!-- Settings Modal -->
<div id="settingsModal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h3><i class="fas fa-cog"></i> Settings</h3>
<button class="modal-close">&times;</button>
</div>
<div class="modal-body">
<div class="settings-section">
<h4>Change Admin Password</h4>
<form id="changePasswordForm">
<div class="form-group">
<label for="currentPassword">Current Password</label>
<input type="password" id="currentPassword" name="currentPassword" required>
</div>
<div class="form-group">
<label for="newPassword">New Password</label>
<input type="password" id="newPassword" name="newPassword" required>
</div>
<div class="form-group">
<label for="confirmPassword">Confirm New Password</label>
<input type="password" id="confirmPassword" name="confirmPassword" required>
</div>
<button type="submit" class="btn btn-primary">Change Password</button>
</form>
</div>
<div class="settings-section">
<h4>System Information</h4>
<div class="info-grid">
<div class="info-item">
<span class="info-label">Scan Interval:</span>
<span id="scanInterval" class="info-value">60 seconds</span>
</div>
<div class="info-item">
<span class="info-label">Office Timeout:</span>
<span id="officeTimeout" class="info-value">17:00</span>
</div>
<div class="info-item">
<span class="info-label">Current Time:</span>
<span id="currentTime" class="info-value">--:--:--</span>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" onclick="closeModal('settingsModal')">Close</button>
</div>
</div>
</div>
<!-- Employee Details Modal -->
<div id="employeeDetailsModal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h3><i class="fas fa-user"></i> Employee Details</h3>
<button class="modal-close">&times;</button>
</div>
<div class="modal-body">
<div id="employeeDetailsContent">
<!-- Employee details will be loaded here -->
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" id="deleteEmployeeBtn">
<i class="fas fa-trash"></i> Delete Employee
</button>
<button type="button" class="btn btn-warning" id="modifyEmployeeBtn">
<i class="fas fa-edit"></i> Modify Employee
</button>
<button type="button" class="btn btn-secondary" onclick="closeModal('employeeDetailsModal')">Close</button>
</div>
</div>
</div>
<!-- Delete Employee Modal -->
<div id="deleteEmployeeModal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h3><i class="fas fa-trash"></i> Delete Employee</h3>
<button class="modal-close">&times;</button>
</div>
<div class="modal-body">
<div class="warning-message">
<i class="fas fa-exclamation-triangle"></i>
<p>Are you sure you want to delete this employee? This action cannot be undone.</p>
<div id="deleteEmployeeInfo" class="employee-info">
<!-- Employee info will be loaded here -->
</div>
</div>
<form id="deleteEmployeeForm">
<div class="form-group">
<label for="deleteAdminPassword">Admin Password</label>
<input type="password" id="deleteAdminPassword" name="password" required placeholder="Enter admin password">
<small>Default password: 1122</small>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" onclick="closeModal('deleteEmployeeModal')">Cancel</button>
<button type="submit" form="deleteEmployeeForm" class="btn btn-danger">
<i class="fas fa-trash"></i> Delete Employee
</button>
</div>
</div>
</div>
<!-- Modify Employee Modal -->
<div id="modifyEmployeeModal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h3><i class="fas fa-edit"></i> Modify Employee Information</h3>
<button class="modal-close">&times;</button>
</div>
<div class="modal-body">
<div class="info-message" style="background: #e3f2fd; padding: 15px; border-radius: 8px; margin-bottom: 20px; border-left: 4px solid #2196f3;">
<i class="fas fa-info-circle" style="color: #2196f3; margin-right: 8px;"></i>
<strong>You can modify:</strong> Employee name, MAC address, or picture path. All fields are editable.
</div>
<form id="modifyEmployeeForm">
<div class="form-group">
<label for="modifyEmployeeName">
<i class="fas fa-user"></i> Employee Name
<small style="font-weight: normal; color: #666;">(Change the employee's display name)</small>
</label>
<input type="text" id="modifyEmployeeName" name="name" required placeholder="Enter new employee name">
</div>
<div class="form-group">
<label for="modifyEmployeeMac">
<i class="fas fa-network-wired"></i> MAC Address
<small style="font-weight: normal; color: #666;">(Update the device MAC address for tracking)</small>
</label>
<input type="text" id="modifyEmployeeMac" name="mac_address" required placeholder="aa-bb-cc-dd-ee-ff" pattern="[a-fA-F0-9]{2}-[a-fA-F0-9]{2}-[a-fA-F0-9]{2}-[a-fA-F0-9]{2}-[a-fA-F0-9]{2}-[a-fA-F0-9]{2}">
<small>Format: aa-bb-cc-dd-ee-ff (lowercase with dashes)</small>
</div>
<div class="form-group">
<label for="modifyEmployeePicture">
<i class="fas fa-image"></i> Picture Path (Optional)
<small style="font-weight: normal; color: #666;">(Update employee photo path)</small>
</label>
<input type="text" id="modifyEmployeePicture" name="picture_path" placeholder="static/img/employee.jpg">
<small>Path to employee picture file</small>
</div>
<div class="form-group">
<label for="modifyAdminPassword">
<i class="fas fa-lock"></i> Admin Password
<small style="font-weight: normal; color: #666;">(Required for security verification)</small>
</label>
<input type="password" id="modifyAdminPassword" name="password" required placeholder="Enter admin password">
<small>Default password: 1122</small>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" onclick="closeModal('modifyEmployeeModal')">Cancel</button>
<button type="submit" form="modifyEmployeeForm" class="btn btn-primary">
<i class="fas fa-save"></i> Save Changes
</button>
</div>
</div>
</div>
<!-- Notification Container -->
<div id="notifications" class="notifications"></div>
<script src="{{ url_for('static', filename='js/script.js') }}"></script>
</body>
</html>