Advertisement
SPennLUE

Mturk Dashboard 1.6.11 by Kadauchi

May 4th, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         Mturk Dashboard
  3. // @namespace    http://kadauchi.com/
  4. // @version      1.6.11
  5. // @description  Modifies the MTurk dashboard.
  6. // @author       Kadauchi
  7. // @icon         http://kadauchi.com/avatar1.jpg
  8. // @include      https://www.mturk.com/mturk/dashboard*
  9. // @grant        GM_log
  10. // @grant        GM_setClipboard
  11. // @require      https://code.jquery.com/jquery-3.0.0-beta1.min.js
  12. // ==/UserScript==
  13.  
  14. var LOADED = $("#total_earnings_amount").length;
  15. if (LOADED){
  16.  
  17.     // Functions that can be commented out if you don't want it to run.
  18.     Todays_Projected_Earnings();
  19.     Todays_Bonuses();
  20.     Best_Worst_Case();
  21.     Real_Stats();
  22.     Changes();
  23.     Yearly();
  24.     Goal();
  25.  
  26. }
  27.  
  28. // Don't touch anything below here.
  29. function Todays_Projected_Earnings(){
  30.     var TPEhitLOG = {}; var TPEdetailsLOG = {}; var pe = 0;
  31.  
  32.     var today = $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).prop("href");
  33.  
  34.     var $peTR = $('<div id="TPE_div" class="even" style="display:table-row">');
  35.     var $peTD1 = $('<td class="metrics-table-first-value">');
  36.     var $peTD2 = $('<td>');
  37.     var $peA = $('<a href="javascript:void(0)">Today\'s Projected Earnings</a>');
  38.     var $TPE_details = $('<span style="color: blue; font-size: 10px; cursor: pointer; float: right;">Details<img style="margin-left: 5px;" src="/media/more.gif" border="0/"></span>');
  39.     var $peSPAN = $('<span class="reward">$0.00</span>');
  40.     $("td.metrics-table-first-value:contains(Total Earnings)").parent().after($peTR);
  41.     $peTR.append($peTD1.append($peA,$TPE_details),$peTD2.append($peSPAN));
  42.  
  43.     var $TPED_table = $('<table style="display: none;" width="760" align="center" cellspacing="0" cellpadding="0">');
  44.     var $TPED_tboday = $('<tbody>');
  45.     var $TPED_tr_1 = $('<tr id="TPE_tr"  height="25px"><td width="10" bgcolor="#7fb4cf" style="padding-left: 10px;"></td><td width="100%" bgcolor="#7fb4cf" class="white_text_14_bold">Today\'s Projected Earnings Details&nbsp;&nbsp;<a id="fourmEXPORT" href="javascript:void(0)" class="whatis" >(Forum Export)</a></td><td width="10" align="right" bgcolor="#7fb4cf"></td></tr>');
  46.     var $TPED_tr_2 = $('<tr><td class="container-content" colspan="3"><table class="metrics-table" width="100%"><tbody><tr><td width="100%"><table class="metrics-table" width="100%"><tbody id="tbody2"></tbody></table></td></tr></tbody></table></td></tr>');
  47.     var $TPED_tr_h = $('<tr class="metrics-table-header-row"><th class="metrics-table-first-header">Requester</th><th>Submitted</th><th>Projected</th></tr>');
  48.  
  49.     $("#subtabs_and_searchbar").next().next().after($TPED_table);
  50.     $TPED_table.append($TPED_tboday);
  51.     $TPED_tboday.append($TPED_tr_1,$TPED_tr_2);
  52.     $("#tbody2").append($TPED_tr_h);
  53.  
  54.     $("#fourmEXPORT").click(function(){
  55.         var exportcode = "";
  56.         var bonus = $("#bonus").text();
  57.         if (bonus !== "$0.00"){
  58.             var total = (Number(pe)+Number(bonus.replace(/[^0-9.]/g, ""))).toFixed(2);
  59.             exportcode += "[b]Today's Projected Earnings: $"+Number(pe).toFixed(2)+" + Bonuses: "+bonus+" = $"+total+"[/b]\n";
  60.  
  61.         }
  62.         else {
  63.             exportcode += "[b]Today's Projected Earnings: $"+Number(pe).toFixed(2)+"[/b]\n";
  64.         }
  65.         exportcode += "[spoiler=Today's Projected Earnings Full Details][table][tr][th][b]Requester[/b][/th][th][b]Submitted[/b][/th][th][b]Projected[/b][/th][/tr]";
  66.  
  67.         var x_sorted = Object.keys(TPEdetailsLOG).sort(function(a,b){return TPEdetailsLOG[a].reward - TPEdetailsLOG[b].reward;});
  68.         for (var j = x_sorted.length-1; j > -1; j--){
  69.             var xkey = x_sorted[j];
  70.             var x_req = TPEdetailsLOG[xkey].req;
  71.             var x_reqid = TPEdetailsLOG[xkey].reqid;
  72.             var x_submitted = TPEdetailsLOG[xkey].submit;
  73.             var x_reward = Number(TPEdetailsLOG[xkey].reward).toFixed(2);
  74.             if (x_req === "Bonuses"){
  75.                 if (x_reward !== "0.00"){
  76.                     exportcode += "[tr][td]"+x_req+"[/td][td]"+x_submitted+"[/td][td]$"+x_reward+"[/td][/tr]\n";
  77.                 }
  78.             }
  79.             else {
  80.                 exportcode += "[tr][td][url=https://www.mturk.com/mturk/searchbar?selectedSearchType=hitgroups&requesterId="+x_reqid+"]"+x_req+"[/url][/td][td]"+x_submitted+"[/td][td]$"+x_reward+"[/td][/tr]\n";
  81.             }
  82.         }
  83.         exportcode += "[/table][/spoiler]";
  84.  
  85.         GM_setClipboard(exportcode);
  86.         alert("Forum Export copied to your clipboard.");
  87.     });
  88.  
  89.     $peA.click(function(){
  90.         if ($peA.text() === "Today's Projected Earnings"){
  91.             var confirmation = confirm("Are you sure you want to recalculate Today's Projected Earnings?");
  92.             if (confirmation === true){
  93.                 TPEhitLOG = {}; TPEdetailsLOG = {}; pe = 0;
  94.                 $("#tbody2").find("tr.odd, tr.even").remove();
  95.                 getDATA(today);
  96.                 $peSPAN.text("$0.00");
  97.             }
  98.         }
  99.     });
  100.  
  101.     $TPE_details.click(function(){
  102.         $TPE_details.find("img").attr("src", ($TPE_details.find("img").attr("src") === "/media/more.gif") ? "/media/less.gif" : "/media/more.gif");
  103.         $TPED_table.toggle();
  104.     });
  105.  
  106.     if (today){
  107.         var date = today.split("encodedDate=")[1];
  108.         if (date === localStorage.TPE_date){
  109.             if (localStorage.TPEhitLOG){
  110.                 TPEhitLOG = JSON.parse(localStorage.TPEhitLOG);
  111.             }
  112.             pe = Number(localStorage.TPE_pe) || 0;
  113.             $peSPAN.text("$"+Number(pe).toFixed(2));
  114.             getDATA(localStorage.TPE_lastpage);
  115.         }
  116.         else {
  117.             localStorage.TPE_date = date;
  118.             localStorage.Goal_progress = 0;
  119.             TPEhitLOG = {}; pe = 0;
  120.             $peSPAN.text("$0.00");
  121.             getDATA(today);
  122.         }
  123.     }
  124.  
  125.     function getDATA(URL){
  126.         var page = URL.match(/Number=([0-9]*)/g);
  127.         if (page){
  128.             $peA.text("Calculating Page "+page.toString().replace(/[^0-9.]/g, ""));
  129.         }
  130.         else {
  131.             localStorage.removeItem("TPEhitLOG");
  132.             localStorage.Goal_progress = 0;
  133.             $peA.text("Calculating Page 1");
  134.         }
  135.  
  136.         $.get(URL, function(data){
  137.             var $data = $(data);
  138.             var $hits = $data.find("#dailyActivityTable").find("tr[valign='top']");
  139.             var pagereqerr = $data.find("td.error_title:contains(You have exceeded the maximum allowed page request rate for this website.)").length;
  140.             var noactivity = $data.find("#dailyActivityTable").find("td:contains(You have no HIT activity on this day matching the selected status.)").length;
  141.             if ($hits.length){
  142.                 console.log("hit length");
  143.                 var url = $data.find("a:contains(Next)").eq(0).prop("href");
  144.                 for (var i = 0; i < $hits.length; i++){
  145.                     var req = $hits.eq(i).find("td.statusdetailRequesterColumnValue").text().trim();
  146.                     var title = $hits.eq(i).find("td.statusdetailTitleColumnValue").text().trim();
  147.                     var reward = $hits.eq(i).find("td.statusdetailAmountColumnValue").text().trim();
  148.                     var status = $hits.eq(i).find("td.statusdetailStatusColumnValue").text().trim();
  149.                     var reqid = $hits.eq(i).find("a").prop("href").split("requesterId=")[1].split("&")[0];
  150.                     var hitid = $hits.eq(i).find("a").prop("href").split("HIT+")[1];
  151.  
  152.                     if (!TPEhitLOG[hitid]){
  153.                         TPEhitLOG[hitid] = {
  154.                             req    : req,
  155.                             title  : title,
  156.                             reward : reward,
  157.                             status : status,
  158.                             reqid  : reqid,
  159.                             hitid  : hitid
  160.                         };
  161.                     }
  162.                 }
  163.                 if (url){
  164.                     getDATA(url);
  165.                 }
  166.                 else {
  167.                     pe = 0;
  168.                     for(var key in TPEhitLOG){
  169.                         if (TPEhitLOG[key].status !== "Rejected"){
  170.                             pe += parseFloat(TPEhitLOG[key].reward.replace(/[^0-9.]/g, ""));
  171.                         }
  172.                         if (!TPEdetailsLOG[TPEhitLOG[key].reqid]){
  173.                             TPEdetailsLOG[TPEhitLOG[key].reqid] = {
  174.                                 req    : TPEhitLOG[key].req,
  175.                                 submit : 1,
  176.                                 reward : parseFloat(TPEhitLOG[key].reward.replace(/[^0-9.]/g, "")),
  177.                                 reqid  : TPEhitLOG[key].reqid
  178.                             };
  179.                         }
  180.                         else {
  181.                             TPEdetailsLOG[TPEhitLOG[key].reqid].submit = TPEdetailsLOG[TPEhitLOG[key].reqid].submit + 1;
  182.                             TPEdetailsLOG[TPEhitLOG[key].reqid].reward = TPEdetailsLOG[TPEhitLOG[key].reqid].reward + parseFloat(TPEhitLOG[key].reward.replace(/[^0-9.]/g, ""));
  183.                         }
  184.                     }
  185.  
  186.                     if (!TPEdetailsLOG.bonuses && $("#bonus").length){
  187.                         TPEdetailsLOG.bonuses  = {
  188.                             req    : "Bonuses",
  189.                             submit : "N/A",
  190.                             reward : parseFloat($("#bonus").text().replace(/[^0-9.]/g, "")),
  191.                             reqid  : "N/A"
  192.                         };
  193.                     }
  194.                     else if ($("#bonus").length){
  195.                         TPEdetailsLOG.bonuses.reward = parseFloat($("#bonus").text().replace(/[^0-9.]/g, ""));
  196.                     }
  197.  
  198.                     var d_sorted = Object.keys(TPEdetailsLOG).sort(function(a,b){return TPEdetailsLOG[a].reward - TPEdetailsLOG[b].reward;});
  199.                     var oddeven = true;
  200.                     for (var j = d_sorted.length-1; j > -1; j--){
  201.                         var dkey = d_sorted[j];
  202.                         var d_req = TPEdetailsLOG[dkey].req;
  203.                         var d_submitted = TPEdetailsLOG[dkey].submit;
  204.                         var d_reward = Number(TPEdetailsLOG[dkey].reward).toFixed(2);
  205.                         if (oddeven){
  206.                             oddeven = false;
  207.                             $("#tbody2").append('<tr class="odd"><td class="metrics-table-first-value">'+d_req+'</td><td>'+d_submitted+'</td><td><span class="reward">$'+d_reward+'</span></td></tr>');
  208.                         }
  209.                         else {
  210.                             oddeven = true;
  211.                             $("#tbody2").append('<tr class="even"><td class="metrics-table-first-value">'+d_req+'</td><td>'+d_submitted+'</td><td><span class="reward">$'+d_reward+'</span></td></tr>');
  212.                         }
  213.                     }
  214.                     localStorage.TPEhitLOG = JSON.stringify(TPEhitLOG);
  215.                     localStorage.TPE_lastpage = URL;
  216.                     localStorage.TPE_pe = pe;
  217.                     $peA.text("Today's Projected Earnings");
  218.                     $peSPAN.text("$"+Number(pe).toFixed(2));
  219.                     localStorage.Goal_percent = ((Number(localStorage.TPE_pe)/Number(localStorage.Goal_goal))*100);
  220.                     localStorage.Goal_progress = Number(pe)-Number(localStorage.Goal_goal);
  221.                     if ($("#goalDIV").length){
  222.                         $("#progress").width(Number(localStorage.Goal_percent)+"%");
  223.                         $("#progressper").text(Number(localStorage.Goal_progress).toFixed(2));
  224.                     }
  225.                     Unsynced();
  226.                 }
  227.             }
  228.             else if (noactivity){
  229.                 console.log("no activity");
  230.                 localStorage.TPE_lastpage = URL;
  231.                 localStorage.TPE_pe = 0;
  232.                 localStorage.Goal_progress = 0;
  233.                 $peA.text("Today's Projected Earnings");
  234.                 $peSPAN.text("$0.00");
  235.             }
  236.             else if (pagereqerr) {
  237.                 console.log("set timeout");
  238.                 setTimeout(function(){ getDATA(URL); }, 2000);
  239.             }
  240.         });
  241.     }
  242.  
  243.     function Unsynced(){
  244.         var hitscalced = Object.keys(TPEhitLOG).length;
  245.         var submitted  = Number($("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().text());
  246.  
  247.         if (hitscalced < submitted){
  248.             $peSPAN.css({backgroundColor:"red"});
  249.         }
  250.         else {
  251.             $peSPAN.css({backgroundColor:""});
  252.         }
  253.     }
  254. }
  255.  
  256. function Goal(){
  257.     if (!localStorage.Goal_percent){
  258.         localStorage.Goal_percent = 0;
  259.     }
  260.     if (!localStorage.Goal_progress){
  261.         localStorage.Goal_progress = 0;
  262.     }
  263.     if (!localStorage.Goal_goal){
  264.         localStorage.Goal_goal = 25.00;
  265.     }
  266.     if ($("#bonusDIV").length){
  267.         var $goalDIV0 = $('<div id="goalDIV" class="even" style="display:table-row">');
  268.         $($goalDIV0).append('<td class="metrics-table-first-value"><div id="progressbar" style="width: 100%; height: 7px; border: 1px solid #7fb4cf; border-radius: 3px; overflow: hidden; margin-top: 3px; text-align: center; -webkit-user-select: none; -moz-user-select: none;"><div id="progress" style="height: 100%; background-color: #7fb4cf; -webkit-user-select: none; -moz-user-select: none;"></div></div></td><td><span id="progressper" class="reward">0%</span></td>');
  269.         $("#bonusDIV").after($goalDIV0);
  270.     }
  271.     else {
  272.         var $goalDIV1 = $('<div id="goalDIV" class="odd" style="display:table-row">');
  273.         $($goalDIV1).append('<td class="metrics-table-first-value"><div id="progressbar" style="width: 100%; height: 7px; border: 1px solid #7fb4cf; border-radius: 3px; overflow: hidden; margin-top: 3px; text-align: center; -webkit-user-select: none; -moz-user-select: none;"><div id="progress" style="height: 100%; background-color: #7fb4cf; -webkit-user-select: none; -moz-user-select: none;"></div></div></td><td><span id="progressper" class="reward">0%</span></td>');
  274.         $("#TPE_div").after($goalDIV1);
  275.     }
  276.  
  277.     $("#progress").width(Number(localStorage.Goal_percent)+"%");
  278.     $("#progressper").text(Number(localStorage.Goal_progress).toFixed(2));
  279.  
  280.     $("#progressbar").dblclick(function(e){
  281.         e.preventDefault();
  282.         var goal = prompt("Please enter your goal", localStorage.Goal_goal);
  283.         if (goal !== null) {
  284.             localStorage.Goal_goal = goal.replace(/[^0-9.]/g, "");
  285.             localStorage.Goal_percent = ((Number(localStorage.TPE_pe)/Number(localStorage.Goal_goal))*100);
  286.             localStorage.Goal_progress = Number(localStorage.TPE_pe)-Number(localStorage.Goal_goal);
  287.             $("#progress").width(Number(localStorage.Goal_progress)+"%");
  288.             $("#progressper").text(Number(localStorage.Goal_progress).toFixed(2));
  289.         }
  290.     });
  291. }
  292.  
  293. function Todays_Bonuses(){
  294.     var today = $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).prop("href");
  295.  
  296.     var $bonusDIV = $('<div id="bonusDIV" class="odd" style="display:table-row">');
  297.     $($bonusDIV).append('<td class="metrics-table-first-value"><a href="javascript:void(0)">Today\'s Bonuses</a></td><td><span id="bonus" class="reward">$0.00</span></td>');
  298.     $("#TPE_div").after($bonusDIV);
  299.  
  300.     if (today){
  301.         var date = today.split("encodedDate=")[1];
  302.         if (date === localStorage.TB_date){
  303.             if (!localStorage.today_start_bonuses){
  304.                 localStorage.today_start_bonuses = Number($("#bonus_earnings_amount").text().replace(/[^0-9.]/g, ""));
  305.             }
  306.             Bonuses(localStorage.today_start_bonuses);
  307.         }
  308.         else {
  309.             var today_approved = Number($("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().text());
  310.             if (today_approved === 0){
  311.                 localStorage.today_start_bonuses = (Number($("#bonus_earnings_amount").text().replace(/[^0-9.]/g, ""))-Number($("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().next().next().next().text().replace(/[^0-9.]/g, "")));
  312.             }
  313.             else {
  314.                 localStorage.today_start_bonuses = Number($("#bonus_earnings_amount").text().replace(/[^0-9.]/g, ""));
  315.             }
  316.             localStorage.TB_date = date;
  317.             Bonuses(localStorage.today_start_bonuses);
  318.         }
  319.     }
  320.  
  321.     function Bonuses(starting_bonus){
  322.         var total_bonuses  = $("#bonus_earnings_amount").text().replace(/[^0-9.]/g, "");
  323.         $("#bonus").text("$"+(Math.round((Number(total_bonuses)-Number(starting_bonus))*100)/100).toFixed(2));
  324.     }
  325. }
  326.  
  327. function Real_Stats(){
  328.     var approved = Number($("td.metrics-table-first-value:contains(... Approved)").next().text());
  329.     var rejected = Number($("td.metrics-table-first-value:contains(... Rejected)").next().text());
  330.  
  331.     $("td.metrics-table-first-value:contains(... Approved)").next().next().text(Math.round(((approved)/(approved+rejected))*1000000)/10000+"%");
  332.     $("td.metrics-table-first-value:contains(... Rejected)").next().next().text(Math.round(((rejected)/(approved+rejected))*1000000)/10000+"%");
  333. }
  334.  
  335. function Best_Worst_Case(){
  336.     var submitted = Number($("td.metrics-table-first-value:contains(HITs Submitted)").next().text());
  337.     var rejected  = Number($("td.metrics-table-first-value:contains(... Rejected)").next().text());
  338.  
  339.     var $under99 = $('<span style="color: orange;"> ('+Math.round((rejected-((1.0 - 99/100)*submitted))/((1.0 - 99/100)-1))+' ≥ 99%)</span>');
  340.     var $under95 = $('<span style="color: red;"> ('+Math.round((rejected-((1.0 - 95/100)*submitted))/((1.0 - 95/100)-1))+' ≥ 95%)</span>');
  341.  
  342.     $("td.metrics-table-first-value:contains(... Pending)").append($under99,$under95);
  343.     $("td.metrics-table-first-value:contains(... Pending)").next().next().text(Math.round(((submitted-rejected)/submitted)*1000000)/10000+"%").css({"color": "green"});
  344. }
  345.  
  346. function Changes(){
  347.     var today = $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).prop("href");
  348.  
  349.     if (today){
  350.         var date = today.split("encodedDate=")[1];
  351.         if (date !== localStorage.Changes_date){
  352.             localStorage.Changes_date = date;
  353.             localStorage.today_submitted = 0;
  354.             localStorage.today_approved  = 0;
  355.             localStorage.today_rejected  = 0;
  356.             localStorage.today_pending   = 0;
  357.         }
  358.     }
  359.  
  360.     var earnings_hits     = Number($("#approved_hits_earnings_amount").text().replace(/[^0-9.]/g, ""));
  361.     var earnings_bonuses  = Number($("#bonus_earnings_amount").text().replace(/[^0-9.]/g, ""));
  362.     var earnings_total    = Number($("#total_earnings_amount").text().replace(/[^0-9.]/g, ""));
  363.     var earnings_transfer = Number($("#transfer_earnings").text().replace(/[^0-9.]/g, ""));
  364.     var hits_submitted    = Number($("td.metrics-table-first-value:contains(HITs Submitted)").next().text());
  365.     var hits_approved     = Number($("td.metrics-table-first-value:contains(... Approved)").next().text());
  366.     var hits_rejected     = Number($("td.metrics-table-first-value:contains(... Rejected)").next().text());
  367.     var hits_pending      = Number($("td.metrics-table-first-value:contains(... Pending)").next().text());
  368.     var today_submitted   = Number($("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().text());
  369.     var today_approved    = Number($("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().text());
  370.     var today_rejected    = Number($("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().next().text());
  371.     var today_pending     = Number($("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().next().next().text());
  372.  
  373.     if (Number(localStorage.earnings_hits) !== earnings_hits){
  374.         $("#approved_hits_earnings_amount").prev().append('<span id="earnings_hits" style="float:right;">+$'+(Math.round((earnings_hits-Number(localStorage.earnings_hits))*100)/100).toFixed(2)+'</span>');
  375.         localStorage.earnings_hits = earnings_hits;
  376.     }
  377.     if (Number(localStorage.earnings_bonuses) !== earnings_bonuses){
  378.         $("#bonus_earnings_amount").prev().append('<span id="earnings_bonuses" style="float:right;">+$'+(Math.round((earnings_bonuses-Number(localStorage.earnings_bonuses))*100)/100).toFixed(2)+'</span>');
  379.         localStorage.earnings_bonuses = earnings_bonuses;
  380.     }
  381.     if (Number(localStorage.earnings_total) !== earnings_total){
  382.         $("#total_earnings_amount").prev().append('<span id="earnings_total" style="float:right;">+$'+(Math.round((earnings_total-Number(localStorage.earnings_total))*100)/100).toFixed(2)+'</span>');
  383.         localStorage.earnings_total = earnings_total;
  384.     }
  385.     if (Number(localStorage.earnings_transfer) !== earnings_transfer){
  386.         if (Number(localStorage.earnings_transfer) > earnings_transfer){
  387.             $("#transfer_earnings").prev().append('<span id="earnings_transfer" style="float:right;">-$'+(Math.round((Number(localStorage.earnings_transfer)-earnings_transfer)*100)/100).toFixed(2)+'</span>');
  388.         }
  389.         else {
  390.             $("#transfer_earnings").prev().append('<span id="earnings_transfer" style="float:right;">+$'+(Math.round((earnings_transfer-Number(localStorage.earnings_transfer))*100)/100).toFixed(2)+'</span>');
  391.         }
  392.         localStorage.earnings_transfer = earnings_transfer;
  393.     }
  394.     if (Number(localStorage.hits_submitted) !== hits_submitted){
  395.         $("td.metrics-table-first-value:contains(HITs Submitted)").append('<span id="hits_submitted" style="float:right;">+'+(hits_submitted-Number(localStorage.hits_submitted))+'</span>');
  396.         localStorage.hits_submitted = hits_submitted;
  397.     }
  398.     if (Number(localStorage.hits_approved) !== hits_approved){
  399.         $("td.metrics-table-first-value:contains(... Approved)").append('<span id="hits_approved" style="float:right;">+'+(hits_approved-Number(localStorage.hits_approved))+'</span>');
  400.         localStorage.hits_approved = hits_approved;
  401.     }
  402.     if (Number(localStorage.hits_rejected) !== hits_rejected){
  403.         $("td.metrics-table-first-value:contains(... Rejected)").append('<span id="hits_rejected" style="float:right;">+'+(hits_rejected-Number(localStorage.hits_rejected))+'</span>');
  404.         localStorage.hits_rejected = hits_rejected;
  405.     }
  406.     if (Number(localStorage.hits_pending) !== hits_pending){
  407.         if (Number(localStorage.hits_pending) > hits_pending){
  408.             $("td.metrics-table-first-value:contains(... Pending)").append('<span id="hits_pending" style="float:right;">-'+(Number(localStorage.hits_pending)-hits_pending)+'</span>');
  409.         }
  410.         else {
  411.             $("td.metrics-table-first-value:contains(... Pending)").append('<span id="hits_pending" style="float:right;">+'+(hits_pending-Number(localStorage.hits_pending))+'</span>');
  412.         }
  413.         localStorage.hits_pending = hits_pending;
  414.     }
  415.     if (Number(localStorage.today_submitted) !== today_submitted){
  416.         $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().append('<span id="today_submitted" style="float:left;">+'+(today_submitted-Number(localStorage.today_submitted))+'</span>');
  417.         localStorage.today_submitted = today_submitted;
  418.     }
  419.     if (Number(localStorage.today_approved) !== today_approved){
  420.         $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().append('<span id="today_approved" style="float:left;">+'+(today_approved-Number(localStorage.today_approved))+'</span>');
  421.         localStorage.today_approved = today_approved;
  422.     }
  423.     if (Number(localStorage.today_rejected) !== today_rejected){
  424.         $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().next().append('<span id="today_rejected" style="float:left;">+'+(today_rejected-Number(localStorage.today_rejected))+'</span>');
  425.         localStorage.today_rejected = today_rejected;
  426.     }
  427.     if (Number(localStorage.today_pending) !== today_pending){
  428.         if (Number(localStorage.today_pending) > today_pending){
  429.             $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().next().next().append('<span id="today_pending" style="float:left;">-'+(Number(localStorage.today_pending)-today_pending)+'</span>');
  430.         }
  431.         else {
  432.             $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).parent().next().next().next().next().append('<span id="today_pending" style="float:left;">+'+(today_pending-Number(localStorage.today_pending))+'</span>');
  433.         }
  434.         localStorage.today_pending = today_pending;
  435.     }
  436. }
  437.  
  438. function Yearly(){
  439.     var totalearnings = Number($("#total_earnings_amount").text().replace(/[^0-9.]/g, ""));
  440.     var $reward = $("#table_yearly_earnings").find("span.reward");
  441.  
  442.     for (var i = 0; i < $reward.length; i++){
  443.         totalearnings -= Number($reward.eq(i).text().replace(/[^0-9.]/g, ""));
  444.     }
  445.  
  446.     var earnings2016 = Number((totalearnings).toFixed(2)).toLocaleString("en");
  447.  
  448.     var $thisyear = $('<tr class="odd"><td class="metrics-table-first-value">2016</td><td id="yearly_earnings_amount"><span class="reward">$'+earnings2016+'</span></td></tr>');
  449.     $("#table_yearly_earnings").find("tr.metrics-table-header-row").after($thisyear);
  450. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement