1 var designer_tables = [{name: "pdf_pages", key: "pg_nr", auto_inc: true},
2 {name: "table_coords", key: "id", auto_inc: true}];
4 var DesignerOfflineDB = (function () {
8 designerDB.open = function (callback) {
10 var request = window.indexedDB.open("pma_designer", version);
12 request.onupgradeneeded = function (e) {
13 var db = e.target.result;
14 e.target.transaction.onerror = designerDB.onerror;
16 for (var t in designer_tables) {
17 if (db.objectStoreNames.contains(designer_tables[t].name)) {
18 db.deleteObjectStore(designer_tables[t].name);
22 for (var t in designer_tables) {
23 db.createObjectStore(designer_tables[t].name, {
24 keyPath: designer_tables[t].key,
25 autoIncrement: designer_tables[t].auto_inc
30 request.onsuccess = function (e) {
31 datastore = e.target.result;
32 if (typeof callback !== 'undefined' && callback !== null) {
37 request.onerror = designerDB.onerror;
40 designerDB.loadObject = function (table, id, callback) {
42 var transaction = db.transaction([table], 'readwrite');
43 var objStore = transaction.objectStore(table);
44 var cursorRequest = objStore.get(parseInt(id));
46 cursorRequest.onsuccess = function (e) {
47 callback(e.target.result);
50 cursorRequest.onerror = designerDB.onerror;
53 designerDB.loadAllObjects = function (table, callback) {
55 var transaction = db.transaction([table], 'readwrite');
56 var objStore = transaction.objectStore(table);
57 var keyRange = IDBKeyRange.lowerBound(0);
58 var cursorRequest = objStore.openCursor(keyRange);
61 transaction.oncomplete = function (e) {
65 cursorRequest.onsuccess = function (e) {
66 var result = e.target.result;
67 if (Boolean(result) === false) {
70 results.push(result.value);
74 cursorRequest.onerror = designerDB.onerror;
77 designerDB.loadFirstObject = function(table, callback) {
79 var transaction = db.transaction([table], 'readwrite');
80 var objStore = transaction.objectStore(table);
81 var keyRange = IDBKeyRange.lowerBound(0);
82 var cursorRequest = objStore.openCursor(keyRange);
83 var firstResult = null;
85 transaction.oncomplete = function(e) {
86 callback(firstResult);
89 cursorRequest.onsuccess = function(e) {
90 var result = e.target.result;
91 if (Boolean(result) === false) {
94 firstResult = result.value;
97 cursorRequest.onerror = designerDB.onerror;
100 designerDB.addObject = function(table, obj, callback) {
102 var transaction = db.transaction([table], 'readwrite');
103 var objStore = transaction.objectStore(table);
104 var request = objStore.put(obj);
106 request.onsuccess = function(e) {
107 if (typeof callback !== 'undefined' && callback !== null) {
108 callback(e.currentTarget.result);
112 request.onerror = designerDB.onerror;
115 designerDB.deleteObject = function(table, id, callback) {
117 var transaction = db.transaction([table], 'readwrite');
118 var objStore = transaction.objectStore(table);
119 var request = objStore.delete(parseInt(id));
121 request.onsuccess = function(e) {
122 if (typeof callback !== 'undefined' && callback !== null) {
127 request.onerror = designerDB.onerror;
130 designerDB.onerror = function(e) {
134 // Export the designerDB object.