@@ -13,7 +13,7 @@ const CACHE_EXPIRATION = 10 * 60 * 1000; // 10 min
1313* All functions starred with other words -> Online operation to corresponding backend APIs
1414*/
1515
16- export async function getPrograms ( isRefresh = false , query = { } ) {
16+ export async function getPrograms ( isRefresh = false , query = { } , ranking = "cs_rank" ) {
1717 /*
1818 * Get the list of programs (without description) from the server or local storage
1919 * @param isRefresh [Boolean]: whether to refresh the data
@@ -43,9 +43,19 @@ export async function getPrograms(isRefresh = false, query = {}) {
4343 }
4444
4545 programs = programs [ 'data' ] ;
46- const univAbbrOrder = univListOrder . map ( ( univ ) => univ . abbr ) ;
46+ // const univAbbrOrder = univListOrder.map((univ) => univ.abbr);
47+ // programs = Object.entries(programs).sort(([univ1, _], [univ2, __]) => {
48+ // return univAbbrOrder.indexOf(univ1) - univAbbrOrder.indexOf(univ2);
49+ // }).reduce((acc, [univ, programs]) => {
50+ // acc[univ] = programs;
51+ // return acc;
52+ // }, {});
53+ const univAbbrOrder = univListOrder . reduce ( ( acc , univ ) => {
54+ acc [ univ . abbr ] = univ [ ranking || 'cs_rank' ] ;
55+ return acc ;
56+ } , { } ) ;
4757 programs = Object . entries ( programs ) . sort ( ( [ univ1 , _ ] , [ univ2 , __ ] ) => {
48- return univAbbrOrder . indexOf ( univ1 ) - univAbbrOrder . indexOf ( univ2 ) ;
58+ return univAbbrOrder [ univ1 ] - univAbbrOrder [ univ2 ] ;
4959 } ) . reduce ( ( acc , [ univ , programs ] ) => {
5060 acc [ univ ] = programs ;
5161 return acc ;
0 commit comments