118 lines
3.5 KiB
JavaScript
118 lines
3.5 KiB
JavaScript
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)
|
||
}
|
||
})
|