2 # operators: operators
\r
3 # spot: no opacity element
\r
4 class Pettanr.Views.Panel.Body extends Backbone.View
\r
7 initialize: (options) ->
\r
8 @panel = options.panel
\r
9 @operators = options.operators
\r
10 @spot = options.spot
\r
11 @class_name = 'pettanr-comic-panel'
\r
14 _.each @panel.zorderd_elements(), (element) =>
\r
15 @add_element(element)
\r
18 this.$el.addClass(@class_name)
\r
21 if not @is_visible()
\r
23 content: I18n.t('panels.hidden'),
\r
24 class_name: 'hidden'
\r
26 this.$el.html(tag.render().el)
\r
30 attr = {style: Pettanr.to_style(@style())}
\r
34 @panel.is_visible(@operators)
\r
36 render_element: (index) ->
\r
38 add_element: (element) ->
\r
39 index = element.get('z') - 1
\r
40 c = @element_class(element)
\r
41 view = new c({element: element, root: @panel, spot: @spot})
\r
42 @views.splice(index, 0, view)
\r
44 this.$el.append(view.render().el)
\r
47 element_class: (element) ->
\r
48 Pettanr.Views[element.singular()].Element
\r
51 Pettanr.to_s(value) + 'px'
\r
55 'width': @disp(@panel.get('width')),
\r
56 'height': @disp(@panel.get('height')),
\r
57 'border-style': 'solid',
\r
58 'border-width': @disp(@panel.get('border')),
\r
59 'border-color': 'black',
\r
60 'background-color': 'white'
\r
63 class Pettanr.Views.Panel.Body.Edit extends Pettanr.Views.Panel.Body
\r
65 initialize: (options) ->
\r
67 @listenTo(@panel, 'input:width', @restyle)
\r
68 @listenTo(@panel, 'input:height', @restyle)
\r
69 @listenTo(@panel, 'input:border', @restyle)
\r
70 @listenTo(@panel, 'active', @active)
\r
71 @listenTo(@panel, 'inactive', @inactive)
\r
75 this.$el.resizable {
\r
76 stop: (event, ui) =>
\r
77 w = parseInt(this.$el.width())
\r
78 h = parseInt(this.$el.height())
\r
79 @panel.set({width: w, height: h}, {silent: true})
\r
80 @panel.trigger('resize')
\r
86 true # show everytime as editor
\r
90 $('.ui-resizable-handle', this.el).map ->
\r
91 if $(@).parent().hasClass(n)
\r
92 $(@).css('display', 'block')
\r
96 $('.ui-resizable-handle', this.el).map ->
\r
97 if $(@).parent().hasClass(n)
\r
98 $(@).css('display', 'none')
\r
100 element_class: (element) ->
\r
101 Pettanr.Views[element.singular()].Element.Edit
\r
103 class Pettanr.Views.Panel.Footer extends Backbone.View
\r
105 className: 'no-border'
\r
107 initialize: (options) ->
\r
108 @panel = options.panel
\r
109 @operators = options.operators
\r
113 retriever = @panel.author()
\r
114 @listenTo(retriever, 'retrieve', @retrieve_author)
\r
115 retriever.retrieve()
\r
118 retrieve_author: (@author) ->
\r
119 @panel_icon = new Pettanr.Views.Panel.Icon({item: @panel, half: true})
\r
120 @author_icon = new Pettanr.Views.Author.Icon({item: @author, half: true})
\r
121 @edit_button = new Pettanr.Views.Show.LinkedEditButton({item: @panel})
\r
122 @listenTo(@panel_icon, 'click', @click_panel)
\r
123 @listenTo(@author_icon, 'click', @click_author)
\r
124 @listenTo(@edit_button, 'click', @click_edit)
\r
125 this.$el.append(@panel_icon.render().el)
\r
126 this.$el.append(@author_icon.render().el)
\r
128 Pettanr.AppHelper.distance_of_time_in_words_to_now(@panel.get('updated_at'))
\r
130 if @panel.is_own(@operators)
\r
131 this.$el.append(@edit_button.render().el)
\r
134 @trigger('click:panel')
\r
136 click_author: () ->
\r
137 @trigger('click:author')
\r
140 @trigger('click:edit')
\r