OSDN Git Service

fix editor's speechballoon event
[pettanr/pettanr.git] / app / assets / javascripts / locmare / form / field / helper / tail_angle.js.coffee
index 25d280c..8cd1f1a 100644 (file)
@@ -1,7 +1,136 @@
 class Locmare.FormModule.FieldModule.HelperModule.TailAngle extends Locmare.FormModule.FieldModule.HelperModule.Base\r
-  tagName: 'select'\r
+  className: 'r-wrap'\r
+  \r
+  # wrapper\r
+  initialize: (options) ->\r
+    super(options)\r
+    @down = new Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Down({field: @field, helper: this})\r
+    @up = new Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Up({field: @field, helper: this})\r
+    @reset = new Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Reset({field: @field, helper: this})\r
+    @speech_balloon_template = new Pettanr.SpeechBalloonTemplate({\r
+      id: @field.item().get('speech_balloon_template_id')\r
+    })\r
+    @speech_balloon_template.fetch({cache: true}).done =>\r
+      @r_step = @_r_step()\r
   \r
   render: () ->\r
+    @attr = {\r
+      style: 'display: block'\r
+    }\r
+    this.$el.attr(@attr)\r
     this.$el.html('')\r
+    this.$el.append(@down.render().el)\r
+    this.$el.append(@up.render().el)\r
+    this.$el.append(@reset.render().el)\r
+    this\r
+  \r
+  settings: () ->\r
+    @speech_balloon_template.parsed_settings()\r
+  \r
+  _r_step: () ->\r
+    settings = @settings()\r
+    settings['speech_balloon']['r_step']\r
+  \r
+  system_picture_id: (idx) ->\r
+    settings = @settings()\r
+    settings[idx]['balloon']['system_picture_id']\r
+  \r
+  # balloon r helper\r
+  \r
+  balloon_next_index: (d) ->\r
+    r_val = @field.val()\r
+    v = parseInt(r_val) + @r_step * d\r
+    tr = v % 360\r
+    tr = 360 + tr if tr < 0\r
+    offset = @r_step / 2.0\r
+    idx = Math.floor(((tr + offset) % 360) / @r_step)\r
+    if idx == 0\r
+      ir = 0\r
+    else\r
+      if v < 0\r
+        ir = Math.floor(idx * @r_step) - 360\r
+      else\r
+        ir = Math.floor(idx * @r_step)\r
+    @field.set(ir)\r
+    @field.tag.$el.val(ir)\r
+    idx\r
+  \r
+  balloon_index: () ->\r
+    v = parseInt(@field.val())\r
+    tr = v % 360\r
+    tr = 360 + tr if tr < 0\r
+    offset = @r_step / 2.0\r
+    idx = Math.floor(((tr + offset) % 360) / @r_step)\r
+    idx\r
+  \r
+  refresh_balloon: (idx) ->\r
+    sp_id = @system_picture_id(idx)\r
+    @field.item().set({\r
+      system_picture_id: sp_id\r
+    }, {silent: true})\r
+    @field.item().trigger('input:r')\r
+  \r
+class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule\r
+class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Down extends Backbone.View\r
+  tagName: 'button'\r
+  className: 'r-down'\r
+  events: {\r
+    'click': 'click'\r
+  }\r
+  \r
+  initialize: (options) ->\r
+    @field = options.field\r
+    @helper = options.helper\r
+  \r
+  render: () ->\r
+    this.$el.html('<')\r
     this\r
   \r
+  click: () -> \r
+    idx = @helper.balloon_next_index(-1)\r
+    @helper.refresh_balloon(idx)\r
+    @field.trigger('change')\r
+    false\r
+    \r
+class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Up extends Backbone.View\r
+  tagName: 'button'\r
+  className: 'r-up'\r
+  events: {\r
+    'click': 'click'\r
+  }\r
+  \r
+  initialize: (options) ->\r
+    @field = options.field\r
+    @helper = options.helper\r
+  \r
+  render: () ->\r
+    this.$el.html('>')\r
+    this\r
+  \r
+  click: () -> \r
+    idx = @helper.balloon_next_index(1)\r
+    @helper.refresh_balloon(idx)\r
+    @field.trigger('change')\r
+    false\r
+  \r
+class Locmare.FormModule.FieldModule.HelperModule.TailAngleModule.Reset extends Backbone.View\r
+  tagName: 'button'\r
+  className: 'r-reset'\r
+  events: {\r
+    'click': 'click'\r
+  }\r
+  \r
+  initialize: (options) ->\r
+    @field = options.field\r
+    @helper = options.helper\r
+  \r
+  render: () ->\r
+    this.$el.html('reset')\r
+    this\r
+  \r
+  click: () -> \r
+    @field.tag.$el.val(0)\r
+    @field.trigger('change')\r
+    @helper.refresh_balloon(0)\r
+    false\r
+  \r