OSDN Git Service

add paginator
[pettanr/pettanr.git] / app / assets / javascripts / manifest / model.js.coffee
1 class Manifest.Model extends ManifestBase.Base\r
2   \r
3   set_default: () ->\r
4     super\r
5     @json.attributes ||= {}\r
6     @json.associations ||= {}\r
7     @json.list ||= {}\r
8     @json.attributes.id = {\r
9       'type': 'number',\r
10       'primary_key': 1,\r
11       'rules': {\r
12         'number': true\r
13       }\r
14     }\r
15     @json.attributes.created_at = {\r
16       'type': 'datetime',\r
17     }\r
18     @json.attributes.updated_at = {\r
19       'type': 'datetime',\r
20     }\r
21   \r
22   init: () ->\r
23     super\r
24     @attributes = ManifestBase.load_name_values this, @json, 'attributes', Manifest.ModelModule.Attribute\r
25     @associations = ManifestBase.load_value this, @json, 'associations', Manifest.ModelModule.Association\r
26     @list = ManifestBase.load_value this, @json, 'list', Manifest.ModelModule.List\r
27   \r
28   model_name: () ->\r
29     @name\r
30   \r
31   classify: () ->\r
32     Manifest.item_name_to_model @name\r
33   \r
34   table_name: () ->\r
35     @classify.table_name\r
36   \r
37   valid_encode_columns: () ->\r
38     r = []\r
39     _.each @attributes, (attribute, attribute_name) ->\r
40       next if not attribute.type == 'text'\r
41       r.push attribute_name\r
42     r\r
43   \r
44   owner_type: () ->\r
45     return 'author' if @attributes.author_id\r
46     return 'artist' if @attributes.artist_id\r
47     false\r
48   \r
49   content_model: () ->\r
50     return true if @owner_type\r
51     false\r
52   \r
53   child_model_manifests: () ->\r
54     r = []\r
55     _.each Manifest.items, (peta_manifest, peta_name) ->\r
56       next if not peta_manifest.is_element\r
57       next if not peta_manifest.parent_model_name == @name\r
58       r.push Manifest.models[peta_name]\r
59     r\r
60   \r
61   child_models: () ->\r
62     _.map @child_model_manifests, (child_model_manifest) ->\r
63       child_model_manifest.classify\r
64   \r
65   child_element_names: () ->\r
66     _.map @child_models, (child_model) ->\r
67       @associations.child_element_name(child_model)\r
68   \r
69   child_element_name: (item_name) ->\r
70     @associations.child_element_name(child_model_manifest)\r
71   \r
72 class Manifest.ModelModule\r