menu.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. function getItemLink(item){
  2. return item.pathFormatted + '.html';
  3. }
  4. function setDetailsLinkUrl(){
  5. $.each(stats.contents, function (name, data) {
  6. $('#details_link').attr('href', getItemLink(data));
  7. return false;
  8. });
  9. }
  10. function menuItem(item, level, parent, group) {
  11. if (parent) {
  12. var dataParent = ' data-parent="' + ((level == 0) ? 'ROOT' : ("menu-" + parent)) + '"';
  13. } else {
  14. var dataParent = '';
  15. }
  16. if (group)
  17. var expandButton = '<span id="menu-' + item.pathFormatted + '" style="margin-left: ' + (level * 10) + 'px;" class="expand-button">&nbsp;</span>';
  18. else
  19. var expandButton = '<span id="menu-' + item.pathFormatted + '" style="margin-left: ' + (level * 10) + 'px;" class="expand-button hidden">&nbsp;</span>';
  20. return '<li' + dataParent + '>' + expandButton + '<a href="' + getItemLink(item) + '" class="item withTooltip">' + ellipsedLabel({ name: item.name, parentClass: "nav-tooltip", childClass: "nav-label" }) + '</a></li>';
  21. }
  22. function menuItemsForGroup(group, level, parent) {
  23. var items = '';
  24. if (level > 0)
  25. items += menuItem(group, level - 1, parent, true);
  26. $.each(group.contents, function (contentName, content) {
  27. if (content.type == 'GROUP')
  28. items += menuItemsForGroup(content, level + 1, group.pathFormatted);
  29. else if (content.type == 'REQUEST')
  30. items += menuItem(content, level, group.pathFormatted);
  31. });
  32. return items;
  33. }
  34. function setDetailsMenu(){
  35. $('.nav ul').append(menuItemsForGroup(stats, 0));
  36. $('.nav').expandable();
  37. $('.nav-tooltip').popover({trigger:'hover'});
  38. }
  39. function setGlobalMenu(){
  40. $('.nav ul')
  41. .append('<li><a class="item" href="#ranges"><span class="nav-label">Ranges</span></a></li>')
  42. .append('<li><a class="item" href="#stats"><span class="nav-label">Stats</span></a></li>')
  43. .append('<li><a class="item" href="#active_users"><span class="nav-label">Active Users</span></a></li>')
  44. .append('<li><a class="item" href="#requests"><span class="nav-label">Requests / sec</span></a></li>')
  45. .append('<li><a class="item" href="#responses"><span class="nav-label">Responses / sec</span></a></li>');
  46. }
  47. function getLink(link){
  48. var a = link.split('/');
  49. return (a.length<=1)? link : a[a.length-1];
  50. }
  51. function expandUp(li) {
  52. const parentId = li.attr("data-parent");
  53. if (parentId != "ROOT") {
  54. const span = $('#' + parentId);
  55. const parentLi = span.parents('li').first();
  56. span.expand(parentLi, false);
  57. expandUp(parentLi);
  58. }
  59. }
  60. function setActiveMenu(){
  61. $('.nav a').each(function() {
  62. const navA = $(this)
  63. if(!navA.hasClass('expand-button') && navA.attr('href') == getLink(window.location.pathname)) {
  64. const li = $(this).parents('li').first();
  65. li.addClass('on');
  66. expandUp(li);
  67. return false;
  68. }
  69. });
  70. }