OSDN Git Service

test 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   \r
13   render: () ->\r
14     @restyle()\r
15     if @panel.is_visible(@operators)\r
16       this.$el.html('')\r
17       _this = this\r
18       l = @panel.scenario_elements()\r
19       _.each l, (element) =>\r
20         @add_element(element)\r
21     else\r
22       tag = new Tag.Div({\r
23         content: I18n.t('panels.hidden'), \r
24         class_name: 'hidden'\r
25       })\r
26       this.$el.html(tag.render().el)\r
27     this\r
28   \r
29   restyle: () ->\r
30     attr = {style: Pettanr.to_style(@style())}\r
31     this.$el.attr(attr)\r
32   \r
33   render_element: (element) ->\r
34   \r
35   element_class: (element) ->\r
36     Pettanr.Views[element.singular()].Element\r
37   \r
38   add_element: (element) ->\r
39     c = @element_class(element)\r
40     tag = new c({element: element, root: @panel, spot: @spot})\r
41     this.$el.append(tag.render().el)\r
42   \r
43   disp: (value) ->\r
44     Pettanr.to_s(value) + 'px'\r
45   \r
46   style: () ->\r
47     {\r
48       'width': @disp(@panel.get('width')), \r
49       'height': @disp(@panel.get('height')), \r
50       'border-style': 'solid', \r
51       'border-width': @disp(@panel.get('border')), \r
52       'border-color': 'black', \r
53       'background-color': 'white'\r
54     }\r
55   \r
56 class Pettanr.Views.Panel.Body.Edit extends Pettanr.Views.Panel.Body\r
57   \r
58   initialize: (options) ->\r
59     super(options)\r
60     @listenTo(@panel, 'input:width', @restyle)\r
61     @listenTo(@panel, 'input:height', @restyle)\r
62     @listenTo(@panel, 'input:border', @restyle)\r
63   \r
64   render: () ->\r
65     super()\r
66     this.$el.resizable {\r
67       stop: (event, ui) =>\r
68         w = parseInt(this.$el.width())\r
69         h = parseInt(this.$el.height())\r
70         @panel.set({width: w, height: h}, {silent: true})\r
71         @panel.trigger('resize')\r
72       , autoHide: true\r
73     }\r
74     this\r
75   \r
76   element_class: (element) ->\r
77     Pettanr.Views[element.singular()].Element.Edit\r
78   \r
79 class Pettanr.Views.Panel.Footer extends Backbone.View\r
80   tagName: 'table'\r
81   className: 'no-border'\r
82   \r
83   initialize: (options) ->\r
84     @panel = options.panel\r
85     @operators = options.operators\r
86   \r
87   render: () ->\r
88     this.$el.html('')\r
89     this.$el.append(\r
90       (new Pettanr.Views.Panel.Icon({item: @panel, half: true})).render().el\r
91     )\r
92     this.$el.append(\r
93       (new Pettanr.Views.Author.Icon({item: @panel.author(), half: true})).render().el\r
94     )\r
95     this.$el.append(Pettanr.AppHelper.distance_of_time_in_words_to_now(@panel.get('updated_at')))\r
96     if @panel.is_own(@operators)\r
97       this.$el.append(\r
98         (new Pettanr.Views.Show.LinkedEditButton({item: @panel})).render().el\r
99       )\r
100     this\r
101   \r