From: yasushiito Date: Wed, 24 Sep 2014 23:11:53 +0000 (+0900) Subject: add panel viewer X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=commitdiff_plain;h=209355e06a5aa7cf251a821de455ea252d93d46b;ds=sidebyside add panel viewer --- diff --git a/app/assets/javascripts/controllers/panels.js.coffee b/app/assets/javascripts/controllers/panels.js.coffee index a645252e..60caf947 100644 --- a/app/assets/javascripts/controllers/panels.js.coffee +++ b/app/assets/javascripts/controllers/panels.js.coffee @@ -19,8 +19,7 @@ class Pettanr.PanelsController extends Pettanr.AppController _this = this @item = new Pettanr.Panel({id: @item.get('id')}, {with_elements: true}) # retake panel for 'with_elements' mode @item.fetch().done -> - i = new Pettanr.RelationPanel(_this.item.attributes) - view = new Pettanr.Views.Panel.Body({ + view = new Pettanr.Views.Panel.Show({ el: "#pettanr", panel: _this.item, operators: _this.operators, diff --git a/app/assets/javascripts/controllers/scrolls.js.coffee b/app/assets/javascripts/controllers/scrolls.js.coffee index 929c62f9..3a62f1e7 100644 --- a/app/assets/javascripts/controllers/scrolls.js.coffee +++ b/app/assets/javascripts/controllers/scrolls.js.coffee @@ -10,6 +10,12 @@ class Pettanr.ScrollsController extends Pettanr.AppController @filer_list() show_html: () -> + view = new Pettanr.Views.Scroll.Show({ + el: "#pettanr", + item: @item, + operators: @operators + }) + view.render() show: () -> @set_show() diff --git a/app/assets/javascripts/manifest/model.js.coffee b/app/assets/javascripts/manifest/model.js.coffee index bbbcc6a9..f346b957 100644 --- a/app/assets/javascripts/manifest/model.js.coffee +++ b/app/assets/javascripts/manifest/model.js.coffee @@ -53,21 +53,22 @@ class Manifest.Model extends ManifestBase.Base child_model_manifests: () -> r = [] - _.each Manifest.items, (peta_manifest, peta_name) -> - next if not peta_manifest.is_element - next if not peta_manifest.parent_model_name == @name - r.push Manifest.models[peta_name] + _this = this + _.each Manifest.manifest().items, (peta_manifest, peta_name) -> + return if not peta_manifest.is_element() + return if peta_manifest.parent_model_name != _this.name + r.push Manifest.manifest().models[peta_name] r child_models: () -> - _.map @child_model_manifests, (child_model_manifest) -> - child_model_manifest.classify + _.map @child_model_manifests(), (child_model_manifest) -> + child_model_manifest.classify() child_element_names: () -> - _.map @child_models, (child_model) -> + _.map @child_models(), (child_model) -> @associations.child_element_name(child_model) child_element_name: (item_name) -> - @associations.child_element_name(child_model_manifest) + @associations.child_element_name(@child_model_manifest()) class Manifest.ModelModule diff --git a/app/assets/javascripts/manifest/model/association.js.coffee b/app/assets/javascripts/manifest/model/association.js.coffee index ac05eb3b..688b259b 100644 --- a/app/assets/javascripts/manifest/model/association.js.coffee +++ b/app/assets/javascripts/manifest/model/association.js.coffee @@ -25,13 +25,13 @@ class Manifest.ModelModule.Association extends ManifestBase.Values #yield belongs_to_manifest.model child_element_name: (child_model) -> - if is_has_one child_model - child_model.item_name + if @is_has_one(child_model) + child_model.item_name() else - child_model.table_name + child_model.table_name() is_has_one: (child_model) -> - if @has_one[child_model.item_name] + if @has_one[child_model.item_name()] true else false diff --git a/app/assets/javascripts/models/balloon.js.coffee b/app/assets/javascripts/models/balloon.js.coffee index 48fb028d..e6986f4a 100644 --- a/app/assets/javascripts/models/balloon.js.coffee +++ b/app/assets/javascripts/models/balloon.js.coffee @@ -19,6 +19,9 @@ class Pettanr.Balloon extends Peta.Element speech_balloon: () -> new Pettanr.SpeechBalloon({id: @get('speech_balloon_id')}) + system_picture: () -> + new Pettanr.SystemPicture({id: @get('system_picture_id')}) + r_url: () -> '/system_pictures/' + @system_picture().filename() diff --git a/app/assets/javascripts/models/panel.js.coffee b/app/assets/javascripts/models/panel.js.coffee index 2d900854..30a380ce 100644 --- a/app/assets/javascripts/models/panel.js.coffee +++ b/app/assets/javascripts/models/panel.js.coffee @@ -1,17 +1,5 @@ class Pettanr.Panel extends Peta.Root url: '/panels/' - relations: [ - { - type: Backbone.HasMany, - key: 'panel_pictures', - relatedModel: 'Pettanr.PanelPicture', - collectionType: 'Pettanr.PanelPictures', - reverseRelation: { - key: 'panel', - includeInJSON: 'id' - } - }, - ] @singular: () -> 'Panel' @@ -54,17 +42,3 @@ class Pettanr.Panel extends Peta.Root class Pettanr.Panels extends Backbone.Collection model: Pettanr.Panel url: '/panels/' -class Pettanr.RelationPanel extends Pettanr.Panel - relations: [ - { - type: Backbone.HasMany, - key: 'panel_pictures', - relatedModel: 'Pettanr.PanelPicture', - collectionType: 'Pettanr.PanelPictures', - reverseRelation: { - key: 'panel', - includeInJSON: 'id' - } - }, - ] - diff --git a/app/assets/javascripts/models/panel_picture.js.coffee b/app/assets/javascripts/models/panel_picture.js.coffee index 7efdae12..84aa33b5 100644 --- a/app/assets/javascripts/models/panel_picture.js.coffee +++ b/app/assets/javascripts/models/panel_picture.js.coffee @@ -31,11 +31,11 @@ class Pettanr.PanelPicture extends Peta.Element # res += '/' unless res.empty? # format of /v/1.png res - filename: () -> - @picture().filename() + '?subdir=' + @flip() + filename: (picture) -> + picture.filename() + '?subdir=' + @flip() - r_url: () -> - '/pictures/' + @filename() + r_url: (picture) -> + '/pictures/' + @filename(picture) tmb_opt_img_tag: (picture) -> new Pettanr.Image.SymbolPicture({ diff --git a/app/assets/javascripts/models/speech.js.coffee b/app/assets/javascripts/models/speech.js.coffee index 9bdffa1d..cd11afd0 100644 --- a/app/assets/javascripts/models/speech.js.coffee +++ b/app/assets/javascripts/models/speech.js.coffee @@ -35,7 +35,8 @@ class Pettanr.Speech extends Peta.Element scenario: () -> @boosts('read') - @render() + #@render() using wf renderer + @get('content') initialize: () -> if @id diff --git a/app/assets/javascripts/peta/element_nestable_content.js.coffee b/app/assets/javascripts/peta/element_nestable_content.js.coffee index 1d244231..c90638eb 100644 --- a/app/assets/javascripts/peta/element_nestable_content.js.coffee +++ b/app/assets/javascripts/peta/element_nestable_content.js.coffee @@ -1,7 +1,13 @@ class Peta.ElementNestableContent extends Peta.Content element_items: (element_model) -> n = @my_class().my_manifest().associations.child_element_name(element_model) - @my_class()[n]() + attrs = @get(n) + if attrs + if @my_class().my_manifest().associations.is_has_one(element_model) + new element_model(attrs) + else + _.map attrs, (attr) -> + new element_model(attr) elements_items: () -> _this = this diff --git a/app/assets/javascripts/peta/item.js.coffee b/app/assets/javascripts/peta/item.js.coffee index 2d5391a0..a166731b 100644 --- a/app/assets/javascripts/peta/item.js.coffee +++ b/app/assets/javascripts/peta/item.js.coffee @@ -117,7 +117,7 @@ class Peta.Item extends Backbone.Model _this = this c = @my_class().my_peta().boost _.each c, (boost_manifest, boost_name) -> - next if level == 'read' and boost_manifest.level == 'post' + return if level == 'read' and boost_manifest.level == 'post' _this.boost boost_manifest boost: (boost_manifest) -> diff --git a/app/assets/javascripts/peta/root.js.coffee b/app/assets/javascripts/peta/root.js.coffee index 25986f81..f6d24456 100644 --- a/app/assets/javascripts/peta/root.js.coffee +++ b/app/assets/javascripts/peta/root.js.coffee @@ -2,8 +2,10 @@ class Peta.Root extends Peta.ElementNestableContent parts_element: () -> r = [] - _.each @my_class.child_models, () -> - r += (@element_items(k) || []) + _this = this + _.each @my_class().child_models(), (k) -> + l = _this.element_items(k) + r = r.concat(l) r zorderd_elements: () -> @@ -14,7 +16,7 @@ class Peta.Root extends Peta.ElementNestableContent scenario_elements: () -> res = [] - _.each @parts_element, (e) -> + _.each @parts_element(), (e) -> res[e.get('t')] = e res diff --git a/app/assets/javascripts/views/balloons/element.js.coffee b/app/assets/javascripts/views/balloons/element.js.coffee index 170f838c..7a2d5e22 100644 --- a/app/assets/javascripts/views/balloons/element.js.coffee +++ b/app/assets/javascripts/views/balloons/element.js.coffee @@ -8,10 +8,13 @@ class Pettanr.Views.Balloon.Element extends Backbone.View @spot = options.spot render: () -> - attr = { - src: @element.system_picture.url(), - alt: @element.get('caption') - } - this.$el.attr(attr) + _this = this + system_picture = @element.system_picture() + system_picture.fetch().done -> + attr = { + src: system_picture.r_url(), + alt: _this.element.get('caption') + } + _this.$el.attr(attr) this diff --git a/app/assets/javascripts/views/ground_colors/element.js.coffee b/app/assets/javascripts/views/ground_colors/element.js.coffee index 90bbf61b..d72481aa 100644 --- a/app/assets/javascripts/views/ground_colors/element.js.coffee +++ b/app/assets/javascripts/views/ground_colors/element.js.coffee @@ -58,7 +58,7 @@ class Pettanr.Views.GroundColor.Element extends Backbone.View left: Pettanr.to_s(@div_x()) + '%', width: Pettanr.to_s(@div_width()) + '%', height: Pettanr.to_s(@div_height()) + '%', - 'background-color': '#' + ('000000' + Pettanr.to_s(@element.get('code'))).slice(-6) + 'background-color': '#' + ('000000' + @element.get('code').toString(16)).slice(-6) } @merge_opacity(r, opacity) if spot and spot != @element r diff --git a/app/assets/javascripts/views/panel_pictures/element.js.coffee b/app/assets/javascripts/views/panel_pictures/element.js.coffee index f979d25e..91465ded 100644 --- a/app/assets/javascripts/views/panel_pictures/element.js.coffee +++ b/app/assets/javascripts/views/panel_pictures/element.js.coffee @@ -10,10 +10,13 @@ class Pettanr.Views.PanelPicture.Element extends Backbone.View render: () -> @attr = {style: Pettanr.to_style(@opt_div_style())} this.$el.attr(@attr) - @img = new Tag.Img({ - attr: @opt_img_tag(@spot) - }) - this.$el.html(@img.render().el) + @picture = @element.picture() + _this = this + @picture.fetch().done -> + _this.img = new Tag.Img({ + attr: _this.opt_img_tag(_this.spot) + }) + _this.$el.html(_this.img.render().el) this opt_div_style: () -> @@ -30,7 +33,7 @@ class Pettanr.Views.PanelPicture.Element extends Backbone.View @merge_opacity(style, opacity) { vPicture: @element.get('id'), - src: @element.r_url(), + src: @element.r_url(@picture), width: Pettanr.to_s(Math.abs(@element.get('width'))) + 'px', height: Pettanr.to_s(Math.abs(@element.get('height'))) + 'px', alt: @element.get('caption'), diff --git a/app/assets/javascripts/views/panels/body.js.coffee b/app/assets/javascripts/views/panels/body.js.coffee index d23ea444..090c095a 100644 --- a/app/assets/javascripts/views/panels/body.js.coffee +++ b/app/assets/javascripts/views/panels/body.js.coffee @@ -16,8 +16,9 @@ class Pettanr.Views.Panel.Body extends Backbone.View if @panel.is_visible(@operators) this.$el.html('') _this = this - _.each @panel.scenario_elements(), (element) -> - c = Pettanr[element.singular()].Element + l = @panel.scenario_elements() + _.each l, (element) -> + c = Pettanr.Views[element.singular()].Element tag = new c({element: element, root: _this.panel, spot: _this.spot}) _this.$el.append(tag.render().el) else diff --git a/app/assets/javascripts/views/panels/show.js.coffee b/app/assets/javascripts/views/panels/show.js.coffee new file mode 100644 index 00000000..34fee5ae --- /dev/null +++ b/app/assets/javascripts/views/panels/show.js.coffee @@ -0,0 +1,21 @@ +# panel: panel item +# operators: operators +# spot: no opacity element +class Pettanr.Views.Panel.Show extends Backbone.View + tagName: 'div' + + initialize: (options) -> + @panel = options.panel + @operators = options.operators + @spot = options.spot + @body = new Pettanr.Views.Panel.Body({ + panel: @panel, + operators: @operators, + spot: @spot + }) + + render: () -> + this.$el.html('') + this.$el.append(@body.render().el) + this + diff --git a/app/assets/javascripts/views/scrolls/show.js.coffee b/app/assets/javascripts/views/scrolls/show.js.coffee new file mode 100644 index 00000000..7649606f --- /dev/null +++ b/app/assets/javascripts/views/scrolls/show.js.coffee @@ -0,0 +1,10 @@ +class Pettanr.Views.Scroll.Show extends Backbone.View + tagName: 'div' + + initialize: (options) -> + @operators = options.operators + + render: () -> + this.$el.html('') + this + diff --git a/app/assets/javascripts/views/speech_balloons/element.js.coffee b/app/assets/javascripts/views/speech_balloons/element.js.coffee index 92b7e67f..d1a61dff 100644 --- a/app/assets/javascripts/views/speech_balloons/element.js.coffee +++ b/app/assets/javascripts/views/speech_balloons/element.js.coffee @@ -6,21 +6,25 @@ class Pettanr.Views.SpeechBalloon.Element extends Backbone.View @element = options.element @root = options.root @spot = options.spot + @balloon = new Pettanr.Balloon(@element.get('balloon')) + @speech = new Pettanr.Speech(@element.get('speech')) render: () -> - attr = {style: @style()} - @balloon = new Pettanr.Views.Balloon.Element({ - element: @element, + @attr = {style: Pettanr.to_style(@style())} + @b = new Pettanr.Views.Balloon.Element({ + element: @balloon, root: @root, spot: @spot }) - @speech = new Pettanr.Views.Speech.Element({ - element: @element, + @s = new Pettanr.Views.Speech.Element({ + element: @speech, root: @root, spot: @spot }) this.$el.attr(@attr) - this.$el.html(@img.render().el) + this.$el.html('') + this.$el.append(@b.render().el) + this.$el.append(@s.render().el) this style: () -> diff --git a/app/assets/javascripts/views/speeches/element.js.coffee b/app/assets/javascripts/views/speeches/element.js.coffee index cf7110ad..62099acf 100644 --- a/app/assets/javascripts/views/speeches/element.js.coffee +++ b/app/assets/javascripts/views/speeches/element.js.coffee @@ -8,7 +8,7 @@ class Pettanr.Views.Speech.Element extends Backbone.View @spot = options.spot render: () -> - attr = {style: Pettanr.to_style(@outer_style())} + @outer_attr = {style: Pettanr.to_style(@outer_style())} @div = new Tag.Div({ attr: { style: Pettanr.to_style(@inner_style()) @@ -16,7 +16,7 @@ class Pettanr.Views.Speech.Element extends Backbone.View content: @element.scenario(), class_name: 'pettanr-comic-speech-inner' }) - this.$el.attr(@attr) + this.$el.attr(@outer_attr) this.$el.html(@div.render().el) this diff --git a/lib/locmare/form/field/tag/select.rb b/lib/locmare/form/field/tag/select.rb index f4878161..f3a629e9 100644 --- a/lib/locmare/form/field/tag/select.rb +++ b/lib/locmare/form/field/tag/select.rb @@ -21,8 +21,6 @@ module Locmare def items if self.source_by_model? - ::Manifest.manifest.system_resources.select_items[self.select_item_name] - else resource_model_name = self.model_attribute_manifest.source.resource_model_name resource_list_name = self.model_attribute_manifest.source.resource_list_name filter_column_name = self.model_attribute_manifest.source.filter_column_name @@ -31,14 +29,16 @@ module Locmare list.items(nil, {:id => filter_id}, 0, -1 # no limit ).map {|i| [i.caption, i.id] } + else + ::Manifest.manifest.system_resources.select_items[self.select_item_name] end end def source_by_model? case self.model_attribute_manifest.source.type - when 'model', 'filter' + when 'filter' true - when 'magic_number' + when 'model', 'magic_number' false else nil