Initial commit, 90% there
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
#!/usr/bin/env python3
|
||||
import json
|
||||
|
||||
with open('/home/mdares/.node-red/flows.json', 'r') as f:
|
||||
flows = json.load(f)
|
||||
|
||||
# New Fetch Graph Data function that gets KPI history from global context
|
||||
new_fetch_func = '''// Fetch KPI History from global context
|
||||
|
||||
if (msg.topic !== 'fetch-graph-data' && msg.action !== 'fetch-graph-data') {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Get KPI history arrays from global context
|
||||
const oeeHist = global.get("realOEE") || [];
|
||||
const availHist = global.get("realAvailability") || [];
|
||||
const perfHist = global.get("realPerformance") || [];
|
||||
const qualHist = global.get("realQuality") || [];
|
||||
|
||||
node.warn(`[FETCH GRAPH] Retrieved KPI history: ${oeeHist.length} data points`);
|
||||
|
||||
// Filter by range if specified
|
||||
const range = msg.payload?.range || '24h';
|
||||
let cutoffTime;
|
||||
const now = Date.now();
|
||||
|
||||
switch(range) {
|
||||
case '1h':
|
||||
cutoffTime = now - (1 * 60 * 60 * 1000);
|
||||
break;
|
||||
case '24h':
|
||||
cutoffTime = now - (24 * 60 * 60 * 1000);
|
||||
break;
|
||||
case '7d':
|
||||
cutoffTime = now - (7 * 24 * 60 * 60 * 1000);
|
||||
break;
|
||||
case '30d':
|
||||
cutoffTime = now - (30 * 24 * 60 * 60 * 1000);
|
||||
break;
|
||||
case '90d':
|
||||
cutoffTime = now - (90 * 24 * 60 * 60 * 1000);
|
||||
break;
|
||||
case 'all':
|
||||
cutoffTime = 0; // Show all data
|
||||
break;
|
||||
default:
|
||||
cutoffTime = now - (24 * 60 * 60 * 1000); // Default to 24h
|
||||
}
|
||||
|
||||
// Filter arrays by cutoff time
|
||||
const filterByTime = (arr) => arr.filter(point => point.timestamp >= cutoffTime);
|
||||
|
||||
const filteredOEE = filterByTime(oeeHist);
|
||||
const filteredAvail = filterByTime(availHist);
|
||||
const filteredPerf = filterByTime(perfHist);
|
||||
const filteredQual = filterByTime(qualHist);
|
||||
|
||||
node.warn(`[FETCH GRAPH] After ${range} filter: ${filteredOEE.length} points`);
|
||||
|
||||
// Send to Format Graph Data
|
||||
msg.topic = "kpiHistory";
|
||||
msg.payload = {
|
||||
oee: filteredOEE,
|
||||
availability: filteredAvail,
|
||||
performance: filteredPerf,
|
||||
quality: filteredQual
|
||||
};
|
||||
|
||||
return msg;'''
|
||||
|
||||
# Update Fetch Graph Data function
|
||||
for node in flows:
|
||||
if node.get('id') == 'fetch_graph_data_node_id':
|
||||
node['func'] = new_fetch_func
|
||||
print("✓ Updated Fetch Graph Data to use KPI history from global context")
|
||||
break
|
||||
|
||||
with open('/home/mdares/.node-red/flows.json', 'w') as f:
|
||||
json.dump(flows, f, indent=4)
|
||||
|
||||
print("✓ flows.json updated")
|
||||
Reference in New Issue
Block a user