view inactive users on deleted plan/description, fix wording, small ui fixes

This commit is contained in:
mchouliara 2024-08-13 15:55:21 +03:00
parent 3b1c5681e3
commit 52ab438905
10 changed files with 40 additions and 187 deletions

View File

@ -7,14 +7,15 @@
<div class="col-12"> <div class="col-12">
<div class="row"> <div class="row">
<div class="col info"> <div class="col info">
<ng-container *ngIf="!viewOnly else viewOnlyTemplate"> @if(!viewOnly){
<div *ngIf="isNew" class="description-title">{{'DESCRIPTION-EDITOR.TITLE-ADD-DESCRIPTION' | translate}}</div> <div *ngIf="isNew" class="description-title">{{'DESCRIPTION-EDITOR.TITLE-ADD-DESCRIPTION' | translate}}</div>
<div *ngIf="!isNew" class="description-title">{{'DESCRIPTION-EDITOR.TITLE-EDIT-DESCRIPTION' | translate}}</div> <div *ngIf="!isNew" class="description-title">{{'DESCRIPTION-EDITOR.TITLE-EDIT-DESCRIPTION' | translate}}</div>
<div class="description-subtitle">{{ formGroup.get('label').value }} <span *ngIf="isDirty()" class="description-changes">{{'DESCRIPTION-EDITOR.UNSAVED-CHANGES' | translate}}</span></div> <div class="description-subtitle">
</ng-container> {{ formGroup.get('label').value }} <span *ngIf="isDirty()" class="description-changes">{{'DESCRIPTION-EDITOR.UNSAVED-CHANGES' | translate}}</span>
<ng-template #viewOnlyTemplate> </div>
}@else {
<div class="description-title">{{'DESCRIPTION-EDITOR.TITLE-PREVIEW-DESCRIPTION' | translate}}</div> <div class="description-title">{{'DESCRIPTION-EDITOR.TITLE-PREVIEW-DESCRIPTION' | translate}}</div>
</ng-template> }
<div *ngIf="item?.plan?.id" class="d-flex flex-direction-row plan-info"> <div *ngIf="item?.plan?.id" class="d-flex flex-direction-row plan-info">
<div class="col-auto description-to-plan">{{'DESCRIPTION-EDITOR.TO-PLAN' | translate}}</div> <div class="col-auto description-to-plan">{{'DESCRIPTION-EDITOR.TO-PLAN' | translate}}</div>
<div class="plan-title p-0">:&nbsp;{{ item?.plan?.label }}</div> <div class="plan-title p-0">:&nbsp;{{ item?.plan?.label }}</div>

View File

@ -148,7 +148,7 @@ export class DescriptionEditorComponent extends BaseEditor<DescriptionEditorMode
if (copyPlanId && !planId && planSectionId) this.isCopy = true; if (copyPlanId && !planId && planSectionId) this.isCopy = true;
this.viewOnly = isPublicDescription; this.viewOnly = this.viewOnly || isPublicDescription;
//Regular Editor case //Regular Editor case
if (itemId != null && newPlanId == null) { if (itemId != null && newPlanId == null) {

View File

@ -45,18 +45,19 @@
</div> </div>
</div> </div>
<div class="row mb-4 pb-3"> <div class="row mb-4 pb-3">
<div *ngIf="(canEdit || canAnnotate) && isDraftDescription(description) && !isLocked; else previewButton" class="col-auto pr-0"> <div class="col-auto pr-0">
@if(isActive && (canEdit || canAnnotate) && isDraftDescription(description) && !isLocked){
<button (click)="editClicked(description)" mat-mini-fab class="mr-3 actions-btn" matTooltip="{{'DESCRIPTION-OVERVIEW.ACTIONS.EDIT' | translate}}" matTooltipPosition="above"> <button (click)="editClicked(description)" mat-mini-fab class="mr-3 actions-btn" matTooltip="{{'DESCRIPTION-OVERVIEW.ACTIONS.EDIT' | translate}}" matTooltipPosition="above">
<mat-icon class="mat-mini-fab-icon">create</mat-icon> <mat-icon class="mat-mini-fab-icon">create</mat-icon>
</button> </button>
</div> }@else {
<ng-template #previewButton> @if(!isPublicView){
<div *ngIf="!isPublicView" class="col-auto pr-0">
<button (click)="editClicked(description)" mat-mini-fab class="mr-3 actions-btn" matTooltip="{{'DESCRIPTION-OVERVIEW.ACTIONS.PREVIEW' | translate}}" matTooltipPosition="above"> <button (click)="editClicked(description)" mat-mini-fab class="mr-3 actions-btn" matTooltip="{{'DESCRIPTION-OVERVIEW.ACTIONS.PREVIEW' | translate}}" matTooltipPosition="above">
<mat-icon class="mat-mini-fab-icon">visibility</mat-icon> <mat-icon class="mat-mini-fab-icon">visibility</mat-icon>
</button> </button>
}
}
</div> </div>
</ng-template>
<div *ngIf="canCopy" class="col-auto pr-0"> <div *ngIf="canCopy" class="col-auto pr-0">
<button (click)="openCopyToPlanDialog()" mat-mini-fab class="mr-3 actions-btn" matTooltip="{{'DESCRIPTION-OVERVIEW.ACTIONS.CLONE' | translate}}" matTooltipPosition="above"> <button (click)="openCopyToPlanDialog()" mat-mini-fab class="mr-3 actions-btn" matTooltip="{{'DESCRIPTION-OVERVIEW.ACTIONS.CLONE' | translate}}" matTooltipPosition="above">
<mat-icon class="mat-mini-fab-icon">content_copy</mat-icon> <mat-icon class="mat-mini-fab-icon">content_copy</mat-icon>

View File

@ -130,7 +130,7 @@ export class DescriptionOverviewComponent extends BaseComponent implements OnIni
this.breadcrumbService.addIdResolvedValue(data.id.toString(), data.label); this.breadcrumbService.addIdResolvedValue(data.id.toString(), data.label);
this.description = data; this.description = data;
this.description.plan.planUsers = data.plan.planUsers.filter(x => x.isActive === IsActive.Active); this.description.plan.planUsers = this.isActive ? data.plan.planUsers.filter(x => x.isActive === IsActive.Active) : data.plan.planUsers;
this.researchers = this.referenceService.getReferencesForTypes(this.description?.plan?.planReferences, [this.referenceTypeService.getResearcherReferenceType()]); this.researchers = this.referenceService.getReferencesForTypes(this.description?.plan?.planReferences, [this.referenceTypeService.getResearcherReferenceType()]);
this.checkLockStatus(this.description.id); this.checkLockStatus(this.description.id);
this.canDelete = this.isActive && (this.authService.hasPermission(AppPermission.DeleteDescription) || this.canDelete = this.isActive && (this.authService.hasPermission(AppPermission.DeleteDescription) ||

View File

@ -58,18 +58,19 @@
</div> </div>
</div> </div>
<div class="row" *ngIf="!lockStatus || canClonePlan() || (canDeletePlan() && !isLocked)"> <div class="row" *ngIf="!lockStatus || canClonePlan() || (canDeletePlan() && !isLocked)">
<div *ngIf="canEditPlan(plan) && !lockStatus; else previewButton" class="col-auto pr-0"> <div class="col-auto pr-0">
@if(isActive && canEditPlan(plan) && !lockStatus){
<button (click)="editClicked()" mat-mini-fab class="d-flex justify-content-center align-items-center" matTooltip="{{'PLAN-OVERVIEW.ACTIONS.EDIT' | translate}}" matTooltipPosition="above"> <button (click)="editClicked()" mat-mini-fab class="d-flex justify-content-center align-items-center" matTooltip="{{'PLAN-OVERVIEW.ACTIONS.EDIT' | translate}}" matTooltipPosition="above">
<mat-icon class="mat-mini-fab-icon">create</mat-icon> <mat-icon class="mat-mini-fab-icon">create</mat-icon>
</button> </button>
</div> } @else {
<ng-template #previewButton> @if(!isPublicView){
<div *ngIf="!isPublicView" class="col-auto pr-0">
<button (click)="editClicked()" mat-mini-fab class="d-flex justify-content-center align-items-center" matTooltip="{{'PLAN-OVERVIEW.ACTIONS.PREVIEW' | translate}}" matTooltipPosition="above"> <button (click)="editClicked()" mat-mini-fab class="d-flex justify-content-center align-items-center" matTooltip="{{'PLAN-OVERVIEW.ACTIONS.PREVIEW' | translate}}" matTooltipPosition="above">
<mat-icon class="mat-mini-fab-icon">visibility</mat-icon> <mat-icon class="mat-mini-fab-icon">visibility</mat-icon>
</button> </button>
}
}
</div> </div>
</ng-template>
<div *ngIf="canClonePlan()" class="col-auto pr-0"> <div *ngIf="canClonePlan()" class="col-auto pr-0">
<button (click)="cloneClicked()" mat-mini-fab class="d-flex justify-content-center align-items-center" matTooltip="{{'PLAN-OVERVIEW.ACTIONS.CLONE' | translate}}" matTooltipPosition="above"> <button (click)="cloneClicked()" mat-mini-fab class="d-flex justify-content-center align-items-center" matTooltip="{{'PLAN-OVERVIEW.ACTIONS.CLONE' | translate}}" matTooltipPosition="above">
<mat-icon class="mat-mini-fab-icon">content_copy</mat-icon> <mat-icon class="mat-mini-fab-icon">content_copy</mat-icon>

View File

@ -129,7 +129,7 @@ export class PlanOverviewComponent extends BaseComponent implements OnInit {
this.breadcrumbService.addIdResolvedValue(data.id?.toString(), data.label); this.breadcrumbService.addIdResolvedValue(data.id?.toString(), data.label);
this.plan = data; this.plan = data;
this.plan.planUsers = data.planUsers.filter(x => x.isActive === IsActive.Active); this.plan.planUsers = this.isActive ? data?.planUsers?.filter((x) => x.isActive === IsActive.Active) : data?.planUsers;
this.plan.otherPlanVersions = data.otherPlanVersions?.filter(x => x.isActive === IsActive.Active) || null; this.plan.otherPlanVersions = data.otherPlanVersions?.filter(x => x.isActive === IsActive.Active) || null;
if (this.plan.descriptions) { if (this.plan.descriptions) {
if (this.plan.status == PlanStatus.Finalized) { if (this.plan.status == PlanStatus.Finalized) {

View File

@ -6,7 +6,7 @@
<div class="col"> <div class="col">
<div class="row"> <div class="row">
<div class="col-auto info"> <div class="col-auto info">
<div class="title">{{'PLAN-EDITOR.TITLE-EDIT' | translate}}</div> <div class="title">{{(canEdit ? 'PLAN-EDITOR.TITLE-EDIT' : 'PLAN-EDITOR.TITLE-PREVIEW') | translate}}</div>
<div class="subtitle">{{ formGroup.get('label').value }} <span *ngIf="isDirty()" class="changes">({{'PLAN-EDITOR.UNSAVED-CHANGES' | translate}})</span></div> <div class="subtitle">{{ formGroup.get('label').value }} <span *ngIf="isDirty()" class="changes">({{'PLAN-EDITOR.UNSAVED-CHANGES' | translate}})</span></div>
</div> </div>
<div *ngIf="step > 0" class="ml-auto d-flex flex-row"> <div *ngIf="step > 0" class="ml-auto d-flex flex-row">

View File

@ -139,7 +139,7 @@ export class PlanEditorComponent extends BaseEditor<PlanEditorModel, Plan> imple
} }
protected canEditSection(id: Guid): boolean { protected canEditSection(id: Guid): boolean {
return !this.isDeleted && (this.hasPermission(this.authService.permissionEnum.EditDescription) || this.item?.authorizationFlags?.some(x => x === AppPermission.EditDescription) || ( return this.canEdit && (this.hasPermission(this.authService.permissionEnum.EditDescription) || this.item?.authorizationFlags?.some(x => x === AppPermission.EditDescription) || (
this.permissionPerSection && this.permissionPerSection[id.toString()] && this.permissionPerSection[id.toString()].some(x => x === AppPermission.EditDescription) this.permissionPerSection && this.permissionPerSection[id.toString()] && this.permissionPerSection[id.toString()].some(x => x === AppPermission.EditDescription)
)); ));
} }
@ -151,7 +151,7 @@ export class PlanEditorComponent extends BaseEditor<PlanEditorModel, Plan> imple
} }
get canEdit(): boolean { get canEdit(): boolean {
return this.isNew ? this.authService.hasPermission(AppPermission.NewPlan) : this.item.authorizationFlags?.some(x => x === AppPermission.EditPlan) || this.authService.hasPermission(AppPermission.EditPlan); return !this.isDeleted && (this.isNew ? this.authService.hasPermission(AppPermission.NewPlan) : this.item.authorizationFlags?.some(x => x === AppPermission.EditPlan) || this.authService.hasPermission(AppPermission.EditPlan));
} }
protected canAnnotate(id: Guid): boolean { protected canAnnotate(id: Guid): boolean {

View File

@ -1,151 +0,0 @@
{
"production": false,
"Server": "http://localhost:8081/api/",
"App": "http://localhost:4200/",
"HelpService": {
"Enabled": false,
"Url": "localhost:5000/"
},
"defaultCulture": "en",
"defaultBlueprintId": "86635178-36a6-484f-9057-a934e4eeecd5",
"keycloak": {
"enabled": true,
"address": null,
"realm": null,
"flow": "standard",
"clientId": null,
"silentCheckSsoRedirectUri": "http://localhost:4200/assets/silent-check-sso.html",
"scope": "openid profile email address phone dmp_web dmp_notification identity_provider",
"clientSecret": null,
"grantType": "code"
},
"inAppNotificationsCountInterval": "30",
"notification_service": {
"enabled": true,
"address": "http://localhost:8086/api/"
},
"annotation_service": {
"enabled": true,
"address": "http://localhost:8087/api/",
"statusIcons": [
{
"internalStatus": "0",
"icon": "check"
},
{
"id": "948fdf9c-6b84-467c-884b-5323c5ea15d7",
"icon": "done_all"
}
],
"defaultStatusIcon": "animation"
},
"logging": {
"enabled": true,
"logLevels": ["debug", "info", "warning", "error"]
},
"matomo": {
"enabled": true,
"url": "https://beta.analytics.openaire.eu/",
"siteId": 361
},
"analytics": {
"providers": [
{
"enabled": true,
"type": "matomo",
"options": {
"url": "https://beta.analytics.openaire.eu/",
"siteId": 361
}
}
]
},
"lockInterval": 60000,
"guideAssets": "assets/images/guide",
"allowOrganizationCreator": true,
"orcidPath": "https://orcid.org/",
"maxFileSizeInMB": 10,
"authProviders": {
"defaultAuthProvider": {
"name": "Default",
"providerClass": "defaultIcon"
},
"authProviders": [
{
"name": "google",
"providerClass": "googleIcon",
"cultures": ["en"]
},
{
"name": "facebook",
"providerClass": "facebookIcon",
"cultures": ["en"]
}
]
},
"referenceTypes": {
"researcherId": "5a2112e7-ea99-4cfe-98a1-68665e26726e",
"grantId": "5b9c284f-f041-4995-96cc-fad7ad13289c",
"organizationId": "7eeffb98-58fb-4921-82ec-e27f32f8e738"
},
"deposit":{
"recordUrlIdPlaceholder": "{doi_id}"
},
"sidebar": {
"infoItems": [
{
"title": "SIDE-BAR.CO-BRANDING",
"icon": "toll",
"externalUrl": "/splash/resources/co-branding.html",
"accessLevel": "public"
},
{
"title": "SIDE-BAR.SUPPORT",
"icon": "help",
"routerPath": "/contact-support",
"accessLevel": "authenticated"
},
{
"title": "SIDE-BAR.SUPPORT",
"icon": "help",
"externalUrl": "/splash/contact.html",
"accessLevel": "unauthenticated"
},
{
"title": "SIDE-BAR.FEEDBACK",
"icon": "feedback",
"externalUrl": "https://docs.google.com/forms/d/12RSCrUjdSDp2LZLpjDKOi44cN1fLDD2q1-F66SqZIis/viewform?edit_requested=true",
"accessLevel": "public"
}
],
"footerItems": [
{
"routerPath": "/about",
"title": "FOOTER.ABOUT",
"icon": "feedback",
"accessLevel": "public"
},
{
"routerPath": "/terms-and-conditions",
"title": "FOOTER.TERMS-OF-SERVICE",
"accessLevel": "public"
},
{
"routerPath": "/glossary",
"title": "FOOTER.GLOSSARY",
"accessLevel": "public"
},
{
"routerPath": "/user-guide",
"title": "FOOTER.GUIDE",
"accessLevel": "public"
},
{
"routerPath": "/contact-support",
"title": "FOOTER.CONTACT-SUPPORT",
"accessLevel": "authenticated"
}
]
},
"mergeAccountDelayInSeconds": 30
}

View File

@ -1713,6 +1713,7 @@
"PLAN-EDITOR": { "PLAN-EDITOR": {
"TITLE-NEW": "New Plan", "TITLE-NEW": "New Plan",
"TITLE-EDIT": "Editing Plan", "TITLE-EDIT": "Editing Plan",
"TITLE-PREVIEW": "Previewing Plan",
"TITLE": "Plan Template", "TITLE": "Plan Template",
"UNSAVED-CHANGES": "unsaved changes", "UNSAVED-CHANGES": "unsaved changes",
"LOCKED": "Locked", "LOCKED": "Locked",