Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Data Visualization Dashboard</title> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |
| <style> | |
| .chart-container { | |
| position: relative; | |
| height: 100%; | |
| width: 100%; | |
| } | |
| .gradient-bg { | |
| background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); | |
| } | |
| .card-hover:hover { | |
| transform: translateY(-5px); | |
| box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); | |
| } | |
| .transition-all { | |
| transition: all 0.3s ease; | |
| } | |
| </style> | |
| </head> | |
| <body class="gradient-bg min-h-screen"> | |
| <div class="container mx-auto px-4 py-8"> | |
| <!-- Header --> | |
| <header class="flex justify-between items-center mb-8"> | |
| <div> | |
| <h1 class="text-3xl font-bold text-gray-800">Analytics Dashboard</h1> | |
| <p class="text-gray-600">Visualizing your data with Chart.js</p> | |
| </div> | |
| <div class="flex items-center space-x-4"> | |
| <div class="relative"> | |
| <input type="text" placeholder="Search..." class="pl-10 pr-4 py-2 rounded-lg border border-gray-300 focus:outline-none focus:ring-2 focus:ring-blue-500"> | |
| <i class="fas fa-search absolute left-3 top-3 text-gray-400"></i> | |
| </div> | |
| <button class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded-lg transition-all"> | |
| <i class="fas fa-download mr-2"></i> Export | |
| </button> | |
| </div> | |
| </header> | |
| <!-- Stats Cards --> | |
| <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8"> | |
| <div class="bg-white rounded-xl shadow-md p-6 transition-all card-hover"> | |
| <div class="flex justify-between items-center"> | |
| <div> | |
| <p class="text-gray-500">Total Users</p> | |
| <h3 class="text-2xl font-bold text-gray-800">1,254</h3> | |
| <p class="text-green-500 text-sm"><i class="fas fa-arrow-up mr-1"></i> 12% from last month</p> | |
| </div> | |
| <div class="bg-blue-100 p-3 rounded-full"> | |
| <i class="fas fa-users text-blue-600 text-xl"></i> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="bg-white rounded-xl shadow-md p-6 transition-all card-hover"> | |
| <div class="flex justify-between items-center"> | |
| <div> | |
| <p class="text-gray-500">Revenue</p> | |
| <h3 class="text-2xl font-bold text-gray-800">$8,542</h3> | |
| <p class="text-green-500 text-sm"><i class="fas fa-arrow-up mr-1"></i> 5.4% from last month</p> | |
| </div> | |
| <div class="bg-green-100 p-3 rounded-full"> | |
| <i class="fas fa-dollar-sign text-green-600 text-xl"></i> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="bg-white rounded-xl shadow-md p-6 transition-all card-hover"> | |
| <div class="flex justify-between items-center"> | |
| <div> | |
| <p class="text-gray-500">Conversion Rate</p> | |
| <h3 class="text-2xl font-bold text-gray-800">3.2%</h3> | |
| <p class="text-red-500 text-sm"><i class="fas fa-arrow-down mr-1"></i> 0.8% from last month</p> | |
| </div> | |
| <div class="bg-purple-100 p-3 rounded-full"> | |
| <i class="fas fa-percent text-purple-600 text-xl"></i> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="bg-white rounded-xl shadow-md p-6 transition-all card-hover"> | |
| <div class="flex justify-between items-center"> | |
| <div> | |
| <p class="text-gray-500">Avg. Session</p> | |
| <h3 class="text-2xl font-bold text-gray-800">4m 23s</h3> | |
| <p class="text-green-500 text-sm"><i class="fas fa-arrow-up mr-1"></i> 1.2% from last month</p> | |
| </div> | |
| <div class="bg-yellow-100 p-3 rounded-full"> | |
| <i class="fas fa-clock text-yellow-600 text-xl"></i> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Main Charts --> | |
| <div class="grid grid-cols-1 lg:grid-cols-2 gap-6 mb-8"> | |
| <!-- Line Chart --> | |
| <div class="bg-white rounded-xl shadow-md p-6 transition-all card-hover"> | |
| <div class="flex justify-between items-center mb-4"> | |
| <h2 class="text-xl font-semibold text-gray-800">Monthly Performance</h2> | |
| <div class="flex space-x-2"> | |
| <button class="px-3 py-1 text-sm bg-blue-100 text-blue-600 rounded-md">2023</button> | |
| <button class="px-3 py-1 text-sm bg-gray-100 text-gray-600 rounded-md">2022</button> | |
| </div> | |
| </div> | |
| <div class="chart-container"> | |
| <canvas id="lineChart"></canvas> | |
| </div> | |
| </div> | |
| <!-- Bar Chart --> | |
| <div class="bg-white rounded-xl shadow-md p-6 transition-all card-hover"> | |
| <div class="flex justify-between items-center mb-4"> | |
| <h2 class="text-xl font-semibold text-gray-800">Revenue by Category</h2> | |
| <div class="flex space-x-2"> | |
| <button class="px-3 py-1 text-sm bg-blue-100 text-blue-600 rounded-md">Monthly</button> | |
| <button class="px-3 py-1 text-sm bg-gray-100 text-gray-600 rounded-md">Yearly</button> | |
| </div> | |
| </div> | |
| <div class="chart-container"> | |
| <canvas id="barChart"></canvas> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Secondary Charts --> | |
| <div class="grid grid-cols-1 lg:grid-cols-3 gap-6"> | |
| <!-- Pie Chart --> | |
| <div class="bg-white rounded-xl shadow-md p-6 transition-all card-hover"> | |
| <div class="flex justify-between items-center mb-4"> | |
| <h2 class="text-xl font-semibold text-gray-800">Traffic Sources</h2> | |
| <i class="fas fa-ellipsis-h text-gray-400"></i> | |
| </div> | |
| <div class="chart-container"> | |
| <canvas id="pieChart"></canvas> | |
| </div> | |
| </div> | |
| <!-- Doughnut Chart --> | |
| <div class="bg-white rounded-xl shadow-md p-6 transition-all card-hover"> | |
| <div class="flex justify-between items-center mb-4"> | |
| <h2 class="text-xl font-semibold text-gray-800">Device Distribution</h2> | |
| <i class="fas fa-ellipsis-h text-gray-400"></i> | |
| </div> | |
| <div class="chart-container"> | |
| <canvas id="doughnutChart"></canvas> | |
| </div> | |
| </div> | |
| <!-- Radar Chart --> | |
| <div class="bg-white rounded-xl shadow-md p-6 transition-all card-hover"> | |
| <div class="flex justify-between items-center mb-4"> | |
| <h2 class="text-xl font-semibold text-gray-800">Skill Assessment</h2> | |
| <i class="fas fa-ellipsis-h text-gray-400"></i> | |
| </div> | |
| <div class="chart-container"> | |
| <canvas id="radarChart"></canvas> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Footer --> | |
| <footer class="mt-12 text-center text-gray-500 text-sm"> | |
| <p>© 2023 Analytics Dashboard. All rights reserved.</p> | |
| </footer> | |
| </div> | |
| <script> | |
| // Line Chart | |
| const lineCtx = document.getElementById('lineChart').getContext('2d'); | |
| const lineChart = new Chart(lineCtx, { | |
| type: 'line', | |
| data: { | |
| labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], | |
| datasets: [ | |
| { | |
| label: 'Revenue', | |
| data: [1200, 1900, 1700, 2100, 2500, 2800, 3100, 3400, 2800, 3000, 3200, 3800], | |
| borderColor: 'rgba(79, 70, 229, 1)', | |
| backgroundColor: 'rgba(79, 70, 229, 0.05)', | |
| borderWidth: 2, | |
| tension: 0.3, | |
| fill: true | |
| }, | |
| { | |
| label: 'Users', | |
| data: [800, 1200, 1100, 1400, 1800, 2000, 2200, 2400, 2100, 2300, 2500, 2900], | |
| borderColor: 'rgba(14, 165, 233, 1)', | |
| backgroundColor: 'rgba(14, 165, 233, 0.05)', | |
| borderWidth: 2, | |
| tension: 0.3, | |
| fill: true | |
| } | |
| ] | |
| }, | |
| options: { | |
| responsive: true, | |
| maintainAspectRatio: false, | |
| plugins: { | |
| legend: { | |
| position: 'top', | |
| }, | |
| tooltip: { | |
| mode: 'index', | |
| intersect: false, | |
| } | |
| }, | |
| scales: { | |
| y: { | |
| beginAtZero: true, | |
| grid: { | |
| drawBorder: false | |
| } | |
| }, | |
| x: { | |
| grid: { | |
| display: false | |
| } | |
| } | |
| } | |
| } | |
| }); | |
| // Bar Chart | |
| const barCtx = document.getElementById('barChart').getContext('2d'); | |
| const barChart = new Chart(barCtx, { | |
| type: 'bar', | |
| data: { | |
| labels: ['Electronics', 'Fashion', 'Home', 'Beauty', 'Sports'], | |
| datasets: [{ | |
| label: 'Revenue', | |
| data: [12000, 9000, 7500, 6000, 4500], | |
| backgroundColor: [ | |
| 'rgba(99, 102, 241, 0.7)', | |
| 'rgba(14, 165, 233, 0.7)', | |
| 'rgba(20, 184, 166, 0.7)', | |
| 'rgba(244, 63, 94, 0.7)', | |
| 'rgba(245, 158, 11, 0.7)' | |
| ], | |
| borderColor: [ | |
| 'rgba(99, 102, 241, 1)', | |
| 'rgba(14, 165, 233, 1)', | |
| 'rgba(20, 184, 166, 1)', | |
| 'rgba(244, 63, 94, 1)', | |
| 'rgba(245, 158, 11, 1)' | |
| ], | |
| borderWidth: 1 | |
| }] | |
| }, | |
| options: { | |
| responsive: true, | |
| maintainAspectRatio: false, | |
| plugins: { | |
| legend: { | |
| display: false | |
| } | |
| }, | |
| scales: { | |
| y: { | |
| beginAtZero: true, | |
| grid: { | |
| drawBorder: false | |
| } | |
| }, | |
| x: { | |
| grid: { | |
| display: false | |
| } | |
| } | |
| } | |
| } | |
| }); | |
| // Pie Chart | |
| const pieCtx = document.getElementById('pieChart').getContext('2d'); | |
| const pieChart = new Chart(pieCtx, { | |
| type: 'pie', | |
| data: { | |
| labels: ['Direct', 'Organic Search', 'Social', 'Email', 'Referral'], | |
| datasets: [{ | |
| data: [35, 30, 15, 10, 10], | |
| backgroundColor: [ | |
| 'rgba(99, 102, 241, 0.7)', | |
| 'rgba(14, 165, 233, 0.7)', | |
| 'rgba(20, 184, 166, 0.7)', | |
| 'rgba(244, 63, 94, 0.7)', | |
| 'rgba(245, 158, 11, 0.7)' | |
| ], | |
| borderColor: [ | |
| 'rgba(99, 102, 241, 1)', | |
| 'rgba(14, 165, 233, 1)', | |
| 'rgba(20, 184, 166, 1)', | |
| 'rgba(244, 63, 94, 1)', | |
| 'rgba(245, 158, 11, 1)' | |
| ], | |
| borderWidth: 1 | |
| }] | |
| }, | |
| options: { | |
| responsive: true, | |
| maintainAspectRatio: false, | |
| plugins: { | |
| legend: { | |
| position: 'right', | |
| } | |
| } | |
| } | |
| }); | |
| // Doughnut Chart | |
| const doughnutCtx = document.getElementById('doughnutChart').getContext('2d'); | |
| const doughnutChart = new Chart(doughnutCtx, { | |
| type: 'doughnut', | |
| data: { | |
| labels: ['Desktop', 'Mobile', 'Tablet'], | |
| datasets: [{ | |
| data: [55, 40, 5], | |
| backgroundColor: [ | |
| 'rgba(99, 102, 241, 0.7)', | |
| 'rgba(14, 165, 233, 0.7)', | |
| 'rgba(20, 184, 166, 0.7)' | |
| ], | |
| borderColor: [ | |
| 'rgba(99, 102, 241, 1)', | |
| 'rgba(14, 165, 233, 1)', | |
| 'rgba(20, 184, 166, 1)' | |
| ], | |
| borderWidth: 1 | |
| }] | |
| }, | |
| options: { | |
| responsive: true, | |
| maintainAspectRatio: false, | |
| plugins: { | |
| legend: { | |
| position: 'right', | |
| } | |
| }, | |
| cutout: '70%' | |
| } | |
| }); | |
| // Radar Chart | |
| const radarCtx = document.getElementById('radarChart').getContext('2d'); | |
| const radarChart = new Chart(radarCtx, { | |
| type: 'radar', | |
| data: { | |
| labels: ['JavaScript', 'HTML/CSS', 'React', 'Node.js', 'Database', 'UI/UX'], | |
| datasets: [ | |
| { | |
| label: 'Current Skills', | |
| data: [85, 90, 80, 75, 70, 85], | |
| backgroundColor: 'rgba(99, 102, 241, 0.2)', | |
| borderColor: 'rgba(99, 102, 241, 1)', | |
| borderWidth: 2, | |
| pointBackgroundColor: 'rgba(99, 102, 241, 1)' | |
| }, | |
| { | |
| label: 'Target Skills', | |
| data: [95, 95, 90, 85, 85, 90], | |
| backgroundColor: 'rgba(14, 165, 233, 0.2)', | |
| borderColor: 'rgba(14, 165, 233, 1)', | |
| borderWidth: 2, | |
| pointBackgroundColor: 'rgba(14, 165, 233, 1)' | |
| } | |
| ] | |
| }, | |
| options: { | |
| responsive: true, | |
| maintainAspectRatio: false, | |
| scales: { | |
| r: { | |
| angleLines: { | |
| display: true | |
| }, | |
| suggestedMin: 0, | |
| suggestedMax: 100 | |
| } | |
| } | |
| } | |
| }); | |
| </script> | |
| <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=privateuserh/chart-js" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> | |
| </html> |