69 lines
2.7 KiB
Python
69 lines
2.7 KiB
Python
import streamlit as st
|
|
import pandas as pd
|
|
from streamlit_server.utils.helpers import format_timestamp
|
|
|
|
def render_list():
|
|
st.header("Universe Management")
|
|
|
|
with st.expander("Create New Universe"):
|
|
with st.form("create_universe"):
|
|
name = st.text_input("Universe Name")
|
|
description = st.text_area("Description")
|
|
submit = st.form_submit_button("Create Universe")
|
|
if submit and name:
|
|
result = st.session_state.client.create_universe(name, description)
|
|
if result:
|
|
st.success(f"Universe '{name}' created successfully!")
|
|
|
|
st.subheader("Existing Universes")
|
|
universes = st.session_state.client.get_universes()
|
|
|
|
if universes:
|
|
for universe in universes:
|
|
with st.container():
|
|
col1, col2, col3 = st.columns([3, 1, 1])
|
|
with col1:
|
|
st.markdown(f"### {universe['name']}")
|
|
if universe.get('description'):
|
|
st.text(universe['description'])
|
|
st.text(f"Created: {format_timestamp(universe['created_at'])}")
|
|
with col2:
|
|
st.text(f"ID: {universe['id'][:8]}...")
|
|
with col3:
|
|
if st.button("View Details", key=f"view_{universe['id']}"):
|
|
st.session_state.selected_resource = universe
|
|
st.session_state.view_type = 'detail'
|
|
st.session_state.selected_resource_type='universe'
|
|
st.rerun() # Force Streamlit to rerun the script
|
|
|
|
|
|
|
|
def render_detail():
|
|
universe = st.session_state.client.get_universe(st.session_state.selected_resource['id'])
|
|
if not universe:
|
|
st.error("Universe not found.")
|
|
st.session_state.selected_resource = None
|
|
st.session_state.view_type = 'list'
|
|
st.session_state.selected_resource_type = None
|
|
return
|
|
|
|
st.title(f"Universe: {universe['name']}")
|
|
if st.button("Back to list view"):
|
|
st.session_state.view_type = 'list'
|
|
st.rerun()
|
|
|
|
st.header("Universe Details")
|
|
col1, col2 = st.columns(2)
|
|
with col1:
|
|
st.markdown(f"**ID:** `{universe['id']}`")
|
|
st.markdown(f"**Created:** {format_timestamp(universe['created_at'])}")
|
|
with col2:
|
|
if universe.get('updated_at'):
|
|
st.markdown(f"**Last Updated:** {format_timestamp(universe['updated_at'])}")
|
|
if universe.get('description'):
|
|
st.markdown(f"**Description:** {universe['description']}")
|
|
|
|
if st.session_state.view_type == 'detail' and st.session_state.selected_resource_type=='universe':
|
|
render_detail()
|
|
else:
|
|
render_list() |