|
1 |
| -var languageSelect; |
2 |
| - |
3 | 1 | document.addEventListener('DOMContentLoaded',function() {
|
4 |
| - languageSelect = document.querySelector(".language-select select"); |
5 |
| - languageSelect.onchange = languageSelectHandler; |
| 2 | + var languageSelect = document.querySelectorAll(".language-select select"); |
| 3 | + languageSelect.forEach(function(select) { |
| 4 | + select.onchange = languageSelectHandler; |
| 5 | + }); |
6 | 6 |
|
7 | 7 | var script = document.createElement('script');
|
8 |
| - script.src = '//accounts.adafruit.com/users/locale?callback=setLocale'; |
9 |
| - document.head.appendChild(script); |
10 |
| - |
| 8 | + script.setAttribute('src', '//accounts.adafruit.com/users/locale?callback=setLocale'); |
| 9 | + document.body.appendChild(script); |
11 | 10 | },false);
|
12 | 11 |
|
13 | 12 | function languageSelectHandler(event) {
|
14 |
| - document.querySelector(".download-button").href = languageSelect.value; |
| 13 | + // find download-details, two levels up from select |
| 14 | + // event may either be an event from selection, or passed from setLocale |
| 15 | + // as a select element. |
| 16 | + if (event.target) { |
| 17 | + var selectedOption = event.target; |
| 18 | + var parentNode = event.target.parentNode.parentNode; |
| 19 | + } else { |
| 20 | + var selectedOption = event.selectedOptions[0]; |
| 21 | + var parentNode = event.parentNode.parentNode; |
| 22 | + } |
| 23 | + |
| 24 | + var files = selectedOption.value.split(','); |
| 25 | + |
| 26 | + files.forEach(function(file) { |
| 27 | + var extension = file.substr(file.lastIndexOf('.') + 1); |
| 28 | + parentNode.querySelector(".download-button." + extension).href = file; |
| 29 | + }); |
15 | 30 | }
|
16 | 31 |
|
17 | 32 | function setLocale(response) {
|
18 |
| - var languages = response.languages.join(' ') |
19 |
| - var options = languageSelect.options; |
| 33 | + var languages = response.languages; |
| 34 | + var languageSelect = document.querySelectorAll(".language-select select"); |
| 35 | + |
| 36 | + languageSelect.forEach(function(select) { |
| 37 | + var options = select.options; |
20 | 38 |
|
21 |
| - for (var i = 0; i < options.length; i++) { |
22 |
| - if (languages.includes(options[i].dataset.locale)) { |
23 |
| - console.log(options[i].dataset.locale); |
24 |
| - options[i].selected = true; |
25 |
| - languageSelect.onchange(); |
| 39 | + for (var i = 0; i < options.length; i++) { |
| 40 | + if (languages.includes(options[i].dataset.locale)) { |
| 41 | + options[i].selected = true; |
| 42 | + select.onchange(select); |
| 43 | + } |
26 | 44 | }
|
27 |
| - } |
| 45 | + }); |
28 | 46 | }
|
0 commit comments