|
13 | 13 | <link rel="stylesheet" href="./assets/modern.min.css">
|
14 | 14 | <link rel="stylesheet" href="novnc/app/styles/base.css">
|
15 | 15 | <script type="module" crossorigin="anonymous" src="./assets/vnc.js"></script>
|
| 16 | + <script src="./assets/smoothie.js"></script> |
16 | 17 | <link rel="preload" href="./assets/winbox.bundle.min.js" as="script">
|
17 | 18 | <title>Multi-Tenant Device Access</title>
|
18 | 19 | <link rel="stylesheet" href="./assets/xterm.css"/>
|
|
95 | 96 | class: ["no-close", "no-full", "no-max", "modern"],
|
96 | 97 | width: "640px",
|
97 | 98 | height: "480px",
|
98 |
| - hidden: true, |
| 99 | + hidden: true |
99 | 100 | });
|
100 | 101 | videoWindow = new WinBox("Video", {
|
101 | 102 | html: "<div id=video></div>",
|
102 | 103 | class: ["no-close", "no-full", "no-max", "modern"],
|
103 | 104 | width: "1360px",
|
104 | 105 | height: "768px",
|
105 |
| - hidden: true, |
| 106 | + hidden: true |
106 | 107 | });
|
107 | 108 | uploadWindow = new WinBox("Upload", {
|
108 | 109 | html: "<div id=dropzone>Drag and drop your file here</div><button id='upload' disabled></button>",
|
109 | 110 | class: ["no-full", "no-max", "modern"],
|
110 | 111 | width: "600px",
|
111 | 112 | height: "340px",
|
112 |
| - hidden: true, |
| 113 | + hidden: true |
113 | 114 | });
|
| 115 | + xferWindow = new WinBox("Transferring", { |
| 116 | + html: "<canvas id='xferCanvas' width='320' height='200'></canvas>", |
| 117 | + class: ["no-full", "no-max", "modern"], |
| 118 | + width: "320px", |
| 119 | + height: "200px", |
| 120 | + hidden: true |
| 121 | + }); |
| 122 | + var xferChart; |
| 123 | + var xferSeries = new TimeSeries(); |
114 | 124 | consoleWindow.focus()
|
115 | 125 | </script>
|
116 | 126 | <script src="./assets/jquery.min.js"></script>
|
|
192 | 202 | $(function() {
|
193 | 203 | $('#upload').bind('click', function() {
|
194 | 204 | $.getJSON('./storage-open', {
|
195 |
| - file: selectedFile.name, |
196 |
| - session: localStorage.getItem('session') |
197 |
| - }, function(data) { |
| 205 | + file: selectedFile.name, |
| 206 | + session: localStorage.getItem('session') |
| 207 | + }, function(data) { |
198 | 208 | // do nothing
|
199 | 209 | });
|
200 | 210 | return false;
|
|
290 | 300 | function storage_event(data) {
|
291 | 301 | data = data.event.split(" ");
|
292 | 302 | event = data[0];
|
293 |
| - data = data.splice(1).join(" "); |
| 303 | + let args = data.splice(1); |
| 304 | + data = args.join(" "); |
294 | 305 | if (event == 'UNLOCKED') {
|
295 | 306 | event = data;
|
296 | 307 | }
|
|
316 | 327 | }
|
317 | 328 | }
|
318 | 329 | break;
|
| 330 | + case 'WRITING': |
| 331 | + let speed = args[1] / 1024 / 1024; |
| 332 | + if (xferWindow.hidden) { |
| 333 | + uploadWindow.hide(); |
| 334 | + xferWindow.move('center', 'center'); |
| 335 | + xferWindow.toggleClass('modal'); |
| 336 | + xferWindow.show(); |
| 337 | + xferWindow.focus(); |
| 338 | + xferChart = new SmoothieChart({ |
| 339 | + millisPerPixel: 100, |
| 340 | + maxValueScale: 1.2, |
| 341 | + minValueScale: 1.2, |
| 342 | + grid: { strokeStyle: 'rgba(0, 0, 0, 0.2)', verticalSections: 4 }, |
| 343 | + }); |
| 344 | + xferChart.streamTo(document.getElementById("xferCanvas"), 1000); |
| 345 | + xferChart.addTimeSeries(xferSeries, { strokeStyle: 'rgb(0, 255, 0)', lineWidth: 2 }); |
| 346 | + } |
| 347 | + xferSeries.append(Date.now(), speed); |
| 348 | + break; |
319 | 349 | case 'CORRUPTED':
|
320 | 350 | case 'INITIALIZED':
|
321 | 351 | $.getJSON('./storage-close', {
|
|
325 | 355 | }).fail(function(jqXHR, textStatus, errorThrown) {
|
326 | 356 | console.error('Upload failed:', textStatus, errorThrown);
|
327 | 357 | });
|
| 358 | + xferChart.stop(); |
| 359 | + xferWindow.hide(); |
328 | 360 | break;
|
329 | 361 | case 'QLOW':
|
330 | 362 | maySend = true;
|
|
354 | 386 | const files = event.dataTransfer.files;
|
355 | 387 | if (files.length) {
|
356 | 388 | selectedFile = files[0];
|
357 |
| - console.log('will upload '+selectedFile.name); |
| 389 | + console.log('will upload '+selectedFile.name); |
358 | 390 | dropzone.textContent = `${selectedFile.name}`;
|
359 | 391 | upload.disabled = false;
|
360 | 392 | }
|
|
0 commit comments