aidevhund commited on
Commit
04c7877
Β·
verified Β·
1 Parent(s): e34124c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -6
app.py CHANGED
@@ -77,25 +77,30 @@ custom_css = """
77
  --text-color: #1e293b;
78
  --border-color: #e2e8f0;
79
  }
 
80
  body {
81
  background-color: var(--background-color);
82
  color: var(--text-color);
83
  }
 
84
  .container {
85
  max-width: 1200px;
86
  margin: 0 auto;
87
  padding: 20px;
88
  }
 
89
  .analysis-box {
90
  background-color: white;
91
  border-radius: 12px;
92
  padding: 24px;
93
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
94
  border: 1px solid var(--border-color);
95
- height: 600px;
96
  overflow-y: auto;
97
  width: 100%;
 
98
  }
 
99
  .upload-box {
100
  background-color: white;
101
  border-radius: 12px;
@@ -104,6 +109,7 @@ body {
104
  border: 1px solid var(--border-color);
105
  width: 100%;
106
  }
 
107
  .primary-button {
108
  background-color: var(--primary-color) !important;
109
  color: white !important;
@@ -112,30 +118,57 @@ body {
112
  font-weight: 500 !important;
113
  width: 100%;
114
  }
 
115
  .primary-button:hover {
116
  background-color: var(--secondary-color) !important;
117
  }
 
118
  .markdown-container {
119
  max-width: 100%;
120
  margin: 0 auto;
121
  padding: 0 15px;
122
  word-wrap: break-word;
123
  }
 
 
 
 
 
 
 
 
124
  .loading-text {
125
  color: var(--primary-color);
126
  font-size: 1.2rem;
127
  text-align: center;
128
  margin-top: 2rem;
129
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  .row {
131
  display: flex;
132
  flex-wrap: wrap;
133
  gap: 20px;
134
  }
 
135
  .column {
136
  flex: 1;
137
  min-width: 300px;
138
  }
 
139
  @media (max-width: 768px) {
140
  .row {
141
  flex-direction: column;
@@ -147,6 +180,14 @@ body {
147
  }
148
  """
149
 
 
 
 
 
 
 
 
 
150
  # Gradio Interface
151
  analyzer = ChartAnalyzer()
152
 
@@ -156,7 +197,7 @@ with gr.Blocks(css=custom_css, theme=gr.themes.Soft()) as demo:
156
  gr.Markdown("""
157
  <div style="text-align: center; margin-bottom: 32px;">
158
  <h1 style="color: var(--primary-color); font-size: 2.5rem; margin-bottom: 16px;">
159
- πŸš€ HundAI Trade Agent
160
  </h1>
161
  <p style="color: var(--text-color); font-size: 1.1rem;">
162
  Advanced AI-powered cryptocurrency technical analysis
@@ -186,15 +227,17 @@ with gr.Blocks(css=custom_css, theme=gr.themes.Soft()) as demo:
186
  with gr.Column(elem_classes=["column"]):
187
  with gr.Column(elem_classes=["analysis-box"]):
188
  gr.Markdown("### πŸ“Š Analysis Report")
189
- analysis_output = gr.Markdown(
190
  label="",
191
- elem_classes=["markdown-container"],
192
- height=300,
193
- value="<div class='loading-text'>Report will be ready...</div>"
194
  )
195
 
196
  # Event Handling
197
  analyze_btn.click(
 
 
 
 
198
  fn=analyzer.analyze_chart,
199
  inputs=chart_input,
200
  outputs=analysis_output,
 
77
  --text-color: #1e293b;
78
  --border-color: #e2e8f0;
79
  }
80
+
81
  body {
82
  background-color: var(--background-color);
83
  color: var(--text-color);
84
  }
85
+
86
  .container {
87
  max-width: 1200px;
88
  margin: 0 auto;
89
  padding: 20px;
90
  }
91
+
92
  .analysis-box {
93
  background-color: white;
94
  border-radius: 12px;
95
  padding: 24px;
96
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
97
  border: 1px solid var(--border-color);
98
+ height: 400px; /* Initial height */
99
  overflow-y: auto;
100
  width: 100%;
101
+ transition: height 0.3s ease;
102
  }
103
+
104
  .upload-box {
105
  background-color: white;
106
  border-radius: 12px;
 
109
  border: 1px solid var(--border-color);
110
  width: 100%;
111
  }
112
+
113
  .primary-button {
114
  background-color: var(--primary-color) !important;
115
  color: white !important;
 
118
  font-weight: 500 !important;
119
  width: 100%;
120
  }
121
+
122
  .primary-button:hover {
123
  background-color: var(--secondary-color) !important;
124
  }
125
+
126
  .markdown-container {
127
  max-width: 100%;
128
  margin: 0 auto;
129
  padding: 0 15px;
130
  word-wrap: break-word;
131
  }
132
+
133
+ .loading-container {
134
+ display: flex;
135
+ justify-content: center;
136
+ align-items: center;
137
+ height: 100%;
138
+ }
139
+
140
  .loading-text {
141
  color: var(--primary-color);
142
  font-size: 1.2rem;
143
  text-align: center;
144
  margin-top: 2rem;
145
  }
146
+
147
+ .loading-spinner {
148
+ border: 4px solid #f3f3f3;
149
+ border-top: 4px solid var(--primary-color);
150
+ border-radius: 50%;
151
+ width: 40px;
152
+ height: 40px;
153
+ animation: spin 1s linear infinite;
154
+ }
155
+
156
+ @keyframes spin {
157
+ 0% { transform: rotate(0deg); }
158
+ 100% { transform: rotate(360deg); }
159
+ }
160
+
161
  .row {
162
  display: flex;
163
  flex-wrap: wrap;
164
  gap: 20px;
165
  }
166
+
167
  .column {
168
  flex: 1;
169
  min-width: 300px;
170
  }
171
+
172
  @media (max-width: 768px) {
173
  .row {
174
  flex-direction: column;
 
180
  }
181
  """
182
 
183
+ # Loading HTML template
184
+ loading_html = """
185
+ <div class="loading-container">
186
+ <div class="loading-spinner"></div>
187
+ <div class="loading-text">Generating report...</div>
188
+ </div>
189
+ """
190
+
191
  # Gradio Interface
192
  analyzer = ChartAnalyzer()
193
 
 
197
  gr.Markdown("""
198
  <div style="text-align: center; margin-bottom: 32px;">
199
  <h1 style="color: var(--primary-color); font-size: 2.5rem; margin-bottom: 16px;">
200
+ πŸš€ CryptoVision Pro
201
  </h1>
202
  <p style="color: var(--text-color); font-size: 1.1rem;">
203
  Advanced AI-powered cryptocurrency technical analysis
 
227
  with gr.Column(elem_classes=["column"]):
228
  with gr.Column(elem_classes=["analysis-box"]):
229
  gr.Markdown("### πŸ“Š Analysis Report")
230
+ analysis_output = gr.HTML(
231
  label="",
232
+ value="<div style='text-align:center; padding:20px; color:#666;'>Analysis report will appear here</div>"
 
 
233
  )
234
 
235
  # Event Handling
236
  analyze_btn.click(
237
+ fn=lambda: loading_html, # Show loading spinner immediately
238
+ outputs=analysis_output,
239
+ queue=False
240
+ ).then(
241
  fn=analyzer.analyze_chart,
242
  inputs=chart_input,
243
  outputs=analysis_output,