OSDN Git Service

t#31650:remove tree
[pettanr/pettanr.git] / app / assets / javascripts / panels.js.coffee
index 472e438..fbddfae 100644 (file)
@@ -1,6 +1,11 @@
 $ ->\r
   confirm_confirm_confirm = () ->\r
     confirm(  )\r
+  new_element_index = {}\r
+  new_element_index[pettanr_current_panel_id] = 0\r
+  \r
+  escapeHTML = (t) ->\r
+    $("<div/>").text(t).html()\r
 \r
   set_tree_value = (keys, last_attr, value) ->\r
     key = keys.shift()\r
@@ -17,15 +22,37 @@ $ ->
       return true\r
     else\r
       return false\r
-  is_tree = (o) ->\r
-    if o.attr('tree') \r
+  is_var = (o) ->\r
+    if o.attr('column') \r
       if o.attr('column') == '_destroy' and o.val().length < 1\r
         return false\r
       else\r
         return true\r
+    else\r
+      return false\r
+  is_element = (o) ->\r
+    if o.attr('element_type')\r
+      return true\r
+    else\r
+      return false\r
+  is_element_part = (o) ->\r
+    if o.attr('element_part_type')\r
       return true\r
     else\r
       return false\r
+  element_types  = {'panel_picture': 'panel_pictures', 'speech_balloon': 'speech_balloons', 'ground_picture': 'ground_pictures', 'ground_color': 'ground_colors'}\r
+  element_type_to_table = (element_type) ->\r
+    element_types[element_type]\r
+  make_tree = (attr, o) ->\r
+    if is_var(o)\r
+      tree = 'panels-' + o.attr('panel_id') + '-'\r
+      if is_element(o)\r
+        tree = tree + element_type_to_table(o.attr('element_type')) + '_attributes-' + o.attr('element_id') + '-'\r
+        if is_element_part(o)\r
+          tree = tree + o.attr('element_part_type') + '_attributes-'\r
+      tree = tree + o.attr('column')\r
+      keys = tree.split('-')\r
+      set_tree_value(keys, attr, o.val())\r
   \r
   panel_tag_id = (element) ->\r
     '#panel' + element.attr('panel_id')\r
@@ -36,24 +63,47 @@ $ ->
   refresh_attribute = () ->\r
     attr = {}\r
     $('input').map ->\r
-      if is_tree($(@)) \r
-        keys = $(@).attr('tree').split('-')\r
-        set_tree_value(keys, attr, $(this).val())\r
+      make_tree(attr, $(@))\r
     $('textarea').map  ->\r
-      if is_tree($(@)) \r
-        keys = $(@).attr('tree').split('-')\r
-        set_tree_value(keys, attr, $(this).val())\r
+      make_tree(attr, $(@))\r
     $('select').map ->\r
-      if is_tree($(@)) \r
-        keys = $(@).attr('tree').split('-')\r
-        set_tree_value(keys, attr, $(this).val())\r
+      make_tree(attr, $(@))\r
     $('#pettanr-panel-json').val(JSON.stringify(attr['panels'][pettanr_current_panel_id.toString() ]))\r
   \r
   $('#tabs').tabs()\r
   $('#elements-tabs').tabs()\r
+  $('#new-element-tabs').tabs()\r
+  $('#new-speech_balloon-tabs').tabs()\r
   $('#elements-tabs').addClass( "ui-tabs-vertical ui-helper-clearfix" )\r
   $("#elements-tabs li").removeClass("ui-corner-top")\r
   $("#elements-tabs li").addClass("ui-corner-left")\r
+  $("#elements-tabs li").map ->\r
+    $(@).mouseover -> \r
+      switch $(@).attr('element_type')\r
+        when 'speech_balloon'\r
+          trace = element_tag_id($(@)) \r
+          t = $('img', $(trace))\r
+        when 'panel_picture'\r
+          trace = element_tag_id($(@)) + 'img'\r
+          t = $(trace)\r
+        else\r
+          t = null\r
+      if t\r
+        $('.ui-resizable-handle', t.parent()).map ->\r
+          $(@).css('display', 'block')\r
+    $(@).mouseout -> \r
+      switch $(@).attr('element_type')\r
+        when 'speech_balloon'\r
+          trace = element_tag_id($(@)) \r
+          t = $('img', $(trace))\r
+        when 'panel_picture'\r
+          trace = element_tag_id($(@)) + 'img'\r
+          t = $(trace)\r
+        else\r
+          t = null\r
+      if t\r
+        $('.ui-resizable-handle', t.parent()).map ->\r
+          $(@).css('display', 'none')\r
   \r
   #destroy button\r
   $('.ui-icon-destroy').map ->\r
@@ -258,7 +308,7 @@ $ ->
           when 'content'\r
             trace = element_tag_id($(@))\r
             speech_trace = '#panel' + $(@).attr('panel_id') + 'speech_balloon' + $(@).attr('element_id') + 'speech' + $(@).attr('element_part_id')\r
-            v = $(@).val()\r
+            v = escapeHTML($(@).val())\r
             $(speech_trace).html(v)\r
   \r
   # ground-picture\r
@@ -409,7 +459,7 @@ $ ->
     d = $(@).parent()\r
     trace = element_tag_id(d)\r
     f = $(trace + 'width')\r
-    w = f.val() / 2\r
+    w = Math.floor(f.val() / 2)\r
     f.val(w)\r
     $(trace + 'img').width(Math.abs(w))\r
     $(trace + 'img').parent().width(Math.abs(w))\r
@@ -440,7 +490,7 @@ $ ->
     d = $(@).parent()\r
     trace = element_tag_id(d)\r
     f = $(trace + 'height')\r
-    h = f.val() / 2\r
+    h = Math.floor(f.val() / 2)\r
     f.val(h)\r
     $(trace + 'img').height(Math.abs(h))\r
     $(trace + 'img').parent().height(Math.abs(h))\r
@@ -478,3 +528,11 @@ $ ->
           $(@).hide()\r
           $(@).parent().hide() #label\r
   \r
+  # add button on new form\r
+  $('.submit-new-form').map ->\r
+    $(@).html('<button class="new-element">add</button>')\r
+  \r
+  $('.new-element').map ->\r
+    $(@).click -> \r
+      false\r
+  \r