You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datalab.apache.org by hs...@apache.org on 2022/09/29 09:52:08 UTC
[incubator-datalab] 01/01: fixed circular dependency
This is an automated email from the ASF dual-hosted git repository.
hshpak pushed a commit to branch circular-dependency-hot-fix
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git
commit db6467d259dc9304c9ca465edddb28b9da9e50f2
Author: Hennadii_Shpak <bo...@gmail.com>
AuthorDate: Thu Sep 29 12:51:34 2022 +0300
fixed circular dependency
---
.../share-dialog/share-dialog.component.ts | 8 +---
.../share-dialog/share-dialog.service.ts | 16 ++++---
.../src/app/resources/images/images.component.ts | 14 ++++++-
.../src/app/resources/images/images.service.ts | 49 ++++++++++------------
4 files changed, 47 insertions(+), 40 deletions(-)
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-action-dialog/share-dialog/share-dialog.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-action-dialog/share-dialog/share-dialog.component.ts
index 433690308..b1a9c7a21 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-action-dialog/share-dialog/share-dialog.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-action-dialog/share-dialog/share-dialog.component.ts
@@ -21,7 +21,6 @@ import { Component, ElementRef, Inject, OnDestroy, OnInit, ViewChild } from '@an
import { SharePlaceholder } from '../image-action.config';
import { ShareDialogData, UserData } from '../image-action.model';
import { FormControl } from '@angular/forms';
-import { ImagesService } from '../../../images/images.service';
import { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';
import {
ImageActionModalData,
@@ -59,7 +58,6 @@ export class ShareDialogComponent implements OnInit, OnDestroy {
constructor(
public toastr: ToastrService,
- private imagesService: ImagesService,
@Inject(MAT_DIALOG_DATA) public data: ImageActionModalData,
private dialog: MatDialog,
private shareDialogService: ShareDialogService
@@ -117,22 +115,20 @@ export class ShareDialogComponent implements OnInit, OnDestroy {
userData,
title: ModalTitle.unShare
};
- const filteredList = this.shareDialogService.filterSharingList(userData);
- const imageInfo = this.imagesService.createImageRequestInfo(this.data.image, filteredList);
this.getUserListDataSubscription$ = this.dialog.open(UnShareWarningComponent, {
data,
panelClass: 'modal-sm'
}).afterClosed()
.pipe(
- switchMap((isShare) => this.shareDialogService.sendShareRequest(isShare, imageInfo)),
+ switchMap((isShare) => this.shareDialogService.sendShareRequest(isShare, this.data.image, userData)),
switchMap(() => this.shareDialogService.getImageShareInfo()),
tap(() => this.toastr.success(Toaster_Message.successUnShare, Toaster_Message.successTitle))
);
}
private getImageParams(): void {
- this.shareDialogService.imageInfo = this.imagesService.createImageRequestInfo(this.data.image);
+ this.shareDialogService.getImageParams(this.data.image);
}
private initUserData(): void {
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-action-dialog/share-dialog/share-dialog.service.ts b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-action-dialog/share-dialog/share-dialog.service.ts
index d2b2ebb47..05f75ae96 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-action-dialog/share-dialog/share-dialog.service.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-action-dialog/share-dialog/share-dialog.service.ts
@@ -25,9 +25,8 @@ import isEqual from 'lodash.isequal';
import { ImagesService } from '../../../images/images.service';
import { ImageActionDialogModule } from '../image-action-dialog.module';
-import { ImageParams, ProjectImagesInfo } from '../../../images';
+import { ImageModel, ImageParams, ProjectImagesInfo } from '../../../images';
import { ShareDialogData, UserData } from '../image-action.model';
-import { UserImagesPageService } from '../../../../core/services';
@Injectable({
providedIn: ImageActionDialogModule
@@ -45,17 +44,18 @@ export class ShareDialogService {
constructor(
private imagesService: ImagesService,
- private userImagesPageService: UserImagesPageService
) { }
getUserDataForShareDropdown(userData: string = ''): Observable<UserData[]> {
- return this.userImagesPageService.getUserDataForShareDropdown(this.imageInfo, userData)
+ return this.imagesService.getUserDataForShareDropdown(userData, this.imageInfo)
.pipe(
tap(response => this.filterSearchDropdown(response))
);
}
- sendShareRequest(flag: boolean, imageInfo: ImageParams): Observable<ProjectImagesInfo> {
+ sendShareRequest(flag: boolean, image: ImageModel, userData: UserData): Observable<ProjectImagesInfo> {
+ const filteredList = this.filterSharingList(userData);
+ const imageInfo = this.imagesService.createImageRequestInfo(image, filteredList);
if (!flag) {
return EMPTY;
}
@@ -63,7 +63,7 @@ export class ShareDialogService {
}
getImageShareInfo(): Observable<ShareDialogData> {
- return this.userImagesPageService.getImageShareInfo(this.imageInfo).pipe(
+ return this.imagesService.getImageShareInfo(this.imageInfo).pipe(
tap(({canBeSharedWith, sharedWith}) => {
this.cashedUserDataDropdownList = canBeSharedWith;
this.searchUserDataDropdownList$$.next(canBeSharedWith);
@@ -107,4 +107,8 @@ export class ShareDialogService {
);
this.searchUserDataDropdownList$$.next(filteredDropdownList);
}
+
+ getImageParams(image: ImageModel): void {
+ this.imageInfo = this.imagesService.createImageRequestInfo(image);
+ }
}
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 2954922bb..6487cd088 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
@@ -22,7 +22,7 @@ import { MatDialog } from '@angular/material/dialog';
import { EMPTY, Observable, of } from 'rxjs';
import { catchError, map, switchMap, tap } from 'rxjs/operators';
-import { ToastrService } from 'ngx-toastr';
+import { ComponentType, ToastrService } from 'ngx-toastr';
import { GeneralEnvironmentStatus } from '../../administration/management/management.model';
import { ApplicationSecurityService, HealthStatusService } from '../../core/services';
@@ -54,6 +54,8 @@ import { ImagesService } from './images.service';
import { ProgressBarService } from '../../core/services/progress-bar.service';
import { ImageDetailDialogComponent } from '../exploratory/image-detail-dialog/image-detail-dialog.component';
import { ActivatedRoute } from '@angular/router';
+import { ShareDialogComponent } from '../exploratory/image-action-dialog/share-dialog/share-dialog.component';
+import { TerminateDialogComponent } from '../exploratory/image-action-dialog/terminate-dialog/terminate-dialog.component';
@Component({
selector: 'datalab-images',
@@ -164,7 +166,7 @@ export class ImagesComponent implements OnInit, OnDestroy {
let imageInfo: ImageParams;
const data = this.imagesService.createActionDialogConfig(image, actionType);
const requestCallback = this.imagesService.getRequestByAction(actionType).bind(this.imagesService);
- const component = this.imagesService.getComponentByAction(actionType);
+ const component = this.getComponentByAction(actionType);
this.dialog.open(component, {
data,
@@ -229,6 +231,14 @@ export class ImagesComponent implements OnInit, OnDestroy {
this.imagesService.closeFilter();
}
+ private getComponentByAction(actionType): ComponentType<unknown> {
+ const componentList = {
+ share: ShareDialogComponent,
+ terminate: TerminateDialogComponent
+ };
+ return componentList[actionType];
+ }
+
private callActionHelpers(actionType: ImageActionType, callback?: (actionType: string) => void): void {
const toasterInvoke = callback.bind(this);
toasterInvoke(actionType);
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
index 0a2c08fe8..b5d74f5fb 100644
--- 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
@@ -16,10 +16,7 @@ import {
} from './images.model';
import { ApplicationServiceFacade, UserImagesPageService } from '../../core/services';
import { ChangedColumnStartValue, FilterFormInitialValue, ModalTitle, SharingStatus } from './images.config';
-import { ShareDialogComponent } from '../exploratory/image-action-dialog/share-dialog/share-dialog.component';
-import { TerminateDialogComponent } from '../exploratory/image-action-dialog/terminate-dialog/terminate-dialog.component';
-import { ComponentType } from 'ngx-toastr';
-import { UserData } from '../exploratory/image-action-dialog/image-action.model';
+import { ShareDialogData, UserData } from '../exploratory/image-action-dialog/image-action.model';
@Injectable({
providedIn: 'root'
@@ -177,20 +174,6 @@ export class ImagesService {
this.isImageListFiltered$$.next(isImageListFiltered);
}
- createImageRequestInfo(image: ImageModel, userDataList?: UserData[]): ImageParams {
- const { name, project, endpoint } = image;
- const imageParams = {
- imageName: name,
- projectName: project,
- endpoint: endpoint,
- };
-
- if (userDataList) {
- imageParams['sharedWith'] = userDataList;
- }
- return imageParams;
- }
-
createActionDialogConfig(image: ImageModel, actionType: ImageActionType): ImageActionModalData {
const modalTitle = {
share: ModalTitle.share,
@@ -212,14 +195,6 @@ export class ImagesService {
return callbackList[actionType];
}
- getComponentByAction(actionType): ComponentType<unknown> {
- const componentList = {
- share: ShareDialogComponent,
- terminate: TerminateDialogComponent
- };
- return componentList[actionType];
- }
-
initImagePageInfo(imagePageInfo: ProjectImagesInfo): void {
this.getImagePageData(imagePageInfo.projectImagesInfos);
this.getDropdownDataList(imagePageInfo.filterData);
@@ -228,6 +203,28 @@ export class ImagesService {
this.checkIsPageFiltered();
}
+ createImageRequestInfo(image: ImageModel, userDataList?: UserData[]): ImageParams {
+ const { name, project, endpoint } = image;
+ const imageParams = {
+ imageName: name,
+ projectName: project,
+ endpoint: endpoint,
+ };
+
+ if (userDataList) {
+ imageParams['sharedWith'] = userDataList;
+ }
+ return imageParams;
+ }
+
+ getImageShareInfo(imageInfo: ImageParams): Observable<ShareDialogData> {
+ return this.userImagesPageService.getImageShareInfo(imageInfo);
+ }
+
+ getUserDataForShareDropdown(userData: string, imageInfo: ImageParams): Observable<UserData[]> {
+ return this.userImagesPageService.getUserDataForShareDropdown(imageInfo, userData);
+}
+
private isImageShared(image: ImageModel): boolean {
return image.sharingStatus !== SharingStatus.private;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org