File size: 1,840 Bytes
5cb30a1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import streamlit as st
from datetime import datetime

class Sidebar:
    @staticmethod
    def display():
        with st.sidebar:
            st.subheader("πŸ‘€ User Profile")
            
            # User login/profile
            if 'username' not in st.session_state:
                with st.form("login_form"):
                    username = st.text_input("Enter your nickname")
                    if st.form_submit_button("Start Learning"):
                        if username:
                            st.session_state.username = username
                            st.rerun()
            else:
                st.write(f"Welcome, {st.session_state.username}! πŸ‘‹")
                if st.button("Sign Out"):
                    for key in ['username', 'messages', 'user_progress']:
                        if key in st.session_state:
                            del st.session_state[key]
                    st.rerun()
            
            # Progress section
            if 'username' in st.session_state:
                st.subheader("πŸ“Š Your Progress")
                completed = len(st.session_state.user_progress['completed_modules'])
                st.progress(completed / 8, f"Completed {completed}/8 modules")
                
                # Learning streak
                if st.session_state.user_progress.get('learning_streak', 0) > 0:
                    st.write(f"πŸ”₯ Learning Streak: {st.session_state.user_progress['learning_streak']} days")
                
                # Achievements section
                if st.session_state.user_progress.get('achievements', []):
                    st.subheader("πŸ† Achievements")
                    for achievement in st.session_state.user_progress['achievements']:
                        st.success(f"{achievement['name']} - {achievement['date']}")