Skip to content

Commit 5f85979

Browse files
committed
[docs] Show older releases on docs.modm.io
1 parent be1ea15 commit 5f85979

File tree

2 files changed

+54
-10
lines changed

2 files changed

+54
-10
lines changed

tools/scripts/docs_modm_io_generator.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from pathlib import Path
2424
from jinja2 import Environment, FileSystemLoader
2525
from collections import defaultdict
26+
import json
2627

2728
def repopath(path):
2829
return Path(__file__).absolute().parents[2] / path
@@ -112,8 +113,8 @@ def main():
112113
board_list = [("arduino-nano", "atmega328p-au"), ("arduino-uno", "atmega328p-au"), ("nucleo-g474re", "stm32g474ret6"),
113114
("blue-pill", "stm32f103c8t6"), ("feather-m0", "samd21g18a-uu")]
114115
elif args.test2:
115-
device_list = ["hosted-linux", "atmega328p-pu", "stm32f103zgt7", "stm32g474vet7"]
116-
board_list = []
116+
device_list = ["hosted-linux", "atmega328p-pu", "stm32f103zgt7"]
117+
board_list = [("nucleo-g474re", "stm32g474ret6")]
117118

118119
template_path = os.path.realpath(os.path.dirname(sys.argv[0]))
119120
cwd = Path().cwd()
@@ -131,7 +132,7 @@ def main():
131132
os.chdir(tempdir)
132133
print("Starting to generate documentation...")
133134
template_overview(output_dir, device_list, board_list, template_path)
134-
print("... for {} devices, estimated memory footprint is {} MB".format(len(device_list), (len(device_list)*70)+2000))
135+
print("... for {} devices, estimated memory footprint is {} MB".format(len(device_list) + len(board_list), (len(device_list)*70)+2000))
135136
with multiprocessing.Pool(args.jobs) as pool:
136137
# We can only pass one argument to pool.map
137138
devices = ["{}|{}|{}||{}".format(modm_path, tempdir, dev, args.deduplicate) for dev in device_list]
@@ -243,6 +244,12 @@ def template_overview(output_dir, device_list, board_list, template_path):
243244
num_boards=len(board_list))
244245
with open(str(output_dir) + "/index.html","w+") as f:
245246
f.write(html)
247+
json_data = {
248+
"devices": [str(d).upper() for d in device_list] + [rename_board(b) for (b,_) in board_list],
249+
"name2board": [{rename_board(b): b} for (b,_) in board_list],
250+
}
251+
with open(str(output_dir) + "/develop/targets.json","w+") as outfile:
252+
json.dump(json_data, outfile)
246253
with open(str(output_dir) + "/robots.txt","w+") as f:
247254
robots_txt = "User-agent: *\n"
248255
f.write(robots_txt)

tools/scripts/docs_modm_io_index.html.in

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -116,18 +116,16 @@ input[type=text] {
116116
<form autocomplete="off" action="javascript:showDocumentation()">
117117
<table>
118118
<tr>
119-
<!-- <td>Version/Release</td> -->
119+
<td>Version/Release</td>
120120
<td>Device or Board</td>
121121
<td>&nbsp;</td>
122122
</tr>
123123
<tr>
124-
<!--
125124
<td>
126125
<select id="releaseinput" name="releases">
127126
<option>develop</option>
128127
</select>
129128
</td>
130-
-->
131129
<td>
132130
<div class="autocomplete" style="width:300px;">
133131
<input id="targetinput" type="text" name="target" placeholder="Search for e.g. 'F469' or 'NUCLEO'">
@@ -157,6 +155,48 @@ var name2board = {
157155
"{{ n }}": "{{ b }}",
158156
{% endfor %}
159157
};
158+
159+
var possible_releases = ["develop"];
160+
var current_year = new Date().getFullYear();
161+
for (var year = 2021; year <= current_year; year++) {
162+
possible_releases.push(year + "q1");
163+
possible_releases.push(year + "q2");
164+
possible_releases.push(year + "q3");
165+
possible_releases.push(year + "q4");
166+
}
167+
var releases = [];
168+
possible_releases.forEach(function(r, index, array) {
169+
var request = new XMLHttpRequest();
170+
request.open("HEAD", "/" + r + "/" + "targets.json", false);
171+
request.send();
172+
if (request.status == 200) {
173+
releases.push(r);
174+
}
175+
});
176+
var releaseinput = document.getElementById("releaseinput");
177+
while (releaseinput.options.length) {
178+
releaseinput.remove(0);
179+
}
180+
for (var i = 0; i < releases.length; i++) {
181+
var release = new Option(releases[i]);
182+
releaseinput.options.add(release);
183+
}
184+
releaseinput.addEventListener("change", function(event) {
185+
var url ="/" + releaseinput.value + "/targets.json";
186+
var xhr = new XMLHttpRequest();
187+
xhr.open('GET', url, true);
188+
xhr.responseType = 'json';
189+
xhr.onload = function() {
190+
if (xhr.status === 200) {
191+
devices = xhr.response.devices;
192+
name2board = xhr.response.name2board;
193+
} else {
194+
console.log("Error loading target list for release" + releaseinput.value);
195+
}
196+
};
197+
xhr.send();
198+
});
199+
160200
var targetinput = document.getElementById("targetinput");
161201
var currentFocus;
162202
function showDocumentation() {
@@ -169,7 +209,6 @@ function showDocumentation() {
169209
}, 5000);
170210
return;
171211
}
172-
/*
173212
if(!releaseinput.value) {
174213
releaseinput.style.transition = "border 5ms ease-out";
175214
releaseinput.style.borderColor = "red";
@@ -179,10 +218,8 @@ function showDocumentation() {
179218
}, 5000);
180219
return;
181220
}
182-
var url = "/" + releaseinput.value + "/api/" + targetinput.value + "/";
183-
*/
184221
n2b = name2board[targetinput.value]
185-
var url = "/develop/api/" + (n2b ? n2b : targetinput.value).toLowerCase() + "/";
222+
var url ="/" + releaseinput.value + "/api/" + (n2b ? n2b : targetinput.value).toLowerCase() + "/";
186223
location.href = url;
187224
}
188225
targetinput.addEventListener("input", function(event) {

0 commit comments

Comments
 (0)