提交 2dab719f authored 作者: slefrancois's avatar slefrancois

Version switcher construction in ajax to avoid setting html before version info…

Version switcher construction in ajax to avoid setting html before version info is obtained from server
上级 2db4644f
...@@ -2,84 +2,88 @@ ...@@ -2,84 +2,88 @@
(function() { (function() {
var url = window.location.href; var url = window.location.href;
var theano_dir = 'theano'; // directory containing theano doc var theano_dir = 'theano'; // directory containing theano doc
// Default theano version: release and development. // Default theano version: release and development.
var versions_dir = {"release": "theano", "dev": "theano_versions/dev"}; var versions_dir = {"release": "theano", "dev": "theano_versions/dev"};
// When doc is run from server
if (url.startsWith('http')) {
var root_url = url.substring(0, url.search('/' + theano_dir)) + '/';
// Get theano versions from dynamically generated version file on server.
$.getJSON(root_url + 'theano_versions/versions.json', function(data){
$.each(data, function(version, dir) {
versions_dir[version] = dir
});
});
}
// When doc is run localy
else if (url.startsWith('file')) {
theano_dir = 'html';
var root_url = url.substring(0, url.search('/' + theano_dir)) + '/';
versions_dir = {"local":"html"};
}
// Regular expression to find theano version directory in URL. // If doc is run localy
var version_regex = new RegExp("\\/" + theano_dir + "(_versions\/)*([_a-zA-Z.0-9]*)\\/"); if (url.startsWith('file')) {
theano_dir = 'html';
versions_dir = {"local":"html"};
}
var root_url = url.substring(0, url.search('/' + theano_dir)) + '/';
// Get current version // Regular expression to find theano version directory in URL.
var current_version = url.match(version_regex)[0] var version_regex = new RegExp("\\/" + theano_dir + "(_versions\\/)?([_a-zA-Z.0-9]*)\\/");
current_version = current_version.substring(1, current_version.length - 1)
// Add current version in case versions.json is unavailable
if (current_version != "theano" && current_version != "html") {
ver = current_version.replace("theano_versions/", "")
versions_dir[ver] = current_version
}
function build_select() {
// Build HTML string for version selector combo box and
// select current version by iterating versions_dir.
var select = ['<select>']; // Get current version
$.each(versions_dir, function(version, dir){ var current_version = url.match(version_regex)[0]
select.push('<option value="' + version + '"'); current_version = current_version.substring(1, current_version.length - 1)
if (dir == current_version)
select.push(' selected="selected">' + version + '</option>'); // Add current version in case versions.json is unavailable
else if (current_version != "theano" && current_version != "html") {
select.push('>' + version + '</option>'); ver = current_version.replace("theano_versions/", "")
}); versions_dir[ver] = current_version
}
function build_select() {
// Build HTML string for version selector combo box and
// select current version by iterating versions_dir.
return select.join(''); var select = ['<select>'];
} $.each(versions_dir, function(version, dir){
select.push('<option value="' + version + '"');
if (dir == current_version)
select.push(' selected="selected">' + version + '</option>');
else
select.push('>' + version + '</option>');
});
return select.join('');
}
function on_switch() { function on_switch() {
// Method triggered when an option is selected in combo box. // Method triggered when an option is selected in combo box.
var selected = $(this).children('option:selected').attr('value'); var selected = $(this).children('option:selected').attr('value');
// Insert selected version in URL. // Insert selected version in URL.
var new_url = url.replace(url.match(version_regex)[0], var new_url = url.replace(url.match(version_regex)[0],
'/' + versions_dir[selected] + '/'); '/' + versions_dir[selected] + '/');
if (url != new_url) { if (url != new_url) {
$.ajax({ $.ajax({
success: function() { success: function() {
window.location.href = new_url; window.location.href = new_url;
}, },
// If page not in version, go to root of documentation. // If page not in version, go to root of documentation.
error: function() { error: function() {
window.location.href = root_url + versions_dir[selected] + '/'; window.location.href = root_url + versions_dir[selected] + '/';
}
});
} }
});
} }
}
// Create combobox HTML, assign to placeholder in layout.html and // Create combobox HTML, assign to placeholder in layout.html and
// bind selection method. // bind selection method.
$(document).ready(function() { $(document).ready(function() {
// Get theano version. // Get theano version.
// var current_version = DOCUMENTATION_OPTIONS.VERSION; // var current_version = DOCUMENTATION_OPTIONS.VERSION;
var select = build_select(); // Build default switcher
$('.version_switcher_placeholder').html(select); $('.version_switcher_placeholder').html(build_select());
$('.version_switcher_placeholder select').bind('change', on_switch)
// Check server for other doc versions and update switcher.
if (url.startsWith('http')) {
$.getJSON(root_url + 'theano_versions/versions.json', function(data){
$.each(data, function(version, dir) {
versions_dir[version] = dir;
});
$('.version_switcher_placeholder').html(build_select());
$('.version_switcher_placeholder select').bind('change', on_switch) $('.version_switcher_placeholder select').bind('change', on_switch)
}); });
}
});
})(); })();
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论