From 6a2cce12a8429311c41d8fc8684abbea9362f847 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Tue, 6 Oct 2015 12:21:12 +0200 Subject: [PATCH] Keep last level 2 selection (e. g. admin interface) for 10 minutes (maybe need to be changed later). --- .../_application_controller_generic.coffee | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/app/controllers/_application_controller_generic.coffee b/app/assets/javascripts/app/controllers/_application_controller_generic.coffee index 9a459f310..5aa752432 100644 --- a/app/assets/javascripts/app/controllers/_application_controller_generic.coffee +++ b/app/assets/javascripts/app/controllers/_application_controller_generic.coffee @@ -419,8 +419,14 @@ class App.ControllerNavSidbar extends App.ControllerContent group.items = _.sortBy( itemsUnsorted, (item) -> return item.prio ) - # set active item + # check last selected item selectedItem = undefined + selectedItemMeta = App.Config.get("Runtime::#{@configKey}") + keepLastMenuFor = 1000 * 60 * 10 + if selectedItemMeta && selectedItemMeta.date && new Date < new Date( selectedItemMeta.date.getTime() + keepLastMenuFor ) + selectedItem = selectedItemMeta.selectedItem + + # set active item for group in @groupsSorted if group.items for item in group.items @@ -441,15 +447,22 @@ class App.ControllerNavSidbar extends App.ControllerContent @render(selectedItem, true) ) - render: (selectedItem, force) -> - if !$( '.' + @configKey )[0] || force + render: (selectedItem, force) => + + # remember latest selected item + selectedItemMeta = + selectedItem: selectedItem + date: new Date + App.Config.set("Runtime::#{@configKey}", selectedItemMeta) + + if !$( ".#{@configKey}" )[0] || force @html App.view('generic/navbar_l2')( groups: @groupsSorted className: @configKey ) if selectedItem @el.find('li').removeClass('active') - @el.find('a[href="' + selectedItem.target + '"]').parent().addClass('active') + @el.find("a[href=\"#{selectedItem.target}\"]").parent().addClass('active') new selectedItem.controller( el: @el.find('.main')