From b67701347abd3469a92577cfe748206ecfc25694 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Sun, 22 Dec 2019 15:42:10 +0100 Subject: [PATCH] Improve code readability --- src/librustdoc/html/static/main.js | 80 ++++++++++++++---------------- 1 file changed, 37 insertions(+), 43 deletions(-) diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index ad988557f9bcc..d0c44cd40b21a 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -138,6 +138,22 @@ function getSearchElement() { } } + function showSearchResults(search) { + if (search === null || typeof search === 'undefined') { + search = getSearchElement(); + } + addClass(main, "hidden"); + removeClass(search, "hidden"); + } + + function hideSearchResults(search) { + if (search === null || typeof search === 'undefined') { + search = getSearchElement(); + } + addClass(search, "hidden"); + removeClass(main, "hidden"); + } + // used for special search precedence var TY_PRIMITIVE = itemTypes.indexOf("primitive"); var TY_KEYWORD = itemTypes.indexOf("keyword"); @@ -169,8 +185,7 @@ function getSearchElement() { if (ev !== null && search && !hasClass(search, "hidden") && ev.newURL) { // This block occurs when clicking on an element in the navbar while // in a search. - addClass(search, "hidden"); - removeClass(main, "hidden"); + hideSearchResults(search); var hash = ev.newURL.slice(ev.newURL.indexOf("#") + 1); if (browserSupportsHistoryApi()) { history.replaceState(hash, "", "?search=#" + hash); @@ -324,7 +339,6 @@ function getSearchElement() { } function handleEscape(ev) { - debugger; var help = getHelpElement(); var search = getSearchElement(); hideModal(); @@ -332,8 +346,7 @@ function getSearchElement() { displayHelp(false, ev, help); } else if (hasClass(search, "hidden") === false) { ev.preventDefault(); - addClass(search, "hidden"); - removeClass(main, "hidden"); + hideSearchResults(search); document.title = titleBeforeSearch; } defocusSearchBar(); @@ -1265,8 +1278,7 @@ function getSearchElement() { } dst = dst[0]; if (window.location.pathname === dst.pathname) { - addClass(getSearchElement(), "hidden"); - removeClass(main, "hidden"); + hideSearchResults(); document.location.href = dst.href; } }; @@ -1341,8 +1353,6 @@ function getSearchElement() { e.preventDefault(); } else if (e.which === 16) { // shift // Does nothing, it's just to avoid losing "focus" on the highlighted element. - } else if (e.which === 27) { // escape - handleEscape(e); } else if (actives[currentTab].length > 0) { removeClass(actives[currentTab][0], "highlighted"); } @@ -1492,10 +1502,9 @@ function getSearchElement() { "
" + ret_others[0] + ret_in_args[0] + ret_returned[0] + "
"; - addClass(main, "hidden"); var search = getSearchElement(); - removeClass(search, "hidden"); search.innerHTML = output; + showSearchResults(search); var tds = search.getElementsByTagName("td"); var td_width = 0; if (tds.length > 0) { @@ -1700,13 +1709,7 @@ function getSearchElement() { if (browserSupportsHistoryApi()) { history.replaceState("", window.currentCrate + " - Rust", "?search="); } - if (hasClass(main, "content")) { - removeClass(main, "hidden"); - } - var search_c = getSearchElement(); - if (hasClass(search_c, "content")) { - addClass(search_c, "hidden"); - } + hideSearchResults(); } else { searchTimeout = setTimeout(search, 500); } @@ -1742,19 +1745,8 @@ function getSearchElement() { // Store the previous so we can revert back to it later. var previousTitle = document.title; - window.onpopstate = function(e) { + window.addEventListener("popstate", function(e) { var params = getQueryStringParams(); - // When browsing back from search results the main page - // visibility must be reset. - if (!params.search) { - if (hasClass(main, "content")) { - removeClass(main, "hidden"); - } - var search_c = getSearchElement(); - if (hasClass(search_c, "content")) { - addClass(search_c, "hidden"); - } - } // Revert to the previous title manually since the History // API ignores the title parameter. document.title = previousTitle; @@ -1766,18 +1758,21 @@ function getSearchElement() { // perform the search. This will empty the bar if there's // nothing there, which lets you really go back to a // previous state with nothing in the bar. - if (params.search) { + if (params.search && params.search.length > 0) { search_input.value = params.search; + // Some browsers fire "onpopstate" for every page load + // (Chrome), while others fire the event only when actually + // popping a state (Firefox), which is why search() is + // called both here and at the end of the startSearch() + // function. + search(e); } else { search_input.value = ""; + // When browsing back from search results the main page + // visibility must be reset. + hideSearchResults(); } - // Some browsers fire "onpopstate" for every page load - // (Chrome), while others fire the event only when actually - // popping a state (Firefox), which is why search() is - // called both here and at the end of the startSearch() - // function. - search(); - }; + }); } search(); } @@ -2523,9 +2518,9 @@ function getSearchElement() { } function putBackSearch(search_input) { - if (search_input.value !== "") { - addClass(main, "hidden"); - removeClass(getSearchElement(), "hidden"); + var search = getSearchElement(); + if (search_input.value !== "" && hasClass(search, "hidden")) { + showSearchResults(search); if (browserSupportsHistoryApi()) { history.replaceState(search_input.value, "", @@ -2542,10 +2537,9 @@ function getSearchElement() { var params = getQueryStringParams(); if (params && params.search) { - addClass(main, "hidden"); var search = getSearchElement(); - removeClass(search, "hidden"); search.innerHTML = "<h3 style=\"text-align: center;\">Loading search results...</h3>"; + showSearchResults(search); } var sidebar_menu = document.getElementsByClassName("sidebar-menu")[0];