From c3ccb37f4563330a2a50cb34acf8828b3b1ba6d8 Mon Sep 17 00:00:00 2001 From: Marc Blatter Date: Sat, 4 Jul 2026 13:04:48 +0200 Subject: [PATCH] Rollback: Restored functional design (a3bd191) --- src/web_dashboard.py | 391 ++++++++++++++++++++++--------------------- 1 file changed, 201 insertions(+), 190 deletions(-) diff --git a/src/web_dashboard.py b/src/web_dashboard.py index 4216db0..18d6043 100644 --- a/src/web_dashboard.py +++ b/src/web_dashboard.py @@ -210,196 +210,207 @@ html_content = """ Trading Bot Dashboard + * { + margin: 0; + padding: 0; + box-sizing: border-box; + } + + body { + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; + background: linear-gradient(135deg, #0f0c29 0%, #302b63 100%); + color: #e0e0e0; + padding: 20px; + min-height: 100vh; + } + + .container { + max-width: 1400px; + margin: 0 auto; + } + + .header { + text-align: center; + margin-bottom: 30px; + border-bottom: 2px solid #6c63ff; + padding-bottom: 20px; + } + + .header h1 { + font-size: 2.5em; + color: #6c63ff; + margin-bottom: 10px; + } + + .status { + display: inline-block; + padding: 8px 16px; + background: #00c853; + color: white; + border-radius: 20px; + font-weight: bold; + font-size: 0.9em; + } + + .grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 20px; + margin-bottom: 30px; + } + + .card { + background: rgba(255, 255, 255, 0.1); + border: 1px solid #6c63ff; + border-radius: 10px; + padding: 20px; + backdrop-filter: blur(10px); + transition: all 0.3s ease; + } + + .card:hover { + background: rgba(255, 255, 255, 0.15); + border-color: #00c853; + transform: translateY(-5px); + } + + .card-title { + color: #6c63ff; + font-size: 0.9em; + text-transform: uppercase; + letter-spacing: 1px; + margin-bottom: 10px; + } + + .card-value { + font-size: 2em; + font-weight: bold; + color: #e0e0e0; + margin-bottom: 5px; + } + + .card-sub { + color: #a0a0a0; + font-size: 0.85em; + } + + .positive { + color: #00c853; + } + + .negative { + color: #ff3d00; + } + + .section { + margin-bottom: 30px; + } + + .section-title { + color: #6c63ff; + font-size: 1.5em; + margin-bottom: 15px; + border-bottom: 1px solid #6c63ff; + padding-bottom: 10px; + } + + .trades-list { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + gap: 15px; + } + + .trade-card { + background: rgba(255, 255, 255, 0.08); + border-left: 4px solid #6c63ff; + border-radius: 5px; + padding: 15px; + font-size: 0.9em; + } + + .trade-card.open { + border-left-color: #6c63ff; + } + + .trade-card.closed { + border-left-color: #00c853; + } + + .trade-pair { + font-weight: bold; + color: #6c63ff; + margin-bottom: 8px; + } + + .trade-info { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 10px; + font-size: 0.85em; + color: #a0a0a0; + } + + .trade-info strong { + color: #e0e0e0; + } + + .swap-item { + background: rgba(255, 255, 255, 0.05); + padding: 10px; + border-radius: 5px; + margin-bottom: 8px; + font-size: 0.85em; + } + + .performance-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 15px; + } + + .stat-card { + background: rgba(108, 99, 255, 0.2); + border: 1px solid #6c63ff; + border-radius: 8px; + padding: 15px; + text-align: center; + } + + .stat-label { + color: #a0a0a0; + font-size: 0.8em; + text-transform: uppercase; + margin-bottom: 8px; + } + + .stat-value { + font-size: 1.8em; + font-weight: bold; + color: #00c853; + } + + .stat-value.loss { + color: #ff3d00; + } + + .update-time { + text-align: right; + color: #666; + font-size: 0.8em; + margin-top: 20px; + padding-top: 20px; + border-top: 1px solid #333; + } + + @keyframes fadeIn { + from { opacity: 0; } + to { opacity: 1; } + } + + .fade-in { + animation: fadeIn 0.3s ease-in; + } +