您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds submission, return, and abandonment_rates to the dashboard. Saves stats and only updates them when "Update stats" is clicked to reduce page requests.
- // ==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
- // ==/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('<td width="50%"><table class="metrics-table" width="100%" style="display: inline-block"><tr class="metrics-table-header-row"><th class="metrics-table-first-header"><a id="hit_totals.desc_dolumn_header.tooltop.2" class="metrics-table-first-header">HITs You Have Accepted</a> <a id="mtb_update_stats" class="whatis" style="display: inline-block; cursor: pointer">(Update stats)</a></th><th id="user_metrics.rate_column_header.tooltip.2">Rate</th><tr class="odd"><td class="metrics-table-first-value">HITs Accepted</td><td>—</td></tr><tr class="even"><td class="metrics-table-first-value">... Submitted</td><td id="submission_rate">'+qualification_dict['submission_rate'].value+'</td></tr><tr class="odd"><td class="metrics-table-first-value">... Returned</td><td id="return_rate">'+qualification_dict['return_rate'].value+'</td></tr><tr class="even"><td class="metrics-table-first-value">... Abandoned</td><td id="abandonment_rate">'+qualification_dict['abandonment_rate'].value+'</td></tr></table></td>');
- $('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);
- }
- });
- });