import streamlit as st import os import requests import json from styles import apply_styles from streamlit_option_menu import option_menu # Import other pages or modules from settings import settings_page, load_settings from proposer import proposer_page apply_styles() #proposer_page() # Navigation Menu selected = option_menu( menu_title="Main Menu", options=["Home", "Settings"], icons=["house", "gear"], menu_icon="cast", default_index=0, orientation="horizontal", ) # Render pages based on selection if selected == "Home": # Home page logic goes here (e.g., OKR generator) #from utils import construct_prompt # Example import; replace with actual logic. proposer_page() elif selected == "Settings": settings_page() ''' # Streamlit App Layout st.title("OKR Generator") # Input Section and Buttons Row st.subheader("Enter your idea or goal:") user_input = st.text_area( "Input your idea here:", value=st.session_state.get("user_input", INPUT_TEMPLATE.strip()), height=200, ) col1, col2 = st.columns([1, 1]) with col1: if st.button("Reset All"): st.session_state.clear() with col2: generate_okrs_clicked = st.button("Generate OKRs") if generate_okrs_clicked: if not user_input.strip(): st.warning("Please provide some input before generating OKRs.") else: with st.spinner("Generating OKRs..."): # Construct prompt and call API prompt = construct_prompt(prompt_template=PROMPT_TEMPLATE, user_input=user_input) response = fetch_okrs(user_prompt=prompt, system_prompt=SYSTEM_PROMPT) if response: # Extract Objective and Key Results from response objective, key_results = extract_llm_response(response) st.session_state["objective"] = objective st.session_state["key_results"] = key_results # Display Results Only if an OKR Has Been Generated if "objective" in st.session_state and "key_results" in st.session_state: # Display Objective Field with Responsibles Input Below It st.subheader("Proposal Objective:") objective_text = st.text_area( "Proposal Objective:", value=st.session_state.get("objective", ""), height=100, ) responsible_for_objective = st.text_input( "Responsibles for Objective (comma-separated):", value="", placeholder="e.g., Khanh Dinh, John Doe", key="responsibles_objective" ) # Display Key Results with Responsibles Below Each One st.subheader("Proposal Key Results:") key_result_boxes = [] responsibles_for_key_results = [] for i, kr in enumerate(st.session_state["key_results"], start=1): kr_text = st.text_area(f"Key Result {i}:", value=kr, key=f"kr_{i}") responsible_for_kr = st.text_input( f"Responsibles for Key Result {i} (comma-separated):", value="", placeholder="e.g., Khanh Dinh", key=f"responsibles_kr_{i}" ) key_result_boxes.append(kr_text) responsibles_for_key_results.append(responsible_for_kr) # Finalize Button Center-Aligned #finalize_col = st.columns([3, 2, 3])[1] #with finalize_col: if st.button("Finalize"): finalized_objective = objective_text.strip() finalized_key_results = [st.session_state[f"kr_{i+1}"].strip() for i in range(len(key_result_boxes))] # Append initials of responsibles to Objective and Key Results responsibles_list_objective = [name.strip() for name in responsible_for_objective.split(",") if name.strip()] initials_objective = [f"[{''.join([part[0] for part in name.split()]).upper()}]" for name in responsibles_list_objective] initials_str_objective = ", ".join(initials_objective) finalized_objective += f" [{initials_str_objective}]" finalized_key_results_with_initials = [] for i, kr in enumerate(finalized_key_results): responsibles_list_kr = [name.strip() for name in responsibles_for_key_results[i].split(",") if name.strip()] initials_kr = [f"{''.join([part[0] for part in name.split()]).upper()}" for name in responsibles_list_kr] initials_str_kr = ", ".join(initials_kr) finalized_key_results_with_initials.append(f"KR{i+1}: [{initials_str_kr}] {kr}") # Display finalized data in non-editable format (full width) st.subheader("Finalized Objective:") st.write(finalized_objective) st.subheader("Finalized Key Results:") for kr in finalized_key_results_with_initials: st.write(kr)'''