UNPKG

loop-modules

Version:

Shared modules for the Loop product suite.

58 lines (57 loc) 2.41 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; // angular import { Injectable } from '@angular/core'; // libs import { BehaviorSubject } from 'rxjs/BehaviorSubject'; /** * The service responsible for managing file-uploads to a remote server via XHR request * @author Sean Perkins <sean@meetmaestro.com | sean-perkins> * * @export * @class FileUploadService */ var FileUploadService = (function () { function FileUploadService() { this.progressSource = new BehaviorSubject(0); this.progress$ = this.progressSource.asObservable(); } /** * Handles an upload request to a server * * @param {string} url The location of the server to post the file to * @param {FormData} formData The file's form data properties * * @memberOf FileUploadService */ FileUploadService.prototype.upload = function (url, formData) { var _this = this; var xhr = new XMLHttpRequest(); xhr.upload.onprogress = function (event) { var progress = Math.round(event.loaded / event.total * 100); _this.progressSource.next(progress); }; xhr.addEventListener('load', function () { _this.progressSource.complete(); }, false); xhr.addEventListener('error', function (error) { _this.progressSource.error(error); }, false); xhr.open('POST', url, true); xhr.setRequestHeader('Access-Control-Allow-Origin', window.location.origin); xhr.send(formData); }; return FileUploadService; }()); FileUploadService = __decorate([ Injectable(), __metadata("design:paramtypes", []) ], FileUploadService); export { FileUploadService };