className: 'history'\r
\r
initialize: (options) ->\r
- @back = new Pettanr.Views.History.Back({})\r
- @forward = new Pettanr.Views.History.Forward({})\r
- @list = new Pettanr.Views.History.List({})\r
+ @power = true\r
@root = new Pettanr.Views.History.Root({})\r
- @listenTo(@back, 'click', @click_back)\r
- @listenTo(@forward, 'click', @click_forward)\r
+ @list = new Pettanr.Views.History.List({})\r
@listenTo(@root, 'click', @click_root)\r
+ @listenTo(@list, 'click:log', @click_log)\r
\r
render: () ->\r
this.$el.html('')\r
- this.$el.append(@back.render().el)\r
- this.$el.append(@forward.render().el)\r
- this.$el.append(@list.render().el)\r
+ return if !@power\r
this.$el.append(@root.render().el)\r
+ this.$el.append(@list.render().el)\r
this\r
\r
- # push history\r
- navigate: (params) ->\r
- # get caption and icon\r
+ enable: () ->\r
+ @power = true\r
+ @render()\r
\r
- click_back: () ->\r
- @list.back()\r
+ disable: () ->\r
+ @power = false\r
+ @render()\r
\r
- click_forward: () ->\r
- @list.forward()\r
+ # push history\r
+ push: (params, options) ->\r
+ return if !@power\r
+ @list.push(params, options)\r
\r
click_root: () ->\r
@trigger('http_get', 'folders/root')\r
\r
+ click_log: (log) ->\r
+ @trigger('get', log.params, null)\r
\r
-class Pettanr.Views.History.Back extends Backbone.View\r
+class Pettanr.Views.History.List extends Backbone.View\r
+ tagName: 'div'\r
+ className: 'history-list'\r
\r
initialize: (options) ->\r
- icon = new Pettanr.Views.Common.BackIcon()\r
- @button = new Tag.A({\r
- attr: {href: '#'}, \r
- content: icon\r
- })\r
- @listenTo(@button, 'click', @click)\r
+ @max_logs = options.max_logs || 10\r
+ @buttons = []\r
\r
render: () ->\r
- this.$el.html(@button.render().el)\r
+ this.$el.html('')\r
+ _.each @buttons, (button) =>\r
+ this.$el.append(button.render().el)\r
this\r
\r
- click: () ->\r
- @trigger('click')\r
+ push: (params, options) ->\r
+ _.last(@buttons).release() if !_.isEmpty(@buttons)\r
+ if @buttons.length > @max_logs\r
+ b = @buttons.shift()\r
+ b.remove()\r
+ button = new Pettanr.Views.History.List.Log({\r
+ params: params, \r
+ selected: true,\r
+ options: options\r
+ })\r
+ @listenTo(button, 'click', @click_log)\r
+ @buttons.push(button)\r
+ this.$el.append(button.render().el)\r
\r
-class Pettanr.Views.History.Forward extends Backbone.View\r
+ click_log: (log) ->\r
+ @trigger('click:log', log)\r
+ \r
+class Pettanr.Views.History.List.Log extends Backbone.View\r
+ tagName: 'div'\r
+ className: 'history-list-log'\r
\r
initialize: (options) ->\r
- icon = new Pettanr.Views.Common.ForwardIcon()\r
+ @params = options.params\r
+ @selected = options.selected\r
+ @options = options.options\r
+ # get caption and icon\r
+ @item_name = Manifest.manifest().singularize(@params['controller'])\r
+ @controller = Manifest.manifest().controllers[@params['controller']]\r
+ @action = @controller.actions[@params['action']]\r
+ @model = Manifest.manifest().models[@action.item_name].classify()\r
+ icon = new Pettanr.Image.Icon({item: @model, title: @options, half: true})\r
@button = new Tag.A({\r
attr: {href: '#'}, \r
- content: icon\r
+ content: icon.render().el\r
})\r
@listenTo(@button, 'click', @click)\r
\r
render: () ->\r
- this.$el.html(@button.render().el)\r
+ this.$el.html('')\r
+ this.$el.append(@button.render().el)\r
+ @refresh()\r
this\r
\r
- click: () ->\r
- @trigger('click')\r
+ refresh: () ->\r
+ border = if @selected\r
+ '3px'\r
+ else\r
+ '0px'\r
+ this.$el.css('border-width', border)\r
\r
-class Pettanr.Views.History.List extends Backbone.View\r
+ catch: () ->\r
+ @selected = true\r
+ @refresh()\r
+ \r
+ release: () ->\r
+ @selected = false\r
+ @refresh()\r
+ \r
+ click: () ->\r
+ @trigger('click', this)\r
\r
class Pettanr.Views.History.Root extends Backbone.View\r
+ tagName: 'div'\r
\r
initialize: (options) ->\r
icon = new Pettanr.Views.Common.RootIcon()\r
@button = new Tag.A({\r
attr: {href: '#'}, \r
- content: icon\r
+ content: icon.render().el\r
})\r
@listenTo(@button, 'click', @click)\r
\r
render: () ->\r
- this.$el.html(@button.render().el)\r
+ this.$el.html('')\r
+ this.$el.append(@button.render().el)\r
this\r
\r
click: () ->\r