您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Shows changes since last page load for 12 values in Earnings To Date, Your HIT Status for Today, and HITs You Have Submitted.
当前为
- // ==UserScript==
- // @name MTurk Dashboard Change Notifier (with 12-value mod)
- // @namespace clickhappier
- // @author clickhappier + ThirdClassInternationalMasterTurker
- // @description Shows changes since last page load for 12 values in Earnings To Date, Your HIT Status for Today, and HITs You Have Submitted.
- // @include https://www.mturk.com/mturk/dashboard
- // @version 2.1c
- // @grant none
- // ==/UserScript==
- // 2014-07-14 2.1c - Improved Today-change handling for negative value changes in Rejected/Pending, and fractional bonus handling, by clickhappier.
- // 2014-07-04 2.0c - Modified extensively by clickhappier to add tracking a lot more values. Also cleaned up some oddly-written parts.
- // Previously tracked 4 values:
- // Total Earnings section: Approved dollars, Bonuses dollars, Total dollars.
- // Your HIT Status section: Today's Submitted.
- // Now tracks 12 values:
- // Total Earnings section: Approved dollars, Bonuses dollars, Total dollars, Earnings Available for Transfer dollars.
- // Your HIT Status section: Today's Submitted, Today's Approved, Today's Rejected, Today's Pending.
- // HITs You Have Submitted section: HITs Submitted, ... Approved, ... Rejected, ... Pending.
- // 2012-09-09 First public release by ThirdClassInternationalMasterTurker
- // 2012-09-20 1.0 First vorking version
- // 2012-12-02 1.1 Added @downloadURL and @updateURL
- // replacement for inconsistently-rounding built-in toFixed function, from stackoverflow, for better fractional bonus handling
- function toFixed ( number, precision ) {
- var multiplier = Math.pow( 10, precision + 1 ),
- wholeNumber = Math.floor( number * multiplier );
- return Math.round( wholeNumber / 10 ) * 10 / multiplier;
- }
- // TCIMT's calling of toFixed plus comma removal
- function to_fixed(str) {
- str = str.slice(1).replace(',', '');
- return parseFloat(str).toFixed(2);
- }
- var rows = document.evaluate('//tr[@class]',
- document,
- null,
- XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
- // initial definitions of variables from localStorage items
- // Total Earnings section
- if (localStorage['prev_approvedDollars'] === undefined)
- prev_approvedDollars = "$0";
- else
- prev_approvedDollars = localStorage.getItem('prev_approvedDollars');
- if (localStorage['prev_bonusesDollars'] === undefined)
- prev_bonusesDollars = "$0";
- else
- prev_bonusesDollars = localStorage.getItem('prev_bonusesDollars');
- if (localStorage['prev_totalDollars'] === undefined)
- prev_totalDollars = "$0";
- else
- prev_totalDollars = localStorage.getItem('prev_totalDollars');
- if (localStorage['prev_transferDollars'] === undefined)
- prev_transferDollars = "$0";
- else
- prev_transferDollars = localStorage.getItem('prev_transferDollars');
- // Your HIT Status section
- if (localStorage['prev_submittedToday'] === undefined)
- prev_submittedToday = 0;
- else
- prev_submittedToday = parseInt(localStorage.getItem('prev_submittedToday'));
- if (localStorage['prev_approvedToday'] === undefined)
- prev_approvedToday = 0;
- else
- prev_approvedToday = parseInt(localStorage.getItem('prev_approvedToday'));
- if (localStorage['prev_rejectedToday'] === undefined)
- prev_rejectedToday = 0;
- else
- prev_rejectedToday = parseInt(localStorage.getItem('prev_rejectedToday'));
- if (localStorage['prev_pendingToday'] === undefined)
- prev_pendingToday = 0;
- else
- prev_pendingToday = parseInt(localStorage.getItem('prev_pendingToday'));
- // HITs You Have Submitted section
- if (localStorage['prev_submittedHITs'] === undefined)
- prev_submittedHITs = 0;
- else
- prev_submittedHITs = parseInt(localStorage.getItem('prev_submittedHITs'));
- if (localStorage['prev_approvedHITs'] === undefined)
- prev_approvedHITs = 0;
- else
- prev_approvedHITs = parseInt(localStorage.getItem('prev_approvedHITs'));
- if (localStorage['prev_rejectedHITs'] === undefined)
- prev_rejectedHITs = 0;
- else
- prev_rejectedHITs = parseInt(localStorage.getItem('prev_rejectedHITs'));
- if (localStorage['prev_pendingHITs'] === undefined)
- prev_pendingHITs = 0;
- else
- prev_pendingHITs = parseInt(localStorage.getItem('prev_pendingHITs'));
- // perform comparisons and update localStorage items
- for (var i=0; i<rows.snapshotLength; i++) {
- var row = rows.snapshotItem(i);
- // Total Earnings section
- if (row.cells.length == 2) {
- if (row.cells[0].textContent.match('Approved HITs'))
- {
- var new_approvedDollars = row.cells[1].childNodes[0].textContent;
- if (new_approvedDollars != prev_approvedDollars)
- {
- row.cells[0].innerHTML += "<span style=\"color:grey;float:right;\">+$" + (to_fixed(new_approvedDollars) - to_fixed(prev_approvedDollars)).toFixed(2) + "</span>";
- }
- localStorage.setItem('prev_approvedDollars', new_approvedDollars);
- }
- if (row.cells[0].textContent.match('Bonuses'))
- {
- var new_bonusesDollars = row.cells[1].childNodes[0].textContent;
- if (new_bonusesDollars != prev_bonusesDollars)
- {
- row.cells[0].innerHTML += "<span style=\"color:grey;float:right;\">+$" + (to_fixed(new_bonusesDollars) - to_fixed(prev_bonusesDollars)).toFixed(2) + "</span>";
- }
- localStorage.setItem('prev_bonusesDollars', new_bonusesDollars);
- }
- if (row.cells[0].textContent.match('Total Earnings'))
- {
- var new_totalDollars = row.cells[1].childNodes[0].textContent;
- if (new_totalDollars != prev_totalDollars)
- {
- row.cells[0].innerHTML += "<span style=\"color:grey;float:right;\">+$" + (to_fixed(new_totalDollars) - to_fixed(prev_totalDollars)).toFixed(2) + "</span>";
- }
- localStorage.setItem('prev_totalDollars', new_totalDollars);
- }
- if (row.cells[0].textContent.match('Earnings Available for Transfer'))
- {
- var new_transferDollars = row.cells[1].childNodes[0].textContent;
- if (new_transferDollars > prev_transferDollars)
- {
- row.cells[0].innerHTML += "<span style=\"color:grey;float:right;\">+$" + (to_fixed(new_transferDollars) - to_fixed(prev_transferDollars)).toFixed(2) + "</span>";
- }
- else if (new_transferDollars < prev_transferDollars)
- {
- row.cells[0].innerHTML += "<span style=\"color:grey;float:right;\">$" + (to_fixed(new_transferDollars) - to_fixed(prev_transferDollars)).toFixed(2) + "</span>";
- }
- localStorage.setItem('prev_transferDollars', new_transferDollars);
- }
- }
- // Your HIT Status section
- if (row.cells.length == 6) {
- if (row.cells[0].textContent.match('Today'))
- {
- var new_submittedToday = parseInt(row.cells[1].textContent);
- if (new_submittedToday > prev_submittedToday)
- {
- row.cells[1].innerHTML = "<span style=\"color:grey;float:left;\">+" + (new_submittedToday - prev_submittedToday) + "</span>" + row.cells[1].innerHTML;
- }
- localStorage.setItem('prev_submittedToday', new_submittedToday);
- }
- if (row.cells[0].textContent.match('Today'))
- {
- var new_approvedToday = parseInt(row.cells[2].textContent);
- if (new_approvedToday > prev_approvedToday)
- {
- row.cells[2].innerHTML = "<span style=\"color:grey;float:left;\">+" + (new_approvedToday - prev_approvedToday) + "</span>" + row.cells[2].innerHTML;
- }
- localStorage.setItem('prev_approvedToday', new_approvedToday);
- }
- if (row.cells[0].textContent.match('Today'))
- {
- var new_rejectedToday = parseInt(row.cells[3].textContent);
- if (new_rejectedToday > prev_rejectedToday)
- {
- row.cells[4].innerHTML = "<span style=\"color:grey;float:left;\">+" + (new_rejectedToday - prev_rejectedToday) + "</span>" + row.cells[4].innerHTML;
- }
- else if (new_submittedToday < prev_submittedToday)
- {
- // don't display negative value change if rejected amount went down only because the 'Today' date changed
- }
- else if (new_rejectedToday < prev_rejectedToday)
- {
- row.cells[4].innerHTML = "<span style=\"color:grey;float:left;\">" + (new_rejectedToday - prev_rejectedToday) + "</span>" + row.cells[4].innerHTML;
- }
- localStorage.setItem('prev_rejectedToday', new_rejectedToday);
- }
- if (row.cells[0].textContent.match('Today'))
- {
- var new_pendingToday = parseInt(row.cells[4].textContent);
- if (new_pendingToday > prev_pendingToday)
- {
- row.cells[4].innerHTML = "<span style=\"color:grey;float:left;\">+" + (new_pendingToday - prev_pendingToday) + "</span>" + row.cells[4].innerHTML;
- }
- else if (new_submittedToday < prev_submittedToday)
- {
- // don't display negative value change if pending amount went down only because the 'Today' date changed
- }
- else if (new_pendingToday < prev_pendingToday)
- {
- row.cells[4].innerHTML = "<span style=\"color:grey;float:left;\">" + (new_pendingToday - prev_pendingToday) + "</span>" + row.cells[4].innerHTML;
- }
- localStorage.setItem('prev_pendingToday', new_pendingToday);
- }
- }
- // HITs You Have Submitted section
- if (row.cells.length == 3) {
- if (row.cells[0].textContent.match('HITs Submitted'))
- {
- var new_submittedHITs = row.cells[1].childNodes[0].textContent;
- if (new_submittedHITs > prev_submittedHITs)
- {
- row.cells[0].innerHTML += "<span style=\"color:grey;float:right;\">+" + (new_submittedHITs - prev_submittedHITs) + "</span>";
- }
- localStorage.setItem('prev_submittedHITs', new_submittedHITs);
- }
- if (row.cells[0].textContent.match('... Approved'))
- {
- var new_approvedHITs = row.cells[1].childNodes[0].textContent;
- if (new_approvedHITs > prev_approvedHITs)
- {
- row.cells[0].innerHTML += "<span style=\"color:grey;float:right;\">+" + (new_approvedHITs - prev_approvedHITs) + "</span>";
- }
- localStorage.setItem('prev_approvedHITs', new_approvedHITs);
- }
- if (row.cells[0].textContent.match('... Rejected'))
- {
- var new_rejectedHITs = row.cells[1].childNodes[0].textContent;
- if (new_rejectedHITs > prev_rejectedHITs)
- {
- row.cells[0].innerHTML += "<span style=\"color:grey;float:right;\">+" + (new_rejectedHITs - prev_rejectedHITs) + "</span>";
- }
- else if (new_rejectedHITs < prev_rejectedHITs)
- {
- row.cells[0].innerHTML += "<span style=\"color:grey;float:right;\">" + (new_rejectedHITs - prev_rejectedHITs) + "</span>";
- }
- localStorage.setItem('prev_rejectedHITs', new_rejectedHITs);
- }
- if (row.cells[0].textContent.match('... Pending'))
- {
- var new_pendingHITs = row.cells[1].childNodes[0].textContent;
- if (new_pendingHITs > prev_pendingHITs)
- {
- row.cells[0].innerHTML += "<span style=\"color:grey;float:right;\">+" + (new_pendingHITs - prev_pendingHITs) + "</span>";
- }
- else if (new_pendingHITs < prev_pendingHITs)
- {
- row.cells[0].innerHTML += "<span style=\"color:grey;float:right;\">" + (new_pendingHITs - prev_pendingHITs) + "</span>";
- }
- localStorage.setItem('prev_pendingHITs', new_pendingHITs);
- }
- }
- }