Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function WebixSenderAdvanced(sender, callback) {
- this.sender = function () {
- if (sender == null)
- return null;
- if (sender._settings != null || sender.s != null)
- return sender;
- if (sender.view !== null)
- return $$(sender.id);
- return sender;
- }();
- this.callback = callback;
- }
- WebixSenderAdvanced.prototype = function () {
- var sender;
- var callback;
- var debugMode;
- var fileItem;
- var formData;
- var send = function (file) {
- sender = this.sender;
- callback = this.callback;
- getDebugStatus();
- getFileObject(file);
- createXhrObject();
- compileFormData.apply(this, arguments);
- post();
- }
- function getDebugStatus() {
- debugMode = (sender._settings != null);
- }
- function getFileObject(file) {
- fileItem = (typeof (file) === 'number')
- ? fileItem = sender.files.getItem(file)
- : file;
- if (fileItem == null || fileItem.status !== 'client')
- return;
- fileItem.status = 'transfer';
- }
- function createXhrObject() {
- if (fileItem == null) return;
- var xhr = fileItem.xhr = new XMLHttpRequest();
- var id = fileItem.id;
- if (debugMode)
- createXhrObjectDebug(xhr, id);
- else
- createXhrObjectRelease(xhr, id);
- }
- function createXhrObjectDebug(xhr, id) {
- var progress = 'progress';
- xhr.upload.addEventListener(progress, webix.bind(function (e) {
- this._update_progress(id, e.loaded / e.total * 100);
- }, sender), false);
- xhr.onload = webix.bind(function () {
- this._file_complete(id);
- callback();
- }, sender);
- }
- function createXhrObjectRelease(xhr, id) {
- var progress = 'progress';
- xhr.upload.addEventListener(progress, webix.bind(function (e) {
- this.hs(id, e.loaded / e.total * 100);
- }, sender), false);
- xhr.onload = webix.bind(function () {
- this.is(id);
- callback();
- }, sender);
- }
- function compileFormData() {
- if (fileItem == null) return;
- formData = new FormData();
- formData.append(fileItem.name, fileItem.file);
- for (var i = 1; i < arguments.length; i++) {
- var parameter = arguments[i];
- if (parameter == null) continue;
- Object.keys(parameter).forEach(function (key) {
- if (key != null)
- formData.append(key, parameter[key]);
- });
- }
- }
- function post() {
- if (fileItem == null) return;
- var id = fileItem.id;
- var url = debugMode
- ? sender._settings.upload
- : sender.s.upload;
- fileItem.percent = 0;
- sender.files.updateItem(id);
- fileItem.xhr.open('POST', url, true);
- fileItem.xhr.send(formData);
- }
- return {
- send: send
- }
- }();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement