2023-12-20 08:20:38 +01:00
import { Injectable } from '@angular/core' ;
import { ActivatedRouteSnapshot , RouterStateSnapshot } from '@angular/router' ;
import { DescriptionTemplate , DescriptionTemplateBaseFieldData , DescriptionTemplateDefinition , DescriptionTemplateField , DescriptionTemplateFieldSet , DescriptionTemplatePage , DescriptionTemplateRule , DescriptionTemplateSection } from '@app/core/model/description-template/description-template' ;
import { Description , DescriptionField , DescriptionReference , DescriptionTag , PropertyDefinition } from '@app/core/model/description/description' ;
2023-12-28 16:18:49 +01:00
import { DescriptionTemplatesInSection , DmpBlueprint , DmpBlueprintDefinition , DmpBlueprintDefinitionSection } from '@app/core/model/dmp-blueprint/dmp-blueprint' ;
2023-12-20 08:20:38 +01:00
import { Dmp , DmpDescriptionTemplate } from '@app/core/model/dmp/dmp' ;
import { Reference } from '@app/core/model/reference/reference' ;
import { Tag } from '@app/core/model/tag/tag' ;
import { DescriptionService } from '@app/core/services/description/description.service' ;
import { BreadcrumbService } from '@app/ui/misc/breadcrumb/breadcrumb.service' ;
import { BaseEditorResolver } from '@common/base/base-editor.resolver' ;
import { Guid } from '@common/types/guid' ;
import { takeUntil , tap } from 'rxjs/operators' ;
import { nameof } from 'ts-simple-nameof' ;
@Injectable ( )
export class DescriptionEditorResolver extends BaseEditorResolver {
constructor ( private descriptionService : DescriptionService , private breadcrumbService : BreadcrumbService ) {
super ( ) ;
}
public static lookupFields ( ) : string [ ] {
return [
. . . BaseEditorResolver . lookupFields ( ) ,
nameof < Description > ( x = > x . id ) ,
nameof < Description > ( x = > x . label ) ,
nameof < Description > ( x = > x . status ) ,
nameof < Description > ( x = > x . description ) ,
nameof < Description > ( x = > x . status ) ,
[ nameof < Description > ( x = > x . dmp ) , nameof < Dmp > ( x = > x . id ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . dmp ) , nameof < Dmp > ( x = > x . label ) ] . join ( '.' ) ,
2023-12-28 16:18:49 +01:00
[ nameof < Description > ( x = > x . dmp ) , nameof < Dmp > ( x = > x . blueprint ) , nameof < DmpBlueprint > ( x = > x . id ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . dmp ) , nameof < Dmp > ( x = > x . blueprint ) , nameof < DmpBlueprint > ( x = > x . definition ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . dmp ) , nameof < Dmp > ( x = > x . blueprint ) , nameof < DmpBlueprint > ( x = > x . definition ) , nameof < DmpBlueprintDefinition > ( x = > x . sections ) , nameof < DmpBlueprintDefinitionSection > ( x = > x . id ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . dmp ) , nameof < Dmp > ( x = > x . blueprint ) , nameof < DmpBlueprint > ( x = > x . definition ) , nameof < DmpBlueprintDefinition > ( x = > x . sections ) , nameof < DmpBlueprintDefinitionSection > ( x = > x . label ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . dmp ) , nameof < Dmp > ( x = > x . blueprint ) , nameof < DmpBlueprint > ( x = > x . definition ) , nameof < DmpBlueprintDefinition > ( x = > x . sections ) , nameof < DmpBlueprintDefinitionSection > ( x = > x . ordinal ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . dmp ) , nameof < Dmp > ( x = > x . blueprint ) , nameof < DmpBlueprint > ( x = > x . definition ) , nameof < DmpBlueprintDefinition > ( x = > x . sections ) , nameof < DmpBlueprintDefinitionSection > ( x = > x . hasTemplates ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . dmp ) , nameof < Dmp > ( x = > x . blueprint ) , nameof < DmpBlueprint > ( x = > x . definition ) , nameof < DmpBlueprintDefinition > ( x = > x . sections ) , nameof < DmpBlueprintDefinitionSection > ( x = > x . descriptionTemplates ) , nameof < DescriptionTemplatesInSection > ( x = > x . id ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . dmp ) , nameof < Dmp > ( x = > x . blueprint ) , nameof < DmpBlueprint > ( x = > x . definition ) , nameof < DmpBlueprintDefinition > ( x = > x . sections ) , nameof < DmpBlueprintDefinitionSection > ( x = > x . descriptionTemplates ) , nameof < DescriptionTemplatesInSection > ( x = > x . descriptionTemplateId ) ] . join ( '.' ) ,
// [nameof<Description>(x => x.dmp), nameof<Dmp>(x => x.blueprint), nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.descriptionTemplates), nameof<DescriptionTemplatesInSection>(x => x.label)].join('.'),
// [nameof<Description>(x => x.dmp), nameof<Dmp>(x => x.blueprint), nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.descriptionTemplates), nameof<DescriptionTemplatesInSection>(x => x.minMultiplicity)].join('.'),
// [nameof<Description>(x => x.dmp), nameof<Dmp>(x => x.blueprint), nameof<DmpBlueprint>(x => x.definition), nameof<DmpBlueprintDefinition>(x => x.sections), nameof<DmpBlueprintDefinitionSection>(x => x.descriptionTemplates), nameof<DescriptionTemplatesInSection>(x => x.maxMultiplicity)].join('.'),
2023-12-20 08:20:38 +01:00
[ nameof < Description > ( x = > x . dmpDescriptionTemplate ) , nameof < DmpDescriptionTemplate > ( x = > x . id ) ] . join ( '.' ) ,
2023-12-28 16:18:49 +01:00
[ nameof < Description > ( x = > x . dmpDescriptionTemplate ) , nameof < DmpDescriptionTemplate > ( x = > x . sectionId ) ] . join ( '.' ) ,
2023-12-20 08:20:38 +01:00
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . id ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . pages ) , nameof < DescriptionTemplatePage > ( x = > x . id ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . pages ) , nameof < DescriptionTemplatePage > ( x = > x . ordinal ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . pages ) , nameof < DescriptionTemplatePage > ( x = > x . title ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . id ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . ordinal ) ] . join ( '.' ) ,
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.defaultVisibility)].join('.'),
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.multiplicity)].join('.'),
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.numbering)].join('.'),
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . page ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . title ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . description ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . extendedDescription ) ] . join ( '.' ) ,
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.ordinal)].join('.'), // TODO: need to sort based on that
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.sections)].join('.'), // TODO: it is recursive here
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . fieldSets ) , nameof < DescriptionTemplateFieldSet > ( x = > x . id ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . fieldSets ) , nameof < DescriptionTemplateFieldSet > ( x = > x . ordinal ) ] . join ( '.' ) ,
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.fieldSets), nameof<DescriptionTemplateFieldSet>(x => x.numbering)].join('.'),
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . fieldSets ) , nameof < DescriptionTemplateFieldSet > ( x = > x . title ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . fieldSets ) , nameof < DescriptionTemplateFieldSet > ( x = > x . description ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . fieldSets ) , nameof < DescriptionTemplateFieldSet > ( x = > x . extendedDescription ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . fieldSets ) , nameof < DescriptionTemplateFieldSet > ( x = > x . additionalInformation ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . fieldSets ) , nameof < DescriptionTemplateFieldSet > ( x = > x . hasCommentField ) ] . join ( '.' ) ,
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.fieldSets), nameof<DescriptionTemplateFieldSet>(x => x.multiplicity), nameof<DescriptionTemplateMultiplicity>(x => x.min)].join('.'),
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.fieldSets), nameof<DescriptionTemplateFieldSet>(x => x.multiplicity), nameof<DescriptionTemplateMultiplicity>(x => x.max)].join('.'),
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.fieldSets), nameof<DescriptionTemplateFieldSet>(x => x.multiplicity), nameof<DescriptionTemplateMultiplicity>(x => x.placeholder)].join('.'),
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.fieldSets), nameof<DescriptionTemplateFieldSet>(x => x.multiplicity), nameof<DescriptionTemplateMultiplicity>(x => x.tableView)].join('.'),
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . fieldSets ) , nameof < DescriptionTemplateFieldSet > ( x = > x . fields ) , nameof < DescriptionTemplateField > ( x = > x . id ) ] . join ( '.' ) ,
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.fieldSets), nameof<DescriptionTemplateFieldSet>(x => x.fields), nameof<DescriptionTemplateField>(x => x.ordinal)].join('.'),
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.fieldSets), nameof<DescriptionTemplateFieldSet>(x => x.fields), nameof<DescriptionTemplateField>(x => x.numbering)].join('.'),
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.fieldSets), nameof<DescriptionTemplateFieldSet>(x => x.fields), nameof<DescriptionTemplateField>(x => x.schematics)].join('.'),
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.fieldSets), nameof<DescriptionTemplateFieldSet>(x => x.fields), nameof<DescriptionTemplateField>(x => x.defaultValue)].join('.'),
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . fieldSets ) , nameof < DescriptionTemplateFieldSet > ( x = > x . fields ) , nameof < DescriptionTemplateField > ( x = > x . defaultValue ) ] . join ( '.' ) ,
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.fieldSets), nameof<DescriptionTemplateFieldSet>(x => x.fields), nameof<DescriptionTemplateField>(x => x.fieldType)].join('.'),
// [nameof<DescriptionTemplate>(x => x.definition), nameof<DescriptionTemplateDefinition>(x => x.sections), nameof<DescriptionTemplateSection>(x => x.fieldSets), nameof<DescriptionTemplateFieldSet>(x => x.fields), nameof<DescriptionTemplateField>(x => x.includeInExport)].join('.'),
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . fieldSets ) , nameof < DescriptionTemplateFieldSet > ( x = > x . fields ) , nameof < DescriptionTemplateField > ( x = > x . validations ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . fieldSets ) , nameof < DescriptionTemplateFieldSet > ( x = > x . fields ) , nameof < DescriptionTemplateField > ( x = > x . visibilityRules ) , nameof < DescriptionTemplateRule > ( x = > x . target ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . fieldSets ) , nameof < DescriptionTemplateFieldSet > ( x = > x . fields ) , nameof < DescriptionTemplateField > ( x = > x . visibilityRules ) , nameof < DescriptionTemplateRule > ( x = > x . value ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . fieldSets ) , nameof < DescriptionTemplateFieldSet > ( x = > x . fields ) , nameof < DescriptionTemplateField > ( x = > x . data ) , nameof < DescriptionTemplateBaseFieldData > ( x = > x . label ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTemplate ) , nameof < DescriptionTemplate > ( x = > x . definition ) , nameof < DescriptionTemplateDefinition > ( x = > x . sections ) , nameof < DescriptionTemplateSection > ( x = > x . fieldSets ) , nameof < DescriptionTemplateFieldSet > ( x = > x . fields ) , nameof < DescriptionTemplateField > ( x = > x . data ) , nameof < DescriptionTemplateBaseFieldData > ( x = > x . fieldType ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . properties ) , nameof < PropertyDefinition > ( x = > x . fields ) , nameof < DescriptionField > ( x = > x . key ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . properties ) , nameof < PropertyDefinition > ( x = > x . fields ) , nameof < DescriptionField > ( x = > x . value ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTags ) , nameof < DescriptionTag > ( x = > x . id ) , ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionTags ) , nameof < DescriptionTag > ( x = > x . tag ) , nameof < Tag > ( x = > x . label ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionReferences ) , nameof < DescriptionReference > ( x = > x . reference ) , nameof < Reference > ( x = > x . id ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionReferences ) , nameof < DescriptionReference > ( x = > x . reference ) , nameof < Reference > ( x = > x . label ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionReferences ) , nameof < DescriptionReference > ( x = > x . reference ) , nameof < Reference > ( x = > x . type ) ] . join ( '.' ) ,
[ nameof < Description > ( x = > x . descriptionReferences ) , nameof < DescriptionReference > ( x = > x . reference ) , nameof < Reference > ( x = > x . reference ) ] . join ( '.' ) ,
nameof < Description > ( x = > x . createdAt ) ,
nameof < Description > ( x = > x . hash ) ,
nameof < Description > ( x = > x . isActive )
]
}
resolve ( route : ActivatedRouteSnapshot , state : RouterStateSnapshot ) {
const fields = [
. . . DescriptionEditorResolver . lookupFields ( )
] ;
const id = route . paramMap . get ( 'id' ) ;
// const cloneid = route.paramMap.get('cloneid');
if ( id != null ) {
return this . descriptionService . getSingle ( Guid . parse ( id ) , fields ) . pipe ( tap ( x = > this . breadcrumbService . addIdResolvedValue ( x . id ? . toString ( ) , x . label ) ) , takeUntil ( this . _destroyed ) ) ;
}
//TODO: check this
// else if (cloneid != null) {
// return this.descriptionService.clone(Guid.parse(cloneid), fields).pipe(tap(x => this.breadcrumbService.addIdResolvedValue(x.id?.toString(), x.label)), takeUntil(this._destroyed));
// }
}
}