Advertisement
PikMike

Untitled

Dec 7th, 2016
387
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         CF Rating Table
  3. // @namespace    http://codeforces.com/
  4. // @version      0.1
  5. // @description  try to take over the world!
  6. // @author       PikMike
  7. // @match        http://codeforces.com/group/*/customrating/*
  8. // @grant        none
  9. // ==/UserScript==
  10.  
  11. (function() {
  12.     'use strict';
  13.  
  14.     function comp(a, b) {
  15.         if (a[0] < b[0]) {
  16.             return -1;
  17.         }
  18.         if (a[0] > b[0]) {
  19.             return 1;
  20.         }
  21.         return 0;
  22.     }
  23.  
  24.     function calcRating(state){
  25.         var cnt = 0;
  26.         var sum = 0.0;
  27.         for (var i = 4; i < state.children.length; i++){
  28.             var text = state.children[i].innerHTML;
  29.             if (text.indexOf('/') == -1){
  30.                 if (text.indexOf('-') != -1)
  31.                     continue;
  32.                 cnt += 1;
  33.                 sum += parseFloat(text.replace(',', '.'));
  34.             }
  35.             else{
  36.                 text = text.split('/');
  37.                 if (text[0].indexOf('-') != -1)
  38.                     continue;
  39.                 cnt += 1;
  40.                 sum += parseFloat(text[0].replace(',', '.'));
  41.                 text = state.children[i].children[0].innerHTML;
  42.                 sum += parseFloat(text.replace(',', '.'));
  43.             }
  44.         }
  45.         state.children[2].innerHTML = cnt.toString();
  46.         state.children[3].innerHTML = (cnt === 0 ? 0.0 : sum / cnt).toFixed(2).toString();
  47.         return (cnt === 0 ? 0.0 : sum / cnt);
  48.     }
  49.  
  50.     var panel = document.getElementsByClassName("datatable")[0];
  51.     var panel2 = panel.children[panel.children.length - 1];
  52.     var tableFull = panel2.children[panel2.children.length - 1];
  53.     var table = tableFull.children[tableFull.children.length - 1];
  54.  
  55.     var ar = [];
  56.  
  57.     for (var i = 0; i < table.children.length; i++)
  58.         ar.push([calcRating(table.children[i]), i]);
  59.  
  60.     ar.sort(comp);
  61.  
  62.     var newTable = document.createElement("tbody");
  63.     for (var i = ar.length - 1; i >= 0; i--){
  64.         var tmp = table.children[ar[i][1]].cloneNode(true);
  65.         tmp.children[0].innerHTML = (ar.length - i).toString();
  66.         newTable.appendChild(tmp);
  67.     }
  68.  
  69.     tableFull.removeChild(table);
  70.     tableFull.appendChild(newTable);
  71. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement