OSDN Git Service

separate manifest
[pettanr/pettanr.git] / lib / manifest / system_resource.rb
1 require_dependency "manifest/system_resource/engine_resource"
2 module Manifest
3   class SystemResource
4     include SystemResourceModule
5     def self.set_default system_resource_manifest
6       system_resource_manifest['engine_resources'] ||= {}
7       system_resource_manifest['elements'] ||= {}
8       system_resource_manifest['select_items'] ||= {}
9       #oh my ...
10       #JSON.stringify couldn't print 1.0 
11       # 1 == 1.0 ?
12       #change class
13       system_resource_manifest['select_items']['speech_font_size_items'] ||= {}
14       system_resource_manifest['select_items']['speech_font_size_items'].each {|conf|
15         conf[1] = conf[1].to_f 
16       }
17       system_resource_manifest
18     end
19     
20     attr :engine_resources, :elements, :select_items
21     def initialize manifest, system_resource_manifest
22       @manifest = manifest
23       @system_resource_manifest = system_resource_manifest
24       @engine_resources = EngineResource.manager(self, @system_resource_manifest['engine_resources'])
25       @elements = system_resource_manifest['elements']
26       @select_items = system_resource_manifest['select_items']
27     end
28     
29     # call after load app
30     def init
31       self.select_items_loader
32     end
33     
34     def select_items_loader
35       @manifest.models.each {|model_name, model_manifest|
36         model_manifest.attributes.each {|attribute_name, attribute_manifest|
37           source_manifest = attribute_manifest.source
38           next unless source_manifest
39           next unless source_manifest.type == 'model'
40           resource_model_name = source_manifest.resource_model_name
41           resource_list_name = source_manifest.resource_list_name
42           caption = source_manifest.caption_name
43           list = Locmare::ListGroup.list resource_model_name, resource_list_name
44           r = list.open nil, {}
45           @select_items[source_manifest.select_item_name] = 
46             r.items.map {|item| [item.attributes[caption], item.id]}
47         }
48       }
49     end
50     
51   end
52 end
53