https://danielmg.org/demo/java-script/uploader/basic
https://github.com/danielm/uploader
Simple js progress bar (have some bootstrap style)
/*
* Some helper functions to work with our UI and keep our code cleaner
*/
//--------------- UI
// Adds an entry to our debug area
function ui_add_log(message, color) {
var d = new Date();
var dateString = (('0' + d.getHours())).slice(-2) + ':' +
(('0' + d.getMinutes())).slice(-2) + ':' +
(('0' + d.getSeconds())).slice(-2);
color = (typeof color === 'undefined' ? 'muted' : color);
var template = jQuery33('#debug-template').text();
template = template.replace('%%date%%', dateString);
template = template.replace('%%message%%', message);
template = template.replace('%%color%%', color);
// jQuery33('#debug').find('li.empty').fadeOut(); // remove the 'no messages yet'
// jQuery33('#debug').prepend(template);
jQuery33('#files').append(template);
}
function ui_add_log2(message, color) {
var d = new Date();
var dateString = (('0' + d.getHours())).slice(-2) + ':' +
(('0' + d.getMinutes())).slice(-2) + ':' +
(('0' + d.getSeconds())).slice(-2);
color = (typeof color === 'undefined' ? 'muted' : color);
var template = jQuery33('#debug-template').text();
template = template.replace('%%date%%', dateString);
template = template.replace('%%message%%', message);
template = template.replace('%%color%%', color);
jQuery33('#debug').find('li.empty').fadeOut(); // remove the 'no messages yet'
jQuery33('#debug').prepend(template);
// jQuery33('#files').append(template);
}
// Creates a new file and add it to our list
function ui_multi_add_file(id, file) {
var template = jQuery33('#files-template').text();
template = template.replace('%%filename%%', file.name);
template = jQuery33(template);
template.prop('id', 'uploaderFile' + id);
template.data('file-id', id);
jQuery33('#files').find('li.empty').fadeOut(); // remove the 'no files yet'
jQuery33('#files').append(template);
}
// Changes the status messages on our list
function ui_multi_update_file_status(id, status, message) {
jQuery33('#uploaderFile' + id).find('span').html(message).prop('class', 'status text-' + status);
}
// Updates a file progress, depending on the parameters it may animate it or change the color.
function ui_multi_update_file_progress(id, percent, color, active) {
color = (typeof color === 'undefined' ? false : color);
active = (typeof active === 'undefined' ? true : active);
var bar = jQuery33('#uploaderFile' + id).find('div.progress-bar');
bar.width(percent + '%').attr('aria-valuenow', percent);
bar.toggleClass('progress-bar-striped progress-bar-animated', active);
if (percent === 0) {
bar.html('');
} else {
bar.html(percent + '%');
}
if (color !== false) {
bar.removeClass('bg-success bg-info bg-warning bg-danger');
bar.addClass('bg-' + color);
}
}
// config
jQuery33(function () {
/*
* For the sake keeping the code clean and the examples simple this file
* contains only the plugin configuration & callbacks.
*/
jQuery('#drag-and-drop-zone').dmUploader({
url: 'uploadMediaFile',
fieldName: 'file_upload',
maxFileSize: max_upload_size,
extraData: function() {
return {
"folderId": id_folder_selected,
}
},
// allowedTypes: "*",
extFilter: extFilter,
onDragEnter: function () {
// Happens when dragging something over the DnD area
this.addClass('active');
},
onDragLeave: function () {
// Happens when dragging something OUT of the DnD area
this.removeClass('active');
},
onInit: function () {
// Plugin is ready to use
// ui_add_log('Penguin initialized :)', 'info');
},
onComplete: function () {
// All files in the queue are processed (success or error)
// ui_add_log('All pending tranfers finished');
},
onNewFile: function (id, file) {
// When a new file is added using the file selector or the DnD area
// ui_add_log('New file added #' + id);
ui_multi_add_file(id, file);
},
onBeforeUpload: function (id) {
// about tho start uploading a file
// ui_add_log('Starting the upload of #' + id);
ui_multi_update_file_status(id, 'uploading', 'Uploading...');
ui_multi_update_file_progress(id, 0, '', true);
},
onUploadCanceled: function (id) {
// Happens when a file is directly canceled by the user.
ui_multi_update_file_status(id, 'warning', 'Canceled by User');
ui_multi_update_file_progress(id, 0, 'warning', false);
},
onUploadProgress: function (id, percent) {
// Updating file progress
ui_multi_update_file_progress(id, percent);
},
onUploadSuccess: function (id, data) {
// A file was successfully uploaded
ui_add_log('Server Response for file #' + id + ': ' + JSON.stringify(data));
let response = JSON.stringify(data);
console.log(response);
if (typeof response.status == 'undefined') {
console.log('no status');
ui_multi_update_file_status(id, 'danger', response.message);
ui_multi_update_file_progress(id, 0, 'danger', false);
// console.log(response.status);
} else {
if (!response.status) {
console.log('status 0');
} else {
ui_multi_update_file_status(id, 'success', 'Upload Complete');
ui_multi_update_file_progress(id, 100, 'success', false);
}
}
// ui_add_log('Upload of file #' + id + ' COMPLETED', 'success');
},
onUploadError: function (id, xhr, status, message) {
ui_multi_update_file_status(id, 'danger', message);
ui_multi_update_file_progress(id, 0, 'danger', false);
},
onFallbackMode: function () {
// When the browser doesn't support this plugin :(
ui_add_log('Plugin cant be used here, running Fallback callback', 'danger');
},
onFileSizeError: function (file) {
ui_add_log('File \'' + file.name + '\' cannot be added: size excess limit', 'danger');
},
onFileExtError: function (file) {
ui_add_log('File \'' + file.name + '\' cannot be added: file type not allowed', 'danger');
},
});
});
https://github.com/danielm/uploader
Simple js progress bar (have some bootstrap style)
/*
* Some helper functions to work with our UI and keep our code cleaner
*/
//--------------- UI
// Adds an entry to our debug area
function ui_add_log(message, color) {
var d = new Date();
var dateString = (('0' + d.getHours())).slice(-2) + ':' +
(('0' + d.getMinutes())).slice(-2) + ':' +
(('0' + d.getSeconds())).slice(-2);
color = (typeof color === 'undefined' ? 'muted' : color);
var template = jQuery33('#debug-template').text();
template = template.replace('%%date%%', dateString);
template = template.replace('%%message%%', message);
template = template.replace('%%color%%', color);
// jQuery33('#debug').find('li.empty').fadeOut(); // remove the 'no messages yet'
// jQuery33('#debug').prepend(template);
jQuery33('#files').append(template);
}
function ui_add_log2(message, color) {
var d = new Date();
var dateString = (('0' + d.getHours())).slice(-2) + ':' +
(('0' + d.getMinutes())).slice(-2) + ':' +
(('0' + d.getSeconds())).slice(-2);
color = (typeof color === 'undefined' ? 'muted' : color);
var template = jQuery33('#debug-template').text();
template = template.replace('%%date%%', dateString);
template = template.replace('%%message%%', message);
template = template.replace('%%color%%', color);
jQuery33('#debug').find('li.empty').fadeOut(); // remove the 'no messages yet'
jQuery33('#debug').prepend(template);
// jQuery33('#files').append(template);
}
// Creates a new file and add it to our list
function ui_multi_add_file(id, file) {
var template = jQuery33('#files-template').text();
template = template.replace('%%filename%%', file.name);
template = jQuery33(template);
template.prop('id', 'uploaderFile' + id);
template.data('file-id', id);
jQuery33('#files').find('li.empty').fadeOut(); // remove the 'no files yet'
jQuery33('#files').append(template);
}
// Changes the status messages on our list
function ui_multi_update_file_status(id, status, message) {
jQuery33('#uploaderFile' + id).find('span').html(message).prop('class', 'status text-' + status);
}
// Updates a file progress, depending on the parameters it may animate it or change the color.
function ui_multi_update_file_progress(id, percent, color, active) {
color = (typeof color === 'undefined' ? false : color);
active = (typeof active === 'undefined' ? true : active);
var bar = jQuery33('#uploaderFile' + id).find('div.progress-bar');
bar.width(percent + '%').attr('aria-valuenow', percent);
bar.toggleClass('progress-bar-striped progress-bar-animated', active);
if (percent === 0) {
bar.html('');
} else {
bar.html(percent + '%');
}
if (color !== false) {
bar.removeClass('bg-success bg-info bg-warning bg-danger');
bar.addClass('bg-' + color);
}
}
// config
jQuery33(function () {
/*
* For the sake keeping the code clean and the examples simple this file
* contains only the plugin configuration & callbacks.
*/
jQuery('#drag-and-drop-zone').dmUploader({
url: 'uploadMediaFile',
fieldName: 'file_upload',
maxFileSize: max_upload_size,
extraData: function() {
return {
"folderId": id_folder_selected,
}
},
// allowedTypes: "*",
extFilter: extFilter,
onDragEnter: function () {
// Happens when dragging something over the DnD area
this.addClass('active');
},
onDragLeave: function () {
// Happens when dragging something OUT of the DnD area
this.removeClass('active');
},
onInit: function () {
// Plugin is ready to use
// ui_add_log('Penguin initialized :)', 'info');
},
onComplete: function () {
// All files in the queue are processed (success or error)
// ui_add_log('All pending tranfers finished');
},
onNewFile: function (id, file) {
// When a new file is added using the file selector or the DnD area
// ui_add_log('New file added #' + id);
ui_multi_add_file(id, file);
},
onBeforeUpload: function (id) {
// about tho start uploading a file
// ui_add_log('Starting the upload of #' + id);
ui_multi_update_file_status(id, 'uploading', 'Uploading...');
ui_multi_update_file_progress(id, 0, '', true);
},
onUploadCanceled: function (id) {
// Happens when a file is directly canceled by the user.
ui_multi_update_file_status(id, 'warning', 'Canceled by User');
ui_multi_update_file_progress(id, 0, 'warning', false);
},
onUploadProgress: function (id, percent) {
// Updating file progress
ui_multi_update_file_progress(id, percent);
},
onUploadSuccess: function (id, data) {
// A file was successfully uploaded
ui_add_log('Server Response for file #' + id + ': ' + JSON.stringify(data));
let response = JSON.stringify(data);
console.log(response);
if (typeof response.status == 'undefined') {
console.log('no status');
ui_multi_update_file_status(id, 'danger', response.message);
ui_multi_update_file_progress(id, 0, 'danger', false);
// console.log(response.status);
} else {
if (!response.status) {
console.log('status 0');
} else {
ui_multi_update_file_status(id, 'success', 'Upload Complete');
ui_multi_update_file_progress(id, 100, 'success', false);
}
}
// ui_add_log('Upload of file #' + id + ' COMPLETED', 'success');
},
onUploadError: function (id, xhr, status, message) {
ui_multi_update_file_status(id, 'danger', message);
ui_multi_update_file_progress(id, 0, 'danger', false);
},
onFallbackMode: function () {
// When the browser doesn't support this plugin :(
ui_add_log('Plugin cant be used here, running Fallback callback', 'danger');
},
onFileSizeError: function (file) {
ui_add_log('File \'' + file.name + '\' cannot be added: size excess limit', 'danger');
},
onFileExtError: function (file) {
ui_add_log('File \'' + file.name + '\' cannot be added: file type not allowed', 'danger');
},
});
});
Blue IMP
Appsinvo is the Top Mobile App Development Company in India to deliver end-to-end services and solutions to the clients.
ReplyDeleteMobile App development company in Asia
Top Mobile App Development Companies in Russia