diff --git a/app/assets/javascripts/sidebar_toggle.js b/app/assets/javascripts/sidebar_toggle.js new file mode 100644 index 000000000..04976db09 --- /dev/null +++ b/app/assets/javascripts/sidebar_toggle.js @@ -0,0 +1,49 @@ +var SideBarToggle = (function() { + var LAYOUT = ".sci--layout"; + var WRAPPER = '#wrapper' + var SIDEBAR_CONTAINER = ".sidebar-container" + + + function show() { + $(LAYOUT).attr("data-navigator-collapsed", false); + $(SIDEBAR_CONTAINER).removeClass('collapsed'); + $(WRAPPER).css('paddingLeft', 'var(--wrapper-width)'); + $('.navbar-secondary').removeClass("navbar-without-sidebar"); + $.post($(LAYOUT).data('navitgator-state-url'), {state: 'open'}); + $(WRAPPER).trigger('sideBar::show'); + $(WRAPPER).one("transitionend", function() { + $(WRAPPER).trigger('sideBar::shown'); + }) + } + + function hide() { + $(LAYOUT).attr("data-navigator-collapsed", true); + $(SIDEBAR_CONTAINER).addClass('collapsed'); + $(WRAPPER).css('paddingLeft', '0'); + $('.navbar-secondary').addClass("navbar-without-sidebar"); + $.post($(LAYOUT).data('navitgator-state-url'), {state: 'collapsed'}); + $(WRAPPER).trigger('sideBar::hide'); + $(WRAPPER).one("transitionend", function() { + $(WRAPPER).trigger('sideBar::hidden'); + }) + } + + $(document).on('click', `.sidebar-container .close-sidebar`, function() { + hide(); + }).on('click', `.sidebar-container .show-sidebar`, function() { + show(); + }).on('turbolinks:load', function() { + if ($(LAYOUT).attr("data-navigator-collapsed") === "true") { + hide(); + } else { + show(); + } + $(WRAPPER).show(); + }) + + return Object.freeze({ + show: show, + hide: hide + }) +}()); + diff --git a/app/assets/javascripts/sidebar_toggle.js.erb b/app/assets/javascripts/sidebar_toggle.js.erb deleted file mode 100644 index 43968f83d..000000000 --- a/app/assets/javascripts/sidebar_toggle.js.erb +++ /dev/null @@ -1,76 +0,0 @@ -var SideBarToggle = (function() { - var STORAGE_TOGGLE_KEY = "scinote-sidebar-toggled"; - var WRAPPER = '#wrapper' - var SIDEBAR_CONTAINER = ".sidebar-container" - - if (!$("#sidebar-wrapper").length) { - var layout = document.querySelector(".sci--layout"); - layout.setAttribute("data-navigator-collapsed", true); - } - - function show() { - var layout = document.querySelector(".sci--layout"); - if ($("#sidebar-wrapper").length) { - layout.setAttribute("data-navigator-collapsed", false); - } else { - layout.setAttribute("data-navigator-collapsed", true); - } - $(SIDEBAR_CONTAINER).removeClass('collapsed'); - $(WRAPPER).css('paddingLeft', 'var(--wrapper-width)'); - $('.navbar-secondary').removeClass("navbar-without-sidebar"); - sessionStorage.setItem(STORAGE_TOGGLE_KEY, "un-toggled"); - $(WRAPPER).trigger('sideBar::show'); - $(WRAPPER).one("transitionend", function() { - $(WRAPPER).trigger('sideBar::shown'); - }) - } - - function hide() { - var layout = document.querySelector(".sci--layout"); - if ($("#sidebar-wrapper").length) { - layout.setAttribute("data-navigator-collapsed", true); - } else { - layout.setAttribute("data-navigator-collapsed", false); - } - $(SIDEBAR_CONTAINER).addClass('collapsed'); - $(WRAPPER).css('paddingLeft', '0'); - $('.navbar-secondary').addClass("navbar-without-sidebar"); - sessionStorage.setItem(STORAGE_TOGGLE_KEY, "toggled"); - $(WRAPPER).trigger('sideBar::hide'); - $(WRAPPER).one("transitionend", function() { - $(WRAPPER).trigger('sideBar::hidden'); - }) - } - - function isToggledStorage() { - var val = sessionStorage.getItem(STORAGE_TOGGLE_KEY); - if (val === null) { - return null; - } - return val === "toggled"; - } - - function init() { - $(document).on('click', `${SIDEBAR_CONTAINER} .close-sidebar`, function() { - hide(); - }).on('click', `${SIDEBAR_CONTAINER} .show-sidebar`, function() { - show(); - }).on('turbolinks:load', function() { - if (isToggledStorage()) { - hide(); - } else { - show(); - } - $(WRAPPER).show(); - }) - } - - return Object.freeze({ - init: init, - show: show, - hide: hide, - isToggledStorage: isToggledStorage - }) -}()); - -SideBarToggle.init(); diff --git a/app/assets/stylesheets/navigation/general.scss b/app/assets/stylesheets/navigation/general.scss index 87032a957..a95dc617c 100644 --- a/app/assets/stylesheets/navigation/general.scss +++ b/app/assets/stylesheets/navigation/general.scss @@ -10,8 +10,10 @@ grid-template-columns: var(--left-navigation) var(--navigator-navigation) calc(100% - var(--left-navigation) - var(--navigator-navigation)); - grid-template-rows: var(--top-navigation) var(--breadcrumbs-navigation) auto; - height: 100vh; + grid-template-rows: var(--top-navigation) + var(--breadcrumbs-navigation) + calc(100% - var(--top-navigation) - var(--breadcrumbs-navigation)); + height: 100%; position: relative; transition: .4s $timing-function-sharp; width: 100%; @@ -28,13 +30,13 @@ grid-area: top; height: var(--top-navigation); position: fixed; - width: 100vw; + width: 100%; z-index: 610; } .sci--layout-navigation-left { grid-area: left; - height: calc(100vh - var(--top-navigation)); + height: calc(100% - var(--top-navigation)); left: 0; position: fixed; top: var(--top-navigation); @@ -44,7 +46,7 @@ .sci--layout-navigation-navigator { grid-area: navigator; - height: calc(100vh - var(--top-navigation) - var(--breadcrumbs-navigation)); + height: calc(100% - var(--top-navigation) - var(--breadcrumbs-navigation)); left: var(--left-navigation); position: fixed; top: calc(var(--top-navigation) + var(--breadcrumbs-navigation)); @@ -60,7 +62,7 @@ position: fixed; top: var(--top-navigation); transition: .4s $timing-function-standard; - width: calc(100vw - var(--left-navigation)); + width: calc(100% - var(--left-navigation)); z-index: 600; } diff --git a/app/assets/stylesheets/navigation/top_menu.scss b/app/assets/stylesheets/navigation/top_menu.scss index a77720814..b786f35f8 100644 --- a/app/assets/stylesheets/navigation/top_menu.scss +++ b/app/assets/stylesheets/navigation/top_menu.scss @@ -53,6 +53,10 @@ text-overflow: ellipsis; white-space: nowrap; } + + .avatar { + border-radius: 50%; + } } .dropdown-menu li a { diff --git a/app/controllers/navigations_controller.rb b/app/controllers/navigations_controller.rb index 297ee6db6..efeb08613 100644 --- a/app/controllers/navigations_controller.rb +++ b/app/controllers/navigations_controller.rb @@ -18,6 +18,10 @@ class NavigationsController < ApplicationController } end + def navigator_state + session[:navigator_collapsed] = params[:state] == 'collapsed' + end + private def logo diff --git a/app/controllers/user_notifications_controller.rb b/app/controllers/user_notifications_controller.rb index ff045ca95..3c0a33568 100644 --- a/app/controllers/user_notifications_controller.rb +++ b/app/controllers/user_notifications_controller.rb @@ -8,7 +8,7 @@ class UserNotificationsController < ApplicationController respond_to do |format| format.json do render json: { - notifications: notifications, + notifications: notification_serializer(notifications), next_page: notifications.next_page } end @@ -56,4 +56,17 @@ class UserNotificationsController < ApplicationController end notifications.order(created_at: :desc) end + + def notification_serializer(notifications) + notifications.map do |notification| + { + id: notification.id, + type_of: notification.type_of, + title: notification.title, + message: notification.message, + created_at: I18n.l(notification.created_at, format: :full), + checked: notification.checked + } + end + end end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 9124d4980..130b195e9 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -16,6 +16,7 @@ <%= javascript_include_tag 'application' %> <%= javascript_include_tag 'application_pack' %> <%= javascript_include_tag 'session_end' %> + <%= javascript_include_tag 'sidebar_toggle' %> <% if MarvinJsService.enabled? && ENV['MARVINJS_API_KEY'] %> @@ -57,8 +58,11 @@ - -
+
<%= render "shared/navigation/top" %>
diff --git a/app/views/shared/navigation/_left.html.erb b/app/views/shared/navigation/_left.html.erb index 11698156e..8454c4737 100644 --- a/app/views/shared/navigation/_left.html.erb +++ b/app/views/shared/navigation/_left.html.erb @@ -7,4 +7,4 @@ <% end %>
-<%= javascript_include_tag("sidebar_toggle") %> + diff --git a/config/routes.rb b/config/routes.rb index 40754dd96..2631811d2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -24,6 +24,7 @@ Rails.application.routes.draw do resources :navigations, only: [] do collection do get :top_menu + post :navigator_state end end