From 43d4920e2432b19166c03bfc91c01031c7f59af3 Mon Sep 17 00:00:00 2001 From: Felipe Date: Wed, 4 Dec 2024 19:40:18 -0300 Subject: [PATCH 1/2] Update navbar --- .../internal_api/navigation_controller.rb | 13 +++++ .../mission_control/jobs/_navigation.html.erb | 48 ++++++++++++++++++- .../jobs/_navigation_update.html.erb | 7 +++ config/routes.rb | 4 ++ 4 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 app/controllers/mission_control/jobs/internal_api/navigation_controller.rb create mode 100644 app/views/layouts/mission_control/jobs/_navigation_update.html.erb diff --git a/app/controllers/mission_control/jobs/internal_api/navigation_controller.rb b/app/controllers/mission_control/jobs/internal_api/navigation_controller.rb new file mode 100644 index 00000000..3e6027fa --- /dev/null +++ b/app/controllers/mission_control/jobs/internal_api/navigation_controller.rb @@ -0,0 +1,13 @@ +class MissionControl::Jobs::InternalApi::NavigationController < MissionControl::Jobs::ApplicationController + include ActionView::Helpers::NumberHelper + include MissionControl::Jobs::NavigationHelper + + + def index + @navigation_sections = navigation_sections + + render partial: "layouts/mission_control/jobs/navigation_update", locals: { + section: params[:section].to_sym + } + end +end diff --git a/app/views/layouts/mission_control/jobs/_navigation.html.erb b/app/views/layouts/mission_control/jobs/_navigation.html.erb index 67347fa9..2f06f048 100644 --- a/app/views/layouts/mission_control/jobs/_navigation.html.erb +++ b/app/views/layouts/mission_control/jobs/_navigation.html.erb @@ -1,4 +1,4 @@ -
+ + + diff --git a/app/views/layouts/mission_control/jobs/_navigation_update.html.erb b/app/views/layouts/mission_control/jobs/_navigation_update.html.erb new file mode 100644 index 00000000..4b8c01d8 --- /dev/null +++ b/app/views/layouts/mission_control/jobs/_navigation_update.html.erb @@ -0,0 +1,7 @@ + diff --git a/config/routes.rb b/config/routes.rb index 96ba0bb5..9edcc771 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -26,6 +26,10 @@ # Allow referencing urls without providing an application_id. It will default to the first one. resources :queues, only: [ :index, :show ] + namespace :internal_api do + resources :navigation, only: [ :index ] + end + resources :jobs, only: :show resources :jobs, only: :index, path: ":status/jobs" From cd1276eb2dc82860ca756a9ec27ccda7347efd71 Mon Sep 17 00:00:00 2001 From: Felipe Date: Wed, 4 Dec 2024 21:35:10 -0300 Subject: [PATCH 2/2] Most adjusts at updater --- .../internal_api/navigation_controller.rb | 1 - .../mission_control/jobs/_navigation.html.erb | 68 +++++++++++++------ .../jobs/_navigation_update.html.erb | 2 +- 3 files changed, 48 insertions(+), 23 deletions(-) diff --git a/app/controllers/mission_control/jobs/internal_api/navigation_controller.rb b/app/controllers/mission_control/jobs/internal_api/navigation_controller.rb index 3e6027fa..9950670e 100644 --- a/app/controllers/mission_control/jobs/internal_api/navigation_controller.rb +++ b/app/controllers/mission_control/jobs/internal_api/navigation_controller.rb @@ -2,7 +2,6 @@ class MissionControl::Jobs::InternalApi::NavigationController < MissionControl:: include ActionView::Helpers::NumberHelper include MissionControl::Jobs::NavigationHelper - def index @navigation_sections = navigation_sections diff --git a/app/views/layouts/mission_control/jobs/_navigation.html.erb b/app/views/layouts/mission_control/jobs/_navigation.html.erb index 2f06f048..aba2dbec 100644 --- a/app/views/layouts/mission_control/jobs/_navigation.html.erb +++ b/app/views/layouts/mission_control/jobs/_navigation.html.erb @@ -1,10 +1,25 @@ @@ -23,6 +38,7 @@ } }; + updateNavbarData(); startNavigationInterval(); } else { window.Navigation.currentSection = "<%= @current_section %>"; @@ -34,22 +50,32 @@ startNavigationInterval(); }); + document.addEventListener('click', function (event) { + if (event.target.matches('[data-action="changeNavtab"]')) { + const newSection = event.target.dataset.newsection; + updateNavbarData(newSection); + } + }); + function startNavigationInterval() { - let urlParams = new URLSearchParams(window.location.search); - - navigationInterval = setInterval(() => { - urlParams = new URLSearchParams(window.location.search); - fetch(`<%= internal_api_navigation_index_path %>&server_id=${urlParams.get('server_id')}§ion=${window.Navigation.currentSection}`) - .then(response => response.text()) - .then(html => { - console.log("updated navbar") - - const navigationSections = document.querySelector('#navigation-sections'); - if (navigationSections) { - navigationSections.innerHTML = html; - } - }) - .catch(error => console.error("Error fetching navigation update:", error)); - }, 5000); + if (navigationInterval != null) + clearInterval(navigationInterval); + + navigationInterval = setInterval(updateNavbarData, 2000); + } + + function updateNavbarData(forcedSection) { + const urlParams = new URLSearchParams(window.location.search); + const newSection = forcedSection == null ? window.Navigation.currentSection : forcedSection; + + fetch(`<%= internal_api_navigation_index_path %>&server_id=${urlParams.get('server_id')}§ion=${newSection}`) + .then(response => response.text()) + .then(html => { + const navigationSections = document.querySelector('#navigation-sections'); + if (navigationSections) { + navigationSections.innerHTML = html; + } + }) + .catch(error => console.error("Error fetching navigation update:", error)); } diff --git a/app/views/layouts/mission_control/jobs/_navigation_update.html.erb b/app/views/layouts/mission_control/jobs/_navigation_update.html.erb index 4b8c01d8..533c6872 100644 --- a/app/views/layouts/mission_control/jobs/_navigation_update.html.erb +++ b/app/views/layouts/mission_control/jobs/_navigation_update.html.erb @@ -1,7 +1,7 @@
    <% @navigation_sections.each do |key, (label, url)| %>
  • "> - <%= link_to label, url %> + <%= link_to label, url, data: { action: "changeNavtab", newSection: key } %>
  • <% end %>