41 lines
1004 B
JavaScript
41 lines
1004 B
JavaScript
export default class PreviewContentDialog extends HTMLSpanElement {
|
|
#url;
|
|
#service;
|
|
#status;
|
|
|
|
#statusTexts = {
|
|
200: 'up',
|
|
204: 'up'
|
|
}
|
|
|
|
#statusColors = {
|
|
200: 'bg-green-500',
|
|
204: 'bg-green-500'
|
|
}
|
|
|
|
constructor() {
|
|
super();
|
|
this.#url = this.getAttribute('url');
|
|
this.#service = this.getAttribute('service');
|
|
|
|
(async () => await this.checkStatus())();
|
|
setInterval(async () => await this.checkStatus(), 1000 * 60 * 10);
|
|
}
|
|
|
|
async checkStatus() {
|
|
const response = await fetch(this.#url);
|
|
this.#status = response.status;
|
|
this.setAttribute('title', this.getTitle());
|
|
this.classList.remove('bg-red-500', 'bg-green-500');
|
|
this.classList.add(this.getColor());
|
|
}
|
|
|
|
getTitle() {
|
|
return `${this.#service} is ${this.#statusTexts[this.#status] ?? 'down'}`
|
|
}
|
|
|
|
getColor() {
|
|
return this.#statusColors[this.#status] ?? 'bg-red-500';
|
|
}
|
|
}
|