fix(ui): resolucion del optimizador genetico, superposicion de tarjetas, contraste de logo y traducciones
This commit is contained in:
@@ -42,6 +42,10 @@
|
||||
background: #F8FAFC !important;
|
||||
color: #1E293B !important;
|
||||
}
|
||||
[data-bs-theme="light"] .navbar-logo {
|
||||
/* Filtro para convertir blanco a rosa (#B43E8E) */
|
||||
filter: brightness(0) saturate(100%) invert(35%) sepia(55%) saturate(2250%) hue-rotate(289deg) brightness(90%) contrast(90%);
|
||||
}
|
||||
[data-bs-theme="light"] .glass-navbar {
|
||||
background: rgba(255, 255, 255, 0.88) !important;
|
||||
backdrop-filter: blur(12px);
|
||||
@@ -410,7 +414,7 @@
|
||||
<ul class="dropdown-menu dropdown-menu-end shadow-sm border-0">
|
||||
<li>
|
||||
<div class="px-3 py-2 border-bottom">
|
||||
<small class="text-muted d-block">Signed in as</small>
|
||||
<small class="text-muted d-block">Sesión iniciada como</small>
|
||||
<span class="fw-bold small d-block">{{ user.email }}</span>
|
||||
<span class="badge {{ user.role_badge_display.class }} role-pill mt-1">
|
||||
<i class="bi {{ user.role_badge_display.icon }}"></i> {{ user.role_badge_display.label }}
|
||||
@@ -418,14 +422,14 @@
|
||||
</div>
|
||||
</li>
|
||||
<li><a class="dropdown-item" href="/auth/profile">
|
||||
<i class="bi bi-person me-2"></i> Profile
|
||||
<i class="bi bi-person me-2"></i> Mi Perfil
|
||||
</a></li>
|
||||
<li><a class="dropdown-item" href="/auth/change_password">
|
||||
<i class="bi bi-key me-2"></i> Change Password
|
||||
<i class="bi bi-key me-2"></i> Cambiar Contraseña
|
||||
</a></li>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li><a class="dropdown-item text-danger" href="/auth/logout">
|
||||
<i class="bi bi-box-arrow-right me-2"></i> Logout
|
||||
<i class="bi bi-box-arrow-right me-2"></i> Cerrar Sesión
|
||||
</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -83,7 +83,8 @@
|
||||
<div class="row mb-4">
|
||||
<!-- Algorithm Status Card -->
|
||||
<div class="col-lg-4 mb-4">
|
||||
<div class="card border-0 shadow-sm algorithm-status">
|
||||
<div class="algorithm-status" style="z-index: 10;">
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-body-tertiary border-0 py-3">
|
||||
<h5 class="mb-0 h6 fw-bold">
|
||||
<i class="bi bi-gear-wide-connected text-primary me-2"></i>
|
||||
@@ -123,14 +124,60 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-sm btn-outline-primary w-100" onclick="geneticManager.getAlgorithmStatus()">
|
||||
<button class="btn btn-sm btn-outline-primary w-100" onclick="window.refreshStatus()">
|
||||
<i class="bi bi-arrow-clockwise me-1"></i>
|
||||
Refresh Status
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Optimization Controls -->
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-header bg-body-tertiary border-0 py-3">
|
||||
<h5 class="mb-0 h6 fw-bold">
|
||||
<i class="bi bi-sliders text-primary me-2"></i>
|
||||
Optimization Controls
|
||||
</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row align-items-center mb-3">
|
||||
<div class="col-12">
|
||||
<div class="mb-3">
|
||||
<label for="start-date" class="form-label">Start Date</label>
|
||||
<input type="datetime-local" class="form-control" id="start-date" name="start_date">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="mb-3">
|
||||
<label for="end-date" class="form-label">End Date</label>
|
||||
<input type="datetime-local" class="form-control" id="end-date" name="end_date">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-grid gap-2">
|
||||
<button class="btn btn-info text-white" id="preview-optimization-btn">
|
||||
<i class="bi bi-eye me-1"></i>
|
||||
Preview
|
||||
</button>
|
||||
<button class="btn btn-success" id="optimize-assignments-btn">
|
||||
<i class="bi bi-play-circle me-1"></i>
|
||||
Run Full Optimization
|
||||
</button>
|
||||
<button class="btn btn-warning" id="apply-optimization-btn" style="display: none;">
|
||||
<i class="bi bi-check-circle me-1"></i>
|
||||
Apply
|
||||
</button>
|
||||
<button class="btn btn-outline-secondary" onclick="resetOptimization()">
|
||||
<i class="bi bi-arrow-counterclockwise me-1"></i>
|
||||
Reset
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Commission Selection -->
|
||||
<div class="col-lg-8">
|
||||
<div class="card border-0 shadow-sm">
|
||||
@@ -161,54 +208,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Optimization Controls -->
|
||||
<div class="row mb-4">
|
||||
<div class="col-12">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-header bg-body-tertiary border-0 py-3">
|
||||
<h5 class="mb-0 h6 fw-bold">
|
||||
<i class="bi bi-sliders text-primary me-2"></i>
|
||||
Optimization Controls
|
||||
</h5>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row align-items-center mb-3">
|
||||
<div class="col-md-6">
|
||||
<div class="mb-3">
|
||||
<label for="start-date" class="form-label">Start Date Range</label>
|
||||
<input type="datetime-local" class="form-control" id="start-date" name="start_date">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="mb-3">
|
||||
<label for="end-date" class="form-label">End Date Range</label>
|
||||
<input type="datetime-local" class="form-control" id="end-date" name="end_date">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="d-flex gap-2 flex-wrap">
|
||||
<button class="btn btn-info text-white" id="preview-optimization-btn">
|
||||
<i class="bi bi-eye me-1"></i>
|
||||
Preview Optimization
|
||||
</button>
|
||||
<button class="btn btn-success" id="optimize-assignments-btn">
|
||||
<i class="bi bi-play-circle me-1"></i>
|
||||
Run Full Optimization
|
||||
</button>
|
||||
<button class="btn btn-warning" id="apply-optimization-btn" style="display: none;">
|
||||
<i class="bi bi-check-circle me-1"></i>
|
||||
Apply Reservations
|
||||
</button>
|
||||
<button class="btn btn-outline-secondary" onclick="resetOptimization()">
|
||||
<i class="bi bi-arrow-counterclockwise me-1"></i>
|
||||
Reset
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Results Section -->
|
||||
<div class="row mb-4">
|
||||
@@ -292,11 +292,25 @@ function resetOptimization() {
|
||||
document.getElementById('end-date').value = '';
|
||||
}
|
||||
|
||||
window.refreshStatus = async function() {
|
||||
if (window.geneticManager) {
|
||||
try {
|
||||
const statusResult = await geneticManager.getAlgorithmStatus();
|
||||
if (statusResult && statusResult.success && statusResult.data) {
|
||||
const sysStats = statusResult.data.system_status;
|
||||
document.getElementById('available-classrooms').textContent = sysStats.available_classrooms;
|
||||
document.getElementById('active-commissions').textContent = sysStats.active_commissions;
|
||||
document.getElementById('existing-reservations').textContent = sysStats.confirmed_reservations;
|
||||
}
|
||||
} catch (e) {
|
||||
console.error("Error refreshing status:", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', async function() {
|
||||
await loadCommissions();
|
||||
if (window.geneticManager) {
|
||||
await geneticManager.getAlgorithmStatus();
|
||||
}
|
||||
await window.refreshStatus();
|
||||
});
|
||||
|
||||
async function loadCommissions() {
|
||||
|
||||
Reference in New Issue
Block a user