You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
3.0 KiB
JavaScript
68 lines
3.0 KiB
JavaScript
document.addEventListener("DOMContentLoaded", function () {
|
|
const ws_scheme = window.location.protocol === "https:" ? "wss" : "ws";
|
|
const webSocketUrl = `${ws_scheme}://${window.location.host}/ws/online-users/`;
|
|
|
|
const webSocket = new WebSocket(webSocketUrl);
|
|
|
|
webSocket.onopen = function (event) {
|
|
console.log("WebSocket connection to online established");
|
|
};
|
|
|
|
webSocket.onmessage = function (event) {
|
|
const data = JSON.parse(event.data);
|
|
if (data.event_type === "online_user_status") {
|
|
// Update connected users containers
|
|
const connectedUsersContainers = document.querySelectorAll(".connected-users");
|
|
connectedUsersContainers.forEach(container => {
|
|
container.innerHTML = data.html;
|
|
});
|
|
|
|
// Rebind event listeners to switch between containers
|
|
const customerButtons = document.querySelectorAll('.customerButton');
|
|
const staffButtons = document.querySelectorAll('.staffButton');
|
|
const customerContainers = document.querySelectorAll('.recentltLoggedCustomersContainer');
|
|
const staffContainers = document.querySelectorAll('.recentltLoggedStaffsContainer');
|
|
|
|
customerButtons.forEach(button => {
|
|
button.addEventListener('click', function () {
|
|
customerContainers.forEach(container => container.classList.remove('hidden'));
|
|
staffContainers.forEach(container => container.classList.add('hidden'));
|
|
});
|
|
});
|
|
|
|
staffButtons.forEach(button => {
|
|
button.addEventListener('click', function () {
|
|
staffContainers.forEach(container => container.classList.remove('hidden'));
|
|
customerContainers.forEach(container => container.classList.add('hidden'));
|
|
});
|
|
});
|
|
|
|
const onlineUsersIds = data.online_users_ids || [];
|
|
|
|
// Update user activity containers based on online status
|
|
const userActivityContainers = document.querySelectorAll(".users-activities");
|
|
userActivityContainers.forEach(container => {
|
|
const userId = container.getAttribute("data-userId");
|
|
|
|
if (onlineUsersIds.map(id => id.toString()).includes(userId)) {
|
|
container.querySelector("#connected").classList.remove("hidden");
|
|
container.querySelector("#not-connected").classList.add("hidden");
|
|
} else {
|
|
container.querySelector("#connected").classList.add("hidden");
|
|
container.querySelector("#not-connected").classList.remove("hidden");
|
|
}
|
|
});
|
|
}
|
|
};
|
|
|
|
webSocket.onclose = function(event) {
|
|
console.log("WebSocket connection to online closed");
|
|
console.log("Close event code:", event.code);
|
|
console.log("Close event reason:", event.reason);
|
|
};
|
|
|
|
webSocket.onerror = function (error) {
|
|
console.error("WebSocket error:", error);
|
|
};
|
|
});
|