From f5686a5ca6fa40b8cc2812e666fae594faf4e9a4 Mon Sep 17 00:00:00 2001 From: Rozana-Malta Date: Wed, 12 Nov 2025 22:34:27 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A7=20Organiza=20as=20informa=C3=A7?= =?UTF-8?q?=C3=B5es=20da=20p=C3=A1gina=20inicial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app.py | 95 ++++++++++++++++---------------------------- src/menu/__init__.py | 0 src/menu/home.py | 47 ++++++++++++++++++---- src/menu/py2020.py | 39 +++++++++++++++--- 4 files changed, 107 insertions(+), 74 deletions(-) create mode 100644 src/menu/__init__.py diff --git a/src/app.py b/src/app.py index 6a03821..e35b84f 100644 --- a/src/app.py +++ b/src/app.py @@ -1,70 +1,45 @@ import streamlit as st +import streamlit_antd_components as sac -import menu.discord -import menu.feedbacks -import menu.home -import menu.py2020 -import menu.py2021 -import menu.speakers -import menu.talks -import menu.tutorials -import menu.youtube -import util +from menu import (home, py2020) +st.set_page_config( + page_title="Python Brasil", + page_icon="🐍", + layout="wide", + menu_items={"Report a bug": "https://github.com/pybropendata/pythonbrasil-opendata/issues"}, +) def main(): - EVENTS = { - "Início": (menu.home, None), - "Pyhton Brasil 2020": (menu.py2020, 2020), - "Pyhton Brasil 2021": (menu.py2021, 2021), - } - PAGES = { - "Palestras": menu.talks, - "Tutoriais": menu.tutorials, - "Ministrantes": menu.speakers, - "Lives Youtube": menu.youtube, - "Discord": menu.discord, - "Feedback": menu.feedbacks, + # Exibe uma mensagem de boas-vindas ao usuário na barra lateral + st.sidebar.image("./assets/PyBrOpenData-alternativa.png") + st.sidebar.markdown("**.Dados Abertos Python Brasil.**", unsafe_allow_html=True) + # Adiciona uma divisória na barra lateral + st.sidebar.divider() + + with st.sidebar: + pagina_selecionada = sac.menu([ + sac.MenuItem("Início", icon="house-fill"), + sac.MenuItem('Edições', icon='box-fill', children=[ + sac.MenuItem("PyBr 2020",icon="chevron-right"), + #sac.MenuItem("PyBr 2021",icon="chevron-right"), + #sac.MenuItem("PyBr 2022",icon="chevron-right"), + #sac.MenuItem("PyBr 2023",icon="chevron-right"), + #sac.MenuItem("PyBr 2024",icon="chevron-right"), + ]), + sac.MenuItem(type='divider'), + sac.MenuItem('github', icon='github', href="https://github.com/pybropendata/pythonbrasil-opendata") + ], open_all=True) + + page_mapping = { + "Início": home.main, + "Edições": py2020.main, + "PyBr 2020": py2020.main } - - st.sidebar.write() - - svg = util.svg_to_line("./assets/pylogo75.svg") - st.sidebar.write( - f"{util.parse_svg_html(svg)}", - unsafe_allow_html=True, - ) - - st.sidebar.title("Visualizar dados do evento") - event_select = st.sidebar.selectbox("", list(EVENTS.keys())) - event = EVENTS[event_select] - util.write_page(event[0]) - - if event[0].has_ok: - st.sidebar.title("Páginas") - page_selection = st.sidebar.radio("", list(PAGES.keys())) - page = PAGES[page_selection] - with st.spinner(f"Carregando {page_selection} ..."): - util.write_page(page, year=event[1]) - - st.sidebar.title("Contribua") - st.sidebar.info( - "Esse é um projeto de código aberto que aceita contribuições, comentários e ajuda são bem vindos. " - "Você encontra o código fonte no seguinte repositório [pythonbrasil-opendata](https://github.com/pybropendata/pythonbrasil-opendata). " - "Esse projeto também agradece a MarcSkovMadsen por manter o [awesome-streamlit](https://github.com/MarcSkovMadsen/awesome-streamlit). " - "Algumas partes de códigos e dicas vem diretamente dessa excelente curadoria, recomendamos também contribuir com esse projeto. " - ) - st.sidebar.title("Sobre") - st.sidebar.info( - """ - Este é o projeto de dados abertos dos eventos da Python Brasil,tendo como base os dados de inscrições, acesso dos videos das lives do Youtube e dados de metricas dos servidor do Discord - utilizado durante o evento. - A fonte de dados é o [repositório oficial de dados do evento](https://github.com/pythonbrasil/dados/blob/main/dados/README.md). - Todos os dados utilizados aqui foram a anonimizados, além disso os mesmos as análises devem respeitar tando o [código de conduta](https://python.org.br/cdc/) quando leis vigentes no Brasil. - """ - ) + + page_mapping[pagina_selecionada]() if __name__ == "__main__": - main() + main() \ No newline at end of file diff --git a/src/menu/__init__.py b/src/menu/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/menu/home.py b/src/menu/home.py index 9aa5831..a7bc5a2 100644 --- a/src/menu/home.py +++ b/src/menu/home.py @@ -1,10 +1,41 @@ import streamlit as st -import util - -has_ok=False -def write(year=None): - util.write_title("- Python Brasil") - st.text("") - util.render_img("./assets/PyBrOpenData-alternativa.png", "Python Brasil Open Data") - st.text("") +def main(): + st.header("Dados Abertos Python Brasil") + st.caption("Projeto de dados abertos do evento Python Brasil") + + st.markdown( + """ + Este é o projeto de dados abertos dos eventos da Python Brasil,tendo como base os dados de inscrições, acesso dos videos das lives do Youtube e dados de metricas dos servidor do Discord + utilizado durante o evento. + A fonte de dados é o [repositório oficial de dados do evento](https://github.com/pythonbrasil/dados/blob/main/dados/README.md). + Todos os dados utilizados aqui foram a anonimizados, além disso os mesmos as análises devem respeitar tando o [código de conduta](https://python.org.br/cdc/) quando leis vigentes no Brasil. + """ + ) + st.subheader("Contribua") + st.markdown( + "Esse é um projeto de código aberto que aceita contribuições, comentários e ajuda são bem vindos. " + "Você encontra o código fonte no seguinte repositório [pythonbrasil-opendata](https://github.com/pybropendata/pythonbrasil-opendata). " + "Esse projeto também agradece a MarcSkovMadsen por manter o [awesome-streamlit](https://github.com/MarcSkovMadsen/awesome-streamlit). " + "Algumas partes de códigos e dicas vem diretamente dessa excelente curadoria, recomendamos também contribuir com esse projeto. " + ) + + st.subheader("Deixe seu feedback") + #sentiment_mapping = ["1", "2", "3", "4", "5"] + #selected = st.feedback("stars") + #if selected is not None: + # st.markdown(f"Você deu {sentiment_mapping[selected]} estrela(s).") + + with st.form("Diga o que você achou do projeto"): + st.markdown("Como você avalia esse projeto?") + st.feedback("stars") + st.text_input( + "✍🏻 Deixe seu comentário", + placeholder="Escreva aqui..." + ) + + # Every form must have a submit button. + submitted = st.form_submit_button("Submit") + if submitted: + st.success("Formulário enviado com sucesso!") + #TODO: salvar o comentário em algum lugar (banco de dados, arquivo, etc.) \ No newline at end of file diff --git a/src/menu/py2020.py b/src/menu/py2020.py index 2a87f6d..e753735 100644 --- a/src/menu/py2020.py +++ b/src/menu/py2020.py @@ -1,9 +1,36 @@ import streamlit as st +import streamlit_antd_components as sac -import util +def main(): -has_ok=True -def write(year=None): - util.write_title("- PyBR2020 - ") - st.text("") - util.render_img("./assets/pybr2020-logo-colorido.png", "2020") + + tabs = sac.tabs([ + sac.TabsItem(label='Resumo'), + sac.TabsItem(label='Participantes'), + sac.TabsItem(label='Tutoriais'), + sac.TabsItem(label='Palestras'), + sac.TabsItem(label='Feedback'), + ], align='center', use_container_width=True) + + if tabs == 'Resumo': + col1, col2 = st.columns([2,1]) + with col1: + st.markdown("Aqui você encontrará o resumo do evento Python Brasil 2020...LOREM IPSUM DOLOR SIT AMET, CONSETETUR SADIPSCING ELIT, SED DIAM NONUMY EIRMOD TEMPOR INVIDUNT UT LABORE ET DOLORE MAGNA ALIQUYAM ERAT, SED DIAM VOLUPTUA. AT VERO EOS ET ACCUSAMUS ET IUSTO ODIO DIGNISSIMOS DUCI MUS BLANDIT PRAESENTIUM VOLUPTATUM DELENITI ATQUE CORRUPTI QUOS DOLLORES ET QUAS MOL ESTIAS NOSTRUM ODIT FUGIT, SED QUIA CONSEQUUNTUR MAGNI DOLOR EUM FUGIAT VOLUPTAS SIT ASPERIORES REPELLENDUS AUTEM QUIA VOLUPTAS SIT ASPERIORES REPELLENDUS AUTEM QUIA VOLUPTAS SIT ASPERIORES REPELLENDUS AUTEM.") + with col2: + st.image("./assets/pybr2020-logo-colorido.png", + caption="Logo oficial da Python Brasil 2020", + use_column_width=True, + output_format="auto" + ) + + elif tabs == 'Participantes': + st.text("Aqui você encontrará informações sobre os participantes do evento.") + + elif tabs == 'Tutoriais': + st.text("Aqui você encontrará informações sobre os tutoriais do evento.") + + elif tabs == 'Palestras': + st.text("Aqui você encontrará informações sobre as palestras do evento.") + + elif tabs == 'Feedback': + st.text("Aqui você encontrará informações sobre o feedback do evento.") \ No newline at end of file