8000 Replace jQuery with vanilla JavaScript · python/docsbuild-scripts@5f720a9 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5f720a9

Browse files
committed
Replace jQuery with vanilla JavaScript
1 parent 57f3c65 commit 5f720a9

File tree

1 file changed

+38
-34
lines changed

1 file changed

+38
-34
lines changed

templates/switchers.js

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
'(?:dev)',
1919
'(?:release/\\d.\\d[\\x\\d\\.]*)'];
2020

21-
var all_versions = $VERSIONS;
22-
var all_languages = $LANGUAGES;
21+
var all_versions = {"3.13": "dev (3.13)", "3.12": "pre (3.12)", "3.11": "3.11", "3.10": "3.10", "3.9": "3.9", "3.8": "3.8", "3.7": "3.7", "3.6": "3.6", "3.5": "3.5", "2.7": "2.7"};
22+
var all_languages = {"en": "English", "es": "Spanish", "fr": "French", "ja": "Japanese", "ko": "Korean", "pt-br": "Brazilian Portuguese", "tr": "Turkish", "zh-cn": "Simplified Chinese", "zh-tw": "Traditional Chinese"};
2323

2424
function quote_attr(str) {
2525
return '"' + str.replace('"', '\\"') + '"';
@@ -29,11 +29,12 @@
2929
var buf = ['<select id="version_select">'];
3030
var major_minor = release.split(".").slice(0, 2).join(".");
3131

32-
$.each(all_versions, function(version, title) {
33-
if (version == major_minor)
34-
buf.push('<option value=' + quote_attr(version) + ' selected="selected">' + release + '</option>');
35-
else
36-
buf.push('<option value=' + quote_attr(version) + '>' + title + '</option>');
32+
Object.entries(all_versions).forEach(function([version, title]) {
33+
if (version === major_minor) {
34+
buf.push('<option value="' + quote_attr(version) + '" selected="selected">' + release + '</option>');
35+
} else {
36+
buf.push('<option value="' + quote_attr(version) + '">' + title + '</option>');
37+
}
3738
});
3839

3940
buf.push('</select>');
@@ -43,12 +44,12 @@
4344
function build_language_select(current_language) {
4445
var buf = ['<select id="language_select">'];
4546

46-
$.each(all_languages, function(language, title) {
47-
if (language == current_language)
48-
buf.push('<option value="' + language + '" selected="selected">' +
49-
all_languages[current_language] + '</option>');
50-
else
47+
Object.entries(all_languages).forEach(function([language, title]) {
48+
if (language === current_language) {
49+
buf.push('<option value="' + language + '" selected="selected">' + title + '</option>');
50+
} else {
5151
buf.push('<option value="' + language + '">' + title + '</option>');
52+
}
5253
});
5354
if (!(current_language in all_languages)) {
5455
// In case we're browsing a language that is not yet in all_languages.
@@ -67,19 +68,21 @@
6768
window.location.href = url;
6869
return;
6970
}
70-
$.ajax({
71-
url: url,
72-
success: function() {
73-
window.location.href = url;
74-
},
75-
error: function() {
71+
fetch(url)
72+
.then(function(response) {
73+
if (response.ok) {
74+
window.location.href = url;
75+
} else {
76+
navigate_to_first_existing(urls);
77+
}
78+
})
79+
.catch(function(error) {
7680
navigate_to_first_existing(urls);
77-
}
78-
});
81+
});
7982
}
8083

8184
function on_version_switch() {
82-
var selected_version = $(this).children('option:selected').attr('value') + '/';
85+
var selected_version = this.options[this.selectedIndex].value + '/';
8386
var url = window.location.href;
8487
var current_language = language_segment_from_url();
8588
var current_version = version_segment_from_url();
@@ -98,7 +101,7 @@
98101
}
99102

100103
function on_language_switch() {
101-
var selected_language = $(this).children('option:selected').attr('value') + '/';
104+
var selected_language = this.options[this.selectedIndex].value + '/';
102105
var url = window.location.href;
103106
var current_language = language_segment_from_url();
104107
var current_version = version_segment_from_url();
@@ -143,8 +146,9 @@
143146
var language_segment = language_segment_from_url();
144147
var index = "/" + language_segment + version_segment;
145148

146-
if ($('.version_switcher_placeholder').length)
149+
if (document.querySelectorAll('.version_switcher_placeholder').length > 0) {
147150
return;
151+
}
148152

149153
var html = '<span class="language_switcher_placeholder"></span> \
150154
<span class="version_switcher_placeholder"></span> \
@@ -165,18 +169,18 @@
165169
}
166170
}
167171

168-
$(document).ready(function() {
169-
var language_segment = language_segment_from_url();
170-
var current_language = language_segment.replace(/\/+$/g, '') || 'en';
171-
var version_select = build_version_select(DOCUMENTATION_OPTIONS.VERSION);
172+
document.addEventListener('DOMContentLoaded', function() {
173+
var language_segment = language_segment_from_url();
174+
var current_language = language_segment.replace(/\/+$/g, '') || 'en';
175+
var version_select = build_version_select(DOCUMENTATION_OPTIONS.VERSION);
172176

173-
create_placeholders_if_missing();
174-
$('.version_switcher_placeholder').html(version_select);
175-
$('.version_switcher_placeholder select').bind('change', on_version_switch);
177+
create_placeholders_if_missing();
178+
document.querySelector('.version_switcher_placeholder').innerHTML = version_select;
179+
document.querySelector('.version_switcher_placeholder select').addEventListener('change', on_version_switch);
176180

177-
var language_select = build_language_select(current_language);
181+
var language_select = build_language_select(current_language);
178182

179-
$('.language_switcher_placeholder').html(language_select);
180-
$('.language_switcher_placeholder select').bind('change', on_language_switch);
181-
});
183+
document.querySelector('.language_switcher_placeholder').innerHTML = language_select;
184+
document.querySelector('.language_switcher_placeholder select').addEventListener('change', on_language_switch);
185+});
182186
})();

0 commit comments

Comments
 (0)
0