This is an automated email from the ASF dual-hosted git repository. kamilbregula pushed a commit to branch aip-11 in repository https://gitbox.apache.org/repos/asf/airflow-site.git
The following commit(s) were added to refs/heads/aip-11 by this push: new faad101 Add version selector (#143) faad101 is described below commit faad101b593adab46556d031169ca9d91df7f667 Author: Kamil BreguĊa <mik-...@users.noreply.github.com> AuthorDate: Fri Nov 8 18:26:44 2019 +0100 Add version selector (#143) --- Dockerfile | 3 ++ .../show_docs_index_json.sh | 24 ++++------ landing-pages/.gitignore | 2 +- landing-pages/create-index.js | 2 +- .../assets/scss/_dropdown.scss} | 24 +++++++--- landing-pages/site/assets/scss/main-custom.scss | 1 + .../site/layouts/partials}/version-selector.html | 24 +++++----- landing-pages/site/static/{ => _gen}/indexes/.keep | 0 landing-pages/src/docs-index.js | 1 + landing-pages/src/index.js | 1 + landing-pages/src/js/searchBlogPosts.js | 4 +- landing-pages/src/js/versionSelector.js | 56 ++++++++++++++++++++++ site.sh | 6 +++ sphinx_airflow_theme/demo/conf.py | 3 +- .../sphinx_airflow_theme/__init__.py | 1 - .../sphinx_airflow_theme/version-selector.html | 20 ++++---- 16 files changed, 121 insertions(+), 51 deletions(-) diff --git a/Dockerfile b/Dockerfile index 585cbc7..d338ebc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -54,6 +54,9 @@ RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* +RUN curl -sL "https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64" > /usr/local/bin/jq \ + && chmod +x /usr/local/bin/jq + RUN HUGOHOME="$(mktemp -d)" \ && export HUGOHOME \ && curl -sL https://github.com/gohugoio/hugo/releases/download/v0.58.3/hugo_extended_0.58.3_Linux-64bit.tar.gz > "${HUGOHOME}/hugo.tar.gz" \ diff --git a/sphinx_airflow_theme/sphinx_airflow_theme/__init__.py b/docs-archive/show_docs_index_json.sh old mode 100644 new mode 100755 similarity index 60% copy from sphinx_airflow_theme/sphinx_airflow_theme/__init__.py copy to docs-archive/show_docs_index_json.sh index 7165840..297d737 --- a/sphinx_airflow_theme/sphinx_airflow_theme/__init__.py +++ b/docs-archive/show_docs_index_json.sh @@ -1,3 +1,5 @@ +#!/usr/bin/env bash + # 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 @@ -15,20 +17,14 @@ # specific language governing permissions and limitations # under the License. -from os import path - -__version__ = '0.0.1' -__version_full__ = __version__ - +set -euo pipefail -def get_html_theme_path(): - """Return list of HTML theme paths.""" - cur_dir = path.abspath(path.dirname(path.dirname(__file__))) - return cur_dir +MY_DIR="$(cd "$(dirname "$0")" && pwd)" +pushd "${MY_DIR}" &>/dev/null || exit 1 +jq -n '{stable: $stable, versions: $versions[0:-1] | split("\n") }' \ + -M \ + --rawfile stable <(cat stable.txt | tr -d '[:space:]') \ + --rawfile versions <(ls -d ./*/ | cut -d "/" -f 2) -# See http://www.sphinx-doc.org/en/stable/theming.html#distribute-your-theme-as-a-python-package -def setup(app): - app.add_html_theme('sphinx_airflow_theme', path.abspath(path.dirname(__file__))) - app.add_stylesheet('_gen/css//main-custom.min.css') - app.add_js_file('_gen/js/docs.js') +popd &>/dev/null || exit 1 diff --git a/landing-pages/.gitignore b/landing-pages/.gitignore index c8b191f..4aa6c9e 100644 --- a/landing-pages/.gitignore +++ b/landing-pages/.gitignore @@ -2,4 +2,4 @@ node_modules/ dist/ site/data/webpack.json resources/ -site/static/indexes/ +site/static/_gen/ diff --git a/landing-pages/create-index.js b/landing-pages/create-index.js index 69ec28f..495b5fc 100644 --- a/landing-pages/create-index.js +++ b/landing-pages/create-index.js @@ -27,7 +27,7 @@ const parse = promisify(frontMatterParser.parse.bind(frontMatterParser)); const lunrjs = require("lunr"); const contentDirectory = `${__dirname}/site/content`; -const outputtDirectory = `${__dirname}/site/static/indexes`; +const outputtDirectory = `${__dirname}/site/static/_gen/indexes`; async function isDirectoryExists(dirPath) { diff --git a/landing-pages/src/docs-index.js b/landing-pages/site/assets/scss/_dropdown.scss similarity index 75% copy from landing-pages/src/docs-index.js copy to landing-pages/site/assets/scss/_dropdown.scss index 884ea65..888d67c 100644 --- a/landing-pages/src/docs-index.js +++ b/landing-pages/site/assets/scss/_dropdown.scss @@ -16,11 +16,21 @@ * specific language governing permissions and limitations * under the License. */ +@import "fonts"; +@import "colors"; -import "./js/navbarScroll"; -import "./js/drawer"; -import "./js/contentDrawer"; -import "./js/progressTracking"; -import "./js/rating"; -import "./js/makeTableResponsive"; -import "./js/tocTree"; +.dropdown-menu { + font-family: $primary-font; +} + +.dropdown-toggle::after { + color: map-get($colors, greyish-brown); +} + +.sidebar__version-selector { + margin-bottom: 22px; + + a { + @extend .bodytext__medium--brownish-grey; + } +} diff --git a/landing-pages/site/assets/scss/main-custom.scss b/landing-pages/site/assets/scss/main-custom.scss index 8a1ed45..7b06c2a 100644 --- a/landing-pages/site/assets/scss/main-custom.scss +++ b/landing-pages/site/assets/scss/main-custom.scss @@ -49,3 +49,4 @@ @import "rst-content"; @import "pygments"; @import "content-drawer"; +@import "dropdown"; diff --git a/sphinx_airflow_theme/sphinx_airflow_theme/version-selector.html b/landing-pages/site/layouts/partials/version-selector.html similarity index 55% copy from sphinx_airflow_theme/sphinx_airflow_theme/version-selector.html copy to landing-pages/site/layouts/partials/version-selector.html index d5e400a..63db3e9 100644 --- a/sphinx_airflow_theme/sphinx_airflow_theme/version-selector.html +++ b/landing-pages/site/layouts/partials/version-selector.html @@ -1,4 +1,4 @@ -{# +{{/* 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 @@ -15,19 +15,17 @@ KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -#} +*/}} -<div id="version-selector" class="sidebar__version-selector"> - <a class="dropdown-toggle" href="#" id="versionDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> - <span class="bodytext__medium--greyish-brown">Version: </span><span id="selected-version">undefined</span> +<div id="docs-version-selector" class="docs-version-selector sidebar__version-selector"> + <a class="dropdown-toggle" href="#" id="versionDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" + aria-expanded="false"> + <span class="bodytext__medium--greyish-brown">Version: </span><span class="version">Select version</span> </a> - <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink" x-placement="bottom-start" style="position: absolute; will-change: transform; top: 0px; left: 0px; transform: translate3d(15px, 33px, 0px);"> - <a class="dropdown-item" href="/docs/1.10.1">1.10.1</a> - <a class="dropdown-item" href="/docs/1.10.2">1.10.2</a> - <a class="dropdown-item" href="/docs/1.10.3">1.10.3</a> - <a class="dropdown-item" href="/docs/1.10.4">1.10.4</a> - <a class="dropdown-item" href="/docs/1.10.5">1.10.5</a> - <a class="dropdown-item" href="/docs/1.10.6">1.10.6</a> - <a class="dropdown-item" href="/docs/1.10.7">1.10.7</a> + <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> + </div> + <script type="application/x-template" id="version-item-template"> + <a class="dropdown-item"></a> + </script> </div> diff --git a/landing-pages/site/static/indexes/.keep b/landing-pages/site/static/_gen/indexes/.keep similarity index 100% rename from landing-pages/site/static/indexes/.keep rename to landing-pages/site/static/_gen/indexes/.keep diff --git a/landing-pages/src/docs-index.js b/landing-pages/src/docs-index.js index 884ea65..7c0917e 100644 --- a/landing-pages/src/docs-index.js +++ b/landing-pages/src/docs-index.js @@ -24,3 +24,4 @@ import "./js/progressTracking"; import "./js/rating"; import "./js/makeTableResponsive"; import "./js/tocTree"; +import "./js/versionSelector"; diff --git a/landing-pages/src/index.js b/landing-pages/src/index.js index 9a871e7..2ebe023 100644 --- a/landing-pages/src/index.js +++ b/landing-pages/src/index.js @@ -25,6 +25,7 @@ import "./js/contentDrawer"; import "./js/progressTracking"; import "./js/rating"; import "./js/makeTableResponsive"; +import "./js/versionSelector"; if (document.querySelector("#search")) { import(/* webpackChunkName: "search" */ "./js/searchBlogPosts"); diff --git a/landing-pages/src/js/searchBlogPosts.js b/landing-pages/src/js/searchBlogPosts.js index 85fe443..5cd516e 100644 --- a/landing-pages/src/js/searchBlogPosts.js +++ b/landing-pages/src/js/searchBlogPosts.js @@ -47,8 +47,8 @@ const setTags = (tagsContainer, tags) => { }; Promise.all([ - fetch("/indexes/en/blog-index.json"), - fetch("/indexes/en/blog-posts.json") + fetch("/_gen/indexes/en/blog-index.json"), + fetch("/_gen/indexes/en/blog-posts.json") ]).then(function([indexResp, postsResp]) { return Promise.all([ indexResp.json(), diff --git a/landing-pages/src/js/versionSelector.js b/landing-pages/src/js/versionSelector.js new file mode 100644 index 0000000..316fcda --- /dev/null +++ b/landing-pages/src/js/versionSelector.js @@ -0,0 +1,56 @@ +/** + * 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. + */ + +const runVersionSelector = () => { + const versionSelectors = window.document.querySelectorAll(".docs-version-selector"); + + if (!versionSelectors || versionSelectors.length === 0) { + return; + } + + fetch("/_gen/docs-index.json") + .then((resp) => resp.json()) + .then(({stable, versions}) => { + versionSelectors.forEach((versionSelector) => { + const templateText = versionSelector.querySelector("#version-item-template").innerText; + let templateElement = document.createElement("div"); + templateElement.innerHTML = templateText; + templateElement = templateElement.firstElementChild; + + const dropdownMenu = versionSelector.querySelector(".dropdown-menu"); + + + const currentVersion = window.document.location.pathname.split("/")[2]; + + const appendNewVersionLink = (location, label) => { + const newElement = templateElement.cloneNode(true); + const newDocsLink = document.location.toString().replace( + `/${currentVersion}/`, `/${location}/` + ); + newElement.setAttribute("href", newDocsLink); + newElement.innerText = label; + dropdownMenu.appendChild(newElement); + }; + appendNewVersionLink("stable", `Stable (${stable})`); + versions.forEach((version) => appendNewVersionLink(version, version)); + }); + }); +}; + +runVersionSelector(); diff --git a/site.sh b/site.sh index 851bd55..e27d23c 100755 --- a/site.sh +++ b/site.sh @@ -203,9 +203,14 @@ function run_lint { run_command "${script_working_directory}" "${command}" "${DOCKER_PATHS[@]}" } +function prepare_docs_index() { + run_command "/opt/site/docs-archive/" ./show_docs_index_json.sh > landing-pages/site/static/_gen/docs-index.json +} + function build_site { mkdir -p dist rm -rf dist/* + prepare_docs_index run_command "/opt/site/landing-pages/" npm run build cp -R landing-pages/dist/ dist/ mkdir -p dist/docs/ @@ -291,6 +296,7 @@ if [[ "${CMD}" == "install-node-deps" ]] ; then elif [[ "${CMD}" == "preview" ]]; then ensure_node_module_exists run_command "/opt/site/landing-pages/" npm run index + prepare_docs_index run_command "/opt/site/landing-pages/" npm run preview elif [[ "${CMD}" == "build-landing-pages" ]]; then ensure_node_module_exists diff --git a/sphinx_airflow_theme/demo/conf.py b/sphinx_airflow_theme/demo/conf.py index 44cc1a5..e3eafd5 100644 --- a/sphinx_airflow_theme/demo/conf.py +++ b/sphinx_airflow_theme/demo/conf.py @@ -15,6 +15,7 @@ # specific language governing permissions and limitations # under the License. +import os # Configuration file for the Sphinx documentation builder. # # This file only contains a selection of the most common options. For a full @@ -37,7 +38,7 @@ project = 'Theme demo' copyright = '2019, Apache Software Foundation' author = 'Apache Software Foundation' - +version = os.environ.get('RELEASE_VERSION', 'latest') # -- General configuration --------------------------------------------------- diff --git a/sphinx_airflow_theme/sphinx_airflow_theme/__init__.py b/sphinx_airflow_theme/sphinx_airflow_theme/__init__.py index 7165840..5132835 100644 --- a/sphinx_airflow_theme/sphinx_airflow_theme/__init__.py +++ b/sphinx_airflow_theme/sphinx_airflow_theme/__init__.py @@ -31,4 +31,3 @@ def get_html_theme_path(): def setup(app): app.add_html_theme('sphinx_airflow_theme', path.abspath(path.dirname(__file__))) app.add_stylesheet('_gen/css//main-custom.min.css') - app.add_js_file('_gen/js/docs.js') diff --git a/sphinx_airflow_theme/sphinx_airflow_theme/version-selector.html b/sphinx_airflow_theme/sphinx_airflow_theme/version-selector.html index d5e400a..253c7b1 100644 --- a/sphinx_airflow_theme/sphinx_airflow_theme/version-selector.html +++ b/sphinx_airflow_theme/sphinx_airflow_theme/version-selector.html @@ -17,17 +17,15 @@ under the License. #} -<div id="version-selector" class="sidebar__version-selector"> - <a class="dropdown-toggle" href="#" id="versionDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> - <span class="bodytext__medium--greyish-brown">Version: </span><span id="selected-version">undefined</span> +<div id="docs-version-selector" class="docs-version-selector sidebar__version-selector"> + <a class="dropdown-toggle" href="#" id="versionDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" + aria-expanded="false"> + <span class="bodytext__medium--greyish-brown">Version: </span><span class="version">{{ version }}</span> </a> - <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink" x-placement="bottom-start" style="position: absolute; will-change: transform; top: 0px; left: 0px; transform: translate3d(15px, 33px, 0px);"> - <a class="dropdown-item" href="/docs/1.10.1">1.10.1</a> - <a class="dropdown-item" href="/docs/1.10.2">1.10.2</a> - <a class="dropdown-item" href="/docs/1.10.3">1.10.3</a> - <a class="dropdown-item" href="/docs/1.10.4">1.10.4</a> - <a class="dropdown-item" href="/docs/1.10.5">1.10.5</a> - <a class="dropdown-item" href="/docs/1.10.6">1.10.6</a> - <a class="dropdown-item" href="/docs/1.10.7">1.10.7</a> + <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"> + </div> + <script type="application/x-template" id="version-item-template"> + <a class="dropdown-item"></a> + </script> </div>