Warning: fopen(/www/sites/update.greasyfork.icu/index/store/temp/d03ce72644dec5725ccb7db8effb4699.js): failed to open stream: No space left on device in /www/sites/update.greasyfork.icu/index/scriptControl.php on line 65
// ==UserScript==
// @name mmmturkeybacon Add Hidden Stats to Dashboard
// @version 2.00
// @description Adds submission, return, and abandonment_rates to the dashboard. Saves stats and only updates them when "Update stats" is clicked to reduce page requests.
// @author mmmturkeybacon
// @namespace http://userscripts.org/users/523367
// @include https://www.mturk.com/mturk/dashboard
// @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js
// @grant GM_getValue
// @grant GM_setValue
// @downloadURL https://update.greasyfork.icu/scripts/3095/mmmturkeybacon%20Add%20Hidden%20Stats%20to%20Dashboard.user.js
// @updateURL https://update.greasyfork.icu/scripts/3095/mmmturkeybacon%20Add%20Hidden%20Stats%20to%20Dashboard.meta.js
// ==/UserScript==
// Thanks to TheFrostlixen for showing me an alternative way to get the stats.
$(document).ready(function()
{
var MPRE_CNT_MAX = 5;
var qualification_dict = {};
qualification_dict['submission_rate'] = {'qualificationId': '00000000000000000000', 'value': GM_getValue('submission_rate', '?%')};
qualification_dict['return_rate'] = {'qualificationId': '000000000000000000E0', 'value': GM_getValue('return_rate', '?%')};
qualification_dict['abandonment_rate'] = {'qualificationId': '00000000000000000070', 'value': GM_getValue('abandonment_rate', '?%')};
var qualification_names = ['submission_rate', 'return_rate', 'abandonment_rate'];
var request_loop_running = false;
var stat_request_running = false;
var success = false;
var mpre_cnt = 0;
var error = false;
function stat_request(qualification_name)
{
stat_request_running = true;
success = false;
$.ajax(
{
url: 'https://www.mturk.com/mturk/requestqualification?qualificationId='+qualification_dict[qualification_name].qualificationId,
type: 'GET',
success: function(data)
{
var $src = $(data);
var maxpagerate = $src.find('td[class="error_title"]:contains("You have exceeded the maximum allowed page request rate for this website.")');
if (maxpagerate.length == 0)
{
qualification_dict[qualification_name].value = $src.find('td[id="qualification_score"]:contains("Qualification Value")').next().text().trim() + '%';
$('td[id="'+qualification_name+'"]').html('✔');
success = true;
}
else
{
$('td[id="'+qualification_name+'"]').html('✖');
mpre_cnt++;
if (mpre_cnt >= MPRE_CNT_MAX)
{
error = true;
alert('mmmturkeybacon Add Hidden Stats to Dashboard: too many max page request rate errors');
}
}
stat_request_running = false;
},
error: function(xhr, status, error)
{
$('td[id="'+qualification_name+'"]').html('✖');
error = true;
alert('mmmturkeybacon Add Hidden Stats to Dashboard: timeout error');
stat_request_running = false;
},
timeout: 3000
});
}
function request_loop(i)
{
request_loop_running = true;
if (error == false)
{
if (stat_request_running == false)
{
if (success == true)
{
i++;
if (i < qualification_names.length)
{
stat_request(qualification_names[i]);
setTimeout(function(){request_loop(i)}, 500);
}
else
{
GM_setValue('submission_rate', qualification_dict['submission_rate'].value);
GM_setValue('return_rate', qualification_dict['return_rate'].value);
GM_setValue('abandonment_rate', qualification_dict['abandonment_rate'].value);
var $submitted_table = $('th[id="hit_totals.desc_dolumn_header.tooltop.1"]').parents('td[width="50%"]');
$('td[id="submission_rate"]').text(qualification_dict['submission_rate'].value);
$('td[id="return_rate"]').text(qualification_dict['return_rate'].value);
$('td[id="abandonment_rate"]').text(qualification_dict['abandonment_rate'].value);
request_loop_running = false;
}
}
else
{
stat_request(qualification_names[i]);
setTimeout(function(){request_loop(i)}, 500);
}
}
}
else
{
request_loop_running = false;
}
}
var $submitted_table = $('th[id="hit_totals.desc_dolumn_header.tooltop.1"]').parents('td[width="50%"]');
$submitted_table.before('HITs Accepted | — | ... Submitted | '+qualification_dict['submission_rate'].value+' | ... Returned | '+qualification_dict['return_rate'].value+' | ... Abandoned | '+qualification_dict['abandonment_rate'].value+' |
| ');
$('a[id="mtb_update_stats"]').bind('click', function()
{
if (request_loop_running == false)
{
request_loop_running = true;
stat_request_running = false;
success = false;
mpre_cnt = 0;
error = false;
$('td[id="submission_rate"]').text('?%');
$('td[id="return_rate"]').text('?%');
$('td[id="abandonment_rate"]').text('?%');
request_loop(0);
}
});
});