refactor: rename pages directory to views
Renames the `app/pages` module to `app/views` to better reflect the purpose of the directory, aligning with conventional MVC naming conventions where view-related logic is housed under `views`.
This commit is contained in:
46
app/views/benefits.py
Normal file
46
app/views/benefits.py
Normal file
@@ -0,0 +1,46 @@
|
||||
"""Benefits data-entry tab."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import streamlit as st
|
||||
|
||||
from app.components.tables import df_to_values, value_editor
|
||||
from app.pages._helpers import report_meta, safe
|
||||
from core.tei_client import TEIClient
|
||||
|
||||
|
||||
def render(client: TEIClient, tool: dict) -> None:
|
||||
st.header("💰 Benefits")
|
||||
public_id = tool["id"]
|
||||
report = report_meta(client, tool)
|
||||
analysis_years = int(report.get("analysis_period_years") or 3)
|
||||
|
||||
fields = safe(client.list_fields, report.get("id"), "benefits") or []
|
||||
values = [v for v in safe(client.get_values, public_id) or [] if v.get("table") == "benefits"]
|
||||
|
||||
if not fields:
|
||||
st.info("This report template has no benefit fields defined.")
|
||||
return
|
||||
|
||||
edited = value_editor(
|
||||
"benefits",
|
||||
fields,
|
||||
values,
|
||||
analysis_years=analysis_years,
|
||||
key=f"benefits_editor_{public_id}",
|
||||
)
|
||||
|
||||
col1, col2 = st.columns([1, 4])
|
||||
with col1:
|
||||
if st.button("💾 Save benefits", use_container_width=True):
|
||||
payload = df_to_values(edited, "benefits", analysis_years)
|
||||
result = safe(client.update_values, public_id, payload)
|
||||
if result is not None:
|
||||
st.success(f"Saved {len(payload)} benefit values.")
|
||||
st.cache_data.clear()
|
||||
with col2:
|
||||
st.caption(
|
||||
"Values are saved as nominal annual amounts. Risk adjustments are "
|
||||
"applied at calculate time. Use the Recalculate button in the "
|
||||
"sidebar after saving to refresh the summary."
|
||||
)
|
||||
Reference in New Issue
Block a user