OSDN Git Service

merge v06sheet
[pettanr/pettanr.git] / app / assets / javascripts / pettanr_sheeter.js.coffee
diff --git a/app/assets/javascripts/pettanr_sheeter.js.coffee b/app/assets/javascripts/pettanr_sheeter.js.coffee
new file mode 100644 (file)
index 0000000..51afc3d
--- /dev/null
@@ -0,0 +1,89 @@
+class PettanrSheeter\r
+  @pettanr_current_sheet_id = 0\r
+  \r
+  @new_element_index = {}\r
+  @new_element_index[PettanrSheeter.pettanr_current_sheet_id] = 0\r
+  \r
+  @current_sheet = () ->\r
+    $('#sheet' + PettanrSheeter.pettanr_current_sheet_id.toString())\r
+  \r
+  @set_tree_value = (keys, last_attr, value) ->\r
+    key = keys.shift()\r
+    if keys.length <= 0\r
+      last_attr[key] = value\r
+    else\r
+      last_attr[key] = last_attr[key] || {}\r
+      PettanrSheeter.set_tree_value(keys, last_attr[key], value)\r
+\r
+  @is_editting = () ->\r
+    trace = '#sheet' + PettanrSheeter.pettanr_current_sheet_id.toString() + 'wrapper'\r
+    if $(trace) and $(trace).attr('editable')\r
+      return true\r
+    else\r
+      return false\r
+  @is_editable = (p) ->\r
+    if p.parent().attr('editable')\r
+      return true\r
+    else\r
+      return false\r
+  @is_var = (o) ->\r
+    if parseInt(o.attr('no_attr')) > 0\r
+      return false\r
+    else\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_is = (element_type, o) ->\r
+    if PettanrSheeter.is_element(o) and o.attr('element_type') == element_type\r
+      return true\r
+    else\r
+      return false\r
+  @element_types  = {'sheet_panel': 'sheet_panels'}\r
+  @element_type_to_table = (element_type) ->\r
+    PettanrSheeter.element_types[element_type]\r
+\r
+  @make_tree = (attr, o) ->\r
+    if PettanrSheeter.is_var(o)\r
+      tree = 'sheets-' + o.attr('sheet_id') + '-'\r
+      if PettanrSheeter.is_element(o)\r
+        tree = tree + PettanrSheeter.element_type_to_table(o.attr('element_type')) + '_attributes-' + o.attr('element_id') + '-'\r
+        if PettanrSheeter.is_element_part(o)\r
+          tree = tree + o.attr('element_part_type') + '_attributes-'\r
+      tree = tree + o.attr('column')\r
+      keys = tree.split('-')\r
+      PettanrSheeter.set_tree_value(keys, attr, o.val())\r
+  \r
+  @sheet_tag_id = (element) ->\r
+    '#sheet' + element.attr('sheet_id')\r
+  \r
+  @element_tag_id = (element) ->\r
+    '#sheet' + element.attr('sheet_id') + element.attr('element_type') + element.attr('element_id')\r
+  \r
+  @element_part_tag_id = (element_part) ->\r
+    '#sheet' + element_part.attr('sheet_id') + element_part.attr('element_type') + element_part.attr('element_id') + element_part.attr('element_part_type') + element_part.attr('element_part_id')\r
+  \r
+  @refresh_attribute = (field) ->\r
+    attr = {}\r
+    $('input').map ->\r
+      PettanrSheeter.make_tree(attr, $(@))\r
+    $('textarea').map  ->\r
+      PettanrSheeter.make_tree(attr, $(@))\r
+    $('select').map ->\r
+      PettanrSheeter.make_tree(attr, $(@))\r
+    field.val(JSON.stringify(attr['sheets'][PettanrSheeter.pettanr_current_sheet_id.toString() ]))\r
+  \r
+@PettanrSheeter = PettanrSheeter\r