UNPKG

vue-cesium

Version:
1 lines 17.7 kB
{"version":3,"file":"IndexedDBScheduler.mjs","sources":["../../../../../../packages/components/providers/supermap/IndexedDBScheduler.ts"],"sourcesContent":["/**\n * 操作状态。\n */\nconst Status = {\n NONE: 0,\n STORING: 1,\n STORED: 2,\n FAILED: 3\n}\n/**\n * 操作浏览器数据库 IndexedDB 类\n */\nclass IndexedDBScheduler {\n dbname: string\n db: any\n version: any\n cachestatus: any\n layer: any\n storageType: string\n creatingTable: boolean\n /**\n *\n * @param {Object} options\n */\n constructor(options) {\n if (!Cesium.defined(options.name)) {\n throw new Cesium.DeveloperError('options.name is required.')\n }\n\n const dbRequest = window.indexedDB.open(this.dbname)\n this.layer = options.layer || null\n this.storageType = options.storageType || 'arrayBuffer'\n this.creatingTable = !1\n this.cachestatus = {}\n this.dbname = options.name\n const that = this as IndexedDBScheduler\n\n return new Promise((resolve, reject) => {\n dbRequest.onsuccess = event => {\n that.db = (event.target as IDBOpenDBRequest).result\n that.version = that.db.version\n that.cachestatus = that.cachestatus || {}\n resolve(that)\n }\n dbRequest.onupgradeneeded = event => {\n that.db = (event.target as any).result\n that.version = that.db.version\n resolve(that)\n }\n dbRequest.onerror = event => {\n that.db = null\n reject('create database fail, error code : ' + (event.target as any).errorcode)\n }\n }) as any\n }\n\n /**\n * 检查对象仓库是否存在。\n * @param {String} storeName 对象仓库(表)名称\n */\n checkObjectStoreExist(storeName) {\n return Cesium.defined(this.db) ? this.db.objectStoreNames.contains(storeName) : false\n }\n\n /**\n * 创建 IndexedDB 浏对象仓库,IndexedDB 是浏览器提供的本地数据库\n * @param {String} storeName 对象仓库(表)名称\n * @returns {Promise}\n */\n createObjectStore(storeName) {\n return new Promise((resolve, reject) => {\n if (this.creatingTable) {\n reject(false)\n } else {\n if (this.db.objectStoreNames.contains(storeName)) {\n reject(false)\n return\n }\n this.creatingTable = true\n const version = parseInt(this.db.version)\n this.db.close()\n const that = this\n // 打开或新建 IndexedDB 数据库\n const dbRequest = window.indexedDB.open(this.dbname, version + 1)\n dbRequest.onupgradeneeded = event => {\n const db = (event.target as any).result\n that.db = db\n // 创建对象仓库(表)\n const objectStore = db.createObjectStore(storeName, {\n keyPath: 'id'\n })\n if (Cesium.defined(objectStore)) {\n // 创建索引\n objectStore.createIndex('value', 'value', {\n unique: false\n })\n that.creatingTable = false\n that.cachestatus = that.cachestatus || {}\n that.cachestatus[storeName] = {}\n that.db.close()\n const dbRequest = window.indexedDB.open(that.dbname)\n dbRequest.onsuccess = event => {\n that.db = (event.target as any).result\n resolve(true)\n }\n } else {\n that.creatingTable = false\n resolve(false)\n }\n }\n dbRequest.onsuccess = event => {\n ;(event.target as any).result.close()\n resolve(true)\n }\n dbRequest.onerror = event => {\n that.creatingTable = false\n reject(false)\n }\n }\n })\n }\n\n /**\n * 向对象仓库写入数据记录。\n * @param {String} storeName 对象仓库(表)名称\n * @param {Number} id 主键\n * @param {*} value 值\n * @returns {Promise}\n */\n putElementInDB(storeName, id, value) {\n return new Promise((resolve, reject) => {\n if (!Cesium.defined(this.db)) {\n reject(false)\n return\n }\n const { cachestatus, db } = this\n if (\n Cesium.defined(cachestatus[storeName]) &&\n Cesium.defined(cachestatus[storeName][id] && (cachestatus[storeName][id] === Status.STORING || cachestatus[storeName][id] === Status.STORED))\n ) {\n resolve(false)\n return\n }\n if (db.objectStoreNames.contains(storeName)) {\n cachestatus[storeName] = cachestatus[storeName] || {}\n try {\n const request = db.transaction([storeName], 'readwrite').objectStore(storeName).add({\n id: id,\n value: value\n })\n cachestatus[storeName][id] = Status.STORING\n request.onsuccess = event => {\n cachestatus[storeName][id] = Status.STORED\n resolve(true)\n }\n request.onerror = event => {\n cachestatus[storeName][id] = Status.FAILED\n resolve(false)\n }\n } catch (error) {\n reject(null)\n return\n }\n } else {\n this.createObjectStore(storeName).then(\n () => {\n const request = db.transaction([storeName], 'readwrite').objectStore(storeName).add({\n id: id,\n value: value\n })\n request.onsuccess = function (e) {\n resolve(true)\n }\n request.onerror = function (e) {\n reject(false)\n }\n },\n () => {\n reject(false)\n }\n )\n }\n })\n }\n\n /**\n * 向对象仓库读取数据。\n * @param {String} storeName 对象仓库(表)名称\n * @param {Number} id 主键\n * @returns {Promise}\n */\n getElementFromDB(storeName, id) {\n return new Promise((resolve, reject) => {\n const { db } = this\n if (!Cesium.defined(db)) {\n return null\n }\n if (!db.objectStoreNames.contains(storeName)) {\n return null\n }\n try {\n const transaction = db.transaction([storeName])\n const objectStore = transaction.objectStore(storeName)\n const request = objectStore.get(id)\n request.onsuccess = e => {\n return Cesium.defined(e.target.result) ? resolve(e.target.result.value) : reject(null)\n }\n request.onerror = e => {\n reject(null)\n }\n } catch (error) {\n reject(null)\n }\n })\n }\n\n /**\n * 更新数据。\n * @param {String} storeName\n * @param {Number} id\n * @param {*} value\n * @returns {Promise}\n */\n updateElementInDB(storeName, id, value) {\n return new Promise((resolve, reject) => {\n const { db } = this\n if (!Cesium.defined(db)) {\n resolve(false)\n return\n }\n if (!db.objectStoreNames.contains(storeName)) {\n resolve(false)\n return\n }\n try {\n const request = db.transaction([storeName], 'readwrite').objectStore(storeName).put({ id: id, value: value })\n request.onsuccess = () => {\n resolve(true)\n }\n request.onerror = () => {\n resolve(false)\n }\n } catch (e) {\n resolve(false)\n }\n })\n }\n\n /**\n * 移除数据。\n * @param {String} storeName\n * @param {Number} id\n * @returns {Promise}\n */\n removeElementFromDB(storeName, id) {\n return new Promise((resolve, reject) => {\n const { db } = this\n if (!Cesium.defined(db)) {\n resolve(false)\n return\n }\n\n if (!db.objectStoreNames.contains(storeName)) {\n resolve(false)\n return\n }\n try {\n const request = db.transaction([storeName], 'readwrite').objectStore(storeName).delete(id)\n request.onsuccess = () => {\n resolve(true)\n }\n request.onerror = () => {\n resolve(false)\n }\n } catch (e) {\n resolve(false)\n }\n })\n }\n\n /**\n * 清空对象仓库\n * @param {String} storeName\n */\n clear(storeName) {\n return new Promise((resolve, reject) => {\n const { db } = this\n if (!Cesium.defined(db)) {\n resolve(false)\n return\n }\n\n if (!db.objectStoreNames.contains(storeName)) {\n resolve(false)\n return\n }\n\n try {\n const request = db.transaction([storeName], 'readwrite').objectStore(storeName).clear()\n request.onsuccess = () => {\n resolve(true)\n }\n request.onerror = () => {\n resolve(false)\n }\n } catch (e) {\n resolve(false)\n }\n })\n }\n}\n\nexport default IndexedDBScheduler\n"],"names":["dbRequest","event"],"mappings":"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"}