UPDATE 4.4.0.0
[phpmyadmin.git] / js / pmd / designer_db.js
blob0ef43233e605f71ae2c94e0727e01b5c7db88332
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 () {
5     var designerDB = {};
6     var datastore = null;
8     designerDB.open = function (callback) {
9         var version = 1;
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);
19                 }
20             }
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
26                 });
27             }
28         };
30         request.onsuccess = function (e) {
31             datastore = e.target.result;
32             if (typeof callback !== 'undefined' && callback !== null) {
33                 callback(true);
34             }
35         };
37         request.onerror = designerDB.onerror;
38     };
40     designerDB.loadObject = function (table, id, callback) {
41         var db = datastore;
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);
48         };
50         cursorRequest.onerror = designerDB.onerror;
51     };
53     designerDB.loadAllObjects = function (table, callback) {
54         var db = datastore;
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);
59         var results = [];
61         transaction.oncomplete = function (e) {
62             callback(results);
63         };
65         cursorRequest.onsuccess = function (e) {
66             var result = e.target.result;
67             if (Boolean(result) === false) {
68                 return;
69             }
70             results.push(result.value);
71             result.continue();
72         };
74         cursorRequest.onerror = designerDB.onerror;
75     };
77     designerDB.loadFirstObject = function(table, callback) {
78         var db = datastore;
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);
87         };
89         cursorRequest.onsuccess = function(e) {
90             var result = e.target.result;
91             if (Boolean(result) === false) {
92                 return;
93             }
94             firstResult = result.value;
95         };
97         cursorRequest.onerror = designerDB.onerror;
98     };
100     designerDB.addObject = function(table, obj, callback) {
101         var db = datastore;
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);
109             }
110         };
112         request.onerror = designerDB.onerror;
113     };
115     designerDB.deleteObject = function(table, id, callback) {
116         var db = datastore;
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) {
123                 callback(true);
124             }
125         };
127         request.onerror = designerDB.onerror;
128     };
130     designerDB.onerror = function(e) {
131         console.log(e);
132     };
134     // Export the designerDB object.
135     return designerDB;
136 }());