OSDN Git Service

fix editor event
[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     index = element.get('z') - 1\r
44     c = @element_class(element)\r
45     view = new c({element: element, root: @panel, spot: @spot})\r
46     @views[index] = view\r
47     if @is_visible()\r
48       this.$el.append(view.render().el)\r
49     view\r
50   \r
51   element_class: (element) ->\r
52     Pettanr.Views[element.singular()].Element\r
53   \r
54   disp: (value) ->\r
55     Pettanr.to_s(value) + 'px'\r
56   \r
57   style: () ->\r
58     {\r
59       'width': @disp(@panel.get('width')), \r
60       'height': @disp(@panel.get('height')), \r
61       'border-style': 'solid', \r
62       'border-width': @disp(@panel.get('border')), \r
63       'border-color': 'black', \r
64       'background-color': 'white'\r
65     }\r
66   \r
67 class Pettanr.Views.Panel.Body.Edit extends Pettanr.Views.Panel.Body\r
68   \r
69   initialize: (options) ->\r
70     super(options)\r
71     @listenTo(@panel, 'input:width', @restyle)\r
72     @listenTo(@panel, 'input:height', @restyle)\r
73     @listenTo(@panel, 'input:border', @restyle)\r
74   \r
75   render: () ->\r
76     super()\r
77     this.$el.resizable {\r
78       stop: (event, ui) =>\r
79         w = parseInt(this.$el.width())\r
80         h = parseInt(this.$el.height())\r
81         @panel.set({width: w, height: h}, {silent: true})\r
82         @panel.trigger('resize')\r
83       , autoHide: true\r
84     }\r
85     this\r
86   \r
87   is_visible: () ->\r
88     true  # show everytime as editor\r
89   \r
90   collect_views: () ->\r
91     @views = []  # elements collect by dock\r
92   \r
93   element_class: (element) ->\r
94     Pettanr.Views[element.singular()].Element.Edit\r
95   \r
96 class Pettanr.Views.Panel.Footer extends Backbone.View\r
97   tagName: 'table'\r
98   className: 'no-border'\r
99   \r
100   initialize: (options) ->\r
101     @panel = options.panel\r
102     @operators = options.operators\r
103   \r
104   render: () ->\r
105     this.$el.html('')\r
106     this.$el.append(\r
107       (new Pettanr.Views.Panel.Icon({item: @panel, half: true})).render().el\r
108     )\r
109     this.$el.append(\r
110       (new Pettanr.Views.Author.Icon({item: @panel.author(), half: true})).render().el\r
111     )\r
112     this.$el.append(Pettanr.AppHelper.distance_of_time_in_words_to_now(@panel.get('updated_at')))\r
113     if @panel.is_own(@operators)\r
114       this.$el.append(\r
115         (new Pettanr.Views.Show.LinkedEditButton({item: @panel})).render().el\r
116       )\r
117     this\r
118   \r