OSDN Git Service

47d71767061cc88379be2daba039cd33afe07386
[pettanr/pettanr.git] / app / assets / javascripts / locmare / form / field / helper / tail_angle.js.coffee
1 class Locmare.FormModule.FieldModule.HelperModule.TailAngle extends Locmare.FormModule.FieldModule.HelperModule.Base\r
2   className: 'r-wrap'\r
3   \r
4   # wrapper\r
5   initialize: (options) ->\r
6     super(options)\r
7     @down = new Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Down({field: @field, helper: this})\r
8     @up = new Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Up({field: @field, helper: this})\r
9     @reset = new Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Reset({field: @field, helper: this})\r
10     @listenTo(this, 'down', @down_click)\r
11     @listenTo(this, 'up', @up_click)\r
12     @listenTo(this, 'reset', @reset_click)\r
13     @speech_balloon_template = new Pettanr.SpeechBalloonTemplate({\r
14       id: @field.item().get('speech_balloon_template_id')\r
15     })\r
16     @speech_balloon_template.fetch({cache: true}).done =>\r
17       @r_step = @_r_step()\r
18   \r
19   render: () ->\r
20     @attr = {\r
21       style: 'display: block'\r
22     }\r
23     this.$el.attr(@attr)\r
24     this.$el.html('')\r
25     this.$el.append(@down.render().el)\r
26     this.$el.append(@up.render().el)\r
27     this.$el.append(@reset.render().el)\r
28     this\r
29   \r
30   refresh: () -> \r
31     @set_system_picture_id(@balloon_index())\r
32   \r
33   settings: () ->\r
34     @speech_balloon_template.parsed_settings()\r
35   \r
36   _r_step: () ->\r
37     settings = @settings()\r
38     settings['speech_balloon']['r_step']\r
39   \r
40   system_picture_id: (idx) ->\r
41     settings = @settings()\r
42     settings[idx]['balloon']['system_picture_id']\r
43   \r
44   # balloon r helper\r
45   \r
46   balloon_next_index: (d) ->\r
47     r_val = @field.val()\r
48     v = parseInt(r_val) + @r_step * d\r
49     tr = v % 360\r
50     tr = 360 + tr if tr < 0\r
51     offset = @r_step / 2.0\r
52     idx = Math.floor(((tr + offset) % 360) / @r_step)\r
53     if idx == 0\r
54       ir = 0\r
55     else\r
56       if v < 0\r
57         ir = Math.floor(idx * @r_step) - 360\r
58       else\r
59         ir = Math.floor(idx * @r_step)\r
60     @field.set(ir)\r
61     @field.tag.$el.val(ir)\r
62     idx\r
63   \r
64   balloon_index: () ->\r
65     v = parseInt(@field.val())\r
66     tr = v % 360\r
67     tr = 360 + tr if tr < 0\r
68     offset = @r_step / 2.0\r
69     idx = Math.floor(((tr + offset) % 360) / @r_step)\r
70     idx\r
71   \r
72   refresh_balloon: (idx) ->\r
73     @set_system_picture_id(idx)\r
74   \r
75   set_system_picture_id: (idx) ->\r
76     sp_id = @system_picture_id(idx)\r
77     @field.item().set({\r
78       system_picture_id: sp_id\r
79     }, {silent: true})\r
80     sp_id\r
81   \r
82   down_click: () ->\r
83     idx = @balloon_next_index(-1)\r
84     @refresh_balloon(idx)\r
85     @field.item().trigger('input:r')\r
86   \r
87   up_click: () ->\r
88     idx = @balloon_next_index(1)\r
89     @refresh_balloon(idx)\r
90     @field.item().trigger('input:r')\r
91   \r
92   reset_click: () ->\r
93     @refresh_balloon(0)\r
94     @field.item().trigger('input:r')\r
95   \r
96 class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule\r
97 class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Down extends Backbone.View\r
98   tagName: 'button'\r
99   className: 'r-down'\r
100   events: {\r
101     'click': 'click'\r
102   }\r
103   \r
104   initialize: (options) ->\r
105     @field = options.field\r
106     @helper = options.helper\r
107   \r
108   render: () ->\r
109     this.$el.html('<')\r
110     this\r
111   \r
112   click: () -> \r
113     @helper.trigger('down')\r
114     false\r
115     \r
116 class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Up extends Backbone.View\r
117   tagName: 'button'\r
118   className: 'r-up'\r
119   events: {\r
120     'click': 'click'\r
121   }\r
122   \r
123   initialize: (options) ->\r
124     @field = options.field\r
125     @helper = options.helper\r
126   \r
127   render: () ->\r
128     this.$el.html('>')\r
129     this\r
130   \r
131   click: () -> \r
132     @helper.trigger('up')\r
133     false\r
134   \r
135 class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Reset extends Backbone.View\r
136   tagName: 'button'\r
137   className: 'r-reset'\r
138   events: {\r
139     'click': 'click'\r
140   }\r
141   \r
142   initialize: (options) ->\r
143     @field = options.field\r
144     @helper = options.helper\r
145   \r
146   render: () ->\r
147     this.$el.html('reset')\r
148     this\r
149   \r
150   click: () -> \r
151     @field.tag.$el.val(0)\r
152     @helper.trigger('reset')\r
153     false\r
154   \r