OSDN Git Service

change editor
[pettanr/pettanr.git] / app / assets / javascripts / pettanr / cache.js.coffee
1 class Pettanr.Cache\r
2   \r
3   constructor: (options) ->\r
4     @data = {}\r
5     _.extend(this, Backbone.Events)\r
6   \r
7   # return cached items\r
8   store: (items) ->\r
9     if _.isArray(items)\r
10       return_items = _.map items, (item) =>\r
11         r = @restore(item.cache_key())\r
12         r = @store(item) if !r\r
13         r\r
14     else\r
15       item = items\r
16       cached_item = @restore(item.cache_key())\r
17       return_items = if cached_item\r
18         cached_item  # merge?\r
19       else\r
20         @data[item.cache_key()] = item\r
21       @refresh(return_items)\r
22     return_items\r
23   \r
24   restore: (key) ->\r
25     k = if _.isString(key)\r
26       key\r
27     else\r
28       key.cache_key()\r
29     item = @data[k]\r
30     if item\r
31       @refresh(item)\r
32   \r
33   refresh: (item) ->\r
34     if item.expire_time\r
35       if Date.now() >= return_items.expire_time\r
36         @sync(item)\r
37     item\r
38   \r
39   sync: (item) ->\r
40     item.fetch().done =>\r
41       item.expire_time.setTime(Date.now() + 10 * 60 * 1000)\r
42   \r