OSDN Git Service

change: picker
[pettanr/pettanr.git] / app / assets / javascripts / controllers.js.coffee
1 class Pettanr.AppController\r
2   \r
3   constructor: (@params, @form, @operators) ->\r
4     _.extend(this, Backbone.Events)\r
5   \r
6   @new2: (params, form, operators) ->\r
7     c = Pettanr[Pettanr.camelize(params['controller']) + 'Controller']\r
8     new c(params, form, operators)\r
9   \r
10   set_model: () ->\r
11     @my_controller = Manifest.manifest().controllers[@params['controller']]\r
12     @my_action = @my_controller.actions[@params['action']]\r
13     @my_model = Manifest.manifest().models[@my_action.item_name]\r
14     @my_model_class = @my_model.classify()\r
15     \r
16   set_list: () ->\r
17     @set_model()\r
18     @my_list_model = Manifest.manifest().models[@my_action.item_name]\r
19     @my_list_model_class = @my_list_model.classify()\r
20     @list = Locmare.ListGroup.list(\r
21       @my_action.path_name(), @my_action.name, @operators, @params\r
22     )\r
23   \r
24   set_show: (render_func) ->\r
25     @set_model()\r
26     @empty_item = new @my_model_class({id: @params['id']})\r
27     @item = Pettanr.cache.restore(@empty_item)\r
28     if @item\r
29       # got cached item\r
30       render_func.call(this)\r
31     else\r
32       # built empty item\r
33       @item = @empty_item\r
34       @item.fetch().done =>\r
35         Pettanr.cache.store(@item)\r
36         render_func.call(this)\r
37   \r
38   filer_list: () ->\r
39     @set_list()\r
40     @list.open(() =>\r
41       pager = Locmare.ListGroupModule.LibModule.Pager.factory(@list.page_status, @params)\r
42       filer = new Locmare.Filer({\r
43         item_name: @list.item_name, \r
44         items: @list.items(), \r
45         pager: pager, \r
46         operators: @operators\r
47       })\r
48       @listenTo(filer, 'navigate', @navigate)\r
49       filer.render()\r
50       @trigger('ready', filer)\r
51     )\r
52     false\r
53   \r
54   set_play: (render_func) ->\r
55     @set_list()\r
56     @binder_action = @my_action.original\r
57     @binder_controller = @binder_action.controller()\r
58     @binder_model = Manifest.manifest().models[@binder_action.item_name]\r
59     @binder_model_class = @binder_model.classify()\r
60     @empty_item = new @binder_model_class({id: @params['id']})\r
61     @item = Pettanr.cache.restore(@empty_item)\r
62     if @item\r
63       # got cached item\r
64       render_func.call(this)\r
65     else\r
66       # built empty item\r
67       @item = @empty_item\r
68       @item.fetch().done =>\r
69         Pettanr.cache.store(@item)\r
70         render_func.call(this)\r
71   \r
72   show_prof: () ->\r
73     @item.boosts 'post'\r
74     profiler = new Locmare.Profiler({\r
75       item_name: @item.item_name(), \r
76       item: @item, \r
77       operators: @operators\r
78     })\r
79     @listenTo(profiler, 'navigate', @navigate)\r
80     profiler.render()\r
81     @trigger('ready', profiler)\r
82     @trigger('title', @params)\r
83     @trigger('done', @params)\r
84   \r
85   set_new: () ->\r
86     @set_model()\r
87     @item = new @my_model_class({id: @params['id']})\r
88     @item.boosts 'post'\r
89     # Backbone.Model has defaults property\r
90     #@item.supply_default()\r
91   \r
92   set_edit: () ->\r
93     @set_model()\r
94     @empty_item = new @my_model_class({id: @params['id']})\r
95     @item = Pettanr.cache.restore(@empty_item)\r
96     if @item\r
97       # got cached item\r
98       @render_edit()\r
99     else\r
100       # built empty item\r
101       @item = @empty_item\r
102       Pettanr.cache.store(@empty_item)\r
103       @item.fetch().done =>\r
104         @render_edit()\r
105   \r
106   render_edit: () ->\r
107     @item.boosts 'post'\r
108     @render_form()\r
109     Pettanr.History.lock = {url: @item.edit_url(), form: @form}\r
110   \r
111   render_form: () ->\r
112     @form = Locmare.Form.factory({\r
113       form_name: @item.item_name(), \r
114       use_name: 'default', \r
115       item: @item, \r
116       element_form: false, \r
117       submit: 'default', \r
118       operators: @operators,\r
119     })\r
120     @form.render()\r
121     @trigger('ready', @form)\r
122   \r
123   form_new: () ->\r
124     if Pettanr.History.lock\r
125       @trigger('lock', @params)\r
126     else\r
127       @set_new()\r
128       @render_form()\r
129       Pettanr.History.lock = {url: @item.new_url(), form: @form}\r
130   \r
131   form_edit: () ->\r
132     if Pettanr.History.lock\r
133       @trigger('lock', @params)\r
134     else\r
135       @set_edit()\r
136   \r
137   post_success: (model, response) ->\r
138     @trigger('redirect', @form.item.show_url())\r
139     @trigger('success', model, response)\r
140     Pettanr.History.release()\r
141   \r
142   post_fail: (model, response) ->\r
143     @trigger('fail', response)\r
144   \r
145   destroy_success: (model, response) ->\r
146     @trigger('redirect', '/home/' + model.path_name())\r
147     @trigger('success', model, response)\r
148   \r
149   destroy_fail: (model, response) ->\r
150     @trigger('fail', response)\r
151   \r
152   navigate: (url) ->\r
153     @trigger('navigate', url)\r
154   \r