This is an automated email from the ASF dual-hosted git repository. hshpak pushed a commit to branch feat/DATALAB-2920/user-rights-on-image-page in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git
commit ebebc8b973841bde95558595f95e1bac2c1080f2 Author: Hennadii_Shpak <[email protected]> AuthorDate: Wed Aug 10 11:47:03 2022 +0300 DATALAB-2920 added condition for action button --- .../resources/webapp/src/app/core/pipes/index.ts | 1 + .../index.ts | 8 +++---- .../is-element-available.pipe.ts} | 16 +++++++------ .../pipes/normalize-dropdown-multi-value/index.ts | 3 ++- .../src/app/resources/images/images.component.html | 28 ++++++++++------------ .../src/app/resources/images/images.component.scss | 6 +---- .../src/app/resources/images/images.model.ts | 6 +++++ .../webapp/src/app/resources/resources.module.ts | 7 +++--- 8 files changed, 39 insertions(+), 36 deletions(-) diff --git a/services/self-service/src/main/resources/webapp/src/app/core/pipes/index.ts b/services/self-service/src/main/resources/webapp/src/app/core/pipes/index.ts index b4a481e95..b6a0621ce 100644 --- a/services/self-service/src/main/resources/webapp/src/app/core/pipes/index.ts +++ b/services/self-service/src/main/resources/webapp/src/app/core/pipes/index.ts @@ -24,3 +24,4 @@ export * from './replace-breaks-pipe'; export * from './highlight.pipe'; export * from './convert-action-pipe'; export * from './normalize-dropdown-multi-value'; +export * from './is-element-available-pipe'; diff --git a/services/self-service/src/main/resources/webapp/src/app/core/pipes/normalize-dropdown-multi-value/index.ts b/services/self-service/src/main/resources/webapp/src/app/core/pipes/is-element-available-pipe/index.ts similarity index 80% copy from services/self-service/src/main/resources/webapp/src/app/core/pipes/normalize-dropdown-multi-value/index.ts copy to services/self-service/src/main/resources/webapp/src/app/core/pipes/is-element-available-pipe/index.ts index d8b409ce1..ca0a39705 100644 --- a/services/self-service/src/main/resources/webapp/src/app/core/pipes/normalize-dropdown-multi-value/index.ts +++ b/services/self-service/src/main/resources/webapp/src/app/core/pipes/is-element-available-pipe/index.ts @@ -19,12 +19,12 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { NormalizeDropdownMultiValuePipe } from './normalize-dropdown-multi-value.pipe'; +import { IsElementAvailablePipe } from './is-element-available.pipe'; @NgModule({ imports: [CommonModule], - declarations: [NormalizeDropdownMultiValuePipe], - exports: [NormalizeDropdownMultiValuePipe] + declarations: [IsElementAvailablePipe], + exports: [IsElementAvailablePipe] }) -export class CapitalizeFirstLetterPipeModule { } +export class IsElementAvailablePipeModule { } diff --git a/services/self-service/src/main/resources/webapp/src/app/core/pipes/index.ts b/services/self-service/src/main/resources/webapp/src/app/core/pipes/is-element-available-pipe/is-element-available.pipe.ts similarity index 73% copy from services/self-service/src/main/resources/webapp/src/app/core/pipes/index.ts copy to services/self-service/src/main/resources/webapp/src/app/core/pipes/is-element-available-pipe/is-element-available.pipe.ts index b4a481e95..7e7ebb1ee 100644 --- a/services/self-service/src/main/resources/webapp/src/app/core/pipes/index.ts +++ b/services/self-service/src/main/resources/webapp/src/app/core/pipes/is-element-available-pipe/is-element-available.pipe.ts @@ -17,10 +17,12 @@ * under the License. */ -export * from './keys-pipe'; -export * from './underscoreless-pipe'; -export * from './lib-sort-pipe'; -export * from './replace-breaks-pipe'; -export * from './highlight.pipe'; -export * from './convert-action-pipe'; -export * from './normalize-dropdown-multi-value'; +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ name: 'isElementAvailable' }) + +export class IsElementAvailablePipe implements PipeTransform { + transform<T extends object>(elementField: T): boolean { + return (<any>Object).values(elementField).some(item => Boolean(item)); + } +} diff --git a/services/self-service/src/main/resources/webapp/src/app/core/pipes/normalize-dropdown-multi-value/index.ts b/services/self-service/src/main/resources/webapp/src/app/core/pipes/normalize-dropdown-multi-value/index.ts index d8b409ce1..bf380dd7d 100644 --- a/services/self-service/src/main/resources/webapp/src/app/core/pipes/normalize-dropdown-multi-value/index.ts +++ b/services/self-service/src/main/resources/webapp/src/app/core/pipes/normalize-dropdown-multi-value/index.ts @@ -27,4 +27,5 @@ import { NormalizeDropdownMultiValuePipe } from './normalize-dropdown-multi-valu exports: [NormalizeDropdownMultiValuePipe] }) -export class CapitalizeFirstLetterPipeModule { } +export class NormalizeDropdownMultiValuePipeModule { } + diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/images/images.component.html b/services/self-service/src/main/resources/webapp/src/app/resources/images/images.component.html index 0003c4413..79e1fd80e 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/images/images.component.html +++ b/services/self-service/src/main/resources/webapp/src/app/resources/images/images.component.html @@ -306,33 +306,29 @@ <span class="currency_details" (click)="onImageInfoClick(element)"> <i class="material-icons">help_outline</i> </span> - <span #settings class="actions" (click)="actions.toggle($event, settings)"></span> + <span + *ngIf="element.imageUserPermissions | isElementAvailable" + #settings class="actions" + (click)="actions.toggle($event, settings)" + ></span> </div> <bubble-up #actions class="list-menu" position="bottom-left" alternative="top-left"> <ul class="list-unstyled"> - <li [matTooltip]="element.status !== imageStatus.active && tooltipStatuses.activeOnly - || userName !== element.user && tooltipStatuses.creatorOnly" - matTooltipPosition="above" - [matTooltipDisabled]="userName === element.user && element.status === imageStatus.active" - > + <li *ngIf="element.imageUserPermissions.canShare"> <button class="action-button__share" (click)="onShareClick(element)" - [disabled]="userName !== element.user || element.status !== imageStatus.active" > <i class="material-icons">screen_share</i> <span>Share</span> </button> </li> -<!-- <li--> -<!-- [matTooltip]=tooltipStatuses.unableTerminate--> -<!-- matTooltipPosition="above"--> -<!-- >--> -<!-- <button class="action-button__share" disabled>--> -<!-- <i class="material-icons">phonelink_off</i>--> -<!-- <span>Terminate</span>--> -<!-- </button>--> -<!-- </li>--> + <li *ngIf="element.imageUserPermissions.canTerminate"> + <button class="action-button__share" disabled> + <i class="material-icons">phonelink_off</i> + <span>Terminate</span> + </button> + </li> </ul> </bubble-up> </td> diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/images/images.component.scss b/services/self-service/src/main/resources/webapp/src/app/resources/images/images.component.scss index 0ee14977d..84d758538 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/images/images.component.scss +++ b/services/self-service/src/main/resources/webapp/src/app/resources/images/images.component.scss @@ -160,10 +160,6 @@ } } -.settings { - text-align: end; -} - .image-page__project { font-weight: 600; color: #577289; @@ -217,7 +213,7 @@ table.resources { } & .resources-col.label-header { - width: 21.3%; + width: 21%; } & .settings.actions-col, 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 830f911b8..5a8549ddb 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 @@ -17,6 +17,7 @@ export interface ImageModel { endpoint: string; fullName: string; instanceName: string; + imageUserPermissions: ImageUserPermissions; name: string; project: string; sharingStatus: 'SHARED'| 'PRIVATE' | 'RECEIVED'; @@ -29,6 +30,11 @@ export interface ImageModel { templateName: string; } +export interface ImageUserPermissions { + canShare: boolean; + canTerminate: boolean; +} + export interface ShareImageAllUsersParams { imageName: string; projectName: string; diff --git a/services/self-service/src/main/resources/webapp/src/app/resources/resources.module.ts b/services/self-service/src/main/resources/webapp/src/app/resources/resources.module.ts index e454f08ee..f0b0e6184 100644 --- a/services/self-service/src/main/resources/webapp/src/app/resources/resources.module.ts +++ b/services/self-service/src/main/resources/webapp/src/app/resources/resources.module.ts @@ -34,7 +34,7 @@ import { BucketBrowserModule } from './bucket-browser/bucket-browser.module'; import { ImagesComponent } from './images/images.component'; import {CheckboxModule} from '../shared/checkbox'; import {BubbleModule} from '../shared'; -import { CapitalizeFirstLetterPipeModule } from '../core/pipes'; +import { IsElementAvailablePipeModule, NormalizeDropdownMultiValuePipeModule } from '../core/pipes'; import { LocalDatePipeModule } from '../core/pipes/local-date-pipe'; import { ShareImageDialogModule } from './exploratory/share-image/share-image-dialog.module'; import { ImageDetailDialogModule } from './exploratory/image-detail-dialog/image-detail-dialog.module'; @@ -55,12 +55,13 @@ import { DirectivesModule } from '../core/directives'; BucketBrowserModule, CheckboxModule, BubbleModule, - CapitalizeFirstLetterPipeModule, + NormalizeDropdownMultiValuePipeModule, LocalDatePipeModule, ShareImageDialogModule, ImageDetailDialogModule, LibraryInfoModalModule, - DirectivesModule + DirectivesModule, + IsElementAvailablePipeModule ], declarations: [ ResourcesComponent, --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
