-
Notifications
You must be signed in to change notification settings - Fork 988
/
_uploadModal.vue
85 lines (81 loc) · 2.78 KB
/
_uploadModal.vue
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
<template>
<div class="panel panel-default ls-flex-column fill">
<div class="panel-heading">
<div class="pagetitle h3">{{'Upload a file' | translate}} </div>
<div> <b>{{'Allowed file formats' | translate}}</b>: </div>
<div> {{'File formats' | translate}}. </div>
</div>
<div class="panel-body ls-flex-column grow-1 fill">
<vue-dropzone
ref="fileUploaderDropzone"
id="FileUploader--dropzone"
v-on:vdropzone-sending="applyFolderAndData"
v-on:vdropzone-error="onErrorHandler"
v-on:vdropzone-complete="onCompleteHandler"
:options="dropzoneOptions"
:useCustomSlot="true"
:uploadMultiple="true"
class="FileUpload--dropzone"
>
<div class="dropzone-custom-content">
<h3>{{"Drag and drop here, or click once to start uploading" | translate}}</h3>
<p>{{"File is uploaded to currently selected folder" | translate}}</p>
<p>{{"A .zip archive will be automatically unpacked on the server" | translate}}</p>
</div>
</vue-dropzone>
</div>
</div>
</template>
<script>
import vue2Dropzone from 'vue2-dropzone'
export default {
name: 'UploadModal',
components: {
'vue-dropzone': vue2Dropzone,
},
props: {},
data(){
return {
dropzoneOptions: {
url: window.FileManager.baseUrl+'uploadFile',
thumbnailWidth: 200,
addRemoveLinks: true
}
};
},
methods: {
fileAdded(file) {
},
applyFolderAndData(file, xhr, formData){
formData.append(LS.data.csrfTokenName, LS.data.csrfToken);
formData.append('folder', this.$store.state.currentFolder);
const surveyId = LS.reparsedParameters().combined.surveyid;
if(surveyId != undefined) {
formData.append('surveyid', surveyId);
}
},
onErrorHandler(error) {
this.$log.error('error => ', error);
let errorMessage = this.translate("File could not be uploaded");
try {
const jsonResponse = JSON.parse(error.xhr.response);
errorMessage = jsonResponse.message;
} catch(e) {
this.$log.error(error);
}
window.LS.notifyFader(
errorMessage,
'well-lg bg-danger text-center'
);
},
onCompleteHandler(response) {
this.$emit('close');
}
}
}
</script>
<style scoped>
.FileUpload--dropzone {
height: 100%;
}
</style>