This is an automated email from the ASF dual-hosted git repository. hshpak pushed a commit to branch feat/DATALAB-2874/add-notification-pop-up-window-appears in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git
commit be4d0fdeb78ee3c6f58ea8d587f13056a9404229 Author: Hennadii_Shpak <[email protected]> AuthorDate: Thu Jul 7 15:54:55 2022 +0300 fixed logic by share image --- .../src/app/resources/images/images.component.ts | 14 +++++------ .../src/app/resources/images/images.service.ts | 28 ++++++++++++++++++++++ .../share-image/share-image.component.html | 2 +- .../share-image/share-image.component.ts | 17 +++++++++++++ 4 files changed, 53 insertions(+), 8 deletions(-) diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/images/images.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/images/images.component.ts index 7c1896bd5..1ec8e3f2d 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/images/images.component.ts +++ b/services/self-service/src/main/resources/webapp/src/app/resources/images/images.component.ts @@ -27,8 +27,8 @@ import { ImageModel, ProjectModel, ShareImageAllUsersParams } from './images.mod import { Image_Table_Column_Headers, Image_Table_Titles, Localstorage_Key, Shared_Status, Toaster_Message } from './images.config'; import { MatDialog } from '@angular/material/dialog'; import { ShareImageComponent } from '../../shared/modal-dialog/share-image/share-image.component'; -import { switchMap, tap } from 'rxjs/operators'; import { Observable } from 'rxjs'; +import { ImagesService } from './images.service'; @Component({ selector: 'datalab-images', @@ -61,6 +61,7 @@ export class ImagesComponent implements OnInit { public toastr: ToastrService, private userImagesPageService: UserImagesPageService, private dialog: MatDialog, + private imagesService: ImagesService ) { } ngOnInit(): void { @@ -109,12 +110,11 @@ export class ImagesComponent implements OnInit { }, panelClass: 'modal-sm' }).afterClosed() - .pipe( - switchMap(() => this.shareImageAllUsers(image)), - tap((imageListData: ProjectModel[]) => this.initImageTable(imageListData)) - ).subscribe( - () => this.toastr.success(Toaster_Message.successShare, 'Success!') - ); + .subscribe(() => { + if (this.imagesService.projectList) { + this.initImageTable(this.imagesService.projectList); + } + }); } private getImageList(): ImageModel[] { diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/images/images.service.ts b/services/self-service/src/main/resources/webapp/src/app/resources/images/images.service.ts new file mode 100644 index 000000000..3ac70b47c --- /dev/null +++ b/services/self-service/src/main/resources/webapp/src/app/resources/images/images.service.ts @@ -0,0 +1,28 @@ +import { Injectable } from '@angular/core'; +import { ImageModel, ProjectModel, ShareImageAllUsersParams } from './images.model'; +import { Observable } from 'rxjs'; +import { UserImagesPageService } from '../../core/services'; +import { tap } from 'rxjs/operators'; + +@Injectable({ + providedIn: 'root' +}) +export class ImagesService { + + projectList: ProjectModel[]; + + constructor( + private userImagesPageService: UserImagesPageService + ) { } + + shareImageAllUsers(image: ImageModel): Observable<ProjectModel[]> { + const shareParams: ShareImageAllUsersParams = { + imageName: image.name, + projectName: image.project, + endpoint: image.endpoint + }; + return this.userImagesPageService.shareImageAllUsers(shareParams).pipe( + tap((response: ProjectModel[]) => this.projectList = response) + ); + } +} diff --git a/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/share-image/share-image.component.html b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/share-image/share-image.component.html index ffda3db02..a6f1d1e2a 100644 --- a/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/share-image/share-image.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/share-image/share-image.component.html @@ -32,7 +32,7 @@ <div class="text-center m-top-30 m-bott-10"> <button type="button" class="butt mat-raised-button" (click)="dialogRef.close()">No</button> <button type="button" class="butt butt-success mat-raised-button" - (click)="dialogRef.close(true)">Yes + (click)="onShare()">Yes </button> </div> </section> diff --git a/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/share-image/share-image.component.ts b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/share-image/share-image.component.ts index ce60e32a1..a62f0db3a 100644 --- a/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/share-image/share-image.component.ts +++ b/services/self-service/src/main/resources/webapp/src/app/shared/modal-dialog/share-image/share-image.component.ts @@ -19,6 +19,11 @@ import { Component, Inject } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { ImagesService } from '../../../resources/images/images.service'; +import { UserImagesPageService } from '../../../core/services'; +import { Toaster_Message } from '../../../resources/images'; +import { ToastrService } from 'ngx-toastr'; +import { tap } from 'rxjs/operators'; @Component({ selector: 'datalab-share-image', @@ -31,5 +36,17 @@ export class ShareImageComponent { constructor( public dialogRef: MatDialogRef<ShareImageComponent>, @Inject(MAT_DIALOG_DATA) public data: any, + private imagesService: ImagesService, + private userImagesPageService: UserImagesPageService, + private toastr: ToastrService, ) { } + + onShare() { + this.dialogRef.close(); + this.imagesService.shareImageAllUsers(this.data.image).pipe( + tap(response => this.imagesService.projectList = response) + ).subscribe( + () => this.toastr.success(Toaster_Message.successShare, 'Success!') + ); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
