import streamlit as st from streamlit.delta_generator import DeltaGenerator from typing import Dict, List, Any import re from streamlit_constants import DASHBOARD_CONFIG_OBJECT_KEY from utility_classes.dashboard_config_parser import DashboardConfig, ExportModulePair from utility_classes.base_report_page import BaseReportPage from components.neoserra_export_link_grabber import NeoserraExportLinkGrabber class HomePage(BaseReportPage): """ Defines a landing page for the application to guide new users on how it works """ def __init__(self, **kwargs): super().__init__("Home") @staticmethod def get_page_name(): """ Retrieves the human-readable name of the admin panel for UI navigation. :return: The static display name "Admin Panel". :rtype: str """ return "Home" def render_controls(self, container: DeltaGenerator) -> Dict[str, Any]: return {} def generate_figures(self, parameters: Dict[str, Any]): return {} def render_figures(self, container: DeltaGenerator, output_data: Dict[str, Any]): container.write("This dashboard aggregates data from Neoserra into an easy to understand, and customizable interface." "The available reports are listed on the sidebar on the left-hand side of the screen. If the list is missing, click the arrow icon on the top left of the screen to show the sidebar again.") container.write("Each report has a set of options at the top that determine how the data is processed before being turned into visualizations.\n" "Data is pulled directly from the Neoserra Export Module, each report displays its own source data, after user selected filters, at the bottom of the report page.") container.write("Client data is protected by using client IDs instead of client names. Simply plug this ID into Neoserra's search bar to determine which client is referenced in the data.") container.write("If you have any questions or suggestions for additional data to add to the dashboard, please submit to support@pasbdc.org") def get_syncable_figure_keys(self) -> List[str]: return []