From e4908396be8fbfdc99df85dd3e6248d42f370e89 Mon Sep 17 00:00:00 2001 From: Miguel Date: Fri, 15 Aug 2025 19:19:24 +0200 Subject: [PATCH] feat: Add detailed logging for plot session creation and remove unused TabCoordinationDemo component --- application_events.json | 74 ++++++++++++++++++- frontend/src/components/ChartjsPlot.jsx | 71 ------------------ .../src/components/PlotRealtimeSession.jsx | 6 -- .../src/components/TabCoordinationDemo.jsx | 62 ---------------- frontend/src/pages/Dashboard.jsx | 4 - 5 files changed, 72 insertions(+), 145 deletions(-) delete mode 100644 frontend/src/components/TabCoordinationDemo.jsx diff --git a/application_events.json b/application_events.json index e9f355d..0c42a82 100644 --- a/application_events.json +++ b/application_events.json @@ -7090,8 +7090,78 @@ "trigger_variable": null, "auto_started": true } + }, + { + "timestamp": "2025-08-15T18:58:33.217127", + "level": "info", + "event_type": "plot_session_created", + "message": "Plot session 'UR29' created and started", + "details": { + "session_id": "plot_1_1755277113217_7", + "variables": [ + "UR29_Brix", + "UR29_ma", + "AUX Blink_1.0S", + "AUX Blink_1.6S" + ], + "time_window": 36, + "trigger_variable": null, + "auto_started": true + } + }, + { + "timestamp": "2025-08-15T19:01:07.918276", + "level": "info", + "event_type": "plot_session_created", + "message": "Plot session 'Clock' created and started", + "details": { + "session_id": "Clock_1755277267917_8", + "variables": [ + "AUX Blink_1.0S", + "AUX Blink_1.6S" + ], + "time_window": 10, + "trigger_variable": null, + "auto_started": true + } + }, + { + "timestamp": "2025-08-15T19:05:09.401035", + "level": "info", + "event_type": "plot_session_created", + "message": "Plot session 'UR29' created and started", + "details": { + "session_id": "plot_1_1755277509401_9", + "variables": [ + "UR29_Brix", + "UR29_ma", + "AUX Blink_1.0S", + "AUX Blink_1.6S" + ], + "time_window": 36, + "trigger_variable": null, + "auto_started": true + } + }, + { + "timestamp": "2025-08-15T19:06:20.284691", + "level": "info", + "event_type": "plot_session_created", + "message": "Plot session 'UR29' created and started", + "details": { + "session_id": "plot_1_1755277580284_10", + "variables": [ + "UR29_Brix", + "UR29_ma", + "AUX Blink_1.0S", + "AUX Blink_1.6S" + ], + "time_window": 36, + "trigger_variable": null, + "auto_started": true + } } ], - "last_updated": "2025-08-15T18:54:24.318797", - "total_entries": 579 + "last_updated": "2025-08-15T19:06:20.284691", + "total_entries": 583 } \ No newline at end of file diff --git a/frontend/src/components/ChartjsPlot.jsx b/frontend/src/components/ChartjsPlot.jsx index 7435eec..cb1de3c 100644 --- a/frontend/src/components/ChartjsPlot.jsx +++ b/frontend/src/components/ChartjsPlot.jsx @@ -251,35 +251,6 @@ const ChartjsPlot = ({ session, height = '400px' }) => { return false; }, [session]); - // Diagnostic function to help identify issues - const runDiagnostics = useCallback(() => { - console.log('🔍 Chart Diagnostics:', { - chartExists: !!chartRef.current, - canvasExists: !!canvasRef.current, - sessionId: session?.session_id, - sessionActive: session?.is_active, - sessionPaused: session?.is_paused, - health: chartHealthRef.current, - datasets: chartRef.current?.data?.datasets?.length || 0, - realtimeConfig: !!chartRef.current?.options?.scales?.x?.realtime - }); - - // Check for common issues - const issues = []; - if (!chartRef.current) issues.push('Chart not initialized'); - if (!session?.is_active) issues.push('Session not active'); - if (session?.is_paused) issues.push('Session is paused'); - if (chartHealthRef.current.consecutiveErrors > 5) issues.push(`${chartHealthRef.current.consecutiveErrors} consecutive errors`); - - if (issues.length > 0) { - console.warn('⚠️ Issues detected:', issues); - } else { - console.log('✅ No issues detected'); - } - - return issues; - }, [session]); - // Load historical data from CSV files const loadHistoricalData = useCallback(async (variables, timeWindow) => { try { @@ -1872,48 +1843,6 @@ const ChartjsPlot = ({ session, height = '400px' }) => { 🔄 Reset Zoom - {/* Auto-recovery button when chart health is poor */} - {!chartHealthRef.current.isHealthy && ( - <> - - - - - )} )} diff --git a/frontend/src/components/PlotRealtimeSession.jsx b/frontend/src/components/PlotRealtimeSession.jsx index 46e1e6a..6eb0bf0 100644 --- a/frontend/src/components/PlotRealtimeSession.jsx +++ b/frontend/src/components/PlotRealtimeSession.jsx @@ -522,12 +522,6 @@ export default function PlotRealtimeSession({ <> | Trigger: {localConfig.trigger_variable} )} - - Tab: {browserTabId} - {actualSessionId && actualSessionId !== plotDefinition.id && ( - <> | Session: {actualSessionId.substring(0, 40)}... - )} - diff --git a/frontend/src/components/TabCoordinationDemo.jsx b/frontend/src/components/TabCoordinationDemo.jsx deleted file mode 100644 index 0e5b3b3..0000000 --- a/frontend/src/components/TabCoordinationDemo.jsx +++ /dev/null @@ -1,62 +0,0 @@ -import React from 'react' -import { Box, Text, Badge, VStack, HStack, useColorModeValue } from '@chakra-ui/react' -import { getTabCoordinator } from '../utils/TabCoordinator' - -/** - * TabCoordinationDemo - Componente de demostración para mostrar el estado de coordinación - */ -export default function TabCoordinationDemo() { - const [coordinator, setCoordinator] = React.useState(null) - const [isLeader, setIsLeader] = React.useState(false) - const [tabInfo, setTabInfo] = React.useState({}) - const bgColor = useColorModeValue('gray.50', 'gray.800') - - React.useEffect(() => { - const coord = getTabCoordinator() - setCoordinator(coord) - setIsLeader(coord.getIsLeader()) - setTabInfo({ - tabId: coord.tabId, - isLeader: coord.getIsLeader() - }) - - // Subscribirse a cambios de liderazgo - const unsubscribe = coord.subscribe('demo', ({ type, data }) => { - if (type === 'leadership_change') { - setIsLeader(data.isLeader) - setTabInfo(prev => ({ - ...prev, - isLeader: data.isLeader - })) - } - }) - - return unsubscribe - }, []) - - if (!coordinator) { - return Loading coordinator... - } - - return ( - - - - 🔗 Tab Coordination Status - - {isLeader ? '👑 Leader' : '👥 Follower'} - - - - Tab ID: {tabInfo.tabId} - - - Role: {isLeader ? 'Making real connections to backend' : 'Receiving data from leader tab'} - - - Only the leader tab creates actual HTTP connections. Other tabs receive data via BroadcastChannel. - - - - ) -} diff --git a/frontend/src/pages/Dashboard.jsx b/frontend/src/pages/Dashboard.jsx index 33a1ea5..0d1f537 100644 --- a/frontend/src/pages/Dashboard.jsx +++ b/frontend/src/pages/Dashboard.jsx @@ -54,7 +54,6 @@ import LayoutObjectFieldTemplate from '../components/rjsf/LayoutObjectFieldTempl import { VariableProvider, useVariableContext } from '../contexts/VariableContext' import * as api from '../services/api' import { useCoordinatedPolling } from '../hooks/useCoordinatedConnection' -import TabCoordinationDemo from '../components/TabCoordinationDemo' // Collapsible Array Items Form - Each item in the array is individually collapsible function CollapsibleArrayItemsForm({ data, schema, uiSchema, onSave, title, icon, getItemLabel }) { @@ -1131,9 +1130,6 @@ function DashboardContent() { )} - {/* Tab Coordination Demo */} - -