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 =...