ShadowEditor/editor/js/Storage.js
2018-06-07 19:50:07 +08:00

99 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @author mrdoob / http://mrdoob.com/
*/
var Storage = function () {
var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
if (indexedDB === undefined) {
console.warn('存储IndexedDB不可用。');
return { init: function () { }, get: function () { }, set: function () { }, clear: function () { } };
}
var name = 'threejs-editor';
var version = 1;
var database;
return {
init: function (callback) {
var request = indexedDB.open(name, version);
request.onupgradeneeded = function (event) {
var db = event.target.result;
if (db.objectStoreNames.contains('states') === false) {
db.createObjectStore('states');
}
};
request.onsuccess = function (event) {
database = event.target.result;
callback();
};
request.onerror = function (event) {
console.error('IndexedDB', event);
};
},
get: function (callback) {
var transaction = database.transaction(['states'], 'readwrite');
var objectStore = transaction.objectStore('states');
var request = objectStore.get(0);
request.onsuccess = function (event) {
callback(event.target.result);
};
},
set: function (data, callback) {
var start = performance.now();
var transaction = database.transaction(['states'], 'readwrite');
var objectStore = transaction.objectStore('states');
var request = objectStore.put(data, 0);
request.onsuccess = function (event) {
console.log('[' + /\d\d\:\d\d\:\d\d/.exec(new Date())[0] + ']', '保存到IndexedDB中。 ' + (performance.now() - start).toFixed(2) + 'ms');
};
},
clear: function () {
if (database === undefined) return;
var transaction = database.transaction(['states'], 'readwrite');
var objectStore = transaction.objectStore('states');
var request = objectStore.clear();
request.onsuccess = function (event) {
console.log('[' + /\d\d\:\d\d\:\d\d/.exec(new Date())[0] + ']', '清空IndexedDB。');
};
}
};
};