68 lines
3.5 KiB
TypeScript
68 lines
3.5 KiB
TypeScript
import { Injectable } from '@angular/core';
|
|
import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
|
|
import { DescriptionTemplate } from '@app/core/model/description-template/description-template';
|
|
import { Description, DescriptionField, DescriptionReference, DescriptionTag, PropertyDefinition } from '@app/core/model/description/description';
|
|
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.dmpDescriptionTemplate), nameof<DmpDescriptionTemplate>(x => x.id)].join('.'),
|
|
|
|
[nameof<Description>(x => x.descriptionTemplate), nameof<DescriptionTemplate>(x => x.id)].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));
|
|
// }
|
|
}
|
|
}
|