docs-v2/assets/js/influxdb-url.js

118 lines
3.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

var defaultUrl = "http://localhost:9999"
var elementSelector = ".article--content pre:not(.preserve)"
// Retrieve the selected URL from the influxdb_url session cookie
function getUrl() {
var currentUrl = Cookies.get('influxdb_url')
if (typeof currentUrl == 'undefined' ) {
return defaultUrl
} else {
return currentUrl
}
}
// Retrieve the previously selected URL from the influxdb_prev_url session cookie
// This is used to update URLs whenever you switch between browser tabs
function getPrevUrl() {
var prevUrl = Cookies.get('influxdb_prev_url')
if (typeof prevUrl == 'undefined' ) {
return defaultUrl
} else {
return prevUrl
}
}
// Iterate through code blocks and update InfluxDB urls
function updateUrls(currentUrl, newUrl) {
if (typeof currentUrl != newUrl) {
$(elementSelector).each(function() {
$(this).html($(this).html().replace(currentUrl, newUrl));
});
}
}
// Append the URL selector button to each codeblock with an InfluxDB URL
function appendUrlSelector(currentUrl) {
$(elementSelector).each(function() {
var code = $(this).html()
if (code.includes(currentUrl)) {
$(this).after("<div class='select-url'><a class='url-trigger' href='#'>Cloud or OSS?</a></div>")
$('.select-url').fadeIn(400)
}
});
}
// Toggle the URL selector modal window
function toggleModal() {
$(".modal").fadeToggle(200).toggleClass("open")
}
// Set the selected URL radio button to :checked
function setRadioButton(currentUrl) {
$('input[name="influxdb-loc"][value="' + currentUrl + '"]').prop("checked", true)
}
// Store the InfluxDB URL session cookies influxdb_url and influxdb_prev_url
function storeUrl(newUrl, prevUrl) {
Cookies.set('influxdb_prev_url', prevUrl)
Cookies.set('influxdb_url', newUrl)
}
// Preserver URLs in codeblocks that come just after or are inside a div
// with the class, .keep-url
function addPreserve() {
$('.keep-url').each(function () {
// For code blocks with no syntax highlighting
$(this).next('pre').addClass('preserve')
// For code blocks with syntax highlighting
$(this).next('.highlight').find('pre').addClass('preserve')
// For code blocks inside .keep-url div
// Special use case for codeblocks generated from yaml data / frontmatter
$(this).find('pre').addClass('preserve')
})
}
// Update URLs when selected in the modal
$('input[name="influxdb-loc"]').change(function() {
var newUrl = $(this).val()
updateUrls(getUrl(), newUrl)
storeUrl(newUrl, getUrl())
})
// Add the preserve tag to code blocks that shouldn't be udpated
addPreserve()
// Update URLs on load
updateUrls(defaultUrl, getUrl())
// Append URL selector buttons to code blocks
appendUrlSelector(getUrl())
// Set active radio button on page load
setRadioButton(getUrl())
// Update URLs whenever you focus on the browser tab
$(window).focus(function() {
updateUrls(getPrevUrl(), getUrl())
setRadioButton(getUrl())
});
// Toggle modal window on click
$("#modal-close, .modal-overlay, .url-trigger").click(function(e) {
e.preventDefault()
toggleModal()
})
// Show the feature callout on page load
if ( Cookies.get('influxdb_url_selector_seen') != 'true' ) {
$('#callout-url-selector').fadeIn(300).removeClass('start-position')
}
// Set feature cookie when the button is clicked
$('button.url-trigger, #callout-url-selector .close').click(function() {
if ( Cookies.get('influxdb_url_selector_seen') != 'true') {
Cookies.set('influxdb_url_selector_seen', 'true')
$('#callout-url-selector').fadeOut(200)
}
})