From: yasushiito Date: Thu, 27 Mar 2014 23:13:16 +0000 (+0900) Subject: fix foreign_filter list includes X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=commitdiff_plain;h=db2ae5f3a07c071851a78dd76fc007db3dfda570 fix foreign_filter list includes --- diff --git a/app/assets/javascripts/manifest/work/items.js.coffee.erb b/app/assets/javascripts/manifest/work/items.js.coffee.erb index 41defde9..57179e76 100644 --- a/app/assets/javascripts/manifest/work/items.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/items.js.coffee.erb @@ -52,7 +52,7 @@ speech_balloon: { type: 'element', args: { - parent_model_name: 'speech_balloon', + parent_model_name: 'panel', }, }, balloon: { @@ -64,7 +64,7 @@ speech: { type: 'element', args: { - parent_model_name: 'scroll', + parent_model_name: 'speech_balloon', }, }, ground_picture: { diff --git a/app/assets/javascripts/manifest/work/list_groups.js.coffee.erb b/app/assets/javascripts/manifest/work/list_groups.js.coffee.erb index 14f21931..8cf7750b 100644 --- a/app/assets/javascripts/manifest/work/list_groups.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/list_groups.js.coffee.erb @@ -45,7 +45,9 @@ by_author: { type: 'foreign_filter', args: { - tree_name: 'scroll_owner', + includes: { + type: 'method', + }, }, }, }, @@ -84,7 +86,9 @@ by_author: { type: 'foreign_filter', args: { - tree_name: 'comic_owner', + includes: { + type: 'method', + }, }, }, play: { @@ -110,7 +114,9 @@ by_author: { type: 'foreign_filter', args: { - tree_name: 'comic_owner', + includes: { + type: 'method', + }, }, }, }, @@ -161,7 +167,9 @@ by_author: { type: 'foreign_filter', args: { - tree_name: 'sheet_owner', + includes: { + type: 'method', + }, }, }, }, @@ -209,7 +217,9 @@ by_author: { type: 'foreign_filter', args: { - tree_name: 'panel_owner', + includes: { + type: 'method', + }, }, }, }, @@ -232,7 +242,9 @@ by_author: { type: 'foreign_filter', args: { - tree_name: 'panel_owner', + includes: { + type: 'method', + }, }, }, }, @@ -255,7 +267,9 @@ by_author: { type: 'foreign_filter', args: { - tree_name: 'panel_owner', + includes: { + type: 'method', + }, }, }, }, @@ -275,7 +289,9 @@ by_author: { type: 'foreign_filter', args: { - tree_name: 'panel_owner', + includes: { + type: 'method', + }, }, }, }, @@ -295,7 +311,9 @@ by_author: { type: 'foreign_filter', args: { - tree_name: 'panel_owner', + includes: { + type: 'method', + }, }, }, }, @@ -315,7 +333,9 @@ by_author: { type: 'foreign_filter', args: { - tree_name: 'panel_owner', + includes: { + type: 'method', + }, }, }, }, diff --git a/app/models/balloon.rb b/app/models/balloon.rb index a4c04cb2..ebca4eff 100644 --- a/app/models/balloon.rb +++ b/app/models/balloon.rb @@ -43,6 +43,16 @@ self.system_picture_id = 1 'balloons.updated_at desc' end + def self.by_author_list_includes + { + :speech_balloon => { + :panel => { + :author => {} + } + } + } + end + def self.list_opt {:speech_balloon => {:panel => {:author => {}}, :speech => {}, :speech_balloon_template => {} }} end diff --git a/app/models/ground_color.rb b/app/models/ground_color.rb index 581cfa92..e750723b 100644 --- a/app/models/ground_color.rb +++ b/app/models/ground_color.rb @@ -11,6 +11,14 @@ class GroundColor < Peta::Element validates :z, :presence => true, :numericality => {:greater_than => 0} validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0} + def self.by_author_list_includes + { + :panel => { + :author => {} + } + } + end + def self.list_opt_for_panel { :ground_colors => { diff --git a/app/models/ground_picture.rb b/app/models/ground_picture.rb index eb9f38d0..bed742ad 100644 --- a/app/models/ground_picture.rb +++ b/app/models/ground_picture.rb @@ -13,6 +13,14 @@ class GroundPicture < Peta::Element @@repeat_texts = ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'] + def self.by_author_list_includes + { + :panel => { + :author => {} + } + } + end + def self.list_opt_for_panel { :ground_pictures => { diff --git a/app/models/panel_picture.rb b/app/models/panel_picture.rb index 2943844a..e8062177 100644 --- a/app/models/panel_picture.rb +++ b/app/models/panel_picture.rb @@ -13,6 +13,14 @@ class PanelPicture < Peta::Element validates :z, :presence => true, :numericality => {:greater_than => 0} validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0} + def self.by_author_list_includes + { + :panel => { + :author => {} + } + } + end + def self.list_opt_for_panel { :panel_pictures => { diff --git a/app/models/scroll_panel.rb b/app/models/scroll_panel.rb index 8d9f4223..3b8b76c2 100644 --- a/app/models/scroll_panel.rb +++ b/app/models/scroll_panel.rb @@ -33,6 +33,14 @@ class ScrollPanel < Peta::Leaf 'scrolls.visible > 0' end + def self.by_author_list_includes + { + :scroll => { + :author => {} + } + } + end + def self.play_list_where cid ['scroll_panels.scroll_id = ?', cid] end diff --git a/app/models/sheet_panel.rb b/app/models/sheet_panel.rb index 28944840..15612349 100644 --- a/app/models/sheet_panel.rb +++ b/app/models/sheet_panel.rb @@ -53,6 +53,14 @@ class SheetPanel < Peta::Element SheetPanel.where(self.play_list_where(sheet.id)).includes(SheetPanel.list_opt).order('sheet_panels.t') end + def self.by_author_list_includes + { + :sheet => { + :author => {} + } + } + end + def self.list_opt { :author => {}, diff --git a/app/models/speech.rb b/app/models/speech.rb index 36cae49b..cf812498 100644 --- a/app/models/speech.rb +++ b/app/models/speech.rb @@ -60,6 +60,16 @@ class Speech < Peta::Element 'speeches.updated_at desc' end + def self.by_author_list_includes + { + :speech_balloon => { + :panel => { + :author => {} + } + } + } + end + def self.list_opt {:speech_balloon => {:panel => {:author => {}}, :balloon => {}, :speech_balloon_template => {}} } end diff --git a/app/models/speech_balloon.rb b/app/models/speech_balloon.rb index 098e0d06..a7f08e4a 100644 --- a/app/models/speech_balloon.rb +++ b/app/models/speech_balloon.rb @@ -15,6 +15,14 @@ class SpeechBalloon < Peta::Element validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0} validates :settings, :extend_speech_balloon => true + def self.by_author_list_includes + { + :panel => { + :author => {} + } + } + end + def self.list_opt_for_panel { :speech_balloons => {:balloon => {}, :speech => {}} diff --git a/app/models/story.rb b/app/models/story.rb index 6d2aaf9e..efb6666b 100644 --- a/app/models/story.rb +++ b/app/models/story.rb @@ -51,6 +51,14 @@ class Story < Peta::Binder {:comic => {:author => {}} } end + def self.by_author_list_includes + { + :comic => { + :author => {} + } + } + end + def self.list_json_opt {:include => {:comic => {:include => {:author => {}}} }} end diff --git a/app/models/story_sheet.rb b/app/models/story_sheet.rb index d1a3961a..e0f98edf 100644 --- a/app/models/story_sheet.rb +++ b/app/models/story_sheet.rb @@ -59,6 +59,16 @@ class StorySheet < Peta::Leaf Kaminari.paginate_array(Array.new(StorySheet.where(self.play_sheet_where(story.id)).includes(StorySheet.list_opt).count, nil)).page(page).per(1) end + def self.by_author_list_includes + { + :story => { + :comic => { + :author => {} + } + } + } + end + def self.list_opt { :author => {}, diff --git a/lib/local_manifest/list_group/list/includes/auto.rb b/lib/local_manifest/list_group/list/includes/auto.rb index 26661681..6e6effd5 100644 --- a/lib/local_manifest/list_group/list/includes/auto.rb +++ b/lib/local_manifest/list_group/list/includes/auto.rb @@ -24,9 +24,7 @@ module LocalManifest end def parent_includes parent_model - p parent_model.item_name if parent_model.parent_model - p ({parent_model.item_name => parent_includes(parent_model.parent_model)}) {parent_model.item_name => parent_includes(parent_model.parent_model)} else {parent_model.item_name => {}} @@ -34,7 +32,6 @@ module LocalManifest end def includes - p self.model.item_name if self.model.parent_model self.parent_includes self.model.parent_model else diff --git a/lib/locmare/list_group/list/foreign_filter.rb b/lib/locmare/list_group/list/foreign_filter.rb index 007e072c..e25b3ef0 100644 --- a/lib/locmare/list_group/list/foreign_filter.rb +++ b/lib/locmare/list_group/list/foreign_filter.rb @@ -15,7 +15,10 @@ module Locmare end def include_hash - @model_manifest.tree[@tree_name].include_hash + # no call super + # foreign_filter includes manifest must configure type: 'method' + # super + @includes.includes end end diff --git a/lib/manifest/model/association.rb b/lib/manifest/model/association.rb index b9e101c4..f1dfbe34 100644 --- a/lib/manifest/model/association.rb +++ b/lib/manifest/model/association.rb @@ -35,7 +35,6 @@ module Manifest if @parent.classify.my_peta.type == 'leaf' next unless belongs_to_manifest.model.my_peta.type == 'binder' end - p [@parent.classify , belongs_to_manifest.model] yield belongs_to_manifest.model end end diff --git a/lib/peta/binder.rb b/lib/peta/binder.rb index 64b52e6c..dda200d7 100644 --- a/lib/peta/binder.rb +++ b/lib/peta/binder.rb @@ -4,17 +4,9 @@ module Peta # Dynamic Methods - def self._leaf_tree_name - self.my_peta.leaf_tree_name - end - def self.load_manifest super # Class Methods - n = self._leaf_tree_name - define_singleton_method("leaf_tree_name") do - n - end # Instance Methods define_method("leaf_items") do |leaf_model| self.__send__ self.class.my_manifest.associations.child_element_name(leaf_model) diff --git a/lib/peta/element.rb b/lib/peta/element.rb index d666e714..e1abd935 100644 --- a/lib/peta/element.rb +++ b/lib/peta/element.rb @@ -7,10 +7,9 @@ module Peta def self.load_manifest super # Class Methods - self.my_manifest.associations.each_parent_model do |parent_model| - define_singleton_method("parent_model") do - parent_model - end + pm = Manifest.manifest.models[self.my_peta.parent_model_name].classify + define_singleton_method("parent_model") do + pm end # Instance Methods end diff --git a/lib/peta/element_nestable_content.rb b/lib/peta/element_nestable_content.rb index 315bdce8..223b987f 100644 --- a/lib/peta/element_nestable_content.rb +++ b/lib/peta/element_nestable_content.rb @@ -4,21 +4,9 @@ module Peta # Dynamic Methods - def self._element_tree_name - self.my_peta.element_tree_name - end - def self.load_manifest super # Class Methods - n = self._element_tree_name - define_singleton_method("element_tree_name") do - n - end - c = self.child_models(self.element_tree_name) - define_singleton_method("element_models") do - c - end # Instance Methods define_method("element_items") do |element_model| self.__send__ self.class.my_manifest.associations.child_element_name(element_model) diff --git a/lib/peta/leaf.rb b/lib/peta/leaf.rb index 81574a9c..243c60d9 100644 --- a/lib/peta/leaf.rb +++ b/lib/peta/leaf.rb @@ -7,10 +7,9 @@ module Peta def self.load_manifest super # Class Methods - self.my_manifest.associations.each_parent_model do |parent_model| - define_singleton_method("parent_model") do - parent_model - end + pm = Manifest.manifest.models[self.my_peta.parent_model_name].classify + define_singleton_method("parent_model") do + pm end # Instance Methods end diff --git a/public/local_manifest.json b/public/local_manifest.json index 56bd0d68..e7a991fa 100644 --- a/public/local_manifest.json +++ b/public/local_manifest.json @@ -45,7 +45,9 @@ "by_author": { "type": "foreign_filter", "args": { - "tree_name": "scroll_owner" + "includes": { + "type": "method" + } } } } @@ -84,7 +86,9 @@ "by_author": { "type": "foreign_filter", "args": { - "tree_name": "comic_owner" + "includes": { + "type": "method" + } } }, "play": { @@ -110,7 +114,9 @@ "by_author": { "type": "foreign_filter", "args": { - "tree_name": "comic_owner" + "includes": { + "type": "method" + } } } } @@ -161,7 +167,9 @@ "by_author": { "type": "foreign_filter", "args": { - "tree_name": "sheet_owner" + "includes": { + "type": "method" + } } } } @@ -209,7 +217,9 @@ "by_author": { "type": "foreign_filter", "args": { - "tree_name": "panel_owner" + "includes": { + "type": "method" + } } } } @@ -232,7 +242,9 @@ "by_author": { "type": "foreign_filter", "args": { - "tree_name": "panel_owner" + "includes": { + "type": "method" + } } } } @@ -255,7 +267,9 @@ "by_author": { "type": "foreign_filter", "args": { - "tree_name": "panel_owner" + "includes": { + "type": "method" + } } } } @@ -275,7 +289,9 @@ "by_author": { "type": "foreign_filter", "args": { - "tree_name": "panel_owner" + "includes": { + "type": "method" + } } } } @@ -295,7 +311,9 @@ "by_author": { "type": "foreign_filter", "args": { - "tree_name": "panel_owner" + "includes": { + "type": "method" + } } } } @@ -315,7 +333,9 @@ "by_author": { "type": "foreign_filter", "args": { - "tree_name": "panel_owner" + "includes": { + "type": "method" + } } } } diff --git a/public/manifest.json b/public/manifest.json index 7d86b1a3..31714592 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -47,7 +47,7 @@ "speech_balloon": { "type": "element", "args": { - "parent_model_name": "speech_balloon" + "parent_model_name": "panel" } }, "balloon": { @@ -59,7 +59,7 @@ "speech": { "type": "element", "args": { - "parent_model_name": "scroll" + "parent_model_name": "speech_balloon" } }, "ground_picture": {