fortluzti commited on
Commit
71ec37a
·
verified ·
1 Parent(s): d9d1c0e

Gerar um único arquivo HTML auto-contido (dashboard.html) que inclua todo o CSS e JavaScript necessários. O design deve ser moderno, responsivo e com um tema escuro (dark mode), ideal para visualização de dados financeiros. Estrutura da Página: A página deve ter três seções principais: Cabeçalho (Header): Um título simples: "Dashboard de Performance de Sinais". Cartões de Resumo (KPIs - Key Performance Indicators): Uma linha contendo quatro cartões que exibem métricas gerais. Cartão 1: "Total de Sinais Analisados" (Ex: 1,258) Cartão 2: "Assertividade Média" (Ex: 68%) Cartão 3: "Melhor Canal" (Ex: "GOLD CHART EXPERT") Cartão 4: "Pior Canal" (Ex: "SMC AND ICT") Cada cartão deve ter um ícone sutil relacionado ao seu conteúdo (ex: um gráfico de barras, um alvo, um troféu, etc.). Tabela Principal: Performance por Canal: Esta é a seção mais importante. Crie uma tabela detalhada que lista a performance de cada canal. As colunas devem ser: Canal: O nome do canal (Ex: "TRADE WITH JOSPER"). Total de Sinais: Número total de sinais vindos daquele canal. Assertividade (%): A porcentagem de sinais que atingiram o TP. Resultado (Pips): O balanço total de pips (pode ser positivo ou negativo). Status: Um indicador visual (um círculo verde para lucrativo, vermelho para prejuízo). As linhas da tabela devem ter um efeito de "hover" para indicar que são clicáveis. Estilo e Design (Dark Mode): Fundo Principal: Um cinza bem escuro (ex: #121212). Fundos dos Componentes (Cartões, Tabela): Um cinza um pouco mais claro (ex: #1E1E1E). Cores de Destaque (Acento): Verde para Positivo/Sucesso: Um verde vibrante (ex: #28a745 ou um verde-limão). Vermelho para Negativo/Falha: Um vermelho claro (ex: #dc3545). Cor Primária (Links, Títulos): Branco ou um ciano/azul claro. Fontes: Use uma fonte limpa e moderna como 'Inter', 'Poppins' ou 'Roboto' (pode importar do Google Fonts). Ícones: Utilize a biblioteca Font Awesome ou Bootstrap Icons para os ícones dos KPIs. Dados de Exemplo (Placeholders): Para popular a interface, use os seguintes dados de exemplo. Isso é crucial para que a estrutura do HTML faça sentido. Dados para a Tabela de Performance por Canal: code JSON [ { "canal": "GOLD CHART EXPERT", "total_sinais": 150, "assertividade": 75, "resultado_pips": 2350, "status": "positivo" }, { "canal": "TRADE WITH JOSPER", "total_sinais": 210, "assertividade": 68, "resultado_pips": 1980, "status": "positivo" }, { "canal": "NASDAQ+US30 TRADING SIGNALS", "total_sinais": 180, "assertividade": 71, "resultado_pips": 1500, "status": "positivo" }, { "canal": "SMC AND ICT", "total_sinais": 95, "assertividade": 45, "resultado_pips": -850, "status": "negativo" } ]``` **Interatividade (JavaScript Simples):** Inclua um JavaScript mínimo (pode ser dentro da tag `<script>` no final do arquivo HTML) para simular interatividade: * Quando o usuário clicar em uma linha da tabela "Performance por Canal", a linha deve ficar destacada (ex: com uma borda na cor de acento). Não é necessário carregar dados reais, apenas simular a seleção. **Requisitos Finais:** * O resultado final deve ser um **único arquivo HTML**. * O layout deve ser **responsivo**, adaptando-se bem a telas de desktop e de celular. * O código deve ser limpo e bem comentado. Por favor, gere o código completo para `dashboard.html`. - Initial Deployment

Browse files
Files changed (2) hide show
  1. README.md +7 -5
  2. index.html +247 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Telegram
3
- emoji: 🌍
4
- colorFrom: pink
5
- colorTo: blue
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: telegram
3
+ emoji: 🐳
4
+ colorFrom: red
5
+ colorTo: red
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,247 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="pt-BR">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Dashboard de Performance de Sinais</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
9
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
10
+ <style>
11
+ body {
12
+ font-family: 'Inter', sans-serif;
13
+ background-color: #121212;
14
+ color: #e0e0e0;
15
+ }
16
+
17
+ /* Efeito hover personalizado para linhas da tabela */
18
+ .table-row:hover {
19
+ background-color: #2a2a2a !important;
20
+ transform: scale(1.005);
21
+ transition: all 0.2s ease;
22
+ }
23
+
24
+ /* Efeito de seleção para linha clicada */
25
+ .selected-row {
26
+ border-left: 4px solid #3b82f6;
27
+ background-color: #2a2a2a !important;
28
+ }
29
+
30
+ /* Scrollbar personalizada */
31
+ ::-webkit-scrollbar {
32
+ width: 8px;
33
+ height: 8px;
34
+ }
35
+
36
+ ::-webkit-scrollbar-track {
37
+ background: #1e1e1e;
38
+ }
39
+
40
+ ::-webkit-scrollbar-thumb {
41
+ background: #3b82f6;
42
+ border-radius: 4px;
43
+ }
44
+
45
+ /* Responsividade para tabela */
46
+ @media (max-width: 768px) {
47
+ .responsive-table {
48
+ display: block;
49
+ overflow-x: auto;
50
+ white-space: nowrap;
51
+ }
52
+ }
53
+ </style>
54
+ </head>
55
+ <body class="min-h-screen">
56
+ <div class="container mx-auto px-4 py-8">
57
+ <!-- Cabeçalho -->
58
+ <header class="mb-10">
59
+ <h1 class="text-3xl md:text-4xl font-bold text-white mb-2">Dashboard de Performance de Sinais</h1>
60
+ <p class="text-gray-400">Análise completa dos resultados dos canais de sinais</p>
61
+ </header>
62
+
63
+ <!-- Seção de KPIs -->
64
+ <section class="mb-12">
65
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
66
+ <!-- Cartão 1: Total de Sinais Analisados -->
67
+ <div class="bg-gray-800 rounded-xl p-6 shadow-lg hover:shadow-xl transition-shadow">
68
+ <div class="flex items-center justify-between">
69
+ <div>
70
+ <p class="text-gray-400 text-sm">Total de Sinais Analisados</p>
71
+ <h3 class="text-2xl font-bold text-white mt-2">1,258</h3>
72
+ </div>
73
+ <div class="bg-blue-500/20 p-3 rounded-full">
74
+ <i class="fas fa-chart-bar text-blue-400 text-xl"></i>
75
+ </div>
76
+ </div>
77
+ <div class="mt-4">
78
+ <span class="text-green-400 text-sm font-medium">
79
+ <i class="fas fa-arrow-up mr-1"></i> 12% vs último mês
80
+ </span>
81
+ </div>
82
+ </div>
83
+
84
+ <!-- Cartão 2: Assertividade Média -->
85
+ <div class="bg-gray-800 rounded-xl p-6 shadow-lg hover:shadow-xl transition-shadow">
86
+ <div class="flex items-center justify-between">
87
+ <div>
88
+ <p class="text-gray-400 text-sm">Assertividade Média</p>
89
+ <h3 class="text-2xl font-bold text-white mt-2">68%</h3>
90
+ </div>
91
+ <div class="bg-green-500/20 p-3 rounded-full">
92
+ <i class="fas fa-bullseye text-green-400 text-xl"></i>
93
+ </div>
94
+ </div>
95
+ <div class="mt-4">
96
+ <span class="text-green-400 text-sm font-medium">
97
+ <i class="fas fa-arrow-up mr-1"></i> 5% vs último mês
98
+ </span>
99
+ </div>
100
+ </div>
101
+
102
+ <!-- Cartão 3: Melhor Canal -->
103
+ <div class="bg-gray-800 rounded-xl p-6 shadow-lg hover:shadow-xl transition-shadow">
104
+ <div class="flex items-center justify-between">
105
+ <div>
106
+ <p class="text-gray-400 text-sm">Melhor Canal</p>
107
+ <h3 class="text-xl font-bold text-white mt-2 truncate">GOLD CHART EXPERT</h3>
108
+ </div>
109
+ <div class="bg-yellow-500/20 p-3 rounded-full">
110
+ <i class="fas fa-trophy text-yellow-400 text-xl"></i>
111
+ </div>
112
+ </div>
113
+ <div class="mt-4">
114
+ <span class="text-green-400 text-sm font-medium">
115
+ 75% assertividade
116
+ </span>
117
+ </div>
118
+ </div>
119
+
120
+ <!-- Cartão 4: Pior Canal -->
121
+ <div class="bg-gray-800 rounded-xl p-6 shadow-lg hover:shadow-xl transition-shadow">
122
+ <div class="flex items-center justify-between">
123
+ <div>
124
+ <p class="text-gray-400 text-sm">Pior Canal</p>
125
+ <h3 class="text-xl font-bold text-white mt-2 truncate">SMC AND ICT</h3>
126
+ </div>
127
+ <div class="bg-red-500/20 p-3 rounded-full">
128
+ <i class="fas fa-exclamation-triangle text-red-400 text-xl"></i>
129
+ </div>
130
+ </div>
131
+ <div class="mt-4">
132
+ <span class="text-red-400 text-sm font-medium">
133
+ 45% assertividade
134
+ </span>
135
+ </div>
136
+ </div>
137
+ </div>
138
+ </section>
139
+
140
+ <!-- Seção da Tabela -->
141
+ <section>
142
+ <div class="flex justify-between items-center mb-6">
143
+ <h2 class="text-2xl font-bold text-white">Performance por Canal</h2>
144
+ <div class="relative">
145
+ <select class="bg-gray-800 border border-gray-700 text-white text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5">
146
+ <option selected>Últimos 30 dias</option>
147
+ <option>Últimos 7 dias</option>
148
+ <option>Últimos 90 dias</option>
149
+ <option>Este ano</option>
150
+ </select>
151
+ </div>
152
+ </div>
153
+
154
+ <div class="bg-gray-800 rounded-xl shadow-lg overflow-hidden responsive-table">
155
+ <table class="min-w-full divide-y divide-gray-700">
156
+ <thead class="bg-gray-700">
157
+ <tr>
158
+ <th scope="col" class="px-6 py-4 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Canal</th>
159
+ <th scope="col" class="px-6 py-4 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Total de Sinais</th>
160
+ <th scope="col" class="px-6 py-4 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Assertividade (%)</th>
161
+ <th scope="col" class="px-6 py-4 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Resultado (Pips)</th>
162
+ <th scope="col" class="px-6 py-4 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Status</th>
163
+ </tr>
164
+ </thead>
165
+ <tbody class="bg-gray-800 divide-y divide-gray-700" id="table-body">
166
+ <!-- Linhas serão preenchidas via JavaScript -->
167
+ </tbody>
168
+ </table>
169
+ </div>
170
+ </section>
171
+ </div>
172
+
173
+ <script>
174
+ // Dados da tabela
175
+ const tableData = [
176
+ { canal: "GOLD CHART EXPERT", total_sinais: 150, assertividade: 75, resultado_pips: 2350, status: "positivo" },
177
+ { canal: "TRADE WITH JOSPER", total_sinais: 210, assertividade: 68, resultado_pips: 1980, status: "positivo" },
178
+ { canal: "NASDAQ+US30 TRADING SIGNALS", total_sinais: 180, assertividade: 71, resultado_pips: 1500, status: "positivo" },
179
+ { canal: "SMC AND ICT", total_sinais: 95, assertividade: 45, resultado_pips: -850, status: "negativo" }
180
+ ];
181
+
182
+ // Função para formatar números com separador de milhar
183
+ function formatNumber(num) {
184
+ return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
185
+ }
186
+
187
+ // Preencher tabela com dados
188
+ function populateTable() {
189
+ const tableBody = document.getElementById('table-body');
190
+
191
+ tableData.forEach((item, index) => {
192
+ const row = document.createElement('tr');
193
+ row.className = `table-row ${index % 2 === 0 ? 'bg-gray-800' : 'bg-gray-800/50'} cursor-pointer`;
194
+ row.onclick = function() {
195
+ // Remove a seleção de todas as linhas
196
+ document.querySelectorAll('.table-row').forEach(r => {
197
+ r.classList.remove('selected-row');
198
+ });
199
+ // Adiciona seleção à linha clicada
200
+ this.classList.add('selected-row');
201
+ };
202
+
203
+ // Determina a cor com base no status
204
+ const statusColor = item.status === 'positivo' ? 'text-green-400' : 'text-red-400';
205
+ const statusIcon = item.status === 'positivo' ? 'fa-check-circle' : 'fa-times-circle';
206
+
207
+ row.innerHTML = `
208
+ <td class="px-6 py-4 whitespace-nowrap">
209
+ <div class="flex items-center">
210
+ <div class="flex-shrink-0 h-10 w-10 bg-gray-700 rounded-full flex items-center justify-center">
211
+ <i class="fas fa-chart-line text-blue-400"></i>
212
+ </div>
213
+ <div class="ml-4">
214
+ <div class="text-sm font-medium text-white">${item.canal}</div>
215
+ <div class="text-sm text-gray-400">${item.total_sinais} sinais</div>
216
+ </div>
217
+ </div>
218
+ </td>
219
+ <td class="px-6 py-4 whitespace-nowrap">
220
+ <div class="text-sm text-white">${formatNumber(item.total_sinais)}</div>
221
+ </td>
222
+ <td class="px-6 py-4 whitespace-nowrap">
223
+ <div class="text-sm ${item.assertividade >= 70 ? 'text-green-400' : item.assertividade >= 60 ? 'text-yellow-400' : 'text-red-400'}">
224
+ ${item.assertividade}%
225
+ </div>
226
+ </td>
227
+ <td class="px-6 py-4 whitespace-nowrap">
228
+ <div class="text-sm ${item.resultado_pips >= 0 ? 'text-green-400' : 'text-red-400'}">
229
+ ${item.resultado_pips >= 0 ? '+' : ''}${formatNumber(item.resultado_pips)}
230
+ </div>
231
+ </td>
232
+ <td class="px-6 py-4 whitespace-nowrap">
233
+ <span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full ${statusColor}">
234
+ <i class="fas ${statusIcon} mr-1"></i> ${item.status === 'positivo' ? 'Lucrativo' : 'Prejuízo'}
235
+ </span>
236
+ </td>
237
+ `;
238
+
239
+ tableBody.appendChild(row);
240
+ });
241
+ }
242
+
243
+ // Chamar a função quando a página carregar
244
+ document.addEventListener('DOMContentLoaded', populateTable);
245
+ </script>
246
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=fortluzti/telegram" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
247
+ </html>