Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Simple reference solution for RDM-4 Hard
- // Utilizing PapaParse and JQuery
- // (cheat a little bit and hardcode the scoresheets)
- /*
- Codes,P1,P2,P3,P4,P5
- Points,10,8,6,4,2
- Payment Amount,10,8,6,4,2
- */
- const scoring1 = {
- labels : ["P1","P2","P3","P4","P5"],
- points : {
- "P1":10,
- "P2":8,
- "P3":6,
- "P4":4,
- "P5":2
- },
- payments : {
- "P1":10,
- "P2":8,
- "P3":6,
- "P4":4,
- "P5":2
- }
- };
- var resJson=[];
- /*
- Codes,Functional,UI/UX
- Points,10,5
- Payment Amount,5,3
- */
- const scoring2 = {
- labels : ["Functional","UI/UX"],
- points : {
- "Functional":10,
- "UI/UX":5
- },
- payments : {
- "Functional":5,
- "UI/UX":3
- }
- };
- var scoring = scoring1;
- function processTickets(ticketsJson,scoringSheet){
- var results = [];
- var n = ticketsJson.length;
- var nScore = scoringSheet.labels.length;
- for(var i = 0;i<n;i++){
- var ticket = ticketsJson[i];
- var author = ticket['Author Username'];
- if (author === '' || author === null) continue;
- if (ticket['Issue ID'] === '' || ticket['Issue ID'] === null) continue;
- if (author != '')
- if (author in results) {
- results[author]['Number of Tickets']++;
- if (ticket['Labels'].toLowerCase().includes("invalid")) results[author]['Invalid Tickets']++;
- else if (ticket['Labels'].toLowerCase().includes("valid")) results[author]['Valid Tickets']++;
- else if (ticket['Labels'].toLowerCase().includes("duplicate")) results[author]['Duplicate Tickets']++;
- for(var j = 0; j < nScore; j++){
- if (ticket['Labels'].includes(scoringSheet.labels[j])) {
- var lbl = scoringSheet.labels[j];
- if (ticket['Labels'].toLowerCase().includes("valid") && !ticket['Labels'].toLowerCase().includes("invalid")) results[author]['Total Points'] += scoringSheet.points[lbl];
- if (ticket['Labels'].toLowerCase().includes("valid") && !ticket['Labels'].toLowerCase().includes("invalid")) results[author][lbl]++;
- }
- }
- } else {
- var newRow = {};
- newRow['Author Username']=author;
- newRow['Number of Tickets']=1;
- var points = 0;
- if (ticket['Labels'].toLowerCase().includes("valid") && !ticket['Labels'].toLowerCase().includes("invalid")) newRow['Valid Tickets']=1; else newRow['Valid Tickets']=0;
- if (ticket['Labels'].toLowerCase().includes("invalid")) newRow['Invalid Tickets']=1; else newRow['Invalid Tickets']=0;
- if (ticket['Labels'].toLowerCase().includes("duplicate")) newRow['Duplicate Tickets']=1; else newRow['Duplicate Tickets']=0;
- for(var j = 0; j < nScore; j++){
- var lbl = scoringSheet.labels[j];
- newRow[lbl] = 0;
- if (ticket['Labels'].includes(scoringSheet.labels[j])) {
- if (ticket['Labels'].toLowerCase().includes("valid") && !ticket['Labels'].toLowerCase().includes("invalid")) points += scoringSheet.points[lbl];
- if (ticket['Labels'].toLowerCase().includes("valid") && !ticket['Labels'].toLowerCase().includes("invalid")) newRow[lbl] = 1;
- }
- }
- newRow['Total Points'] = points;
- results[author] = newRow;
- }
- }
- var resArr = Object.keys(results).map(function(key) {
- return [key, results[key]];
- });
- resArr.sort(function(f,s){
- return s[1]['Total Points'] - f[1]['Total Points'];
- });
- var topAuthor = resArr[0][0];
- var secAuthor = resArr[1][0];
- for(var i = 0;i<n;i++){
- var ticket = ticketsJson[i];
- var author = ticket['Author Username'];
- if (author === topAuthor || author === secAuthor){
- if (!ticket['Labels'].toLowerCase().includes("invalid") && !ticket['Labels'].toLowerCase().includes("duplicate")) {
- var ath = author === topAuthor ? 0 : 1;
- var coef = 1;
- var labels = ticket['Labels'].split(',');
- for(var j in labels){
- console.log(labels);
- if (!Number.isNaN(parseInt(labels[j]))) {coef = parseInt(labels[j]);
- console.log(coef);
- break;}
- }
- for(var j = 0; j < nScore; j++){
- if (ticket['Labels'].includes(scoringSheet.labels[j])) {
- var lbl = scoringSheet.labels[j];
- resArr[ath][1]['Total Points'] += scoringSheet.points[lbl] * coef;
- }
- }
- }
- }
- }
- return resArr;
- }
- function writeTable(results,scoringSheet){
- var tbl = $('#resultsTable');
- tbl.css('display','inline-block');
- var n = results.length;
- var header = '<thead id="results-header">';
- var headerRow = '<tr>'
- headerRow += ('<th>'+"S.No"+'</th>');
- headerRow += ('<th>'+"Author Username"+'</th>');
- headerRow += ('<th>'+"Number of Tickets"+'</th>');
- headerRow += ('<th>'+"Valid Tickets"+'</th>');
- headerRow += ('<th>'+"Invalid Tickets"+'</th>');
- headerRow += ('<th>'+"Duplicate Tickets"+'</th>');
- for(var i = 0;i<scoringSheet.labels.length;i++){
- headerRow += '<th>'+scoringSheet.labels[i] + '</th>';
- }
- headerRow += ('<th>'+"Total Points"+'</th>');
- headerRow += '</tr>';
- header += headerRow;
- header += '</thead>';
- $('#resultsTable').append(header);
- var tbd ='<tbody id="results-data">';
- for(var i = 0;i<n;++i){
- var row ='<tr>';
- row+='<td>'+(i+1)+'</td>';
- row+='<td>'+results[i][1]['Author Username']+'</td>';
- row+='<td>'+results[i][1]['Number of Tickets']+'</td>';
- row+='<td>'+results[i][1]['Valid Tickets']+'</td>';
- row+='<td>'+results[i][1]['Invalid Tickets']+'</td>';
- row+='<td>'+results[i][1]['Duplicate Tickets']+'</td>';
- for(var j = 0;j<scoringSheet.labels.length;j++){
- row += '<td>'+ results[i][1][scoringSheet.labels[j]] + '</td>';
- }
- row+='<td>'+results[i][1]['Total Points']+'</td>';
- row+='</tr>';
- tbd+=row;
- }
- tbd+='</tbody>';
- $('#resultsTable').append(tbd);
- }
- function readFiles() {
- var csv = $("#ticketFile").prop('files')[0];
- console.log(csv);
- var inputData;
- var outData;
- Papa.parse(csv ,{
- header:true,
- dynamicTyping: false,
- complete: function(results) {
- resJson=[];
- inputData = results.data;
- outData = processTickets(inputData,scoring)
- writeTable(outData,scoring);
- for(var i in outData){
- resJson[i] = outData[i][1];
- }
- }
- });
- };
- function getFileName() {
- document.getElementById("pointsFile").value="csvfiles\\"+document.getElementById("challengeType").value;
- if (document.getElementById("challengeType").value==="Scoringsheet-1.csv") scoring = scoring1;
- if (document.getElementById("challengeType").value==="Scoringsheet-2.csv") scoring = scoring2;
- }
- function saveResult(){
- var hidden = document.createElement('a');
- hidden.href = 'data:text/csv;charset=utf-8,'+encodeURI(Papa.unparse(resJson));
- hidden.target = '_blank';
- hidden.download = "results.csv";
- hidden.click();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement