// ==UserScript==
// @name Dashboard
// @namespace http://kadauchi.com/
// @version 1.4.7
// @description Modifies the MTurk dashboard.
// @author Kadauchi
// @icon http://kadauchi.com/avatar1.jpg
// @include https://www.mturk.com/mturk/dashboard*
// @grant GM_log
// @require https://code.jquery.com/jquery-3.0.0-beta1.min.js
// @downloadURL none
// ==/UserScript==
TodaysProjectedEarnings();
WorstCase();
Changes();
Yearly();
function TodaysProjectedEarnings(){
var TPEhitLOG = {};
if (localStorage.TPEhitLOG){
var TPEhitLOGstorage = localStorage.TPEhitLOG;
TPEhitLOG = JSON.parse(TPEhitLOGstorage);
}
var today = $("a[href^='/mturk/statusdetail?encodedDate']:contains(Today)").eq(0).prop("href");
var pe = Number(localStorage.TPE_pe) || 0;
var $peTR = $('
');
var $peTD1 = $('');
var $peTD2 = $(' | ');
var $peA = $('');
var $peSPAN = $('');
$("td.metrics-table-first-value:contains(Total Earnings)").parent().after($peTR);
$peTR.append($peTD1.append($peA),$peTD2.append($peSPAN));
$peA.click(function(){
if ($peA.text() === "Today's Projected Earnings"){
var confirmation = confirm("Are you sure you want to recalculate Today's Projected Earnings?");
if (confirmation === true){
localStorage.TPE_date = "restart";
//window.location = "https://www.mturk.com/mturk/dashboard";
localStorage.TPE_date = date;
TPEhitLOG = {}; pe = 0;
getDATA(today);
$peSPAN.text("$0.00");
}
}
});
if (today){
var date = today.split("encodedDate=")[1];
if (date === localStorage.TPE_date){
$peSPAN.text("$"+Number(pe).toFixed(2));
getDATA(localStorage.TPE_lastpage);
}
else {
localStorage.TPE_date = date;
TPEhitLOG = {}; pe = 0;
getDATA(today);
$peSPAN.text("$0.00");
}
}
else {
$peSPAN.text("$0.00");
}
function getDATA(URL){
var page = URL.match(/Number=([0-9]*)/g);
if (page){
$peA.text("Calculating Page "+page.toString().replace(/[^0-9.]/g, ""));
}
else {
$peA.text("Calculating Page 1");
}
$.get(URL, function(data){
var $data = $(data);
var $hits = $data.find("#dailyActivityTable").find("tr[valign='top']");
if ($hits.length){
var url = $data.find("a:contains(Next)").eq(0).prop("href");
for (var i = 0; i < $hits.length; i++){
var req = $hits.eq(i).find("td.statusdetailRequesterColumnValue").text().trim();
var title = $hits.eq(i).find("td.statusdetailTitleColumnValue").text().trim();
var reward = $hits.eq(i).find("td.statusdetailAmountColumnValue").text().trim();
var status = $hits.eq(i).find("td.statusdetailStatusColumnValue").text().trim();
var reqid = $hits.eq(i).find("a").prop("href").split("requesterId=")[1].split("&")[1];
var hitid = $hits.eq(i).find("a").prop("href").split("HIT+")[1];
if (!TPEhitLOG[hitid]){
TPEhitLOG[hitid] = {
req : req,
title : title,
reward : reward,
status : status,
reqid : reqid,
hitid : hitid
};
}
}
if (url){
getDATA(url);
}
else {
pe = 0;
for(var key in TPEhitLOG){
if (TPEhitLOG[key].status !== "Rejected")
pe += parseFloat(TPEhitLOG[key].reward.replace(/[^0-9.]/g, ""));
}
localStorage.TPEhitLOG = JSON.stringify(TPEhitLOG);
localStorage.TPE_lastpage = URL;
localStorage.TPE_pe = pe;
$peA.text("Today's Projected Earnings");
$peSPAN.text("$"+Number(pe).toFixed(2));
}
}
else {
window.setTimeout(getDATA(URL), 2000);
}
});
}
}
function WorstCase(){
var submitted = parseInt($("td.metrics-table-first-value:contains(HITs Submitted)").next().text());
var rejected = parseInt($("td.metrics-table-first-value:contains(... Rejected)").next().text());
var $under99 = $(' ('+Math.round((rejected-((1.0 - 99/100)*submitted))/((1.0 - 99/100)-1))+' ≥ 99%)');
var $under95 = $(' ('+Math.round((rejected-((1.0 - 95/100)*submitted))/((1.0 - 95/100)-1))+' ≥ 95%)');
$("td.metrics-table-first-value:contains(... Pending)").append($under99,$under95);
}
function Changes(){
}
function Yearly(){
var non2016earning = 0;
var totalearnings = parseFloat($("#total_earnings_amount").text().replace(/[^0-9.]/g, ""));
var earnings2016 = 0;
var $reward = $(".reward");
for (var i = 0; i < $reward.length; i++){
if ($reward.eq(i).parent("#yearly_earnings_amount").length){
non2016earning += parseFloat($reward.eq(i).text().replace(/[^0-9.]/g, ""));
}
}
earnings2016 = Number((totalearnings-non2016earning).toFixed(2)).toLocaleString("en");
var $thisyear = $(' |
2016 | $'+earnings2016+' |
');
$("#table_yearly_earnings").find(".metrics-table-header-row").after($thisyear);
}