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 | }; |
---|