X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fassets%2Fjavascripts%2Fpettanr%2Fcache.js.coffee;h=b2ebb3f966de89125ff3e9cdd7b787889be3c0de;hb=1d702bd3475998adf9f704eca73f4af7f35b051d;hp=f6c21fa4aa8e5885937f9dd605f35f8c8632ed2c;hpb=011acbc4bee1e83e966014a008f8226c4917e1d3;p=pettanr%2Fpettanr.git diff --git a/app/assets/javascripts/pettanr/cache.js.coffee b/app/assets/javascripts/pettanr/cache.js.coffee index f6c21fa4..b2ebb3f9 100644 --- a/app/assets/javascripts/pettanr/cache.js.coffee +++ b/app/assets/javascripts/pettanr/cache.js.coffee @@ -1,6 +1,7 @@ class Pettanr.Cache constructor: (options) -> + @operators = options.operators @data = {} @holds = {} _.extend(this, Backbone.Events) @@ -19,7 +20,7 @@ class Pettanr.Cache cached_item # merge? else @data[item.cache_key()] = item - @refresh(return_items) + # @refresh(return_items) return_items restore: (key) -> @@ -41,15 +42,19 @@ class Pettanr.Cache return @holds[item.cache_key()] if @holds[item.cache_key()] @holds[item.cache_key()] = item.clone() + fix: (item) -> + delete @holds[item.cache_key()] + @restore(item).fetch() + release: (item) -> - @data[item.cache_key()] = item # overwrite delete @holds[item.cache_key()] refresh: (item) -> - if item.expire_time - if Date.now() >= return_items.expire_time - @sync(item) - item + @restore(item.cache_key()).fetch() + #if item.expire_time + # if Date.now() >= return_items.expire_time + # @sync(item) + #item sync: (item) -> item.fetch().done => @@ -63,9 +68,8 @@ class Pettanr.Cache.Retriever retrieve: (force) -> empty_item = new @model({id: @id}) if force - # query - empty_item.fetch().done => - @trigger('retrieve', empty_item) + # query (ex: folders/3?watch) + @retrieve_force(empty_item) else if @id # existence item item = Pettanr.cache.restore(empty_item) @@ -79,10 +83,17 @@ class Pettanr.Cache.Retriever # new item @trigger('retrieve', empty_item) - edit: (model, id) -> + retrieve_force: (item) -> + item.fetch().done => + @trigger('retrieve', item) + + edit: (options = {}) -> empty_item = new @model({id: @id}) - item = Pettanr.cache.hold(empty_item) + item = empty_item.hold() + if options.with_elements + item = item.with_elements() item.fetch().done => - @item.attributes = @item.replaced_attributes() + if options.with_elements + item.attributes = item.replaced_attributes({hold: true}) @trigger('retrieve', item) - +