<script type="text/javascript">
if (!window.indexedDB) { alert("Your browser doesn't support a stable version of IndexedDB.");}
var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
var dataBase = null;
function startDB() {
dataBase = indexedDB.open("object", 1);
dataBase.onupgradeneeded = function (e) {
var active = e.target.result;
var object = active.createObjectStore('people', { keyPath : 'id', autoIncrement : true }); object.createIndex('by_name', 'name', { unique : false }); object.createIndex('by_dni', 'dni', { unique : true});
};
dataBase.onsuccess = function (e) { alert('Database loaded'); loadAll();
};
dataBase.onerror = function (e) { alert('Error loading database'); };
}
function add() {
var active = dataBase.result;
var data = active.transaction(["people"], "readwrite");
var object = data.objectStore("people");
var request = object.put({ dni : document.querySelector("#dni").value, name : document.querySelector("#name").value.toLowerCase(), surname : document.querySelector("#surname").value });
request.onerror = function (e) { alert(request.error.name + '\n\n' + request.error.message);
};
data.oncomplete = function (e) { document.querySelector('#dni').value = ''; document.querySelector('#name').value = ''; document.querySelector('#surname').value = ''; alert('Object successfully added'); loadAll();
};
}
function load(id) {
var active = dataBase.result;
var data = active.transaction(["people"], "readonly");
var object = data.objectStore("people");
var request = object.get(parseInt(id));
request.onsuccess = function () {
var result = request.result;
if (result !== undefined) { alert("ID: " + result.id + "\n\ DNI: " + result.dni + "\n\
Name: " + result.name + "\n\
Surname: " + result.surname);
}
};
}
function loadByDni(dni) {
var active = dataBase.result;
var data = active.transaction(["people"], "readonly");
var object = data.objectStore("people"); var index = object.index("by_dni");
var request = index.get(String(dni));
request.onsuccess = function () {
var result = request.result;
if (result !== undefined) { alert("ID: " + result.id + "\n\ DNI: " + result.dni + "\n\
Name: " + result.name + "\n\
Surname: " + result.surname);
}
};
}
function loadAll() {
var active = dataBase.result;
var data = active.transaction(["people"], "readonly");
var object = data.objectStore("people");
var elements = [];
object.openCursor().onsuccess = function (e) {
var result = e.target.result;
if (result === null) { return;
}
elements.push(result.value);
result.continue();
};
data.oncomplete = function() {
var outerHTML = '';
for (var key in elements) {
outerHTML += '\n\
<tr>\n\
<td>' + elements[key].dni + '</td>\n\
<td>' + elements[key].name + '</td>\n\
<td>\n\
<button type="button" onclick="load(' + elements[key].id + ');">Details</button>\n\ <button type="button" onclick="loadByDni(' + elements[key].dni + ');">Details DNI</button>\n\ </td>\n\
</tr>';
}
elements = [];
document.querySelector("#elementsList").innerHTML = outerHTML; };
}
function loadAllByName() {
var active = dataBase.result;
var data = active.transaction(["people"], "readonly");
var object = data.objectStore("people"); var index = object.index('by_name');
var elements = [];
index.openCursor().onsuccess = function (e) {
var result = e.target.result;
if (result === null) { return;
}
elements.push(result.value);
result.continue();
};
data.oncomplete = function() {
var outerHTML = '';
for (var key in elements) {
outerHTML += '\n\
<tr>\n\
<td>' + elements[key].dni + '</td>\n\
<td>' + elements[key].name + '</td>\n\
<td>\n\
<button type="button" onclick="load(' + elements[key].id + ');">Details</button>\n\ <button type="button" onclick="loadByDni(' + elements[key].dni + ');">Details DNI</button>\n\ </td>\n\
</tr>';
}
elements = [];
document.querySelector("#elementsList").innerHTML = outerHTML; };
}
</script>