eng/common/docgeneration/templates/matthews/styles/main.js (196 lines of code) (raw):
// Use container fluid
var containers = $(".container");
containers.removeClass("container");
containers.addClass("container-fluid");
WINDOW_CONTENTS = window.location.href.split('/')
var SELECTED_LANGUAGE = ''
var PACKAGE_REGEX = ''
var PACKAGE_REPLACEMENT = ''
ATTR1 = '[<span class="hljs-meta">System.ComponentModel.EditorBrowsable</span>]\n<'
// Navbar Hamburger
$(function () {
$(".navbar-toggle").click(function () {
$(this).toggleClass("change");
})
})
// Select list to replace affix on small screens
$(function () {
var navItems = $(".sideaffix .level1 > li");
if (navItems.length == 0) {
return;
}
var selector = $("<select/>");
selector.addClass("form-control visible-sm visible-xs");
var form = $("<form/>");
form.append(selector);
form.prependTo("article");
selector.change(function () {
window.location = $(this).find("option:selected").val();
})
function work(item, level) {
var link = item.children('a');
var text = link.text();
for (var i = 0; i < level; ++i) {
text = ' ' + text;
}
selector.append($('<option/>', {
'value': link.attr('href'),
'html': text
}));
var nested = item.children('ul');
if (nested.length > 0) {
nested.children('li').each(function () {
work($(this), level + 1);
});
}
}
navItems.each(function () {
work($(this), 0);
});
})
$(function () {
// Inject line breaks and spaces into the code sections
$(".lang-csharp").each(function () {
var text = $(this).html();
text = text.replace(/, /g, ",</br>		");
text = text.replace(ATTR1, '<');
$(this).html(text);
});
// Add text to empty links
$("p > a").each(function () {
var link = $(this).attr('href')
if ($(this).text() === "" && $(this).children().attr("src") === "") {
$(this).html(link)
}
});
})
function httpGetAsync(targetUrl, callback) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
callback(xmlHttp.responseText);
}
xmlHttp.open("GET", targetUrl, true); // true for asynchronous
xmlHttp.send(null);
}
function httpGetAsyncFallbackOnFail(targetUrl, successCallback, failureCallback) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
successCallback(xmlHttp.responseText);
} else {
failureCallback(xmlHttp.status)
}
}
}
xmlHttp.open("GET", targetUrl, true); // true for asynchronous
xmlHttp.send(null);
}
function populateOptions(selector, packageName) {
var versionRequestUrl = "https://azuresdkdocs.z19.web.core.windows.net/" + SELECTED_LANGUAGE + "/" + packageName + "/versioning/versions"
httpGetAsync(versionRequestUrl, function (responseText) {
var versionselector = document.createElement("select")
var cv = WINDOW_CONTENTS[6]
versionselector.className = 'navbar-version-select'
if (responseText) {
options = responseText.match(/[^\r\n]+/g)
for (var i in options) {
$(versionselector).append('<option value="' + options[i] + '">' + options[i] + '</option>')
}
}
if(cv === 'latest')
{
$(versionselector).selectedIndex = 0
}
else {
$(versionselector).val(cv);
}
$(selector).append(versionselector)
$(versionselector).change(function () {
targetVersion = $(this).val()
url = WINDOW_CONTENTS.slice()
url[6] = targetVersion
var targetUrl = url.join('/')
httpGetAsyncFallbackOnFail(targetUrl, (unused) => window.location.href = url.join('/'),
(failureStatus) => window.location.href = getPackageUrl(SELECTED_LANGUAGE, packageName, targetVersion))
});
})
}
function httpGetLatestAsync(targetUrl, latestVersions, packageName) {
httpGetAsync(targetUrl, function (responseText) {
if (responseText) {
version = responseText.match(/[^\r\n]+/g)
$(latestVersions).append('<li><a href="' + getPackageUrl(SELECTED_LANGUAGE, packageName, version) + '" target="_blank">' + version + '</a></li>')
}
})
}
function loadedOtherVersions(url, latestVersions, publishedVersions, selector, collapsible, packageName) {
var hasAdded = function (currentVersion) {
return $(publishedVersions).children('li').filter(function() {
return $(this).text() === currentVersion
}).length || $(latestVersions).children('li').filter(function() {
return $(this).text() === currentVersion
}).length
}
httpGetAsync(url, function (responseText) {
if (responseText) {
options = responseText.match(/[^\r\n]+/g)
for (var i in options) {
if (!hasAdded(options[i])) {
$(publishedVersions).append('<li><a href="' + getPackageUrl(SELECTED_LANGUAGE, packageName, options[i]) + '" target="_blank">' + options[i] + '</a></li>')
}
}
}
else {
$(publishedVersions).append('<li>No discovered versions present in blob storage.</li>')
}
$(selector).addClass("loaded")
if ($(publishedVersions).children('li').length < 1) {
$(collapsible).remove()
}
})
}
function populateIndexList(selector, packageName) {
var url = "https://azuresdkdocs.z19.web.core.windows.net/" + SELECTED_LANGUAGE + "/" + packageName + "/versioning/versions"
var latestGAUrl = "https://azuresdkdocs.z19.web.core.windows.net/" + SELECTED_LANGUAGE + "/" + packageName + "/versioning/latest-ga"
var latestPreviewUrl = "https://azuresdkdocs.z19.web.core.windows.net/" + SELECTED_LANGUAGE + "/" + packageName + "/versioning/latest-preview"
var latestVersions = document.createElement("ul")
httpGetLatestAsync(latestGAUrl, latestVersions, packageName)
httpGetLatestAsync(latestPreviewUrl, latestVersions, packageName)
var publishedVersions = $('<ul style="display: none;"></ul>')
var collapsible = $('<div class="versionarrow"> Other versions</div>')
// Check whether it has display name tag.
if ($(selector).next().is('h5')) {
$(selector).next().after(latestVersions)
} else {
$(selector).after(latestVersions)
}
$(latestVersions).after(collapsible)
$(collapsible).after(publishedVersions)
// Add collapsible arrows on versioned docs.
$(collapsible).on('click', function(event) {
event.preventDefault();
if (collapsible.hasClass('disable')) {
return
}
$(this).toggleClass('down')
if ($(this).hasClass('down')) {
if (!$(selector).hasClass('loaded')){
loadedOtherVersions(url, latestVersions, publishedVersions, selector, collapsible, packageName)
}
$(publishedVersions).show()
} else {
$(publishedVersions).hide()
}
});
}
function getPackageUrl(language, package, version) {
return "https://azuresdkdocs.z19.web.core.windows.net/" + language + "/" + package + "/" + version + "/index.html"
}
// Populate Versions
$(function () {
if (WINDOW_CONTENTS.length < 7 && WINDOW_CONTENTS[WINDOW_CONTENTS.length - 1] != 'index.html') {
console.log("Run PopulateList")
$('h4').each(function () {
var pkgName = $(this).text().replace(PACKAGE_REGEX, PACKAGE_REPLACEMENT)
populateIndexList($(this), pkgName)
})
}
if (WINDOW_CONTENTS.length > 7) {
var pkgName = WINDOW_CONTENTS[5]
populateOptions($('#navbar'), pkgName)
}
})