vue-cesium-jyt
Version:
Vue 3.x components for CesiumJS.
1 lines • 18.7 kB
Source Map (JSON)
{"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 const deferred = Cesium.when.defer()\n this.dbname = options.name\n const dbRequest = window.indexedDB.open(this.dbname)\n const that = this\n dbRequest.onsuccess = event => {\n that.db = (event.target as any).result\n that.version = that.db.version\n that.cachestatus = that.cachestatus || {}\n deferred.resolve(that)\n }\n dbRequest.onupgradeneeded = event => {\n that.db = (event.target as any).result\n that.version = that.db.version\n deferred.resolve(that)\n }\n dbRequest.onerror = event => {\n that.db = null\n deferred.reject('create database fail, error code : ' + (event.target as any).errorcode)\n }\n this.layer = options.layer || null\n this.storageType = options.storageType || 'arrayBuffer'\n this.creatingTable = !1\n this.cachestatus = {}\n return deferred.promise\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 const deferred = Cesium.when.defer()\n if (this.creatingTable) {\n deferred.reject(false)\n } else {\n if (this.db.objectStoreNames.contains(storeName)) {\n deferred.reject(false)\n return deferred.promise\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 deferred.resolve(true)\n }\n } else {\n that.creatingTable = false\n deferred.resolve(false)\n }\n }\n dbRequest.onsuccess = event => {\n ;(event.target as any).result.close()\n deferred.resolve(true)\n }\n dbRequest.onerror = event => {\n that.creatingTable = false\n deferred.reject(false)\n }\n }\n return deferred.promise\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 const deferred = Cesium.when.defer()\n if (!Cesium.defined(this.db)) {\n deferred.reject(false)\n return deferred.promise\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 deferred.resolve(false)\n return deferred.promise\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 deferred.resolve(true)\n }\n request.onerror = event => {\n cachestatus[storeName][id] = Status.FAILED\n deferred.resolve(false)\n }\n } catch (error) {\n deferred.reject(null)\n return deferred.promise\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 deferred.resolve(true)\n }\n request.onerror = function (e) {\n deferred.reject(false)\n }\n },\n () => {\n deferred.reject(false)\n }\n )\n }\n return deferred.promise\n }\n\n /**\n * 向对象仓库读取数据。\n * @param {String} storeName 对象仓库(表)名称\n * @param {Number} id 主键\n * @returns {Promise}\n */\n getElementFromDB(storeName, id) {\n const deferred = Cesium.when.defer()\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) ? deferred.resolve(e.target.result.value) : deferred.reject(null)\n }\n request.onerror = e => {\n deferred.reject(null)\n }\n } catch (error) {\n deferred.reject(null)\n }\n return deferred.promise\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 const deferred = Cesium.when.defer()\n const { db } = this\n if (!Cesium.defined(db)) {\n deferred.resolve(false)\n return deferred.promise\n }\n if (!db.objectStoreNames.contains(storeName)) {\n deferred.resolve(false)\n return deferred.promise\n }\n try {\n const request = db.transaction([storeName], 'readwrite').objectStore(storeName).put({ id: id, value: value })\n request.onsuccess = () => {\n deferred.resolve(true)\n }\n request.onerror = () => {\n deferred.resolve(false)\n }\n } catch (e) {\n deferred.resolve(false)\n }\n return deferred.promise\n }\n\n /**\n * 移除数据。\n * @param {String} storeName\n * @param {Number} id\n * @returns {Promise}\n */\n removeElementFromDB(storeName, id) {\n const deferred = Cesium.when.defer()\n const { db } = this\n if (!Cesium.defined(db)) {\n deferred.resolve(false)\n return deferred.promise\n }\n\n if (!db.objectStoreNames.contains(storeName)) {\n deferred.resolve(false)\n return deferred.promise\n }\n try {\n const request = db.transaction([storeName], 'readwrite').objectStore(storeName).delete(id)\n request.onsuccess = () => {\n deferred.resolve(true)\n }\n request.onerror = () => {\n deferred.resolve(false)\n }\n } catch (e) {\n deferred.resolve(false)\n }\n return deferred.promise\n }\n\n /**\n * 清空对象仓库\n * @param {String} storeName\n */\n clear(storeName) {\n const deferred = Cesium.when.defer()\n const { db } = this\n if (!Cesium.defined(db)) {\n deferred.resolve(false)\n return deferred.promise\n }\n\n if (!db.objectStoreNames.contains(storeName)) {\n deferred.resolve(false)\n return deferred.promise\n }\n\n try {\n const request = db.transaction([storeName], 'readwrite').objectStore(storeName).clear()\n request.onsuccess = () => {\n deferred.resolve(true)\n }\n request.onerror = () => {\n deferred.resolve(false)\n }\n } catch (e) {\n deferred.resolve(false)\n }\n return deferred.promise\n }\n}\n\nexport default IndexedDBScheduler\n"],"names":[],"mappings":"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"}