update
This commit is contained in:
@@ -608,7 +608,8 @@ textarea, input,
|
||||
}
|
||||
|
||||
.chat-messages {
|
||||
height: 400px;
|
||||
min-height: 400px;
|
||||
max-height: 800px;
|
||||
overflow-y: auto;
|
||||
padding: 1rem;
|
||||
background-color: var(--primary-bg);
|
||||
|
||||
+251
-10
@@ -38,6 +38,29 @@ function initializeSocketIO() {
|
||||
socket.on('new_generation', function(data) {
|
||||
updateNextMessage(data);
|
||||
});
|
||||
|
||||
socket.on('ia_generator_status_changed', function(data) {
|
||||
// Synchroniser l'état de l'interface web
|
||||
const iaGeneratorToggle = document.getElementById('iaGeneratorToggle');
|
||||
const iaGeneratorStatus = document.getElementById('iaGeneratorStatus');
|
||||
const chatMessageToggle = document.getElementById('chatMessageToggle');
|
||||
const chatMessageStatus = document.getElementById('chatMessageStatus');
|
||||
|
||||
if (iaGeneratorToggle && iaGeneratorStatus) {
|
||||
iaGeneratorToggle.checked = data.running;
|
||||
iaGeneratorStatus.textContent = data.running ? 'En cours...' : 'Arrêté';
|
||||
iaGeneratorStatus.className = data.running ? 'text-success' : 'text-muted';
|
||||
}
|
||||
|
||||
// Synchroniser aussi l'état de l'envoi de messages
|
||||
if (chatMessageToggle && chatMessageStatus) {
|
||||
chatMessageToggle.checked = data.running;
|
||||
chatMessageStatus.textContent = data.running ? 'Activé' : 'Désactivé';
|
||||
chatMessageStatus.className = data.running ? 'text-success' : 'text-muted';
|
||||
}
|
||||
|
||||
console.log('IA Generator status changed:', data);
|
||||
});
|
||||
}
|
||||
|
||||
// Mise à jour du statut de connexion
|
||||
@@ -66,7 +89,8 @@ async function loadInitialData() {
|
||||
loadGenerations(),
|
||||
checkAutoSubtitleStatus(), // Ajouter la vérification du statut auto
|
||||
checkAutoMessageStatus(), // Ajouter la vérification du statut auto messages
|
||||
checkChatMessageStatus() // Ajouter la vérification du statut chat messages
|
||||
checkChatMessageStatus(), // Ajouter la vérification du statut chat messages
|
||||
checkSystemStatus() // Ajouter la vérification du statut système
|
||||
]);
|
||||
} catch (error) {
|
||||
console.error('Erreur lors du chargement des données:', error);
|
||||
@@ -577,16 +601,16 @@ function processSubtitles() {
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
if (data.success) {
|
||||
showAlert(data.message, 'success');
|
||||
showToast(data.message, 'success');
|
||||
// Actualiser les sous-titres
|
||||
loadSubtitles();
|
||||
} else {
|
||||
showAlert('Erreur: ' + data.error, 'danger');
|
||||
showToast('Erreur: ' + data.error, 'danger');
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Erreur:', error);
|
||||
showAlert('Erreur lors du traitement des sous-titres', 'danger');
|
||||
showToast('Erreur lors du traitement des sous-titres', 'danger');
|
||||
})
|
||||
.finally(() => {
|
||||
// Restaurer le bouton
|
||||
@@ -595,6 +619,38 @@ function processSubtitles() {
|
||||
});
|
||||
}
|
||||
|
||||
async function clearSubtitlesHistory() {
|
||||
// Demander confirmation avant de nettoyer
|
||||
if (!confirm('Êtes-vous sûr de vouloir nettoyer l\'historique des sous-titres ? Cette action est irréversible.')) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch('/api/subtitles/clear', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
});
|
||||
|
||||
const data = await response.json();
|
||||
|
||||
if (data.success) {
|
||||
showToast(data.message, 'success');
|
||||
// Vider l'affichage de l'historique
|
||||
document.getElementById('subtitles-history').innerHTML = '<div class="text-muted text-center">Aucun sous-titre dans l\'historique</div>';
|
||||
// Mettre à jour le dernier sous-titre
|
||||
document.getElementById('last-subtitle').innerHTML = 'Aucun texte détecté pour le moment';
|
||||
document.getElementById('last-subtitle').className = 'alert alert-warning';
|
||||
} else {
|
||||
showToast(data.error || 'Erreur lors du nettoyage', 'error');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Erreur:', error);
|
||||
showToast('Erreur lors du nettoyage de l\'historique', 'error');
|
||||
}
|
||||
}
|
||||
|
||||
// === GESTION DES GÉNÉRATIONS ===
|
||||
|
||||
// Chargement des générations
|
||||
@@ -1532,10 +1588,10 @@ async function forceStopAutoMessage() {
|
||||
const statusElement = document.getElementById('autoMessageStatus');
|
||||
|
||||
if (toggle && statusElement) {
|
||||
autoMessageRunning = false;
|
||||
toggle.checked = false;
|
||||
statusElement.textContent = 'Arrêté';
|
||||
statusElement.className = 'text-muted';
|
||||
autoMessageRunning = false;
|
||||
}
|
||||
|
||||
showAlert('Arrêt forcé de l\'envoi automatique de messages', 'warning');
|
||||
@@ -1546,7 +1602,42 @@ async function forceStopAutoMessage() {
|
||||
console.error('Erreur lors de l\'arrêt forcé:', error);
|
||||
showAlert('Erreur lors de l\'arrêt forcé', 'danger');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fonction pour forcer l'arrêt de la génération automatique de sous-titres
|
||||
async function forceStopAutoSubtitle() {
|
||||
try {
|
||||
const response = await fetch('/api/subtitles/auto/force-stop', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
if (result.success) {
|
||||
// Mettre à jour l'interface
|
||||
const toggle = document.getElementById('autoSubtitleToggle');
|
||||
const statusElement = document.getElementById('autoSubtitleStatus');
|
||||
|
||||
if (toggle && statusElement) {
|
||||
autoSubtitleRunning = false;
|
||||
toggle.checked = false;
|
||||
statusElement.textContent = 'Arrêté';
|
||||
statusElement.className = 'text-muted';
|
||||
hideProcessingFile();
|
||||
}
|
||||
|
||||
showAlert('Arrêt forcé de la génération automatique de sous-titres', 'warning');
|
||||
} else {
|
||||
showAlert('Erreur: ' + result.error, 'danger');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Erreur lors de l\'arrêt forcé:', error);
|
||||
showAlert('Erreur lors de l\'arrêt forcé', 'danger');
|
||||
}
|
||||
}
|
||||
|
||||
// Fonction pour activer/désactiver l'envoi de messages dans le chat
|
||||
async function toggleChatMessage() {
|
||||
@@ -1628,13 +1719,163 @@ async function checkChatMessageStatus() {
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Erreur lors de la vérification du statut chat:', error);
|
||||
// En cas d'erreur, forcer l'activation par défaut
|
||||
// En cas d'erreur, forcer la désactivation par défaut
|
||||
const toggle = document.getElementById('chatMessageToggle');
|
||||
const statusElement = document.getElementById('chatMessageStatus');
|
||||
if (toggle && statusElement) {
|
||||
toggle.checked = true;
|
||||
statusElement.textContent = 'Activé';
|
||||
statusElement.className = 'text-success';
|
||||
toggle.checked = false;
|
||||
statusElement.textContent = 'Désactivé';
|
||||
statusElement.className = 'text-muted';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// === GESTION DES COMPOSANTS SYSTÈME ===
|
||||
|
||||
// Fonction pour activer/désactiver le générateur IA
|
||||
async function toggleIAGenerator() {
|
||||
const toggle = document.getElementById('iaGeneratorToggle');
|
||||
const statusElement = document.getElementById('iaGeneratorStatus');
|
||||
|
||||
if (toggle.checked) {
|
||||
// Démarrer le générateur IA
|
||||
try {
|
||||
const response = await fetch('/api/ia-generator/start', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
if (result.success) {
|
||||
statusElement.textContent = 'En cours...';
|
||||
statusElement.className = 'text-success';
|
||||
showToast('Générateur IA démarré', 'success');
|
||||
} else {
|
||||
toggle.checked = false;
|
||||
showToast('Erreur: ' + result.message, 'error');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Erreur:', error);
|
||||
toggle.checked = false;
|
||||
showToast('Erreur lors du démarrage du générateur IA', 'error');
|
||||
}
|
||||
} else {
|
||||
// Arrêter le générateur IA
|
||||
try {
|
||||
const response = await fetch('/api/ia-generator/stop', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
if (result.success) {
|
||||
statusElement.textContent = 'Arrêté';
|
||||
statusElement.className = 'text-muted';
|
||||
showToast('Générateur IA arrêté', 'info');
|
||||
} else {
|
||||
toggle.checked = true;
|
||||
showToast('Erreur: ' + result.message, 'error');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Erreur:', error);
|
||||
toggle.checked = true;
|
||||
showToast('Erreur lors de l\'arrêt du générateur IA', 'error');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fonction pour activer/désactiver le contrôleur Twitch
|
||||
async function toggleControlTwitch() {
|
||||
const toggle = document.getElementById('controlTwitchToggle');
|
||||
const statusElement = document.getElementById('controlTwitchStatus');
|
||||
|
||||
if (toggle.checked) {
|
||||
// Démarrer le contrôleur Twitch
|
||||
try {
|
||||
const response = await fetch('/api/control-twitch/start', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
if (result.success) {
|
||||
statusElement.textContent = 'En cours...';
|
||||
statusElement.className = 'text-success';
|
||||
showToast('Contrôleur Twitch démarré', 'success');
|
||||
} else {
|
||||
toggle.checked = false;
|
||||
showToast('Erreur: ' + result.message, 'error');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Erreur:', error);
|
||||
toggle.checked = false;
|
||||
showToast('Erreur lors du démarrage du contrôleur Twitch', 'error');
|
||||
}
|
||||
} else {
|
||||
// Arrêter le contrôleur Twitch
|
||||
try {
|
||||
const response = await fetch('/api/control-twitch/stop', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
});
|
||||
|
||||
const result = await response.json();
|
||||
|
||||
if (result.success) {
|
||||
statusElement.textContent = 'Arrêté';
|
||||
statusElement.className = 'text-muted';
|
||||
showToast('Contrôleur Twitch arrêté', 'info');
|
||||
} else {
|
||||
toggle.checked = true;
|
||||
showToast('Erreur: ' + result.message, 'error');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Erreur:', error);
|
||||
toggle.checked = true;
|
||||
showToast('Erreur lors de l\'arrêt du contrôleur Twitch', 'error');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fonction pour vérifier le statut système au chargement
|
||||
async function checkSystemStatus() {
|
||||
try {
|
||||
const response = await fetch('/api/system-status');
|
||||
const status = await response.json();
|
||||
|
||||
// Mettre à jour le statut du générateur IA
|
||||
const iaGeneratorToggle = document.getElementById('iaGeneratorToggle');
|
||||
const iaGeneratorStatus = document.getElementById('iaGeneratorStatus');
|
||||
|
||||
if (iaGeneratorToggle && iaGeneratorStatus) {
|
||||
iaGeneratorToggle.checked = status.ia_generator.running;
|
||||
iaGeneratorStatus.textContent = status.ia_generator.status;
|
||||
iaGeneratorStatus.className = status.ia_generator.running ? 'text-success' : 'text-muted';
|
||||
}
|
||||
|
||||
// Mettre à jour le statut du contrôleur Twitch
|
||||
const controlTwitchToggle = document.getElementById('controlTwitchToggle');
|
||||
const controlTwitchStatus = document.getElementById('controlTwitchStatus');
|
||||
|
||||
if (controlTwitchToggle && controlTwitchStatus) {
|
||||
controlTwitchToggle.checked = status.control_twitch.running;
|
||||
controlTwitchStatus.textContent = status.control_twitch.status;
|
||||
controlTwitchStatus.className = status.control_twitch.running ? 'text-success' : 'text-muted';
|
||||
}
|
||||
|
||||
console.log('Statut système chargé:', status);
|
||||
} catch (error) {
|
||||
console.error('Erreur lors de la vérification du statut système:', error);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user