Enhance variable configuration and UI components
- Updated plot_variables.json to include new variables with proper configurations. - Modified ConfigManager to ensure expanded and fallback variables retain their names. - Improved VariableSelectorWidget to handle undefined properties gracefully, displaying 'UNKNOWN' or 'N/A' where applicable. - Refactored main.py to utilize the proper expansion method for symbolic variables when retrieving dataset variables. - Updated system_state.json with the latest timestamp for last_update.
This commit is contained in:
parent
a0a65f563d
commit
dba0ca2528
File diff suppressed because it is too large
Load Diff
|
@ -58,18 +58,25 @@
|
|||
"plot_id": "DAR",
|
||||
"variables": [
|
||||
{
|
||||
"color": "#3498db",
|
||||
"enabled": true,
|
||||
"line_width": 2,
|
||||
"variable_name": "HMI_Instrument.QTM306.PVFiltered",
|
||||
"y_axis": "left"
|
||||
"color": "#3498db",
|
||||
"line_width": 2,
|
||||
"y_axis": "left",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"color": "#e30d4d",
|
||||
"enabled": true,
|
||||
"line_width": 2,
|
||||
"variable_name": "HMI_Instrument.QTM307.PVFiltered",
|
||||
"y_axis": "left"
|
||||
"color": "#e30d4d",
|
||||
"line_width": 2,
|
||||
"y_axis": "left",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"variable_name": "AUX Blink_2.0S",
|
||||
"color": "#3498db",
|
||||
"line_width": 2,
|
||||
"y_axis": "left",
|
||||
"enabled": true
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -89,6 +96,13 @@
|
|||
"line_width": 2,
|
||||
"y_axis": "left",
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"variable_name": "AUX Blink_2.0S",
|
||||
"color": "#a0db33",
|
||||
"line_width": 2,
|
||||
"y_axis": "left",
|
||||
"enabled": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -626,12 +626,15 @@ class ConfigManager:
|
|||
# Expand symbolic variable for PLC communication
|
||||
expanded_var = self._expand_symbolic_variable(var_config)
|
||||
if expanded_var:
|
||||
# Ensure the expanded variable has the proper name
|
||||
expanded_var["name"] = var_name
|
||||
expanded_variables[var_name] = expanded_var
|
||||
else:
|
||||
# If expansion fails, keep the original symbolic config for counting
|
||||
# If expansion fails, keep original symbolic config
|
||||
# but mark it as non-functional for PLC communication
|
||||
fallback_var = var_config.copy()
|
||||
fallback_var["_expansion_failed"] = True
|
||||
fallback_var["name"] = var_name # Ensure fallback has name
|
||||
expanded_variables[var_name] = fallback_var
|
||||
|
||||
if self.logger:
|
||||
|
@ -641,8 +644,10 @@ class ConfigManager:
|
|||
f"variable '{var_name}' in dataset '{dataset_id}'"
|
||||
)
|
||||
else:
|
||||
# Keep manual variables as they are
|
||||
expanded_variables[var_name] = var_config
|
||||
# Keep manual variables as they are, ensure they have name
|
||||
manual_var = var_config.copy()
|
||||
manual_var["name"] = var_name
|
||||
expanded_variables[var_name] = manual_var
|
||||
|
||||
return expanded_variables
|
||||
|
||||
|
@ -867,14 +872,14 @@ class ConfigManager:
|
|||
# Keep the configType as "symbol" for reference but make it functional
|
||||
expanded_var["configType"] = "symbol"
|
||||
|
||||
if self.logger:
|
||||
symbol_name = var_config.get("symbol")
|
||||
var_name = expanded_var.get("name", symbol_name)
|
||||
area = expanded_var.get("area", "unknown")
|
||||
offset = expanded_var.get("offset", "unknown")
|
||||
self.logger.info(
|
||||
f"Expanded symbolic variable '{symbol_name}' -> {var_name} ({area}:{offset})"
|
||||
)
|
||||
# if self.logger:
|
||||
# symbol_name = var_config.get("symbol")
|
||||
# var_name = expanded_var.get("name", symbol_name)
|
||||
# area = expanded_var.get("area", "unknown")
|
||||
# offset = expanded_var.get("offset", "unknown")
|
||||
# self.logger.info(
|
||||
# f"Expanded symbolic variable '{symbol_name}' -> {var_name} ({area}:{offset})"
|
||||
# )
|
||||
|
||||
return expanded_var
|
||||
|
||||
|
|
|
@ -312,10 +312,10 @@ export function VariableSelectorWidget(props) {
|
|||
📊 {selectedVariable.dataset}
|
||||
</Badge>
|
||||
<Badge colorScheme={typeColors[selectedVariable.type] || 'gray'}>
|
||||
{selectedVariable.type.toUpperCase()}
|
||||
{selectedVariable.type?.toUpperCase() || 'UNKNOWN'}
|
||||
</Badge>
|
||||
<Badge colorScheme="gray" variant="outline">
|
||||
{selectedVariable.address}
|
||||
{selectedVariable.address || 'N/A'}
|
||||
</Badge>
|
||||
{selectedVariable.streaming && (
|
||||
<Badge colorScheme="green">
|
||||
|
@ -324,7 +324,7 @@ export function VariableSelectorWidget(props) {
|
|||
)}
|
||||
</HStack>
|
||||
<Text fontSize="xs" color="gray.600">
|
||||
PLC Address: {selectedVariable.area}{selectedVariable.db ? `${selectedVariable.db}.` : ''}{selectedVariable.offset}
|
||||
PLC Address: {selectedVariable.area || ''}{selectedVariable.db ? `${selectedVariable.db}.` : ''}{selectedVariable.offset || ''}
|
||||
{selectedVariable.streaming ? ' • Real-time streaming enabled' : ' • Static logging only'}
|
||||
</Text>
|
||||
<Text fontSize="sm">
|
||||
|
|
10
main.py
10
main.py
|
@ -453,12 +453,16 @@ def get_expanded_dataset_variables():
|
|||
hasattr(streamer.config_manager, "datasets")
|
||||
and streamer.config_manager.datasets
|
||||
):
|
||||
for dataset_id, dataset_config in streamer.config_manager.datasets.items():
|
||||
if "variables" in dataset_config and dataset_config["variables"]:
|
||||
for dataset_id in streamer.config_manager.datasets.keys():
|
||||
# Use proper expansion method for symbolic variables
|
||||
expanded_vars = streamer.config_manager.get_expanded_dataset_variables(
|
||||
dataset_id
|
||||
)
|
||||
if expanded_vars:
|
||||
expanded_data["variables"].append(
|
||||
{
|
||||
"dataset_id": dataset_id,
|
||||
"variables": dataset_config["variables"],
|
||||
"variables": expanded_vars,
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
@ -7,6 +7,6 @@
|
|||
]
|
||||
},
|
||||
"auto_recovery_enabled": true,
|
||||
"last_update": "2025-08-28T11:31:29.749311",
|
||||
"last_update": "2025-08-28T11:46:10.725708",
|
||||
"plotjuggler_path": "C:\\Program Files\\PlotJuggler\\plotjuggler.exe"
|
||||
}
|
Loading…
Reference in New Issue