Advertisement
Guest User

Untitled

a guest
Apr 19th, 2017
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import {Component, NgZone, Input, OnInit, ViewChild, ElementRef, EventEmitter, Output} from '@angular/core';
  2. import {NgUploaderOptions} from 'ngx-uploader';
  3. import {environment} from '../../../../../environments/environment';
  4. import {FileUploadDTO} from '../../../core';
  5.  
  6. @Component({
  7.   selector: 'ps-file-uploader',
  8.   templateUrl: './ps-file-uploader.component.html',
  9.   styleUrls: ['./ps-file-uploader.component.less']
  10. })
  11.  
  12. export class FileUploaderComponent implements OnInit {
  13.  
  14.   @Input() data: any;
  15.   @Input() uploadUrl: string;
  16.   @Input() showProgressBar: boolean = false;
  17.   @Input() showDragAndDropContainer: boolean = false;
  18.   @Input() showUploadButton: boolean = false;
  19.   @Input() uploadButtonLabel: string = 'Browse';
  20.   @Input() expiresAfter: number = 2;
  21.  
  22.   @Output() uploadStarted: EventEmitter<any> = new EventEmitter();
  23.   @Output() success: EventEmitter<any> = new EventEmitter<any>();
  24.  
  25.   @ViewChild('uploadInput') uploadInput: ElementRef;
  26.  
  27.   // events: EventEmitter<string> = new EventEmitter<string>();
  28.   options: NgUploaderOptions;
  29.   response: any;
  30.   hasBaseDropZoneOver: boolean;
  31.   progress: number = 0;
  32.  
  33.   responseEmited: boolean = false;
  34.  
  35.   constructor(private zone: NgZone) {
  36.   }
  37.  
  38.   public startUpload() {
  39.     this.responseEmited = false;
  40.     this.uploadInput.nativeElement.click();
  41.     // this.events.emit('startUpload');
  42.   }
  43.  
  44.   handleUpload(data: any) {
  45.     this.progress = 0;
  46.     setTimeout(() => {
  47.       this.zone.run(() => {
  48.         this.progress = parseInt(data.progress.percent, 0);
  49.         if (data && data.response && !this.responseEmited) {
  50.           this.responseEmited = true; // HACK! data is returned twice for some reason
  51.           this.response = JSON.parse(data.response);
  52.           this.success.emit(this.response);
  53.         }
  54.       });
  55.     });
  56.   }
  57.  
  58.   fileOverBase(e: boolean) {
  59.     this.hasBaseDropZoneOver = e;
  60.   }
  61.  
  62.   ngOnInit() {
  63.     if (!this.uploadUrl || !this.uploadUrl.length) {
  64.       throw new Error('Upload url is required');
  65.     } else {
  66.       this.options = new NgUploaderOptions({
  67.         url: this.buildEndpointUrl(),
  68.         autoUpload: true,
  69.         withCredentials: true,
  70.         data: this.data
  71.       });
  72.     }
  73.   }
  74.  
  75.   buildEndpointUrl() {
  76.     return this.uploadUrl + '?expirationHours=' + this.expiresAfter;
  77.   }
  78.  
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement