Skip to content
Snippets Groups Projects
Unverified Commit ed361aff authored by Łukasz Łopatowski's avatar Łukasz Łopatowski Committed by GitHub
Browse files

Merge pull request #123 from...

Merge pull request #123 from nmaas-platform/52-fix-users-view-when-user-has-both-system-admin-and-domain-admin-role

52 fix users view when user has both system admin and domain admin role
parents 1670e790 84c93340
No related branches found
No related tags found
No related merge requests found
Showing
with 69 additions and 47 deletions
......@@ -30,7 +30,7 @@ import { SelectPodModalComponent } from './modals/select-pod-modal/select-pod-mo
import {TooltipModule} from 'primeng/tooltip';
import {AppinstanceSearchPipe} from './appinstance-search.pipe';
import {InputTextModule} from 'primeng/inputtext';
import { AppdeploymentComponent } from '../bulkDeployment/appDeployment/appchoose/appdeployment.component';
import { AppdeploymentComponent } from '../bulkDeployment/appDeployment/appSelection/appdeployment.component';
import {DropdownModule} from 'primeng/dropdown';
import {TimelineModule} from 'primeng/timeline';
import {ButtonModule} from 'primeng/button';
......
......@@ -9,7 +9,7 @@ import {AppVersionCreateWizardComponent} from './app-version-create-wizard/app-v
import {BulkAppListComponent} from '../bulkDeployment/bulk-app-list/bulk-app-list.component';
import {BulkViewComponent} from '../bulkDeployment/bulk-view/bulk-view.component';
import {AppnavigatorComponent} from '../bulkDeployment/appDeployment/appnavigator/appnavigator.component';
import {AppdeploymentComponent} from '../bulkDeployment/appDeployment/appchoose/appdeployment.component';
import {AppdeploymentComponent} from '../bulkDeployment/appDeployment/appSelection/appdeployment.component';
import {AppuploadComponent} from '../bulkDeployment/appDeployment/appupload/appupload.component';
import {AppsummaryComponent} from '../bulkDeployment/appDeployment/appsummary/appsummary.component';
......
......@@ -7,7 +7,7 @@
<h4>{{'BULK.APP.INFO' | translate}}</h4>
</div>
<div style="margin-top: 3rem;">
<p-dropdown [options]="apps" optionLabel="name" [(ngModel)]="selectedApp"></p-dropdown>
<p-dropdown [options]="apps" optionLabel="name" [(ngModel)]="selectedApp" [filter]="true"></p-dropdown>
</div>
<div class="row .navbar-right" style="margin-top: 3rem; display: flex; justify-content: right">
<button class="btn btn-primary" (click)="selectApp()"> {{'BULK.LIST.CONTINUE' | translate}}</button>
......
......@@ -5,7 +5,7 @@ import {AppdeploymentService} from '../../appdeployment.service';
import {Router} from '@angular/router';
@Component({
selector: 'app-appchoose',
selector: 'app-appselection',
templateUrl: './appdeployment.component.html',
styleUrls: ['./appdeployment.component.css']
})
......
......@@ -12,7 +12,9 @@ export class AppuploadComponent implements OnInit {
public showProgressBar = false;
public csvText = '';
public csvText = '"domain","instance","version","param.x","param.y"\n' +
'"Domain 1","instance-1","4.0.0","Param1","Param2"\n' +
'"Domain 2","instance-2","4.0.0","Param3","Param4"\n';
public errorMessage = '';
......
......@@ -2,7 +2,7 @@ import {Injectable} from '@angular/core';
import {ApplicationBase} from '../../model/application-base';
import {HttpClient} from '@angular/common/http';
import {AppConfigService} from '../../service';
import {BulkReplay} from '../../model/bulk-replay';
import {BulkResponse} from '../../model/bulk-response';
import {Observable} from 'rxjs';
import {BulkDeployment} from '../../model/bulk-deployment';
......@@ -17,7 +17,7 @@ export class AppdeploymentService {
private selectedApp: string = undefined;
private selectedAppId: string = undefined;
public result: BulkReplay[] = [];
public result: BulkResponse[] = [];
public bulk: BulkDeployment;
......
import {Component, OnInit, ViewChild} from '@angular/core';
import {BulkDeployment} from '../../../model/bulk-deployment';
import {AppdeploymentService} from '../appdeployment.service';
import {BulkType} from '../../../model/bulk-replay';
import {BulkType} from '../../../model/bulk-response';
import {ModalComponent} from '../../../shared';
@Component({
......
import {Component, OnInit} from '@angular/core';
import {AppdeploymentService} from '../appdeployment.service';
import {BulkDeployment} from '../../../model/bulk-deployment';
import {BulkType} from '../../../model/bulk-replay';
import {BulkType} from '../../../model/bulk-response';
@Component({
selector: 'app-bulk-domain-list',
......
import {Component, Input, OnInit, QueryList, ViewChild, ViewChildren} from '@angular/core';
import {BulkDeployment} from '../../../model/bulk-deployment';
import {BulkType} from '../../../model/bulk-replay';
import {BulkType} from '../../../model/bulk-response';
import {SortableHeaderDirective} from '../../../service/sort-domain.directive';
import {ModalComponent} from '../../../shared';
......
......@@ -21,3 +21,17 @@
margin-left: 5px;
margin-right: 5px;
}
:host ::ng-deep .p-tooltip .p-tooltip-text {
background: #383838;
color: rgba(255, 255, 255, 0.87);
padding: 0.5rem 0.5rem;
box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2), 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
border-radius: 3px;
}
:host ::ng-deep .p-tooltip {
white-space: nowrap !important;
}
......@@ -53,11 +53,11 @@
<th>{{'BULK.LIST.DETAILS' | translate}}</th>
<th style="width: 5%" scope="col"></th>
</tr>
<ng-template ngFor let-replay [ngForOf]="bulk.entries" let-i="index">
<tr *ngIf="replay.type === 'DOMAIN'" class="table-row">
<td>{{'BULK.STATE.' + replay.state | translate}}</td>
<td>{{replay.created}}</td>
<td>{{getDetails(replay)}}</td>
<ng-template ngFor let-response [ngForOf]="bulk.entries" let-i="index">
<tr *ngIf="response.type === 'DOMAIN'" class="table-row">
<td>{{'BULK.STATE.' + response.state | translate}}</td>
<td>{{response.created}}</td>
<td>{{getDetails(response)}}</td>
<td style="width: 5%" class="text-right">
<span class="dropdown">
<a style="display: inline-block" class="dropdown-toggle " aria-expanded="false" aria-haspopup="true"
......@@ -65,11 +65,11 @@
<em class="fas fa-cog icon-black icon-bigger"></em>
</a>
<ul class="dropdown-menu pull-right-drop">
<li *ngIf="replay.type === 'DOMAIN'">
<a [routerLink]="['/admin/domains/view/', replay?.details['domainId']]">{{ 'BULK.LIST.MOVE_DOMAIN' | translate }}</a>
<li *ngIf="response.type === 'DOMAIN'">
<a [routerLink]="['/admin/domains/view/', response?.details['domainId']]">{{ 'BULK.LIST.MOVE_DOMAIN' | translate }}</a>
</li>
<li *ngIf="replay.type === 'USER'">
<a [routerLink]="['/admin/users/view', replay?.details['userId']]">{{ 'BULK.LIST.MOVE_USER' | translate }}</a>
<li *ngIf="response.type === 'USER'">
<a [routerLink]="['/admin/users/view', response?.details['userId']]">{{ 'BULK.LIST.MOVE_USER' | translate }}</a>
</li>
</ul>
</span>
......@@ -180,9 +180,9 @@
<div class="panel-body">
<div class="flex flex-row mb-3">
<div class="flex align-items-center">
{{'BULK.LIST.DEPLOYED' | translate}}:
</div>
<!-- <div class="flex align-items-center">-->
<!-- {{'BULK.LIST.DEPLOYED' | translate}}:-->
<!-- </div>-->
<div class="flex ml-2 mr-2">
<img alt="App logo" style="width: 50px"
[src]="(appImagesService.getAppLogoUrl(bulk.details['appId']) | secure) || 'assets/images/app-logo-example.png'"/>
......@@ -201,16 +201,16 @@
<th>{{'BULK.APP.DOMAIN' | translate}}</th>
<th style="width: 5%" scope="col"></th>
</tr>
<ng-template ngFor let-replay [ngForOf]="bulk.entries" let-i="index">
<tr *ngIf="replay.type === 'APPLICATION'" class="table-row">
<td>{{'BULK.STATE.' + replay.state | translate}} <i *ngIf="replay.state == 'PROCESSING'"
<ng-template ngFor let-response [ngForOf]="bulk.entries" let-i="index">
<tr *ngIf="response.type === 'APPLICATION'" class="table-row">
<td >{{'BULK.STATE.' + response.state | translate}} <i *ngIf="response.state == 'PROCESSING'"
class="pi pi-spin pi-spinner ml-1"
style="font-size: 1.4rem"></i>
<i *ngIf="replay.state == 'FAILED'" class="pi pi-info-circle" style="font-size: 1.4rem"
pTooltip="{{replay?.details['errorMessage']}}" appendTo="column"></i></td>
<td>{{getAppInstanceId(replay)}}</td>
<td>{{getAppInstanceName(replay)}}</td>
<td>{{getDomainCodeName(replay)}}</td>
<i *ngIf="response.state == 'FAILED'" class="pi pi-info-circle" style="font-size: 1.4rem"
pTooltip="{{response?.details['errorMessage']}}" tooltipStyleClass="p-tooltip-width " [fitContent]="false"></i></td>
<td>{{getAppInstanceId(response)}}</td>
<td>{{getAppInstanceName(response)}}</td>
<td>{{getDomainCodeName(response)}}</td>
<td style="width: 5%" class="text-right">
<span class="dropdown">
<a style="display: inline-block" class="dropdown-toggle " aria-expanded="false" aria-haspopup="true"
......@@ -218,10 +218,10 @@
<em class="fas fa-cog icon-black icon-bigger"></em>
</a>
<ul class="dropdown-menu pull-right-drop">
<li *ngIf="replay.type === 'APPLICATION'">
<a [routerLink]="['/instances/', replay?.details['appInstanceId']]">{{ 'BULK.LIST.MOVE_APP' | translate }}</a>
<li *ngIf="response.type === 'APPLICATION' && response?.details['appInstanceId'] !== undefined">
<a [routerLink]="['/instances/', response?.details['appInstanceId']]">{{ 'BULK.LIST.MOVE_APP' | translate }}</a>
</li>
<li *ngIf="replay.type === 'APPLICATION' && replay.state !== 'COMPLETED'">
<li *ngIf="response.type === 'APPLICATION' && response.state !== 'COMPLETED'">
<a>{{ 'BULK.APP.CHECK_STATE' | translate }}</a>
</li>
</ul>
......
......@@ -2,7 +2,7 @@ import {Component, OnDestroy, OnInit} from '@angular/core';
import {BulkDeployment} from '../../../model/bulk-deployment';
import {AppdeploymentService} from '../appdeployment.service';
import {ActivatedRoute, Router} from '@angular/router';
import {BulkReplay, BulkType} from '../../../model/bulk-replay';
import {BulkResponse, BulkType} from '../../../model/bulk-response';
import {timer} from 'rxjs';
import {map} from 'rxjs/operators';
import {AppImagesService} from '../../../service';
......@@ -51,7 +51,7 @@ export class BulkViewComponent implements OnInit, OnDestroy {
});
}
public getDetails(entry: BulkReplay) {
public getDetails(entry: BulkResponse) {
if (entry.type === 'USER') {
return `Username: ${entry.details['userName']} email: ${entry.details['email']} userId: ${entry.details['userId']}`
} else if (entry.type === 'DOMAIN') {
......@@ -61,16 +61,16 @@ export class BulkViewComponent implements OnInit, OnDestroy {
}
}
public getAppInstanceId(entry: BulkReplay) {
public getAppInstanceId(entry: BulkResponse) {
return entry?.details['appInstanceId']
}
public getAppInstanceName(entry: BulkReplay) {
public getAppInstanceName(entry: BulkResponse) {
return entry?.details['appInstanceName']
}
public getDomainCodeName(entry: BulkReplay) {
return entry?.details['domainCodename']
public getDomainCodeName(entry: BulkResponse) {
return entry?.details['domainCodename'] || entry?.details['domainName']
}
public update() {
......
import {Component, OnInit} from '@angular/core';
import {AppdeploymentService} from '../../appdeployment.service';
import {Router} from '@angular/router';
import {BulkType} from '../../../../model/bulk-replay';
import {BulkType} from '../../../../model/bulk-response';
import {DomainService} from '../../../../service';
@Component({
selector: 'app-domainupload',
......@@ -12,12 +13,15 @@ export class DomainuploadComponent implements OnInit {
public showProgressBar = false;
public csvText = '';
public csvText = '"domain","username","networks","domainGroups","email"\n' +
'"ExampleDomain","TestUser","","Lab1","email@domain.com"\n' +
'"ExampleDomain2","TestUser2","","Lab1","email2@domain.com"\n';
public errorMessage = '';
constructor(private readonly deployService: AppdeploymentService,
private router: Router) { }
private router: Router,
private domainService: DomainService) { }
ngOnInit(): void {
}
......@@ -29,7 +33,8 @@ export class DomainuploadComponent implements OnInit {
this.deployService.uploadUserDomainFile(event.files[0]).subscribe( val => {
console.warn("done")
this.deployService.bulk = val;
if (val.type === BulkType.DOMAIN) {
this.domainService.setUpdateRequiredFlag(true);
if (val.type === BulkType.DOMAIN) {
this.router.navigate(['admin/domains/bulks/', val.id])
} else {
this.router.navigate(['admin/domains/deploy/summary'])
......@@ -49,7 +54,8 @@ export class DomainuploadComponent implements OnInit {
this.deployService.uploadUserDomainFile(file).subscribe( val => {
console.warn("done")
this.deployService.bulk = val;
if (val.type === BulkType.DOMAIN) {
this.domainService.setUpdateRequiredFlag(true);
if (val.type === BulkType.DOMAIN) {
this.router.navigate(['admin/domains/bulks/', val.id])
} else {
this.router.navigate(['admin/domains/deploy/summary'])
......
import {User} from './user';
import {BulkReplay, BulkType} from './bulk-replay';
import {BulkResponse, BulkType} from './bulk-response';
export class BulkDeployment {
public id: number;
public creationDate: Date;
public creator: User;
public entries: BulkReplay[] = [];
public entries: BulkResponse[] = [];
public state: BulkDeploymentState;
public type: BulkType;
public details: Map<string, string>;
......
import {BulkDeploymentState} from './bulk-deployment';
export class BulkReplay {
export class BulkResponse {
public state: BulkDeploymentState;
public created: boolean;
public details: Map<string, string>;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment