OSDN Git Service

t#31650:remove tree
[pettanr/pettanr.git] / app / assets / javascripts / panels.js.coffee
index 31867b2..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,21 +63,17 @@ $ ->
   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
@@ -285,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
@@ -505,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