[28897] | 1 | var Storage = function () {
|
---|
| 2 |
|
---|
| 3 | var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
|
---|
| 4 |
|
---|
| 5 | var name = 'threejs-editor';
|
---|
| 6 | var version = 1;
|
---|
| 7 |
|
---|
| 8 | var database;
|
---|
| 9 |
|
---|
| 10 | return {
|
---|
| 11 |
|
---|
| 12 | init: function ( callback ) {
|
---|
| 13 |
|
---|
| 14 | var request = indexedDB.open( name, version );
|
---|
| 15 | request.onupgradeneeded = function ( event ) {
|
---|
| 16 |
|
---|
| 17 | var db = event.target.result;
|
---|
| 18 |
|
---|
| 19 | if ( db.objectStoreNames.contains( 'states' ) === false ) {
|
---|
| 20 |
|
---|
| 21 | db.createObjectStore( 'states' );
|
---|
| 22 |
|
---|
| 23 | }
|
---|
| 24 |
|
---|
| 25 | };
|
---|
| 26 | request.onsuccess = function ( event ) {
|
---|
| 27 |
|
---|
| 28 | database = event.target.result;
|
---|
| 29 |
|
---|
| 30 | callback();
|
---|
| 31 |
|
---|
| 32 | };
|
---|
| 33 | request.onerror = function ( event ) {
|
---|
| 34 |
|
---|
| 35 | console.error( 'IndexedDB', event );
|
---|
| 36 |
|
---|
| 37 | };
|
---|
| 38 |
|
---|
| 39 |
|
---|
| 40 | },
|
---|
| 41 |
|
---|
| 42 | get: function ( callback ) {
|
---|
| 43 |
|
---|
| 44 | var transaction = database.transaction( [ 'states' ], 'readwrite' );
|
---|
| 45 | var objectStore = transaction.objectStore( 'states' );
|
---|
| 46 | var request = objectStore.get( 0 );
|
---|
| 47 | request.onsuccess = function ( event ) {
|
---|
| 48 |
|
---|
| 49 | callback( event.target.result );
|
---|
| 50 |
|
---|
| 51 | };
|
---|
| 52 |
|
---|
| 53 | },
|
---|
| 54 |
|
---|
| 55 | set: function ( data, callback ) {
|
---|
| 56 |
|
---|
| 57 | var transaction = database.transaction( [ 'states' ], 'readwrite' );
|
---|
| 58 | var objectStore = transaction.objectStore( 'states' );
|
---|
| 59 | var request = objectStore.put( data, 0 );
|
---|
| 60 | request.onsuccess = function ( event ) {
|
---|
| 61 |
|
---|
| 62 | console.log( '[' + /\d\d\:\d\d\:\d\d/.exec( new Date() )[ 0 ] + ']', 'Saved state to IndexedDB.' );
|
---|
| 63 |
|
---|
| 64 | };
|
---|
| 65 |
|
---|
| 66 | },
|
---|
| 67 |
|
---|
| 68 | clear: function ( callback ) {
|
---|
| 69 |
|
---|
| 70 | var transaction = database.transaction( [ 'states' ], 'readwrite' );
|
---|
| 71 | var objectStore = transaction.objectStore( 'states' );
|
---|
| 72 | var request = objectStore.clear();
|
---|
| 73 | request.onsuccess = function ( event ) {
|
---|
| 74 |
|
---|
| 75 | callback();
|
---|
| 76 |
|
---|
| 77 | };
|
---|
| 78 |
|
---|
| 79 | }
|
---|
| 80 |
|
---|
| 81 | }
|
---|
| 82 |
|
---|
| 83 | }; |
---|