OSDN Git Service

fix: cache
[pettanr/pettanr.git] / app / assets / javascripts / views / history.js.coffee
1 class Pettanr.Views.History extends Backbone.View\r
2   tagName: 'div'\r
3   className: 'history'\r
4   \r
5   initialize: (options) ->\r
6     @power = true\r
7     @root = new Pettanr.Views.History.Root({})\r
8     @list = new Pettanr.Views.History.List({})\r
9     @listenTo(@root, 'click', @click_root)\r
10     @listenTo(@list, 'click:log', @click_log)\r
11   \r
12   render: () ->\r
13     this.$el.html('')\r
14     return if !@power\r
15     this.$el.append(@root.render().el)\r
16     this.$el.append(@list.render().el)\r
17     this\r
18   \r
19   enable: () ->\r
20     @power = true\r
21     @render()\r
22   \r
23   disable: () ->\r
24     @power = false\r
25     @render()\r
26   \r
27   # push history\r
28   push: (params, options) ->\r
29     return if !@power\r
30     @list.push(params, options)\r
31   \r
32   click_root: () ->\r
33     @trigger('http_get', 'folders/root')\r
34   \r
35   click_log: (log) ->\r
36     @trigger('get', log.params, null)\r
37   \r
38 class Pettanr.Views.History.List extends Backbone.View\r
39   tagName: 'div'\r
40   className: 'history-list'\r
41   \r
42   initialize: (options) ->\r
43     @max_logs = options.max_logs || 10\r
44     @buttons = []\r
45   \r
46   render: () ->\r
47     this.$el.html('')\r
48     _.each @buttons, (button) =>\r
49       this.$el.append(button.render().el)\r
50     this\r
51   \r
52   push: (params, options) ->\r
53     _.last(@buttons).release() if !_.isEmpty(@buttons)\r
54     if @buttons.length > @max_logs\r
55       b = @buttons.shift()\r
56       b.remove()\r
57     button = new Pettanr.Views.History.List.Log({\r
58       params: params, \r
59       selected: true,\r
60       options: options\r
61     })\r
62     @listenTo(button, 'click', @click_log)\r
63     @buttons.push(button)\r
64     this.$el.append(button.render().el)\r
65   \r
66   click_log: (log) ->\r
67     @trigger('click:log', log)\r
68   \r
69 class Pettanr.Views.History.List.Log extends Backbone.View\r
70   tagName: 'div'\r
71   className: 'history-list-log'\r
72   \r
73   initialize: (options) ->\r
74     @params = options.params\r
75     @selected = options.selected\r
76     @options = options.options\r
77     # get caption and icon\r
78     @item_name = Manifest.manifest().singularize(@params['controller'])\r
79     @controller = Manifest.manifest().controllers[@params['controller']]\r
80     @action = @controller.actions[@params['action']]\r
81     @model = Manifest.manifest().models[@action.item_name].classify()\r
82     icon = new Pettanr.Image.Icon({item: @model, title: @options, half: true})\r
83     @button = new Tag.A({\r
84       attr: {href: '#'}, \r
85       content: icon.render().el\r
86     })\r
87     @listenTo(@button, 'click', @click)\r
88   \r
89   render: () ->\r
90     this.$el.html('')\r
91     this.$el.append(@button.render().el)\r
92     @refresh()\r
93     this\r
94   \r
95   refresh: () ->\r
96     border = if @selected\r
97       '3px'\r
98     else\r
99       '0px'\r
100     this.$el.css('border-width', border)\r
101   \r
102   catch: () ->\r
103     @selected = true\r
104     @refresh()\r
105   \r
106   release: () ->\r
107     @selected = false\r
108     @refresh()\r
109   \r
110   click: () ->\r
111     @trigger('click', this)\r
112   \r
113 class Pettanr.Views.History.Root extends Backbone.View\r
114   tagName: 'div'\r
115   \r
116   initialize: (options) ->\r
117     icon = new Pettanr.Views.Common.RootIcon()\r
118     @button = new Tag.A({\r
119       attr: {href: '#'}, \r
120       content: icon.render().el\r
121     })\r
122     @listenTo(@button, 'click', @click)\r
123   \r
124   render: () ->\r
125     this.$el.html('')\r
126     this.$el.append(@button.render().el)\r
127     this\r
128   \r
129   click: () ->\r
130     @trigger('click')\r
131   \r