Ohm1998's picture
dude i want to create website that has login screen like this https://ohmasadataanalyst.github.io/SC-dashboard/login/ oncethe user login it opens a page of sidebar excatly like the one in this code
fb766c5 verified
// Main application script
document.addEventListener('DOMContentLoaded', function() {
// Handle login form submission
const loginForm = document.getElementById('loginForm');
if (loginForm) {
loginForm.addEventListener('submit', function(e) {
e.preventDefault();
const username = document.getElementById('username').value;
const password = document.getElementById('password').value;
// Simple validation (in production, use proper authentication)
if (username && password) {
localStorage.setItem('isAuthenticated', 'true');
window.location.href = 'dashboard.html';
} else {
alert('Please enter both username and password');
}
});
}
// Check authentication on dashboard pages
const isAuthenticated = localStorage.getItem('isAuthenticated');
if (!isAuthenticated && !window.location.pathname.includes('login.html')) {
window.location.href = 'login.html';
}
// PDF Upload Functionality
const pdfUploadForms = document.querySelectorAll('.pdf-upload-form');
pdfUploadForms.forEach(form => {
form.addEventListener('submit', function(e) {
e.preventDefault();
const department = this.querySelector('select[name="department"]').value;
const startDate = this.querySelector('input[name="start_date"]').value;
const endDate = this.querySelector('input[name="end_date"]').value;
const pdfFile = this.querySelector('input[name="pdf_file"]').files[0];
if (pdfFile) {
const reader = new FileReader();
reader.onload = function(e) {
const pdfData = e.target.result;
// Store in localStorage (in production, use backend)
localStorage.setItem(`pdf_${department}_${startDate}_${endDate}`, pdfData);
alert('PDF uploaded successfully!');
};
reader.readAsDataURL(pdfFile);
}
});
});
// Generate trend chart from PDF data (mock implementation)
function generateTrendChart(department, startDate, endDate) {
// In a real app, you would parse the PDF and extract data
// This is a mock implementation with random data
const ctx = document.getElementById('trendChart');
if (!ctx) return;
const labels = [];
const start = new Date(startDate);
const end = new Date(endDate);
const diffTime = Math.abs(end - start);
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
for (let i = 0; i <= diffDays; i += 7) {
labels.push(`Week ${i/7 + 1}`);
}
const randomData = labels.map(() => Math.floor(Math.random() * 100));
new Chart(ctx, {
type: 'line',
data: {
labels: labels,
datasets: [{
label: `${department} Performance Trend`,
data: randomData,
borderColor: '#f97316',
backgroundColor: 'rgba(249, 115, 22, 0.1)',
borderWidth: 2,
tension: 0.3,
fill: true
}]
},
options: {
responsive: true,
scales: {
y: {
beginAtZero: true,
max: 100
}
}
}
});
}
// Initialize trend chart when viewing a PDF
const urlParams = new URLSearchParams(window.location.search);
const department = urlParams.get('department');
const startDate = urlParams.get('start_date');
const endDate = urlParams.get('end_date');
if (department && startDate && endDate) {
generateTrendChart(department, startDate, endDate);
}
});
// Theme toggle functionality
function toggleTheme() {
const html = document.documentElement;
if (html.classList.contains('dark')) {
html.classList.remove('dark');
localStorage.setItem('theme', 'light');
} else {
html.classList.add('dark');
localStorage.setItem('theme', 'dark');
}
}
// Check for saved theme preference
if (localStorage.getItem('theme') === 'dark' || (!localStorage.getItem('theme') && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark');
}