MTurk HIT DataBase Patch v1

Removes current day's hits from the DB to prepare it for the new update

Per 03-06-2015. Zie de nieuwste versie.

// ==UserScript==
// @name        MTurk HIT DataBase Patch v1
// @namespace https://greasyfork.org/users/710
// @description Removes current day's hits from the DB to prepare it for the new update
// @include     https://www.mturk.com/mturk/dashboard
// @version     6
// @grant       none
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
// ==/UserScript==

var HITStorage = {};
var indexedDB = window.indexedDB || window.webkitIndexedDB ||
    window.mozIndexedDB;
window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.mozIDBTransaction;
window.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange || window.mozIDBKeyRange;
HITStorage.IDBTransactionModes = { "READ_ONLY": "readonly", "READ_WRITE": "readwrite", "VERSION_CHANGE": "versionchange" };
var IDBKeyRange = window.IDBKeyRange;

HITStorage.indexedDB = {};
HITStorage.indexedDB = {};
HITStorage.indexedDB.db = null;

HITStorage.indexedDB.onerror = function(e) {
    console.log(e);
};
var v = 4;
var dates = {};

if (confirm("This will delete all hits done from your DB for 2015-06-02."))
{
    var request = indexedDB.open("HITDB", 4);
    request.onsuccess = function(e) {
        HITStorage.indexedDB.db = e.target.result;
        var db = HITStorage.indexedDB.db;
        var trans = db.transaction(["HIT"], HITStorage.IDBTransactionModes.READ_WRITE);
        var store = trans.objectStore("HIT");
        range = IDBKeyRange.bound("2015-04-19", "2015-06-02", false, false);
        range2 = IDBKeyRange.bound("1900-01-01","2015-04-19", false, false);

        store.index('date').openCursor(range).onsuccess = function(event) {
            var cursor = event.target.result;
            //console.log(cursor.value);
            if (cursor)
            {
                if (cursor.value.hitId.indexOf("?") > -1)
                {
                    //console.log(cursor.value);
                    if (dates[cursor.value.date])
                    {
                        approved = (cursor.value.status == "Paid" ? 0 : 1);
                        pending = (cursor.value.status == "Pending" || cursor.value.status == "Approved - Pending Payment" ? 0 : 1);
                        rejected = (cursor.value.status == "Rejected" ? 0 : 1);
                        earnings = cursor.value.reward;
                        dates[cursor.value.date]["approved"] += approved;
                        dates[cursor.value.date]["pending"] += pending;
                        dates[cursor.value.date]["rejected"] += rejected;
                        dates[cursor.value.date]["earnings"] += earnings;
                        dates[cursor.value.date]["submitted"] += 1;
                    }
                    else
                    {
                        approved = (cursor.value.status == "Paid" ? 0 : 1);
                        pending = (cursor.value.status == "Pending" || cursor.value.status == "Approved - Pending Payment" ? 0 : 1);
                        rejected = (cursor.value.status == "Rejected" ? 0 : 1);
                        earnings = cursor.value.reward;
                        dates[cursor.value.date] = {"approved": approved,
                                                    "pending": pending,
                                                    "rejected": rejected,
                                                    "earnings": earnings,
                                                    "submitted": 1
                                                   };
                    }
                    //cursor.delete();
                }
                cursor.continue();
            }
            else
            {
                db.close();
            }
        };
    }
    console.log(dates);
    request = indexedDB.open("HITDB", 4);
    request.onsuccess = function(e) {
        HITStorage.indexedDB.db = e.target.result;
        var db = HITStorage.indexedDB.db;
        var trans = db.transaction(["HIT"], HITStorage.IDBTransactionModes.READ_WRITE);
        var store = trans.objectStore("HIT");
        trans = db.transaction(["STATS"], HITStorage.IDBTransactionModes.READ_WRITE);
        store = trans.objectStore("STATS");

        console.log("Second");
        store.openCursor(range).onsuccess = function(event) {
            var cursor = event.target.result;
            if (cursor)
            {
                if (dates[cursor.value.date])
                {
                    console.log(cursor.value);
                    var i = cursor.value;
                    i.approved -= dates[cursor.value.date]["approved"];
                    i.pending -= dates[cursor.value.date]["pending"];
                    i.rejected -= dates[cursor.value.date]["rejected"];
                    i.earnings -= dates[cursor.value.date]["earnings"];
                    i.submitted -= dates[cursor.value.date]["submitted"];
                    //cursor.update(i);
                }
                cursor.continue();
            }
            else
            {
                db.close();
            }
        };
    }
}