blob: ca19528da29bfb31b1e36deff2fc0b5cb2143619 [file] [log] [blame]
/*!
* 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.
*/
/* Installation page display functions for install selector.
This utility allows direct links to specific install instructions.
*/
$(document).ready(function () {
function label(lbl) {
lbl = lbl.replace(/[ .]/g, '-').toLowerCase();
return lbl;
}
function urlSearchParams(searchString) {
let searchDict = new Map();
let searchParams = searchString.substring(1).split("&");
searchParams.forEach(function (element) {
kvPair = element.split("=");
searchDict.set(kvPair[0], kvPair[1]);
});
return searchDict;
}
function is_a_match(elem, text) {
if (label(elem.text()).includes(label(text))) {
elem.addClass(('active'))
}
}
function setSelects(urlParams, dontPushState) {
if (urlParams.get('version'))
versionSelect = urlParams.get('version');
$('.current-version').html( versionSelect + ' <span class="caret"></span>' );
if (urlParams.get('platform'))
platformSelect = label(urlParams.get('platform'));
if (urlParams.get('language'))
languageSelect = label(urlParams.get('language'));
if (urlParams.get('processor'))
processorSelect = label(urlParams.get('processor'));
if (urlParams.get('environ'))
environSelect = label(urlParams.get('environ'));
$('li.versions').removeClass('active');
$('li.versions').each(function(){is_a_match($(this), versionSelect)});
$('button.opt').removeClass('active');
$('button.opt').each(function(){is_a_match($(this), platformSelect)});
$('button.opt').each(function(){is_a_match($(this), languageSelect)});
$('button.opt').each(function(){is_a_match($(this), processorSelect)});
$('button.opt').each(function(){is_a_match($(this), environSelect)});
showContent();
let queryString = '?version=' + versionSelect + '&platform=' + platformSelect + '&language=' + languageSelect + '&environ=' + environSelect + '&processor=' + processorSelect
if (window.location.href.indexOf("/get_started") >= 0 && !dontPushState) {
history.pushState(null, null, queryString);
}
}
function showContent() {
$('.opt-group .opt').each(function () {
$('.' + label($(this).text())).hide();
});
$('.opt-group .active').each(function () {
$('.' + label($(this).text())).show();
});
}
setSelects(urlSearchParams(window.location.search));
function setContent() {
var el = $(this);
let urlParams = urlSearchParams(window.location.search);
el.siblings().removeClass('active');
el.addClass('active');
if ($(this).hasClass("versions")) {
$('.current-version').html($(this).text());
urlParams.set("version", $(this).text());
} else if ($(this).hasClass("platforms")) {
urlParams.set("platform", label($(this).text()));
} else if ($(this).hasClass("languages")) {
urlParams.set("language", label($(this).text()));
} else if ($(this).hasClass("processors")) {
urlParams.set("processor", label($(this).text()));
} else if ($(this).hasClass("environs")) {
urlParams.set("environ", label($(this).text()));
}
setSelects(urlParams);
}
$('.opt-group').on('click', '.opt', setContent);
$('.install-widget').css("visibility", "visible");
$('.install-content').css("visibility", "visible");
$(window).on('popstate', function(){
setSelects(urlSearchParams(window.location.search), true);
});
let timer;
const toggleDropdown = function(showContent) {
if (timer) clearTimeout(timer);
if (showContent) {
timer = setTimeout(function() {
$(".version-dropdown").show()
}, 250);
} else {
$(".version-dropdown").hide()
}
}
$("#version-dropdown-container")
.mouseenter(toggleDropdown.bind(null, true))
.mouseleave(toggleDropdown.bind(null, false))
.click(function() {$(".version-dropdown").toggle()});
$("ul.version-dropdown").click(function(e) {
e.preventDefault();
});
});