diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/structure/NavLink.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/structure/NavLink.java index 2cfcdcc79..2b3f8770a 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/structure/NavLink.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/html/structure/NavLink.java @@ -17,6 +17,7 @@ package com.djrapitops.plan.delivery.rendering.html.structure; import com.djrapitops.plan.delivery.rendering.html.icon.Icon; +import com.djrapitops.plugin.utilities.Format; /** * Html utility for creating navigation link html. @@ -48,13 +49,14 @@ public class NavLink { } public String toHtml() { + String tabID = new Format(tabName).justLetters().lowerCase().toString(); if (collapsed) { - return "" + + return "" + icon.toHtml() + ' ' + tabName + ""; } return "
  • " + - "" + + "" + icon.toHtml() + "" + tabName + "" + "
  • "; diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/PlayerPluginTab.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/PlayerPluginTab.java index 37300f507..67506c2cf 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/PlayerPluginTab.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/PlayerPluginTab.java @@ -25,6 +25,7 @@ import com.djrapitops.plan.extension.ElementOrder; import com.djrapitops.plan.extension.FormatType; import com.djrapitops.plan.extension.implementation.TabInformation; import com.djrapitops.plan.extension.implementation.results.*; +import com.djrapitops.plugin.utilities.Format; import java.util.*; @@ -87,6 +88,7 @@ public class PlayerPluginTab implements Comparable { if (playerData.isEmpty()) { nav = NavLink.collapsed(Icon.called("cubes").build(), serverName + " (No Data)").toHtml(); tab = wrapInTab( + serverName + " (No Data)", "

    No Extension Data

    " ); } else { @@ -118,14 +120,14 @@ public class PlayerPluginTab implements Comparable { tabBuilder.append(wrapInContainer(extensionInformation, tabsElement)); } - return wrapInTab(tabBuilder.toString()); + return wrapInTab(serverName, tabBuilder.toString()); } - private String wrapInTab(String content) { - return "
    " + + private String wrapInTab(String tabName, String content) { + return "
    " + // Page heading "
    " + - "

    ${playerName} · " + serverName + " Plugins

    ${backButton}" + + "

    " + serverName + " · Plugins Overview

    ${backButton}" + "
    " + // End Page heading "
    " + content + "
    "; diff --git a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/ServerPluginTabs.java b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/ServerPluginTabs.java index 95ef1c466..84ad7356c 100644 --- a/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/ServerPluginTabs.java +++ b/Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/pages/ServerPluginTabs.java @@ -25,6 +25,7 @@ import com.djrapitops.plan.extension.ElementOrder; import com.djrapitops.plan.extension.FormatType; import com.djrapitops.plan.extension.implementation.TabInformation; import com.djrapitops.plan.extension.implementation.results.*; +import com.djrapitops.plugin.utilities.Format; import java.util.*; import java.util.stream.Collectors; @@ -87,8 +88,10 @@ public class ServerPluginTabs { private void generate() { if (serverData.isEmpty()) { - nav = new StringBuilder(new NavLink(Icon.called("cubes").build(), "Overview (No Data)").toHtml()); + String tabName = "Overview (No Data)"; + nav = new StringBuilder(new NavLink(Icon.called("cubes").build(), tabName).toHtml()); tab = wrapInTab( + tabName, "

    No Extension Data

    " ); } else { @@ -124,7 +127,7 @@ public class ServerPluginTabs { ).toHtmlFull(); } - tabBuilder.append(wrapInTab(extensionInformation, wrapInContainer(extensionInformation, tabsElement))); + tabBuilder.append(wrapInTab(extensionInformation.getPluginName(), wrapInContainer(extensionInformation, tabsElement))); nav.append(new NavLink(Icon.fromExtensionIcon(extensionInformation.getIcon()), extensionInformation.getPluginName()).toHtml()); } return tabBuilder.toString(); @@ -151,11 +154,11 @@ public class ServerPluginTabs { tabBuilder.append(wrapInContainer(extensionInformation, tabsElement)); } - return wrapInTab(tabBuilder.toString()); + return wrapInTab("Overview", tabBuilder.toString()); } - private String wrapInTab(String content) { - return "
    " + + private String wrapInTab(String tabName, String content) { + return "
    " + // Page heading "
    " + "

    · Plugins Overview

    ${backButton}" + @@ -164,16 +167,6 @@ public class ServerPluginTabs { "
    " + content + "
    "; } - private String wrapInTab(ExtensionInformation info, String content) { - return "
    " + - // Page heading - "
    " + - "

    · " + info.getPluginName() + "

    ${backButton}" + - "
    " + - // End Page heading - "
    " + content + "
    "; - } - private TabsElement.Tab wrapToTabElementTab(ExtensionTabData tabData) { TabInformation tabInformation = tabData.getTabInformation(); String tabContentHtml = parseContentHtml(tabData); diff --git a/Plan/common/src/main/resources/assets/plan/web/js/sb-admin-2.js b/Plan/common/src/main/resources/assets/plan/web/js/sb-admin-2.js index 56d68731f..89f4f5480 100644 --- a/Plan/common/src/main/resources/assets/plan/web/js/sb-admin-2.js +++ b/Plan/common/src/main/resources/assets/plan/web/js/sb-admin-2.js @@ -1,6 +1,72 @@ +function openTab(i) { + var x = document.getElementById("content"); + var navButtons = document.getElementsByClassName("nav-button"); + var max = navButtons.length; + for (var j = 0; j < max; j++) { + if (navButtons[j].classList.contains('active')) { + navButtons[j].classList.remove('active'); + } + if (j === i) { + navButtons[j].classList.add('active'); + } + } + var percent = -100 / navButtons.length; + slideIndex = i; + if (slideIndex > max) { + slideIndex = 0 + } + if (slideIndex < 0) { + slideIndex = max + } + window.scrollTo(0, 0); + var value = slideIndex * percent; + x.style.transition = "0.5s"; + x.style.transform = "translate3d(" + value + "%,0px,0)"; +} + +function openPage() { + var params = (window.location.hash.substr(5)).split("&"); + + if (!params.length) { + openTab(0); + return; + } + // window.sessionStorage.setItem("server_slide_index", slideIndex); + + var tabID = params[0]; + var button = $('.nav-button[href="#' + tabID + '"]'); + + var tabs = document.getElementsByClassName("tab"); + for (var i = 0; i < tabs.length; i++) { + if (tabs[i].id === tabID) openTab(i); + } + + if (params.length <= 1) { + return; + } + + var graphTabID = params[1]; + $('a[href="#' + graphTabID + '"]').tab('show'); +} + (function ($) { "use strict"; // Start of use strict + var x = document.getElementById("content"); + // Prepare tabs for display + var navButtons = document.getElementsByClassName("nav-button"); + var tabs = document.getElementsByClassName("tab"); + x.style.transform = "translate3d(0px,0px,0)"; + x.style.width = "" + navButtons.length * 100 + "%"; + for (var i = 0; i < navButtons.length; i++) { + tabs[i].style.width = "" + 100 / navButtons.length + "%"; + } + x.style.opacity = "1"; + + window.addEventListener('hashchange', function (e) { + openPage(); + }); + var oldWidth = null; function reduceSidebar() { diff --git a/Plan/common/src/main/resources/assets/plan/web/network.html b/Plan/common/src/main/resources/assets/plan/web/network.html index 68fab95df..0ddf78fa8 100644 --- a/Plan/common/src/main/resources/assets/plan/web/network.html +++ b/Plan/common/src/main/resources/assets/plan/web/network.html @@ -49,7 +49,7 @@ @@ -69,10 +69,10 @@
    @@ -89,12 +89,12 @@ @@ -307,7 +307,7 @@
    -
    +
    @@ -960,22 +960,9 @@ }); setLoadingText('Almost done..'); - var navButtons = document.getElementsByClassName("nav-button"); - var tabs = document.getElementsByClassName("tab"); - var slideIndex = window.sessionStorage.getItem("network_slide_index"); - if (slideIndex === null) { - slideIndex = 0; - } - var x = document.getElementById("content"); - x.style.transform = "translate3d(0px,0px,0)"; - x.style.width = "" + navButtons.length * 100 + "%"; - for (var i = 0; i < navButtons.length; i++) { - navButtons[i].onclick = openFunc(i); - tabs[i].style.width = "" + 100 / navButtons.length + "%"; - } - x.style.opacity = "1"; - openFunc(slideIndex)(); + openPage(); setLoadingText('Done.'); + setTimeout(function () { $('.page-loader').fadeOut(); }, 50); @@ -987,33 +974,6 @@ throw loadingError; } - function openFunc(i) { - return function () { - var max = navButtons.length; - for (var j = 0; j < max; j++) { - if (navButtons[j].classList.contains('active')) { - navButtons[j].classList.remove('active'); - } - if (j == i) { - navButtons[j].classList.add('active'); - } - } - var percent = -100 / navButtons.length; - slideIndex = i; - if (slideIndex > max) { - slideIndex = 0 - } - if (slideIndex < 0) { - slideIndex = max - } - window.scrollTo(0, 0); - window.sessionStorage.setItem("network_slide_index", slideIndex); - var value = slideIndex * percent; - x.style.transition = "0.5s"; - x.style.transform = "translate3d(" + value + "%,0px,0)"; - }; - } - function setLoadingText(text) { $('.loader-text').text(text); } diff --git a/Plan/common/src/main/resources/assets/plan/web/player.html b/Plan/common/src/main/resources/assets/plan/web/player.html index c98e7dfef..584fbd836 100644 --- a/Plan/common/src/main/resources/assets/plan/web/player.html +++ b/Plan/common/src/main/resources/assets/plan/web/player.html @@ -48,7 +48,7 @@ @@ -61,13 +61,13 @@
    @@ -80,7 +80,7 @@
    @@ -791,21 +791,7 @@ setLoadingText('Rendering graphs..'); setLoadingText('Sorting players table..'); setLoadingText('Almost done..'); - var navButtons = document.getElementsByClassName("nav-button"); - var tabs = document.getElementsByClassName("tab"); - var slideIndex = window.sessionStorage.getItem("player_slide_index"); - if (slideIndex === null) { - slideIndex = 0; - } - var x = document.getElementById("content"); - x.style.transform = "translate3d(0px,0px,0)"; - x.style.width = "" + navButtons.length * 100 + "%"; - for (var i = 0; i < navButtons.length; i++) { - navButtons[i].onclick = openFunc(i); - tabs[i].style.width = "" + 100 / navButtons.length + "%"; - } - x.style.opacity = "1"; - openFunc(slideIndex)(); + openPage(); setLoadingText('Done.'); setTimeout(function () { $('.page-loader').fadeOut(); @@ -818,33 +804,6 @@ throw loadingError; } - function openFunc(i) { - return function () { - var max = navButtons.length; - for (var j = 0; j < max; j++) { - if (navButtons[j].classList.contains('active')) { - navButtons[j].classList.remove('active'); - } - if (j == i) { - navButtons[j].classList.add('active'); - } - } - var percent = -100 / navButtons.length; - slideIndex = i; - if (slideIndex > max) { - slideIndex = 0 - } - if (slideIndex < 0) { - slideIndex = max - } - window.scrollTo(0, 0); - window.sessionStorage.setItem("player_slide_index", slideIndex); - var value = slideIndex * percent; - x.style.transition = "0.5s"; - x.style.transform = "translate3d(" + value + "%,0px,0)"; - }; - } - function setLoadingText(text) { $('.loader-text').text(text); } diff --git a/Plan/common/src/main/resources/assets/plan/web/server.html b/Plan/common/src/main/resources/assets/plan/web/server.html index 029af9635..4f73404a3 100644 --- a/Plan/common/src/main/resources/assets/plan/web/server.html +++ b/Plan/common/src/main/resources/assets/plan/web/server.html @@ -46,7 +46,7 @@ @@ -68,13 +68,13 @@
    -
    +
    @@ -1298,8 +1298,6 @@