Programer123 commited on
Commit
88ebfce
·
verified ·
1 Parent(s): dfdb553

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +63 -27
app.py CHANGED
@@ -3,20 +3,38 @@ import dash_bootstrap_components as dbc
3
  import pandas as pd
4
  import plotly.express as px
5
 
 
 
 
6
  df = pd.DataFrame({
7
  "Categoria": ["A", "B", "C", "D", "E"],
8
  "Vendas": [120, 200, 150, 80, 220],
9
  "Lucro": [30, 70, 40, 20, 90]
10
  })
11
 
 
 
 
12
  app = Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])
 
13
 
 
 
 
14
  app.layout = dbc.Container([
15
- html.H1("Dashboard em Dash", className="my-4"),
 
 
 
 
 
 
 
 
16
 
17
  dbc.Row([
18
  dbc.Col([
19
- html.Label("Escolhe a métrica:"),
20
  dcc.Dropdown(
21
  id="coluna-dropdown",
22
  options=[
@@ -30,26 +48,33 @@ app.layout = dbc.Container([
30
  ], className="mb-4"),
31
 
32
  dbc.Row([
33
- dbc.Col(dbc.Card([
34
- dbc.CardBody([
35
- html.H4("Total", className="card-title"),
36
- html.H2(id="total-card")
37
- ])
38
- ]), md=4),
39
-
40
- dbc.Col(dbc.Card([
41
- dbc.CardBody([
42
- html.H4("Média", className="card-title"),
43
- html.H2(id="media-card")
44
- ])
45
- ]), md=4),
46
-
47
- dbc.Col(dbc.Card([
48
- dbc.CardBody([
49
- html.H4("Máximo", className="card-title"),
50
- html.H2(id="max-card")
51
- ])
52
- ]), md=4),
 
 
 
 
 
 
 
53
  ], className="mb-4"),
54
 
55
  dbc.Row([
@@ -63,14 +88,23 @@ app.layout = dbc.Container([
63
  columns=[{"name": i, "id": i} for i in df.columns],
64
  data=df.to_dict("records"),
65
  style_table={"overflowX": "auto"},
66
- style_cell={"textAlign": "center"},
 
 
 
 
 
 
 
67
  page_size=5
68
  )
69
  ], md=4)
70
  ])
71
  ], fluid=True)
72
 
73
-
 
 
74
  @app.callback(
75
  Output("grafico-barras", "figure"),
76
  Output("total-card", "children"),
@@ -93,6 +127,8 @@ def atualizar_dashboard(coluna_escolhida):
93
 
94
  return fig, total, media, maximo
95
 
96
-
97
- if __name__ == "__app__":
98
- app.run_server(host="0.0.0.0", port=7860, debug=False)
 
 
 
3
  import pandas as pd
4
  import plotly.express as px
5
 
6
+ # -----------------------------
7
+ # Dados de exemplo
8
+ # -----------------------------
9
  df = pd.DataFrame({
10
  "Categoria": ["A", "B", "C", "D", "E"],
11
  "Vendas": [120, 200, 150, 80, 220],
12
  "Lucro": [30, 70, 40, 20, 90]
13
  })
14
 
15
+ # -----------------------------
16
+ # Criar app
17
+ # -----------------------------
18
  app = Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])
19
+ server = app.server
20
 
21
+ # -----------------------------
22
+ # Layout
23
+ # -----------------------------
24
  app.layout = dbc.Container([
25
+ dbc.Row([
26
+ dbc.Col([
27
+ html.H1("Dashboard em Dash", className="text-center my-4"),
28
+ html.P(
29
+ "Exemplo simples de dashboard com Dash + Bootstrap + Plotly.",
30
+ className="text-center text-muted"
31
+ )
32
+ ])
33
+ ]),
34
 
35
  dbc.Row([
36
  dbc.Col([
37
+ html.Label("Escolhe a métrica:", className="fw-bold"),
38
  dcc.Dropdown(
39
  id="coluna-dropdown",
40
  options=[
 
48
  ], className="mb-4"),
49
 
50
  dbc.Row([
51
+ dbc.Col(
52
+ dbc.Card(
53
+ dbc.CardBody([
54
+ html.H5("Total", className="card-title"),
55
+ html.H2(id="total-card", className="text-primary")
56
+ ])
57
+ ),
58
+ md=4
59
+ ),
60
+ dbc.Col(
61
+ dbc.Card(
62
+ dbc.CardBody([
63
+ html.H5("Média", className="card-title"),
64
+ html.H2(id="media-card", className="text-success")
65
+ ])
66
+ ),
67
+ md=4
68
+ ),
69
+ dbc.Col(
70
+ dbc.Card(
71
+ dbc.CardBody([
72
+ html.H5("Máximo", className="card-title"),
73
+ html.H2(id="max-card", className="text-danger")
74
+ ])
75
+ ),
76
+ md=4
77
+ ),
78
  ], className="mb-4"),
79
 
80
  dbc.Row([
 
88
  columns=[{"name": i, "id": i} for i in df.columns],
89
  data=df.to_dict("records"),
90
  style_table={"overflowX": "auto"},
91
+ style_cell={
92
+ "textAlign": "center",
93
+ "padding": "10px"
94
+ },
95
+ style_header={
96
+ "backgroundColor": "#f8f9fa",
97
+ "fontWeight": "bold"
98
+ },
99
  page_size=5
100
  )
101
  ], md=4)
102
  ])
103
  ], fluid=True)
104
 
105
+ # -----------------------------
106
+ # Callback
107
+ # -----------------------------
108
  @app.callback(
109
  Output("grafico-barras", "figure"),
110
  Output("total-card", "children"),
 
127
 
128
  return fig, total, media, maximo
129
 
130
+ # -----------------------------
131
+ # Run app
132
+ # -----------------------------
133
+ if __name__ == "__main__":
134
+ app.run(host="0.0.0.0", port=7860, debug=False)