OSDN Git Service

t#31949:lib writing_format
[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_is = (element_type, o) ->\r
44     if PettanrEditor.is_element(o) and o.attr('element_type') == element_type\r
45       return true\r
46     else\r
47       return false\r
48   @element_types  = {'panel_picture': 'panel_pictures', 'speech_balloon': 'speech_balloons', 'ground_picture': 'ground_pictures', 'ground_color': 'ground_colors'}\r
49   @element_type_to_table = (element_type) ->\r
50     PettanrEditor.element_types[element_type]\r
51   @text_align_texts = ['left', 'left', 'right', 'center']\r
52 \r
53   @make_tree = (attr, o) ->\r
54     if PettanrEditor.is_var(o)\r
55       tree = 'panels-' + o.attr('panel_id') + '-'\r
56       if PettanrEditor.is_element(o)\r
57         tree = tree + PettanrEditor.element_type_to_table(o.attr('element_type')) + '_attributes-' + o.attr('element_id') + '-'\r
58         if PettanrEditor.is_element_part(o)\r
59           tree = tree + o.attr('element_part_type') + '_attributes-'\r
60       tree = tree + o.attr('column')\r
61       keys = tree.split('-')\r
62       PettanrEditor.set_tree_value(keys, attr, o.val())\r
63   \r
64   @panel_tag_id = (element) ->\r
65     '#panel' + element.attr('panel_id')\r
66   \r
67   @element_tag_id = (element) ->\r
68     '#panel' + element.attr('panel_id') + element.attr('element_type') + element.attr('element_id')\r
69   \r
70   @element_part_tag_id = (element_part) ->\r
71     '#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
72   \r
73   @refresh_attribute = (field) ->\r
74     attr = {}\r
75     $('input').map ->\r
76       PettanrEditor.make_tree(attr, $(@))\r
77     $('textarea').map  ->\r
78       PettanrEditor.make_tree(attr, $(@))\r
79     $('select').map ->\r
80       PettanrEditor.make_tree(attr, $(@))\r
81     field.val(JSON.stringify(attr['panels'][PettanrEditor.pettanr_current_panel_id.toString() ]))\r
82   \r
83 @PettanrEditor = PettanrEditor\r