fixed change detection bug on description-editor with prefill
This commit is contained in:
parent
1ae6d6a20a
commit
6659efd1e1
|
@ -1,5 +1,5 @@
|
||||||
import { DatePipe } from '@angular/common';
|
import { DatePipe } from '@angular/common';
|
||||||
import { Component, OnInit, ViewChild } from '@angular/core';
|
import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';
|
||||||
import { AbstractControl, UntypedFormArray, UntypedFormGroup } from '@angular/forms';
|
import { AbstractControl, UntypedFormArray, UntypedFormGroup } from '@angular/forms';
|
||||||
import { MatDialog } from '@angular/material/dialog';
|
import { MatDialog } from '@angular/material/dialog';
|
||||||
import { Title } from '@angular/platform-browser';
|
import { Title } from '@angular/platform-browser';
|
||||||
|
@ -18,18 +18,18 @@ import { AuthService } from '@app/core/services/auth/auth.service';
|
||||||
import { ConfigurationService } from '@app/core/services/configuration/configuration.service';
|
import { ConfigurationService } from '@app/core/services/configuration/configuration.service';
|
||||||
import { DescriptionTemplateService } from '@app/core/services/description-template/description-template.service';
|
import { DescriptionTemplateService } from '@app/core/services/description-template/description-template.service';
|
||||||
import { DescriptionService } from '@app/core/services/description/description.service';
|
import { DescriptionService } from '@app/core/services/description/description.service';
|
||||||
import { DmpService } from '@app/core/services/dmp/dmp.service';
|
|
||||||
import { FileTransformerService } from '@app/core/services/file-transformer/file-transformer.service';
|
import { FileTransformerService } from '@app/core/services/file-transformer/file-transformer.service';
|
||||||
import { LockService } from '@app/core/services/lock/lock.service';
|
import { LockService } from '@app/core/services/lock/lock.service';
|
||||||
import { LoggingService } from '@app/core/services/logging/logging-service';
|
import { LoggingService } from '@app/core/services/logging/logging-service';
|
||||||
|
import { AnalyticsService } from '@app/core/services/matomo/analytics-service';
|
||||||
import {
|
import {
|
||||||
SnackBarNotificationLevel,
|
SnackBarNotificationLevel,
|
||||||
UiNotificationService
|
UiNotificationService
|
||||||
} from '@app/core/services/notification/ui-notification-service';
|
} from '@app/core/services/notification/ui-notification-service';
|
||||||
import { EnumUtils } from '@app/core/services/utilities/enum-utils.service';
|
import { EnumUtils } from '@app/core/services/utilities/enum-utils.service';
|
||||||
import { FileUtils } from '@app/core/services/utilities/file-utils.service';
|
|
||||||
import { QueryParamsService } from '@app/core/services/utilities/query-params.service';
|
import { QueryParamsService } from '@app/core/services/utilities/query-params.service';
|
||||||
import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service';
|
import { VisibilityRulesService } from '@app/ui/description/editor/description-form/visibility-rules/visibility-rules.service';
|
||||||
|
import { BreadcrumbService } from '@app/ui/misc/breadcrumb/breadcrumb.service';
|
||||||
import { BaseEditor } from '@common/base/base-editor';
|
import { BaseEditor } from '@common/base/base-editor';
|
||||||
import { FormService } from '@common/forms/form-service';
|
import { FormService } from '@common/forms/form-service';
|
||||||
import { FormValidationErrorsDialogComponent } from '@common/forms/form-validation-errors-dialog/form-validation-errors-dialog.component';
|
import { FormValidationErrorsDialogComponent } from '@common/forms/form-validation-errors-dialog/form-validation-errors-dialog.component';
|
||||||
|
@ -48,8 +48,6 @@ import { ToCEntry } from './table-of-contents/models/toc-entry';
|
||||||
import { ToCEntryType } from './table-of-contents/models/toc-entry-type.enum';
|
import { ToCEntryType } from './table-of-contents/models/toc-entry-type.enum';
|
||||||
import { TableOfContentsValidationService } from './table-of-contents/services/table-of-contents-validation-service';
|
import { TableOfContentsValidationService } from './table-of-contents/services/table-of-contents-validation-service';
|
||||||
import { TableOfContentsComponent } from './table-of-contents/table-of-contents.component';
|
import { TableOfContentsComponent } from './table-of-contents/table-of-contents.component';
|
||||||
import { AnalyticsService } from '@app/core/services/matomo/analytics-service';
|
|
||||||
import { BreadcrumbService } from '@app/ui/misc/breadcrumb/breadcrumb.service';
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-description-editor-component',
|
selector: 'app-description-editor-component',
|
||||||
|
@ -98,14 +96,13 @@ export class DescriptionEditorComponent extends BaseEditor<DescriptionEditorMode
|
||||||
private logger: LoggingService,
|
private logger: LoggingService,
|
||||||
private descriptionEditorService: DescriptionEditorService,
|
private descriptionEditorService: DescriptionEditorService,
|
||||||
private descriptionTemplateService: DescriptionTemplateService,
|
private descriptionTemplateService: DescriptionTemplateService,
|
||||||
private fileUtils: FileUtils,
|
|
||||||
private dmpService: DmpService,
|
|
||||||
public visibilityRulesService: VisibilityRulesService,
|
public visibilityRulesService: VisibilityRulesService,
|
||||||
public fileTransformerService: FileTransformerService,
|
public fileTransformerService: FileTransformerService,
|
||||||
public tocValidationService: TableOfContentsValidationService,
|
public tocValidationService: TableOfContentsValidationService,
|
||||||
public titleService: Title,
|
public titleService: Title,
|
||||||
private analyticsService: AnalyticsService,
|
private analyticsService: AnalyticsService,
|
||||||
private breadcrumbService: BreadcrumbService
|
private breadcrumbService: BreadcrumbService,
|
||||||
|
private changeDetectorRef: ChangeDetectorRef
|
||||||
) {
|
) {
|
||||||
const descriptionLabel: string = route.snapshot.data['entity']?.label;
|
const descriptionLabel: string = route.snapshot.data['entity']?.label;
|
||||||
if (descriptionLabel) {
|
if (descriptionLabel) {
|
||||||
|
@ -141,7 +138,8 @@ export class DescriptionEditorComponent extends BaseEditor<DescriptionEditorMode
|
||||||
if (itemId != null && newDmpId == null) {
|
if (itemId != null && newDmpId == null) {
|
||||||
this.checkLock(this.item.id, LockTargetType.Description, 'DESCRIPTION-EDITOR.LOCKED-DIALOG.TITLE', 'DESCRIPTION-EDITOR.LOCKED-DIALOG.MESSAGE');
|
this.checkLock(this.item.id, LockTargetType.Description, 'DESCRIPTION-EDITOR.LOCKED-DIALOG.TITLE', 'DESCRIPTION-EDITOR.LOCKED-DIALOG.MESSAGE');
|
||||||
|
|
||||||
} else if (dmpId != null && dmpSectionId != null) {
|
}
|
||||||
|
else if (dmpId != null && dmpSectionId != null) {
|
||||||
this.isNew = true;
|
this.isNew = true;
|
||||||
const dialogRef = this.dialog.open(PrefillDescriptionDialogComponent, {
|
const dialogRef = this.dialog.open(PrefillDescriptionDialogComponent, {
|
||||||
width: '590px',
|
width: '590px',
|
||||||
|
@ -155,14 +153,16 @@ export class DescriptionEditorComponent extends BaseEditor<DescriptionEditorMode
|
||||||
});
|
});
|
||||||
dialogRef.afterClosed().subscribe((result: Description) => {
|
dialogRef.afterClosed().subscribe((result: Description) => {
|
||||||
if (result) {
|
if (result) {
|
||||||
this.breadcrumbService.addIdResolvedValue(`${result.dmp.id}/${result.id}`, "this is new");
|
|
||||||
this.titleService.setTitle(result.label);
|
this.titleService.setTitle(result.label);
|
||||||
|
|
||||||
result.dmp = this.item.dmp;
|
result.dmp = this.item.dmp;
|
||||||
result.dmpDescriptionTemplate = this.item.dmpDescriptionTemplate;
|
result.dmpDescriptionTemplate = this.item.dmpDescriptionTemplate;
|
||||||
|
|
||||||
const sectionId = this.item.dmpDescriptionTemplate.sectionId;
|
const sectionId = this.item.dmpDescriptionTemplate.sectionId;
|
||||||
result.dmpDescriptionTemplate = this.item.dmp.dmpDescriptionTemplates.find(x => x.sectionId == sectionId && x.descriptionTemplateGroupId == result.descriptionTemplate.groupId);
|
result.dmpDescriptionTemplate = this.item.dmp.dmpDescriptionTemplates.find(x => x.sectionId == sectionId && x.descriptionTemplateGroupId == result.descriptionTemplate.groupId);
|
||||||
|
|
||||||
this.prepareForm(result);
|
this.prepareForm(result);
|
||||||
|
this.changeDetectorRef.markForCheck();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue