slitaz-forge view mirror/floppies/format.js @ rev 716

mirror/floppies: multi-format support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Fri Jul 23 16:41:12 2021 +0000 (2021-07-23)
parents
children 291e2d88bab3
line source
1 window.URL = window.URL || window.webkitURL;
2 function download(ref, range, name) {
3 var xhr = new XMLHttpRequest();
5 xhr.open('GET', ref, true);
6 xhr.setRequestHeader("Range", "bytes="+range);
7 xhr.responseType = 'blob';
8 xhr.onload = function () {
9 var a = document.createElement('a'), file;
10 file = new Blob([xhr.response], { type : 'application/octet-stream' });
11 a.href = window.URL.createObjectURL(file);
12 a.download = name;
13 a.click();
14 };
15 xhr.send();
16 }
18 function format(size) {
19 var max = sets[sets.length-1];
20 var cols = Math.floor(Math.sqrt(max/size)+2);
21 var lines = Math.floor(((max/size)+1)/cols+1);
22 var e = document.getElementById('floppies');
23 var s, i, j, ofs, fd, fds, curset;
24 for (i = 0, ofs = 0, curset = 0, fd = 1, s = ""; i < lines; i++) {
25 s += "<tr>";
26 for (j = 0; j < cols; j++) {
27 fds = ""+fd; if (fd < 100) fds = "0"+fds; if (fd < 10) fds = "0"+fds;
28 s += "<td>";
29 if (ofs < max) {
30 s += "<a href=\"javascript:download('"+dir+"/fd.img', '"+ofs+"-";
31 ofs = Number.parseInt(ofs)+Number.parseInt(size);
32 s += (ofs-1)+"', 'fd"+fds+".img')\">fd"+fds+"</a>";
33 if (ofs >= sets[curset]) {
34 curset++;
35 fd = (Math.floor(fd/100)+1)*100;
36 } else fd++;
37 }
38 if (i == lines-1 && j == cols-1) {
39 s += "<a href=\""+dir+"/"+size+"/md5sum\">md5</a>"
40 }
41 s += "</td>";
42 }
43 s += "</tr>";
44 }
45 e.innerHTML = s;
46 for (i = 0, ofs = 0, curset = 0, fd = 0; ofs < max;) {
47 i++; fd++;
48 ofs = Number.parseInt(ofs)+Number.parseInt(size);
49 if (ofs >= sets[curset]) {
50 fds = ""+fd; if (fd < 100) fds = "0"+fds; if (fd < 10) fds = "0"+fds;
51 e = document.getElementById('cnt'+curset);
52 if (e) e.innerHTML = i;
53 e = document.getElementById('last'+curset);
54 if (e) e.innerHTML = fds;
55 curset++;
56 fd = (Math.floor(fd/100)+1)*100-1;
57 }
58 }
59 }
61 var e = document.getElementById('format');
62 try {
63 var dummy = new Blob();
64 e.innerHTML="<select onChange='format(this.value)' style='background: #666; color: #FFF;'>" +
65 "<option value='368640' title='/dev/fd0h360 (2,20) or /dev/fd0d360 (2,4) 5¼'>360K</option>" +
66 "<option value='737280' title='/dev/fd0u720 3½ DD (2,16)'>720K</option>" +
67 "<option value='819200' title='/dev/fd0u800 3½ DD (2,120)'>800K</option>" +
68 "<option value='1228800' title='/dev/fd0h1200 5¼ (2,8)'>1.2MB</option>" +
69 "<option value='1474560' title='/dev/fd0u1440 3½ HD (2,28) or /dev/fd0h1440 5¼ (2,40)' selected>1.44MB</option>" +
70 "<option value='1638400' title='/dev/fd0u1600 3½ HD (2,124) or /dev/fd0h1600 5¼ (2,92)'>1.60MB</option>" +
71 "<option value='1720320' title='/dev/fd0u1680 3½ HD (2,44)'>1.68MB</option>" +
72 "<option value='1966080' title='/dev/fd0u1920 3½ HD (2,100)'>1.92MB</option>" +
73 "<option value='2949120' title='/dev/fd0u2880 3½ ED (2,32)'>2.88MB</option>" +
74 "<option value='3932160' title='/dev/fd0u3840 3½ ED (2,112)'>3.84MB</option>" +
75 "</select>";
76 }
77 catch (err) {
78 e.innerHTML="1.44MB";
79 }