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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +113 -1
app.py CHANGED
@@ -21,6 +21,118 @@ st.set_page_config(
21
  layout="wide"
22
  )
23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  # --- 3. DATA & MODEL LOADING FUNCTIONS (WITH CACHING) ---
25
  # Checklist Items 1 & 2: Cache all heavy operations
26
 
@@ -131,7 +243,7 @@ with tab1:
131
 
132
  # --- NÂNG CẤP: Thêm hình ảnh ---
133
  st.image("https://image.vietnam.travel/sites/default/files/2023-03/shutterstock_626352947_0.jpg?v=1762135399",
134
- caption="Ho Chi Minh City. Credit: Vietnam Tourism", use_column_width=True)
135
  # Bạn có thể thay thế URL trên bằng URL của riêng bạn, hoặc
136
 
137
  st.subheader("Project Summary")
 
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) ---
137
  # Checklist Items 1 & 2: Cache all heavy operations
138
 
 
243
 
244
  # --- NÂNG CẤP: Thêm hình ảnh ---
245
  st.image("https://image.vietnam.travel/sites/default/files/2023-03/shutterstock_626352947_0.jpg?v=1762135399",
246
+ caption="Ho Chi Minh City. Credit: Vietnam Tourism", use_container_width=True)
247
  # Bạn có thể thay thế URL trên bằng URL của riêng bạn, hoặc
248
 
249
  st.subheader("Project Summary")