From eebde0e047771dfbca47a825f432f3a65a448c57 Mon Sep 17 00:00:00 2001 From: Oesterd Date: Wed, 6 Mar 2024 15:02:33 -0300 Subject: [PATCH] Adicionado o dropdown que permite escolher os cursos na barra lateral --- src/Reusables/Sidebars.py | 52 ++++----------------------------------- src/app.py | 40 +++++++++++++++++++++++------- 2 files changed, 36 insertions(+), 56 deletions(-) diff --git a/src/Reusables/Sidebars.py b/src/Reusables/Sidebars.py index 3db3ae7..d275c7f 100644 --- a/src/Reusables/Sidebars.py +++ b/src/Reusables/Sidebars.py @@ -15,13 +15,6 @@ def pg1(): content = \ html.Div([ - html.Div( - [ - html.H2("Opções", style={"color": "black"}), - ], - style={'text-align': 'center'} - ), - html.Div([ dmc.Select(id='dropdown11', label='Escolha o eixo x:', value='Média aluno', data=list(Ops2.keys()), clearable=False), @@ -80,13 +73,6 @@ def pg1(): def pg2(): content = \ html.Div([ - html.Div( - [ - html.H2("Opções", style={"color": "black"}), - ], - style={'text-align': 'center'} - ), - html.Div([ html.Div([ dmc.Select(id='dropdown20', label='Escolha o eixo x:', value='Renda (R$)', @@ -135,13 +121,6 @@ def pg2(): def pg3(): content = \ html.Div([ - html.Div( - [ - html.H2("Opções", style={"color": "black"}), - ], - style={'text-align': 'center'} - ), - html.Div([ dmc.Select( id='dropdown31', label='Tipo de gráfico:', value='stpf', @@ -163,18 +142,6 @@ def pg4(): content = \ html.Div([ - html.Div( - [ - html.H2("Opções", style={"color": "black"}), - ], - style={'text-align': 'center'} - ), - - html.Div([ - dmc.Select(id='dropdown40', label='Escolha o curso', value='Curso1', - data=['Curso1', 'Curso2'], clearable=False) - ]), - html.Div([ dmc.MultiSelect(id='Mdropdown41', label='Escolha a(s) disciplina(s)', value=[], data=Disc, searchable=True, clearable=True) @@ -190,7 +157,8 @@ def pg4(): dmc.Select(id='dropdown41', label='Escolha o eixo y:', value='Média turma', data=['Média turma', 'AP', 'RM', 'RF', 'RMF'], clearable=False), ]), - ] + ], + style={'display': 'flex', 'flexDirection': 'column', 'gap': 20, 'flex': 1} ) return content @@ -201,14 +169,6 @@ def pg4(): def pg5(): content = \ html.Div([ - html.Div( - [ - html.H2("Opções", style={"color": "black"}), - ], - style={'text-align': 'center'} - ), - - html.Div([ dmc.MultiSelect(id='Mdropdown51', label='Escolha a(s) disciplina(s)', value=[], data=Disc, searchable=True, clearable=True) @@ -222,10 +182,8 @@ def pg5(): html.Div([ - html.Div([ - dmc.Select(id='dropdown51', label='Escolha o eixo y:', value='Média turma', - data=['Média turma', 'AP', 'RM', 'RF', 'RMF'], clearable=False), - ]), + dmc.Select(id='dropdown51', label='Escolha o eixo y:', value='Média turma', + data=['Média turma', 'AP', 'RM', 'RF', 'RMF'], clearable=False), ]), @@ -252,7 +210,7 @@ def pg5(): ], style={'display': 'flex', 'flexDirection': 'column', 'gap': 20, 'flex': 1} - ), + ) return content diff --git a/src/app.py b/src/app.py index 283fea1..c3f0cbe 100644 --- a/src/app.py +++ b/src/app.py @@ -97,7 +97,6 @@ def read_data(ID, Sheet): ) - navwidth = '0px' @@ -164,6 +163,21 @@ def read_data(ID, Sheet): fixed=False, hidden=True, width={"base": navwidth}, + children=[ + html.Div( + [ + html.H2("Opções", style={"color": "black"}), + ], + style={'text-align': 'center'} + ), + + dmc.Select(id='Curso', label='Escolha o curso', + data=['Curso1', 'Curso2'], value='Curso1'), + + html.Br(), + + html.Div(id='sidebar-div', children=[]) + ], position='right', style={ "overflow": "auto", @@ -213,15 +227,16 @@ def read_data(ID, Sheet): Output('Dados_notas', 'data'), Output('Dados_turmas', 'data'), Input('Intervalo', 'n_intervals'), + Input('Curso', 'value'), ) -def gather_data(n_intervals): +def gather_data(n_intervals, curso): Dados_notas = read_data(ID_notas, 'Sheet1') Notas_df = Dados_notas.iloc[:, 0:10] Notas_df = Notas_df.to_dict('records') - Turmas_df = read_data(ID_turmas, Turmas_sheet) + Turmas_df = read_data(ID_turmas, curso) Turmas_df['Turma'] = pd.to_datetime(Turmas_df['Turma'], format='%Y/%m') Turmas_df['Turma'] = Turmas_df['Turma'].dt.date Turmas_df = Turmas_df.to_dict('records') @@ -231,12 +246,14 @@ def gather_data(n_intervals): @callback( - Output('sidebar', 'children'), + Output('sidebar-div', 'children'), Output('Intervalo2', 'n_intervals'), - State('Intervalo2', 'n_intervals'), + Output('Curso', 'disabled'), Input('url', 'pathname'), + State('Intervalo2', 'n_intervals'), + State('Curso', 'disabled'), ) -def nav_content(n, url): +def nav_content(url, n, disabled): content = { @@ -247,7 +264,6 @@ def nav_content(n, url): '/pg5': pg5(), }.get(url) - # O uso de intervalo como Input do callback em cada página previne um trigger indesejado # enquanto o layout da página está incompleto, evitando mensagens de erro if n <= 50: @@ -255,8 +271,14 @@ def nav_content(n, url): else: n = 0 + if url == '/pg3': + disabled = True + + else: + disabled = False + - return content, n + return content, n, disabled @@ -279,4 +301,4 @@ def drawer_demo(opened, width): if __name__ == "__main__": - app.run(debug=False, host="0.0.0.0") + app.run(debug=True, host="localhost")