3 constructor: (options) ->
\r
5 _.extend(this, Backbone.Events)
\r
7 # return cached items
\r
10 return_items = _.map items, (item) =>
\r
11 r = @restore(item.cache_key())
\r
12 r = @store(item) if !r
\r
16 cached_item = @restore(item.cache_key())
\r
17 return_items = if cached_item
\r
18 cached_item # merge?
\r
20 @data[item.cache_key()] = item
\r
21 @refresh(return_items)
\r
25 k = if _.isString(key)
\r
33 retrieve: (model, id, force) ->
\r
34 empty_item = new model({id: id})
\r
37 empty_item.fetch().done =>
\r
38 @trigger('retrieve', empty_item)
\r
41 item = @store(empty_item)
\r
43 @trigger('retrieve', item)
\r
45 empty_item.fetch().done =>
\r
47 @trigger('retrieve', empty_item)
\r
50 @trigger('retrieve', empty_item)
\r
52 edit: (model, id) ->
\r
53 @listenTo(this, 'retrieve', @edit_retrieve)
\r
54 @retrieve(model, id)
\r
56 edit_retrieve: (item) ->
\r
57 editting_item = item.clone()
\r
59 editting_item.fetch().done =>
\r
60 @trigger('edit', editting_item)
\r
64 if Date.now() >= return_items.expire_time
\r
69 item.fetch().done =>
\r
70 item.expire_time.setTime(Date.now() + 10 * 60 * 1000)
\r
72 class Pettanr.Cache.Retriever
\r
74 constructor: (@model, @id) ->
\r
75 _.extend(this, Backbone.Events)
\r
77 retrieve: (force) ->
\r
78 empty_item = new @model({id: @id})
\r
81 empty_item.fetch().done =>
\r
82 @trigger('retrieve', empty_item)
\r
85 item = Pettanr.cache.restore(empty_item)
\r
87 @trigger('retrieve', item)
\r
89 empty_item.fetch().done =>
\r
90 Pettanr.cache.store(empty_item)
\r
91 @trigger('retrieve', empty_item)
\r
94 @trigger('retrieve', empty_item)
\r