Spaces:
Running
Running
File size: 2,751 Bytes
c5672b8 a1f52bf c5672b8 a1f52bf c5672b8 a1f52bf c5672b8 a1f52bf c5672b8 a1f52bf c5672b8 a1f52bf c5672b8 a1f52bf | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | """Intel rail: three click-through tabs on the right edge of the page.
**surf report** (the LLM-narrated write-up, generated on demand),
**world model** (GEBCO bathymetry) and **when to go** (ERA5 climatology)
hang off one pill tab row β the header mode-toggle pattern: a Radio
swaps three stacked columns. (Gradio's native Tabs park overflow tabs in
a "β―" menu at this column width; the rail keeps its own switcher
instead.) Components only β their inputs arrive through the shared
contracts: the report button wires in ``ui/app.py``, world-model figs
come from the staged fetch (FETCH_KEYS), climatology from the spot pick
(SELECT_KEYS).
"""
from __future__ import annotations
import gradio as gr
_TABS = ["report", "topography", "season"]
def build_intel():
"""Build the intel rail (inside an existing Column). Returns components."""
tab_picker = gr.Radio(_TABS, value=_TABS[0], show_label=False,
container=False, elem_classes=["intel-tabs"])
with gr.Column(visible=True) as report_col:
narrate_btn = gr.Button("get surf report β¨", variant="secondary")
report_md = gr.Markdown(
"_no report yet β pick a spot, then get the surf report._")
with gr.Column(visible=False) as world_col:
gr.Markdown("bathymetry around the takeoff zone (blue = deep, green = land, "
"β
= break). the 3D view carries an **animated swell layer** that "
"rides the forecast's dominant period β press βΆ swell.")
surface_plot = gr.Plot(label="3D seafloor")
seafloor_md = gr.Markdown("_resolves with the forecast β real GEBCO grid._")
with gr.Accordion("depth + transects", open=False):
depth_plot = gr.Plot(label="Depth map")
transect_plot = gr.Plot(label="Transects")
with gr.Column(visible=False) as climate_col:
year_plot = gr.Plot(label="When to go")
months_md = gr.Markdown("_pick a spot β its climatology lands here._")
rose_plot = gr.Plot(label="Swell climate rose")
def pick(tab: str):
"""Tab switch: show the picked feature column, hide the others."""
return (gr.update(visible=tab == _TABS[0]),
gr.update(visible=tab == _TABS[1]),
gr.update(visible=tab == _TABS[2]))
return {
"tab_picker": tab_picker, "pick": pick,
"report_col": report_col, "world_col": world_col, "climate_col": climate_col,
"narrate_btn": narrate_btn, "report_md": report_md,
"surface_plot": surface_plot, "depth_plot": depth_plot,
"transect_plot": transect_plot, "seafloor_md": seafloor_md,
"year_plot": year_plot, "months_md": months_md, "rose_plot": rose_plot,
}
|