您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a more precise/accurate/honest display of your approved/rejected percentages and stats qual values to the MTurk dashboard.
当前为
- // ==UserScript==
- // @name CH Precise Percents
- // @author clickhappier
- // @namespace clickhappier
- // @description Adds a more precise/accurate/honest display of your approved/rejected percentages and stats qual values to the MTurk dashboard.
- // @include https://www.mturk.com/mturk/dashboard*
- // @version 1.0c
- // @require https://cdnjs.cloudflare.com/ajax/libs/bignumber.js/2.0.3/bignumber.min.js
- // @grant none
- // ==/UserScript==
- // based on 'MTurk Dashboard Change Notifier (with 12-value mod)': https://greasyfork.org/en/scripts/3019-mturk-dashboard-change-notifier-with-12-value-mod
- // https://github.com/MikeMcl/bignumber.js/blob/master/README.md , http://mikemcl.github.io/bignumber.js/
- // - BigNumber math library used to avoid all the wrongness of javascript's built-in math functions
- BigNumber.config({ DECIMAL_PLACES : 50, ERRORS : false});
- var approvedHITs = new BigNumber(0);
- var rejectedHITs = new BigNumber(0);
- var approvedPercent = new BigNumber(0);
- var rejectedPercent = new BigNumber(0);
- var approvedQual = new BigNumber(0);
- var rejectedQual = new BigNumber(0);
- var approvedPctSpacer = "";
- var rejectedPctSpacer = "";
- // TCIMT's xpath query getting all table rows that have a 'class' attribute specified
- var rows = document.evaluate('//tr[@class]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
- // retrieve approved and rejected HITs numbers
- for (var i=0; i<rows.snapshotLength; i++)
- {
- var row = rows.snapshotItem(i);
- // HITs You Have Submitted section
- if (row.cells.length == 3) // table rows with three columns
- {
- if (row.cells[0].textContent.match('... Approved'))
- {
- approvedHITs = BigNumber( parseFloat(row.cells[1].childNodes[0].textContent) );
- }
- if (row.cells[0].textContent.match('... Rejected'))
- {
- rejectedHITs = BigNumber( parseFloat(row.cells[1].childNodes[0].textContent) );
- }
- }
- }
- // perform calculations
- // approved percent
- if ( !(approvedHITs.equals(0)) || !(rejectedHITs.equals(0)) ) // if at least 1 HIT has been approved or rejected
- { approvedPercent = approvedHITs.dividedBy( approvedHITs.plus(rejectedHITs) ); }
- else // if 0 HITs approved+rejected (very new user)
- { approvedPercent = BigNumber(1); } // then 100% approved
- approvedPercent = BigNumber( approvedPercent.times(100).toFixed(10) ); // x% value rather than 0.x
- // approved % qual value
- if ( approvedHITs.plus(rejectedHITs).lessThan(100) ) // MTurk API doc says "if a Worker has submitted less than 100 assignments, the Worker's approval rate in the system is 100%."
- { approvedQual = BigNumber(100); }
- else
- { approvedQual = approvedPercent.truncated(); }
- // output spacer length for alignment
- if ( approvedPercent.lessThan(10) )
- { approvedPctSpacer = " "; } // for single-integer-digit values
- else
- { approvedPctSpacer = " "; }
- // rejected percent
- rejectedPercent = BigNumber(100).minus(approvedPercent);
- rejectedPercent = BigNumber( rejectedPercent.toFixed(10) );
- // rejected % qual value
- rejectedQual = rejectedPercent.truncated();
- // output spacer length for alignment
- if ( rejectedPercent.lessThan(10) )
- { rejectedPctSpacer = " "; } // for single-integer-digit values
- else
- { rejectedPctSpacer = " "; }
- // display results
- for (var i=0; i<rows.snapshotLength; i++)
- {
- var row = rows.snapshotItem(i);
- // HITs You Have Submitted section
- if (row.cells.length == 3) // table rows with three columns
- {
- if (row.cells[0].textContent.match('... Approved'))
- {
- row.cells[0].innerHTML += '<br><span style="color:grey;" title="Your HIT approval rate with up to 10 decimal places for better precision/accuracy, rather than being rounded to 1 decimal place.">' + approvedPctSpacer + '(' + approvedPercent + '%)</span>';
- row.cells[2].innerHTML += '<br><span style="color:grey;" title="Your actual \'HIT approval rate (%)\' stats qual value is truncated (always rounded down) from the un-rounded percent value. While you have fewer than 100 HITs (unclear whether that\'s approved or approved+rejected), this qual value apparently is always 100 (%). After that, it\'s never really 100% if you have even 1 rejection.">(qual: ' + approvedQual + ')</span>';
- }
- if (row.cells[0].textContent.match('... Rejected'))
- {
- row.cells[0].innerHTML += '<br><span style="color:grey;" title="Your HIT rejection rate with up to 10 decimal places for better precision/accuracy, rather than being rounded to 1 decimal place.">' + rejectedPctSpacer + '(' + rejectedPercent + '%)</span>';
- row.cells[2].innerHTML += '<br><span style="color:grey;" title="Your actual \'HIT rejection rate (%)\' stats qual value is truncated (always rounded down) from the un-rounded percent value.">(qual: ' + rejectedQual + ')</span>';
- }
- }
- }