$(document).ready(function() {
$.ajaxSetup({
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }
});
const sessionModal = new bootstrap.Modal(document.getElementById('sessionModal'));
let currentPage = 1;
let searchQuery = '';
let searchTimer;
fetchSessions(currentPage, searchQuery);
function fetchSessions(page, search = '') {
$.ajax({
type: "GET",
url: base_url + `/fetch-client-users?page=${page}&search=${encodeURIComponent(search)}`,
dataType: "json",
success: function(response) {
$('#clientUsersTableBody').html("");
if (response.sessions.data && response.sessions.data.length > 0) {
$.each(response.sessions.data, function(key, item) {
$('#clientUsersTableBody').append(`
${item.id}
${item.email}
${item.role}
`);
});
let from = response.sessions.from;
let to = response.sessions.to;
let total = response.sessions.total;
$('#paginationCounter').html(`Showing ${from} to ${to} of ${total} results`);
} else {
$('#clientUsersTableBody').html("
No users found
");
$('#paginationCounter').html('Showing 0 to 0 of 0 results');
}
renderPagination(response);
}
});
}
$('#searchInput').on('keyup', function() {
clearTimeout(searchTimer);
searchQuery = $(this).val();
// Wait 500ms after the user stops typing to trigger the request
searchTimer = setTimeout(function() {
currentPage = 1; // Reset to page 1 for a brand new search
fetchSessions(currentPage, searchQuery);
}, 500);
});
$(document).on('click', '.page-link', function(e) {
e.preventDefault();
if ($(this).parent().hasClass('disabled')) {
return false;
}
let page = $(this).data('page');
if (page > 0) {
currentPage = page;
fetchSessions(currentPage, searchQuery);
}
});
function renderPagination(response) {
let linksHtml = '';
currentPage = response.sessions.current_page;
let lastPage = response.sessions.last_page;
let prevDisabled = currentPage === 1 ? 'disabled' : '';
let prevTabIndex = currentPage === 1 ? 'tabindex="-1"' : '';
linksHtml += `
`;
for (let i = 1; i <= lastPage; i++) {
let activeClass = currentPage === i ? 'active' : '';
let activeAria = currentPage === i ? 'aria-current="page"' : '';
linksHtml += `