Storage.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. var Storage = function () {
  2. var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
  3. var name = 'threejs-editor';
  4. var version = 1;
  5. var database;
  6. return {
  7. init: function ( callback ) {
  8. var request = indexedDB.open( name, version );
  9. request.onupgradeneeded = function ( event ) {
  10. var db = event.target.result;
  11. if ( db.objectStoreNames.contains( 'states' ) === false ) {
  12. db.createObjectStore( 'states' );
  13. }
  14. };
  15. request.onsuccess = function ( event ) {
  16. database = event.target.result;
  17. callback();
  18. };
  19. request.onerror = function ( event ) {
  20. console.error( 'IndexedDB', event );
  21. };
  22. },
  23. get: function ( callback ) {
  24. var transaction = database.transaction( [ 'states' ], 'readwrite' );
  25. var objectStore = transaction.objectStore( 'states' );
  26. var request = objectStore.get( 0 );
  27. request.onsuccess = function ( event ) {
  28. callback( event.target.result );
  29. };
  30. },
  31. set: function ( data, callback ) {
  32. var transaction = database.transaction( [ 'states' ], 'readwrite' );
  33. var objectStore = transaction.objectStore( 'states' );
  34. var request = objectStore.put( data, 0 );
  35. request.onsuccess = function ( event ) {
  36. console.log( '[' + /\d\d\:\d\d\:\d\d/.exec( new Date() )[ 0 ] + ']', 'Saved state to IndexedDB.' );
  37. };
  38. },
  39. clear: function ( callback ) {
  40. var transaction = database.transaction( [ 'states' ], 'readwrite' );
  41. var objectStore = transaction.objectStore( 'states' );
  42. var request = objectStore.clear();
  43. request.onsuccess = function ( event ) {
  44. callback();
  45. };
  46. }
  47. }
  48. };