All files / src/components/subcomponents _uploadModal.vue

6.67% Statements 1/15
0% Branches 0/2
100% Functions 0/0
6.67% Lines 1/15
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 86 87 88      2x                                                                                                                                                                        
 
<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>
 
<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>
 
<style scoped>
    .FileUpload--dropzone {
        height: 100%;
    }
</style>