Advertisement
Guest User

RDM 4 - Medium / script.js

a guest
Feb 14th, 2022
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Simple reference solution to RDM-4 Medium
  2. // Utilizing PapaParse and JQuery
  3. var resJson = [];
  4. var outData;
  5.  
  6. function processTickets(ticketsJson){
  7.     ticketsCount = {};
  8.     for (ticketInd in ticketsJson) {
  9.       ticket = ticketsJson[ticketInd];
  10.       if(ticket === null) continue;
  11.       var author = ticket['Author Username'];
  12.       if(author === '' || author === null || !author) continue;
  13.       console.log(author);
  14.       if (author in ticketsCount) ticketsCount[author]++;
  15.       else ticketsCount[author] = 1;
  16.     }
  17.     var resArr = Object.keys(ticketsCount).map(function(key) {
  18.       return [key, ticketsCount[key]];
  19.     });
  20.     resArr.sort(function(f,s){
  21.       return s[1] - f[1];
  22.     });
  23.     console.log(resArr);
  24.     return resArr;
  25. }
  26.  
  27. function writeTable(results){
  28.     var tbl = $('#resultsTable');
  29.     tbl.css('display','inline-block');
  30.     var n = results.length;
  31.     var header = '<thead id = "results-header">';
  32.     var headerRow = '<tr>'
  33.     headerRow += ('<th>'+"S.No"+'</th>');
  34.     headerRow += ('<th>'+"Author Username"+'</th>');
  35.     headerRow += ('<th>'+"Number of Tickets"+'</th>');
  36.     headerRow += '</tr>';
  37.     header += headerRow;
  38.     header += '</thead>';
  39.     $('#resultsTable').append(header);
  40.     var tbd ='<tbody id = "results-data">';
  41.     for(var i = 0;i<n;++i){
  42.         var row ='<tr>';
  43.         row+='<td>'+(i+1)+'</td>';
  44.         row+='<td>'+results[i][0]+'</td>';
  45.         row+='<td>'+results[i][1]+'</td>';
  46.         row+='</tr>';
  47.         tbd+=row;
  48.     }
  49.     tbd+='</tbody>';
  50.     $('#resultsTable').append(tbd);
  51. }
  52.  
  53. function readFile(){
  54.     var csv = $("#ticketFile").prop('files')[0];
  55.     console.log(csv);
  56.     var inputData;
  57.     resJson=[];
  58.     Papa.parse(csv ,{
  59.      header:true,
  60.       dynamicTyping: false,
  61.       complete: function(results) {
  62.             inputData = results.data;
  63.             outData = processTickets(inputData)
  64.         writeTable(processTickets(inputData));
  65.         for(var i= 0; i< outData.length;i++){
  66.             resJson[i] = {}
  67.             resJson[i]['Author Username'] = outData[i][0];
  68.             resJson[i]['Number of Tickets'] = outData[i][1];
  69.         }      
  70.       }
  71.     });
  72. };
  73.  
  74. function saveResult(){
  75.     var hidden = document.createElement('a');
  76.     hidden.href = 'data:text/csv;charset=utf-8,'+encodeURI(Papa.unparse(resJson));
  77.     hidden.target = '_blank';
  78.     hidden.download = "results.csv";
  79.     hidden.click();
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement