This is an automated email from the ASF dual-hosted git repository.
gurwls223 pushed a commit to branch branch-3.5
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/branch-3.5 by this push:
new 555c8def51e Revert "Revert "[SPARK-44742][PYTHON][DOCS] Add Spark
version drop down to the PySpark doc site""
555c8def51e is described below
commit 555c8def51e5951c7bf5165a332795e9e330ec9d
Author: Hyukjin Kwon <[email protected]>
AuthorDate: Tue Sep 19 10:18:18 2023 +0900
Revert "Revert "[SPARK-44742][PYTHON][DOCS] Add Spark version drop down to
the PySpark doc site""
This reverts commit bbe12e148eb1f289cfb1f4412525f4c4381c10a9.
---
python/docs/source/_static/css/pyspark.css | 13 ++++
python/docs/source/_static/versions.json | 22 +++++++
.../docs/source/_templates/version-switcher.html | 77 ++++++++++++++++++++++
python/docs/source/conf.py | 9 ++-
4 files changed, 120 insertions(+), 1 deletion(-)
diff --git a/python/docs/source/_static/css/pyspark.css
b/python/docs/source/_static/css/pyspark.css
index 89b7c65f27a..ccfe60f2bca 100644
--- a/python/docs/source/_static/css/pyspark.css
+++ b/python/docs/source/_static/css/pyspark.css
@@ -95,3 +95,16 @@ u.bd-sidebar .nav>li>ul>.active:hover>a,.bd-sidebar
.nav>li>ul>.active>a {
.spec_table tr, td, th {
border-top: none!important;
}
+
+/* Styling to the version dropdown */
+#version-button {
+ padding-left: 0.2rem;
+ padding-right: 3.2rem;
+}
+
+#version_switcher {
+ height: auto;
+ max-height: 300px;
+ width: 165px;
+ overflow-y: auto;
+}
diff --git a/python/docs/source/_static/versions.json
b/python/docs/source/_static/versions.json
new file mode 100644
index 00000000000..3d0bd148180
--- /dev/null
+++ b/python/docs/source/_static/versions.json
@@ -0,0 +1,22 @@
+[
+ {
+ "name": "3.4.1",
+ "version": "3.4.1"
+ },
+ {
+ "name": "3.4.0",
+ "version": "3.4.0"
+ },
+ {
+ "name": "3.3.2",
+ "version": "3.3.2"
+ },
+ {
+ "name": "3.3.1",
+ "version": "3.3.1"
+ },
+ {
+ "name": "3.3.0",
+ "version": "3.3.0"
+ }
+]
diff --git a/python/docs/source/_templates/version-switcher.html
b/python/docs/source/_templates/version-switcher.html
new file mode 100644
index 00000000000..16c443229f4
--- /dev/null
+++ b/python/docs/source/_templates/version-switcher.html
@@ -0,0 +1,77 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<div id="version-button" class="dropdown">
+ <button type="button" class="btn btn-secondary btn-sm navbar-btn
dropdown-toggle" id="version_switcher_button" data-toggle="dropdown">
+ {{ release }}
+ <span class="caret"></span>
+ </button>
+ <div id="version_switcher" class="dropdown-menu list-group-flush py-0"
aria-labelledby="version_switcher_button">
+ <!-- dropdown will be populated by javascript on page load -->
+ </div>
+</div>
+
+<script type="text/javascript">
+// Function to construct the target URL from the JSON components
+function buildURL(entry) {
+ var template = "{{ switcher_template_url }}"; // supplied by jinja
+ template = template.replace("{version}", entry.version);
+ return template;
+}
+
+// Function to check if corresponding page path exists in other version of docs
+// and, if so, go there instead of the homepage of the other docs version
+function checkPageExistsAndRedirect(event) {
+ const currentFilePath = "{{ pagename }}.html",
+ otherDocsHomepage = event.target.getAttribute("href");
+ let tryUrl = `${otherDocsHomepage}${currentFilePath}`;
+ $.ajax({
+ type: 'HEAD',
+ url: tryUrl,
+ // if the page exists, go there
+ success: function() {
+ location.href = tryUrl;
+ }
+ }).fail(function() {
+ location.href = otherDocsHomepage;
+ });
+ return false;
+}
+
+// Function to populate the version switcher
+(function () {
+ // get JSON config
+ $.getJSON("{{ switcher_json_url }}", function(data, textStatus, jqXHR) {
+ // create the nodes first (before AJAX calls) to ensure the order is
+ // correct (for now, links will go to doc version homepage)
+ $.each(data, function(index, entry) {
+ // if no custom name specified (e.g., "latest"), use version string
+ if (!("name" in entry)) {
+ entry.name = entry.version;
+ }
+ // construct the appropriate URL, and add it to the dropdown
+ entry.url = buildURL(entry);
+ const node = document.createElement("a");
+ node.setAttribute("class", "list-group-item list-group-item-action
py-1");
+ node.setAttribute("href", `${entry.url}`);
+ node.textContent = `${entry.name}`;
+ node.onclick = checkPageExistsAndRedirect;
+ $("#version_switcher").append(node);
+ });
+ });
+})();
+</script>
diff --git a/python/docs/source/conf.py b/python/docs/source/conf.py
index 38c331048e7..0f57cb37cee 100644
--- a/python/docs/source/conf.py
+++ b/python/docs/source/conf.py
@@ -177,10 +177,17 @@ autosummary_generate = True
# a list of builtin themes.
html_theme = 'pydata_sphinx_theme'
+html_context = {
+ "switcher_json_url": "_static/versions.json",
+ "switcher_template_url":
"https://spark.apache.org/docs/{version}/api/python/index.html",
+}
+
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
-#html_theme_options = {}
+html_theme_options = {
+ "navbar_end": ["version-switcher"]
+}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]