Gumball2k5 commited on
Commit
9ef1103
·
verified ·
1 Parent(s): 08edd5b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -59
app.py CHANGED
@@ -21,116 +21,114 @@ st.set_page_config(
21
  layout="wide"
22
  )
23
 
24
- # --- START OF NEW THEME SECTION ---
25
-
26
  def load_css():
27
- """Tải CSS tùy chỉnh để tạo giao diện 'thời tiết'."""
28
  st.markdown("""
29
  <style>
30
  /* ===== FONT CHUNG ===== */
31
- /* Sử dụng font hệ thống mượt mà hơn */
32
  .stApp, .stSidebar {
33
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
34
  }
35
 
36
  /* ===== NỀN CHÍNH (MAIN BACKGROUND) ===== */
37
- /* Tạo hiệu ứng gradient "bầu trời" */
38
  [data-testid="stAppViewContainer"] {
39
- background-image: linear-gradient(to bottom, #B0E0E6, #F0F8FF); /* Từ xanh nhạt (Powder Blue) đến trắng xanh (Alice Blue) */
40
  background-attachment: fixed;
41
  background-size: cover;
42
  }
43
-
44
- /* ===== THANH SIDEBAR ===== */
45
- /* Làm sidebar có nền mờ (frosty glass) */
46
- [data-testid="stSidebar"] {
47
- background-color: rgba(255, 255, 255, 0.7) !important;
48
- backdrop-filter: blur(10px);
49
- border-right: 1px solid rgba(255, 255, 255, 0.2);
50
- }
51
 
52
- /* Chữ trong sidebar */
53
- [data-testid="stSidebar"] .st-emotion-cache-16txtl3 {
54
- color: #0E2A47; /* Xanh đậm */
 
 
 
 
55
  }
56
 
57
- /* Nút radio được chọn trong sidebar */
58
- .stRadio label[data-baseweb="radio"] div[data-checked="true"] {
59
- background-color: #005aa7 !important; /* Xanh đậm khi được chọn */
 
 
 
 
 
60
  }
61
 
62
- /* ===== THẺ DỰ BÁO (METRIC CARDS) ===== */
63
- /* Đây là phần quan trọng nhất */
64
  div[data-testid="stMetric"] {
65
- background-color: rgba(255, 255, 255, 0.85); /* Nền trắng mờ */
66
- border: 1px solid rgba(255, 255, 255, 0.3);
67
- border-radius: 12px; /* Bo góc */
68
  padding: 20px;
69
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); /* Đổ bóng nhẹ */
70
  backdrop-filter: blur(5px);
71
  transition: transform 0.2s ease;
72
  }
73
- /* Hiệu ứng khi di chuột vào thẻ */
74
  div[data-testid="stMetric"]:hover {
75
  transform: translateY(-3px);
76
- box-shadow: 0 6px 15px rgba(0, 0, 0, 0.1);
77
  }
78
-
79
- /* Tiêu đề của thẻ (Forecast for...) */
80
  div[data-testid="stMetricLabel"] p {
81
  font-size: 1.1rem !important;
82
  font-weight: 600 !important;
83
- color: #333333; /* Màu xám đậm */
84
  }
85
-
86
- /* Giá trị nhiệt độ dự báo */
87
  div[data-testid="stMetricValue"] {
88
  font-size: 2.8rem !important;
89
  font-weight: 700 !important;
90
- color: #004080; /* Màu xanh navy đậm */
91
  }
92
-
93
- /* Giá trị "Actual" (delta) */
94
  div[data-testid="stMetricDelta"] {
95
  font-size: 1rem !important;
96
  font-weight: 600 !important;
97
- color: #555555; /* Màu xám vừa */
98
- }
99
-
100
- /* ===== Tiêu đề (H1, H2, H3) ===== */
101
- h1 {
102
- color: #004080; /* Xanh navy đậm */
103
- text-shadow: 1px 1px 3px rgba(255,255,255,0.5);
104
  }
105
- h2, h3 {
106
- color: #005aa7; /* Xanh đậm */
 
 
 
107
  }
108
 
109
- /* ===== EXPANDERS (Training Set Overview) ===== */
110
- div[data-testid="stExpander"] {
111
- background-color: rgba(255, 255, 255, 0.😎 !important;
112
- border-radius: 10px !important;
113
- border: 1px solid rgba(0, 0, 0, 0.1) !important;
 
114
  }
115
-
116
- /* ===== BIỂU ĐỒ (PLOTLY) ===== */
117
- /* Làm nền biểu đồ trong suốt để hòa vào nền gradient */
 
 
 
 
118
  .plotly-graph-div {
 
 
119
  border-radius: 8px;
120
  }
121
 
122
- /* Làm nền bảng (dataframe) đẹp hơn */
123
- .stDataFrame {
124
- border-radius: 8px;
125
- overflow: hidden;
 
126
  }
127
-
128
  </style>
129
  """, unsafe_allow_html=True)
130
 
131
  # Gọi hàm CSS ngay lập tức
132
  load_css()
133
-
134
  # --- END OF NEW THEME SECTION ---
135
 
136
  # --- 3. DATA & MODEL LOADING FUNCTIONS (WITH CACHING) ---
 
21
  layout="wide"
22
  )
23
 
24
+ # --- START OF NEW THEME SECTION (ĐÃ CẬP NHẬT) ---
 
25
  def load_css():
26
+ """Tải CSS tùy chỉnh để tạo giao diện 'thời tiết' với ĐỘ TƯƠNG PHẢN CAO."""
27
  st.markdown("""
28
  <style>
29
  /* ===== FONT CHUNG ===== */
 
30
  .stApp, .stSidebar {
31
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
32
  }
33
 
34
  /* ===== NỀN CHÍNH (MAIN BACKGROUND) ===== */
 
35
  [data-testid="stAppViewContainer"] {
36
+ background-image: linear-gradient(to bottom, #B0E0E6, #F0F8FF);
37
  background-attachment: fixed;
38
  background-size: cover;
39
  }
 
 
 
 
 
 
 
 
40
 
41
+ /* ===== 1. THANH CHỌN TAB (st.tabs) ===== */
42
+ /* Tab không được chọn */
43
+ button[data-baseweb="tab"][aria-selected="false"] {
44
+ background-color: rgba(255, 255, 255, 0.7) !important; /* Nền mờ */
45
+ color: #0E2A47 !important; /* Chữ đậm */
46
+ border-top-left-radius: 8px;
47
+ border-top-right-radius: 8px;
48
  }
49
 
50
+ /* Tab ĐANG ĐƯỢC CHỌN */
51
+ button[data-baseweb="tab"][aria-selected="true"] {
52
+ background-color: #FFFFFF !important; /* Nền TRẮNG ĐỤC */
53
+ color: #004080 !important; /* Chữ MÀU XANH ĐẬM */
54
+ font-weight: 700 !important;
55
+ border-top-left-radius: 8px;
56
+ border-top-right-radius: 8px;
57
+ border-bottom: 3px solid #004080 !important; /* Viền xanh đậm */
58
  }
59
 
60
+ /* ===== 2. THẺ DỰ BÁO (METRIC CARDS) ===== */
 
61
  div[data-testid="stMetric"] {
62
+ background-color: rgba(255, 255, 255, 0.95) !important; /* Nền trắng (đục hơn) */
63
+ border: 1px solid #B0C4DE; /* Thêm viền (xanh nhạt) */
64
+ border-radius: 12px;
65
  padding: 20px;
66
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1) !important; /* Đổ bóng đậm hơn */
67
  backdrop-filter: blur(5px);
68
  transition: transform 0.2s ease;
69
  }
 
70
  div[data-testid="stMetric"]:hover {
71
  transform: translateY(-3px);
72
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15) !important;
73
  }
74
+
75
+ /* Tiêu đề thẻ (Forecast for...) - đã có tương phản tốt */
76
  div[data-testid="stMetricLabel"] p {
77
  font-size: 1.1rem !important;
78
  font-weight: 600 !important;
79
+ color: #333333; /* Xám đậm */
80
  }
81
+ /* Giá trị nhiệt độ - đã có tương phản tốt */
 
82
  div[data-testid="stMetricValue"] {
83
  font-size: 2.8rem !important;
84
  font-weight: 700 !important;
85
+ color: #004080; /* Xanh navy đậm */
86
  }
87
+ /* Giá trị "Actual" (delta) - đã có tương phản tốt */
 
88
  div[data-testid="stMetricDelta"] {
89
  font-size: 1rem !important;
90
  font-weight: 600 !important;
91
+ color: #555555; /* Xám vừa */
 
 
 
 
 
 
92
  }
93
+
94
+ /* ===== 3. TIÊU ĐỀ (HEADINGS) ===== */
95
+ h1, h2, h3 {
96
+ color: #004080 !important; /* Dùng chung màu XANH ĐẬM NHẤT */
97
+ text-shadow: 1px 1px 4px rgba(0, 0, 0, 0.15) !important; /* Thêm đổ bóng ĐEN (thay vì trắng) */
98
  }
99
 
100
+ /* ===== 4. BẢNG (DATAFRAME) ===== */
101
+ .stDataFrame {
102
+ background-color: #FFFFFF; /* Nền TRẮNG ĐỤC */
103
+ border: 1px solid #CCCCCC !important; /* Viền xám nhạt */
104
+ border-radius: 8px;
105
+ overflow: hidden;
106
  }
107
+ /* Tiêu đề của bảng */
108
+ [data-testid="stDataGridHeader"] {
109
+ background-color: #F0F8FF; /* Nền header (Alice Blue) */
110
+ color: #004080; /* Chữ xanh đậm */
111
+ }
112
+
113
+ /* ===== 5. BIỂU ĐỒ (PLOTLY) ===== */
114
  .plotly-graph-div {
115
+ background-color: #FFFFFF; /* Nền TRẮNG ĐỤC */
116
+ border: 1px solid #E0E0E0; /* Viền xám rất nhạt */
117
  border-radius: 8px;
118
  }
119
 
120
+ /* ===== EXPANDERS (vẫn giữ như cũ) ===== */
121
+ div[data-testid="stExpander"] {
122
+ background-color: rgba(255, 255, 255, 0.9) !important;
123
+ border-radius: 10px !important;
124
+ border: 1px solid rgba(0, 0, 0, 0.1) !important;
125
  }
126
+
127
  </style>
128
  """, unsafe_allow_html=True)
129
 
130
  # Gọi hàm CSS ngay lập tức
131
  load_css()
 
132
  # --- END OF NEW THEME SECTION ---
133
 
134
  # --- 3. DATA & MODEL LOADING FUNCTIONS (WITH CACHING) ---