OneConversorTemplate/OnlyOneAccessTemplate/Views/Shared/_Header.cshtml
Ricardo Carneiro c25bf9dc94 feat: novo menu
2025-06-09 23:16:00 -03:00

91 lines
4.2 KiB
Plaintext

<nav class="navbar navbar-expand-lg navbar-dark bg-primary sticky-top">
<div class="container">
<a class="navbar-brand d-flex align-items-center" href="/@ViewBag.Language">
<!-- Usando seu logo existente -->
<img src="~/img/logo-white.png" alt="Convert-it" height="32" class="me-2">
<strong>Convert-it</strong>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav me-auto">
<li class="nav-item">
<a class="nav-link" href="/@ViewBag.Language">
<i class="fas fa-home me-1"></i>
@(ViewBag.Language == "pt" ? "Início" : ViewBag.Language == "es" ? "Inicio" : "Home")
</a>
</li>
</ul>
<!-- Status dos Módulos -->
<div class="navbar-nav me-3">
<span class="navbar-text d-flex align-items-center">
<span class="status-indicator me-2" id="modules-status"></span>
<small id="modules-count">Carregando...</small>
</span>
</div>
<!-- Language Switcher -->
<div class="dropdown">
<button class="btn btn-outline-light dropdown-toggle btn-sm" type="button" data-bs-toggle="dropdown">
<i class="fas fa-globe me-1"></i>
@ViewBag.Language?.ToUpper()
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li>
<a class="dropdown-item" href="/pt@(ViewContext.RouteData.Values["converter"] != null ? "/" + ViewContext.RouteData.Values["converter"] : "")">
<i class="flag-icon flag-icon-br me-2"></i>Português
</a>
</li>
<li>
<a class="dropdown-item" href="/en@(ViewContext.RouteData.Values["converter"] != null ? "/" + ViewContext.RouteData.Values["converter"] : "")">
<i class="flag-icon flag-icon-us me-2"></i>English
</a>
</li>
<li>
<a class="dropdown-item" href="/es@(ViewContext.RouteData.Values["converter"] != null ? "/" + ViewContext.RouteData.Values["converter"] : "")">
<i class="flag-icon flag-icon-es me-2"></i>Español
</a>
</li>
</ul>
</div>
</div>
</div>
</nav>
<script>
// Atualizar status dos módulos no header
async function updateModulesStatus() {
try {
const response = await fetch('/api/menu/converters?language=@ViewBag.Language');
const data = await response.json();
const statusIndicator = document.getElementById('modules-status');
const countElement = document.getElementById('modules-count');
if (data.success && data.menu) {
const totalModules = data.menu.reduce((total, category) => total + category.items.length, 0);
const activeModules = data.menu.reduce((total, category) =>
total + category.items.filter(item => item.isHealthy !== false).length, 0);
statusIndicator.className = `status-indicator me-2 ${activeModules === totalModules ? 'bg-success' : 'bg-warning'}`;
statusIndicator.style.width = '8px';
statusIndicator.style.height = '8px';
statusIndicator.style.borderRadius = '50%';
statusIndicator.style.display = 'inline-block';
countElement.textContent = `${activeModules}/${totalModules} módulos`;
} else {
statusIndicator.className = 'status-indicator me-2 bg-danger';
countElement.textContent = 'Erro ao carregar';
}
} catch (error) {
console.error('Erro ao atualizar status:', error);
}
}
document.addEventListener('DOMContentLoaded', updateModulesStatus);
</script>