Files
monpas/public/js/services/uploaderservice.js
T
2021-07-10 16:25:16 +02:00

214 lines
6.1 KiB
JavaScript

$(function(){
ko.bindingHandlers.dropzone = {
init: function ( element, valueAccessor, allBindings, data ) {
var options = {
// maxFileSize : 10,
maxFileSize: 50 ,
maxFiles : 25,
url : 'temp',
accept : function(file,done){
if (file.size <= ls.UploaderModel.maxsize()){
return done();
} else {
ls.UploaderModel.responses.push(file.name + " bestand is te groot (max 10MB)" );
return done("Bestand is te groot.");
}
},
init : function () {
var thisDropzone = this;
var totalFiles = 0,
completeFiles = 0;
this.on( "addedfile", function ( file ) {
totalFiles += 1;
} );
this.on( "removed file", function ( file ) {
totalFiles -= 1;
} );
this.on("error", function(file, response){
if (file.xhr && file.xhr.responseText) ls.UploaderModel.responses.push( file.xhr.responseText);
});
this.on( "complete", function ( file ) {
completeFiles += 1;
if (file.xhr && file.xhr.responseText) ls.UploaderModel.responses.push( file.xhr.responseText);
if ( completeFiles === totalFiles ) {
ls.UploaderModel.uploadcounter(totalFiles)
thisDropzone.removeAllFiles();
totalFiles = 0;
completeFiles = 0;
ls.UploaderModel.fGiveFeedback();
}
} );
this.on( "processing", function ( file ) {
this.options.url = ls.UploaderModel.uploadURL();
} );
$( '.dropzone-remove-files' ).click( function () {
thisDropzone.removeAllFiles();
totalFiles = 0;
completeFiles = 0;
} );
}
};
$( element ).addClass( 'dropzone' );
new Dropzone( element, options ); // jshint ignore:line
}
};
ls.initUploader= function(module,folder,docID,callback){
if (ls.UploaderModel !== undefined){
ls.UploaderModel.initModel(module,folder,docID,callback);
}
else {
ls.UploaderModel = {
module : ko.observable(),
folder : ko.observable(),
vmcallback : ko.observable(),
docNaam : ko.observable(),
documentID : ko.observable(),
fileName : ko.observable(),
bestanden : ko.observableArray(),
uploadcounter : ko.observable(0),
uploadURL : ko.observable(),
maxsize : ko.observable(10000000),
//maxsize : ko.observable(5000),
responses : ko.observableArray(),
showfiles : ko.observable(true),
toondropzone : ko.observable(true),
initBindings :function(module,folder,docID,callback){
var self = ls.UploaderModel;
if (!ko.dataFor(document.getElementById('modUploader')) ) {
ko.applyBindings(ls.UploaderModel, document.getElementById("modUploader"));
}
self.initModel(module,folder,docID , callback);
},
initModel: function(module,folder,docID,callback){
var vm = ls.UploaderModel;
vm.module(module)
vm.folder(folder)
vm.documentID(docID)
vm.docNaam('');
vm.fileName('');
vm.bestanden.removeAll();
vm.uploadcounter(0);
vm.toondropzone(true);
if (vm.responses() && vm.responses().length > 0) vm.responses.removeAll();
vm.showfiles('true');
vm.uploadURL(' index.php/shared/upload/doDropUpload/'+ls.UploaderModel.folder() + '/' + ls.UploaderModel.module() );
$("#fileform")[0].reset();
vm.vmcallback = callback;
$("#modUploader").modal('show');
},
fSetFileList: function(){
var vm = ls.UploaderModel;
vm.bestanden.removeAll();
var files=document.getElementById("fileselecter").files
for (var i = 0, f; f = files[i]; i++) {
vm.bestanden.push(f)
};
},
fDoUpload :function(){
var vm = ls.UploaderModel;
// process all File objects
vm.responses.removeAll()
vm.showfiles(false);
if (vm.bestanden() && vm.bestanden().length > 0){
showAjaxLoader()
$.each(vm.bestanden(), function(i,p){
if (p.size <= vm.maxsize()){
vm.fUploadFile(p);
} else {
vm.responses.push(p.name + " bestand is te groot (max 10MB)" );
}
if (i == vm.bestanden().length -1 ) hideAjaxLoader()
});
} // if bestanden
else{
hideAjaxLoader()
$("#modUploader").modal('hide');
if (typeof vm.vmcallback == 'function'){
vm.vmcallback(false);
}
}
},
fUploadFile: function(file){
var vm = ls.UploaderModel;
var xhr = new XMLHttpRequest();
var url = 'index.php/shared/upload/doUpload';
var fd = new FormData();
fd.append("upload_file", file);
fd.append("module", vm.module());
fd.append("folderID", vm.folder());
fd.append("oldDocID", vm.documentID());
// hier daadwerkelijk doorsturen naar server
xhr.open("POST", url, true)
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) { // Every thing ok, file uploaded
if (xhr.responseText) vm.responses.push(xhr.responseText);
vm.uploadcounter(parseInt(vm.uploadcounter()) + 1)
if (vm.uploadcounter() == vm.bestanden().length){
vm.fGiveFeedback();
}
};
}
xhr.send(fd);
},
fGiveFeedback: function(){
var vm = ls.UploaderModel;
vm.toondropzone(false);
hideAjaxLoader()
vm.showfiles(false);
var time=300;
if (vm.responses() && vm.responses().length <= 0) {
setTimeout(function(){
$("#modUploader").modal('hide')
if (typeof vm.vmcallback == 'function'){ vm.vmcallback(true);}
}, time);
}
},
fCloseAndCallback: function(){
var vm = ls.UploaderModel;
if (typeof vm.vmcallback == 'function') vm.vmcallback(true);
},
fCloseUploader: function(){
var vm = ls.UploaderModel;
if (typeof vm.vmcallback == 'function') vm.vmcallback(false);
},
fRemoveBestand: function(){
var vm = ls.UploaderModel;
if (vm.bestanden() && vm.bestanden().length > 0){
vm.bestanden.remove(this);
}
}
} ; // definition van model
ls.UploaderModel.initBindings(module,folder,docID,callback);
}; // else
}// function initUploaderModel
});