OSDN Git Service

add editor event of speechballoon
[pettanr/pettanr.git] / app / assets / javascripts / views / panels / body.js.coffee
1 # panel: panel item\r
2 # operators: operators\r
3 # spot: no opacity element\r
4 class Pettanr.Views.Panel.Body extends Backbone.View\r
5   tagName: 'div'\r
6   className: 'pettanr-comic-panel'\r
7   \r
8   initialize: (options) ->\r
9     @panel = options.panel\r
10     @operators = options.operators\r
11     @spot = options.spot\r
12     @collect_views()\r
13   \r
14   render: () ->\r
15     @restyle()\r
16     this.$el.html('')\r
17     if @is_visible()\r
18       _.each @views, (view) =>\r
19         this.$el.append(view.render().el)\r
20     else\r
21       tag = new Tag.Div({\r
22         content: I18n.t('panels.hidden'), \r
23         class_name: 'hidden'\r
24       })\r
25       this.$el.html(tag.render().el)\r
26     this\r
27   \r
28   collect_views: () ->\r
29     @views = []\r
30     _.each @panel.scenario_elements(), (element) =>\r
31       @add_element(element)\r
32   \r
33   restyle: () ->\r
34     attr = {style: Pettanr.to_style(@style())}\r
35     this.$el.attr(attr)\r
36   \r
37   is_visible: () ->\r
38     @panel.is_visible(@operators)\r
39   \r
40   render_element: (index) ->\r
41   \r
42   add_element: (element) ->\r
43     c = @element_class(element)\r
44     @views[element.get('z')-1] = new c({element: element, root: @panel, spot: @spot})\r
45   \r
46   element_class: (element) ->\r
47     Pettanr.Views[element.singular()].Element\r
48   \r
49   disp: (value) ->\r
50     Pettanr.to_s(value) + 'px'\r
51   \r
52   style: () ->\r
53     {\r
54       'width': @disp(@panel.get('width')), \r
55       'height': @disp(@panel.get('height')), \r
56       'border-style': 'solid', \r
57       'border-width': @disp(@panel.get('border')), \r
58       'border-color': 'black', \r
59       'background-color': 'white'\r
60     }\r
61   \r
62 class Pettanr.Views.Panel.Body.Edit extends Pettanr.Views.Panel.Body\r
63   \r
64   initialize: (options) ->\r
65     super(options)\r
66     @listenTo(@panel, 'input:width', @restyle)\r
67     @listenTo(@panel, 'input:height', @restyle)\r
68     @listenTo(@panel, 'input:border', @restyle)\r
69   \r
70   render: () ->\r
71     super()\r
72     this.$el.resizable {\r
73       stop: (event, ui) =>\r
74         w = parseInt(this.$el.width())\r
75         h = parseInt(this.$el.height())\r
76         @panel.set({width: w, height: h}, {silent: true})\r
77         @panel.trigger('resize')\r
78       , autoHide: true\r
79     }\r
80     this\r
81   \r
82   is_visible: () ->\r
83     true  # show everytime as editor\r
84   \r
85   collect_views: () ->\r
86     @views = []  # elements collect by dock\r
87   \r
88   element_class: (element) ->\r
89     Pettanr.Views[element.singular()].Element.Edit\r
90   \r
91 class Pettanr.Views.Panel.Footer extends Backbone.View\r
92   tagName: 'table'\r
93   className: 'no-border'\r
94   \r
95   initialize: (options) ->\r
96     @panel = options.panel\r
97     @operators = options.operators\r
98   \r
99   render: () ->\r
100     this.$el.html('')\r
101     this.$el.append(\r
102       (new Pettanr.Views.Panel.Icon({item: @panel, half: true})).render().el\r
103     )\r
104     this.$el.append(\r
105       (new Pettanr.Views.Author.Icon({item: @panel.author(), half: true})).render().el\r
106     )\r
107     this.$el.append(Pettanr.AppHelper.distance_of_time_in_words_to_now(@panel.get('updated_at')))\r
108     if @panel.is_own(@operators)\r
109       this.$el.append(\r
110         (new Pettanr.Views.Show.LinkedEditButton({item: @panel})).render().el\r
111       )\r
112     this\r
113   \r