-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathloader.js
88 lines (72 loc) · 2.72 KB
/
loader.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/** @type { HTMLDivElement } */
const appLoaderContainer = document.querySelector(".app-loader-dialog");
/** @type { HTMLDivElement } */
const loader = document.querySelector(".app-loader");
/** @type { HTMLSpanElement } */
const msgElement = document.querySelector(".app-loader-msg");
/** @type { HTMLButtonElement} */
const refreshBtn = document.querySelector(".app-loader-refresh");
/** @type { HTMLDivElement } */
const monitor = document.querySelector(".app-monitor-container");
/** @type { HTMLUListElement} */
const monitorList = document.querySelector(".app-monitor-status");
const slowConnectionTime = 60 * 1000;
const noConnectionTime = 120 * 1000;
const appLoaderContainerTime = 0.3 * 1000;
const welcomeMsgTime = (1 + appLoaderContainerTime / 1000) * 1000;
let t1 = setTimeout(function () {
t1 = null;
if (msgElement && msgElement.textContent) {
msgElement.textContent = "Your connection seems to be slow, Please wait...";
}
}, slowConnectionTime);
let t2 = setTimeout(function () {
t2 = null;
refreshBtn && refreshBtn.classList.add("active");
if (msgElement) {
msgElement.textContent = "Your connection seems to be broken, Please try again";
}
}, noConnectionTime);
refreshBtn &&
refreshBtn.addEventListener(
"click",
function () {
window.onbeforeunload = null;
window.location.reload();
},
{ once: true },
);
window.$$appLoader = () => {
refreshBtn && refreshBtn.classList.remove("active");
t1 && clearTimeout(t1);
t2 && clearTimeout(t2);
refreshBtn && refreshBtn.classList.remove("active");
loader && loader.classList.remove("active");
if (msgElement) {
msgElement.textContent = "Dashboard loaded. Welcome!";
}
setTimeout(() => {
if (appLoaderContainer) {
appLoaderContainer.classList.remove("active");
setTimeout(() => appLoaderContainer.remove(), appLoaderContainerTime);
}
}, welcomeMsgTime);
};
window.$$showMonitorError = urls => {
if (msgElement) msgElement.classList.remove("active");
if (monitor) monitor.classList.add("active");
const monitorMsgElement = document.querySelector(".app-monitor-msg");
if (monitorMsgElement) {
monitorMsgElement.classList.add("active");
monitorMsgElement.textContent = "Can't reach some services on provided stacks, Please try again";
}
if (monitorList) {
monitorList.innerHTML = Object.entries(urls).map(createElement).join(" ");
}
refreshBtn && refreshBtn.classList.add("active");
};
function createElement([serviceName, serviceStatus]) {
return `<li><div style="display:flex"><p class="service-name">${serviceName}</p> <p class="service-status service-${
serviceStatus !== null ? "reachable" : "unreachable"
}">${serviceStatus !== null ? "✓" : "✗"}</p></div></li>`;
}