X-Git-Url: http://git.osdn.net/view?p=pettanr%2Fpettanr.git;a=blobdiff_plain;f=app%2Fassets%2Fjavascripts%2Fviews%2Fpanels%2Fbody.js.coffee;h=9ae783eca2f49e62c9a69814fcbc755c9aca29cb;hp=e32dde41162c5973fdf9b2794bc6009c22cb8f66;hb=8ec74dec6d3b971a050d2a14979783ccd54f06a2;hpb=787b560f1977baa1786c35a4d6ff91369bc8dc72 diff --git a/app/assets/javascripts/views/panels/body.js.coffee b/app/assets/javascripts/views/panels/body.js.coffee index e32dde41..9ae783ec 100644 --- a/app/assets/javascripts/views/panels/body.js.coffee +++ b/app/assets/javascripts/views/panels/body.js.coffee @@ -1,23 +1,22 @@ # panel: panel item -# operators: operators # spot: no opacity element -class Pettanr.Views.Panel.Body extends Backbone.View +class Pettanr.Views.Panel.Body extends Pettanr.View tagName: 'div' - className: 'pettanr-comic-panel' initialize: (options) -> @panel = options.panel - @operators = options.operators @spot = options.spot + @class_name = 'pettanr-comic-panel' + @views = [] + if @is_visible() + _.each @panel.zorderd_elements(), (element) => + @add_element(element) render: () -> + this.$el.addClass(@class_name) @restyle() - if @panel.is_visible(@operators) - this.$el.html('') - l = @panel.scenario_elements() - _.each l, (element) => - @add_element(element) - else + #this.$el.html('') + if not @is_visible() tag = new Tag.Div({ content: I18n.t('panels.hidden'), class_name: 'hidden' @@ -29,15 +28,31 @@ class Pettanr.Views.Panel.Body extends Backbone.View attr = {style: Pettanr.to_style(@style())} this.$el.attr(attr) - render_element: (element) -> + is_visible: () -> + @panel.is_visible() - element_class: (element) -> - Pettanr.Views[element.singular()].Element + render_element: (index) -> add_element: (element) -> + index = element.get('z') - 1 c = @element_class(element) - tag = new c({element: element, root: @panel, spot: @spot}) - this.$el.append(tag.render().el) + view = new c({element: element, root: @panel, spot: @spot}) + @add_event(view) + @views.splice(index, 0, view) + if @is_visible() + this.$el.append(view.render().el) + view + + add_event: (view) -> + @listenTo(view, 'http_get', @http_get) + + remove_element: (element) -> + _.each @views, (view) => + if view.element.cid == element.cid + view.remove() + + element_class: (element) -> + Pettanr.Views[element.singular()].Element disp: (value) -> Pettanr.to_s(value) + 'px' @@ -52,6 +67,9 @@ class Pettanr.Views.Panel.Body extends Backbone.View 'background-color': 'white' } + http_get: (url) -> + @trigger('http_get', url) + class Pettanr.Views.Panel.Body.Edit extends Pettanr.Views.Panel.Body initialize: (options) -> @@ -59,6 +77,10 @@ class Pettanr.Views.Panel.Body.Edit extends Pettanr.Views.Panel.Body @listenTo(@panel, 'input:width', @restyle) @listenTo(@panel, 'input:height', @restyle) @listenTo(@panel, 'input:border', @restyle) + @listenTo(@panel, 'active', @active) + @listenTo(@panel, 'inactive', @inactive) + @listenTo(this, 'active', @active) + @listenTo(this, 'inactive', @inactive) render: () -> super() @@ -68,33 +90,34 @@ class Pettanr.Views.Panel.Body.Edit extends Pettanr.Views.Panel.Body h = parseInt(this.$el.height()) @panel.set({width: w, height: h}, {silent: true}) @panel.trigger('resize') - , autoHide: true + , autoHide: false } + @inactive() + _this = this + this.$el.mouseover -> + _this.trigger('active') + this.$el.mouseout -> + _this.trigger('inactive') this - element_class: (element) -> - Pettanr.Views[element.singular()].Element.Edit + is_visible: () -> + true # show everytime as editor -class Pettanr.Views.Panel.Footer extends Backbone.View - tagName: 'table' - className: 'no-border' + active: () -> + n = @class_name + $('.ui-resizable-handle', this.el).map -> + if $(@).parent().hasClass(n) + $(@).css('display', 'block') - initialize: (options) -> - @panel = options.panel - @operators = options.operators + inactive: () -> + n = @class_name + $('.ui-resizable-handle', this.el).map -> + if $(@).parent().hasClass(n) + $(@).css('display', 'none') - render: () -> - this.$el.html('') - this.$el.append( - (new Pettanr.Views.Panel.Icon({item: @panel, half: true})).render().el - ) - this.$el.append( - (new Pettanr.Views.Author.Icon({item: @panel.author(), half: true})).render().el - ) - this.$el.append(Pettanr.AppHelper.distance_of_time_in_words_to_now(@panel.get('updated_at'))) - if @panel.is_own(@operators) - this.$el.append( - (new Pettanr.Views.Show.LinkedEditButton({item: @panel})).render().el - ) - this + element_class: (element) -> + Pettanr.Views[element.singular()].Element.Edit + + # stop listen link msg + add_event: (view) ->