"""Shared functions for the Trackio UI.""" import os import gradio as gr try: import trackio.utils as utils from trackio.sqlite_storage import SQLiteStorage except ImportError: import utils from sqlite_storage import SQLiteStorage def get_project_info() -> str | None: dataset_id = os.environ.get("TRACKIO_DATASET_ID") space_id = os.environ.get("SPACE_ID") if utils.persistent_storage_enabled(): return "✨ Persistent Storage is enabled, logs are stored directly in this Space." if dataset_id: sync_status = utils.get_sync_status(SQLiteStorage.get_scheduler()) upgrade_message = f"New changes are synced every 5 min To avoid losing data between syncs, click here to open this Space's settings and add Persistent Storage. Make sure data is synced prior to enabling." if sync_status is not None: info = f"↻ Backed up {sync_status} min ago to {dataset_id} | {upgrade_message}" else: info = f"↻ Not backed up yet to {dataset_id} | {upgrade_message}" return info return None def get_projects(request: gr.Request): projects = SQLiteStorage.get_projects() if project := request.query_params.get("project"): interactive = False else: interactive = True if selected_project := request.query_params.get("selected_project"): project = selected_project else: project = projects[0] if projects else None return gr.Dropdown( label="Project", choices=projects, value=project, allow_custom_value=True, interactive=interactive, info=get_project_info(), ) def update_navbar_value(project_dd): return gr.Navbar( value=[ ("Metrics", f"?selected_project={project_dd}"), ("Runs", f"runs?selected_project={project_dd}"), ] )