@@ -9,6 +9,8 @@ import useScrollToTop from 'views/hooks/useScrollToTop';
9
9
import LocationMap from 'views/components/bus-map/LocationMap' ;
10
10
import NoFooter from 'views/layout/NoFooter' ;
11
11
import { getRouteSegments , getServiceStatus } from 'utils/mobility' ;
12
+ import NUSModerator from 'nusmoderator' ;
13
+ import { setTime } from 'utils/timify' ;
12
14
import styles from './MobilityContainer.scss' ;
13
15
import ServiceDetails from '../ServiceDetails' ;
14
16
import ServiceList from '../ServiceList' ;
@@ -28,6 +30,13 @@ const getPropsFromMatch = (match: Match<Params>) => ({
28
30
slug : match . params . slug ,
29
31
} ) ;
30
32
33
+ const BTCStops = [
34
+ // college green, oth bldg, and bg mrt
35
+ 'CG' ,
36
+ 'OTH' ,
37
+ 'BG-MRT' ,
38
+ ] ;
39
+
31
40
const MobilityContainer = ( ) => {
32
41
useScrollToTop ( ) ;
33
42
@@ -40,31 +49,55 @@ const MobilityContainer = () => {
40
49
const [ selectedService , setSelectedService ] = useState < ISBService | null > ( null ) ;
41
50
42
51
const [ serviceStatus , setServiceStatus ] = useState < ServiceStatus [ ] > ( [ ] ) ;
52
+
53
+ const acadWeekInfo = NUSModerator . academicCalendar . getAcadWeekInfo ( new Date ( ) ) ;
54
+ const busPeriod =
55
+ acadWeekInfo . sem === 'Semester 1' || acadWeekInfo . sem === 'Semester 2' ? 'term' : 'vacation' ;
43
56
useEffect ( ( ) => {
44
- setServiceStatus ( getServiceStatus ( ) ) ;
57
+ setServiceStatus ( getServiceStatus ( busPeriod ) ) ;
45
58
const interval = setInterval ( ( ) => {
46
- setServiceStatus ( getServiceStatus ( ) ) ;
59
+ setServiceStatus ( getServiceStatus ( busPeriod ) ) ;
47
60
} , 1000 * 60 * 0.25 ) ;
48
61
return ( ) => clearInterval ( interval ) ;
49
62
} , [ ] ) ;
50
63
64
+ const setFocusStopAndCampus = ( stop : string ) => {
65
+ if ( campus === 'KRC' && BTCStops . includes ( stop ) ) {
66
+ setCampus ( 'BTC' ) ;
67
+ } else if ( campus === 'BTC' && ! BTCStops . includes ( stop ) ) {
68
+ setCampus ( 'KRC' ) ;
69
+ }
70
+ setTimeout ( ( ) => setFocusStop ( stop ) , 100 ) ;
71
+ // setFocusStop(stop);
72
+ } ;
73
+
51
74
// window.scrollTo(0, 0); when type or slug changes
52
75
useEffect ( ( ) => {
53
76
window . scrollTo ( 0 , 0 ) ;
54
77
if ( type === 'stop' ) {
55
- setFocusStop ( slug ) ;
78
+ console . log ( 'A' ) ;
79
+ setFocusStopAndCampus ( slug ) ;
56
80
} else if ( type === 'service' ) {
57
81
const service = isbServices . find ( ( s ) => s . id === slug ) ;
58
82
if ( service ) {
59
83
setSelectedService ( service ) ;
60
- setFocusStop ( service . stops [ 0 ] ) ;
84
+ setFocusStopAndCampus ( service . stops [ 0 ] ) ;
61
85
}
62
86
} else if ( type === undefined ) {
63
87
setSelectedService ( null ) ;
64
88
setFocusStop ( null ) ;
65
89
}
66
90
} , [ type , slug ] ) ;
67
91
92
+ // // if focusStop is in different campus, switch campus
93
+ // useEffect(() => {
94
+ // if (focusStop && campus === 'KRC' && BTCStops.includes(focusStop)) {
95
+ // setCampus('BTC');
96
+ // } else if (focusStop && campus === 'BTC' && !BTCStops.includes(focusStop)) {
97
+ // setCampus('KRC');
98
+ // }
99
+ // }, [focusStop, campus]);
100
+
68
101
return (
69
102
< >
70
103
< div className = { styles . pageContainer } >
0 commit comments