diff --git a/src/nipanel/_streamlit_constants.py b/src/nipanel/_streamlit_constants.py index 2cd9601..f1350c1 100644 --- a/src/nipanel/_streamlit_constants.py +++ b/src/nipanel/_streamlit_constants.py @@ -1 +1,2 @@ STREAMLIT_PYTHON_PANEL_SERVICE = "ni.pythonpanel.v1.PythonPanelService" +STREAMLIT_REFRESH_COMPONENT_URL = "http://localhost:42001/panel-service/refresh" diff --git a/src/nipanel/_streamlit_panel_initializer.py b/src/nipanel/_streamlit_panel_initializer.py index e52d5fb..6932ebf 100644 --- a/src/nipanel/_streamlit_panel_initializer.py +++ b/src/nipanel/_streamlit_panel_initializer.py @@ -3,6 +3,7 @@ import streamlit as st from nipanel._streamlit_panel_value_accessor import StreamlitPanelValueAccessor +from nipanel.streamlit_refresh import initialize_refresh_component PANEL_ACCESSOR_KEY = "StreamlitPanelValueAccessor" @@ -22,7 +23,8 @@ def initialize_panel() -> StreamlitPanelValueAccessor: st.session_state[PANEL_ACCESSOR_KEY] = _initialize_panel_from_base_path() panel = cast(StreamlitPanelValueAccessor, st.session_state[PANEL_ACCESSOR_KEY]) - # TODO: declare the refresh component here + refresh_component = initialize_refresh_component(panel.panel_id) + refresh_component() return panel diff --git a/src/nipanel/streamlit_refresh/__init__.py b/src/nipanel/streamlit_refresh/__init__.py new file mode 100644 index 0000000..ec9f1c5 --- /dev/null +++ b/src/nipanel/streamlit_refresh/__init__.py @@ -0,0 +1,17 @@ +"""Initializes a refresh component for Streamlit.""" + +from typing import Any + +import streamlit.components.v1 as components + +from nipanel._streamlit_constants import STREAMLIT_REFRESH_COMPONENT_URL + + +def initialize_refresh_component(panel_id: str) -> Any: + """Initialize a refresh component to the Streamlit app.""" + _refresh_component_func = components.declare_component( + "panelRefreshComponent", + url=f"{STREAMLIT_REFRESH_COMPONENT_URL}/{panel_id}", + ) + + return _refresh_component_func