import streamlit as st import pandas as pd from src.bibtex import export_bibtex def display_section(title, content, icon): st.markdown( f"### {icon} {title}" ) if content: st.write(content) else: st.info( f"{title} not generated yet." ) def summary_section(): st.header("📑 Literature Analysis Dashboard") if not st.session_state.papers: st.info( "📂 Upload research papers first." ) return total = len( st.session_state.papers ) st.success( f"📚 Total Papers Analyzed: {total}" ) # =============================== # PAPER CARDS # =============================== for index, paper in enumerate( st.session_state.papers, start=1 ): title = paper.get( "title", "Untitled Paper" ) with st.expander( f"📄 {index}. {title}", expanded=False ): # ------------------------- # Metadata # ------------------------- st.markdown( "## 📌 Paper Information" ) authors = paper.get( "authors", ["Unknown"] ) if isinstance(authors, list): authors_text = ", ".join( authors ) author_count = len(authors) else: authors_text = str(authors) author_count = 1 col1, col2 = st.columns(2) with col1: st.write( "👤 **Authors**" ) st.write( authors_text ) with col2: st.write( "📄 **Title**" ) st.write( title ) # ------------------------- # Statistics # ------------------------- text = paper.get( "text", "" ) words = len( text.split() ) reading_time = max( 1, words // 220 ) c1, c2, c3 = st.columns(3) c1.metric( "📝 Words", f"{words:,}" ) c2.metric( "👥 Authors", author_count ) c3.metric( "⏱ Reading Time", f"{reading_time} min" ) st.divider() # ------------------------- # AI Insights # ------------------------- st.divider() display_section( "Abstract Summary", paper.get( "abstract_summary", "" ), "📖" ) display_section( "AI Summary", paper.get( "summary", "" ), "🧠" ) display_section( "Research Gaps", paper.get( "research_gaps", "" ), "🔬" ) display_section( "Limitations", paper.get( "limitations", "" ), "⚠️" ) # ------------------------- # Keywords # ------------------------- keywords = paper.get( "keywords", [] ) if keywords: st.divider() st.markdown( "### 🏷 Keywords" ) if isinstance( keywords, list ): st.write( " • ".join(keywords) ) else: st.write( keywords ) # =============================== # EXPORT # =============================== st.divider() st.subheader( "📥 Export Results" ) df = pd.DataFrame( st.session_state.papers ) col1, col2, col3 = st.columns(3) with col1: st.download_button( "⬇ CSV", df.to_csv( index=False ).encode("utf-8"), "litreviewai_results.csv", "text/csv" ) with col2: st.download_button( "⬇ JSON", df.to_json( indent=2 ).encode("utf-8"), "litreviewai_results.json", "application/json" ) with col3: st.download_button( "⬇ BibTeX", export_bibtex( st.session_state.papers ), "papers.bib", "text/plain" )