OSDN Git Service

change: cache
authoryasushiito <yas@pen-chan.jp>
Fri, 10 Apr 2015 02:07:56 +0000 (11:07 +0900)
committeryasushiito <yas@pen-chan.jp>
Fri, 10 Apr 2015 02:07:56 +0000 (11:07 +0900)
app/assets/javascripts/controllers/panels.js.coffee
app/assets/javascripts/locmare/filer/body/file_body/file_item/caption/default/face/method.js.coffee
app/assets/javascripts/locmare/profiler/association/belongs_to.js.coffee
app/assets/javascripts/locmare/profiler/association/has_many.js.coffee
app/assets/javascripts/locmare/profiler/association/has_one.js.coffee
app/assets/javascripts/pettanr/cache.js.coffee

index cf61647..395cda7 100644 (file)
@@ -53,25 +53,20 @@ class Pettanr.PanelsController extends Pettanr.AppController
   \r
   new: () ->\r
     @trigger('title', @params)\r
-    @set_new()\r
-    @editor(@item.new_url())\r
+    @form_new()\r
     @trigger('done', @params)\r
   \r
   edit: () ->\r
     @trigger('title', @params)\r
-    @set_model()\r
-    panel = new Pettanr.Panel({id: @params['id']})\r
-    @item = panel.with_elements()\r
-    @item.fetch({cache: false}).done =>\r
-      @item.attributes = @item.replaced_attributes()\r
-      @editor(@item.edit_url())\r
-      @trigger('done', @params)\r
+    @form_edit()\r
+    @trigger('done', @params)\r
   \r
-  editor: () ->\r
-    editor = new Editor.PanelEditor({root_item: @item, operators: @operators})\r
-    editor.render()\r
-    @trigger('lock', @params, editor)\r
-    @trigger('ready', editor)\r
+  render_form: () ->\r
+    @item.attributes = @item.replaced_attributes()\r
+    @form = new Editor.PanelEditor({root_item: @item, operators: @operators})\r
+    @form.render()\r
+    @trigger('lock', @params, @form)\r
+    @trigger('ready', @form)\r
   \r
   create: () ->\r
     # @form is editor\r
index aababa4..3593b60 100644 (file)
@@ -3,12 +3,11 @@ class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule.CaptionItemCo
   initialize: (options) ->\r
     super(options)\r
   \r
-  # not render\r
+  # no render\r
   # get caption data and send message\r
   render: () ->\r
     if @item[@method_name()]\r
       @listenTo(@item, 'ready:caption', @ready_caption)\r
-      # fetch caption by manifest method_name\r
       @item[@method_name()]()\r
   \r
   method_name: () ->\r
index 2ca6d74..128030c 100644 (file)
@@ -4,15 +4,15 @@ class Locmare.ProfilerModule.AssociationModule.BelongsTo extends Backbone.View
   initialize: (options) ->\r
     @association = options.association\r
     @belongs_to_manifest = options.belongs_to_manifest\r
-    retriever = new Pettanr.Cache.Retriever(@parent_model(), @parent_id())\r
-    @listenTo(retriever, 'retrieve', @retrieve_item)\r
-    retriever.retrieve()\r
   \r
   clear: () ->\r
     this.$el.html('')\r
+    retriever = new Pettanr.Cache.Retriever(@parent_model(), @parent_id())\r
+    @listenTo(retriever, 'retrieve', @retrieve_parent_item)\r
+    retriever.retrieve()\r
     this\r
   \r
-  retrieve_item: (@item) ->\r
+  retrieve_parent_item: (@parent_item) ->\r
     @set_filer()\r
     @render()\r
   \r
@@ -23,8 +23,8 @@ class Locmare.ProfilerModule.AssociationModule.BelongsTo extends Backbone.View
   \r
   set_filer: () ->\r
     @filer = new Locmare.Filer({\r
-      item_name: @parent_model().item_name(), \r
-      items: [@item], \r
+      item_name: @parent_item.item_name(), \r
+      items: [@parent_item], \r
       pager: null, \r
       operators: @profiler().operators\r
     })\r
@@ -52,11 +52,11 @@ class Locmare.ProfilerModule.AssociationModule.BelongsTo extends Backbone.View
     @association.profiler\r
   \r
   add_pick: (target_model) ->\r
-    retriever = @item.retriever()\r
+    retriever = new Pettanr.Cache.Retriever(@parent_model(), @parent_id())\r
     @listenTo(retriever, 'retrieve', @retrieve_pick_item)\r
     retriever.retrieve()\r
   \r
-  retrieve_pick_item: (@item) ->\r
+  retrieve_pick_item: (@parent_item) ->\r
     @set_filer()\r
     @render()\r
     @filer.add_pick(target_model)\r
index 53e997b..57b0f06 100644 (file)
@@ -12,13 +12,13 @@ class Locmare.ProfilerModule.AssociationModule.HasMany extends Backbone.View
       @profiler().operators, \r
       {id: @item().get('id'), page: 1, page_size: 3}\r
     )\r
+  \r
+  clear: () ->\r
+    this.$el.html('')\r
     @list.open((page_status) =>\r
       @set_filer()\r
       @render()\r
     )\r
-  \r
-  clear: () ->\r
-    this.$el.html('')\r
     this\r
   \r
   render: () ->\r
index da4f150..6b69956 100644 (file)
@@ -12,13 +12,13 @@ class Locmare.ProfilerModule.AssociationModule.HasOne extends Backbone.View
       @profiler().operators, \r
       {id: @item().get('id')}\r
     )\r
+  \r
+  clear: () ->\r
+    this.$el.html('')\r
     @list.open((page_status) =>\r
       @set_filer()\r
       @render()\r
     )\r
-  \r
-  clear: () ->\r
-    this.$el.html('')\r
     this\r
   \r
   render: () ->\r
index 820b19f..f6c21fa 100644 (file)
@@ -2,6 +2,7 @@ class Pettanr.Cache
   \r
   constructor: (options) ->\r
     @data = {}\r
+    @holds = {}\r
     _.extend(this, Backbone.Events)\r
   \r
   # return cached items\r
@@ -30,34 +31,19 @@ class Pettanr.Cache
     #if item\r
     #  @refresh(item)\r
   \r
-  retrieve: (model, id, force) ->\r
-    empty_item = new model({id: id})\r
-    if force\r
-      # query\r
-      empty_item.fetch().done =>\r
-        @trigger('retrieve', empty_item)\r
-    else if id\r
-      # existence item\r
-      item = @store(empty_item)\r
-      if item\r
-        @trigger('retrieve', item)\r
-      else\r
-        empty_item.fetch().done =>\r
-          @store(empty_item)\r
-          @trigger('retrieve', empty_item)\r
+  is_hold: (item) ->\r
+    if @holds[item.cache_key()]\r
+      true\r
     else\r
-      # new item\r
-      @trigger('retrieve', empty_item)\r
+      false\r
   \r
-  edit: (model, id) ->\r
-    @listenTo(this, 'retrieve', @edit_retrieve)\r
-    @retrieve(model, id)\r
+  hold: (item) ->\r
+    return @holds[item.cache_key()] if @holds[item.cache_key()]\r
+    @holds[item.cache_key()] = item.clone()\r
   \r
-  edit_retrieve: (item) ->\r
-    editting_item = item.clone()\r
-    # get latest item\r
-    editting_item.fetch().done =>\r
-      @trigger('edit', editting_item)\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
@@ -93,3 +79,10 @@ class Pettanr.Cache.Retriever
       # new item\r
       @trigger('retrieve', empty_item)\r
   \r
+  edit: (model, id) ->\r
+    empty_item = new @model({id: @id})\r
+    item = Pettanr.cache.hold(empty_item)\r
+    item.fetch().done =>\r
+      @item.attributes = @item.replaced_attributes()\r
+      @trigger('retrieve', item)\r
\r