189 lines
7.9 KiB
Plaintext
189 lines
7.9 KiB
Plaintext
@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>
|
||
|