OSDN Git Service

fix: devise
[pettanr/pettanr.git] / app / assets / javascripts / pettanr / cache.js.coffee
index f6c21fa..b2ebb3f 100644 (file)
@@ -1,6 +1,7 @@
 class Pettanr.Cache\r
   \r
   constructor: (options) ->\r
+    @operators = options.operators\r
     @data = {}\r
     @holds = {}\r
     _.extend(this, Backbone.Events)\r
@@ -19,7 +20,7 @@ class Pettanr.Cache
         cached_item  # merge?\r
       else\r
         @data[item.cache_key()] = item\r
-      @refresh(return_items)\r
+      @refresh(return_items)\r
     return_items\r
   \r
   restore: (key) ->\r
@@ -41,15 +42,19 @@ class Pettanr.Cache
     return @holds[item.cache_key()] if @holds[item.cache_key()]\r
     @holds[item.cache_key()] = item.clone()\r
   \r
+  fix: (item) ->\r
+    delete @holds[item.cache_key()]\r
+    @restore(item).fetch()\r
+  \r
   release: (item) ->\r
-    @data[item.cache_key()] = item  # overwrite\r
     delete @holds[item.cache_key()]\r
   \r
   refresh: (item) ->\r
-    if item.expire_time\r
-      if Date.now() >= return_items.expire_time\r
-        @sync(item)\r
-    item\r
+    @restore(item.cache_key()).fetch()\r
+    #if item.expire_time\r
+    #  if Date.now() >= return_items.expire_time\r
+    #    @sync(item)\r
+    #item\r
   \r
   sync: (item) ->\r
     item.fetch().done =>\r
@@ -63,9 +68,8 @@ class Pettanr.Cache.Retriever
   retrieve: (force) ->\r
     empty_item = new @model({id: @id})\r
     if force\r
-      # query\r
-      empty_item.fetch().done =>\r
-        @trigger('retrieve', empty_item)\r
+      # query (ex: folders/3?watch)\r
+      @retrieve_force(empty_item)\r
     else if @id\r
       # existence item\r
       item = Pettanr.cache.restore(empty_item)\r
@@ -79,10 +83,17 @@ class Pettanr.Cache.Retriever
       # new item\r
       @trigger('retrieve', empty_item)\r
   \r
-  edit: (model, id) ->\r
+  retrieve_force: (item) ->\r
+    item.fetch().done =>\r
+      @trigger('retrieve', item)\r
+  \r
+  edit: (options = {}) ->\r
     empty_item = new @model({id: @id})\r
-    item = Pettanr.cache.hold(empty_item)\r
+    item = empty_item.hold()\r
+    if options.with_elements\r
+      item = item.with_elements()\r
     item.fetch().done =>\r
-      @item.attributes = @item.replaced_attributes()\r
+      if options.with_elements\r
+        item.attributes = item.replaced_attributes({hold: true})\r
       @trigger('retrieve', item)\r
\r
+  \r