indexeddb tests
by billybraga
HTML
<button id="get">get</button>
<button id="fill">fill</button>
<button id="getc">get count</button>
<button id="del">del</button>
<input id="in" />
<div id="note">
</div>
JavaScript
window.db;
var data = [];
var filter = document.getElementById("in");
var note = document.getElementById("note");
var getItem = document.getElementById("get");
var fillBtn = document.getElementById("fill");
var getCount = document.getElementById("getc");
var delBtn = document.getElementById("del");
var logger = {
set log (txt) {
logger.logItem(txt);
},
logItem: function (txt) {
var li = document.createElement("li");
li.textContent = txt;
note.insertBefore(li, note.childNodes[0]);
return li;
}
};
delBtn.onclick = function () {
data = [];
}
function filterItems (data) {
var start = new Date();
var r = _filter(data);
logger.log = "filter " + data.length + " items to " + r.length + " in " + (new Date().valueOf() - start.valueOf()) + " ms";
return r;
};
getCount.onclick = function () {
if (data.length > 0) {
var d = filterItems(data);
logger.log = d.length + " items";
return;
}
var start = new Date();
getItems("t3", function(r) {
data = r;
var d = filterItems(r);
logger.log = d.length + " items in " + (new Date().valueOf() - start.valueOf()) + " ms";
});
}
function _filter (data) {
if (filter.value) {
var reg = new RegExp(filter.value);
return data.filter(function(item) {
return reg.test(item.row.cells.cell0);
});
} else {
return data;
}
}
fillBtn.onclick = function () {
var tr = trans();
tr.oncomplete = function () {
logger.log = "done adding";
};
for (var i = 0; i < 16000; i++) {
var row = { cells: {} };
for (var j = 0; j < 50; j++) {
row.cells["cell" + j] = "row" + i + "-cell" + j;
}
addItem("t3", "r" + i, row, tr, null, function() { logger.log = "er"; });
}
}
getItem.onclick = function () {
getItems(IDBKeyRange.bound(filter.value, filter2.value), function(r) {
logger.log = JSON.stringify(r);
});
};
function getItems (table, callback) {
// open a read/write db transaction, ready for retrieving the data
var start = new Date();
var li =...