forked from wled/WLED-WebInstaller
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathscript.js
More file actions
104 lines (85 loc) · 2.93 KB
/
Copy pathscript.js
File metadata and controls
104 lines (85 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/**
* Populate the board dropdown based on the currently selected version.
* The version <option> stores available boards in data-boards (JSON).
*
* Each entry has the shape:
* { label: "4MB V4 M [ESP32]", builds: [{ chipFamily, board, downloadUrl }] }
*
* When experimental flash-size grouping is enabled, an entry may have multiple
* builds spanning different chip families (and flash sizes).
*/
function populateBoardDropdown() {
var verSel = document.getElementById('ver');
var boardSel = document.getElementById('board');
var opt = verSel.options[verSel.selectedIndex];
var boardsJson = opt && opt.dataset.boards;
// Clear existing options
boardSel.innerHTML = '';
if (!boardsJson) {
// Fallback for static options that don't have data-boards
var fallbackOpt = document.createElement('option');
fallbackOpt.textContent = 'No boards available';
boardSel.appendChild(fallbackOpt);
return;
}
var entries;
try {
entries = JSON.parse(boardsJson);
} catch (e) {
return;
}
if (!entries || entries.length === 0) return;
entries.forEach(function (entry) {
var o = document.createElement('option');
o.textContent = entry.label;
o.value = JSON.stringify(entry);
boardSel.appendChild(o);
});
// Auto-select the first board
boardSel.selectedIndex = 0;
}
/**
* Generate and set the manifest for the currently selected version + board.
*/
function updateManifest() {
var verSel = document.getElementById('ver');
var boardSel = document.getElementById('board');
var verOpt = verSel.options[verSel.selectedIndex];
var boardOpt = boardSel.options[boardSel.selectedIndex];
if (!verOpt || !boardOpt || !boardOpt.value) return;
var helpers = window._wledMM || {};
var version = verOpt.dataset.version || verOpt.textContent;
var boardEntry;
try {
boardEntry = JSON.parse(boardOpt.value);
} catch (e) {
return;
}
if (helpers.generateBoardManifest && helpers.createManifestUrl) {
var manifest = helpers.generateBoardManifest(version, boardEntry);
if (manifest) {
var url = helpers.createManifestUrl(manifest);
document.getElementById('inst').setAttribute('manifest', url);
}
}
document.getElementById('verstr').textContent = verOpt.textContent;
}
/**
* Called when the version dropdown changes.
*/
function setManifest() {
populateBoardDropdown();
updateManifest();
}
function checkSupported() {
if (document.getElementById('inst').hasAttribute('install-unsupported')) unsupported();
else setManifest();
}
function unsupported() {
document.getElementById('flasher').hidden = true;
document.getElementById('unsupported').hidden = false;
}
function showSerialHelp() {
document.getElementById('showSerialHelp').hidden = true;
document.getElementById('serialHelp').hidden = false;
}