implement action display status collumn

This commit is contained in:
CITE\amentis 2024-09-23 16:15:21 +03:00
parent 1c60bdf77b
commit fb9fca2277
37 changed files with 147 additions and 7 deletions

View File

@ -29,6 +29,11 @@ public class DescriptionStatusEntity extends TenantScopedBaseEntity {
private String description;
public static final String _description = "description";
@Column(name = "action", length = DescriptionStatusEntity._nameLength, nullable = true)
private String action;
public static final String _action = "action";
public static final int _actionLength = 250;
@Column(name = "created_at", nullable = false)
private Instant createdAt;
public static final String _createdAt = "createdAt";
@ -74,6 +79,14 @@ public class DescriptionStatusEntity extends TenantScopedBaseEntity {
this.createdAt = createdAt;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public Instant getUpdatedAt() {
return this.updatedAt;
}

View File

@ -29,6 +29,11 @@ public class PlanStatusEntity extends TenantScopedBaseEntity {
private String description;
public static final String _description = "description";
@Column(name = "action", length = PlanStatusEntity._actionLength, nullable = true)
private String action;
public static final String _action = "action";
public static final int _actionLength = 250;
@Column(name = "created_at", nullable = false)
private Instant createdAt;
public static final String _createdAt = "createdAt";
@ -67,6 +72,14 @@ public class PlanStatusEntity extends TenantScopedBaseEntity {
public String getDescription() { return this.description; }
public void setDescription(String description) { this.description = description;}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public Instant getCreatedAt() {
return this.createdAt;
}

View File

@ -56,6 +56,7 @@ public class DescriptionStatusBuilder extends BaseBuilder<DescriptionStatus, Des
if (fields.hasField(this.asIndexer(DescriptionStatus._id))) m.setId(d.getId());
if (fields.hasField(this.asIndexer(DescriptionStatus._name))) m.setName(d.getName());
if (fields.hasField(this.asIndexer(DescriptionStatus._description))) m.setDescription(d.getDescription());
if (fields.hasField(this.asIndexer(DescriptionStatus._action))) m.setAction(d.getAction());
if (fields.hasField(this.asIndexer(DescriptionStatus._updatedAt))) m.setUpdateAt(d.getUpdatedAt());
if (fields.hasField(this.asIndexer(DescriptionStatus._createdAt))) m.setCreatedAt(d.getCreatedAt());
if (fields.hasField(this.asIndexer(DescriptionStatus._isActive))) m.setIsActive(d.getIsActive());

View File

@ -68,6 +68,8 @@ public class PlanStatusBuilder extends BaseBuilder<PlanStatus, PlanStatusEntity>
m.setIsActive(d.getIsActive());
if (fields.hasField(this.asIndexer(PlanStatus._description)))
m.setDescription(d.getDescription());
if (fields.hasField(this.asIndexer(PlanStatus._action)))
m.setAction(d.getAction());
if (fields.hasField(this.asIndexer(PlanStatus._internalStatus)))
m.setInternalStatus(d.getInternalStatus());
if (fields.hasField(this.asIndexer(PlanStatus._hash)))

View File

@ -16,6 +16,9 @@ public class DescriptionStatus {
public final static String _description = "description";
private String description;
public static final String _action = "action";
private String action;
public final static String _createdAt = "createdAt";
private Instant createdAt;
@ -46,6 +49,14 @@ public class DescriptionStatus {
public String getDescription() { return this.description; }
public void setDescription(String description) { this.description = description; }
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public Instant getCreatedAt() { return this.createdAt; }
public void setCreatedAt(Instant createdAt) { this.createdAt = createdAt; }

View File

@ -27,6 +27,9 @@ public class DescriptionStatusPersist {
private String description;
public final static String _description = "description";
private String action;
public static final String _action = "action";
private org.opencdmp.commons.enums.DescriptionStatus internalStatus;
public final static String _internalStatus = "internalStatus";
@ -46,6 +49,14 @@ public class DescriptionStatusPersist {
public String getDescription() { return description; }
public void setDescription(String description) { this.description = description; }
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public org.opencdmp.commons.enums.DescriptionStatus getInternalStatus() { return internalStatus; }
public void setInternalStatus(org.opencdmp.commons.enums.DescriptionStatus internalStatus) { this.internalStatus = internalStatus; }
@ -93,6 +104,10 @@ public class DescriptionStatusPersist {
.iff(() -> !this.isEmpty(item.getName()))
.must(() -> this.lessEqualLength(item.getName(), DescriptionStatusEntity._nameLength))
.failOn(DescriptionStatusPersist._name).failWith(this.messageSource.getMessage("Validation_Required", new Object[]{DescriptionStatusPersist._name}, LocaleContextHolder.getLocale())),
this.spec()
.iff(() -> !this.isEmpty(item.getAction()))
.must(() -> this.lessEqualLength(item.getAction(), DescriptionStatusEntity._actionLength))
.failOn(DescriptionStatusPersist._action).failWith(this.messageSource.getMessage("Validation_Required", new Object[]{DescriptionStatusPersist._action}, LocaleContextHolder.getLocale())),
this.spec()
.iff(() -> item.getInternalStatus() == org.opencdmp.commons.enums.DescriptionStatus.Finalized)
.must(() -> !this.isNull(item.getDefinition()))

View File

@ -26,6 +26,9 @@ public class PlanStatusPersist {
private String description;
public static final String _description = "description";
private String action;
public static final String _action = "action";
private org.opencdmp.commons.enums.PlanStatus internalStatus;
public static final String _internalStatus = "internalStatus";
@ -53,6 +56,14 @@ public class PlanStatusPersist {
public void setDescription(String description) { this.description = description; }
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public org.opencdmp.commons.enums.PlanStatus getInternalStatus() { return this.internalStatus; }
public void setInternalStatus(org.opencdmp.commons.enums.PlanStatus internalStatus) { this.internalStatus = internalStatus; }
@ -105,6 +116,10 @@ public class PlanStatusPersist {
.iff(() -> !this.isEmpty(item.getName()))
.must(() -> this.lessEqualLength(item.getName(), PlanStatusEntity._nameLength))
.failOn(org.opencdmp.model.persist.planstatus.PlanStatusPersist._name).failWith(this.messageSource.getMessage("Validation_MaxLength", new Object[]{org.opencdmp.model.persist.planstatus.PlanStatusPersist._name}, LocaleContextHolder.getLocale())),
this.spec()
.iff(() -> !this.isEmpty(item.getAction()))
.must(() -> this.lessEqualLength(item.getAction(), PlanStatusEntity._actionLength))
.failOn(PlanStatusPersist._action).failWith(this.messageSource.getMessage("Validation_MaxLength", new Object[]{org.opencdmp.model.persist.planstatus.PlanStatusPersist._action}, LocaleContextHolder.getLocale())),
this.spec()
.iff(() -> item.getInternalStatus() == org.opencdmp.commons.enums.PlanStatus.Finalized)
.must(() -> !this.isNull(item.getDefinition()))

View File

@ -16,6 +16,9 @@ public class PlanStatus {
public final static String _description = "description";
private String description;
public static final String _action = "action";
private String action;
public final static String _createdAt = "createdAt";
private Instant createdAt;
@ -61,6 +64,14 @@ public class PlanStatus {
public void setDescription(String description) { this.description = description; }
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
public PlanStatusDefinition getDefinition() {
return this.definition;
}

View File

@ -188,6 +188,8 @@ public class DescriptionStatusQuery extends QueryBase<DescriptionStatusEntity> {
return DescriptionStatusEntity._name;
else if (item.match(DescriptionStatus._description))
return DescriptionStatusEntity._description;
else if (item.match(DescriptionStatus._action))
return DescriptionStatusEntity._action;
else if (item.match(DescriptionStatus._createdAt))
return DescriptionStatusEntity._createdAt;
else if (item.match(DescriptionStatus._updatedAt))
@ -210,6 +212,7 @@ public class DescriptionStatusQuery extends QueryBase<DescriptionStatusEntity> {
item.setId(QueryBase.convertSafe(tuple, columns, DescriptionStatusEntity._id, UUID.class));
item.setName(QueryBase.convertSafe(tuple, columns, DescriptionStatusEntity._name, String.class));
item.setDescription(QueryBase.convertSafe(tuple, columns, DescriptionStatusEntity._description, String.class));
item.setAction(QueryBase.convertSafe(tuple, columns, DescriptionStatusEntity._action, String.class));
item.setTenantId(QueryBase.convertSafe(tuple, columns, DescriptionStatusEntity._tenantId, UUID.class));
item.setCreatedAt(QueryBase.convertSafe(tuple, columns, DescriptionStatusEntity._createdAt, Instant.class));
item.setUpdatedAt(QueryBase.convertSafe(tuple, columns, DescriptionStatusEntity._updatedAt, Instant.class));

View File

@ -187,6 +187,8 @@ public class PlanStatusQuery extends QueryBase<PlanStatusEntity> {
return PlanStatusEntity._description;
else if (item.match(PlanStatus._name))
return PlanStatusEntity._name;
else if (item.match(PlanStatus._action))
return PlanStatusEntity._action;
else if (item.match(PlanStatus._internalStatus))
return PlanStatusEntity._internalStatus;
else if (item.prefix(PlanStatus._definition))
@ -211,6 +213,7 @@ public class PlanStatusQuery extends QueryBase<PlanStatusEntity> {
item.setDescription(QueryBase.convertSafe(tuple, columns, PlanStatusEntity._description, String.class));
item.setDefinition(QueryBase.convertSafe(tuple, columns, PlanStatusEntity._definition, String.class));
item.setName(QueryBase.convertSafe(tuple, columns, PlanStatusEntity._name, String.class));
item.setAction(QueryBase.convertSafe(tuple, columns, PlanStatusEntity._action, String.class));
item.setInternalStatus(QueryBase.convertSafe(tuple, columns, PlanStatusEntity._internalStatus, org.opencdmp.commons.enums.PlanStatus.class));
item.setCreatedAt(QueryBase.convertSafe(tuple, columns, PlanStatusEntity._createdAt, Instant.class));
item.setUpdatedAt(QueryBase.convertSafe(tuple, columns, PlanStatusEntity._updatedAt, Instant.class));

View File

@ -100,6 +100,7 @@ public class DescriptionStatusServiceImpl implements DescriptionStatusService {
data.setName(model.getName());
data.setDescription(model.getDescription());
data.setAction(model.getAction());
data.setInternalStatus(model.getInternalStatus());
data.setDefinition(this.xmlHandlingService.toXml(this.buildDescriptionStatusDefinitionEntity(model.getDefinition())));
data.setUpdatedAt(Instant.now());
@ -165,7 +166,7 @@ public class DescriptionStatusServiceImpl implements DescriptionStatusService {
List<DescriptionWorkflowDefinitionTransitionEntity> availableTransitions = definition.getStatusTransitions().stream().filter(x -> x.getFromStatusId().equals(description.getStatusId())).collect(Collectors.toList());
if (!this.conventionService.isListNullOrEmpty(availableTransitions)){
DescriptionStatusQuery query = this.queryFactory.query(DescriptionStatusQuery.class).authorize(AuthorizationFlags.AllExceptPublic).isActive(IsActive.Active).ids(availableTransitions.stream().map(DescriptionWorkflowDefinitionTransitionEntity::getToStatusId).distinct().toList());
FieldSet fieldSet = new BaseFieldSet().ensure(DescriptionStatus._id).ensure(DescriptionStatus._name).ensure(DescriptionStatus._internalStatus);
FieldSet fieldSet = new BaseFieldSet().ensure(DescriptionStatus._id).ensure(DescriptionStatus._name).ensure(DescriptionStatus._action).ensure(DescriptionStatus._internalStatus);
return this.builderFactory.builder(DescriptionStatusBuilder.class).authorize(AuthorizationFlags.AllExceptPublic).build(fieldSet, query.collectAs(fieldSet));
}

View File

@ -31,7 +31,6 @@ import org.opencdmp.errorcode.ErrorThesaurusProperties;
import org.opencdmp.event.EventBroker;
import org.opencdmp.model.builder.planstatus.PlanStatusBuilder;
import org.opencdmp.model.deleter.PlanStatusDeleter;
import org.opencdmp.model.descriptionstatus.DescriptionStatus;
import org.opencdmp.model.persist.planstatus.PlanStatusDefinitionAuthorizationItemPersist;
import org.opencdmp.model.persist.planstatus.PlanStatusDefinitionAuthorizationPersist;
import org.opencdmp.model.persist.planstatus.PlanStatusDefinitionPersist;
@ -104,6 +103,7 @@ public class PlanStatusServiceImpl implements PlanStatusService {
data.setName(model.getName());
data.setDescription(model.getDescription());
data.setAction(model.getAction());
data.setInternalStatus(model.getInternalStatus());
data.setDefinition(this.xmlHandlingService.toXml(this.buildPlanStatusDefinitionEntity(model.getDefinition())));
data.setUpdatedAt(Instant.now());
@ -175,7 +175,7 @@ public class PlanStatusServiceImpl implements PlanStatusService {
List<PlanWorkflowDefinitionTransitionEntity> availableTransitions = definition.getStatusTransitions().stream().filter(x -> x.getFromStatusId().equals(plan.getStatusId())).collect(Collectors.toList());
if (!this.conventionService.isListNullOrEmpty(availableTransitions)){
PlanStatusQuery query = this.queryFactory.query(PlanStatusQuery.class).authorize(AuthorizationFlags.AllExceptPublic).isActives(IsActive.Active).ids(availableTransitions.stream().map(PlanWorkflowDefinitionTransitionEntity::getToStatusId).distinct().toList());
FieldSet fieldSet = new BaseFieldSet().ensure(DescriptionStatus._id).ensure(DescriptionStatus._name).ensure(DescriptionStatus._internalStatus);
FieldSet fieldSet = new BaseFieldSet().ensure(PlanStatus._id).ensure(PlanStatus._name).ensure(PlanStatus._action).ensure(PlanStatus._internalStatus);
return this.builderFactory.builder(PlanStatusBuilder.class).authorize(AuthorizationFlags.AllExceptPublic).build(fieldSet, query.collectAs(fieldSet));
}

View File

@ -5,6 +5,7 @@ import { DescriptionStatusDefinition } from "./description-status";
export interface DescriptionStatusPersist extends BaseEntityPersist {
name: string;
description: string;
action: string;
internalStatus: DescriptionStatusEnum;
definition: DescriptionStatusDefinition;
}

View File

@ -7,6 +7,7 @@ import { BaseEntity } from "@common/base/base-entity.model";
export interface DescriptionStatus extends BaseEntity{
name: string;
description: string;
action: string;
internalStatus: DescriptionStatusEnum;
definition: DescriptionStatusDefinition;
}

View File

@ -5,6 +5,7 @@ import { PlanStatusDefinition } from "./plan-status";
export interface PlanStatusPersist extends BaseEntityPersist {
name: string;
description: string;
action: string;
internalStatus: PlanStatusEnum;
definition: PlanStatusDefinition;
}

View File

@ -7,6 +7,7 @@ import { BaseEntity } from "@common/base/base-entity.model";
export interface PlanStatus extends BaseEntity{
name: string;
description: string;
action: string;
internalStatus: PlanStatusEnum;
definition: PlanStatusDefinition;
}

View File

@ -44,6 +44,14 @@
<mat-error *ngIf="formGroup.controls.internalStatus.hasError('backendError')">{{formGroup.controls.internalStatus.getError('backendError').message}}</mat-error>
</mat-form-field>
</div>
<div class="col-12">
<mat-form-field class="w-100">
<mat-label>{{'DESCRIPTION-STATUS-EDITOR.FIELDS.ACTION' | translate}}</mat-label>
<input matInput type="text" name="action" [formControl]="formGroup.controls.action">
<mat-error *ngIf="formGroup.controls.action.hasError('backendError')">{{formGroup.controls.action.getError('backendError').message}}</mat-error>
<mat-error *ngIf="formGroup.controls.action.hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
</mat-form-field>
</div>
<div class="col-12">
<h3>{{'DESCRIPTION-STATUS-EDITOR.FIELDS.DESCRIPTION' | translate}}</h3>
<div class="col-12">

View File

@ -13,6 +13,7 @@ import { Guid } from "@common/types/guid";
export class DescriptionStatusEditorModel extends BaseEditorModel implements DescriptionStatusPersist {
name: string;
description: string;
action: string;
internalStatus: DescriptionStatusEnum;
definition: DescriptionStatusDefinition;
@ -21,6 +22,7 @@ export class DescriptionStatusEditorModel extends BaseEditorModel implements Des
super.fromModel(item);
this.name = item?.name;
this.description = item?.description;
this.action = item?.action
this.internalStatus = item?.internalStatus;
this.definition = item?.definition;
}
@ -34,6 +36,7 @@ export class DescriptionStatusEditorModel extends BaseEditorModel implements Des
id: [{ value: this.id, disabled }, context.getValidation('id').validators],
name: [{value: this.name, disabled}, context.getValidation('name').validators],
description: [{value: this.description, disabled}, context.getValidation('description').validators],
action: [{value: this.action, disabled}, context.getValidation('action').validators],
internalStatus: [{value: this.internalStatus, disabled}, context.getValidation('internalStatus').validators],
hash: [{ value: this.hash, disabled: disabled }, context.getValidation('hash').validators],
definition: this.buildDefinitionForm({context, disabled}),
@ -70,6 +73,7 @@ export class DescriptionStatusEditorModel extends BaseEditorModel implements Des
baseValidationArray.push({ key: 'id', validators: [BackendErrorValidator(this.validationErrorModel, 'id')] });
baseValidationArray.push({ key: 'name', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'name')] });
baseValidationArray.push({ key: 'description', validators: [BackendErrorValidator(this.validationErrorModel, 'description')] });
baseValidationArray.push({ key: 'action', validators: [BackendErrorValidator(this.validationErrorModel, 'action')] });
baseValidationArray.push({ key: 'internalStatus', validators: [BackendErrorValidator(this.validationErrorModel, 'internalStatus')] });
baseValidationArray.push({ key: 'hash', validators: [] });
baseValidationArray.push({ key: 'definition', validators: [BackendErrorValidator(this.validationErrorModel, 'definition')] });

View File

@ -20,6 +20,7 @@ export class DescriptionStatusEditorResolver extends BaseEditorResolver{
nameof<DescriptionStatus>(x => x.id),
nameof<DescriptionStatus>(x => x.name),
nameof<DescriptionStatus>(x => x.description),
nameof<DescriptionStatus>(x => x.action),
nameof<DescriptionStatus>(x => x.internalStatus),
nameof<DescriptionStatus>(x => x.definition),
[nameof<DescriptionStatus>(x => x.definition), nameof<DescriptionStatusDefinition>(x => x.authorization)].join('.'),

View File

@ -20,6 +20,7 @@ export class PlanStatusEditorResolver extends BaseEditorResolver{
nameof<PlanStatus>(x => x.id),
nameof<PlanStatus>(x => x.name),
nameof<PlanStatus>(x => x.description),
nameof<PlanStatus>(x => x.action),
nameof<PlanStatus>(x => x.internalStatus),
nameof<PlanStatus>(x => x.definition),
[nameof<PlanStatus>(x => x.definition), nameof<PlanStatusDefinition>(x => x.authorization)].join('.'),

View File

@ -44,6 +44,14 @@
<mat-error *ngIf="formGroup.controls.internalStatus.hasError('backendError')">{{formGroup.controls.internalStatus.getError('backendError').message}}</mat-error>
</mat-form-field>
</div>
<div class="col-12">
<mat-form-field class="w-100">
<mat-label>{{'PLAN-STATUS-EDITOR.FIELDS.ACTION' | translate}}</mat-label>
<input matInput type="text" name="action" [formControl]="formGroup.controls.action">
<mat-error *ngIf="formGroup.controls.action.hasError('backendError')">{{formGroup.controls.action.getError('backendError').message}}</mat-error>
<mat-error *ngIf="formGroup.controls.action.hasError('required')">{{'GENERAL.VALIDATION.REQUIRED' | translate}}</mat-error>
</mat-form-field>
</div>
<div class="col-12">
<h3>{{'PLAN-STATUS-EDITOR.FIELDS.DESCRIPTION' | translate}}</h3>
<div class="col-12">

View File

@ -14,6 +14,7 @@ import { Guid } from "@common/types/guid";
export class PlanStatusEditorModel extends BaseEditorModel implements PlanStatusPersist {
name: string;
description: string;
action: string;
internalStatus: PlanStatusEnum;
definition: PlanStatusDefinition;
@ -22,6 +23,7 @@ export class PlanStatusEditorModel extends BaseEditorModel implements PlanStatus
super.fromModel(item);
this.name = item?.name;
this.description = item?.description;
this.action = item?.action;
this.internalStatus = item?.internalStatus;
this.definition = item?.definition;
}
@ -35,6 +37,7 @@ export class PlanStatusEditorModel extends BaseEditorModel implements PlanStatus
id: [{ value: this.id, disabled }, context.getValidation('id').validators],
name: [{value: this.name, disabled}, context.getValidation('name').validators],
description: [{value: this.description, disabled}, context.getValidation('description').validators],
action: [{value: this.action, disabled}, context.getValidation('action').validators],
internalStatus: [{value: this.internalStatus, disabled}, context.getValidation('internalStatus').validators],
hash: [{ value: this.hash, disabled: disabled }, context.getValidation('hash').validators],
definition: this.buildDefinitionForm({context, disabled}),
@ -71,6 +74,7 @@ export class PlanStatusEditorModel extends BaseEditorModel implements PlanStatus
baseValidationArray.push({ key: 'id', validators: [BackendErrorValidator(this.validationErrorModel, 'id')] });
baseValidationArray.push({ key: 'name', validators: [Validators.required, BackendErrorValidator(this.validationErrorModel, 'name')] });
baseValidationArray.push({ key: 'description', validators: [BackendErrorValidator(this.validationErrorModel, 'description')] });
baseValidationArray.push({ key: 'action', validators: [BackendErrorValidator(this.validationErrorModel, 'action')] });
baseValidationArray.push({ key: 'internalStatus', validators: [BackendErrorValidator(this.validationErrorModel, 'internalStatus')] });
baseValidationArray.push({ key: 'hash', validators: [] });
baseValidationArray.push({ key: 'definition', validators: [BackendErrorValidator(this.validationErrorModel, 'definition')] });

View File

@ -68,7 +68,7 @@
<button [disabled]="saving" mat-menu-item (click)="saveAndContinue()" type="button">{{ 'DESCRIPTION-EDITOR.ACTIONS.SAVE-AND-CONTINUE' | translate }}</button>
</mat-menu>
<ng-container *ngIf="availableStatusesTransitions && availableStatusesTransitions.length > 0 && !isLocked && item.id && isNotFinalizedPlan()">
<button *ngFor='let status of availableStatusesTransitions' [disabled]="saving" mat-button class="rounded-btn neutral mr-2" type="button" (click)="persistStatus(status)">{{ status.name }}</button>
<button *ngFor='let status of availableStatusesTransitions' [disabled]="saving" mat-button class="rounded-btn neutral mr-2" type="button" (click)="persistStatus(status)">{{ status.action?.length > 0 ? status.action : status.name }}</button>
</ng-container>
<button [disabled]="saving" *ngIf="isLocked" mat-button disabled class="rounded-btn neutral cursor-default" type="button">{{ 'PLAN-OVERVIEW.LOCKED' | translate}}</button>
</div>

View File

@ -146,7 +146,7 @@
</button>
</div>
<div class="col-auto pl-0">
<p class="mb-0 pl-2 frame-txt">{{ status.name }}</p>
<p class="mb-0 pl-2 frame-txt">{{ status.action?.length > 0 ? status.action : status.name }}</p>
</div>
</div>
<div class="row align-items-center">

View File

@ -193,7 +193,7 @@
</button>
</div>
<div class="col-auto pl-0">
<p class="mb-0 pl-2 frame-txt">{{ status.name }}</p>
<p class="mb-0 pl-2 frame-txt">{{ status.action?.length > 0 ? status.action : status.name }}</p>
</div>
</div>
<div class="row align-items-center">

View File

@ -53,7 +53,7 @@
</mat-menu>
</div>
<div *ngIf="availableStatusesTransitions && availableStatusesTransitions.length > 0 && !isLocked && !isNew && hasNotDoi()" class="col-auto d-flex align-items-center" [matTooltipDisabled]="formGroup.pristine" matTooltip="{{'PLAN-EDITOR.ACTIONS.FINALIZE.CAN-NOT-FINALIZE' | translate}}">
<button *ngFor='let status of availableStatusesTransitions' [disabled]="saving || !formGroup.pristine" mat-button class="rounded-btn primary-inverted mr-2" type="button" (click)="persistStatus(status)">{{ status.name}}</button>
<button *ngFor='let status of availableStatusesTransitions' [disabled]="saving || !formGroup.pristine" mat-button class="rounded-btn primary-inverted mr-2" type="button" (click)="persistStatus(status)">{{ status.action?.length > 0 ? status.action : status.name }}</button>
</div>
<div *ngIf="isLocked" class="col-auto d-flex align-items-center">
<button class="col-auto d-flex align-items-center" [disabled]="saving" mat-button class="rounded-btn primary-inverted mr-2" type="button">{{ 'PLAN-EDITOR.ACTIONS.LOCKED' | translate}}</button>

View File

@ -910,6 +910,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",
@ -953,6 +954,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",

View File

@ -910,6 +910,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",
@ -953,6 +954,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",

View File

@ -908,6 +908,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",
@ -960,6 +961,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",

View File

@ -910,6 +910,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",
@ -953,6 +954,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",

View File

@ -910,6 +910,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",
@ -953,6 +954,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",

View File

@ -910,6 +910,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",
@ -953,6 +954,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",

View File

@ -910,6 +910,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",
@ -953,6 +954,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",

View File

@ -910,6 +910,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",
@ -953,6 +954,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",

View File

@ -910,6 +910,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",
@ -953,6 +954,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",

View File

@ -910,6 +910,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",
@ -953,6 +954,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",

View File

@ -910,6 +910,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",
@ -953,6 +954,7 @@
"FIELDS": {
"NAME": "Name",
"DESCRIPTION": "Description",
"ACTION": "Action",
"DEFINITION": "Definition",
"INTERNAL-STATUS": "Internal Status",
"AUTHORIZATION": "Authorization",