OSDN Git Service

ccc6687d50e28785193f877728f734cc02ce0b64
[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     @speech_balloon_template = new Pettanr.SpeechBalloonTemplate({\r
11       id: @field.item().get('speech_balloon_template_id')\r
12     })\r
13     @speech_balloon_template.fetch({cache: true}).done =>\r
14       @r_step = @_r_step()\r
15   \r
16   render: () ->\r
17     @attr = {\r
18       style: 'display: block'\r
19     }\r
20     this.$el.attr(@attr)\r
21     this.$el.html('')\r
22     this.$el.append(@down.render().el)\r
23     this.$el.append(@up.render().el)\r
24     this.$el.append(@reset.render().el)\r
25     this\r
26   \r
27   settings: () ->\r
28     @speech_balloon_template.parsed_settings()\r
29   \r
30   _r_step: () ->\r
31     settings = @settings()\r
32     settings['speech_balloon']['r_step']\r
33   \r
34   system_picture_id: (idx) ->\r
35     settings = @settings()\r
36     settings[idx]['balloon']['system_picture_id']\r
37   \r
38   # balloon r helper\r
39   \r
40   balloon_next_index: (d)  ->\r
41     r_val = @field.val()\r
42     v = parseInt(r_val) + @r_step * d\r
43     tr = v % 360\r
44     tr = 360 + tr if tr < 0\r
45     offset = @r_step / 2.0\r
46     idx = Math.floor(((tr + offset) % 360) / @r_step)\r
47     if idx == 0\r
48       ir = 0\r
49     else\r
50       if v < 0\r
51         ir = Math.floor(idx * @r_step) - 360\r
52       else\r
53         ir = Math.floor(idx * @r_step)\r
54     @field.set(ir)\r
55     @field.tag.$el.val(ir)\r
56     idx\r
57   \r
58   balloon_index: ()  ->\r
59     v = parseInt(@field.val())\r
60     tr = v % 360\r
61     tr = 360 + tr if tr < 0\r
62     offset = @r_step / 2.0\r
63     idx = Math.floor(((tr + offset) % 360) / @r_step)\r
64     idx\r
65   \r
66   refresh_balloon: (idx)  ->\r
67     return\r
68     sp_id = @system_picture_id(idx)\r
69     fn = '/system_pictures/' + String(sp_id) + '.png'\r
70     ofn = bln.attr('src')\r
71     if fn == ofn\r
72     else\r
73       if bln.attr('src')\r
74         bln.attr('src', fn) \r
75         $(balloon_trace + 'system_picture_id').val(sp_id)\r
76   \r
77 class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule\r
78 class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Down extends Backbone.View\r
79   tagName: 'button'\r
80   className: 'r-down'\r
81   events: {\r
82     'click': 'click'\r
83   }\r
84   \r
85   initialize: (options) ->\r
86     @field = options.field\r
87     @helper = options.helper\r
88   \r
89   render: () ->\r
90     this.$el.html('<')\r
91     this\r
92   \r
93   click: () -> \r
94     idx = @helper.balloon_next_index(-1)\r
95     @helper.refresh_balloon(idx)\r
96     @field.trigger('change')\r
97     false\r
98     \r
99 class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Up extends Backbone.View\r
100   tagName: 'button'\r
101   className: 'r-up'\r
102   events: {\r
103     'click': 'click'\r
104   }\r
105   \r
106   initialize: (options) ->\r
107     @field = options.field\r
108     @helper = options.helper\r
109   \r
110   render: () ->\r
111     this.$el.html('>')\r
112     this\r
113   \r
114   click: () -> \r
115     idx = @helper.balloon_next_index(1)\r
116     @helper.refresh_balloon(idx)\r
117     @field.trigger('change')\r
118     false\r
119   \r
120 class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Reset extends Backbone.View\r
121   tagName: 'button'\r
122   className: 'r-reset'\r
123   events: {\r
124     'click': 'click'\r
125   }\r
126   \r
127   initialize: (options) ->\r
128     @field = options.field\r
129     @helper = options.helper\r
130   \r
131   render: () ->\r
132     this.$el.html('reset')\r
133     this\r
134   \r
135   click: () -> \r
136     @field.tag.$el.val(0)\r
137     @field.trigger('change')\r
138     @helper.refresh_balloon(0)\r
139     false\r
140   \r