chart-js / index.html
privateuserh's picture
Add 2 files
a17ca2f verified
<!DOCTYPE html>
<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>