Updated attendance report page

This commit is contained in:
2025-08-02 12:56:46 -04:00
parent 5cb8bc8b89
commit fc8326be92
4 changed files with 1113 additions and 734 deletions
+283 -6
View File
@@ -97,7 +97,11 @@
}
.stat-card.primary::before {
background: linear-gradient(90deg, var(--primary-color), var(--primary-hover));
background: linear-gradient(
90deg,
var(--primary-color),
var(--primary-hover)
);
}
.stat-card.success::before {
@@ -130,7 +134,11 @@
}
.stat-card.primary .stat-icon {
background: linear-gradient(135deg, var(--primary-color), var(--primary-hover));
background: linear-gradient(
135deg,
var(--primary-color),
var(--primary-hover)
);
}
.stat-card.success .stat-icon {
@@ -378,7 +386,7 @@
.employee-id {
font-weight: 600;
color: var(--gray-900);
font-family: 'Courier New', monospace;
font-family: "Courier New", monospace;
font-size: var(--font-size-sm);
background: var(--gray-100);
padding: var(--spacing-1) var(--spacing-2);
@@ -403,13 +411,13 @@
}
.date-info {
font-family: 'Courier New', monospace;
font-family: "Courier New", monospace;
color: var(--gray-900);
font-weight: 500;
}
.time-info {
font-family: 'Courier New', monospace;
font-family: "Courier New", monospace;
color: var(--gray-900);
font-weight: 600;
background: var(--primary-light);
@@ -706,6 +714,275 @@
background: var(--gray-50);
}
.address-info {
display: flex;
align-items: flex-start;
gap: var(--spacing-2);
color: var(--gray-700);
font-size: var(--font-size-sm);
max-width: 250px;
}
.address-info i {
color: var(--primary-color);
font-size: var(--font-size-xs);
margin-top: 2px;
flex-shrink: 0;
}
.address-info span {
line-height: 1.4;
word-break: break-word;
}
.address-info.qr-address i {
color: var(--success-color);
}
.address-info.checkin-address i {
color: var(--info-color);
}
/* GPS Accuracy badges */
.accuracy-info {
display: flex;
align-items: center;
justify-content: center;
}
.accuracy-badge {
display: inline-flex;
align-items: center;
gap: var(--spacing-1);
padding: var(--spacing-1) var(--spacing-3);
border-radius: var(--radius-full);
font-size: var(--font-size-xs);
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.025em;
flex-direction: column;
text-align: center;
min-width: 80px;
}
.accuracy-badge small {
font-size: 0.6rem;
font-weight: 500;
margin-top: 2px;
opacity: 0.8;
}
.accuracy-badge.accuracy-high {
background: var(--success-light);
color: var(--success-color);
border: 1px solid rgba(5, 150, 105, 0.3);
}
.accuracy-badge.accuracy-medium {
background: var(--warning-light);
color: var(--warning-color);
border: 1px solid rgba(245, 158, 11, 0.3);
}
.accuracy-badge.accuracy-low {
background: var(--danger-light);
color: var(--danger-color);
border: 1px solid rgba(220, 38, 38, 0.3);
}
.accuracy-badge.accuracy-unknown {
background: var(--gray-100);
color: var(--gray-500);
border: 1px solid rgba(107, 114, 128, 0.3);
}
/* Filter indicator */
.filter-indicator {
background: var(--primary-light);
color: var(--primary-color);
font-size: var(--font-size-xs);
padding: var(--spacing-1) var(--spacing-2);
border-radius: var(--radius);
margin-left: var(--spacing-2);
font-weight: 500;
}
/* Enhanced action buttons */
.btn-map {
background: var(--success-light);
color: var(--success-color);
}
.btn-map:hover {
background: var(--success-color);
color: var(--white);
}
.btn-map:disabled {
background: var(--gray-100);
color: var(--gray-400);
cursor: not-allowed;
}
/* Modal enhancements */
.modal-large .modal-content {
max-width: 800px;
width: 90%;
}
.record-details-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: var(--spacing-6);
}
.detail-section {
background: var(--gray-50);
padding: var(--spacing-4);
border-radius: var(--radius-lg);
border: 1px solid var(--gray-200);
}
.detail-section h4 {
color: var(--gray-800);
font-size: var(--font-size-base);
font-weight: 600;
margin-bottom: var(--spacing-3);
display: flex;
align-items: center;
gap: var(--spacing-2);
}
.detail-section h4 i {
color: var(--primary-color);
font-size: var(--font-size-sm);
}
.detail-item {
display: flex;
justify-content: space-between;
align-items: flex-start;
padding: var(--spacing-2) 0;
border-bottom: 1px solid var(--gray-200);
gap: var(--spacing-3);
}
.detail-item:last-child {
border-bottom: none;
}
.detail-item strong {
color: var(--gray-700);
font-weight: 500;
flex-shrink: 0;
min-width: 120px;
}
.detail-item span {
color: var(--gray-900);
text-align: right;
word-break: break-word;
}
/* Enhanced date range filters */
.filter-row {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: var(--spacing-4);
align-items: end;
}
.filter-group input[type="date"] {
appearance: none;
-webkit-appearance: none;
position: relative;
}
.filter-group input[type="date"]::-webkit-calendar-picker-indicator {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor'%3e%3cpath fill-rule='evenodd' d='M6 2a1 1 0 00-1 1v1H4a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2h-1V3a1 1 0 10-2 0v1H7V3a1 1 0 00-1-1zm0 5a1 1 0 000 2h8a1 1 0 100-2H6z' clip-rule='evenodd'/%3e%3c/svg%3e");
background-size: 16px;
background-repeat: no-repeat;
background-position: center;
cursor: pointer;
}
/* Enhanced table responsive design */
@media (max-width: 1200px) {
.attendance-table th:nth-child(7),
.attendance-table td:nth-child(7),
.attendance-table th:nth-child(8),
.attendance-table td:nth-child(8) {
display: none;
}
}
@media (max-width: 768px) {
.address-info {
max-width: 150px;
}
.accuracy-badge {
min-width: 60px;
font-size: 0.625rem;
}
.accuracy-badge small {
display: none;
}
.filter-row {
grid-template-columns: 1fr;
}
.record-details-grid {
grid-template-columns: 1fr;
}
/* Hide address columns on mobile */
.attendance-table th:nth-child(7),
.attendance-table td:nth-child(7),
.attendance-table th:nth-child(8),
.attendance-table td:nth-child(8),
.attendance-table th:nth-child(9),
.attendance-table td:nth-child(9) {
display: none;
}
}
/* Enhanced empty state */
.empty-state .btn {
margin-top: var(--spacing-4);
}
/* Location map placeholder styles */
#locationMap {
background: var(--gray-50);
border: 2px dashed var(--gray-300);
border-radius: var(--radius-lg);
display: flex;
align-items: center;
justify-content: center;
color: var(--gray-600);
}
/* Print styles for new columns */
@media print {
.address-info,
.accuracy-info {
font-size: 0.7rem;
}
.accuracy-badge {
background: transparent !important;
border: 1px solid #ccc !important;
color: #000 !important;
}
.btn-map {
display: none;
}
}
/* Responsive Design */
@media (max-width: 768px) {
.attendance-page {
@@ -818,4 +1095,4 @@
.pagination-container {
display: none;
}
}
}