rahulkapoor90/VITacademics-Enhancement-Suite

View on GitHub
Extension for Edge/scripts/home/msgNew.js

Summary

Maintainability
F
1 wk
Test Coverage
/*var a=document.createElement('script');
a.src = "https://cdn.ravenjs.com/3.8.1/raven.min.js";
document.head.append(a);
*/
//  Raven Configuration.
Raven.config('https://cd8ad21e630d48cd8bfbf163223577a1@sentry.io/116461').install();
try {
        //  disabled for now.
        //init();
} catch (e) {
        console.error(e);
        Raven.captureException(e);
}

function init(){
    //  Extra Curricular Course Messages.
    var Messages;
    Messages = {};
    var elem = $('marquee').last().find('table').each(parse);

    function parse(i,elem){
        if( $(elem).find('tr').first().find('b').text().includes('Extra Curricular') ){
            parseEC(elem);
        }

        if( $(elem).find('tr').first().find('b').text().includes('Class Faculty') ){
            parseC(elem);
        }

        if( $(elem).find('tr').first().find('b').text().includes('Faculty Advisor') ){
            parseA(elem);
        }
        console.warn(Messages);
        console.warn(Object.keys(Messages).length);
    }

    //  Parse Fac Ad.
    function parseA(elem){
        var trs = $(elem).find('tr');

        var messages = [];

        $(elem).find('tr:nth-of-type(4n+3)').each(function(i,e){
            messages.push($(e).find('td').last().text().trim());
        });

        var timeStamps = [];

        $(elem).find('tr:nth-of-type(4n+4)').each(function(i,e){
            timeStamps.push($(e).find('td').last().text().trim());
        });

        var advisor = [];

        $(elem).find('tr:nth-of-type(4n+2)').each(function(i,e){
            advisor.push($(e).find('td').last().text().trim());
        });

        timeStamps.forEach(function(e, i){
            var obj = {};
            obj[e] = {
                advisor : advisor[i],
                message : messages[i]
            }
            combine(obj);
        });


    /*
        console.warn(messages);
        console.warn(timeStamps);
        console.warn(advisor);*/
    }

    //  Parse Class Message
    function parseC(elem){
        var trs = $(elem).find('tr');
        var count = $(elem).find('tr:nth-of-type(5n+4)').length;

        var messages = [];

        $(elem).find('tr:nth-of-type(5n+5)').each(function(i,e){
            messages.push($(e).find('td').last().text().trim());
        });

        var timeStamps = [];

        $(elem).find('tr:nth-of-type(5n+6)').each(function(i,e){
            timeStamps.push($(e).find('td').last().text().trim());
        });

        var faculty = [];

        $(elem).find('tr:nth-of-type(5n+3)').each(function(i,e){
            if(i==count)return;
            faculty.push($(e).find('td').last().text().trim());
        });

        var courses = [];

        $(elem).find('tr:nth-of-type(5n+4)').each(function(i,e){
            if(i==count)return;
            courses.push($(e).find('td').last().text().trim());
        });

        timeStamps.forEach(function(e, i){
            var obj = {};
            obj[e] = {
                faculty : faculty[i],
                course : courses[i],
                message : messages[i]
            }
            combine(obj);
        });

    /*
        console.warn(messages);
        console.warn(timeStamps);
        console.warn(faculty);
        console.warn(courses);
    */
    }

    //  Parse Extra Curricular Message.
    function parseEC(elem){

        var trs = $(elem).find('tr');
        var coordinator = $(trs[1]).find('td').last().text().trim();
        var course = $(trs[2]).find('td').last().text().trim();

        var messages = [];

        $(elem).find('tr:nth-of-type(3n+4)').each(function(i,e){
            messages.push($(e).find('td').last().text().trim());
        });

        var timeStamps = [];

        $(elem).find('tr:nth-of-type(3n+5)').each(function(i,e){
            timeStamps.push($(e).find('td').last().text().trim());
        });

        timeStamps.forEach(function(e, i){
            var obj = {};
            obj[e] = {
                coordinator : coordinator,
                course : course,
                message : messages[i]
            }
            combine(obj);
        })
    /*    console.warn(coordinator);
        console.warn(course);
        console.warn(messages);
        console.warn(timeStamps);*/
    }
    //  Combine message with same timestamp. //I know won't happen. But just in case :P
    function combine(obj){
        var temp = Object.keys(obj)[0];
        if(Messages[temp]){
            Messages[temp].push(obj[temp]);
            return;
        }
        Messages[temp]=obj[temp];
    }

    function check(old, current){

    }
}