1.fixed preview tab on finalize

2.fixed preview-tab field reference-type on description template editor
This commit is contained in:
Sofia Papacharalampous 2024-06-17 14:19:37 +03:00
parent cb0d95fc3c
commit e27babebfd
7 changed files with 27 additions and 14 deletions

View File

@ -57,7 +57,7 @@ export class DescriptionTemplateEditorCompositeFieldComponent extends BaseCompon
previewFieldSet: DescriptionTemplateFieldSet = null;
previewPropertiesFormGroup: UntypedFormGroup = null;
descriptionTemplateFieldTypeEnum = DescriptionTemplateFieldType;
private availableReferenceTypes: ReferenceType[] = [];
@Input() availableReferenceTypes: ReferenceType[] = [];
constructor(
private dialog: MatDialog,
@ -87,9 +87,6 @@ export class DescriptionTemplateEditorCompositeFieldComponent extends BaseCompon
this.showExtendedDescription = !!this.form.get('extendedDescription').value;
this.showAdditionalInfo = !!this.form.get('additionalInformation').value;
// TODO: check network
this.referenceTypeService.query(ReferenceTypeService.DefaultReferenceTypeLookup()).subscribe(referenceTypes => this.availableReferenceTypes = referenceTypes.items as ReferenceType[]);
this.form.valueChanges.pipe(takeUntil(this._destroyed)).subscribe(changes => {
this.previewDirty = true;
this.generatePreviewForm();

View File

@ -4,6 +4,7 @@ import { DescriptionTemplateFieldType } from '@app/core/common/enum/description-
import { DescriptionTemplate, DescriptionTemplateBaseFieldData, DescriptionTemplateDefinition, DescriptionTemplateField, DescriptionTemplateFieldSet, DescriptionTemplateMultiplicity, DescriptionTemplatePage, DescriptionTemplateReferenceTypeData, DescriptionTemplateRule, DescriptionTemplateSection } from '@app/core/model/description-template/description-template';
import { DescriptionTemplateBaseFieldDataPersist, DescriptionTemplateDefinitionPersist, DescriptionTemplateFieldPersist, DescriptionTemplateFieldSetPersist, DescriptionTemplateMultiplicityPersist, DescriptionTemplatePagePersist, DescriptionTemplatePersist, DescriptionTemplateReferenceTypeFieldPersist, DescriptionTemplateRulePersist, DescriptionTemplateSectionPersist } from '@app/core/model/description-template/description-template-persist';
import { Description } from '@app/core/model/description/description';
import { ReferenceType } from '@app/core/model/reference-type/reference-type';
import { DescriptionEditorModel } from '@app/ui/description/editor/description-editor.model';
import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service';
@ -19,6 +20,8 @@ export class FinalPreviewComponent implements OnInit {
@Input() descriptionTemplatePersist: DescriptionTemplatePersist;
@Input() availableReferenceTypes: ReferenceType[] = [];
descriptionTemplate: DescriptionTemplate;
previewPropertiesFormGroup: UntypedFormGroup;
@ -132,8 +135,10 @@ export class FinalPreviewComponent implements OnInit {
if (persist.data.fieldType === DescriptionTemplateFieldType.REFERENCE_TYPES) {
convertedField.data = persist.data;
let selectedReferenceType = this.availableReferenceTypes.find(referenceType => referenceType.id == (persist.data as DescriptionTemplateReferenceTypeFieldPersist).referenceTypeId);
(convertedField.data as DescriptionTemplateReferenceTypeData).referenceType = {
id: (persist.data as DescriptionTemplateReferenceTypeFieldPersist).referenceTypeId
id: (persist.data as DescriptionTemplateReferenceTypeFieldPersist).referenceTypeId,
name: selectedReferenceType?.name,
};
} else {
convertedField.data = persist.data;

View File

@ -64,6 +64,7 @@
</button>
</mat-card-header>
<app-description-template-editor-composite-field-component [reorderingMode]="reorderingMode" [form]="fieldset"
[availableReferenceTypes]="availableReferenceTypes"
[viewOnly]="viewOnly" [numbering]="numbering + '.'+ (i+1)"
[hasFocus]="fieldset.get('id').value === selectedFieldSetId"
[datasetProfileId]="datasetProfileId"

View File

@ -9,6 +9,7 @@ import { GENERAL_ANIMATIONS } from '../../animations/animations';
import { DescriptionTemplateFieldEditorModel, DescriptionTemplateFieldSetEditorModel } from '../../description-template-editor.model';
import { ToCEntry, ToCEntryType } from '../../table-of-contents/description-template-table-of-contents-entry';
import { ValidationErrorModel } from '@common/forms/validation/error-model/validation-error-model';
import { ReferenceType } from '@app/core/model/reference-type/reference-type';
@Component({
selector: 'app-description-template-editor-section-fieldset-component',
@ -31,6 +32,7 @@ export class DescriptionTemplateEditorSectionFieldSetComponent implements OnInit
@Input() validationErrorModel: ValidationErrorModel;
@Input() validationRootPath: string;
@Input() availableReferenceTypes: ReferenceType[] = [];
idprefix = "id";
reorderingMode = false;

View File

@ -40,7 +40,7 @@
</div>
</div>
<mat-horizontal-stepper [linear]="true" #stepper class="stepper" (selectionChange)="onMatStepperSelectionChange($event)" style="padding-left: 8px; padding-right: 15px;">
<mat-horizontal-stepper [linear]="!isFinalized" #stepper class="stepper" (selectionChange)="onMatStepperSelectionChange($event)" style="padding-left: 8px; padding-right: 15px;">
<!-- IMPORTANT TO BE !INVALID (WHEN THE TEMPLATE IS FINALIZED THE CONTORLS ARE DISABLED) -->
<!-- <ng-template matStepLabel>{{'DESCRIPTION-TEMPLATE-EDITOR.STEPS.GENERAL-INFO.TITLE' | translate}}
@ -224,6 +224,7 @@
[datasetProfileId]="datasetProfileId"
[validationErrorModel]="editorModel.validationErrorModel"
[validationRootPath]="selectedTocEntry.validationRootPath"
[availableReferenceTypes]="availableReferenceTypes"
(addNewFieldSet)="addNewEntry({childType: tocEntryEnumValues.FieldSet,parent: {formGroup: $event}})" (removeFieldSet)="onRemoveEntry(_findTocEntryById($event, toCEntries))" (cloneFieldSet)="cloneFieldSet($event, selectedTocEntry.validationRootPath)" (selectedEntryId)="displayItem(_findTocEntryById($event, toCEntries))" (dataNeedsRefresh)="onDataNeedsRefresh()"
>
@ -254,7 +255,6 @@
</div>
</div>
</div>
</div>
</div>
</div>
@ -265,7 +265,7 @@
<div class="col-9">
<div class="col">
<div class="col-12">
<app-final-preview-component [descriptionTemplatePersist]="finalPreviewDescriptionTemplatePersist">
<app-final-preview-component [descriptionTemplatePersist]="finalPreviewDescriptionTemplatePersist" [availableReferenceTypes]="availableReferenceTypes">
</app-final-preview-component>
</div>

View File

@ -45,6 +45,8 @@ import { DescriptionTemplateEditorService } from './description-template-editor.
import { NewEntryType, ToCEntry, ToCEntryType } from './table-of-contents/description-template-table-of-contents-entry';
import { RouterUtilsService } from '@app/core/services/router/router-utils.service';
import { DescriptionFormService } from '@app/ui/description/editor/description-form/components/services/description-form.service';
import { ReferenceType } from '@app/core/model/reference-type/reference-type';
import { ReferenceTypeService } from '@app/core/services/reference-type/reference-type.service';
@Component({
@ -60,6 +62,7 @@ export class DescriptionTemplateEditorComponent extends BaseEditor<DescriptionTe
isNew = true;
isDeleted = false;
isFinalized = false;
formGroup: UntypedFormGroup = null;
item: DescriptionTemplate;
showInactiveDetails = false;
@ -85,7 +88,7 @@ export class DescriptionTemplateEditorComponent extends BaseEditor<DescriptionTe
previewFieldSet: DescriptionTemplate = null;
previewPropertiesFormGroup: UntypedFormGroup = null;
finalPreviewDescriptionTemplatePersist: DescriptionTemplatePersist;
availableReferenceTypes: ReferenceType[] = [];
get generalInfoStepperLabel(): string {
return '1 ' + this.language.instant('DESCRIPTION-TEMPLATE-EDITOR.STEPS.GENERAL-INFO.TITLE');
@ -96,7 +99,8 @@ export class DescriptionTemplateEditorComponent extends BaseEditor<DescriptionTe
}
get previewLabel(): string {
return '3 ' + this.language.instant('DESCRIPTION-TEMPLATE-EDITOR.ACTIONS.PREVIEW-AND-FINALIZE');
const label = this.isFinalized ? this.language.instant('DESCRIPTION-TEMPLATE-EDITOR.ACTIONS.PREVIEW') : this.language.instant('DESCRIPTION-TEMPLATE-EDITOR.ACTIONS.PREVIEW-AND-FINALIZE');
return '3 ' + label;
}
protected get canDelete(): boolean {
@ -111,7 +115,6 @@ export class DescriptionTemplateEditorComponent extends BaseEditor<DescriptionTe
return !this.isDeleted && this.hasPermission(this.authService.permissionEnum.EditDescriptionTemplate);
}
private hasPermission(permission: AppPermission): boolean {
return this.authService.hasPermission(permission) || this.editorModel?.permissions?.includes(permission);
}
@ -141,7 +144,8 @@ export class DescriptionTemplateEditorComponent extends BaseEditor<DescriptionTe
public userService: UserService,
public titleService: Title,
private analyticsService: AnalyticsService,
private routerUtils: RouterUtilsService
private routerUtils: RouterUtilsService,
private referenceTypeService: ReferenceTypeService,
) {
const descriptionLabel: string = route.snapshot.data['entity']?.label;
if (descriptionLabel) {
@ -157,7 +161,7 @@ export class DescriptionTemplateEditorComponent extends BaseEditor<DescriptionTe
super.ngOnInit();
this.singleAutocompleteDescriptionTemplateTypeConfiguration = this.descriptionTemplateTypeService.getSingleAutocompleteConfiguration([DescriptionTemplateTypeStatus.Finalized]);
this.initModelFlags(this.route.snapshot.data['action']);
}
this.referenceTypeService.query(ReferenceTypeService.DefaultReferenceTypeLookup()).subscribe(referenceTypes => this.availableReferenceTypes = referenceTypes.items as ReferenceType[]); }
private initModelFlags(action: string): void {
if (action == 'clone') {
@ -209,7 +213,8 @@ export class DescriptionTemplateEditorComponent extends BaseEditor<DescriptionTe
buildForm() {
this.formGroup = this.editorModel.buildForm(null, this.isDeleted || !this.authService.hasPermission(AppPermission.EditDescriptionTemplate));
this.descriptionTemplateEditorService.setValidationErrorModel(this.editorModel.validationErrorModel);
if (this.editorModel.status == DescriptionTemplateStatus.Finalized || this.isDeleted) {
this.isFinalized = this.editorModel.status == DescriptionTemplateStatus.Finalized;
if (this.isFinalized || this.isDeleted) {
this.formGroup.disable();
}
const action = this.route.snapshot.data['action'];
@ -397,6 +402,8 @@ export class DescriptionTemplateEditorComponent extends BaseEditor<DescriptionTe
}
isStepUnlocked(stepIndex: number): boolean {
if (this.isFinalized) return true;
if (stepIndex === 0) return true;
if (stepIndex < 0) return false;
//if previous step is valid then unlock

View File

@ -627,6 +627,7 @@
"UPDATE-AND-CONTINUE": "Update & Continue",
"UPDATE-AND-CLOSE": "Update & Close",
"PREVIEW-AND-FINALIZE": "Preview & Finalize",
"PREVIEW": "Preview",
"BACK-TO-TOP": "Back to top",
"CLOSE": "Close",
"PREVIOUS": "Previous",