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/08/10 08:47:24 UTC
[incubator-datalab] branch feat/DATALAB-2920/user-rights-on-image-page created (now ebebc8b97)
This is an automated email from the ASF dual-hosted git repository.
hshpak pushed a change to branch feat/DATALAB-2920/user-rights-on-image-page
in repository https://gitbox.apache.org/repos/asf/incubator-datalab.git
at ebebc8b97 DATALAB-2920 added condition for action button
This branch includes the following new commits:
new ebebc8b97 DATALAB-2920 added condition for action button
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org
[incubator-datalab] 01/01: DATALAB-2920 added condition for action button
Posted by hs...@apache.org.
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 <bo...@gmail.com>
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: commits-unsubscribe@datalab.apache.org
For additional commands, e-mail: commits-help@datalab.apache.org