diff --git a/src/app/appmarket/admin/clusters/clusters.module.ts b/src/app/appmarket/admin/clusters/clusters.module.ts index b52a21d745149314fdeb762621b49eb371d2faf6..c5137d01d8dd76c55e3ca77fda8f4fe5178ea2ce 100644 --- a/src/app/appmarket/admin/clusters/clusters.module.ts +++ b/src/app/appmarket/admin/clusters/clusters.module.ts @@ -20,9 +20,12 @@ import {ClusterService} from "../../../service/cluster.service"; AuthModule, PipesModule, ], + exports: [ + ClusterDetailsComponent + ], providers: [ ClusterService, ] }) -export class ClustersModule {} \ No newline at end of file +export class ClustersModule {} diff --git a/src/app/appmarket/admin/clusters/details/clusterdetails.component.ts b/src/app/appmarket/admin/clusters/details/clusterdetails.component.ts index 17eb8528a9be69d29b89b97fcfcfa96a7b92a9c6..37940ff2e2232410df3f0f1fa3d73074b51e57fb 100644 --- a/src/app/appmarket/admin/clusters/details/clusterdetails.component.ts +++ b/src/app/appmarket/admin/clusters/details/clusterdetails.component.ts @@ -24,7 +24,7 @@ export class ClusterDetailsComponent extends BaseComponent implements OnInit { ngOnInit() { this.clusterService.getCluster().subscribe(cluster => { this.cluster = cluster; - this.router.navigate(['/admin/clusters/view']); + // this.router.navigate(['/admin/clusters/view']); }, () => { this.cluster = new Cluster(); this.mode = ComponentMode.CREATE; diff --git a/src/app/appmarket/admin/configuration/configuration.module.ts b/src/app/appmarket/admin/configuration/configuration.module.ts index fb64fb0e2438ca7e13487c55f52fb8a539a9ad25..626459680d213c760478cb1b567f35688dc7462d 100644 --- a/src/app/appmarket/admin/configuration/configuration.module.ts +++ b/src/app/appmarket/admin/configuration/configuration.module.ts @@ -9,20 +9,22 @@ import {PipesModule} from '../../../pipe/pipes.module'; import {FormsModule} from '@angular/forms'; import {TranslateModule} from '@ngx-translate/core'; import {InternationalizationService} from "../../../service/internationalization.service"; +import {ClustersModule} from '../clusters/clusters.module'; @NgModule({ declarations: [ ConfigurationDetailsComponent, ], - imports: [ - CommonModule, - RouterModule, - SharedModule, - AuthModule, - FormsModule, - PipesModule, - TranslateModule.forChild() - ], + imports: [ + CommonModule, + RouterModule, + SharedModule, + AuthModule, + FormsModule, + PipesModule, + TranslateModule.forChild(), + ClustersModule + ], providers: [ ConfigurationService, InternationalizationService diff --git a/src/app/appmarket/admin/configuration/details/configurationdetails.component.html b/src/app/appmarket/admin/configuration/details/configurationdetails.component.html index 38ba9ad60336e8de90f9f6ffa9049ac858297362..eb7367d76829dbc292e3efdea5f336dc6cb838d2 100644 --- a/src/app/appmarket/admin/configuration/details/configurationdetails.component.html +++ b/src/app/appmarket/admin/configuration/details/configurationdetails.component.html @@ -1,62 +1,63 @@ -<div class="panel panel-default"> - <div class="panel-heading">{{ 'PORTAL_CONFIGURATION.TITLE' | translate }}</div> - <div class="panel-body"> - <form (submit)="save()" class="form-horizontal" #configurationForm="ngForm" *ngIf="this.configuration"> - <div class="form-group"> - <label for="setMaintenance" - class="col-sm-2 control-label">{{ 'PORTAL_CONFIGURATION.MAINTENANCE' | translate }}</label> - <div class="col-sm-10 pd-top-7"> - <input type="checkbox" id="setMaintenance" name="setMaintenance" - [(ngModel)]="this.configuration.maintenance" - [checked]="this.configuration.maintenance === true"> +<div class="col-sm-12 col-sm-12 col-md-12" > + <div class="panel panel-default"> + <div class="panel-heading">{{ 'PORTAL_CONFIGURATION.TITLE' | translate }}</div> + <div class="panel-body"> + <form (submit)="save()" class="form-horizontal" #configurationForm="ngForm" *ngIf="this.configuration"> + <div class="form-group"> + <label for="setMaintenance" + class="col-sm-2 control-label">{{ 'PORTAL_CONFIGURATION.MAINTENANCE' | translate }}</label> + <div class="col-sm-10 pd-top-7"> + <input type="checkbox" id="setMaintenance" name="setMaintenance" + [(ngModel)]="this.configuration.maintenance" + [checked]="this.configuration.maintenance === true"> + </div> </div> - </div> - <div class="form-group"> - <label for="SSOLoginAllowed" - class="col-sm-2 control-label">{{ 'PORTAL_CONFIGURATION.ALLOW_SSO_LOGIN' | translate }}</label> - <div class="col-sm-10 pd-top-7"> - <input type="checkbox" id="SSOLoginAllowed" name="SSOLoginAllowed" - [(ngModel)]="this.configuration.ssoLoginAllowed" - [checked]="this.configuration.ssoLoginAllowed === true"> + <div class="form-group"> + <label for="SSOLoginAllowed" + class="col-sm-2 control-label">{{ 'PORTAL_CONFIGURATION.ALLOW_SSO_LOGIN' | translate }}</label> + <div class="col-sm-10 pd-top-7"> + <input type="checkbox" id="SSOLoginAllowed" name="SSOLoginAllowed" + [(ngModel)]="this.configuration.ssoLoginAllowed" + [checked]="this.configuration.ssoLoginAllowed === true"> + </div> </div> - </div> - <div class="form-group"> - <label for="defaultLang" - class="col-sm-2 control-label">{{'PORTAL_CONFIGURATION.DEFAULT_LANGUAGE' | translate}}</label> - <div class="col-sm-3"> - <select id="defaultLang" #langSelect class="form-control" - (change)="this.configuration.defaultLanguage = langSelect.value"> - <option *ngFor="let lang of languages" [value]="lang.language" - [selected]="lang.language === configuration.defaultLanguage">{{'LANGUAGE.' + lang.language.toUpperCase() + '_LABEL' | translate}}</option> - </select> + <div class="form-group"> + <label for="defaultLang" + class="col-sm-2 control-label">{{'PORTAL_CONFIGURATION.DEFAULT_LANGUAGE' | translate}}</label> + <div class="col-sm-3"> + <select id="defaultLang" #langSelect class="form-control" + (change)="this.configuration.defaultLanguage = langSelect.value"> + <option *ngFor="let lang of languages" [value]="lang.language" + [selected]="lang.language === configuration.defaultLanguage">{{'LANGUAGE.' + lang.language.toUpperCase() + '_LABEL' | translate}}</option> + </select> + </div> </div> - </div> - <div class="form-group"> - <label for="testInstance" - class="col-sm-2 control-label">{{ 'PORTAL_CONFIGURATION.TEST_INSTANCE' | translate }}</label> - <div class="col-sm-10 pd-top-7"> - <input type="checkbox" id="testInstance" name="testInstance" - [(ngModel)]="this.configuration.testInstance" - [checked]="this.configuration.testInstance === true"> + <div class="form-group"> + <label for="testInstance" + class="col-sm-2 control-label">{{ 'PORTAL_CONFIGURATION.TEST_INSTANCE' | translate }}</label> + <div class="col-sm-10 pd-top-7"> + <input type="checkbox" id="testInstance" name="testInstance" + [(ngModel)]="this.configuration.testInstance" + [checked]="this.configuration.testInstance === true"> + </div> </div> - </div> - <div class="form-group"> - <label for="sendAppInstanceFailureEmails" - class="col-sm-2 control-label">{{ 'PORTAL_CONFIGURATION.SEND_APP_INSTANCE_FAILURE_EMAILS' | translate }}</label> - <div class="col-sm-10 pd-top-7"> - <input type="checkbox" id="sendAppInstanceFailureEmails" name="sendAppInstanceFailureEmails" - [(ngModel)]="this.configuration.sendAppInstanceFailureEmails"> + <div class="form-group"> + <label for="sendAppInstanceFailureEmails" + class="col-sm-2 control-label">{{ 'PORTAL_CONFIGURATION.SEND_APP_INSTANCE_FAILURE_EMAILS' | translate }}</label> + <div class="col-sm-10 pd-top-7"> + <input type="checkbox" id="sendAppInstanceFailureEmails" name="sendAppInstanceFailureEmails" + [(ngModel)]="this.configuration.sendAppInstanceFailureEmails"> + </div> </div> - </div> - <div class="form-group"> - <label for="registrationDomainSelectionEnabled" - class="col-sm-2 control-label">{{ 'PORTAL_CONFIGURATION.DOMAIN_SELECTION_ENABLED' | translate }}</label> - <div class="col-sm-10 pd-top-7"> - <input type="checkbox" id="registrationDomainSelectionEnabled" name="registrationDomainSelectionEnabled" - [(ngModel)]="this.configuration.registrationDomainSelectionEnabled"> + <div class="form-group"> + <label for="registrationDomainSelectionEnabled" + class="col-sm-2 control-label">{{ 'PORTAL_CONFIGURATION.DOMAIN_SELECTION_ENABLED' | translate }}</label> + <div class="col-sm-10 pd-top-7"> + <input type="checkbox" id="registrationDomainSelectionEnabled" name="registrationDomainSelectionEnabled" + [(ngModel)]="this.configuration.registrationDomainSelectionEnabled"> + </div> </div> - </div> - <div class="form-group"> + <div class="form-group"> <span class="control-label col-sm-2"> <strong> @@ -64,33 +65,37 @@ </strong> </span> - <div class="col-sm-10 display-emails"> - <div *ngFor="let email of configuration.appInstanceFailureEmailList; let i=index; trackBy:trackByFn" - class="col-lg-6 col-md-10 col-sm-12 pd-bottom-5 row email-row"> - <div class="email-input"> - <input class="form-control" type="text" - id="appInstanceFailureEmailList.{{i}}" - name="appInstanceFailureEmailList.{{i}}" - [(ngModel)]="configuration.appInstanceFailureEmailList[i]"/> - </div> + <div class="col-sm-10 display-emails"> + <div *ngFor="let email of configuration.appInstanceFailureEmailList; let i=index; trackBy:trackByFn" + class="col-lg-6 col-md-10 col-sm-12 pd-bottom-5 row email-row"> + <div class="email-input"> + <input class="form-control" type="text" + id="appInstanceFailureEmailList.{{i}}" + name="appInstanceFailureEmailList.{{i}}" + [(ngModel)]="configuration.appInstanceFailureEmailList[i]"/> + </div> - <button role="button" type="button" class="btn btn-default" (click)="removeEmailEntry(email)"> - Remove - </button> - </div> - <div class="pd-left-15"> - <button role="button" type="button" class="btn btn-success" (click)="addEmailEntry()">Add - </button> + <button role="button" type="button" class="btn btn-default" (click)="removeEmailEntry(email)"> + Remove + </button> + </div> + <div class="pd-left-15"> + <button role="button" type="button" class="btn btn-success" (click)="addEmailEntry()">Add + </button> + </div> </div> - </div> - </div> - <button class="btn btn-primary" - type="submit">{{ 'PORTAL_CONFIGURATION.SUBMIT_BUTTON' | translate }}</button> - <div class="alert alert-danger" style="margin-top: 5px" *ngIf="errorMsg"> - {{errorMsg}} - </div> - </form> + </div> + <button class="btn btn-primary" + type="submit">{{ 'PORTAL_CONFIGURATION.SUBMIT_BUTTON' | translate }}</button> + <div class="alert alert-danger" style="margin-top: 5px" *ngIf="errorMsg"> + {{errorMsg}} + </div> + </form> + </div> </div> </div> + + +<app-clusterdetails></app-clusterdetails> diff --git a/src/app/appmarket/domains/list/domainslist.component.html b/src/app/appmarket/domains/list/domainslist.component.html index 6e31fedf246a2ffc647391f8db4d8901863a2617..bc1be2ac41d411067d8defcab382aa48039a4a0e 100644 --- a/src/app/appmarket/domains/list/domainslist.component.html +++ b/src/app/appmarket/domains/list/domainslist.component.html @@ -23,7 +23,7 @@ </li> </ul> </span> - <input pInputText name="search" id="search" placeholder="Search" type="text" [(ngModel)]="searchValue"> + <input pInputText class="flex" name="search" id="search" placeholder="Search" type="text" style="height: 34px" [(ngModel)]="searchValue"> </div> </div> <br> diff --git a/src/app/shared/common/tagfilter/tagfilter.component.html b/src/app/shared/common/tagfilter/tagfilter.component.html index 4a2236a2427ed6a42b46bbcffd324dbafa396a40..f62710c5a37833813fceaa3e06908b019acd8e21 100644 --- a/src/app/shared/common/tagfilter/tagfilter.component.html +++ b/src/app/shared/common/tagfilter/tagfilter.component.html @@ -6,7 +6,7 @@ [(ngModel)]="value" [ngModelOptions]="{standalone: true}" (ngModelChange)="onChange()"> <option [value]="'all'">all</option> - <option *ngFor="let tag of tags | async" [value]="tag">{{tag}}</option> + <option *ngFor="let tag of tagsValue" [value]="tag">{{tag}}</option> </select> </div> </form> diff --git a/src/app/shared/common/tagfilter/tagfilter.component.ts b/src/app/shared/common/tagfilter/tagfilter.component.ts index 5793750f7c9241801324837dd7a3d1510d82b525..16ed18894238f9b7e7324e100fd4221cdf0d9f28 100644 --- a/src/app/shared/common/tagfilter/tagfilter.component.ts +++ b/src/app/shared/common/tagfilter/tagfilter.component.ts @@ -1,6 +1,8 @@ import { TagService } from '../../../service/tag.service'; import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; import { Observable } from 'rxjs'; +import {sort} from 'semver'; +import {map} from 'rxjs/operators'; @Component({ selector: 'nmaas-tag-filter', @@ -17,12 +19,15 @@ export class TagFilterComponent implements OnInit { @Output() public changed: EventEmitter<string> = new EventEmitter<string>(); - public tags: Observable<string[]>; + public tagsValue: string[]; constructor(private tagService: TagService) { } ngOnInit() { - this.tags = this.tagService.getTags(); + this.tagService.getTags().pipe(map(tags => { + tags.sort((a, b) => a < b ? -1 : 1) + return tags; + })).subscribe(value => this.tagsValue = value) } public onChange(): void { diff --git a/src/app/shared/navbar/navbar.component.css b/src/app/shared/navbar/navbar.component.css index e4a84a5d3f32445d914fce35b77cc7ed9dd04b8c..d131fe51a295f5042eb5285ba5b5a38ba4c24c88 100644 --- a/src/app/shared/navbar/navbar.component.css +++ b/src/app/shared/navbar/navbar.component.css @@ -165,3 +165,10 @@ margin-top: 15px; margin-right: 10px; } + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid #e9ecef; +} diff --git a/src/app/shared/navbar/navbar.component.html b/src/app/shared/navbar/navbar.component.html index 4871a003bf0fba4cb8af966803b0bf65649083cf..3461603f3d6843e3cd3a174e6facd20cd1164ce6 100644 --- a/src/app/shared/navbar/navbar.component.html +++ b/src/app/shared/navbar/navbar.component.html @@ -42,12 +42,15 @@ [routerLinkActiveOptions]="{exact:true}" [routerLinkActive]="['active']" class="dropdown"> <a aria-expanded="false" aria-haspopup="true" class="dropdown-toggle" data-toggle="dropdown" - role="button">{{ 'NAVBAR.SETTINGS' | translate }}<strong class="caret"></strong></a> + role="button"><i style="font-size: 1.8rem" class="pi pi-cog"></i><strong class=""></strong></a> <ul class="dropdown-menu"> - <li *roles="['ROLE_SYSTEM_ADMIN']"><a [routerLink]="['/admin/configuration']">Portal</a> - </li> <li *roles="['ROLE_SYSTEM_ADMIN']"><a - [routerLink]="['/admin/languages']">{{'NAVBAR.LANGUAGES' | translate }}</a> + [routerLink]="['/admin/configuration']">{{ 'NAVBAR.SETTINGS' | translate }}</a> + </li> + + <li class="dropdown-divider"></li> + <li *roles="['ROLE_SYSTEM_ADMIN', 'ROLE_TOOL_MANAGER']"><a + [routerLink]="['/admin/apps']">{{ 'NAVBAR.MARKET' | translate }}</a> </li> <li *roles="['ROLE_DOMAIN_ADMIN', 'ROLE_SYSTEM_ADMIN', 'ROLE_OPERATOR']"><a [routerLink]="['/admin/domains']">{{ 'NAVBAR.DOMAINS' | translate }}</a> @@ -58,11 +61,14 @@ <li *roles="['ROLE_DOMAIN_ADMIN']"><a [routerLink]="['/domain/users']">{{ 'NAVBAR.USERS' | translate }}</a> </li> - <li *roles="['ROLE_SYSTEM_ADMIN', 'ROLE_TOOL_MANAGER']"><a - [routerLink]="['/admin/apps']">{{ 'NAVBAR.MARKET' | translate }}</a> - </li> - <li *roles="['ROLE_SYSTEM_ADMIN', 'ROLE_OPERATOR']"><a [routerLink]="['/admin/clusters']">Kubernetes</a> + <li *roles="['ROLE_SYSTEM_ADMIN']"><a + [routerLink]="['/admin/languages']">{{'NAVBAR.LANGUAGES' | translate }}</a> </li> + + <li class="dropdown-divider"></li> + + <!-- <li *roles="['ROLE_SYSTEM_ADMIN', 'ROLE_OPERATOR']"><a [routerLink]="['/admin/clusters']">Kubernetes</a>--> + <!-- </li>--> <li *roles="['ROLE_SYSTEM_ADMIN', 'ROLE_OPERATOR']" [routerLinkActiveOptions]="{exact:true}" [routerLinkActive]="['active']"><a [routerLink]="['/admin/monitor']">{{ 'NAVBAR.MONITOR' | translate }}</a> diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts index 83f494a81242d78795be34d4f85cc459fa44cae5..541c59358066a799c5c1de291a03abb73e5b03d4 100644 --- a/src/app/shared/shared.module.ts +++ b/src/app/shared/shared.module.ts @@ -57,6 +57,7 @@ import { PreferencesComponent } from './users/preferences/preferences.component' import {TooltipModule} from 'primeng/tooltip'; import {DropdownModule} from 'primeng/dropdown'; import {SortableHeaderDirective} from '../service/sort-domain.directive'; +import {InputTextModule} from 'primeng/inputtext'; @NgModule({ imports: [ @@ -73,6 +74,7 @@ import {SortableHeaderDirective} from '../service/sort-domain.directive'; FormioModule, TooltipModule, DropdownModule, + InputTextModule, ], declarations: [ RateComponent, diff --git a/src/app/shared/users/list/userslist.component.html b/src/app/shared/users/list/userslist.component.html index bc502eab2328ea496dcbc435a91182fb2c5eb7d5..87d8dd8b7db3570eef163d0d85687349d11296fe 100644 --- a/src/app/shared/users/list/userslist.component.html +++ b/src/app/shared/users/list/userslist.component.html @@ -3,7 +3,7 @@ {{ 'USERS.TITLE' | translate }}</h3> <div class="flex space-between"> <div class="flex"> - {{ 'DOMAINS.ITEMS_PER_PAGE' | translate }}: + {{ 'USERS.ITEMS_PER_PAGE' | translate }}: <span id="selectionItems" class="dropdown" style="vertical-align: middle; display: inline-block; margin-right: 1rem;"> <button class="dropdown-toggle btn" data-toggle="dropdown" data-close-others="true"> {{maxItemsOnPage}}