consolidated filter

This commit is contained in:
amNobodyyy
2025-02-03 22:48:09 +05:30
parent 2ee5203679
commit 1e91864769
3 changed files with 44 additions and 9 deletions

View File

@@ -3,8 +3,8 @@ import axios from "axios";
import * as XLSX from "xlsx-js-style";
import { sendEmail, createExcelBook } from "../api";
import Navbar from "./Navbar";
import { toast, ToastContainer } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';
import { toast, ToastContainer } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";
const styles = {
header: {
@@ -91,6 +91,18 @@ const ConsolidatedTable = () => {
const tablesPerPage = 5;
const [expandedTeacher, setExpandedTeacher] = useState(null);
const getAcademicYears = () => {
const currentYear = new Date().getFullYear();
return Array.from({ length: 6 }, (_, i) => {
const startYear = currentYear - i;
const endYear = (startYear + 1).toString().slice(-2); // Get last two digits
return `${startYear}-${endYear}`;
});
};
const academicYears = getAcademicYears();
const [selectedYear, setSelectedYear] = useState(academicYears[0]); // Default to current academic year
useEffect(() => {
const fetchData = async () => {
try {
@@ -113,6 +125,13 @@ const ConsolidatedTable = () => {
return <div>Loading...</div>;
}
// Filter data based on search query and selected academic year
const filteredData = data.filter(
(row) =>
row.academicYear === selectedYear && // Filter by selected academic year
row.Name.toLowerCase().includes(searchQuery.toLowerCase()) // Filter by search query
);
// Extract unique faculty names and filter based on the search query
const filteredTeachers = [...new Set(data.map((row) => row.Name))].filter(
(teacher) => teacher.toLowerCase().includes(searchQuery.toLowerCase()) // Filter by search query
@@ -238,11 +257,22 @@ const ConsolidatedTable = () => {
fontSize: "16px",
}}
/>
{/* Academic Year Dropdown */}
<select
value={selectedYear}
onChange={(e) => setSelectedYear(e.target.value)}
>
{academicYears.map((year) => (
<option key={year} value={year}>
{year}
</option>
))}
</select>
</div>
<div style={styles.tableContainer}>
{currentTeachers.map((teacher, index) => {
const teacherData = data.filter((row) => row.Name === teacher);
const teacherData = filteredData.filter((row) => row.Name === teacher);
console.log(teacherData);
return (
<div key={index} style={{ marginBottom: "20px" }}>
@@ -316,7 +346,9 @@ const ConsolidatedTable = () => {
<td style={styles.td}>{row.courseCode}</td>
<td style={styles.td}>{row.courseName}</td>
<td style={styles.td}>{row.examType}</td>
<td style={styles.td}>{row.examPeriod +" "+ row.academicYear}</td>
<td style={styles.td}>
{row.examPeriod + " " + row.academicYear}
</td>
<td style={styles.td}>{row.marks}</td>
<td style={styles.td}>{row.Name}</td>
<td style={styles.td}>{row.affiliation}</td>

View File

@@ -3,19 +3,22 @@ import { useNavigate } from "react-router-dom";
import "./FilterPage.css";
import { fetchCourses } from "../api";
import Navbar from "./Navbar";
import { toast, ToastContainer } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';
import { toast, ToastContainer } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";
const FilterPage = () => {
const currentYear = new Date().getFullYear();
const [formData, setFormData] = useState({
// Load saved filters from localStorage or set default values
const savedFilters = JSON.parse(localStorage.getItem("filterState")) || {
scheme: "",
semester: "",
department: "",
program: "",
academicYear: `${currentYear}-${(currentYear + 1).toString().slice(-2)}`,
});
};
const [formData, setFormData] = useState(savedFilters);
const navigate = useNavigate();
const handleInputChange = (e) => {
@@ -41,6 +44,7 @@ const FilterPage = () => {
}
try {
localStorage.setItem("filterState", JSON.stringify(formData));
const filteredCourses = await fetchCourses(formData);
if (filteredCourses.length > 0) {
// Save filteredCourses in localStorage