import json import pandas as pd import streamlit as st @st.cache_data def load_slider_data(): """Load slider data from a JSON file and cache it for performance.""" with open("data/cost_sliders.json") as f: data = json.load(f) return data def render_resource_input(name_clean, r, tooltip=None): if tooltip: st.markdown( f"""{name_clean} ℹ️""", unsafe_allow_html=True ) else: st.markdown(f"**{name_clean}**") widget_key = f"cap_{r}" if widget_key not in st.session_state: st.session_state[widget_key] = st.session_state.resource_caps.get(r, 0.0) cap = st.number_input( label="label", label_visibility="collapsed", min_value=0.0, format="%.2f", key=widget_key, ) st.session_state.resource_caps[r] = cap def is_valid_scenario(scenario): return ( isinstance(scenario, dict) and "allocations" in scenario and "resource_caps" in scenario and "method_costs" in scenario and "method_constraints" in scenario and "summary" in scenario )