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> |