Removed storage options from collection helper.

This commit is contained in:
Martin Edenhofer 2015-11-03 19:36:24 +01:00
parent 0143eae963
commit 4a9c2c55b2
3 changed files with 24 additions and 168 deletions

View file

@ -45,26 +45,12 @@ class _collectionSingleton extends Spine.Module
@resetCollections(data) @resetCollections(data)
# find collections to load
@_loadObjectsFromSessionStore()
_loadObjectsFromSessionStore: ->
list = App.Store.list()
for key in list
parts = key.split('::')
if parts[0] is 'collection'
data = App.Store.get( key )
data['type'] = parts[1]
data['sessionStorage'] = true
@log 'debug', 'load INIT', data
@load( data )
resetCollections: (data) -> resetCollections: (data) ->
# load assets
# load collection
for type, collection of data for type, collection of data
@log 'debug', 'resetCollection:trigger', type, collection @log 'debug', 'resetCollection:trigger', type, collection
@reset( sessionStorage: data.sessionStorage, type: type, data: collection ) @reset(type: type, data: collection)
reset: (params) -> reset: (params) ->
@ -74,20 +60,13 @@ class _collectionSingleton extends Spine.Module
@log 'error', 'reset', "no such collection #{params.type}", params @log 'error', 'reset', "no such collection #{params.type}", params
return return
# remove permanent storage
@localDelete( params.type )
# reset in-memory # reset in-memory
appObject.refresh(params.data, { clear: true }) appObject.refresh(params.data, { clear: true })
# remember in store if not already requested from local storage
for object in params.data
@localStore( params.type, object )
loadAssets: (assets) -> loadAssets: (assets) ->
@log 'debug', 'loadAssets', assets @log 'debug', 'loadAssets', assets
for type, collections of assets for type, collections of assets
@load( sessionStorage: false, type: type, data: collections ) @load(type: type, data: collections)
load: (params) -> load: (params) ->
@ -100,16 +79,9 @@ class _collectionSingleton extends Spine.Module
@log 'error', 'reset', "no such collection #{params.type}", params @log 'error', 'reset', "no such collection #{params.type}", params
return return
sessionStorage = params.sessionStorage
# load full array once # load full array once
if _.isArray(params.data) if _.isArray(params.data)
appObject.refresh(params.data) appObject.refresh(params.data)
# remember in store if not already requested from local storage
if !sessionStorage
for object in params.data
@localStore( params.type, object )
return return
# load data from object # load data from object
@ -126,17 +98,3 @@ class _collectionSingleton extends Spine.Module
appObject.refresh(object) appObject.refresh(object)
else else
appObject.refresh(object) appObject.refresh(object)
# remember in store if not already requested from local storage
if !sessionStorage
@localStore( params.type, object)
localDelete: (type) ->
list = App.Store.list()
for key in list
parts = key.split('::')
if parts[0] is 'collection' && parts[1] is type
App.Store.delete(key)
localStore: (type, object) ->
App.Store.write( 'collection::' + type + '::' + object.id, { data: [ object ] } )

View file

@ -1,93 +0,0 @@
class App.Store
_instance = undefined # Must be declared here to force the closure on the class
@renew: ->
_instance = new _storeSingleton
@write: (key, value) ->
if _instance == undefined
_instance ?= new _storeSingleton
_instance.write(key, value)
@get: (args) ->
if _instance == undefined
_instance ?= new _storeSingleton
_instance.get(args)
@delete: (args) ->
if _instance == undefined
_instance ?= new _storeSingleton
_instance.delete(args)
@clear: ->
if _instance == undefined
_instance ?= new _storeSingleton
_instance.clear()
@list: ->
if _instance == undefined
_instance ?= new _storeSingleton
_instance.list()
# The actual Singleton class
class _storeSingleton
store: {}
constructor: ->
@support = true
if !window.sessionStorage
@support = false
# @support = false
# clear store on every login/logout
if @support
App.Event.bind 'clearStore', =>
@clear('all')
# write to local storage
write: (key, value) ->
@store[key] = value
return if !@support
return if !App.Config.get('ui_client_storage')
try
sessionStorage.setItem( key, JSON.stringify( value ) )
catch e
if e is QUOTA_EXCEEDED_ERR
# do something nice to notify your users
App.Log.error 'App.Store', 'Local storage quote exceeded, please relogin!'
# get item
get: (key) ->
return @store[key] if !@support
return @store[key] if !App.Config.get('ui_client_storage')
value = sessionStorage.getItem( key )
return if !value
object = JSON.parse( value )
return object
# delete item
delete: (key) ->
delete @store[key]
return if !@support
return if !App.Config.get('ui_client_storage')
sessionStorage.removeItem( key )
# clear local storage
clear: ->
@store = {}
sessionStorage.clear()
# return list of all keys
list: ->
list = []
if !@support || !App.Config.get('ui_client_storage')
for key of @store
list.push key
return list
# logLength = sessionStorage.length-1;
# for count in [0..logLength]
# key = sessionStorage.key( count )
# if key
# list.push key
for key of window.sessionStorage
list.push key
list

View file

@ -1,18 +1,9 @@
class App.Model extends Spine.Model class App.Model extends Spine.Model
@destroyBind: false
@apiPath: App.Config.get('api_path') @apiPath: App.Config.get('api_path')
constructor: -> constructor: ->
super super
# delete object from local storage on destroy
if !@constructor.destroyBind
@bind( 'destroy', (e) ->
className = Object.getPrototypeOf(e).constructor.className
key = "collection::#{className}::#{e.id}"
App.Store.delete(key)
)
uiUrl: -> uiUrl: ->
'#' '#'