Files
constructdemo/ConstructorAppUI/Views/Shared/Components/_AdminLayoutNavbarPartialComponent/Default.cshtml
2025-05-01 15:18:30 +03:00

189 lines
7.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@using ConstructorAppUI.ViewModels
@model UserProfileViewModel
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
<script src="~/lib/microsoft/signalr/dist/browser/signalr.min.js"></script>
<div class="wrapper">
<script>
$(document).ready(() => {
var signalRHubBaseUrl = '@ViewBag.SignalRHubBaseUrl';
if (!signalRHubBaseUrl) {
console.error("SignalRHubBaseUrl tanımlı değil!");
return;
}
var connection = new signalR.HubConnectionBuilder().withUrl(`${signalRHubBaseUrl}/SignalRHub`).build();
connection.start()
.then(() => {
$("#connstatus").text("Bağlı");
document.getElementById("connstatus").className = "badge bg-success text-white";
var iconElement = document.querySelector("#navbarDropdown1 i");
if (iconElement) {
iconElement.className = "fas fa-wifi text-success";
}
setInterval(() => {
connection.invoke("SendContactUs");
}, 1000);
})
.catch((err) => {
console.error("SignalR bağlantısı sırasında hata:", err);
});
connection.onclose(() => {
$("#connstatus").text("Bağlı Değil");
document.getElementById("connstatus").className = "badge bg-danger text-white";
var iconElement = document.querySelector("#navbarDropdown1 i");
if (iconElement) {
iconElement.className = "fas fa-wifi text-danger";
}
setTimeout(() => connection.start().catch(console.error), 5000);
});
connection.onreconnecting(() => {
$("#connstatus").text("Yeniden Bağlanıyor...");
document.getElementById("connstatus").className = "badge bg-warning text-white";
});
connection.onreconnected(() => {
$("#connstatus").text("Bağlı");
document.getElementById("connstatus").className = "badge bg-success text-white";
var iconElement = document.querySelector("#navbarDropdown1 i");
if (iconElement) {
iconElement.className = "fas fa-wifi text-success";
}
});
connection.on("ReceiveContactUsCountByStatusPending", (value) => {
console.log(value);
if (value > 0) {
$("#contactuscount").text(value);
} else {
$("#contactuscount").text('');
}
});
});
</script>
<nav class="main-header navbar navbar-expand navbar-white navbar-light">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" data-widget="pushmenu" href="#" role="button"><i class="fas fa-bars"></i></a>
</li>
<li class="nav-item">
<a class="nav-link" data-widget="navbar-search" href="#" role="button">
<i class="fas fa-search"></i>
</a>
<div class="navbar-search-block">
<form class="form-inline">
<div class="input-group input-group-sm">
<input class="form-control form-control-navbar" id="searchInput" type="search" placeholder="Arama.." aria-label="Search">
<div class="input-group-append">
<button id="searchButton" class="btn btn-navbar" type="submit">
<i class="fas fa-search"></i>
</button>
<button class="btn btn-navbar" type="button" data-widget="navbar-search">
<i class="fas fa-times"></i>
</button>
</div>
</div>
</form>
</div>
</li>
</ul>
<ul class="navbar-nav ml-auto">
<li class="nav-item dropdown">
<a class="nav-link" data-toggle="dropdown" href="#" id="navbarDropdown1" role="button">
<i class="fas fa-wifi" title="Sistem Durumu"></i>
<span class="badge badge-warning navbar-badge" id="connstatus"></span>
</a>
</li>
<li class="nav-item dropdown hidden-caret">
<a class="nav-link" href="/ContactUs/Index" id="navbarDropdown1" role="button">
<i class="far fa-envelope" title="İletişim Formu"></i>
<span class="badge badge-danger navbar-badge" id="contactuscount"></span>
</a>
</li>
<li class="nav-item dropdown">
<a class="dropdown-toggle profile-pic" data-toggle="dropdown" href="#" aria-expanded="false">
<img src="~/SeedData/defaultuser.png" width="36" class="img-circle"><span style="color: black;">@Model.UserName</span>
</a>
<ul class="dropdown-menu dropdown-user">
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="javascript:void(0);" onclick="window.location.href='/UserProfile/Index/'">
<i class="la la-cog"></i> Ayarlar
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="javascript:void(0);" onclick="window.location.href='/Login/LogOut/'">
<i class="la la-close"></i> Çıkış
</a>
</ul>
</li>
</ul>
</nav>
</div>
<script>
// Vurguları temizlemek için fonksiyon
function clearHighlights() {
document.querySelectorAll("span[style='background-color: yellow;']").forEach(function (span) {
span.outerHTML = span.innerHTML; // Sadece span'ı kaldır ve içeriği olduğu gibi bırak
});
}
// Arama işlemini gerçekleştiren fonksiyon
function performSearch() {
var searchQuery = document.getElementById("searchInput").value.toLowerCase();
if (!searchQuery) return; // Arama kutusu boşsa bir şey yapma
// Vurguları temizle
clearHighlights();
// Sayfadaki hedef alanları belirle (örneğin yalnızca `.content` içindeki metinleri kontrol etmek isterseniz)
var elements = document.querySelectorAll("body *:not(script):not(style):not(input):not(button)");
elements.forEach(function (el) {
// Elementin içeriğini kontrol et
if (el.children.length === 0) { // Sadece metin düğümleri içeren elemanları işlemek
var text = el.textContent;
if (text.toLowerCase().includes(searchQuery)) {
// Aranan kelimeyi <span> ile sarmala ve vurgula
var highlightedText = text.replace(
new RegExp(`(${searchQuery})`, 'gi'),
`<span style="background-color: yellow;">$1</span>`
);
el.innerHTML = highlightedText;
}
}
});
}
// Arama kutusu her değiştiğinde (yazıldıkça) arama yap
document.getElementById("searchInput").addEventListener("input", function () {
performSearch(); // Her input değişikliğinde arama yap
});
// Arama kutusu temizlendiğinde (boşaltıldığında) vurguları temizle
document.getElementById("searchInput").addEventListener("input", function () {
if (this.value === "") {
clearHighlights(); // Arama kutusu boşsa vurguları temizle
}
});
</script>