import pyrebase
import streamlit as st
import datetime
from time import sleep



st.markdown(
    """
<style>
[data-testid="stMetricValue"] {
    font-size: 100px;
}
</style>
""",
    unsafe_allow_html=True,
)


#Configure Firebase Database, Enter your credentials
config = {
  "apiKey": " ",
  "authDomain": " ",
  "databaseURL": " ",
  "projectId": " ",
  "storageBucket": " "
}

firebase = pyrebase.initialize_app(config)




db = firebase.database()

with st.empty():
    while True:

        today = datetime.date.today()
        todaystr = str(today)

        
        chart_data_calories = db.child("usersData/josh/calories").get().val() #Note that you have to change the location based on your firebase database
        chart_data_distance = db.child("usersData/josh/distance").get().val()
        chart_data_steps = db.child("usersData/josh/steps").get().val()

        graphs = st.container()
        
        graphs.header(' ', divider='rainbow')

        col1, col2, col3 = graphs.columns(3)

        col1.metric(label = ":green[Steps]", value = chart_data_steps[today.strftime("%m-%d, %a %d %b")])
        col2.metric(label = ":blue[Calories]", value = int(chart_data_calories[today.strftime("%m-%d, %a %d %b")]))
        col3.metric(label = ":violet[Distance]", value = chart_data_distance[today.strftime("%m-%d, %a %d %b")], delta="Km", delta_color="off")

        graphs.divider()




        graphs.header('Steps History')
        graphs.bar_chart(chart_data_steps, color=(0,190,0))
        graphs.divider()


        graphs.header('Calorie History')
        graphs.bar_chart(chart_data_calories, color=(0,0,150))
        graphs.divider()

        graphs.header('Distance History (in Km)')
        graphs.bar_chart(chart_data_distance, color=(106, 13,173))
        graphs.divider()


        game_data = db.child("gameData/gameDataList/").get().val()



        distance = 0
        calories = 0
        time = 0


        for data in game_data:
            date = data["timestamp"]
            date = date[0:10]
            if date == todaystr:
                distance = distance + round(data["distance"]/1000, 2)
                calories = calories + int(data["calories"])
                time = time + int(data["time"]/60)

        graphs.header('Exercise Bike :bicyclist:')

        cycledata1, cycledata2, cycledata3 = graphs.columns(3)


        cycledata1.metric(label = ":green[Time]", value = time, delta="Minutes", delta_color="off")
        cycledata2.metric(label = ":blue[Calories]", value = calories)
        cycledata3.metric(label = ":violet[Distance]", value = distance, delta="km", delta_color="off")

        graphs.divider()
        
        sleep(60)
