Added support for personal local storage (to not share settings over different users on same browser).
This commit is contained in:
parent
e1c87d8cfa
commit
01678787f3
3 changed files with 22 additions and 18 deletions
|
@ -500,10 +500,10 @@ class App.ControllerTable extends App.Controller
|
||||||
data[type][key] = {}
|
data[type][key] = {}
|
||||||
data[type][key] = value
|
data[type][key] = value
|
||||||
@log 'debug', @table_id, 'preferencesStore', data
|
@log 'debug', @table_id, 'preferencesStore', data
|
||||||
App.LocalStorage.set(@preferencesStoreKey(), data)
|
App.LocalStorage.set(@preferencesStoreKey(), data, @Session.get('id'))
|
||||||
|
|
||||||
preferencesGet: =>
|
preferencesGet: =>
|
||||||
data = App.LocalStorage.get(@preferencesStoreKey())
|
data = App.LocalStorage.get(@preferencesStoreKey(), @Session.get('id'))
|
||||||
return {} if !data
|
return {} if !data
|
||||||
@log 'debug', @table_id, 'preferencesGet', data
|
@log 'debug', @table_id, 'preferencesGet', data
|
||||||
data
|
data
|
||||||
|
|
|
@ -111,7 +111,7 @@ class Table extends App.Controller
|
||||||
for key, value of params
|
for key, value of params
|
||||||
@[key] = value
|
@[key] = value
|
||||||
|
|
||||||
@view_mode = localStorage.getItem( "mode:#{@view}" ) || 's'
|
@view_mode = App.LocalStorage.get("mode:#{@view}", @Session.get('id')) || 's'
|
||||||
@log 'notice', 'view:', @view, @view_mode
|
@log 'notice', 'view:', @view, @view_mode
|
||||||
|
|
||||||
return if !@view
|
return if !@view
|
||||||
|
@ -370,7 +370,7 @@ class Table extends App.Controller
|
||||||
viewmode: (e) =>
|
viewmode: (e) =>
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
@view_mode = $(e.target).data('mode')
|
@view_mode = $(e.target).data('mode')
|
||||||
localStorage.setItem( "mode:#{@view}", @view_mode )
|
App.LocalStorage.set("mode:#{@view}", @view_mode, @Session.get('id'))
|
||||||
@fetch()
|
@fetch()
|
||||||
#@render()
|
#@render()
|
||||||
|
|
||||||
|
|
|
@ -1,20 +1,20 @@
|
||||||
class App.LocalStorage
|
class App.LocalStorage
|
||||||
_instance = undefined # Must be declared here to force the closure on the class
|
_instance = undefined # Must be declared here to force the closure on the class
|
||||||
|
|
||||||
@set: (key, value) ->
|
@set: (key, value, user_id) ->
|
||||||
if _instance == undefined
|
if _instance == undefined
|
||||||
_instance ?= new _storeSingleton
|
_instance ?= new _storeSingleton
|
||||||
_instance.set(key, value)
|
_instance.set(key, value, user_id)
|
||||||
|
|
||||||
@get: (args) ->
|
@get: (key, user_id) ->
|
||||||
if _instance == undefined
|
if _instance == undefined
|
||||||
_instance ?= new _storeSingleton
|
_instance ?= new _storeSingleton
|
||||||
_instance.get(args)
|
_instance.get(key, user_id)
|
||||||
|
|
||||||
@delete: (args) ->
|
@delete: (key, user_id) ->
|
||||||
if _instance == undefined
|
if _instance == undefined
|
||||||
_instance ?= new _storeSingleton
|
_instance ?= new _storeSingleton
|
||||||
_instance.delete(args)
|
_instance.delete(key)
|
||||||
|
|
||||||
@clear: ->
|
@clear: ->
|
||||||
if _instance == undefined
|
if _instance == undefined
|
||||||
|
@ -31,22 +31,28 @@ class _storeSingleton
|
||||||
constructor: ->
|
constructor: ->
|
||||||
|
|
||||||
# write to local storage
|
# write to local storage
|
||||||
set: (key, value) ->
|
set: (key, value, user_id) ->
|
||||||
try
|
try
|
||||||
|
if user_id
|
||||||
|
key = "personal::#{user_id}::#{key}"
|
||||||
localStorage.setItem(key, JSON.stringify(value))
|
localStorage.setItem(key, JSON.stringify(value))
|
||||||
catch e
|
catch e
|
||||||
if e is QUOTA_EXCEEDED_ERR
|
if e is QUOTA_EXCEEDED_ERR
|
||||||
# do something nice to notify your users
|
# do something nice to notify your users
|
||||||
App.Log.error 'App.LocalStore', 'Local storage quote exceeded!'
|
App.Log.error 'App.LocalStorage', 'Local storage quote exceeded!'
|
||||||
|
|
||||||
# get item
|
# get item
|
||||||
get: (key) ->
|
get: (key, user_id) ->
|
||||||
|
if user_id
|
||||||
|
key = "personal::#{user_id}::#{key}"
|
||||||
value = localStorage.getItem(key)
|
value = localStorage.getItem(key)
|
||||||
return if !value
|
return if !value
|
||||||
JSON.parse(value)
|
JSON.parse(value)
|
||||||
|
|
||||||
# delete item
|
# delete item
|
||||||
delete: (key) ->
|
delete: (key, user_id) ->
|
||||||
|
if user_id
|
||||||
|
key = "personal::#{user_id}::#{key}"
|
||||||
localStorage.removeItem(key)
|
localStorage.removeItem(key)
|
||||||
|
|
||||||
# clear local storage
|
# clear local storage
|
||||||
|
@ -55,6 +61,4 @@ class _storeSingleton
|
||||||
|
|
||||||
# return list of all keys
|
# return list of all keys
|
||||||
list: ->
|
list: ->
|
||||||
for key of window.localStorage
|
window.localStorage
|
||||||
list.push key
|
|
||||||
list
|
|
||||||
|
|
Loading…
Reference in a new issue