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/21 09:31:00 UTC
[incubator-datalab] 01/01: [DATALAB-2933] added section shared with
This is an automated email from the ASF dual-hosted git repository.
hshpak pushed a commit to branch feat/DATALAB-2933/view-additional-info-about-image-add-section-shared-with
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git
commit 85b487097675ba3528af2e6f946e6bbb12810623
Author: Hennadii_Shpak <bo...@gmail.com>
AuthorDate: Tue Sep 20 18:32:57 2022 +0300
[DATALAB-2933] added section shared with
---
.../share-dialog/share-dialog.component.html | 1 -
.../image-detail-dialog.component.html | 21 +++++++++++++++++
.../image-detail-dialog.component.scss | 27 ++++++++++++++++++++++
.../image-detail-dialog.component.ts | 4 +++-
.../image-detail-dialog.module.ts | 4 +++-
.../src/app/resources/images/images.component.ts | 4 ++--
.../src/app/resources/images/images.config.ts | 2 +-
.../src/app/resources/images/images.model.ts | 6 +++++
.../src/app/resources/images/images.service.ts | 4 ++--
9 files changed, 65 insertions(+), 8 deletions(-)
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-action-dialog/share-dialog/share-dialog.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-action-dialog/share-dialog/share-dialog.component.html
index ac237d1ba..d39160bc7 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-action-dialog/share-dialog/share-dialog.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-action-dialog/share-dialog/share-dialog.component.html
@@ -60,7 +60,6 @@
<input
type="text"
class="search-input"
- panelClass="scrolling"
[placeholder]="placeholder.groupOrNameSearchInput"
[formControl]="addUserDataControl"
(change)="onChange()"
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.component.html
index bbafc43bb..69b9ebeed 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.component.html
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.component.html
@@ -65,18 +65,39 @@
</ng-template>
</div>
</div>
+
<div class="image__provider--wrapper">
<span class="modal-row__item modal-row__item--title">Provider</span>
<span class="modal-row__item">{{ data.image.cloudProvider }}</span>
</div>
+
<div class="image__creation-date--wrapper">
<span class="modal-row__item modal-row__item--title">Creation date</span>
<span class="modal-row__item">{{data.image.timestamp | localDate : 'short'}} </span>
</div>
+
<div class="image__creator--wrapper">
<span class="modal-row__item modal-row__item--title">Creator</span>
<span class="modal-row__item">{{ data.image.user }}</span>
</div>
+
+ <div *ngIf="data.image.sharingStatus === sharingStatus.shared" class="image__creator--wrapper">
+ <span class="modal-row__item modal-row__item--title">Shared with</span>
+ <div class="user-data__list--wrapper scrolling">
+ <ul class="groups__list">
+ <li *ngFor="let group of data.image.sharedWith.groups" class="groups__item">
+ <span class="icon--wrapper"><mat-icon class="user-data__icon">people</mat-icon></span>
+ <span class="groups__item--wrapper">{{group}}</span>
+ </li>
+ </ul>
+ <ul class="users__list">
+ <li *ngFor="let user of data.image.sharedWith.users" class="users__item">
+ <span class="icon--wrapper"><mat-icon class="user-data__icon">person</mat-icon></span>
+ <span class="groups__item--wrapper">{{user}}</span>
+ </li>
+ </ul>
+ </div>
+ </div>
</div>
</div>
</div>
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.component.scss b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.component.scss
index 4964c9590..ebcc1d606 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.component.scss
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.component.scss
@@ -62,3 +62,30 @@
.no-libraries {
color: rgba(113, 138, 165, 0.5);
}
+
+.users__item,
+.groups__item {
+ display: flex;
+ align-items: center;
+
+ &:not(last-child) {
+ margin-bottom: 10px;
+ }
+}
+
+.user-data {
+
+ &__icon {
+ border-radius: 50%;
+ }
+
+ &__list--wrapper {
+ width: 50%;
+ height: 110px;
+ overflow-y: scroll;
+ }
+}
+
+.icon--wrapper {
+ margin-right: 10px;
+}
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.component.ts b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.component.ts
index 3c1948e09..05116a3a4 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.component.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.component.ts
@@ -19,7 +19,7 @@
import { Component, Inject, OnInit } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';
-import { LibraryInfoItem, Library, ImageDetailModalData } from '../../images';
+import { LibraryInfoItem, Library, ImageDetailModalData, SharingStatus } from '../../images';
import { LibraryInfoModalComponent } from '../library-info-modal/library-info-modal.component';
import { caseInsensitiveSortUtil } from '../../../core/util';
@@ -33,6 +33,8 @@ import { caseInsensitiveSortUtil } from '../../../core/util';
})
export class ImageDetailDialogComponent implements OnInit {
+ readonly sharingStatus: typeof SharingStatus = SharingStatus;
+
maxDescriptionLength: number = 170;
libraryList = [];
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.module.ts b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.module.ts
index 44a9cbc6c..d4e215acb 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.module.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/exploratory/image-detail-dialog/image-detail-dialog.module.ts
@@ -24,6 +24,7 @@ import { TruncateTextPipeModule } from '../../../core/pipes/truncate-text-pipe';
import {LocalDatePipeModule} from '../../../core/pipes/local-date-pipe';
import {MatTooltipModule} from '@angular/material/tooltip';
import {LibraryNameNormalizePipeModule} from '../../../core/pipes/library-name-normalize';
+import { MaterialModule } from '../../../shared/material.module';
@@ -34,7 +35,8 @@ import {LibraryNameNormalizePipeModule} from '../../../core/pipes/library-name-n
TruncateTextPipeModule,
LocalDatePipeModule,
MatTooltipModule,
- LibraryNameNormalizePipeModule
+ LibraryNameNormalizePipeModule,
+ MaterialModule,
],
exports: [ ImageDetailDialogComponent ],
entryComponents: [ ImageDetailDialogComponent ]
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 66f2425f2..2954922bb 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
@@ -41,7 +41,7 @@ import {
ImageStatuses,
Localstorage_Key,
Placeholders,
- SharedStatus,
+ SharingStatus,
DropdownFieldNames,
FilterFormInitialValue,
ImageModelKeysForFilter,
@@ -69,7 +69,7 @@ export class ImagesComponent implements OnInit, OnDestroy {
readonly tableHeaderCellTitles: typeof Image_Table_Column_Headers = Image_Table_Column_Headers;
readonly displayedColumns: typeof Image_Table_Titles = Image_Table_Titles;
readonly placeholder: typeof Placeholders = Placeholders;
- readonly sharedStatus: typeof SharedStatus = SharedStatus;
+ readonly sharedStatus: typeof SharingStatus = SharingStatus;
readonly imageStatus: typeof ImageStatuses = ImageStatuses;
readonly columnFieldNames: typeof FilterFormControlNames = FilterFormControlNames;
readonly dropdownFieldNames: typeof DropdownFieldNames = DropdownFieldNames;
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/images/images.config.ts b/services/self-service/src/main/resources/webapp/src/app/resources/images/images.config.ts
index fb5e0860e..60a3ab54b 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/images/images.config.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/images/images.config.ts
@@ -28,7 +28,7 @@ export enum Image_Table_Column_Headers {
endpoint = 'Endpoint',
}
-export enum SharedStatus {
+export enum SharingStatus {
shared = 'SHARED',
private = 'PRIVATE',
received = 'RECEIVED'
diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/images/images.model.ts b/services/self-service/src/main/resources/webapp/src/app/resources/images/images.model.ts
index 4f874ecc5..03771329d 100644
--- a/services/self-service/src/main/resources/webapp/src/app/resources/images/images.model.ts
+++ b/services/self-service/src/main/resources/webapp/src/app/resources/images/images.model.ts
@@ -42,6 +42,7 @@ export interface ImageModel {
imageUserPermissions: ImageUserPermissions;
name: string;
project: string;
+ sharedWith: SharedWithField;
sharingStatus: 'SHARED'| 'PRIVATE' | 'RECEIVED';
status: 'ACTIVE' | 'CREATING' | 'FAILED';
user: string;
@@ -131,3 +132,8 @@ export interface UnShareModal {
userData: UserData;
title: ModalTitle;
}
+
+export interface SharedWithField {
+ users: string[];
+ groups: string[];
+}
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 f37650960..0a2c08fe8 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
@@ -15,7 +15,7 @@ import {
ImageActionModalData
} from './images.model';
import { ApplicationServiceFacade, UserImagesPageService } from '../../core/services';
-import { ChangedColumnStartValue, FilterFormInitialValue, ModalTitle, SharedStatus } from './images.config';
+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';
@@ -229,7 +229,7 @@ export class ImagesService {
}
private isImageShared(image: ImageModel): boolean {
- return image.sharingStatus !== SharedStatus.private;
+ return image.sharingStatus !== SharingStatus.private;
}
private checkColumnState(acc: FilteredColumnList, fieldItem: FilterFormItemType): FilteredColumnList {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org