github.com/siglens/siglens@v0.0.0-20240328180423-f7ce9ae441ed/static/component/upper-navbar/upper-navbar.js (about)

     1  (function ($) {
     2      $.fn.orgNavTabs = function () {
     3          return this.each(function () {
     4              var $container = $(this);
     5              var $tabs = $container.find('.section-button');
     6  
     7              $container.on('click', '.section-button', function (e) {
     8                  e.preventDefault();
     9                  $tabs.removeClass('active');
    10                  $(this).addClass('active');
    11                  var href = $(this).find('a').attr('href');
    12                  window.location.href = href;
    13              });
    14  
    15              // Add active class based on the current URL
    16              var currentUrl = window.location.href;
    17              var currentTab = extractLastPathSegment(currentUrl);
    18              $tabs.removeClass('active');
    19              if (currentTab === 'all-alerts' || currentTab === 'alert' || currentTab === 'alert-details') {
    20                  $tabs.filter('[id="all-alerts"]').addClass('active');
    21              } else {
    22                  $tabs.filter(`[id="${currentTab}"]`).addClass('active');
    23              }
    24          
    25          });
    26      };
    27  
    28      function extractLastPathSegment(url) {
    29          return (new URL(url).pathname.match(/[^/]+\/?$/)[0] || '').replace(/\..+$/, '');
    30      }
    31  
    32      $.fn.appendOrgNavTabs = function (header,buttonArray) {
    33          var htmlBlock = `
    34              <div>
    35                  <h1 class="myOrg-heading">${header}</h1>
    36                  <div class="section-buttons">
    37          `;
    38  
    39          buttonArray.forEach(function (button) {
    40              htmlBlock += `
    41                  <div class="section-button" id="${button.class}"><a href="${button.url}">${button.name}</a></div>
    42              `;
    43          });
    44  
    45          htmlBlock += `
    46                  </div>
    47              </div>
    48          `;
    49  
    50          this.prepend(htmlBlock);
    51          this.orgNavTabs();
    52      };
    53  })(jQuery);