diff --git a/demo-shell-ng2/app/components/page1.view.ts b/demo-shell-ng2/app/components/page1.view.ts index 8293fe6321..7481e566a2 100644 --- a/demo-shell-ng2/app/components/page1.view.ts +++ b/demo-shell-ng2/app/components/page1.view.ts @@ -1,14 +1,25 @@ -import {Component} from "angular2/core"; +import {Component, NgZone} from "angular2/core"; import {UPLOAD_DIRECTIVES} from 'ng2-uploader/ng2-uploader'; @Component({ selector: 'page1-view', + styles: [ + ` + :host .dropzone { + width: 100%; + height: 100px; + background-color: #f5f5f5; + margin-top: 2px; + margin-bottom: 2px; + box-shadow: inset 0 1px 2px rgba(0,0,0,.1); + text-align: center; + } + ` + ], template: `

Upload File

-
-
@@ -16,6 +27,18 @@ import {UPLOAD_DIRECTIVES} from 'ng2-uploader/ng2-uploader'; Response: {{ uploadFile | json }}
+
+

Drag and Drop file demo

+
+
+ Drop file here... +
+
+
+ {{ dropProgress }}% +
+
+
`, directives: [UPLOAD_DIRECTIVES] @@ -34,10 +57,38 @@ export class Page1View { } }; + zone: NgZone; + dropProgress: number = 0; + dropResp: any[] = []; + + constructor() { + this.zone = new NgZone({ enableLongStackTrace: false }); + } + handleUpload(data): void { if (data && data.response) { data = JSON.parse(data.response); this.uploadFile = data; } } + + handleDropUpload(data): void { + let index = this.dropResp.findIndex(x => x.id === data.id); + if (index === -1) { + this.dropResp.push(data); + } + else { + this.zone.run(() => { + this.dropResp[index] = data; + }); + } + + let total = 0, uploaded = 0; + this.dropResp.forEach(resp => { + total += resp.progress.total; + uploaded += resp.progress.loaded; + }); + + this.dropProgress = Math.floor(uploaded / (total / 100)); + } }