Spaces:
Sleeping
Sleeping
Update app/data_persistence.py
Browse files- app/data_persistence.py +17 -1
app/data_persistence.py
CHANGED
|
@@ -41,6 +41,7 @@ class DataPersistence:
|
|
| 41 |
"internal_loads": session_state.get("internal_loads", {}),
|
| 42 |
"calculation_settings": session_state.get("calculation_settings", {}),
|
| 43 |
"saved_scenarios": DataPersistence._serialize_scenarios(session_state.get("saved_scenarios", {})),
|
|
|
|
| 44 |
"timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
| 45 |
}
|
| 46 |
|
|
@@ -82,6 +83,21 @@ class DataPersistence:
|
|
| 82 |
if json_data:
|
| 83 |
project_data = json.loads(json_data)
|
| 84 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 85 |
# Deserialize components
|
| 86 |
if "components" in project_data:
|
| 87 |
project_data["components"] = DataPersistence._deserialize_components(project_data["components"])
|
|
@@ -537,4 +553,4 @@ if __name__ == "__main__":
|
|
| 537 |
}
|
| 538 |
|
| 539 |
# Display project management interface
|
| 540 |
-
data_persistence.display_project_management(st.session_state)
|
|
|
|
| 41 |
"internal_loads": session_state.get("internal_loads", {}),
|
| 42 |
"calculation_settings": session_state.get("calculation_settings", {}),
|
| 43 |
"saved_scenarios": DataPersistence._serialize_scenarios(session_state.get("saved_scenarios", {})),
|
| 44 |
+
"climate_data": session_state.get("climate_data", {}),
|
| 45 |
"timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
| 46 |
}
|
| 47 |
|
|
|
|
| 83 |
if json_data:
|
| 84 |
project_data = json.loads(json_data)
|
| 85 |
|
| 86 |
+
# Validate climate data latitude
|
| 87 |
+
if "climate_data" in project_data:
|
| 88 |
+
valid_latitudes = [24, 32, 40, 48, 56]
|
| 89 |
+
for location_id, location in project_data["climate_data"].items():
|
| 90 |
+
if "latitude" in location:
|
| 91 |
+
try:
|
| 92 |
+
input_latitude = float(location["latitude"])
|
| 93 |
+
nearest_latitude = min(valid_latitudes, key=lambda x: abs(x - input_latitude))
|
| 94 |
+
if abs(input_latitude - nearest_latitude) > 0.1: # Allow small float differences
|
| 95 |
+
st.warning(f"Latitude {input_latitude} for {location_id} is invalid for ASHRAE tables. Using nearest valid latitude: {nearest_latitude}.")
|
| 96 |
+
location["latitude"] = nearest_latitude
|
| 97 |
+
except ValueError:
|
| 98 |
+
st.error(f"Invalid latitude format for {location_id}: {location['latitude']}.")
|
| 99 |
+
return None
|
| 100 |
+
|
| 101 |
# Deserialize components
|
| 102 |
if "components" in project_data:
|
| 103 |
project_data["components"] = DataPersistence._deserialize_components(project_data["components"])
|
|
|
|
| 553 |
}
|
| 554 |
|
| 555 |
# Display project management interface
|
| 556 |
+
data_persistence.display_project_management(st.session_state)
|