diff options
Diffstat (limited to 'frontend')
-rw-r--r-- | frontend/src/app/_data/Dataset.ts | 2 | ||||
-rw-r--r-- | frontend/src/app/_elements/folder/folder.component.html | 5 | ||||
-rw-r--r-- | frontend/src/app/_elements/folder/folder.component.ts | 15 | ||||
-rw-r--r-- | frontend/src/app/_services/datasets.service.ts | 4 |
4 files changed, 24 insertions, 2 deletions
diff --git a/frontend/src/app/_data/Dataset.ts b/frontend/src/app/_data/Dataset.ts index 73b77bd0..c8d5771a 100644 --- a/frontend/src/app/_data/Dataset.ts +++ b/frontend/src/app/_data/Dataset.ts @@ -4,7 +4,7 @@ export default class Dataset extends FolderFile { constructor( name: string = 'Novi izvor podataka', public description: string = '', - public fileId?: number, + public fileId?: string, public extension: string = '.csv', public isPublic: boolean = false, public accessibleByLink: boolean = false, diff --git a/frontend/src/app/_elements/folder/folder.component.html b/frontend/src/app/_elements/folder/folder.component.html index da04b219..6293ec7f 100644 --- a/frontend/src/app/_elements/folder/folder.component.html +++ b/frontend/src/app/_elements/folder/folder.component.html @@ -76,7 +76,10 @@ {{file.lastUpdated | date}} </div> <div class="mx-2 hover-show" *ngIf="selectedTab !== TabType.PublicDatasets && selectedTab !== TabType.PublicModels"> - <button class="btn-clear file-button" (click)="deleteFile(file, $event)"> + <button class="btn-clear file-button" (click)="downloadFile(file,$event)" style="display: inline-block;"> + <mat-icon>download</mat-icon> + </button> + <button class="btn-clear file-button" (click)="deleteFile(file, $event)" style="display: inline-block;"> <mat-icon>delete</mat-icon> </button> </div> diff --git a/frontend/src/app/_elements/folder/folder.component.ts b/frontend/src/app/_elements/folder/folder.component.ts index 262b3b7d..f13635e9 100644 --- a/frontend/src/app/_elements/folder/folder.component.ts +++ b/frontend/src/app/_elements/folder/folder.component.ts @@ -13,6 +13,7 @@ import { SignalRService } from 'src/app/_services/signal-r.service'; import { FormModelComponent } from '../form-model/form-model.component'; import { ActivatedRoute, Router } from '@angular/router'; import Predictor from 'src/app/_data/Predictor'; +import FileSaver from 'file-saver'; @Component({ selector: 'app-folder', @@ -308,6 +309,20 @@ export class FolderComponent implements AfterViewInit { break; } } + downloadFile(file: FolderFile, event: Event) { + event.stopPropagation(); + if (this.type==FolderType.Dataset) { + const fileId=(<Dataset>file).fileId; + const name=(<Dataset>file).name; + const ext=(<Dataset>file).extension; + if(fileId!=undefined) + this.datasetsService.downloadFile(fileId).subscribe((response)=>{ + FileSaver.saveAs(response,name+ext); + + }); + + } + } addFile(file: FolderFile, event: Event) { event.stopPropagation(); diff --git a/frontend/src/app/_services/datasets.service.ts b/frontend/src/app/_services/datasets.service.ts index 8d07674d..3fb4e8f2 100644 --- a/frontend/src/app/_services/datasets.service.ts +++ b/frontend/src/app/_services/datasets.service.ts @@ -51,4 +51,8 @@ export class DatasetsService { deleteDataset(dataset: Dataset) { return this.http.delete(`${Configuration.settings.apiURL}/dataset/` + dataset._id, { headers: this.authService.authHeader(), responseType: "text" }); } + + downloadFile(id:string):Observable<Blob>{ + return this.http.get(`${Configuration.settings.apiURL}/file/Download?id=`+id, { headers: this.authService.authHeader(), responseType: 'blob' }); + } } |