about summary refs log tree commit diff
path: root/src/librustdoc/html
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-08-28 21:42:52 +0000
committerbors <bors@rust-lang.org>2019-08-28 21:42:52 +0000
commit0414dfa0aa072b6e1153ae60f94de852c07bb803 (patch)
tree3cc8486d52afbbd2eb19afc85a5766b93bcdbfaa /src/librustdoc/html
parent17e73e801a75559eac5c932ff07bd9c8499a1364 (diff)
parent06228d33cac6770653d6798cf5f80d1269e5482d (diff)
downloadrust-0414dfa0aa072b6e1153ae60f94de852c07bb803.tar.gz
rust-0414dfa0aa072b6e1153ae60f94de852c07bb803.zip
Auto merge of #62941 - GuillaumeGomez:save-crate-filter, r=Mark-Simulacrum
Save crate filtering on rustdoc

Fixes #62929.

I added a hashmap and a hash encoding for the current crate list in case you have multiple crates handling on a same website (who talked about docs.rs?!). Like that, for each context, you have the filter crate selected.

r? @QuietMisdreavus
Diffstat (limited to 'src/librustdoc/html')
-rw-r--r--src/librustdoc/html/static/main.js20
-rw-r--r--src/librustdoc/html/static/storage.js2
2 files changed, 19 insertions, 3 deletions
diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js
index 3d0f00095ac..4e5ffad8a74 100644
--- a/src/librustdoc/html/static/main.js
+++ b/src/librustdoc/html/static/main.js
@@ -445,6 +445,21 @@ if (!DOMTokenList.prototype.remove) {
         var OUTPUT_DATA = 1;
         var params = getQueryStringParams();
 
+        // Set the crate filter from saved storage, if the current page has the saved crate filter.
+        //
+        // If not, ignore the crate filter -- we want to support filtering for crates on sites like
+        // doc.rust-lang.org where the crates may differ from page to page while on the same domain.
+        var savedCrate = getCurrentValue("rustdoc-saved-filter-crate");
+        if (savedCrate !== null) {
+            onEachLazy(document.getElementById("crate-search").getElementsByTagName("option"),
+                       function(e) {
+                if (e.value === savedCrate) {
+                    document.getElementById("crate-search").value = e.value;
+                    return true;
+                }
+            });
+        }
+
         // Populate search bar with query string search term when provided,
         // but only if the input bar is empty. This avoid the obnoxious issue
         // where you start trying to do a search, and the index loads, and
@@ -1658,9 +1673,10 @@ if (!DOMTokenList.prototype.remove) {
             };
             search_input.onpaste = search_input.onchange;
 
-            var selectCrate = document.getElementById('crate-search');
+            var selectCrate = document.getElementById("crate-search");
             if (selectCrate) {
                 selectCrate.onchange = function() {
+                    updateLocalStorage("rustdoc-saved-filter-crate", selectCrate.value);
                     search(undefined, true);
                 };
             }
@@ -2496,7 +2512,7 @@ if (!DOMTokenList.prototype.remove) {
     }
 
     function addSearchOptions(crates) {
-        var elem = document.getElementById('crate-search');
+        var elem = document.getElementById("crate-search");
 
         if (!elem) {
             return;
diff --git a/src/librustdoc/html/static/storage.js b/src/librustdoc/html/static/storage.js
index c55b1e41443..9d30e7ee79b 100644
--- a/src/librustdoc/html/static/storage.js
+++ b/src/librustdoc/html/static/storage.js
@@ -57,7 +57,7 @@ function onEachLazy(lazyArray, func, reversed) {
 
 function usableLocalStorage() {
     // Check if the browser supports localStorage at all:
-    if (typeof(Storage) === "undefined") {
+    if (typeof Storage === "undefined") {
         return false;
     }
     // Check if we can access it; this access will fail if the browser