//= require ./pettanr/operator
//= require ./pettanr/action_filter
//= require ./pettanr/proxy
+//= require ./pettanr/cache
//= require ./backbone.fetch-cache
//= require main
\r
set_show: () ->\r
@set_model()\r
- @item = new @my_model_class({id: @params['id']})\r
+ @item = Pettanr.cache.store(new @my_model_class({id: @params['id']}))\r
\r
filer_list: () ->\r
@set_list()\r
@binder_controller = @binder_action.controller()\r
@binder_model = Manifest.manifest().models[@binder_action.item_name]\r
@binder_model_class = @binder_model.classify()\r
- @item = new @binder_model_class({id: @params['id']})\r
+ @item = Pettanr.cache.store(new @binder_model_class({id: @params['id']}))\r
\r
play_list: () ->\r
@list.open(() =>\r
false\r
\r
show_prof: () ->\r
- @item.fetch({cache: true}).done =>\r
- @item.boosts 'post'\r
- profiler = new Locmare.Profiler({\r
- item_name: @item.item_name(), \r
- item: @item, \r
- operators: @operators\r
- })\r
- @listenTo(profiler, 'navigate', @navigate)\r
- profiler.render()\r
- @trigger('ready', profiler)\r
- @trigger('title', @params)\r
- @trigger('done', @params)\r
+ Pettanr.cache.restore(@item)\r
+ @item.boosts 'post'\r
+ profiler = new Locmare.Profiler({\r
+ item_name: @item.item_name(), \r
+ item: @item, \r
+ operators: @operators\r
+ })\r
+ @listenTo(profiler, 'navigate', @navigate)\r
+ profiler.render()\r
+ @trigger('ready', profiler)\r
+ @trigger('title', @params)\r
+ @trigger('done', @params)\r
\r
set_new: () ->\r
@set_model()\r
@trigger('done', @params)\r
\r
show_html: () -> \r
- @item.fetch({cache: true}).done =>\r
- @trigger('title', @params, @item.get('title'))\r
- show = new Pettanr.Views.Comic.Show({\r
- item: @item,\r
- operators: @operators\r
- })\r
- show.render()\r
- @trigger('ready', show)\r
- @trigger('done', @params)\r
+ Pettanr.cache.restore(@item)\r
+ @trigger('title', @params, @item.get('title'))\r
+ show = new Pettanr.Views.Comic.Show({\r
+ item: @item,\r
+ operators: @operators\r
+ })\r
+ show.render()\r
+ @trigger('ready', show)\r
+ @trigger('done', @params)\r
\r
show: () ->\r
@set_show()\r
\r
items: () ->\r
_.map @models, (model) =>\r
- new @model_class(model.attributes)\r
+ item = new @model_class(model.attributes)\r
+ Pettanr.cache.store(item)\r
\r
count: () ->\r
new Pettanr.CounterModel({}, {url: '/' + @action_manifest.counter_url(@params)})\r
window.onbeforeunload = (e)->\r
return('leave?')\r
Backbone.history.start({silent: true, pushState: true, root: '/'})\r
+ Pettanr.cache = new Pettanr.Cache()\r
\r
layout = if Pettanr.is_sns()\r
new Pettanr.Views.Layout.Sns()\r
} \r
\r
author: () ->\r
- new Pettanr.Author({id: @get('author_id')})\r
+ Pettanr.cache.store(new Pettanr.Author({id: @get('author_id')}, {expire_time: (new Date)}))\r
\r
pp: () ->\r
new Pettanr.PanelPicture({id: @get('pp_id')})\r
class Peta.Item extends Backbone.Model\r
+ \r
+ initialize: (attr = {}, options = {}) ->\r
+ super(attr, options)\r
+ @expire_time = options.expire_time\r
+ \r
@child_models: () ->\r
@my_manifest().child_models()\r
\r
dom_id: () ->\r
(@get('id') || '').toString()\r
\r
+ cache_key: () ->\r
+ @table_name() + '-' + @dom_id()\r
+ \r
dom_pool_type: () ->\r
@new_record ? 'stored' : 'new'\r
\r
else\r
$.timeago(datetime)\r
\r
- \r
- @cache = {}\r
+ \r
+ @cache = null # set by main\r
@credits = {}\r
\r
class Pettanr.Dialog extends Backbone.View\r
--- /dev/null
+class Pettanr.Cache\r
+ \r
+ constructor: (options) ->\r
+ @data = {}\r
+ _.extend(this, Backbone.Events)\r
+ \r
+ # return cached items\r
+ store: (items) ->\r
+ if _.isArray(items)\r
+ return_items = _.map items, (item) =>\r
+ r = @restore(item.cache_key())\r
+ r = @store(item) if !r\r
+ r\r
+ else\r
+ item = items\r
+ return_items = @data[item.cache_key()] = @restore(item.cache_key()) || item\r
+ @refresh(return_items)\r
+ return_items\r
+ \r
+ restore: (key) ->\r
+ k = if _.isString(key)\r
+ key\r
+ else\r
+ key.cache_key() # key = item\r
+ @refresh(k)\r
+ \r
+ refresh: (item) ->\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
+ item.expire_time.setTime(Date.now() + 10 * 60 * 1000)\r
+ \r
file_name: () ->\r
'/images/loading.gif'\r
\r
-class Pettanr.Views.Common.BackIcon extends Pettanr.Views.Common.EmptyIcon\r
- \r
- file_name: () ->\r
- '/images/back.png'\r
- \r
-class Pettanr.Views.Common.ForwardIcon extends Pettanr.Views.Common.EmptyIcon\r
- \r
- file_name: () ->\r
- '/images/forward.png'\r
- \r
class Pettanr.Views.Common.RootIcon extends Pettanr.Views.Common.EmptyIcon\r
\r
file_name: () ->\r