function controlled_docs_navigation
Navigation controller for a Streamlit-based controlled documents module that manages document and review dashboards with URL parameter-based routing.
/tf/active/vicechatdev/datacapture_integrated.py
4216 - 4275
moderate
Purpose
This function serves as the main navigation hub for a controlled documents management system built with Streamlit. It provides a sidebar navigation menu with four options: viewing document dashboard, review dashboard, creating new documents, and returning to main menu. The function handles URL query parameters to enable deep linking to specific documents or reviews, and manages the routing logic to render appropriate UI components based on user selection and URL parameters.
Source Code
def controlled_docs_navigation():
"""Navigation for the controlled documents module."""
st.sidebar.title("Controlled Documents")
# Sidebar navigation
nav_option = st.sidebar.radio(
"Navigation",
options=[
"Document Dashboard",
"Review Dashboard",
"Create New Document",
"Return to Main Menu"
]
)
# Process navigation selection
if nav_option == "Document Dashboard":
# Check URL parameters for document ID
params = st.experimental_get_query_params()
document_id = params.get("document_id", [None])[0]
mode = params.get("mode", ["view"])[0]
if document_id:
# Render document form in requested mode
render_document_form(document_id=document_id, mode=mode)
else:
# Render document dashboard
render_document_dashboard()
elif nav_option == "Review Dashboard":
# Check URL parameters for review ID
params = st.experimental_get_query_params()
review_id = params.get("review_id", [None])[0]
if review_id:
# Handle specific review
st.write(f"Viewing review: {review_id}")
# This would call a specific review component
else:
# Render review dashboard
render_review_dashboard()
elif nav_option == "Create New Document":
# Render document form in create mode
params = st.experimental_get_query_params()
template_id = params.get("template_id", [None])[0]
department_id = params.get("department_id", [None])[0]
doc_type = params.get("doc_type", [None])[0]
render_document_form(
mode="create",
template_id=template_id,
department_id=department_id,
doc_type=doc_type
)
elif nav_option == "Return to Main Menu":
# Clear module selection and return to main menu
st.session_state['current_module'] = None
st.experimental_rerun()
Return Value
This function does not return any value (implicitly returns None). It operates by side effects, rendering Streamlit UI components and managing application state through st.session_state and URL parameters.
Dependencies
streamlitcontrolled_doc_system.ui.document_dashboardcontrolled_doc_system.ui.review_dashboardcontrolled_doc_system.ui.document_form
Required Imports
import streamlit as st
from controlled_doc_system.ui.document_dashboard import render_document_dashboard
from controlled_doc_system.ui.review_dashboard import render_review_dashboard
from controlled_doc_system.ui.document_form import render_document_form
Usage Example
import streamlit as st
from controlled_doc_system.ui.document_dashboard import render_document_dashboard
from controlled_doc_system.ui.review_dashboard import render_review_dashboard
from controlled_doc_system.ui.document_form import render_document_form
# Initialize session state if needed
if 'current_module' not in st.session_state:
st.session_state['current_module'] = 'controlled_docs'
# Call the navigation function
controlled_docs_navigation()
# Example URL parameters for deep linking:
# ?document_id=123&mode=edit - Opens document 123 in edit mode
# ?review_id=456 - Opens review 456
# ?template_id=789&department_id=10&doc_type=SOP - Creates new document with template
Best Practices
- Ensure all required render functions (render_document_dashboard, render_review_dashboard, render_document_form) are properly implemented before calling this function
- Initialize st.session_state['current_module'] before calling this function to avoid KeyError
- Use st.experimental_get_query_params() for URL parameter handling, but note this is deprecated in newer Streamlit versions (use st.query_params instead)
- The function uses st.experimental_rerun() which is deprecated; consider using st.rerun() in newer Streamlit versions
- URL parameters are extracted as lists, so always use indexing [0] to get the first value
- Default values are provided for all URL parameters to handle cases where they are not present
- The mode parameter defaults to 'view' for document dashboard, and 'create' is explicitly set for new documents
- Consider implementing proper error handling for invalid document_id or review_id values
- The review_id handling is incomplete (only shows a placeholder st.write), ensure proper implementation before production use
Tags
Similar Components
AI-powered semantic similarity - components with related functionality:
-
function main_page 67.7% similar
-
function main_v13 66.8% similar
-
class DocumentDashboard 63.4% similar
-
class ControlledDocApp 61.5% similar
-
function create_document 56.7% similar