Compare commits

...

6 Commits

13 changed files with 126 additions and 89 deletions

View File

@ -2,5 +2,6 @@ export enum AppRole {
Admin = "Admin", Admin = "Admin",
Manager = "Manager", Manager = "Manager",
User = "User", User = "User",
DescriptionTemplateEditor = "DescriptionTemplateEditor" DescriptionTemplateEditor = "DescriptionTemplateEditor",
TenantAdmin = "TenantAdmin"
} }

View File

@ -62,6 +62,7 @@ export class EnumUtils {
case AppRole.User: return this.language.instant('TYPES.APP-ROLE.USER'); case AppRole.User: return this.language.instant('TYPES.APP-ROLE.USER');
case AppRole.Manager: return this.language.instant('TYPES.APP-ROLE.MANAGER'); case AppRole.Manager: return this.language.instant('TYPES.APP-ROLE.MANAGER');
case AppRole.DescriptionTemplateEditor: return this.language.instant('TYPES.APP-ROLE.DESCRIPTION-TEMPLATE-EDITOR'); case AppRole.DescriptionTemplateEditor: return this.language.instant('TYPES.APP-ROLE.DESCRIPTION-TEMPLATE-EDITOR');
case AppRole.TenantAdmin: return this.language.instant('TYPES.APP-ROLE.TENANT-ADMIN');
} }
} }

View File

@ -2,7 +2,7 @@
<div class="row reference-type-editor"> <div class="row reference-type-editor">
<div class="col-md-10 offset-md-1 colums-gapped"> <div class="col-md-10 offset-md-1 colums-gapped">
<div class="row justify-content-between align-items-center"> <div class="row justify-content-between align-items-center">
<div class="col"> <div class="col-md col-12">
<h3 *ngIf="isNew">{{'REFERENCE-TYPE-EDITOR.NEW' | translate}}</h3> <h3 *ngIf="isNew">{{'REFERENCE-TYPE-EDITOR.NEW' | translate}}</h3>
<app-navigation-breadcrumb /> <app-navigation-breadcrumb />
</div> </div>

View File

@ -2,7 +2,7 @@
<div class="row reference-editor"> <div class="row reference-editor">
<div class="col-md-10 offset-md-1 colums-gapped"> <div class="col-md-10 offset-md-1 colums-gapped">
<div class="row align-items-center mt-4 mb-4" *ngIf="formGroup"> <div class="row align-items-center mt-4 mb-4" *ngIf="formGroup">
<div class="col-auto"> <div class="col-md col-12">
<h3 *ngIf="isNew && !isClone">{{'REFERENCE-EDITOR.NEW' | translate}}</h3> <h3 *ngIf="isNew && !isClone">{{'REFERENCE-EDITOR.NEW' | translate}}</h3>
<app-navigation-breadcrumb /> <app-navigation-breadcrumb />
</div> </div>

View File

@ -2,7 +2,7 @@
<div class="row"> <div class="row">
<div class="col-md-10 offset-md-1 tenant-editor"> <div class="col-md-10 offset-md-1 tenant-editor">
<div class="row align-items-center mb-4 mt-4" *ngIf="formGroup"> <div class="row align-items-center mb-4 mt-4" *ngIf="formGroup">
<div class="col-auto"> <div class="col-md col-12">
<h3 *ngIf="isNew && !isClone">{{'TENANT-EDITOR.NEW' | translate}}</h3> <h3 *ngIf="isNew && !isClone">{{'TENANT-EDITOR.NEW' | translate}}</h3>
<app-navigation-breadcrumb /> <app-navigation-breadcrumb />
</div> </div>

View File

@ -19,7 +19,7 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row mt-3">
<div class="col-12"> <div class="col-12">
<section class="w-100"> <section class="w-100">
<mat-slide-toggle labelPosition="before" [(ngModel)]="internalFilters.isActive"> <mat-slide-toggle labelPosition="before" [(ngModel)]="internalFilters.isActive">

View File

@ -1,32 +1,39 @@
<form class="row user-role-editor" *ngIf="formGroup" [formGroup]="formGroup" (ngSubmit)="formSubmit()"> <form class="row user-role-editor" *ngIf="formGroup" [formGroup]="formGroup" (ngSubmit)="formSubmit()">
<div class="row align-items-center"> <div class="container-fluid">
<div *ngIf="!this.nowEditing"class="roles col"> <div class="row align-items-center">
<ng-container *ngFor="let role of this.formGroup.get('roles').value"> <div *ngIf="!this.nowEditing"class="roles col-8">
<div> <div *ngFor="let role of this.formGroup.get('roles').value" class="row">
<span class="user-role" [ngClass]="{'user': role == appRole.User, 'manager': role == appRole.Manager, 'admin': role == appRole.Admin, 'description-template-editor': role == appRole.DescriptionTemplateEditor}"> <div class="col-auto p-0">
{{enumUtils.toAppRoleString(role)}} <span class="user-role" [ngClass]="{'user': role == appRole.User, 'manager': role == appRole.Manager, 'admin': role == appRole.Admin, 'description-template-editor': role == appRole.DescriptionTemplateEditor, 'tenant-admin': role == appRole.TenantAdmin}">
</span> {{enumUtils.toAppRoleString(role)}}
</span>
</div>
</div>
</div> </div>
</ng-container> <div *ngIf="this.nowEditing" class="pl-0 col-8">
</div> <mat-form-field class="w-100">
<div class="col-8"> <mat-select formControlName="roles" [panelWidth]="auto" multiple required>
<mat-form-field *ngIf="this.nowEditing" class="w-100"> <ng-container *ngFor="let role of appRoleEnumValues">
<mat-select formControlName="roles" multiple required> <mat-option [value]="role">{{enumUtils.toAppRoleString(role)}}</mat-option>
<ng-container *ngFor="let role of appRoleEnumValues"> </ng-container>
<mat-option [value]="role">{{enumUtils.toAppRoleString(role)}}</mat-option> </mat-select>
</ng-container> <mat-error *ngIf="formGroup.get('roles').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
</mat-select> </mat-form-field>
<mat-error *ngIf="formGroup.get('roles').hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error> </div>
</mat-form-field>
<div *ngIf="!this.nowEditing" class="col-2 p-0">
<button mat-icon-button color="primary" type="button" (click)="editItem()">
<mat-icon class="mat-24" matTooltip="{{'USER-LISTING.ACTIONS.EDIT' | translate}}">edit</mat-icon>
<span class="row-action"></span>
</button>
</div>
<div *ngIf="this.nowEditing" class="col-2 p-0">
<button class="save-button" mat-icon-button color="primary" type="submit">
<mat-icon class="mat-24" matTooltip="{{'USER-LISTING.ACTIONS.SAVE' | translate}}">save</mat-icon>
</button>
</div>
</div>
</div> </div>
<button *ngIf="!this.nowEditing" class="col" mat-icon-button color="primary" type="button" (click)="editItem()">
<mat-icon class="mat-24" matTooltip="{{'USER-LISTING.ACTIONS.EDIT' | translate}}">edit</mat-icon>
<span class="row-action"></span>
</button>
<button *ngIf="this.nowEditing" class="col-auto save-button" mat-icon-button color="primary" type="submit">
<mat-icon class="mat-24" matTooltip="{{'USER-LISTING.ACTIONS.SAVE' | translate}}">save</mat-icon>
</button>
</div>
</form> </form>

View File

@ -85,6 +85,24 @@
padding-right: 10px; padding-right: 10px;
} }
.tenant-admin {
// display: flex;
// justify-content: center;
// align-items: center;
min-width: 77px;
min-height: 28px;
color: #ffa631;
background: #ffe6c6 0% 0% no-repeat padding-box;
border-radius: 44px;
letter-spacing: 0.11px;
font-weight: 400;
opacity: 1;
margin-top: 0.5em;
margin-bottom: 0.5em;
padding-left: 10px;
padding-right: 10px;
}
.description-template-editor { .description-template-editor {
// display: flex; // display: flex;
// justify-content: center; // justify-content: center;

View File

@ -1,9 +1,8 @@
<div class="main-content dashboard-main-container h-100" [class.non-auth-main-container]="!this.isAuthenticated()"> <div class="main-content dashboard-main-container h-100">
<div *ngIf="this.isAuthenticated()" class="container-fluid"> <div *ngIf="this.isAuthenticated()" class="container-fluid">
<div *ngIf="this.dashboardStatistics" class="main-content"> <div *ngIf="this.dashboardStatistics" class="main-content">
<div class="container-fluid"> <div class="container-fluid">
<div class="row flex-column-reverse flex-xl-row"> <div class="row flex-column-reverse flex-xl-row">
<div class="col-12 col-xl-10"> <div class="col-12 col-xl-10">
<div class="row"> <div class="row">
<div *ngIf="newReleaseNotificationVisible" class="new-releases-card col-auto mt-0 mr-4"> <div *ngIf="newReleaseNotificationVisible" class="new-releases-card col-auto mt-0 mr-4">
@ -79,7 +78,6 @@
</mat-tab-group> </mat-tab-group>
</div> </div>
</div> </div>
<!-- Right Sidebar --> <!-- Right Sidebar -->
<div *ngIf="!this.hasDmps()" class="col-12 col-xl-2 mb-4 stats"> <div *ngIf="!this.hasDmps()" class="col-12 col-xl-2 mb-4 stats">
<div class="row"> <div class="row">
@ -108,7 +106,6 @@
</div> </div>
</div> </div>
</div> </div>
<div *ngIf="this.hasDmps()" class="col-12 col-xl-2 mb-4 stats"> <div *ngIf="this.hasDmps()" class="col-12 col-xl-2 mb-4 stats">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
@ -147,13 +144,13 @@
</div> </div>
<!-- Home screen on log out --> <!-- Home screen on log out -->
<div class="col p-0" *ngIf="!this.isAuthenticated()"> <div class="container-fluid" *ngIf="!this.isAuthenticated()">
<div class="col-auto"> <div class="main-content">
<div class="main-content"> <div class="container-fluid">
<div class="col"> <div class="row flex-column-reverse flex-xl-row">
<div class="row"> <div class="col-12 col-xl">
<div class="col d-flex flex-column"> <div class="row">
<div class="card non-auth-card" [style.display]="isIntroCardVisible ? 'block' : 'none'"> <div class="col-auto card" [style.display]="isIntroCardVisible ? 'block' : 'none'">
<a class="col-auto d-flex" (click)="dismissIntroCard()"><span class="ml-auto mt-3 material-icons clear-icon">clear</span></a> <a class="col-auto d-flex" (click)="dismissIntroCard()"><span class="ml-auto mt-3 material-icons clear-icon">clear</span></a>
<div class="d-flex flex-column align-items-center non-auth-title-container"> <div class="d-flex flex-column align-items-center non-auth-title-container">
<h4 class="pt-4">{{'DASHBOARD.TITLE' | translate}}</h4> <h4 class="pt-4">{{'DASHBOARD.TITLE' | translate}}</h4>
@ -163,49 +160,69 @@
<img class="col-auto ml-auto laptop-img" src="../../../assets/images/dashboard-popup.png"> <img class="col-auto ml-auto laptop-img" src="../../../assets/images/dashboard-popup.png">
</div> </div>
</div> </div>
<!-- <div *ngIf="hasDmps()" class="col activity">
<div class="latest-activity-title">{{'DASHBOARD.LATEST-ACTIVITY' | translate}}</div>
<mat-tab-group mat-align-tabs="start" class="remove-border-bottom" ( [selectedIndex]="indexFromCurrentType" selectedTabChange)="currentType = $event.tab.ariaLabel">
<mat-tab aria-label="recent" label="{{'DASHBOARD.ALL' | translate}}">
<app-recent-edited-activity (totalCountRecentEdited)="onCountAllRecent($event)" [isActive]="currentType == 'recent'"></app-recent-edited-activity>
<div *ngIf="totalRecents === 0" class="empty-list">{{'DASHBOARD.EMPTY-LIST' | translate}}</div>
</mat-tab>
<mat-tab aria-label="dmps" label="{{'DASHBOARD.PUBLIC-DMPS' | translate}}">
<app-recent-edited-dmp-activity (totalCountDmps)="onCountDmps($event)" [isActive]="currentType == 'dmps'"></app-recent-edited-dmp-activity>
<div *ngIf="totalDmps === 0" class="empty-list">{{'DASHBOARD.EMPTY-LIST' | translate}}</div>
</mat-tab>
<mat-tab aria-label="datasets" label="{{'DASHBOARD.PUBLIC-DATASETS' | translate}}">
<app-recent-edited-description-activity (totalCountDatasets)="onCountDatasets($event)" [isActive]="currentType == 'datasets'"></app-recent-edited-description-activity>
<div *ngIf="totalDatasets === 0" class="empty-list">{{'DASHBOARD.EMPTY-LIST' | translate}}</div>
</mat-tab>
</mat-tab-group>
</div> -->
</div> </div>
<div class="col-auto"> <!-- <div *ngIf="hasDmps()" class="col activity">
<div *ngIf="!hasDmps()" class="ml-auto pl-4 personal-usage-block"> <div class="latest-activity-title">{{'DASHBOARD.LATEST-ACTIVITY' | translate}}</div>
<div class="personal-usage">{{'DASHBOARD.PUBLIC-USAGE' | translate}}</div> <mat-tab-group mat-align-tabs="start" class="remove-border-bottom" ( [selectedIndex]="indexFromCurrentType" selectedTabChange)="currentType = $event.tab.ariaLabel">
<div class="counter-zero">0</div> <mat-tab aria-label="recent" label="{{'DASHBOARD.ALL' | translate}}">
<a>{{'DASHBOARD.PUBLIC-DMPS' | translate}}</a> <app-recent-edited-activity (totalCountRecentEdited)="onCountAllRecent($event)" [isActive]="currentType == 'recent'"></app-recent-edited-activity>
<div class="counter-zero">0</div> <div *ngIf="totalRecents === 0" class="empty-list">{{'DASHBOARD.EMPTY-LIST' | translate}}</div>
<a>{{'DASHBOARD.PUBLIC-DATASETS' | translate}}</a> </mat-tab>
<div class="counter-zero">0</div> <mat-tab aria-label="dmps" label="{{'DASHBOARD.PUBLIC-DMPS' | translate}}">
<app-recent-edited-dmp-activity (totalCountDmps)="onCountDmps($event)" [isActive]="currentType == 'dmps'"></app-recent-edited-dmp-activity>
<div *ngIf="totalDmps === 0" class="empty-list">{{'DASHBOARD.EMPTY-LIST' | translate}}</div>
</mat-tab>
<mat-tab aria-label="datasets" label="{{'DASHBOARD.PUBLIC-DATASETS' | translate}}">
<app-recent-edited-description-activity (totalCountDatasets)="onCountDatasets($event)" [isActive]="currentType == 'datasets'"></app-recent-edited-description-activity>
<div *ngIf="totalDatasets === 0" class="empty-list">{{'DASHBOARD.EMPTY-LIST' | translate}}</div>
</mat-tab>
</mat-tab-group>
</div> -->
</div>
<div class="col-12 col-xl-auto mb-4 stats">
<div *ngIf="!hasDmps()" class="row flex-xl-column">
<div class="col-12">
<div class="personal-usage"><span>{{'DASHBOARD.PUBLIC-USAGE' | translate}}</span></div>
</div>
<div class="col-auto">
<div class="counter-zero"><span>0</span></div>
<a class="link">{{'DASHBOARD.PUBLIC-DMPS' | translate}}</a>
</div>
<div class="col-auto">
<div class="counter-zero"><span>0</span></div>
<a class="link">{{'DASHBOARD.PUBLIC-DESCRIPTIONS' | translate}}</a>
</div>
<div class="col-auto">
<div class="counter-zero"><span>0</span></div>
<a class="link-disabled">{{'DASHBOARD.GRANTS' | translate}}</a> <a class="link-disabled">{{'DASHBOARD.GRANTS' | translate}}</a>
<div class="counter-zero">0</div> </div>
<div class="col-auto">
<div class="counter-zero"><span>0</span></div>
<a class="link-disabled">{{'DASHBOARD.RELATED-ORGANISATIONS' | translate}}</a> <a class="link-disabled">{{'DASHBOARD.RELATED-ORGANISATIONS' | translate}}</a>
</div> </div>
<div *ngIf="hasDmps()" class="ml-auto stats"> </div>
<div class="personal-usage">{{'DASHBOARD.PUBLIC-USAGE' | translate}}</div>
<div [ngClass]="{'counter': dashboardStatistics?.dmpCount != 0, 'counter-zero': dashboardStatistics?.dmpCount == 0}"> <div *ngIf="hasDmps()" class="row flex-xl-column">
{{dashboardStatistics?.dmpCount}}</div> <div class="col-12">
<div class="personal-usage" ><span>{{'DASHBOARD.PUBLIC-USAGE' | translate}}</span></div>
</div>
<div class="col-auto">
<div [ngClass]="{'counter': dashboardStatistics?.dmpCount != 0, 'counter-zero': dashboardStatistics?.dmpCount == 0}" ><span>{{dashboardStatistics?.dmpCount}}</span></div>
<a [routerLink]="['/explore-plans']" class="link">{{'DASHBOARD.PUBLIC-DMPS' | translate}}</a> <a [routerLink]="['/explore-plans']" class="link">{{'DASHBOARD.PUBLIC-DMPS' | translate}}</a>
<div [ngClass]="{'counter': dashboardStatistics?.descriptionCount != 0, 'counter-zero': dashboardStatistics?.descriptionCount == 0}"> </div>
{{dashboardStatistics?.descriptionCount}}</div>
<div class="col-auto">
<div [ngClass]="{'counter': dashboardStatistics?.descriptionCount != 0, 'counter-zero': dashboardStatistics?.descriptionCount == 0}"><span>{{dashboardStatistics?.descriptionCount}}</span></div>
<a [routerLink]="['/explore-descriptions']" class="link">{{'DASHBOARD.PUBLIC-DESCRIPTIONS' | translate}}</a> <a [routerLink]="['/explore-descriptions']" class="link">{{'DASHBOARD.PUBLIC-DESCRIPTIONS' | translate}}</a>
<div [ngClass]="{'counter': grantCount != 0, 'counter-zero': grantCount == 0}"> </div>
{{grantCount}}</div>
<div class="col-auto">
<div [ngClass]="{'counter': grantCount != 0, 'counter-zero': grantCount == 0}" ><span>{{grantCount}}</span></div>
<a href="#" class="link-disabled">{{'DASHBOARD.GRANTS' | translate}}</a> <a href="#" class="link-disabled">{{'DASHBOARD.GRANTS' | translate}}</a>
<div [ngClass]="{'counter': organizationCount != 0, 'counter-zero': organizationCount == 0}"> </div>
{{organizationCount}}</div>
<div class="col-auto">
<div [ngClass]="{'counter': organizationCount != 0, 'counter-zero': organizationCount == 0}"><span>{{organizationCount}}</span></div>
<a href="#" class="link-disabled">{{'DASHBOARD.RELATED-ORGANISATIONS' | translate}}</a> <a href="#" class="link-disabled">{{'DASHBOARD.RELATED-ORGANISATIONS' | translate}}</a>
</div> </div>
</div> </div>

View File

@ -374,14 +374,6 @@ input[type="text"] {
padding: 0rem 7em 0rem 3rem; padding: 0rem 7em 0rem 3rem;
} }
.non-auth-main-container {
padding-left: 0;
}
.non-auth-card {
margin-left: 3rem;
}
.app-info { .app-info {
font-size: 1rem; font-size: 1rem;
padding: 1rem 2rem; padding: 1rem 2rem;

View File

@ -1578,7 +1578,8 @@
"ADMIN": "Admin", "ADMIN": "Admin",
"USER": "User", "USER": "User",
"MANAGER": "Manager", "MANAGER": "Manager",
"DESCRIPTION-TEMPLATE-EDITOR": "Description Template Editor" "DESCRIPTION-TEMPLATE-EDITOR": "Description Template Editor",
"TENANT-ADMIN": "Tenant Admin"
}, },
"IS-ACTIVE": { "IS-ACTIVE": {
"ACTIVE": "Active", "ACTIVE": "Active",

View File

@ -2,7 +2,7 @@
<div class="row notification-template-editor"> <div class="row notification-template-editor">
<div class="col-md-10 offset-md-1 colums-gapped"> <div class="col-md-10 offset-md-1 colums-gapped">
<div class="row align-items-center mt-4 mb-4" *ngIf="formGroup"> <div class="row align-items-center mt-4 mb-4" *ngIf="formGroup">
<div class="col-auto"> <div class="col-md col-12">
<h3 *ngIf="isNew && !isClone">{{'NOTIFICATION-SERVICE.NOTIFICATION-TEMPLATE-EDITOR.NEW' | translate}}</h3> <h3 *ngIf="isNew && !isClone">{{'NOTIFICATION-SERVICE.NOTIFICATION-TEMPLATE-EDITOR.NEW' | translate}}</h3>
<app-navigation-breadcrumb /> <app-navigation-breadcrumb />
</div> </div>

View File

@ -16,7 +16,7 @@
<div class="row"> <div class="row">
<div class="col"></div> <div class="col"></div>
<div class="col-auto"> <div class="col-auto">
<button mat-raised-button color="primary" class="rounded-button" (click)="formSubmit()"> <button class="normal-btn-sm" (click)="formSubmit()">
{{'NOTIFICATION-SERVICE.USER-PROFILE.NOTIFIER-LIST-EDITOR.ACTIONS.SAVE' | translate}} {{'NOTIFICATION-SERVICE.USER-PROFILE.NOTIFIER-LIST-EDITOR.ACTIONS.SAVE' | translate}}
</button> </button>
</div> </div>