Merge branch 'feature/bus-routes'

This commit is contained in:
Amudieshwar A G
2026-07-23 14:55:10 +05:30
3 changed files with 33 additions and 15 deletions

View File

@@ -1,11 +1,16 @@
C:\Users\deves\OneDrive\project_main\Freshers-Hub\backend\src\main\java\com\rit\portal\config\DataInitializer.java D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\config\DataInitializer.java
C:\Users\deves\OneDrive\project_main\Freshers-Hub\backend\src\main\java\com\rit\portal\config\WebConfig.java D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\config\WebConfig.java
C:\Users\deves\OneDrive\project_main\Freshers-Hub\backend\src\main\java\com\rit\portal\controller\CommunityQuestionController.java D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\controller\BusRouteController.java
C:\Users\deves\OneDrive\project_main\Freshers-Hub\backend\src\main\java\com\rit\portal\controller\NotePyqController.java D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\controller\CommunityQuestionController.java
C:\Users\deves\OneDrive\project_main\Freshers-Hub\backend\src\main\java\com\rit\portal\entity\CommunityAnswer.java D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\controller\NotePyqController.java
C:\Users\deves\OneDrive\project_main\Freshers-Hub\backend\src\main\java\com\rit\portal\entity\CommunityQuestion.java D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\entity\BusRoute.java
C:\Users\deves\OneDrive\project_main\Freshers-Hub\backend\src\main\java\com\rit\portal\entity\NotePyq.java D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\entity\BusStop.java
C:\Users\deves\OneDrive\project_main\Freshers-Hub\backend\src\main\java\com\rit\portal\PortalApplication.java D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\entity\CommunityAnswer.java
C:\Users\deves\OneDrive\project_main\Freshers-Hub\backend\src\main\java\com\rit\portal\repository\CommunityAnswerRepository.java D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\entity\CommunityQuestion.java
C:\Users\deves\OneDrive\project_main\Freshers-Hub\backend\src\main\java\com\rit\portal\repository\CommunityQuestionRepository.java D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\entity\NotePyq.java
C:\Users\deves\OneDrive\project_main\Freshers-Hub\backend\src\main\java\com\rit\portal\repository\NotePyqRepository.java D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\PortalApplication.java
D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\repository\BusRouteRepository.java
D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\repository\BusStopRepository.java
D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\repository\CommunityAnswerRepository.java
D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\repository\CommunityQuestionRepository.java
D:\projects\Freshers-Hub\backend\src\main\java\com\rit\portal\repository\NotePyqRepository.java

View File

@@ -44,7 +44,7 @@ export const FEATURES: Feature[] = [
icon: 'Map', icon: 'Map',
title: 'Campus Map', title: 'Campus Map',
description: 'Explore RIT campus interactively find departments, labs, library, canteen, and facilities.', description: 'Explore RIT campus interactively find departments, labs, library, canteen, and facilities.',
path: '/campus', path: '/campus?tab=map',
color: '#10B981', color: '#10B981',
bgColor: '#ECFDF5', bgColor: '#ECFDF5',
}, },
@@ -53,7 +53,7 @@ export const FEATURES: Feature[] = [
icon: 'Bus', icon: 'Bus',
title: 'Bus Routes', title: 'Bus Routes',
description: 'View all campus bus routes, timings, and pickup locations at a glance.', description: 'View all campus bus routes, timings, and pickup locations at a glance.',
path: '/campus', path: '/campus?tab=bus',
color: '#3B82F6', color: '#3B82F6',
bgColor: '#EFF6FF', bgColor: '#EFF6FF',
}, },
@@ -62,7 +62,7 @@ export const FEATURES: Feature[] = [
icon: 'UserCheck', icon: 'UserCheck',
title: 'Faculty Directory', title: 'Faculty Directory',
description: 'Find faculty contact details, department, designation, and office hours.', description: 'Find faculty contact details, department, designation, and office hours.',
path: '/campus', path: '/campus?tab=faculty',
color: '#EC4899', color: '#EC4899',
bgColor: '#FDF2F8', bgColor: '#FDF2F8',
}, },

View File

@@ -7,12 +7,17 @@ import FacultyCard from '@/components/FacultyCard/FacultyCard';
import { StaggerContainer, StaggerItem } from '@/components/AnimatedContainer/AnimatedContainer'; import { StaggerContainer, StaggerItem } from '@/components/AnimatedContainer/AnimatedContainer';
import { FACULTY_DATA, CAMPUS_LOCATIONS, DEPARTMENTS } from '@/constants'; import { FACULTY_DATA, CAMPUS_LOCATIONS, DEPARTMENTS } from '@/constants';
import * as LucideIcons from 'lucide-react'; import * as LucideIcons from 'lucide-react';
import { useLocation } from 'react-router-dom';
import type { BusRoute } from '@/types'; import type { BusRoute } from '@/types';
type Tab = 'map' | 'bus' | 'faculty'; type Tab = 'map' | 'bus' | 'faculty';
export default function Campus() { export default function Campus() {
const [activeTab, setActiveTab] = useState<Tab>('map'); const location = useLocation();
const queryTab = new URLSearchParams(location.search).get('tab') as Tab;
const [activeTab, setActiveTab] = useState<Tab>(
queryTab === 'map' || queryTab === 'bus' || queryTab === 'faculty' ? queryTab : 'map'
);
const [searchFaculty, setSearchFaculty] = useState(''); const [searchFaculty, setSearchFaculty] = useState('');
const [selectedDept, setSelectedDept] = useState('All Departments'); const [selectedDept, setSelectedDept] = useState('All Departments');
const [sortBy, setSortBy] = useState('Name A-Z'); const [sortBy, setSortBy] = useState('Name A-Z');
@@ -20,6 +25,14 @@ export default function Campus() {
const [busRoutes, setBusRoutes] = useState<BusRoute[]>([]); const [busRoutes, setBusRoutes] = useState<BusRoute[]>([]);
const [loadingBus, setLoadingBus] = useState(true); const [loadingBus, setLoadingBus] = useState(true);
// Sync tab state when URL query parameter changes
useEffect(() => {
const qTab = new URLSearchParams(location.search).get('tab') as Tab;
if (qTab === 'map' || qTab === 'bus' || qTab === 'faculty') {
setActiveTab(qTab);
}
}, [location.search]);
useEffect(() => { useEffect(() => {
if (activeTab === 'bus' && busRoutes.length === 0) { if (activeTab === 'bus' && busRoutes.length === 0) {
setLoadingBus(true); setLoadingBus(true);