2026-04-24 FE Backup

This commit is contained in:
2026-04-24 12:37:16 +00:00
parent ace79b82f7
commit 0ba11a23b8
3705 changed files with 1240402 additions and 0 deletions

View File

@@ -0,0 +1,122 @@
def getColumnOrder(columns_config):
visible_columns = [k for k, v in sorted(columns_config.items(), key=lambda x: x[1]["order"])
if v["enabled"]]
return visible_columns
def fromObjToDS(data, column_order=None):
"""
Converts a list of dictionaries into an Ignition PyDataSet.
Parameters:
data: list[dict] - list of dictionaries where keys are column names
column_order: list[str] (optional) - explicit column order.
If None, uses the keys from the fi row.
Returns:
PyDataSet - Ignition dataset object
"""
if len(data)== 0:
# Return empty dataset with no columns if input is invalid/empty
return system.dataset.toDataSet([], [])
# Determine column names
if column_order is not None:
headers = column_order
else:
# Use keys from first dictionary (Python 3.7+ preserves insertion order)
headers = list(data[0].keys())
# Build rows
rows = []
for row_dict in data:
# Create row tuple using the determined column order
row = []
for col in headers:
# Use .get() so missing keys become None (standard dataset behavior)
value = row_dict.get(col, None)
row.append(value)
rows.append(row)
# Create the actual dataset
return system.dataset.toDataSet(headers, rows)
def true_keys(data):
"""
Returns a list of dictionary keys whose values are strictly True.
Parameters:
data (dict): A dictionary with boolean values.
Returns:
list[str]: A list of keys where the value is True, or an empty list
if none match.
Example:
priorities = {
"diagnostic": True,
"low": False,
"medium": False,
"high": False,
"critical": False
}
result = true_keys(priorities)
# result => ['diagnostic']
"""
return [key for key, value in data.items() if value is True]
def parse_event_filter_to_query_states(events):
"""
Build a list of event state labels from the given filter.
Input:
events: A container supporting membership tests (e.g., set/list/dict keys),
where possible keys are:
- 'active' -> include active states
- 'cleared' -> include cleared states
- 'acked' -> refine to only acked states (removes *Unacked)
Behavior:
- If 'active' in events: add ['activeUnacked']
- If 'cleared' in events: add ['clearedUnacked']
- If 'acked' in events: remove any label containing 'Un' (i.e., keep only *Acked)
Returns:
list[str]: A list of labels, e.g.,
['activeUnacked', 'activeAcked', 'clearedUnacked', 'clearedAcked']
reduced by the 'acked' refiner if present.
Examples:
parse_event_filter_to_query_states({'active'})
-> ['ActiveUnacked', 'ActiveAcked']
parse_event_filter_to_query_states({'cleared', 'acked'})
-> ['ClearAcked']
parse_event_filter_to_query_states({'active', 'cleared', 'acked'})
-> ['ActiveAcked', 'ClearAcked']
parse_event_filter_to_query_states({'active', 'cleared', 'acked'})
-> ['ClearAcked', 'ActiveAcked']
"""
ret = []
if 'active' in events:
ret += ['ActiveUnacked']
if 'cleared' in events:
ret += ['ClearUnacked']
if 'acked' in events:
if len(ret) == 0:
ret += ['ActiveAcked', 'ClearAcked']
else:
if 'active' in events:
ret += ['ActiveAcked']
if 'cleared' in events:
ret += ['ClearAcked']
return ret