diff --git a/src/_h5ai/client/js/inc/main.js b/src/_h5ai/client/js/inc/main.js index 4546bd42..db04e9a6 100644 --- a/src/_h5ai/client/js/inc/main.js +++ b/src/_h5ai/client/js/inc/main.js @@ -2,6 +2,7 @@ modulejs.define('main', ['_', 'core/event'], function (_, event) { modulejs.require('view/ensure'); modulejs.require('view/items'); + modulejs.require('view/sidebar'); modulejs.require('view/spacing'); modulejs.require('view/viewmode'); diff --git a/src/_h5ai/client/js/inc/view/sidebar.js b/src/_h5ai/client/js/inc/view/sidebar.js new file mode 100644 index 00000000..be9bf19f --- /dev/null +++ b/src/_h5ai/client/js/inc/view/sidebar.js @@ -0,0 +1,55 @@ +modulejs.define('view/sidebar', ['$', 'core/resource', 'core/store'], function ($, resource, store) { + + var storekey = 'sidebarIsVisible'; + var toggleTemplate = + ''; + + + function update(toggle, animate) { + + var $toggle = $('#sidebar-toggle'); + var $sidebar = $('#sidebar'); + var isVisible = store.get(storekey); + + if (toggle) { + isVisible = !isVisible; + store.put(storekey, isVisible); + } + + if (isVisible) { + $toggle.addClass('current'); + } else { + $toggle.removeClass('current'); + } + + if (animate) { + $sidebar.stop().animate({ + right: isVisible ? 0 : -$sidebar.outerWidth()-1 + }); + } else { + $sidebar.css({ + right: store.get(storekey) ? 0 : -$sidebar.outerWidth()-1 + }); + } + } + + function init() { + + $(toggleTemplate) + .on('click', 'a', function (ev) { + + update(true, true); + ev.preventDefault(); + }) + .appendTo('#navbar'); + + update(false, false); + } + + + init(); +}); diff --git a/src/_h5ai/client/js/inc/view/viewmode.js b/src/_h5ai/client/js/inc/view/viewmode.js index ffac0545..b33f6533 100644 --- a/src/_h5ai/client/js/inc/view/viewmode.js +++ b/src/_h5ai/client/js/inc/view/viewmode.js @@ -7,14 +7,6 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c sizes: sizes }, allsettings.view); var storekey = 'viewmode'; - var storekeyMenu = 'menuIsVisible'; - var menuIsVisible = false; - var sidebarToggleTemplate = - ''; var modeTemplate = '
' + '' + @@ -70,24 +62,10 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c function init() { - var $sidebar = $('#sidebar'); var $settings = $('#settings'); var $viewBlock = $('

View

'); var max; - $(sidebarToggleTemplate) - .on('click', 'a', function (event) { - - var menuIsVisible = store.get(storekeyMenu); - menuIsVisible = !menuIsVisible; - store.put(storekeyMenu, menuIsVisible); - $sidebar.stop().animate({ - right: menuIsVisible ? 0 : -$sidebar.outerWidth()-1 - }); - event.preventDefault(); - }) - .appendTo('#navbar'); - settings.modes = _.intersection(settings.modes, modes); if (settings.modes.length > 1) { @@ -95,10 +73,10 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c if (_.contains(settings.modes, mode)) { $(modeTemplate.replace(/\[MODE\]/g, mode)) .appendTo($viewBlock) - .on('click', 'a', function (event) { + .on('click', 'a', function (ev) { update(mode); - event.preventDefault(); + ev.preventDefault(); }); } }); @@ -108,9 +86,9 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c max = settings.sizes.length-1; $(sizeTemplate) .prop('max', max).attr('max', max) - .on('input change', function (event) { + .on('input change', function (ev) { - update(null, settings.sizes[parseInt(event.target.value, 10)]); + update(null, settings.sizes[parseInt(ev.target.value, 10)]); }) .appendTo($viewBlock); } @@ -119,10 +97,6 @@ modulejs.define('view/viewmode', ['_', '$', 'core/settings', 'core/resource', 'c update(); - $sidebar.css({ - right: store.get(storekeyMenu) ? 0 : -$sidebar.outerWidth()-1 - }); - event.sub('location.changed', adjustSpacing); $(window).on('resize', adjustSpacing); }