From cda40ce0abea246955c97046f88f4f3d2b467b5d Mon Sep 17 00:00:00 2001 From: Miguel Date: Wed, 27 Aug 2025 12:02:57 +0200 Subject: [PATCH] feat: Update UI schema help texts to descriptions for consistency; add new application event logs and update system state configuration --- application_events.json | 18 ++++++++++-- .../ui/dataset-definitions.uischema.json | 18 ++++++------ .../schema/ui/dataset-variables.uischema.json | 27 ++++++++---------- config/schema/ui/plc.uischema.json | 6 ++-- .../schema/ui/plot-definitions.uischema.json | 28 +++++++++---------- config/schema/ui/plot-variables.uischema.json | 17 ++++++----- frontend/package.json | 1 + frontend/src/components/PlotManager.jsx | 12 ++++---- .../components/rjsf/CustomFieldTemplate.jsx | 0 .../components/widgets/PathBrowserWidget.jsx | 2 +- .../widgets/PathBrowserWidgetNew.jsx | 2 +- .../widgets/SimpleFilePathWidget.jsx | 2 +- system_state.json | 3 +- 13 files changed, 74 insertions(+), 62 deletions(-) create mode 100644 frontend/src/components/rjsf/CustomFieldTemplate.jsx diff --git a/application_events.json b/application_events.json index 4d87cef..8a32d5f 100644 --- a/application_events.json +++ b/application_events.json @@ -1902,8 +1902,22 @@ "read_time": 0.02987360954284668, "variables_count": 4 } + }, + { + "timestamp": "2025-08-27T11:20:48.361932", + "level": "info", + "event_type": "application_started", + "message": "Application initialization completed successfully", + "details": {} + }, + { + "timestamp": "2025-08-27T11:20:49.372928", + "level": "info", + "event_type": "application_started", + "message": "Application initialization completed successfully", + "details": {} } ], - "last_updated": "2025-08-27T09:27:47.716461", - "total_entries": 93 + "last_updated": "2025-08-27T11:20:49.372928", + "total_entries": 95 } \ No newline at end of file diff --git a/config/schema/ui/dataset-definitions.uischema.json b/config/schema/ui/dataset-definitions.uischema.json index ef31823..552753b 100644 --- a/config/schema/ui/dataset-definitions.uischema.json +++ b/config/schema/ui/dataset-definitions.uischema.json @@ -19,33 +19,33 @@ ] ], "id": { - "ui:help": "Unique ID for this dataset (alphanumeric, underscore, dash)", + "ui:description": "Unique ID for this dataset (alphanumeric, underscore, dash)", "ui:placeholder": "e.g., DAR, Fast" }, "name": { - "ui:help": "Human-readable name for this dataset", + "ui:description": "Human-readable name for this dataset", "ui:placeholder": "e.g., Temperature Sensors, Production Line A" }, "prefix": { - "ui:help": "Short prefix for CSV filenames (alphanumeric, underscore, dash only)", + "ui:description": "Short prefix for CSV filenames (alphanumeric, underscore, dash only)", "ui:placeholder": "e.g., temp, line_a, sensors" }, "enabled": { - "ui:help": "When enabled, this dataset will be actively sampled and recorded", + "ui:description": "When enabled, this dataset will be actively sampled and recorded", "ui:widget": "switch" }, "sampling_interval": { - "ui:help": "Custom sampling interval in seconds (0.01–10). Leave empty to use the global PLC sampling interval.", + "ui:description": "Custom sampling interval in seconds (0.01–10). Leave empty to use the global PLC sampling interval.", "ui:placeholder": "Leave empty to use global interval", - "ui:widget": "updown", - "ui:options": { "step": 0.01, "min": 0.01, "max": 10 } + "ui:widget": "updown", + "ui:options": { "step": 0.01, "min": 0.01, "max": 10 } }, "use_optimized_reading": { - "ui:help": "📊 Enable optimized batch reading for better performance. Disable if experiencing compatibility issues with older PLC firmware.", + "ui:description": "📊 Enable optimized batch reading for better performance. Disable if experiencing compatibility issues with older PLC firmware.", "ui:widget": "switch" }, "created": { - "ui:help": "Timestamp when this dataset was created", + "ui:description": "Timestamp when this dataset was created", "ui:readonly": true, "ui:widget": "text" } diff --git a/config/schema/ui/dataset-variables.uischema.json b/config/schema/ui/dataset-variables.uischema.json index 84118a7..9e1ad25 100644 --- a/config/schema/ui/dataset-variables.uischema.json +++ b/config/schema/ui/dataset-variables.uischema.json @@ -14,11 +14,10 @@ "dataset_id": { "ui:widget": "text", "ui:placeholder": "Enter unique dataset identifier", - "ui:help": "🆔 Unique identifier for this dataset (must match existing dataset)" + "ui:description": "🆔 Unique identifier for this dataset (must match existing dataset)" }, "variables": { - "ui:description": "🔧 PLC Variable Definitions", - "ui:help": "Define PLC memory locations, data types, and properties for each variable", + "ui:description": "🔧 Define PLC memory locations, data types, and properties for each variable", "ui:options": { "addable": true, "orderable": true, @@ -82,7 +81,7 @@ ], "configType": { "ui:widget": "select", - "ui:help": "Choose between manual configuration or symbol-based setup", + "ui:description": "Choose between manual configuration or symbol-based setup", "ui:options": { "enumOptions": [ { @@ -99,16 +98,16 @@ "name": { "ui:widget": "text", "ui:placeholder": "Variable name", - "ui:help": "📝 Human-readable name for this variable" + "ui:description": "📝 Human-readable name for this variable" }, "symbol": { "ui:widget": "dataset-variable-symbol", "ui:placeholder": "Select a PLC symbol...", - "ui:help": "🔍 Search and select a symbol from the loaded ASC file" + "ui:description": "🔍 Search and select a symbol from the loaded ASC file" }, "area": { "ui:widget": "select", - "ui:help": "PLC memory area (DB=DataBlock, MW=MemoryWord, etc.)", + "ui:description": "PLC memory area (DB=DataBlock, MW=MemoryWord, etc.)", "ui:options": { "enumOptions": [ { @@ -156,22 +155,20 @@ }, "db": { "ui:widget": "updown", - "ui:help": "⚠️ Data Block number (only required for DB area - will be ignored for other areas like PE, PA, MW, etc.)", - "ui:placeholder": "1011", - "ui:description": "🗃️ This field is only used when Area = 'DB (Data Block)'" + "ui:description": "⚠️ Data Block number (only required for DB area - will be ignored for other areas like PE, PA, MW, etc.)", + "ui:placeholder": "1011" }, "offset": { "ui:widget": "updown", - "ui:help": "Byte offset within the memory area" + "ui:description": "Byte offset within the memory area" }, "bit": { "ui:widget": "updown", - "ui:help": "⚠️ Bit position (0-7) - only required for BOOL data type, will be ignored for other types", - "ui:description": "✅ This field is only used when Type = 'BOOL (1-bit boolean)'" + "ui:description": "⚠️ Bit position (0-7) - only required for BOOL data type, will be ignored for other types" }, "type": { "ui:widget": "select", - "ui:help": "PLC data type", + "ui:description": "PLC data type", "ui:options": { "enumOptions": [ { @@ -223,7 +220,7 @@ }, "streaming": { "ui:widget": "switch", - "ui:help": "📡 Enable real-time streaming to PlotJuggler for visualization" + "ui:description": "📡 Enable real-time streaming to PlotJuggler for visualization" } } } diff --git a/config/schema/ui/plc.uischema.json b/config/schema/ui/plc.uischema.json index 1db21e3..5f7b5b3 100644 --- a/config/schema/ui/plc.uischema.json +++ b/config/schema/ui/plc.uischema.json @@ -20,7 +20,7 @@ "mode": "directory", "title": "Select Records Directory" }, - "ui:help": "💾 Directory for CSV files. Relative paths based on app directory, absolute paths (C:\\folder) used as-is." + "ui:description": "💾 Directory for CSV files. Relative paths based on app directory, absolute paths (C:\\folder) used as-is." }, "rotation_enabled": { "ui:column": 3, @@ -82,7 +82,7 @@ "title": "Select ASC Symbol File", "filetypes": [["ASC Files", "*.asc"], ["All Files", "*.*"]] }, - "ui:help": "📁 Select the ASC symbol file from TIA Portal export. Use Load Symbols button to process." + "ui:description": "📁 Select the ASC symbol file from TIA Portal export. Use Load Symbols button to process." }, "ui:column": 12, "ui:layout": [ @@ -125,7 +125,7 @@ }, "sampling_interval": { "ui:column": 4, - "ui:help": "⏱️ Time interval between UDP data transmissions for real-time streaming", + "ui:description": "⏱️ Time interval between UDP data transmissions for real-time streaming", "ui:widget": "updown" }, "ui:column": 12, diff --git a/config/schema/ui/plot-definitions.uischema.json b/config/schema/ui/plot-definitions.uischema.json index 7ce5334..56949b5 100644 --- a/config/schema/ui/plot-definitions.uischema.json +++ b/config/schema/ui/plot-definitions.uischema.json @@ -89,61 +89,61 @@ "id": { "ui:widget": "text", "ui:placeholder": "plot_1", - "ui:help": "🆔 Unique identifier for this plot" + "ui:description": "🆔 Unique identifier for this plot" }, "name": { "ui:widget": "text", "ui:placeholder": "My Plot", - "ui:help": "📊 Human-readable name for the plot" + "ui:description": "📊 Human-readable name for the plot" }, "session_id": { "ui:widget": "text", "ui:placeholder": "plot_1", - "ui:help": "🔗 Session identifier (usually same as ID)" + "ui:description": "🔗 Session identifier (usually same as ID)" }, "time_window": { "ui:widget": "updown", - "ui:help": "⏱️ Time window in seconds (5-3600)" + "ui:description": "⏱️ Time window in seconds (5-3600)" }, "y_min": { "ui:widget": "updown", - "ui:help": "📉 Minimum Y axis value (leave empty for auto)" + "ui:description": "📉 Minimum Y axis value (leave empty for auto)" }, "y_max": { "ui:widget": "updown", - "ui:help": "📈 Maximum Y axis value (leave empty for auto)" + "ui:description": "📈 Maximum Y axis value (leave empty for auto)" }, "trigger_variable": { "ui:widget": "text", - "ui:help": "🎯 Variable name to use as trigger (optional)" + "ui:description": "🎯 Variable name to use as trigger (optional)" }, "trigger_enabled": { "ui:widget": "switch", - "ui:help": "✅ Enable trigger-based recording" + "ui:description": "✅ Enable trigger-based recording" }, "trigger_on_true": { "ui:widget": "switch", - "ui:help": "🔄 Trigger when variable becomes true (vs false)" + "ui:description": "🔄 Trigger when variable becomes true (vs false)" }, "line_tension": { "ui:widget": "updown", - "ui:help": "📈 Line smoothness: 0=straight lines, 0.4=smooth curves" + "ui:description": "📈 Line smoothness: 0=straight lines, 0.4=smooth curves" }, "stepped": { "ui:widget": "switch", - "ui:help": "📊 Enable stepped line style instead of curves" + "ui:description": "📊 Enable stepped line style instead of curves" }, "stacked": { "ui:widget": "switch", - "ui:help": "📚 Enable stacked Y-axes for multi-axis visualization" + "ui:description": "📚 Enable stacked Y-axes for multi-axis visualization" }, "point_radius": { "ui:widget": "updown", - "ui:help": "🔴 Size of data points (0-10)" + "ui:description": "🔴 Size of data points (0-10)" }, "point_hover_radius": { "ui:widget": "updown", - "ui:help": "🎯 Size of points when hovering (0-15)" + "ui:description": "🎯 Size of points when hovering (0-15)" } } }, diff --git a/config/schema/ui/plot-variables.uischema.json b/config/schema/ui/plot-variables.uischema.json index 4608663..c301d9b 100644 --- a/config/schema/ui/plot-variables.uischema.json +++ b/config/schema/ui/plot-variables.uischema.json @@ -14,11 +14,10 @@ "plot_id": { "ui:widget": "text", "ui:placeholder": "Enter unique plot identifier", - "ui:help": "🆔 Unique identifier for this plot session (must match existing plot)" + "ui:description": "🆔 Unique identifier for this plot session (must match existing plot)" }, "variables": { - "ui:description": "🎨 Plot Variable Configuration", - "ui:help": "Configure colors and display settings for each variable in the plot", + "ui:description": "🎨 Configure colors and display settings for each variable in the plot", "ui:options": { "addable": true, "orderable": true, @@ -64,16 +63,16 @@ "variable_name": { "ui:widget": "variableSelector", "ui:placeholder": "Search and select variable from datasets...", - "ui:help": "🔍 Search and select a variable from the configured datasets (includes live values and metadata)" + "ui:description": "🔍 Search and select a variable from the configured datasets (includes live values and metadata)" }, "label": { "ui:widget": "text", "ui:placeholder": "Chart legend label...", - "ui:help": "📊 Label shown in the plot legend for this variable" + "ui:description": "📊 Label shown in the plot legend for this variable" }, "color": { "ui:widget": "color", - "ui:help": "🎨 Select the color for this variable in the plot", + "ui:description": "🎨 Select the color for this variable in the plot", "ui:placeholder": "#3498db", "ui:options": { "presetColors": [ @@ -94,15 +93,15 @@ }, "line_width": { "ui:widget": "updown", - "ui:help": "📏 Width of the line in the plot (1-10 pixels)" + "ui:description": "📏 Width of the line in the plot (1-10 pixels)" }, "y_axis": { "ui:widget": "select", - "ui:help": "📊 Which Y-axis to use for this variable (left or right)" + "ui:description": "📊 Which Y-axis to use for this variable (left or right)" }, "enabled": { "ui:widget": "switch", - "ui:help": "📊 Enable this variable to be displayed in the real-time plot" + "ui:description": "📊 Enable this variable to be displayed in the real-time plot" } } } diff --git a/frontend/package.json b/frontend/package.json index fe03d37..b4cce77 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,6 +10,7 @@ }, "dependencies": { "@chakra-ui/react": "^2.8.2", + "@chakra-ui/theme-tools": "^2.2.6", "@emotion/react": "^11.13.0", "@emotion/styled": "^11.13.0", "@rjsf/chakra-ui": "^5.24.12", diff --git a/frontend/src/components/PlotManager.jsx b/frontend/src/components/PlotManager.jsx index 555e417..fa5d815 100644 --- a/frontend/src/components/PlotManager.jsx +++ b/frontend/src/components/PlotManager.jsx @@ -1140,30 +1140,30 @@ export default function PlotManager() { variable_name: { "ui:widget": "variableSelector", "ui:placeholder": "Search and select variable from datasets...", - "ui:help": "🔍 Search and select a variable from the configured datasets (includes live values and metadata)" + "ui:description": "🔍 Search and select a variable from the configured datasets (includes live values and metadata)" }, label: { "ui:widget": "text", "ui:placeholder": "Chart legend label...", - "ui:help": "📊 Label shown in the plot legend for this variable" + "ui:description": "📊 Label shown in the plot legend for this variable" }, color: { "ui:widget": "color", - "ui:help": "🎨 Select the color for this variable in the plot", + "ui:description": "🎨 Select the color for this variable in the plot", "ui:placeholder": "#3498db" }, line_width: { "ui:widget": "updown", - "ui:help": "📏 Thickness of the line in the plot (1-10)", + "ui:description": "📏 Thickness of the line in the plot (1-10)", "ui:options": { "step": 1, "min": 1, "max": 10 } }, y_axis: { "ui:widget": "select", - "ui:help": "📈 Which Y-axis to use for this variable" + "ui:description": "📈 Which Y-axis to use for this variable" }, enabled: { "ui:widget": "checkbox", - "ui:help": "✅ Whether to show this variable in the plot" + "ui:description": "✅ Whether to show this variable in the plot" } } } diff --git a/frontend/src/components/rjsf/CustomFieldTemplate.jsx b/frontend/src/components/rjsf/CustomFieldTemplate.jsx new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/components/widgets/PathBrowserWidget.jsx b/frontend/src/components/widgets/PathBrowserWidget.jsx index 8d861cb..a2dd23e 100644 --- a/frontend/src/components/widgets/PathBrowserWidget.jsx +++ b/frontend/src/components/widgets/PathBrowserWidget.jsx @@ -42,7 +42,7 @@ const PathBrowserWidget = ({ showPathInfo = true } = options - const helpText = uiSchema['ui:help'] || schema.description + const helpText = uiSchema['ui:description'] || schema.description const handleBrowse = async () => { try { diff --git a/frontend/src/components/widgets/PathBrowserWidgetNew.jsx b/frontend/src/components/widgets/PathBrowserWidgetNew.jsx index 8d861cb..a2dd23e 100644 --- a/frontend/src/components/widgets/PathBrowserWidgetNew.jsx +++ b/frontend/src/components/widgets/PathBrowserWidgetNew.jsx @@ -42,7 +42,7 @@ const PathBrowserWidget = ({ showPathInfo = true } = options - const helpText = uiSchema['ui:help'] || schema.description + const helpText = uiSchema['ui:description'] || schema.description const handleBrowse = async () => { try { diff --git a/frontend/src/components/widgets/SimpleFilePathWidget.jsx b/frontend/src/components/widgets/SimpleFilePathWidget.jsx index 2a71592..e6d72ab 100644 --- a/frontend/src/components/widgets/SimpleFilePathWidget.jsx +++ b/frontend/src/components/widgets/SimpleFilePathWidget.jsx @@ -40,7 +40,7 @@ const SimpleFilePathWidget = ({ showPathInfo = true } = options - const helpText = uiSchema['ui:help'] || schema.description + const helpText = uiSchema['ui:description'] || schema.description const handleBrowseFile = async () => { try { diff --git a/system_state.json b/system_state.json index 9623168..e6f26c1 100644 --- a/system_state.json +++ b/system_state.json @@ -5,5 +5,6 @@ "active_datasets": [] }, "auto_recovery_enabled": true, - "last_update": "2025-08-27T09:27:26.829523" + "last_update": "2025-08-27T11:21:07.224296", + "plotjuggler_path": "C:\\Program Files\\PlotJuggler\\plotjuggler.exe" } \ No newline at end of file