40 lines
707 B
CoffeeScript
40 lines
707 B
CoffeeScript
|
class @Autosave
|
||
|
constructor: (field, key) ->
|
||
|
@field = field
|
||
|
|
||
|
key = key.join("/") if key.join?
|
||
|
@key = "autosave/#{key}"
|
||
|
|
||
|
@field.data "autosave", this
|
||
|
|
||
|
@restore()
|
||
|
|
||
|
@field.on "input", => @save()
|
||
|
|
||
|
restore: ->
|
||
|
return unless window.localStorage?
|
||
|
|
||
|
try
|
||
|
text = window.localStorage.getItem @key
|
||
|
catch
|
||
|
return
|
||
|
|
||
|
@field.val text if text?.length > 0
|
||
|
@field.trigger "input"
|
||
|
|
||
|
save: ->
|
||
|
return unless window.localStorage?
|
||
|
|
||
|
text = @field.val()
|
||
|
if text?.length > 0
|
||
|
try
|
||
|
window.localStorage.setItem @key, text
|
||
|
else
|
||
|
@reset()
|
||
|
|
||
|
reset: ->
|
||
|
return unless window.localStorage?
|
||
|
|
||
|
try
|
||
|
window.localStorage.removeItem @key
|