marcenacp's picture
Deploy.
6a31b9a
raw
history blame
1.57 kB
import json
import streamlit as st
import streamlit_nested_layout # Do not remove this allows nesting columns.
from components.tabs import render_tabs
from core.constants import METADATA
from core.constants import OVERVIEW
from core.constants import RECORD_SETS
from core.constants import RESOURCES
from core.constants import TABS
from core.past_projects import save_current_project
from core.state import get_tab
from core.state import Metadata
from core.state import set_tab
import mlcroissant as mlc
from views.files import render_files
from views.metadata import render_metadata
from views.overview import render_overview
from views.record_sets import render_record_sets
def _export_json() -> str | None:
metadata: Metadata = st.session_state[Metadata]
try:
return {
"name": f"croissant-{metadata.name.lower()}.json",
"content": json.dumps(metadata.to_canonical().to_json()),
}
except mlc.ValidationError as exception:
return None
def render_editor():
export_json = _export_json()
# Warning: the custom component cannot be nested in a st.columns or it is forced to
# re-render even if a `key` is set.
selected_tab = get_tab()
tab = render_tabs(
tabs=TABS, selected_tab=selected_tab, json=export_json, key="tabs"
)
if tab == OVERVIEW:
render_overview()
elif tab == METADATA:
render_metadata()
elif tab == RESOURCES:
render_files()
elif tab == RECORD_SETS:
render_record_sets()
save_current_project()
set_tab(tab)