undefined / reports.html
sverdlov's picture
seems you got stuck. continue
565d300 verified
Raw
History Blame Contribute Delete
22.8 kB
<!DOCTYPE html>
<html lang="en" class="h-full">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TaskSphere | Reports</title>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
<script src="https://unpkg.com/feather-icons"></script>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.globe.min.js"></script>
<style>
.vanta-canvas {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
opacity: 0.1;
}
.chart-container {
position: relative;
height: 300px;
width: 100%;
}
</style>
</head>
<body class="min-h-full bg-gray-50">
<div id="vanta-globe" class="vanta-canvas"></div>
<!-- Navigation -->
<nav class="bg-white shadow-sm">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between h-16">
<div class="flex">
<div class="flex-shrink-0 flex items-center">
<i data-feather="compass" class="h-8 w-8 text-primary"></i>
<span class="ml-2 text-xl font-bold text-gray-900">TaskSphere</span>
</div>
<div class="hidden sm:ml-6 sm:flex sm:space-x-8">
<a href="index.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Dashboard</a>
<a href="department.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Departments</a>
<a href="tasks.html" class="border-transparent text-gray-500 hover:border-gray-300 hover:text-gray-700 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Tasks</a>
<a href="reports.html" class="border-primary text-gray-900 inline-flex items-center px-1 pt-1 border-b-2 text-sm font-medium">Reports</a>
</div>
</div>
<div class="hidden sm:ml-6 sm:flex sm:items-center">
<button type="button" class="bg-white p-1 rounded-full text-gray-400 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary">
<i data-feather="bell" class="h-6 w-6"></i>
</button>
<div class="ml-3 relative">
<div>
<button type="button" class="bg-white rounded-full flex text-sm focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary" id="user-menu" aria-expanded="false" aria-haspopup="true">
<span class="sr-only">Open user menu</span>
<img class="h-8 w-8 rounded-full" src="http://static.photos/office/200x200/1" alt="">
</button>
</div>
</div>
</div>
<div class="-mr-2 flex items-center sm:hidden">
<button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-primary" aria-controls="mobile-menu" aria-expanded="false">
<span class="sr-only">Open main menu</span>
<i data-feather="menu" class="block h-6 w-6"></i>
<i data-feather="x" class="hidden h-6 w-6"></i>
</button>
</div>
</div>
</div>
</nav>
<!-- Main Content -->
<div class="py-10">
<header>
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<h1 class="text-3xl font-bold leading-tight text-gray-900">Reports & Analytics</h1>
<div class="mt-4 flex flex-col sm:flex-row sm:items-center">
<div class="relative rounded-md shadow-sm w-full sm:w-64">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<i data-feather="calendar" class="h-5 w-5 text-gray-400"></i>
</div>
<input type="text" class="focus:ring-primary focus:border-primary block w-full pl-10 sm:text-sm border-gray-300 rounded-md py-2" placeholder="Select date range..." onfocus="this.type='date'">
</div>
<div class="mt-2 sm:mt-0 sm:ml-4 flex space-x-2">
<button type="button" class="inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-primary hover:bg-primary-dark focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary">
<i data-feather="download" class="-ml-1 mr-2 h-5 w-5"></i>
Export
</button>
<div class="relative">
<button type="button" class="inline-flex items-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary">
<i data-feather="filter" class="-ml-1 mr-2 h-5 w-5 text-gray-500"></i>
Filter
</button>
</div>
</div>
</div>
</div>
</header>
<main>
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="px-4 py-8 sm:px-0">
<!-- Report Cards -->
<div class="grid grid-cols-1 gap-5 sm:grid-cols-2 lg:grid-cols-3 mb-8">
<div class="bg-white overflow-hidden shadow rounded-lg">
<div class="px-4 py-5 sm:p-6">
<div class="flex items-center">
<div class="flex-shrink-0 bg-primary bg-opacity-10 rounded-md p-3">
<i data-feather="activity" class="h-6 w-6 text-primary"></i>
</div>
<div class="ml-5 w-0 flex-1">
<dl>
<dt class="text-sm font-medium text-gray-500 truncate">Productivity Score</dt>
<dd>
<div class="text-lg font-medium text-gray-900">78%</div>
<div class="text-xs text-green-600">↑ 12% from last month</div>
</dd>
</dl>
</div>
</div>
</div>
</div>
<div class="bg-white overflow-hidden shadow rounded-lg">
<div class="px-4 py-5 sm:p-6">
<div class="flex items-center">
<div class="flex-shrink-0 bg-green-100 rounded-md p-3">
<i data-feather="trending-up" class="h-6 w-6 text-green-600"></i>
</div>
<div class="ml-5 w-0 flex-1">
<dl>
<dt class="text-sm font-medium text-gray-500 truncate">Tasks Completed</dt>
<dd>
<div class="text-lg font-medium text-gray-900">1,248</div>
<div class="text-xs text-green-600">↑ 23% from last month</div>
</dd>
</dl>
</div>
</div>
</div>
</div>
<div class="bg-white overflow-hidden shadow rounded-lg">
<div class="px-4 py-5 sm:p-6">
<div class="flex items-center">
<div class="flex-shrink-0 bg-yellow-100 rounded-md p-3">
<i data-feather="clock" class="h-6 w-6 text-yellow-600"></i>
</div>
<div class="ml-5 w-0 flex-1">
<dl>
<dt class="text-sm font-medium text-gray-500 truncate">Avg. Completion Time</dt>
<dd>
<div class="text-lg font-medium text-gray-900">3.2 days</div>
<div class="text-xs text-red-600">↑ 0.5 days from last month</div>
</dd>
</dl>
</div>
</div>
</div>
</div>
</div>
<!-- Charts Section -->
<div class="grid grid-cols-1 gap-8 lg:grid-cols-2">
<!-- Productivity Chart -->
<div class="bg-white shadow rounded-lg p-6">
<h3 class="text-lg font-medium text-gray-900 mb-4">Productivity by Department</h3>
<div class="chart-container">
<canvas id="productivityChart"></canvas>
</div>
</div>
<!-- Task Completion Chart -->
<div class="bg-white shadow rounded-lg p-6">
<h3 class="text-lg font-medium text-gray-900 mb-4">Task Completion Over Time</h3>
<div class="chart-container">
<canvas id="completionChart"></canvas>
</div>
</div>
<!-- Department Comparison -->
<div class="bg-white shadow rounded-lg p-6 lg:col-span-2">
<h3 class="text-lg font-medium text-gray-900 mb-4">Department Performance Comparison</h3>
<div class="chart-container" style="height: 400px;">
<canvas id="departmentChart"></canvas>
</div>
</div>
</div>
<!-- Data Tables -->
<div class="mt-8 bg-white shadow overflow-hidden sm:rounded-lg">
<div class="px-4 py-5 sm:px-6 border-b border-gray-200">
<h3 class="text-lg leading-6 font-medium text-gray-900">Detailed Task Metrics</h3>
<p class="mt-1 text-sm text-gray-500">Comprehensive breakdown of task performance across all departments.</p>
</div>
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50">
<tr>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Department</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Tasks Completed</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Avg. Time</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Overdue</th>
<th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Productivity</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">Marketing</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">248</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">2.8 days</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">12</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">72%</span>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">Development</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">312</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">3.5 days</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">8</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">84%</span>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">Sales</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">187</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">4.1 days</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">15</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-yellow-100 text-yellow-800">65%</span>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">Human Resources</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">156</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">2.2 days</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">5</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">88%</span>
</td>
</tr>
<tr>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium text-gray-900">Finance</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">201</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">3.0 days</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">7</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">76%</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</main>
</div>
<script>
// Vanta.js Globe Background
VANTA.GLOBE({
el: "#vanta-globe",
mouseControls: true,
touchControls: true,
gyroControls: false,
minHeight: 200.00,
minWidth: 200.00,
scale: 1.00,
scaleMobile: 1.00,
color: 0x4f46e5,
backgroundColor: 0xf3f4f6,
size: 1.00
});
// Initialize feather icons
feather.replace();
// Productivity Chart
const productivityCtx = document.getElementById('productivityChart').getContext('2d');
const productivityChart = new Chart(productivityCtx, {
type: 'bar',
data: {
labels: ['Marketing', 'Development', 'Sales', 'HR', 'Finance', 'Operations'],
datasets: [{
label: 'Productivity %',
data: [72, 84, 65, 88, 76, 70],
backgroundColor: [
'rgba(79, 70, 229, 0.7)',
'rgba(16, 185, 129, 0.7)',
'rgba(245, 158, 11, 0.7)',
'rgba(236, 72, 153, 0.7)',
'rgba(59, 130, 246, 0.7)',
'rgba(139, 92, 246, 0.7)'
],
borderColor: [
'rgba(79, 70, 229, 1)',
'rgba(16, 185, 129, 1)',
'rgba(245, 158, 11, 1)',
'rgba(236, 72, 153, 1)',
'rgba(59, 130, 246, 1)',
'rgba(139, 92, 246, 1)'
],
borderWidth: 1
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
y: {
beginAtZero: true,
max: 100
}
}
}
});
// Completion Chart
const completionCtx = document.getElementById('completionChart').getContext('2d');
const completionChart = new Chart(completionCtx, {
type: 'line',
data: {
labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
datasets: [{
label: 'Tasks Completed',
data: [150, 210, 185, 240, 290, 320],
fill: false,
backgroundColor: 'rgba(79, 70, 229, 0.7)',
borderColor: 'rgba(79, 70, 229, 1)',
tension: 0.1
}]
},
options: {
responsive: true,
maintainAspectRatio: false
}
});
// Department Comparison Chart
const departmentCtx = document.getElementById('departmentChart').getContext('2d');
const departmentChart = new Chart(departmentCtx, {
type: 'radar',
data: {
labels: ['Productivity', 'Completion %', 'On Time', 'Quality', 'Collaboration'],
datasets: [
{
label: 'Marketing',
data: [72, 68, 75, 80, 65],
backgroundColor: 'rgba(79, 70, 229, 0.2)',
borderColor: 'rgba(79, 70, 229, 1)',
pointBackgroundColor: 'rgba(79, 70, 229, 1)',
pointBorderColor: '#fff',
pointHoverBackgroundColor: '#fff',
pointHoverBorderColor: 'rgba(79, 70, 229, 1)'
},
{
label: 'Development',
data: [84, 82, 88, 90, 78],
backgroundColor: 'rgba(16, 185, 129, 0.2)',
borderColor: 'rgba(16, 185, 129, 1)',
pointBackgroundColor: 'rgba(16, 185, 129, 1)',
pointBorderColor: '#fff',
pointHoverBackgroundColor: '#fff',
pointHoverBorderColor: 'rgba(16, 185, 129, 1)'
},
{
label: 'Sales',
data: [65, 54, 60, 70, 55],
backgroundColor: 'rgba(245, 158, 11, 0.2)',
borderColor: 'rgba(245, 158, 11, 1)',
pointBackgroundColor: 'rgba(245, 158, 11, 1)',
pointBorderColor: '#fff',
pointHoverBackgroundColor: '#fff',
pointHoverBorderColor: 'rgba(245, 158, 11, 1)'
}
]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
r: {
angleLines: {
display: true
},
suggestedMin: 0,
suggestedMax: 100
}
}
}
});
</script>
</body>
</html>