Skip to content

Commit cc62021

Browse files
committed
File upload form and axios logic. Upload and launch update from local package
1 parent 8feb286 commit cc62021

File tree

1 file changed

+95
-27
lines changed

1 file changed

+95
-27
lines changed

src/components/Settings.vue

Lines changed: 95 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,33 @@
5858
<h3 class="text-xs-left"> Azioni </h3>
5959
<v-card>
6060
<div class="cardContent">
61-
<v-btn @click="shutdown" color="info"><v-icon>fas fa-power-off</v-icon> Spegni</v-btn>
62-
<v-btn @click="reboot" color="info"><v-icon>fas fa-redo</v-icon> Riavvia</v-btn>
63-
<v-btn @click="restoreConfig" color="warning"><v-icon>fas fa-redo</v-icon> Ripristina Impostazioni</v-btn>
64-
61+
<v-btn @click="shutdown" color="info">
62+
<v-icon>fas fa-power-off</v-icon> Spegni
63+
</v-btn>
64+
<v-btn @click="reboot" color="info">
65+
<v-icon>fas fa-redo</v-icon> Riavvia
66+
</v-btn>
67+
<v-btn @click="restoreConfig" color="warning">
68+
<v-icon>fas fa-redo</v-icon> Ripristina Impostazioni
69+
</v-btn>
6570
<!--
6671
<v-btn color="warning">Aggiorna</v-btn>
6772
<v-btn color="error">Ripristina ad Impostazioni di fabbrica</v-btn>-->
6873
</div>
6974
</v-card>
75+
<br>
76+
<h3 class="text-xs-left"> Aggiornamento </h3>
77+
<v-card>
78+
<div class="cardContent">
79+
{{ counter }} %
80+
{{ updateStatusText }}
81+
<template v-if="updateStatus==0">
82+
<v-text-field label="Seleziona il pacchetto di aggiornamento" @click='pickFile' v-model='fileName' prepend-icon='attach_file'></v-text-field>
83+
<input type="file" style="display: none" ref="file" @change="onFilePicked">
84+
<v-btn @click="upload" color="error">Conferma</v-btn>
85+
</template>
86+
</div>
87+
</v-card>
7088
<br><br>
7189
</v-flex>
7290
</v-layout>
@@ -216,7 +234,48 @@ export default {
216234
this.prepopulate();
217235
},
218236
methods: {
219-
restoreConfig(){
237+
pickFile() {
238+
this.$refs.file.click()
239+
},
240+
onFilePicked(e) {
241+
const files = e.target.files
242+
if (files[0] !== undefined) {
243+
this.fileName = files[0].name
244+
if (this.fileName.lastIndexOf('.') <= 0) {
245+
return
246+
}
247+
const fr = new FileReader()
248+
fr.readAsDataURL(files[0])
249+
fr.addEventListener('load', function() {
250+
this.fileUrl = fr.result
251+
this.fileObj = files[0]
252+
}.bind(this))
253+
} else {
254+
this.fileName = ''
255+
this.fileObj = ''
256+
this.fileUrl = ''
257+
}
258+
},
259+
upload() {
260+
console.log(this.fileObj)
261+
var formdata = new FormData();
262+
formdata.append('file_to_upload', this.fileObj)
263+
const config = {
264+
headers: { 'Content-Type': 'multipart/form-data' },
265+
onUploadProgress: progressEvent => {
266+
this.counter = Math.floor((progressEvent.loaded * 100) / progressEvent.total);
267+
}
268+
}
269+
this.$axios.post(this.CB + '/uploadFile', formdata, config).then(result => {
270+
this.uploadCompleted = true;
271+
this.uploadInProgress = false;
272+
console.dir(result.data);
273+
this.updateStatusText = 'Upload completato. Aggiornamento in corso...'
274+
this.updateStatus = 1
275+
})
276+
277+
},
278+
restoreConfig() {
220279
let axios = this.$axios
221280
let CB = this.CB
222281
axios.post(CB + '/restoreSettings')
@@ -403,14 +462,14 @@ export default {
403462
'prog_level': data.progLevel,
404463
405464
'move_fw_elapse': data.moveFwdElapse,
406-
'move_fw_speed': data.moveFwdSpeed ,
407-
'move_tr_elapse': data.moveTurnElapse ,
408-
'move_tr_speed': data.moveTurnSpeed ,
465+
'move_fw_speed': data.moveFwdSpeed,
466+
'move_tr_elapse': data.moveTurnElapse,
467+
'move_tr_speed': data.moveTurnSpeed,
409468
410-
'ctrl_fw_elapse': data.ctrlFwdElapse ,
411-
'ctrl_fw_speed': data.ctrlFwdSpeed ,
412-
'ctrl_tr_elapse': data.ctrlTurnElapse ,
413-
'ctrl_tr_speed': data.ctrlTurnSpeed ,
469+
'ctrl_fw_elapse': data.ctrlFwdElapse,
470+
'ctrl_fw_speed': data.ctrlFwdSpeed,
471+
'ctrl_tr_elapse': data.ctrlTurnElapse,
472+
'ctrl_tr_speed': data.ctrlTurnSpeed,
414473
})
415474
axios.post(CBv1 + '/config', legacySettings)
416475
.then(function() {
@@ -433,6 +492,12 @@ export default {
433492
CBv1: process.env.CB_ENDPOINT,
434493
snackbar: null,
435494
snackText: null,
495+
fileName: '',
496+
fileObj: '',
497+
fileUrl: '',
498+
counter: 0,
499+
updateStatusText: '',
500+
updateStatus: 0,
436501
// TODO: Prepopulate this
437502
settings: {
438503
cbName: 'CoderBot di Antonio',
@@ -443,29 +508,29 @@ export default {
443508
wifiSSID: null,
444509
wifiPsw: null,
445510
446-
moveFwdElapse : null,
447-
moveFwdSpeed : null,
448-
moveTurnElapse : null,
449-
moveTurnSpeed : null,
450-
ctrlFwdElapse : null,
451-
ctrlFwdSpeed : null,
452-
ctrlTurnElapse : null,
453-
ctrlTurnSpeed : null,
511+
moveFwdElapse: null,
512+
moveFwdSpeed: null,
513+
moveTurnElapse: null,
514+
moveTurnSpeed: null,
515+
ctrlFwdElapse: null,
516+
ctrlFwdSpeed: null,
517+
ctrlTurnElapse: null,
518+
ctrlTurnSpeed: null,
454519
455520
motorMode: null,
456521
trimFactor: null,
457522
startSound: null,
458523
stopSound: null,
459524
shutterSound: null,
460525
startupProgram: null,
461-
progLevel: null
526+
progLevel: null,
462527
},
463528
464529
blocklyToolboxItems: [
465-
{text:'Movimento', value:'basic_move'},
466-
{text:'Base', value:'basic'},
467-
{text:'Standard', value:'std'},
468-
{text:'Avanzate', value:'adv'},
530+
{ text: 'Movimento', value: 'basic_move' },
531+
{ text: 'Base', value: 'basic' },
532+
{ text: 'Standard', value: 'std' },
533+
{ text: 'Avanzate', value: 'adv' },
469534
],
470535
cb: {
471536
info: {
@@ -499,9 +564,12 @@ export default {
499564
padding: 16px;
500565
}
501566
502-
.fa, .fas, .fab {
567+
.fa,
568+
.fas,
569+
.fab {
503570
font-weight: 600;
504571
margin-right: 7px;
505-
text-size:10px;
572+
text-size: 10px;
506573
}
574+
507575
</style>

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy