Skip to content

Commit

Permalink
start clean
Browse files Browse the repository at this point in the history
  • Loading branch information
guillaume-chervet committed Nov 26, 2024
1 parent 68cf5fb commit c87c080
Showing 1 changed file with 16 additions and 27 deletions.
43 changes: 16 additions & 27 deletions production/webapp/src/SlimFaasPlanetSaver.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@

const normalizeBaseUrl = (url) => {
let tempUrl = url;
if (tempUrl.endsWith('/')) tempUrl = tempUrl.slice(0, -1);
return tempUrl;
}

export default class SlimFaasPlanetSaver {
constructor(baseUrl, options = {}) {
this.baseUrl = this.normalizeBaseUrl(baseUrl);
this.baseUrl = normalizeBaseUrl(baseUrl);
this.updateCallback = options.updateCallback || (() => {});
this.errorCallback = options.errorCallback || (() => {});
this.interval = options.interval || 5000;
Expand All @@ -14,22 +20,12 @@ export default class SlimFaasPlanetSaver {
this.handleVisibilityChange = this.handleVisibilityChange.bind(this);
document.addEventListener('visibilitychange', this.handleVisibilityChange);

// Initialise le calque et le style
this.createOverlay();
this.injectStyles();

// Événements personnalisés
this.events = document.createElement('div'); // Utilisé comme bus d'événements
}

// Normalise l'URL de base
normalizeBaseUrl(url) {
let tempUrl = url;
if (tempUrl.endsWith('/')) tempUrl = tempUrl.slice(0, -1);
return tempUrl;
this.events = document.createElement('div');
}

// Gestion de la visibilité du document
handleVisibilityChange() {
this.isDocumentVisible = !document.hidden;
if (this.isDocumentVisible) {
Expand All @@ -51,13 +47,17 @@ export default class SlimFaasPlanetSaver {
try {
await Promise.all(wakePromises);
} catch (error) {
console.error("Erreur lors du réveil des pods:", error);
console.error("Error waking up pods:", error);
}
}

// Récupère le statut de l'infrastructure
async fetchStatus() {
if (!this.isDocumentVisible) return;
if (!this.isDocumentVisible) {
this.intervalId = setTimeout(() => {
this.fetchStatus();
}, this.interval);
return;
}

try {
const response = await fetch(`${this.baseUrl}/status-functions`);
Expand All @@ -75,18 +75,16 @@ export default class SlimFaasPlanetSaver {
const errorMessage = error.message;
this.errorCallback(errorMessage);

// Déclenche un événement "error"
this.triggerEvent('error', { message: errorMessage });

console.error('Erreur lors de la récupération des données :', errorMessage);
console.error('Error getting slimfaas data :', errorMessage);
} finally {
this.intervalId = setTimeout(() => {
this.fetchStatus();
}, this.interval);
}
}

// Définit l'état "ready" et gère le calque
setReadyState(isReady) {
this.isReady = isReady;
if (isReady) {
Expand All @@ -96,7 +94,6 @@ export default class SlimFaasPlanetSaver {
}
}

// Démarre la surveillance (polling)
startPolling() {
if (this.intervalId || !this.baseUrl) return;

Expand All @@ -107,15 +104,13 @@ export default class SlimFaasPlanetSaver {
}, this.interval);
}

// Arrête la surveillance
stopPolling() {
if (this.intervalId) {
clearInterval(this.intervalId);
this.intervalId = null;
}
}

// Injecte les styles CSS via un élément <style>
injectStyles() {
const cssString = `
.environment-overlay {
Expand Down Expand Up @@ -145,42 +140,36 @@ export default class SlimFaasPlanetSaver {
document.head.appendChild(this.styleElement);
}

// Crée un calque pour le message d'attente
createOverlay() {
this.overlayElement = document.createElement('div');
this.overlayElement.className = 'environment-overlay';
this.overlayElement.innerText = this.overlayMessage;
document.body.appendChild(this.overlayElement);
}

// Affiche le calque
showOverlay() {
if (this.overlayElement) {
this.overlayElement.classList.add('visible');
}
}

// Cache le calque
hideOverlay() {
if (this.overlayElement) {
this.overlayElement.classList.remove('visible');
}
}

// Met à jour dynamiquement le message de l'overlay
updateOverlayMessage(newMessage) {
if (this.overlayElement) {
this.overlayElement.innerText = newMessage;
}
}

// Déclenche un événement personnalisé
triggerEvent(eventName, detail) {
const event = new CustomEvent(eventName, { detail });
this.events.dispatchEvent(event);
}

// Nettoyage des ressources
cleanup() {
this.stopPolling();
document.removeEventListener('visibilitychange', this.handleVisibilityChange);
Expand Down

0 comments on commit c87c080

Please sign in to comment.