|
18 | 18 | '(?:dev)',
|
19 | 19 | '(?:release/\\d.\\d[\\x\\d\\.]*)'];
|
20 | 20 |
|
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"}; |
23 | 23 |
|
24 | 24 | function quote_attr(str) {
|
25 | 25 | return '"' + str.replace('"', '\\"') + '"';
|
|
29 | 29 | var buf = ['<select id="version_select">'];
|
30 | 30 | var major_minor = release.split(".").slice(0, 2).join(".");
|
31 | 31 |
|
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 | + } |
37 | 38 | });
|
38 | 39 |
|
39 | 40 | buf.push('</select>');
|
|
43 | 44 | function build_language_select(current_language) {
|
44 | 45 | var buf = ['<select id="language_select">'];
|
45 | 46 |
|
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 { |
51 | 51 | buf.push('<option value="' + language + '">' + title + '</option>');
|
| 52 | + } |
52 | 53 | });
|
53 | 54 | if (!(current_language in all_languages)) {
|
54 | 55 | // In case we're browsing a language that is not yet in all_languages.
|
|
67 | 68 | window.location.href = url;
|
68 | 69 | return;
|
69 | 70 | }
|
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) { |
76 | 80 | navigate_to_first_existing(urls);
|
77 |
| - } |
78 |
| - }); |
| 81 | + }); |
79 | 82 | }
|
80 | 83 |
|
81 | 84 | function on_version_switch() {
|
82 |
| - var selected_version = $(this).children('option:selected').attr('value') + '/'; |
| 85 | + var selected_version = this.options[this.selectedIndex].value + '/'; |
83 | 86 | var url = window.location.href;
|
84 | 87 | var current_language = language_segment_from_url();
|
85 | 88 | var current_version = version_segment_from_url();
|
|
98 | 101 | }
|
99 | 102 |
|
100 | 103 | function on_language_switch() {
|
101 |
| - var selected_language = $(this).children('option:selected').attr('value') + '/'; |
| 104 | + var selected_language = this.options[this.selectedIndex].value + '/'; |
102 | 105 | var url = window.location.href;
|
103 | 106 | var current_language = language_segment_from_url();
|
104 | 107 | var current_version = version_segment_from_url();
|
|
143 | 146 | var language_segment = language_segment_from_url();
|
144 | 147 | var index = "/" + language_segment + version_segment;
|
145 | 148 |
|
146 |
| - if ($('.version_switcher_placeholder').length) |
| 149 | + if (document.querySelectorAll('.version_switcher_placeholder').length > 0) { |
147 | 150 | return;
|
| 151 | + } |
148 | 152 |
|
149 | 153 | var html = '<span class="language_switcher_placeholder"></span> \
|
150 | 154 | <span class="version_switcher_placeholder"></span> \
|
|
165 | 169 | }
|
166 | 170 | }
|
167 | 171 |
|
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); |
172 | 176 |
|
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); |
176 | 180 |
|
177 |
| - var language_select = build_language_select(current_language); |
| 181 | + var language_select = build_language_select(current_language); |
178 | 182 |
|
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 | +}); |
182 | 186 | })();
|
0 commit comments