OSDN Git Service

t#31945:separate js
[pettanr/pettanr.git] / app / assets / javascripts / pettanr_editor.js.coffee
1 class PettanrEditor\r
2   @pettanr_current_panel_id = 0\r
3   \r
4   @new_element_index = {}\r
5   @new_element_index[PettanrEditor.pettanr_current_panel_id] = 0\r
6   \r
7   @set_tree_value = (keys, last_attr, value) ->\r
8     key = keys.shift()\r
9     if keys.length <= 0\r
10       last_attr[key] = value\r
11     else\r
12       last_attr[key] = last_attr[key] || {}\r
13       PettanrEditor.set_tree_value(keys, last_attr[key], value)\r
14 \r
15   @repeat_texts = ['repeat', 'repeat-x', 'repeat-y', 'no-repeat']\r
16   \r
17   @is_editable = (p) ->\r
18     if p.parent().attr('editable')\r
19       return true\r
20     else\r
21       return false\r
22   @is_var = (o) ->\r
23     if parseInt(o.attr('no_attr')) > 0\r
24       return false\r
25     else\r
26       if o.attr('column') \r
27         if o.attr('column') == '_destroy' and o.val().length < 1\r
28           return false\r
29         else\r
30           return true\r
31       else\r
32         return false\r
33   @is_element = (o) ->\r
34     if o.attr('element_type')\r
35       return true\r
36     else\r
37       return false\r
38   @is_element_part = (o) ->\r
39     if o.attr('element_part_type')\r
40       return true\r
41     else\r
42       return false\r
43   @element_types  = {'panel_picture': 'panel_pictures', 'speech_balloon': 'speech_balloons', 'ground_picture': 'ground_pictures', 'ground_color': 'ground_colors'}\r
44   @element_type_to_table = (element_type) ->\r
45     PettanrEditor.element_types[element_type]\r
46   @text_align_texts = ['left', 'left', 'right', 'center']\r
47 \r
48   @make_tree = (attr, o) ->\r
49     if PettanrEditor.is_var(o)\r
50       tree = 'panels-' + o.attr('panel_id') + '-'\r
51       if PettanrEditor.is_element(o)\r
52         tree = tree + PettanrEditor.element_type_to_table(o.attr('element_type')) + '_attributes-' + o.attr('element_id') + '-'\r
53         if PettanrEditor.is_element_part(o)\r
54           tree = tree + o.attr('element_part_type') + '_attributes-'\r
55       tree = tree + o.attr('column')\r
56       keys = tree.split('-')\r
57       PettanrEditor.set_tree_value(keys, attr, o.val())\r
58   \r
59   @panel_tag_id = (element) ->\r
60     '#panel' + element.attr('panel_id')\r
61   \r
62   @element_tag_id = (element) ->\r
63     '#panel' + element.attr('panel_id') + element.attr('element_type') + element.attr('element_id')\r
64   \r
65   @element_part_tag_id = (element_part) ->\r
66     '#panel' + element_part.attr('panel_id') + element_part.attr('element_type') + element_part.attr('element_id') + element_part.attr('element_part_type') + element_part.attr('element_part_id')\r
67   \r
68   @refresh_attribute = (field) ->\r
69     attr = {}\r
70     $('input').map ->\r
71       PettanrEditor.make_tree(attr, $(@))\r
72     $('textarea').map  ->\r
73       PettanrEditor.make_tree(attr, $(@))\r
74     $('select').map ->\r
75       PettanrEditor.make_tree(attr, $(@))\r
76     field.val(JSON.stringify(attr['panels'][PettanrEditor.pettanr_current_panel_id.toString() ]))\r
77   \r
78 @PettanrEditor = PettanrEditor\r