Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
An easy way to fill preferences in http://psd.bits-pilani.ac.in/
/***
When you are too lazy to drag stuff (and 295 of them)
( An easy way to fill preferences in http://psd.bits-pilani.ac.in/ )
res : contents of getPBDetail which is loaded in http://psd.bits-pilani.ac.in/Student/ViewProblemBanks.aspx
***/
// #just_snippets
// get info of all stations
info = eval(res.d)
// create an array containing distinct values of any key
var indPref = info.map(e => e.IndustryDomain).reduce(function(acc, e){
if(acc.indexOf(e) == -1){
acc.push(e)
}
return acc
}, [])
// helpers to manipuate the prefrence array
function swap(arr, a, b){
var t = arr[a];
arr[a] = arr[b];
arr[b] = t;
return arr;
}
function move(arr, a, b){
l = arr[a];
arr.splice(a, 1);
arr.splice(b, 0, l);
return arr;
}
// preference settings
var pref = [{
arr: indPref,
key: "IndustryDomain",
weight: 15
},
{
arr: cityPref,
key: "City",
weight: 20
}
]
// score of a station
function score(a){
var score = pref.reduce((acc, e)=>{
var len = e.arr.length;
return acc + e.weight*(len - e.arr.indexOf(a[e.key])/len);
}, 0)
score *= ((a.Tags.search("A7") == -1)?1:2);
score += a.totalstudent/10;
return score
}
// sort and print info
function sp(){
info.sort((a, b)=>{
return score(b) - score(a)
})
info.forEach((e)=>{
console.log(e.City + " "+ e.IndustryDomain + " "+ e.CompanyName);
});
}
// make a string to be sent to be saved
var str = "[";
info.forEach((el, i)=>{
str += "{"
str += "'isActive':'1',"
str += "'PreferenceNo':'" + (i + 1) + "','StationId':'" + el.StationId + "',"
str += "'Accommodation':'" + "true" + "'," // this comma!
str += "},"
})
str = str.substr(0, str.length - 1);
str += "]";
// save the preference
saveprefdata(str, "", 0) // run this from http://psd.bits-pilani.ac.in/Student/StudentStationPreference.aspx
// tadaa
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.