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]

Reply via email to