OSDN Git Service

767c0ee32c5dcc3ff86b2ad2889e82f18f954e58
[pettanr/pettanr.git] / app / assets / javascripts / locmare / filer / body / file_body / file_item.js.coffee
1 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItem extends Pettanr.View\r
2   tagName: 'li'\r
3   \r
4   initialize: (options) ->\r
5     @file_body = options.file_body\r
6     @item = options.item\r
7     @symbol = @module().SymbolItemColumnFactory.factory this, @manifest().symbol, @item\r
8     @caption = @module().CaptionItemColumnFactory.factory this, @manifest().caption, @item\r
9     @summary = @module().SummaryItemColumnFactory.factory this, @manifest().summary, @item\r
10     @icon = @module().IconItemColumnFactory.factory this, @manifest().icon, @item\r
11     @date = @module().DateItemColumnFactory.factory this, @manifest().date, @item\r
12     @edit = @module().EditItemColumnFactory.factory this, @manifest().edit, @item\r
13     @el.className = 'filer-item filer-item-' + @item.item_name()\r
14     @listenTo(@symbol, 'click:symbol', @click_symbol)\r
15     @listenTo(@caption, 'click:caption', @click_caption)\r
16     @listenTo(@icon, 'click:prof', @click_prof)\r
17     @listenTo(@symbol, 'http_get', @http_get)\r
18     @listenTo(@caption, 'http_get', @http_get)\r
19     @listenTo(@summary, 'http_get', @http_get)\r
20     @listenTo(@icon, 'http_get', @http_get)\r
21     @listenTo(@edit, 'http_get', @http_get)\r
22     @listenTo(@edit, 'http_post', @http_post)\r
23     @listenTo(@edit, 'remove', @click_remove)\r
24     @listenTo(@edit, 'update', @click_update)\r
25   \r
26   render: () ->\r
27     this.$el.html('')\r
28     if @pick\r
29       this.$el.append(@pick.render().el)\r
30     if @symbol.is_visible()\r
31       this.$el.append(@symbol.render().el)\r
32     if @caption.is_visible()\r
33       this.$el.append(@caption.render().el)\r
34     if @summary.is_visible()\r
35       this.$el.append(@summary.render().el)\r
36     if @icon.is_visible()\r
37       this.$el.append(@icon.render().el)\r
38     if @date.is_visible()\r
39       this.$el.append(@date.render().el)\r
40     if !@pick and @edit.is_visible()\r
41       this.$el.append(@edit.render().el)\r
42     this\r
43   \r
44   filer: () ->\r
45     @file_body.filer()\r
46   \r
47   manifest: () ->\r
48     @filer().manifest\r
49   \r
50   item_name: () ->\r
51     @filer().item_name\r
52   \r
53   model: () ->\r
54     @filer().model\r
55   \r
56   items: () ->\r
57     @filer().items\r
58   \r
59   add_pick: (target_model) ->\r
60     @pick = new Pettanr.View.Pick(target_model.pick_type(@item_name()), {\r
61       class_name: 'filer-item-pick',\r
62       context: this,\r
63       click: () =>\r
64         @trigger('click:pick', this)\r
65     })\r
66     @render()\r
67   \r
68   click_symbol: () ->\r
69     @trigger('click:symbol', this)\r
70   \r
71   click_caption: () ->\r
72     @trigger('click:caption', this)\r
73   \r
74   click_prof: (url) ->\r
75     @trigger('click:prof', this)\r
76     @trigger('http_get', url)\r
77   \r
78   http_get: (url) ->\r
79     @trigger('http_get', url)\r
80   \r
81   http_post: (url) ->\r
82     @trigger('http_post', url)\r
83   \r
84   click_remove: () ->\r
85     return if !confirm('remove?')\r
86     proxy = new Pettanr.Proxy({})\r
87     @listenTo(proxy, 'success', @remove_success)\r
88     @listenTo(proxy, 'fail', @remove_fail)\r
89     @listenTo(proxy, 'deny', @remove_deny)\r
90     proxy.http_post(@item.destroy_url())\r
91   \r
92   remove_success: () ->\r
93     @trigger('remove:success', this)\r
94   \r
95   remove_fail: () ->\r
96     @trigger('remove:fail')\r
97   \r
98   remove_deny: () ->\r
99   \r
100   click_update: () ->\r
101     # do fetch / update item\r
102     Pettanr.cache.refresh(@item)\r
103     @remove()\r
104     @render()\r
105   \r
106   module: () ->\r
107     Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule\r
108   \r
109 class Locmare.FilerModule.BodyModule.FileBodyModule.FileItemModule\r
110 \r