OSDN Git Service

fix board label
[pettanr/pettanr.git] / app / assets / javascripts / views / speech_balloons / element.js.coffee
1 class Pettanr.Views.SpeechBalloon.Element extends Backbone.View\r
2   tagName: 'div'\r
3   className: 'pettanr-comic-balloon'\r
4   \r
5   initialize: (options) ->\r
6     @element = options.element\r
7     @root = options.root\r
8     @spot = options.spot\r
9   \r
10   add_element: (element) ->\r
11     switch element.item_name()\r
12       when 'balloon'\r
13         @balloon = element\r
14         @add_balloon()\r
15         view = @balloon_view\r
16       when 'speech'\r
17         @speech = element\r
18         @add_speech()\r
19         view = @speech_view\r
20     view\r
21   \r
22   add_balloon: () ->\r
23     @set_style()\r
24     klass = @balloon_class()\r
25     @balloon_view = new klass({\r
26       parent: this, \r
27       element: @balloon, \r
28       root: @root,\r
29       spot: @spot\r
30     })\r
31     @balloon_view\r
32   \r
33   add_speech: () ->\r
34     klass = @speech_class()\r
35     @speech_view = new klass({\r
36       parent: this, \r
37       element: @speech, \r
38       root: @root,\r
39       spot: @spot\r
40     })\r
41     @speech_view\r
42   \r
43   render: () ->\r
44     @add_element(@element.get('balloon'))\r
45     @add_element(@element.get('speech'))\r
46     this.$el.html('')\r
47     this.$el.append(@balloon_view.clear().el)\r
48     this.$el.append(@speech_view.render().el)\r
49     this\r
50   \r
51   set_style: () ->\r
52     attr = {style: Pettanr.to_style(@style())}\r
53     this.$el.attr(attr)\r
54   \r
55   style: () ->\r
56     {\r
57       width: Pettanr.to_s(@balloon.get('width')) + 'px', \r
58       height: Pettanr.to_s(@balloon.get('height')) + 'px',\r
59       top: Pettanr.to_s(@balloon.get('y')) + 'px',\r
60       left: Pettanr.to_s(@balloon.get('x')) + 'px',\r
61       'z-index': @element.get('z')\r
62     }\r
63   \r
64   balloon_class: () ->\r
65     Pettanr.Views.Balloon.Element\r
66   \r
67   speech_class: () ->\r
68     Pettanr.Views.Speech.Element\r
69   \r
70 class Pettanr.Views.SpeechBalloon.Element.Edit extends Pettanr.Views.SpeechBalloon.Element\r
71   \r
72   initialize: (options) ->\r
73     super(options)\r
74     @listenTo(@element, 'active', @active)\r
75     @listenTo(@element, 'inactive', @inactive)\r
76   \r
77   render: () ->\r
78     this.$el.html('')\r
79     this\r
80   \r
81   set_style: () ->\r
82     super()\r
83   \r
84   add_balloon: () ->\r
85     super()\r
86     this.$el.append(@balloon_view.clear().el)\r
87     @listenTo(@balloon, 'input:r', @input_r)\r
88     @listenTo(@balloon, 'input:x', @set_style)\r
89     @listenTo(@balloon, 'input:y', @set_style)\r
90     @listenTo(@balloon, 'input:width', @set_style)\r
91     @listenTo(@balloon, 'input:height', @set_style)\r
92     bln = @balloon\r
93     this.$el.draggable {\r
94       stop: (event, ui) ->\r
95         left = Math.floor($(@).position().left)\r
96         top = Math.floor($(@).position().top)\r
97         bln.set({x: left, y: top}, {silent: true})\r
98         bln.trigger('move')\r
99     }\r
100   \r
101   add_speech: () ->\r
102     super()\r
103     this.$el.append(@speech_view.render().el)\r
104   \r
105   # listen from speech\r
106   input_r: () ->\r
107     @trigger('input:r')\r
108   \r
109   active: () ->\r
110     $('.ui-resizable-handle', this.el).map ->\r
111       $(@).css('display', 'block')\r
112   \r
113   inactive: () ->\r
114     $('.ui-resizable-handle', this.el).map ->\r
115       $(@).css('display', 'none')\r
116   \r
117   element_class: (element) ->\r
118     Pettanr.Views[element.singular()].Element.Edit\r
119   \r
120   balloon_class: () ->\r
121     Pettanr.Views.Balloon.Element.Edit\r
122   \r
123   speech_class: () ->\r
124     Pettanr.Views.Speech.Element.Edit\r
125   \r