/** * אחסון קבצים מפורסרים ב-IndexedDB — כך שהשכבות זמינות גם אופליין * וגם אחרי סגירת האפליקציה. */ (function (global) { "use strict"; var DB_NAME = "optech-gis"; var DB_VERSION = 1; var STORE = "files"; function open() { return new Promise(function (resolve, reject) { var req = indexedDB.open(DB_NAME, DB_VERSION); req.onupgradeneeded = function () { var db = req.result; if (!db.objectStoreNames.contains(STORE)) { db.createObjectStore(STORE, { keyPath: "id" }); } }; req.onsuccess = function () { resolve(req.result); }; req.onerror = function () { reject(req.error); }; }); } function tx(mode, fn) { return open().then(function (db) { return new Promise(function (resolve, reject) { var t = db.transaction(STORE, mode); var store = t.objectStore(STORE); var out = fn(store); t.oncomplete = function () { db.close(); resolve(out && out.result !== undefined ? out.result : out); }; t.onerror = function () { db.close(); reject(t.error); }; }); }); } function saveFile(record) { return tx("readwrite", function (s) { s.put(record); }); } function deleteFile(id) { return tx("readwrite", function (s) { s.delete(id); }); } function listFiles() { return open().then(function (db) { return new Promise(function (resolve, reject) { var t = db.transaction(STORE, "readonly"); var req = t.objectStore(STORE).getAll(); req.onsuccess = function () { db.close(); resolve(req.result || []); }; req.onerror = function () { db.close(); reject(req.error); }; }); }); } global.Store = { saveFile: saveFile, deleteFile: deleteFile, listFiles: listFiles, }; })(window);