@yuuvis/client-framework 2.3.5 → 2.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/yuuvis-client-framework-object-details.mjs +13 -57
- package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-form.mjs +7 -0
- package/fesm2022/yuuvis-client-framework-object-form.mjs.map +1 -1
- package/object-details/lib/object-metadata/object-metadata-section/object-metadata-section.component.d.ts +1 -0
- package/object-details/lib/object-metadata/object-metadata.component.d.ts +1 -0
- package/package.json +4 -4
|
@@ -351,33 +351,10 @@ class ObjectMetadataSectionComponent {
|
|
|
351
351
|
this.#system = inject(SystemService);
|
|
352
352
|
this.objectForms = viewChildren(ObjectFormComponent);
|
|
353
353
|
this._formOptions = signal(undefined);
|
|
354
|
-
// busy = signal<boolean>(false);
|
|
355
354
|
this.section = input.required();
|
|
356
355
|
this.expandedInput = input(false, { alias: 'expanded' });
|
|
357
356
|
this.elementExtensions = input([]);
|
|
358
357
|
this.expanded = linkedSignal(this.expandedInput);
|
|
359
|
-
// #objectFormLoadEffect = effect(() => {
|
|
360
|
-
// const section = this.section();
|
|
361
|
-
// const expanded = this.expanded();
|
|
362
|
-
// if (expanded && section && !this._formOptions()) {
|
|
363
|
-
// untracked(() => {
|
|
364
|
-
// this.busy.set(true);
|
|
365
|
-
// this.#system.getObjectTypeForm(section.id, section.situation || Situation.EDIT).subscribe({
|
|
366
|
-
// next: (formModel) => {
|
|
367
|
-
// this._formOptions.set({
|
|
368
|
-
// formModel,
|
|
369
|
-
// data: section.data || {}
|
|
370
|
-
// });
|
|
371
|
-
// this.busy.set(false);
|
|
372
|
-
// },
|
|
373
|
-
// error: () => {
|
|
374
|
-
// this._formOptions.set(undefined);
|
|
375
|
-
// this.busy.set(false);
|
|
376
|
-
// }
|
|
377
|
-
// });
|
|
378
|
-
// });
|
|
379
|
-
// }
|
|
380
|
-
// });
|
|
381
358
|
this.#formOptionsResource = rxResource({
|
|
382
359
|
request: () => ({ section: this.section(), extended: this.expanded() }),
|
|
383
360
|
loader: ({ request }) => {
|
|
@@ -394,32 +371,13 @@ class ObjectMetadataSectionComponent {
|
|
|
394
371
|
this.statusChanged = output();
|
|
395
372
|
}
|
|
396
373
|
#system;
|
|
397
|
-
// #objectFormLoadEffect = effect(() => {
|
|
398
|
-
// const section = this.section();
|
|
399
|
-
// const expanded = this.expanded();
|
|
400
|
-
// if (expanded && section && !this._formOptions()) {
|
|
401
|
-
// untracked(() => {
|
|
402
|
-
// this.busy.set(true);
|
|
403
|
-
// this.#system.getObjectTypeForm(section.id, section.situation || Situation.EDIT).subscribe({
|
|
404
|
-
// next: (formModel) => {
|
|
405
|
-
// this._formOptions.set({
|
|
406
|
-
// formModel,
|
|
407
|
-
// data: section.data || {}
|
|
408
|
-
// });
|
|
409
|
-
// this.busy.set(false);
|
|
410
|
-
// },
|
|
411
|
-
// error: () => {
|
|
412
|
-
// this._formOptions.set(undefined);
|
|
413
|
-
// this.busy.set(false);
|
|
414
|
-
// }
|
|
415
|
-
// });
|
|
416
|
-
// });
|
|
417
|
-
// }
|
|
418
|
-
// });
|
|
419
374
|
#formOptionsResource;
|
|
420
375
|
resetForm() {
|
|
421
376
|
this.objectForms()?.forEach((f) => f.resetForm());
|
|
422
377
|
}
|
|
378
|
+
setFormPristine() {
|
|
379
|
+
this.objectForms()?.forEach((f) => f.setFormPristine());
|
|
380
|
+
}
|
|
423
381
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ObjectMetadataSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
424
382
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.14", type: ObjectMetadataSectionComponent, isStandalone: true, selector: "yuv-object-metadata-section", inputs: { section: { classPropertyName: "section", publicName: "section", isSignal: true, isRequired: true, transformFunction: null }, expandedInput: { classPropertyName: "expandedInput", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, elementExtensions: { classPropertyName: "elementExtensions", publicName: "elementExtensions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { statusChanged: "statusChanged" }, viewQueries: [{ propertyName: "objectForms", predicate: ObjectFormComponent, descendants: true, isSignal: true }], ngImport: i0, template: "@let _section = section();\n@let fo = formOptions();\n\n<h3>\n <button\n type=\"button\"\n [attr.aria-expanded]=\"expanded()\"\n class=\"accordion-trigger\"\n [attr.aria-controls]=\"'sect_' + _section.id\"\n [id]=\"'accordion_' + _section.id\"\n (click)=\"expanded.set(!expanded())\"\n [attr.aria-busy]=\"busy()\"\n >\n @if (_section.icon) {\n @if (_section.svgIcon) {\n <mat-icon [svgIcon]=\"_section.icon\"></mat-icon>\n } @else {\n <mat-icon>{{ _section.icon }}</mat-icon>\n }\n }\n <span>{{ _section.label }}</span>\n @if (busy()) {\n <mat-spinner diameter=\"24\"></mat-spinner>\n }\n <mat-icon class=\"arr\">keyboard_arrow_down</mat-icon>\n </button>\n</h3>\n<div [id]=\"'sect_' + _section.id\" role=\"region\" [attr.aria-labelledby]=\"'accordion_' + _section.id\" class=\"accordion-panel\">\n @if (fo && expanded()) {\n <yuv-object-form [formOptions]=\"fo\" [elementExtensions]=\"elementExtensions()\" (statusChanged)=\"statusChanged.emit($event)\"></yuv-object-form>\n }\n</div>\n", styles: [":host{background-color:var(--_object-metadata-section-background);border:1px solid var(--ymt-outline-variant);border-radius:var(--_object-metadata-section-corner)}:host h3{margin:0;padding:0;display:flex}:host h3 button{margin:var(--ymt-spacing-2xs);border-radius:calc(var(--_object-metadata-section-corner) * .5);flex:1;padding:var(--ymt-spacing-xs);cursor:pointer;display:flex;gap:var(--ymt-spacing-xs);align-items:center;font-weight:700;color:var(--ymt-text-color-subtle);background-color:transparent;border:none}:host h3 button:hover{background-color:var(--ymt-hover-background)}:host h3 button:focus-visible{background-color:var(--ymt-hover-background);outline:2px solid var(--ymt-outline);outline-offset:-2px}:host h3 button[aria-expanded=true] mat-icon.arr{transform:rotate(180deg)}:host h3 button span{flex:1;text-align:start}:host h3 button mat-icon{margin-inline-end:var(--ymt-spacing-xs);transition:transform .3s ease}:host details{background-color:var(--_object-metadata-section-background);border:1px solid var(--ymt-outline-variant);border-radius:var(--_object-metadata-section-corner)}:host details:not(:last-child){margin-block-end:var(--ymt-spacing-m)}:host details[open] yuv-icon.arr{transform:rotate(180deg)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i2$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: ObjectFormComponent, selector: "yuv-object-form", inputs: ["formOptions", "inert", "elementExtensions", "isInnerTableForm"], outputs: ["statusChanged", "onFormReady"] }] }); }
|
|
425
383
|
}
|
|
@@ -438,7 +396,6 @@ class ObjectMetadataComponent {
|
|
|
438
396
|
this.objectForms = viewChildren(ObjectFormComponent);
|
|
439
397
|
this.objectMetadataSectionForms = viewChildren(ObjectMetadataSectionComponent);
|
|
440
398
|
this.#formSubscriptions = [];
|
|
441
|
-
this.#initialData = {};
|
|
442
399
|
this.busySaving = signal(false);
|
|
443
400
|
this.busyLoading = signal(false);
|
|
444
401
|
this.disableControls = input(false);
|
|
@@ -465,9 +422,6 @@ class ObjectMetadataComponent {
|
|
|
465
422
|
this.dmsObject = input();
|
|
466
423
|
this.#dmsObjectEffect = effect(() => {
|
|
467
424
|
const object = this.dmsObject();
|
|
468
|
-
if (object) {
|
|
469
|
-
this.#initialData = structuredClone(object.data);
|
|
470
|
-
}
|
|
471
425
|
this._dmsObject = object;
|
|
472
426
|
});
|
|
473
427
|
/**
|
|
@@ -530,7 +484,6 @@ class ObjectMetadataComponent {
|
|
|
530
484
|
#dmsService;
|
|
531
485
|
#pendingTaskId;
|
|
532
486
|
#formSubscriptions;
|
|
533
|
-
#initialData;
|
|
534
487
|
// state of all individual forms
|
|
535
488
|
#formStates;
|
|
536
489
|
#dmsObjectEffect;
|
|
@@ -542,7 +495,6 @@ class ObjectMetadataComponent {
|
|
|
542
495
|
*/
|
|
543
496
|
#init(object, flavors) {
|
|
544
497
|
if (object && (!this._dmsObject || this._dmsObject !== object)) {
|
|
545
|
-
this.#initialData = structuredClone(object.data);
|
|
546
498
|
this.#objectToForm(object, flavors);
|
|
547
499
|
}
|
|
548
500
|
this._dmsObject = object;
|
|
@@ -635,18 +587,13 @@ class ObjectMetadataComponent {
|
|
|
635
587
|
this.combinedFormState = combinedFormState;
|
|
636
588
|
return this.combinedFormState;
|
|
637
589
|
}
|
|
638
|
-
#setCombinedFormPristine() {
|
|
639
|
-
this.objectForms().forEach((f) => {
|
|
640
|
-
f.setFormPristine();
|
|
641
|
-
});
|
|
642
|
-
}
|
|
643
590
|
save() {
|
|
644
591
|
// TODO: this._dmsObject should be this.dmsObject() once this.#init() is removed
|
|
645
592
|
if (this._dmsObject && this.combinedFormState) {
|
|
646
593
|
this.busySaving.set(true);
|
|
647
594
|
this.#dmsService.updateDmsObject(this._dmsObject.id, this.combinedFormState.data).subscribe({
|
|
648
595
|
next: () => {
|
|
649
|
-
this
|
|
596
|
+
this.setFormPristine();
|
|
650
597
|
this.indexDataSaved.emit(this._dmsObject);
|
|
651
598
|
this.#finishPending();
|
|
652
599
|
this.controlsVisible.set(false);
|
|
@@ -674,6 +621,15 @@ class ObjectMetadataComponent {
|
|
|
674
621
|
}
|
|
675
622
|
(this.objectForms()?.length || this.objectMetadataSectionForms()?.length) && this.#formStates.clear();
|
|
676
623
|
}
|
|
624
|
+
setFormPristine() {
|
|
625
|
+
if (this.objectForms()?.length) {
|
|
626
|
+
this.objectForms().forEach((f) => f.setFormPristine());
|
|
627
|
+
}
|
|
628
|
+
if (this.objectMetadataSectionForms()?.length) {
|
|
629
|
+
this.objectMetadataSectionForms().forEach((s) => s.setFormPristine());
|
|
630
|
+
}
|
|
631
|
+
(this.objectForms()?.length || this.objectMetadataSectionForms()?.length) && this.#formStates.clear();
|
|
632
|
+
}
|
|
677
633
|
#startPending() {
|
|
678
634
|
// because this method will be called every time the form status changes,
|
|
679
635
|
// pending task will only be started once until it was finished
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-client-framework-object-details.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-header/object-details-header.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-header/object-details-header.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.service.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-audit/object-audit.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-audit/object-audit.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata-section/object-metadata-section.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata-section/object-metadata-section.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.module.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/form-section-group.pipe.ts","../../../../../libs/yuuvis/client-framework/object-details/src/yuuvis-client-framework-object-details.ts"],"sourcesContent":["import { Component, contentChild, effect, inject, input, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DmsObject, EventService, ObjectConfigService, VirtualObjectType, YuvEvent, YuvEventType } from '@yuuvis/client-core';\nimport { RendererDirective, RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RetentionBadgeComponent } from '@yuuvis/client-framework/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * Component showing header data for a dms object. These will be\n * generated from the object config for the given object.\n *\n * You could inject a set of actions into the headers actions slot\n * by adding them to the components body:\n *\n * ```html\n * <yuv-object-details-header [dmsObject]=\"obj\">\n * <ng-template #yuvHeaderActions>...</ng-template>\n * </yuv-object-details-header>\n * ```\n */\n@Component({\n selector: 'yuv-object-details-header',\n imports: [CommonModule, MatIconModule, RendererDirective, RetentionBadgeComponent],\n templateUrl: './object-details-header.component.html',\n styleUrl: './object-details-header.component.scss'\n})\nexport class ObjectDetailsHeaderComponent {\n #objectConfig = inject(ObjectConfigService);\n readonly #eventService = inject(EventService);\n\n headerActions = contentChild<TemplateRef<any>>('yuvHeaderActions');\n\n dmsObject = input<DmsObject | undefined>(undefined);\n #dmsObjectEffect = effect(() => {\n const o = this.dmsObject();\n const t = this.type();\n\n if (o && t) this.#setHeaderData();\n else this.headerData = undefined;\n });\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n /**\n * Bucket of the object config to retrieve header data from\n */\n bucket = input<string | undefined>(undefined);\n\n headerData?: {\n title: RendererDirectiveInput;\n description?: RendererDirectiveInput;\n icon: string;\n };\n\n constructor() {\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n this.#setHeaderData();\n });\n }\n\n #setHeaderData() {\n const o = this.dmsObject();\n if (!o) {\n this.headerData = undefined;\n } else {\n const roc = this.#objectConfig.getResolvedObjectConfig(o.data, this.type(), this.bucket());\n this.headerData = {\n title: roc.title,\n description: roc.description,\n icon: roc.icon?.value\n };\n }\n }\n}\n","@let dmsObj = dmsObject();\n@if (dmsObj && headerData) {\n <div class=\"icon\">\n <mat-icon>{{ headerData.icon }}</mat-icon>\n </div>\n <h2><ng-container *yuvRenderer=\"headerData.title\"></ng-container></h2>\n <div class=\"description\"><ng-container *yuvRenderer=\"headerData.description\"></ng-container></div>\n <div class=\"badges\">\n <yuv-retention-badge [dmsObject]=\"dmsObj\"></yuv-retention-badge>\n </div>\n @let actions = headerActions();\n @if (actions) {\n <div class=\"actions\">\n <ng-container *ngTemplateOutlet=\"actions\"></ng-container>\n </div>\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { DmsObject, DmsService, TranslateService, Utils } from '@yuuvis/client-core';\nimport { finalize } from 'rxjs';\n\n@Injectable()\nexport class ObjectDetailsShellService {\n id = Utils.uuid();\n #dmsService = inject(DmsService);\n readonly translate = inject(TranslateService);\n\n #dmsObject = signal<DmsObject | undefined>(undefined);\n dmsObject = this.#dmsObject.asReadonly();\n\n contextError = signal<string | undefined>(undefined);\n busy = signal<boolean>(false);\n\n setDmsObject(dmsObject: DmsObject | undefined) {\n this.#dmsObject.set(dmsObject);\n this.contextError.set(undefined);\n }\n\n fetchDmsObject(id: string): void {\n this.busy.set(true);\n this.#dmsService\n .getDmsObject(id)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (dmsObject) => this.#dmsObject.set(dmsObject),\n error: () => {\n this.#dmsObject.set(undefined);\n this.contextError.set(this.translate.instant('yuv.object-metadata.context.load.error'));\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DmsObject, EventService, RetentionState, VirtualObjectType, YuvEvent, YuvEventType } from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { ObjectDetailsHeaderComponent } from '../object-details-header/object-details-header.component';\nimport { ObjectDetailsShellService } from './object-details-shell.service';\n\n/**\n * Wrapper component for details of a dms object. This component\n * provides a header based on the object configuration for the given object.\n * It will also take care of loading the object if you only provide the objects ID.\n */\n@Component({\n selector: 'yuv-object-details-shell',\n standalone: true,\n imports: [CommonModule, ObjectDetailsHeaderComponent, MatTooltipModule, BusyOverlayDirective],\n\n templateUrl: './object-details-shell.component.html',\n styleUrls: ['./object-details-shell.component.scss']\n})\nexport class ObjectDetailsShellComponent {\n #eventService = inject(EventService);\n #odShellService = inject(ObjectDetailsShellService);\n\n retentionState = signal<RetentionState | undefined>(undefined);\n contextError = this.#odShellService.contextError;\n dmsObject = this.#odShellService.dmsObject;\n busy = this.#odShellService.busy;\n\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n /**\n * Bucket of the object config to retrieve header data from\n */\n bucket = input<string | undefined>(undefined);\n /**\n * Whether to hide the header\n */\n hideHeader = input<boolean>(false);\n\n constructor() {\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const o = e.data as DmsObject;\n const dmsObj = this.dmsObject();\n if (dmsObj && dmsObj.id === o.id) this.#odShellService.setDmsObject(o);\n });\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_DELETED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n if (e.data?.id === this.dmsObject()?.id) {\n this.#odShellService.setDmsObject(undefined);\n }\n });\n }\n}\n","@let dmsObj = dmsObject();\n@if (dmsObj) {\n @if (!hideHeader()) {\n <yuv-object-details-header [dmsObject]=\"dmsObj\" [type]=\"type()\" [bucket]=\"bucket()\"></yuv-object-details-header>\n }\n <div class=\"content\" [yuvBusyOverlay]=\"busy()\">\n <ng-content></ng-content>\n </div>\n} @else {\n <div class=\"empty\">\n @if (contextError()) {\n <div class=\"error\">{{ contextError() }}</div>\n } @else {\n <!-- EMPTY -->\n }\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport {\n AuditEntry,\n AuditQueryResult,\n AuditService,\n DmsObject,\n EventService,\n LocaleDatePipe,\n SystemService,\n TranslateModule,\n TranslateService,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { finalize } from 'rxjs';\nimport { MatIconModule } from '@angular/material/icon';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'yuv-object-audit',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, LocaleDatePipe, BusyOverlayDirective, TranslateModule, MatIconModule, YmtIconButtonDirective],\n templateUrl: './object-audit.component.html',\n styleUrl: './object-audit.component.scss'\n})\nexport class ObjectAuditComponent {\n private FILTER_CACHE_KEY = 'yuv.audit.filters';\n\n private _objectID?: string;\n private _objectTypeID?: string;\n\n icons = {\n filter: YUV_ICONS.filter,\n arrowNext: YUV_ICONS.arrowNext\n };\n\n yuvBusyOverlay = true;\n\n auditsRes?: AuditQueryResult;\n resolvedItems = signal<ResolvedAuditEntry[]>([]);\n searchPanelShow = false;\n error = false;\n busy = false;\n searchActions: { label: string; actions: string[] }[] = [];\n auditLabels: any = {};\n\n dmsObject = input<DmsObject | undefined>(undefined);\n\n #dmsObjectEffect = effect(() => {\n const o = this.dmsObject();\n if (!o) {\n this._objectID = undefined;\n this._objectTypeID = undefined;\n this.auditsRes = undefined;\n } else if (!this._objectID || this._objectID !== o.id) {\n this._objectID = o.id;\n this._objectTypeID = o.objectTypeId;\n this.query();\n } else {\n this.query();\n }\n });\n\n /**\n * A list of audits that should not be shown. Use the audit codes (like 100, 301, etc.).\n * This will also disable the corresponding filters.\n */\n skipActions = input<number[]>([]);\n\n /**\n * Whether or not to ignore admin and user separation of audit entries\n */\n allActions = input(false);\n\n get objectID() {\n return this._objectID;\n }\n\n constructor(\n private auditService: AuditService,\n private eventService: EventService,\n private system: SystemService,\n private translate: TranslateService\n ) {\n this.auditLabels = {\n a100: this.translate.instant('yuv.audit.label.create.metadata'),\n a101: this.translate.instant('yuv.audit.label.create.metadata.withcontent'),\n a110: this.translate.instant('yuv.audit.label.create.tag'),\n\n a200: this.translate.instant('yuv.audit.label.delete'),\n a201: this.translate.instant('yuv.audit.label.delete.content'), // #v\n a202: this.translate.instant('yuv.audit.label.delete.marked'),\n a210: this.translate.instant('yuv.audit.label.delete.tag'), // #v\n a220: this.translate.instant('yuv.audit.label.delete.version'), // #v\n\n a300: this.translate.instant('yuv.audit.label.update.metadata'),\n a301: this.translate.instant('yuv.audit.label.update.content'),\n a302: this.translate.instant('yuv.audit.label.update.metadata.withcontent'),\n a303: this.translate.instant('yuv.audit.label.update.move.content'),\n a310: this.translate.instant('yuv.audit.label.update.tag'),\n a325: this.translate.instant('yuv.audit.label.update.restore'),\n a340: this.translate.instant('yuv.audit.label.update.move'),\n\n a400: this.translate.instant('yuv.audit.label.get.content'),\n a401: this.translate.instant('yuv.audit.label.get.metadata'),\n a402: this.translate.instant('yuv.audit.label.get.rendition.text'),\n a403: this.translate.instant('yuv.audit.label.get.rendition.pdf'),\n a404: this.translate.instant('yuv.audit.label.get.rendition.thumbnail'),\n\n a10000: this.translate.instant('yuv.audit.label.get.custom')\n };\n\n this.eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const dmsObject = e.data as DmsObject;\n // reload audit entries when update belongs to the current dms object\n if (dmsObject.id === this.objectID) {\n this.query();\n }\n });\n }\n\n private fetchAuditEntries() {\n if (!this._objectID || !this._objectTypeID) return;\n this.error = false;\n this.busy = true;\n\n this.auditService\n .getAuditEntries(this._objectID, { skipActions: this.skipActions() })\n .subscribe({\n next: (res: AuditQueryResult) => {\n this.busy = false;\n this.auditsRes = res;\n this.resolvedItems.set(this.mapResult(res));\n },\n error: () => {\n this.busy = false;\n this.onError();\n }\n });\n }\n\n private mapResult(res: AuditQueryResult): ResolvedAuditEntry[] {\n return (\n res.items\n // TODO: Remove this filter once the system:ren:text audit lifecycle planning is complete and the tag's purpose is fully defined.\n // https://help.optimal-systems.com/yuuvis/Momentum/latest/index.html#_content_renditions_asynchronous_full_text_indexing.html\n .filter((i) => !i.detail.includes('[system:ren:text, 1]'))\n .map((i) => {\n const r: ResolvedAuditEntry = { ...i, label: this.auditLabels['a' + i.action] };\n // tag related audits\n if ([110, 210, 310].includes(i.action)) {\n const params = this.getAuditEntryParams(i);\n if (params) {\n const localizedLabel = `${params[0]}:${params[1]}`;\n r.more = `${this.system.getLocalizedLabel(params[0]) ?? params[0]}: ${this.system.getLocalizedLabel(localizedLabel) ?? localizedLabel}`;\n }\n }\n // restore audit\n else if (i.action === 325) {\n const params = this.getAuditEntryParams(i);\n r.more = this.translate.instant('yuv.audit.label.update.restore.more', { version: params[0] || '[?]' });\n }\n // custom audits\n else if (i.action === 10000) {\n r.label = this.system.getLocalizedLabel(`audit:custom:${i.subaction}`) || `${i.subaction}`;\n }\n return r;\n })\n );\n }\n\n private getAuditEntryParams(auditItem: AuditEntry): string[] {\n const m = auditItem.detail.match(/\\[(.*?)\\]/);\n return m && m[1] ? m[1].split(',').map((i) => i.trim()) : [];\n }\n\n /**\n * Execute a query from the search panel.\n */\n query() {\n this.fetchAuditEntries();\n }\n\n goToPage(page: number) {\n if (this.auditsRes) {\n this.busy = true;\n this.auditService\n .getPage(this.auditsRes, page)\n .pipe(finalize(() => (this.busy = false)))\n .subscribe({\n next: (res: AuditQueryResult) => {\n this.auditsRes = res;\n this.resolvedItems.set(this.mapResult(res));\n },\n error: () => {\n this.onError();\n }\n });\n }\n }\n\n private onError() {\n this.auditsRes = undefined;\n this.error = true;\n }\n}\n\ninterface ResolvedAuditEntry extends AuditEntry {\n label: string;\n}\n","<div class=\"yuv-audit\" [ngClass]=\"{ singleEntry: auditsRes?.items?.length === 1, onPage: auditsRes && auditsRes.page > 1 }\" [yuvBusyOverlay]=\"busy\">\n @if (error) {\n <div class=\"error\">\n <div translate>yuv.audit.fetch.error</div>\n </div>\n }\n\n @if (auditsRes) {\n <!-- list of audits -->\n @let resItems = resolvedItems();\n @if (resItems.length) {\n <ul class=\"timeline\" [attr.aria-label]=\"'yuv.audit.timeline' | translate\">\n @for (item of resItems; track $index) {\n <li class=\"audit\" attr.aria-labelledby=\"'title-{{ $index }} creator-{{ $index }} date-{{ $index }}'\">\n <time [attr.datetime]=\"item.creationDate\" class=\"date\">{{ item.creationDate | localeDate }}</time>\n <div class=\"node\">\n <div class=\"label\">\n <span class=\"title\" id=\"title-{{ $index }}\">{{ item.label }}</span>\n </div>\n <div class=\"more meta\">{{ item.more }}</div>\n <div class=\"creator meta\" id=\"creator-{{ $index }}\">{{ item.createdBy.title }}</div>\n </div>\n </li>\n }\n </ul>\n } @else {\n <div class=\"empty\" translate>yuv.audit.result.empty</div>\n }\n\n <!-- controls -->\n @if (auditsRes.hasMoreItems || auditsRes.page > 1) {\n <div class=\"footer\" yuvOfflineDisabled>\n <div class=\"paging\">\n <button\n ymtIconButton\n [attr.aria-label]=\"'yuv.audit.label.paging.prev' | translate\"\n [disabled]=\"auditsRes.page === 1\"\n (click)=\"goToPage(auditsRes.page - 1)\"\n >\n <mat-icon>chevron_left</mat-icon>\n </button>\n <div class=\"page\">\n {{ auditsRes.page }}\n </div>\n <button\n ymtIconButton\n [attr.aria-label]=\"'yuv.audit.label.paging.next' | translate\"\n [disabled]=\"!auditsRes.hasMoreItems\"\n (click)=\"goToPage(auditsRes.page + 1)\"\n >\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n </div>\n }\n }\n</div>\n","import { Component, effect, inject, input, linkedSignal, output, signal, untracked, viewChildren } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ObjectMetadataSectionInput } from './object-metadata-section.interface';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormStatusChangedEvent, IObjectFormElementExtension, ObjectFormComponent, ObjectFormOptions } from '@yuuvis/client-framework/object-form';\nimport { Situation, SystemService } from '@yuuvis/client-core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { catchError, map, of } from 'rxjs';\n\n@Component({\n selector: 'yuv-object-metadata-section',\n imports: [CommonModule, MatIconModule, MatProgressSpinnerModule, ObjectFormComponent],\n templateUrl: './object-metadata-section.component.html',\n styleUrl: './object-metadata-section.component.scss'\n})\nexport class ObjectMetadataSectionComponent {\n #system = inject(SystemService);\n\n objectForms = viewChildren<ObjectFormComponent>(ObjectFormComponent);\n\n _formOptions = signal<ObjectFormOptions | undefined>(undefined);\n\n // busy = signal<boolean>(false);\n section = input.required<ObjectMetadataSectionInput>();\n expandedInput = input<boolean>(false, { alias: 'expanded' });\n elementExtensions = input<IObjectFormElementExtension[]>([]);\n expanded = linkedSignal(this.expandedInput);\n\n // #objectFormLoadEffect = effect(() => {\n // const section = this.section();\n // const expanded = this.expanded();\n // if (expanded && section && !this._formOptions()) {\n // untracked(() => {\n // this.busy.set(true);\n // this.#system.getObjectTypeForm(section.id, section.situation || Situation.EDIT).subscribe({\n // next: (formModel) => {\n // this._formOptions.set({\n // formModel,\n // data: section.data || {}\n // });\n // this.busy.set(false);\n // },\n // error: () => {\n // this._formOptions.set(undefined);\n // this.busy.set(false);\n // }\n // });\n // });\n // }\n // });\n\n #formOptionsResource = rxResource({\n request: () => ({ section: this.section(), extended: this.expanded() }),\n loader: ({ request }) => {\n if (request.extended && request.section) {\n return this.#system.getObjectTypeForm(request.section.id, request.section.situation || Situation.EDIT).pipe(\n catchError(() => of(undefined)),\n map((formModel) => ({ formModel, data: request.section?.data || {} }))\n );\n } else {\n return of(undefined);\n }\n }\n });\n\n formOptions = this.#formOptionsResource.value;\n busy = this.#formOptionsResource.isLoading;\n\n statusChanged = output<FormStatusChangedEvent>();\n\n resetForm() {\n this.objectForms()?.forEach((f) => f.resetForm());\n }\n}\n","@let _section = section();\n@let fo = formOptions();\n\n<h3>\n <button\n type=\"button\"\n [attr.aria-expanded]=\"expanded()\"\n class=\"accordion-trigger\"\n [attr.aria-controls]=\"'sect_' + _section.id\"\n [id]=\"'accordion_' + _section.id\"\n (click)=\"expanded.set(!expanded())\"\n [attr.aria-busy]=\"busy()\"\n >\n @if (_section.icon) {\n @if (_section.svgIcon) {\n <mat-icon [svgIcon]=\"_section.icon\"></mat-icon>\n } @else {\n <mat-icon>{{ _section.icon }}</mat-icon>\n }\n }\n <span>{{ _section.label }}</span>\n @if (busy()) {\n <mat-spinner diameter=\"24\"></mat-spinner>\n }\n <mat-icon class=\"arr\">keyboard_arrow_down</mat-icon>\n </button>\n</h3>\n<div [id]=\"'sect_' + _section.id\" role=\"region\" [attr.aria-labelledby]=\"'accordion_' + _section.id\" class=\"accordion-panel\">\n @if (fo && expanded()) {\n <yuv-object-form [formOptions]=\"fo\" [elementExtensions]=\"elementExtensions()\" (statusChanged)=\"statusChanged.emit($event)\"></yuv-object-form>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, effect, inject, Input, input, linkedSignal, OnDestroy, output, signal, viewChildren } from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n DmsObject,\n DmsService,\n FlavoredDmsObject,\n NotificationService,\n ObjectTypeFlavor,\n PendingChangesService,\n Situation,\n SystemService,\n TranslateModule,\n TranslateService\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { FormStatusChangedEvent, IObjectFormElementExtension, ObjectFormComponent, ObjectFormOptions } from '@yuuvis/client-framework/object-form';\nimport { ObjectSummaryDataComponent } from '@yuuvis/client-framework/object-summary';\nimport { RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { map, of, Subscription } from 'rxjs';\nimport { ObjectMetadataSectionComponent } from './object-metadata-section/object-metadata-section.component';\n\n@Component({\n selector: 'yuv-object-metadata',\n standalone: true,\n imports: [\n CommonModule,\n ObjectFormComponent,\n ObjectSummaryDataComponent,\n BusyOverlayDirective,\n TranslateModule,\n MatButtonModule,\n MatIconModule,\n ReactiveFormsModule,\n ObjectMetadataSectionComponent,\n YmtButtonDirective\n ],\n templateUrl: './object-metadata.component.html',\n styleUrl: './object-metadata.component.scss',\n host: {\n '[class.empty]': 'empty()',\n '[class.loading]': 'busyLoading()'\n }\n})\nexport class ObjectMetadataComponent implements OnDestroy {\n #pendingChanges = inject(PendingChangesService);\n #notificationService = inject(NotificationService);\n translate = inject(TranslateService);\n #system = inject(SystemService);\n #dmsService = inject(DmsService);\n\n objectForms = viewChildren<ObjectFormComponent>(ObjectFormComponent);\n objectMetadataSectionForms = viewChildren<ObjectMetadataSectionComponent>(ObjectMetadataSectionComponent);\n\n #pendingTaskId?: string;\n _dmsObject?: DmsObject;\n #formSubscriptions: Subscription[] = [];\n #initialData: Record<string, unknown> = {};\n\n busySaving = signal<boolean>(false);\n busyLoading = signal<boolean>(false);\n disableControls = input<boolean>(false);\n /**\n * Set to 'true' to disable the basic metadata form. This will hide\n * the basic metadata section that shows common object proeperties like\n * creation date, creator, version, etc.\n */\n disableBasicMetadata = input<boolean>(false);\n elementExtensions = input<IObjectFormElementExtension[]>([]);\n controlsVisible = signal<boolean>(false);\n empty = computed(() => !this.mainFormOptions() && this.flavorFormOptions().length === 0 && this.disableBasicMetadata());\n\n // state of all individual forms\n #formStates: Map<string, FormStatusChangedEvent> = new Map<string, FormStatusChangedEvent>();\n\n baseData: {\n label: string;\n value: RendererDirectiveInput;\n }[] = [];\n\n /**\n * Form situation, if not set default will be 'EDIT'\n */\n @Input() situation: Situation = Situation.EDIT;\n /**\n * Set to 'true' to prevent all metadata from being edited\n */\n @Input() formDisabled = false;\n\n dmsObject = input<DmsObject | undefined>();\n #dmsObjectEffect = effect(() => {\n const object = this.dmsObject();\n if (object) {\n this.#initialData = structuredClone(object.data);\n }\n this._dmsObject = object;\n });\n\n /**\n * @deprecated This input will be removed in the future.\n * Please migrate to using `dmsObject` and `flavors` inputs instead.\n */\n flavoredDmsObject = input<FlavoredDmsObject | undefined>();\n #flavoredDmsObjectEffect = effect(() => {\n const flavoredDmsObject = this.flavoredDmsObject();\n this.#init(flavoredDmsObject?.object, flavoredDmsObject?.flavors);\n });\n combinedFormState?: FormStatusChangedEvent;\n\n /**\n * Emits the updated `DmsObject` when metadata have been saved.\n */\n indexDataSaved = output<DmsObject>();\n /**\n * Emits the current state of the metadata form.\n */\n statusChanged = output<FormStatusChangedEvent>();\n\n /**\n * @deprecated once input flavoredDmsObject will be removed in the future.\n * this is not used anymore\n *\n */\n #init(object?: DmsObject, flavors?: ObjectTypeFlavor[]) {\n if (object && (!this._dmsObject || this._dmsObject !== object)) {\n this.#initialData = structuredClone(object.data);\n this.#objectToForm(object, flavors);\n }\n this._dmsObject = object;\n }\n\n #mainFormOptionsRecource = rxResource<ObjectFormOptions | undefined, DmsObject | undefined>({\n request: this.dmsObject,\n loader: ({ request }) => {\n if (!request) return of(undefined);\n return this.#system.getObjectTypeForms([request.objectTypeId], this.situation).pipe(\n map((res) =>\n res[request.objectTypeId]\n ? {\n formModel: res[request.objectTypeId],\n data: request.data,\n disabled: this.formDisabled || !request.permissions?.writeIndexData\n }\n : undefined\n )\n );\n }\n });\n // form of the dms object itself\n mainFormOptions = this.#mainFormOptionsRecource.value;\n mainFormOptionsIsLoading = this.#mainFormOptionsRecource.isLoading;\n\n flavors = input<ObjectTypeFlavor[] | undefined>(undefined);\n // forms off allpied flavors\n flavorFormOptions = linkedSignal({\n source: () => ({ object: this.dmsObject(), flavors: this.flavors() }),\n computation: ({ object, flavors }) => {\n const mappedFlavors: Record<string, ObjectTypeFlavor> = (flavors || []).reduce((acc, curr) => ({ ...acc, [curr.sot]: curr }), {});\n if (!object) return [];\n return (flavors || [])\n .map((f) => f.sot)\n .map((id) => ({\n id,\n label: this.#system.getLocalizedLabel(id),\n icon: mappedFlavors[id]?.icon,\n svgIcon: mappedFlavors[id]?.svgIcon,\n data: object.data\n }));\n }\n });\n\n /**\n * @deprecated once input flavoredDmsObject will be removed in the future.\n * this is not used anymore\n *\n */\n #objectToForm(object?: DmsObject, flavors?: ObjectTypeFlavor[]) {\n if (object) {\n const mappedFlavors: Record<string, ObjectTypeFlavor> = (flavors || []).reduce((acc, curr) => ({ ...acc, [curr.sot]: curr }), {});\n this.busyLoading.set(true);\n\n this.flavorFormOptions.set(\n (flavors || [])\n .map((f) => f.sot)\n .map((id) => ({\n id,\n label: this.#system.getLocalizedLabel(id),\n icon: mappedFlavors[id]?.icon,\n svgIcon: mappedFlavors[id]?.svgIcon,\n data: object.data\n // formOptions: {\n // formModel: res[id],\n // data: object.data\n // }\n }))\n );\n\n this.#system.getObjectTypeForms([object.objectTypeId], this.situation).subscribe({\n next: (res) => {\n this.mainFormOptions.set(\n res[object.objectTypeId]\n ? {\n formModel: res[object.objectTypeId],\n data: object.data,\n disabled: this.formDisabled || !object.permissions?.writeIndexData\n }\n : undefined\n );\n\n // this.flavorFormOptions.set(\n // Object.keys(res)\n // .filter((id) => id !== object.objectTypeId)\n // .map((id) => ({\n // id,\n // label: res[id].label,\n // icon: mappedFlavors[id]?.icon,\n // svgIcon: mappedFlavors[id]?.svgIcon,\n // data: object.data,\n // // formOptions: {\n // // formModel: res[id],\n // // data: object.data\n // // }\n // }))\n // );\n this.busyLoading.set(false);\n },\n error: () => {\n this.busyLoading.set(false);\n }\n });\n }\n }\n\n onFormStatusChanged(formId: string, evt: FormStatusChangedEvent) {\n this.#formStates.set(formId, evt);\n this.#getCombinedFormState();\n if (this.combinedFormState?.dirty) this.#startPending();\n else this.#finishPending();\n this.controlsVisible.set(!!this.combinedFormState?.dirty);\n if (this.combinedFormState) this.statusChanged.emit(this.combinedFormState);\n }\n\n #getCombinedFormState(): FormStatusChangedEvent {\n const combinedFormState = {\n dirty: false,\n indexdataChanged: false,\n invalid: false,\n data: {}\n };\n this.#formStates.forEach((s) => {\n if (s.dirty) {\n combinedFormState.dirty = s.dirty;\n }\n if (s.indexdataChanged) {\n combinedFormState.indexdataChanged = s.indexdataChanged;\n }\n if (s.invalid) {\n combinedFormState.invalid = s.invalid;\n }\n combinedFormState.data = { ...combinedFormState.data, ...s.data };\n });\n this.combinedFormState = combinedFormState;\n return this.combinedFormState;\n }\n\n #setCombinedFormPristine() {\n this.objectForms().forEach((f) => {\n f.setFormPristine();\n });\n }\n\n save() {\n // TODO: this._dmsObject should be this.dmsObject() once this.#init() is removed\n if (this._dmsObject && this.combinedFormState) {\n this.busySaving.set(true);\n this.#dmsService.updateDmsObject(this._dmsObject.id, this.combinedFormState.data).subscribe({\n next: () => {\n this.#setCombinedFormPristine();\n this.indexDataSaved.emit(this._dmsObject!);\n this.#finishPending();\n this.controlsVisible.set(false);\n this.busySaving.set(false);\n },\n error: (err) => {\n this.#notificationService.error(\n '',\n // this._dmsObject?.title || '',\n err.status === 404 ? this.translate.instant('yuv.object-metadata.context.load.error') : this.translate.instant('yuv.object-metadata.save.error')\n );\n this.controlsVisible.set(false);\n this.busySaving.set(false);\n }\n });\n }\n }\n /**\n * Reset te form to its initial state\n */\n resetForm() {\n if (this.objectForms()?.length) {\n this.objectForms().forEach((f) => f.resetForm());\n }\n\n if (this.objectMetadataSectionForms()?.length) {\n this.objectMetadataSectionForms().forEach((s) => s.resetForm());\n }\n (this.objectForms()?.length || this.objectMetadataSectionForms()?.length) && this.#formStates.clear();\n }\n\n #startPending() {\n // because this method will be called every time the form status changes,\n // pending task will only be started once until it was finished\n if (!this.#pendingChanges.hasPendingTask(this.#pendingTaskId || ' ')) {\n this.#pendingTaskId = this.#pendingChanges.startTask(this.translate.instant('yuv.object-metadata.pending-changes.alert'));\n }\n }\n\n #finishPending() {\n if (this.#pendingTaskId) this.#pendingChanges.finishTask(this.#pendingTaskId);\n }\n\n ngOnDestroy(): void {\n this.#formSubscriptions.forEach((s) => s.unsubscribe());\n }\n}\n","<main [yuvBusyOverlay]=\"busySaving() || busyLoading() || mainFormOptionsIsLoading()\">\n @if (empty()) {\n <p>{{ 'yuv.object-metadata.empty.message' | translate }}</p>\n }\n @if (!mainFormOptions()) {\n <yuv-object-form\n [formOptions]=\"mainFormOptions()\"\n [elementExtensions]=\"elementExtensions()\"\n (statusChanged)=\"onFormStatusChanged('main', $event)\"\n ></yuv-object-form>\n }\n @for (fo of flavorFormOptions(); track $index) {\n <yuv-object-metadata-section\n [section]=\"fo\"\n [elementExtensions]=\"elementExtensions()\"\n [expanded]=\"$index === 0\"\n (statusChanged)=\"onFormStatusChanged(fo.id, $event)\"\n ></yuv-object-metadata-section>\n }\n\n <!-- base data -->\n @let object = dmsObject() ?? _dmsObject;\n @if (object && !disableBasicMetadata()) {\n <yuv-object-summary-data [dmsObject]=\"object\"></yuv-object-summary-data>\n }\n</main>\n\n<footer [attr.inert]=\"disableControls() || !controlsVisible() || null\">\n <div class=\"container\">\n <button\n ymtButton=\"secondary\"\n button-size=\"small\"\n [disabled]=\"busySaving() || busyLoading()\"\n (click)=\"resetForm()\"\n [hidden]=\"!combinedFormState?.dirty\"\n [disabled]=\"!combinedFormState?.dirty\"\n >\n {{ 'yuv.object-metadata.button.reset' | translate }}\n </button>\n <button\n ymtButton=\"primary\"\n button-size=\"small\"\n (click)=\"save()\"\n [disabled]=\"!combinedFormState?.dirty || combinedFormState?.invalid || busySaving() || busyLoading()\"\n >\n {{ 'yuv.object-metadata.button.save' | translate }}\n </button>\n </div>\n</footer>\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, inject, input, signal, untracked } from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { DmsObject, ObjectTypeFlavor, TabGuardDirective, TranslateModule, UserService, VirtualObjectType } from '@yuuvis/client-core';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { ObjectAuditComponent } from './object-audit/object-audit.component';\nimport { ObjectDetailsShellComponent } from './object-details-shell/object-details-shell.component';\nimport { ObjectDetailsShellService } from './object-details-shell/object-details-shell.service';\nimport { ObjectMetadataComponent } from './object-metadata/object-metadata.component';\n\n@Component({\n selector: 'yuv-object-details',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n MatTabsModule,\n TabGuardDirective,\n ObjectDetailsShellComponent,\n ObjectPreviewComponent,\n ObjectMetadataComponent,\n ObjectAuditComponent\n ],\n providers: [ObjectDetailsShellService],\n templateUrl: './object-details.component.html',\n styleUrls: ['./object-details.component.scss']\n})\nexport class ObjectDetailsComponent {\n readonly #userService = inject(UserService);\n #odShellService = inject(ObjectDetailsShellService);\n\n isAdvancedUser = this.#userService.isAdvancedUser;\n\n currentUser = signal(this.#userService.getCurrentUser());\n\n /**\n * ID to store the components layout state (splitted tabs, gutter position)\n */\n layoutSettingsID = signal<string | undefined>(undefined);\n\n /**\n * DmsObject to show the details for.\n */\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n dmsObjectInputEffect = effect(() => {\n const o = this.dmsObjectInput();\n if (o) untracked(() => this.#odShellService.setDmsObject(o));\n });\n\n dmsObject = this.#odShellService.dmsObject;\n\n /**\n * Flavors to take into account. These flavors define for example the metadata\n * of an object.\n */\n flavors = input<ObjectTypeFlavor[]>([]);\n\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n\n /**\n * If the object config for the given type has been stored in a certain bucket, this\n * bucket can be provided here. If no bucket is set, the config will be retrieved\n * from the main object config\n */\n objectConfigBucket = input<string | undefined>(undefined);\n /**\n * ID of a DmsObject. The object will be fetched from the backend upfront.\n */\n objectId = input<string | undefined>(undefined);\n #objectIdEffect = effect(() => {\n const oid = this.objectId();\n if (oid) this.#odShellService.fetchDmsObject(oid);\n });\n /**\n * Whether to hide the header\n */\n hideHeader = input<boolean>(false);\n\n onIndexdataSaved(updatedObject: DmsObject) {\n this.#odShellService.setDmsObject(updatedObject);\n }\n\n // versionSelected(version: number) {\n // const nav = ['../..', 'version'];\n // this.#router.navigate([...nav, this.dmsObject?.version], { queryParams: { version }, relativeTo: this.#route });\n // }\n}\n","<yuv-object-details-shell [type]=\"type()\" [hideHeader]=\"hideHeader()\" [bucket]=\"objectConfigBucket()\">\n @let dmsObj = dmsObject();\n <mat-tab-group yuvTabGuardDisable>\n <!-- content -->\n @if (dmsObj && dmsObj.content) {\n <mat-tab [label]=\"'yuv.object-details.tabs.content.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-preview [dmsObject]=\"dmsObj\"></yuv-object-preview>\n </ng-template>\n </mat-tab>\n }\n\n <!-- indexdata -->\n <mat-tab [label]=\"'yuv.object-metadata.tabs.indexdata.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-metadata [dmsObject]=\"dmsObject()\" [flavors]=\"flavors()\" (indexDataSaved)=\"onIndexdataSaved($event)\"> </yuv-object-metadata>\n </ng-template>\n </mat-tab>\n <!-- history -->\n <mat-tab [label]=\"'yuv.object-metadata.tabs.history.title' | translate\">\n <ng-template matTabContent> <yuv-object-audit [dmsObject]=\"dmsObj\"></yuv-object-audit> </ng-template\n ></mat-tab>\n </mat-tab-group>\n</yuv-object-details-shell>\n","import { NgModule } from '@angular/core';\nimport { ObjectDetailsHeaderComponent } from './object-details-header/object-details-header.component';\nimport { ObjectDetailsShellComponent } from './object-details-shell/object-details-shell.component';\nimport { ObjectDetailsComponent } from './object-details.component';\nimport { ObjectMetadataComponent } from './object-metadata/object-metadata.component';\nimport { ObjectAuditComponent } from './object-audit/object-audit.component';\nimport { RetentionBadgeComponent } from '@yuuvis/client-framework/common';\n\nconst cmp = [\n ObjectDetailsComponent,\n ObjectDetailsHeaderComponent,\n ObjectDetailsShellComponent,\n ObjectMetadataComponent,\n ObjectAuditComponent,\n RetentionBadgeComponent\n]\n\n@NgModule({\n imports: cmp,\n exports: cmp\n})\nexport class YuvObjectDetailsModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Pipe({\n name: 'formSectionGroup',\n standalone: true \n})\nexport class FormSectionGroupPipe implements PipeTransform {\n transform(form: FormGroup, id: string): FormGroup {\n return form.get(id) as FormGroup;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-client-framework-object-details.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-header/object-details-header.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-header/object-details-header.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.service.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details-shell/object-details-shell.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-audit/object-audit.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-audit/object-audit.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata-section/object-metadata-section.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata-section/object-metadata-section.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/object-metadata.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.component.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.component.html","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-details.module.ts","../../../../../libs/yuuvis/client-framework/object-details/src/lib/object-metadata/form-section-group.pipe.ts","../../../../../libs/yuuvis/client-framework/object-details/src/yuuvis-client-framework-object-details.ts"],"sourcesContent":["import { Component, contentChild, effect, inject, input, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DmsObject, EventService, ObjectConfigService, VirtualObjectType, YuvEvent, YuvEventType } from '@yuuvis/client-core';\nimport { RendererDirective, RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RetentionBadgeComponent } from '@yuuvis/client-framework/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * Component showing header data for a dms object. These will be\n * generated from the object config for the given object.\n *\n * You could inject a set of actions into the headers actions slot\n * by adding them to the components body:\n *\n * ```html\n * <yuv-object-details-header [dmsObject]=\"obj\">\n * <ng-template #yuvHeaderActions>...</ng-template>\n * </yuv-object-details-header>\n * ```\n */\n@Component({\n selector: 'yuv-object-details-header',\n imports: [CommonModule, MatIconModule, RendererDirective, RetentionBadgeComponent],\n templateUrl: './object-details-header.component.html',\n styleUrl: './object-details-header.component.scss'\n})\nexport class ObjectDetailsHeaderComponent {\n #objectConfig = inject(ObjectConfigService);\n readonly #eventService = inject(EventService);\n\n headerActions = contentChild<TemplateRef<any>>('yuvHeaderActions');\n\n dmsObject = input<DmsObject | undefined>(undefined);\n #dmsObjectEffect = effect(() => {\n const o = this.dmsObject();\n const t = this.type();\n\n if (o && t) this.#setHeaderData();\n else this.headerData = undefined;\n });\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n /**\n * Bucket of the object config to retrieve header data from\n */\n bucket = input<string | undefined>(undefined);\n\n headerData?: {\n title: RendererDirectiveInput;\n description?: RendererDirectiveInput;\n icon: string;\n };\n\n constructor() {\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n this.#setHeaderData();\n });\n }\n\n #setHeaderData() {\n const o = this.dmsObject();\n if (!o) {\n this.headerData = undefined;\n } else {\n const roc = this.#objectConfig.getResolvedObjectConfig(o.data, this.type(), this.bucket());\n this.headerData = {\n title: roc.title,\n description: roc.description,\n icon: roc.icon?.value\n };\n }\n }\n}\n","@let dmsObj = dmsObject();\n@if (dmsObj && headerData) {\n <div class=\"icon\">\n <mat-icon>{{ headerData.icon }}</mat-icon>\n </div>\n <h2><ng-container *yuvRenderer=\"headerData.title\"></ng-container></h2>\n <div class=\"description\"><ng-container *yuvRenderer=\"headerData.description\"></ng-container></div>\n <div class=\"badges\">\n <yuv-retention-badge [dmsObject]=\"dmsObj\"></yuv-retention-badge>\n </div>\n @let actions = headerActions();\n @if (actions) {\n <div class=\"actions\">\n <ng-container *ngTemplateOutlet=\"actions\"></ng-container>\n </div>\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { DmsObject, DmsService, TranslateService, Utils } from '@yuuvis/client-core';\nimport { finalize } from 'rxjs';\n\n@Injectable()\nexport class ObjectDetailsShellService {\n id = Utils.uuid();\n #dmsService = inject(DmsService);\n readonly translate = inject(TranslateService);\n\n #dmsObject = signal<DmsObject | undefined>(undefined);\n dmsObject = this.#dmsObject.asReadonly();\n\n contextError = signal<string | undefined>(undefined);\n busy = signal<boolean>(false);\n\n setDmsObject(dmsObject: DmsObject | undefined) {\n this.#dmsObject.set(dmsObject);\n this.contextError.set(undefined);\n }\n\n fetchDmsObject(id: string): void {\n this.busy.set(true);\n this.#dmsService\n .getDmsObject(id)\n .pipe(finalize(() => this.busy.set(false)))\n .subscribe({\n next: (dmsObject) => this.#dmsObject.set(dmsObject),\n error: () => {\n this.#dmsObject.set(undefined);\n this.contextError.set(this.translate.instant('yuv.object-metadata.context.load.error'));\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { DmsObject, EventService, RetentionState, VirtualObjectType, YuvEvent, YuvEventType } from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { ObjectDetailsHeaderComponent } from '../object-details-header/object-details-header.component';\nimport { ObjectDetailsShellService } from './object-details-shell.service';\n\n/**\n * Wrapper component for details of a dms object. This component\n * provides a header based on the object configuration for the given object.\n * It will also take care of loading the object if you only provide the objects ID.\n */\n@Component({\n selector: 'yuv-object-details-shell',\n standalone: true,\n imports: [CommonModule, ObjectDetailsHeaderComponent, MatTooltipModule, BusyOverlayDirective],\n\n templateUrl: './object-details-shell.component.html',\n styleUrls: ['./object-details-shell.component.scss']\n})\nexport class ObjectDetailsShellComponent {\n #eventService = inject(EventService);\n #odShellService = inject(ObjectDetailsShellService);\n\n retentionState = signal<RetentionState | undefined>(undefined);\n contextError = this.#odShellService.contextError;\n dmsObject = this.#odShellService.dmsObject;\n busy = this.#odShellService.busy;\n\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n /**\n * Bucket of the object config to retrieve header data from\n */\n bucket = input<string | undefined>(undefined);\n /**\n * Whether to hide the header\n */\n hideHeader = input<boolean>(false);\n\n constructor() {\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const o = e.data as DmsObject;\n const dmsObj = this.dmsObject();\n if (dmsObj && dmsObj.id === o.id) this.#odShellService.setDmsObject(o);\n });\n this.#eventService\n .on(YuvEventType.DMS_OBJECT_DELETED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n if (e.data?.id === this.dmsObject()?.id) {\n this.#odShellService.setDmsObject(undefined);\n }\n });\n }\n}\n","@let dmsObj = dmsObject();\n@if (dmsObj) {\n @if (!hideHeader()) {\n <yuv-object-details-header [dmsObject]=\"dmsObj\" [type]=\"type()\" [bucket]=\"bucket()\"></yuv-object-details-header>\n }\n <div class=\"content\" [yuvBusyOverlay]=\"busy()\">\n <ng-content></ng-content>\n </div>\n} @else {\n <div class=\"empty\">\n @if (contextError()) {\n <div class=\"error\">{{ contextError() }}</div>\n } @else {\n <!-- EMPTY -->\n }\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, input, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport {\n AuditEntry,\n AuditQueryResult,\n AuditService,\n DmsObject,\n EventService,\n LocaleDatePipe,\n SystemService,\n TranslateModule,\n TranslateService,\n YuvEvent,\n YuvEventType\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { YUV_ICONS } from '@yuuvis/client-framework/icons';\nimport { finalize } from 'rxjs';\nimport { MatIconModule } from '@angular/material/icon';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'yuv-object-audit',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, LocaleDatePipe, BusyOverlayDirective, TranslateModule, MatIconModule, YmtIconButtonDirective],\n templateUrl: './object-audit.component.html',\n styleUrl: './object-audit.component.scss'\n})\nexport class ObjectAuditComponent {\n private FILTER_CACHE_KEY = 'yuv.audit.filters';\n\n private _objectID?: string;\n private _objectTypeID?: string;\n\n icons = {\n filter: YUV_ICONS.filter,\n arrowNext: YUV_ICONS.arrowNext\n };\n\n yuvBusyOverlay = true;\n\n auditsRes?: AuditQueryResult;\n resolvedItems = signal<ResolvedAuditEntry[]>([]);\n searchPanelShow = false;\n error = false;\n busy = false;\n searchActions: { label: string; actions: string[] }[] = [];\n auditLabels: any = {};\n\n dmsObject = input<DmsObject | undefined>(undefined);\n\n #dmsObjectEffect = effect(() => {\n const o = this.dmsObject();\n if (!o) {\n this._objectID = undefined;\n this._objectTypeID = undefined;\n this.auditsRes = undefined;\n } else if (!this._objectID || this._objectID !== o.id) {\n this._objectID = o.id;\n this._objectTypeID = o.objectTypeId;\n this.query();\n } else {\n this.query();\n }\n });\n\n /**\n * A list of audits that should not be shown. Use the audit codes (like 100, 301, etc.).\n * This will also disable the corresponding filters.\n */\n skipActions = input<number[]>([]);\n\n /**\n * Whether or not to ignore admin and user separation of audit entries\n */\n allActions = input(false);\n\n get objectID() {\n return this._objectID;\n }\n\n constructor(\n private auditService: AuditService,\n private eventService: EventService,\n private system: SystemService,\n private translate: TranslateService\n ) {\n this.auditLabels = {\n a100: this.translate.instant('yuv.audit.label.create.metadata'),\n a101: this.translate.instant('yuv.audit.label.create.metadata.withcontent'),\n a110: this.translate.instant('yuv.audit.label.create.tag'),\n\n a200: this.translate.instant('yuv.audit.label.delete'),\n a201: this.translate.instant('yuv.audit.label.delete.content'), // #v\n a202: this.translate.instant('yuv.audit.label.delete.marked'),\n a210: this.translate.instant('yuv.audit.label.delete.tag'), // #v\n a220: this.translate.instant('yuv.audit.label.delete.version'), // #v\n\n a300: this.translate.instant('yuv.audit.label.update.metadata'),\n a301: this.translate.instant('yuv.audit.label.update.content'),\n a302: this.translate.instant('yuv.audit.label.update.metadata.withcontent'),\n a303: this.translate.instant('yuv.audit.label.update.move.content'),\n a310: this.translate.instant('yuv.audit.label.update.tag'),\n a325: this.translate.instant('yuv.audit.label.update.restore'),\n a340: this.translate.instant('yuv.audit.label.update.move'),\n\n a400: this.translate.instant('yuv.audit.label.get.content'),\n a401: this.translate.instant('yuv.audit.label.get.metadata'),\n a402: this.translate.instant('yuv.audit.label.get.rendition.text'),\n a403: this.translate.instant('yuv.audit.label.get.rendition.pdf'),\n a404: this.translate.instant('yuv.audit.label.get.rendition.thumbnail'),\n\n a10000: this.translate.instant('yuv.audit.label.get.custom')\n };\n\n this.eventService\n .on(YuvEventType.DMS_OBJECT_UPDATED)\n .pipe(takeUntilDestroyed())\n .subscribe((e: YuvEvent) => {\n const dmsObject = e.data as DmsObject;\n // reload audit entries when update belongs to the current dms object\n if (dmsObject.id === this.objectID) {\n this.query();\n }\n });\n }\n\n private fetchAuditEntries() {\n if (!this._objectID || !this._objectTypeID) return;\n this.error = false;\n this.busy = true;\n\n this.auditService\n .getAuditEntries(this._objectID, { skipActions: this.skipActions() })\n .subscribe({\n next: (res: AuditQueryResult) => {\n this.busy = false;\n this.auditsRes = res;\n this.resolvedItems.set(this.mapResult(res));\n },\n error: () => {\n this.busy = false;\n this.onError();\n }\n });\n }\n\n private mapResult(res: AuditQueryResult): ResolvedAuditEntry[] {\n return (\n res.items\n // TODO: Remove this filter once the system:ren:text audit lifecycle planning is complete and the tag's purpose is fully defined.\n // https://help.optimal-systems.com/yuuvis/Momentum/latest/index.html#_content_renditions_asynchronous_full_text_indexing.html\n .filter((i) => !i.detail.includes('[system:ren:text, 1]'))\n .map((i) => {\n const r: ResolvedAuditEntry = { ...i, label: this.auditLabels['a' + i.action] };\n // tag related audits\n if ([110, 210, 310].includes(i.action)) {\n const params = this.getAuditEntryParams(i);\n if (params) {\n const localizedLabel = `${params[0]}:${params[1]}`;\n r.more = `${this.system.getLocalizedLabel(params[0]) ?? params[0]}: ${this.system.getLocalizedLabel(localizedLabel) ?? localizedLabel}`;\n }\n }\n // restore audit\n else if (i.action === 325) {\n const params = this.getAuditEntryParams(i);\n r.more = this.translate.instant('yuv.audit.label.update.restore.more', { version: params[0] || '[?]' });\n }\n // custom audits\n else if (i.action === 10000) {\n r.label = this.system.getLocalizedLabel(`audit:custom:${i.subaction}`) || `${i.subaction}`;\n }\n return r;\n })\n );\n }\n\n private getAuditEntryParams(auditItem: AuditEntry): string[] {\n const m = auditItem.detail.match(/\\[(.*?)\\]/);\n return m && m[1] ? m[1].split(',').map((i) => i.trim()) : [];\n }\n\n /**\n * Execute a query from the search panel.\n */\n query() {\n this.fetchAuditEntries();\n }\n\n goToPage(page: number) {\n if (this.auditsRes) {\n this.busy = true;\n this.auditService\n .getPage(this.auditsRes, page)\n .pipe(finalize(() => (this.busy = false)))\n .subscribe({\n next: (res: AuditQueryResult) => {\n this.auditsRes = res;\n this.resolvedItems.set(this.mapResult(res));\n },\n error: () => {\n this.onError();\n }\n });\n }\n }\n\n private onError() {\n this.auditsRes = undefined;\n this.error = true;\n }\n}\n\ninterface ResolvedAuditEntry extends AuditEntry {\n label: string;\n}\n","<div class=\"yuv-audit\" [ngClass]=\"{ singleEntry: auditsRes?.items?.length === 1, onPage: auditsRes && auditsRes.page > 1 }\" [yuvBusyOverlay]=\"busy\">\n @if (error) {\n <div class=\"error\">\n <div translate>yuv.audit.fetch.error</div>\n </div>\n }\n\n @if (auditsRes) {\n <!-- list of audits -->\n @let resItems = resolvedItems();\n @if (resItems.length) {\n <ul class=\"timeline\" [attr.aria-label]=\"'yuv.audit.timeline' | translate\">\n @for (item of resItems; track $index) {\n <li class=\"audit\" attr.aria-labelledby=\"'title-{{ $index }} creator-{{ $index }} date-{{ $index }}'\">\n <time [attr.datetime]=\"item.creationDate\" class=\"date\">{{ item.creationDate | localeDate }}</time>\n <div class=\"node\">\n <div class=\"label\">\n <span class=\"title\" id=\"title-{{ $index }}\">{{ item.label }}</span>\n </div>\n <div class=\"more meta\">{{ item.more }}</div>\n <div class=\"creator meta\" id=\"creator-{{ $index }}\">{{ item.createdBy.title }}</div>\n </div>\n </li>\n }\n </ul>\n } @else {\n <div class=\"empty\" translate>yuv.audit.result.empty</div>\n }\n\n <!-- controls -->\n @if (auditsRes.hasMoreItems || auditsRes.page > 1) {\n <div class=\"footer\" yuvOfflineDisabled>\n <div class=\"paging\">\n <button\n ymtIconButton\n [attr.aria-label]=\"'yuv.audit.label.paging.prev' | translate\"\n [disabled]=\"auditsRes.page === 1\"\n (click)=\"goToPage(auditsRes.page - 1)\"\n >\n <mat-icon>chevron_left</mat-icon>\n </button>\n <div class=\"page\">\n {{ auditsRes.page }}\n </div>\n <button\n ymtIconButton\n [attr.aria-label]=\"'yuv.audit.label.paging.next' | translate\"\n [disabled]=\"!auditsRes.hasMoreItems\"\n (click)=\"goToPage(auditsRes.page + 1)\"\n >\n <mat-icon>chevron_right</mat-icon>\n </button>\n </div>\n </div>\n }\n }\n</div>\n","import { Component, effect, inject, input, linkedSignal, output, signal, untracked, viewChildren } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ObjectMetadataSectionInput } from './object-metadata-section.interface';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormStatusChangedEvent, IObjectFormElementExtension, ObjectFormComponent, ObjectFormOptions } from '@yuuvis/client-framework/object-form';\nimport { Situation, SystemService } from '@yuuvis/client-core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { catchError, map, of } from 'rxjs';\n\n@Component({\n selector: 'yuv-object-metadata-section',\n imports: [CommonModule, MatIconModule, MatProgressSpinnerModule, ObjectFormComponent],\n templateUrl: './object-metadata-section.component.html',\n styleUrl: './object-metadata-section.component.scss'\n})\nexport class ObjectMetadataSectionComponent {\n #system = inject(SystemService);\n\n objectForms = viewChildren<ObjectFormComponent>(ObjectFormComponent);\n\n _formOptions = signal<ObjectFormOptions | undefined>(undefined);\n\n section = input.required<ObjectMetadataSectionInput>();\n expandedInput = input<boolean>(false, { alias: 'expanded' });\n elementExtensions = input<IObjectFormElementExtension[]>([]);\n expanded = linkedSignal(this.expandedInput);\n\n #formOptionsResource = rxResource({\n request: () => ({ section: this.section(), extended: this.expanded() }),\n loader: ({ request }) => {\n if (request.extended && request.section) {\n return this.#system.getObjectTypeForm(request.section.id, request.section.situation || Situation.EDIT).pipe(\n catchError(() => of(undefined)),\n map((formModel) => ({ formModel, data: request.section?.data || {} }))\n );\n } else {\n return of(undefined);\n }\n }\n });\n\n formOptions = this.#formOptionsResource.value;\n busy = this.#formOptionsResource.isLoading;\n\n statusChanged = output<FormStatusChangedEvent>();\n\n resetForm() {\n this.objectForms()?.forEach((f) => f.resetForm());\n }\n\n setFormPristine() {\n this.objectForms()?.forEach((f) => f.setFormPristine());\n }\n}\n","@let _section = section();\n@let fo = formOptions();\n\n<h3>\n <button\n type=\"button\"\n [attr.aria-expanded]=\"expanded()\"\n class=\"accordion-trigger\"\n [attr.aria-controls]=\"'sect_' + _section.id\"\n [id]=\"'accordion_' + _section.id\"\n (click)=\"expanded.set(!expanded())\"\n [attr.aria-busy]=\"busy()\"\n >\n @if (_section.icon) {\n @if (_section.svgIcon) {\n <mat-icon [svgIcon]=\"_section.icon\"></mat-icon>\n } @else {\n <mat-icon>{{ _section.icon }}</mat-icon>\n }\n }\n <span>{{ _section.label }}</span>\n @if (busy()) {\n <mat-spinner diameter=\"24\"></mat-spinner>\n }\n <mat-icon class=\"arr\">keyboard_arrow_down</mat-icon>\n </button>\n</h3>\n<div [id]=\"'sect_' + _section.id\" role=\"region\" [attr.aria-labelledby]=\"'accordion_' + _section.id\" class=\"accordion-panel\">\n @if (fo && expanded()) {\n <yuv-object-form [formOptions]=\"fo\" [elementExtensions]=\"elementExtensions()\" (statusChanged)=\"statusChanged.emit($event)\"></yuv-object-form>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, effect, inject, Input, input, linkedSignal, OnDestroy, output, signal, viewChildren } from '@angular/core';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport {\n DmsObject,\n DmsService,\n FlavoredDmsObject,\n NotificationService,\n ObjectTypeFlavor,\n PendingChangesService,\n Situation,\n SystemService,\n TranslateModule,\n TranslateService\n} from '@yuuvis/client-core';\nimport { BusyOverlayDirective } from '@yuuvis/client-framework/common';\nimport { FormStatusChangedEvent, IObjectFormElementExtension, ObjectFormComponent, ObjectFormOptions } from '@yuuvis/client-framework/object-form';\nimport { ObjectSummaryDataComponent } from '@yuuvis/client-framework/object-summary';\nimport { RendererDirectiveInput } from '@yuuvis/client-framework/renderer';\nimport { YmtButtonDirective } from '@yuuvis/material';\nimport { map, of, Subscription } from 'rxjs';\nimport { ObjectMetadataSectionComponent } from './object-metadata-section/object-metadata-section.component';\n\n@Component({\n selector: 'yuv-object-metadata',\n standalone: true,\n imports: [\n CommonModule,\n ObjectFormComponent,\n ObjectSummaryDataComponent,\n BusyOverlayDirective,\n TranslateModule,\n MatButtonModule,\n MatIconModule,\n ReactiveFormsModule,\n ObjectMetadataSectionComponent,\n YmtButtonDirective\n ],\n templateUrl: './object-metadata.component.html',\n styleUrl: './object-metadata.component.scss',\n host: {\n '[class.empty]': 'empty()',\n '[class.loading]': 'busyLoading()'\n }\n})\nexport class ObjectMetadataComponent implements OnDestroy {\n #pendingChanges = inject(PendingChangesService);\n #notificationService = inject(NotificationService);\n translate = inject(TranslateService);\n #system = inject(SystemService);\n #dmsService = inject(DmsService);\n\n objectForms = viewChildren<ObjectFormComponent>(ObjectFormComponent);\n objectMetadataSectionForms = viewChildren<ObjectMetadataSectionComponent>(ObjectMetadataSectionComponent);\n\n #pendingTaskId?: string;\n _dmsObject?: DmsObject;\n #formSubscriptions: Subscription[] = [];\n\n busySaving = signal<boolean>(false);\n busyLoading = signal<boolean>(false);\n disableControls = input<boolean>(false);\n /**\n * Set to 'true' to disable the basic metadata form. This will hide\n * the basic metadata section that shows common object proeperties like\n * creation date, creator, version, etc.\n */\n disableBasicMetadata = input<boolean>(false);\n elementExtensions = input<IObjectFormElementExtension[]>([]);\n controlsVisible = signal<boolean>(false);\n empty = computed(() => !this.mainFormOptions() && this.flavorFormOptions().length === 0 && this.disableBasicMetadata());\n\n // state of all individual forms\n #formStates: Map<string, FormStatusChangedEvent> = new Map<string, FormStatusChangedEvent>();\n\n baseData: {\n label: string;\n value: RendererDirectiveInput;\n }[] = [];\n\n /**\n * Form situation, if not set default will be 'EDIT'\n */\n @Input() situation: Situation = Situation.EDIT;\n /**\n * Set to 'true' to prevent all metadata from being edited\n */\n @Input() formDisabled = false;\n\n dmsObject = input<DmsObject | undefined>();\n #dmsObjectEffect = effect(() => {\n const object = this.dmsObject();\n this._dmsObject = object;\n });\n\n /**\n * @deprecated This input will be removed in the future.\n * Please migrate to using `dmsObject` and `flavors` inputs instead.\n */\n flavoredDmsObject = input<FlavoredDmsObject | undefined>();\n #flavoredDmsObjectEffect = effect(() => {\n const flavoredDmsObject = this.flavoredDmsObject();\n this.#init(flavoredDmsObject?.object, flavoredDmsObject?.flavors);\n });\n combinedFormState?: FormStatusChangedEvent;\n\n /**\n * Emits the updated `DmsObject` when metadata have been saved.\n */\n indexDataSaved = output<DmsObject>();\n /**\n * Emits the current state of the metadata form.\n */\n statusChanged = output<FormStatusChangedEvent>();\n\n /**\n * @deprecated once input flavoredDmsObject will be removed in the future.\n * this is not used anymore\n *\n */\n #init(object?: DmsObject, flavors?: ObjectTypeFlavor[]) {\n if (object && (!this._dmsObject || this._dmsObject !== object)) {\n this.#objectToForm(object, flavors);\n }\n this._dmsObject = object;\n }\n\n #mainFormOptionsRecource = rxResource<ObjectFormOptions | undefined, DmsObject | undefined>({\n request: this.dmsObject,\n loader: ({ request }) => {\n if (!request) return of(undefined);\n return this.#system.getObjectTypeForms([request.objectTypeId], this.situation).pipe(\n map((res) =>\n res[request.objectTypeId]\n ? {\n formModel: res[request.objectTypeId],\n data: request.data,\n disabled: this.formDisabled || !request.permissions?.writeIndexData\n }\n : undefined\n )\n );\n }\n });\n // form of the dms object itself\n mainFormOptions = this.#mainFormOptionsRecource.value;\n mainFormOptionsIsLoading = this.#mainFormOptionsRecource.isLoading;\n\n flavors = input<ObjectTypeFlavor[] | undefined>(undefined);\n // forms off allpied flavors\n flavorFormOptions = linkedSignal({\n source: () => ({ object: this.dmsObject(), flavors: this.flavors() }),\n computation: ({ object, flavors }) => {\n const mappedFlavors: Record<string, ObjectTypeFlavor> = (flavors || []).reduce((acc, curr) => ({ ...acc, [curr.sot]: curr }), {});\n if (!object) return [];\n return (flavors || [])\n .map((f) => f.sot)\n .map((id) => ({\n id,\n label: this.#system.getLocalizedLabel(id),\n icon: mappedFlavors[id]?.icon,\n svgIcon: mappedFlavors[id]?.svgIcon,\n data: object.data\n }));\n }\n });\n\n /**\n * @deprecated once input flavoredDmsObject will be removed in the future.\n * this is not used anymore\n *\n */\n #objectToForm(object?: DmsObject, flavors?: ObjectTypeFlavor[]) {\n if (object) {\n const mappedFlavors: Record<string, ObjectTypeFlavor> = (flavors || []).reduce((acc, curr) => ({ ...acc, [curr.sot]: curr }), {});\n this.busyLoading.set(true);\n\n this.flavorFormOptions.set(\n (flavors || [])\n .map((f) => f.sot)\n .map((id) => ({\n id,\n label: this.#system.getLocalizedLabel(id),\n icon: mappedFlavors[id]?.icon,\n svgIcon: mappedFlavors[id]?.svgIcon,\n data: object.data\n // formOptions: {\n // formModel: res[id],\n // data: object.data\n // }\n }))\n );\n\n this.#system.getObjectTypeForms([object.objectTypeId], this.situation).subscribe({\n next: (res) => {\n this.mainFormOptions.set(\n res[object.objectTypeId]\n ? {\n formModel: res[object.objectTypeId],\n data: object.data,\n disabled: this.formDisabled || !object.permissions?.writeIndexData\n }\n : undefined\n );\n\n // this.flavorFormOptions.set(\n // Object.keys(res)\n // .filter((id) => id !== object.objectTypeId)\n // .map((id) => ({\n // id,\n // label: res[id].label,\n // icon: mappedFlavors[id]?.icon,\n // svgIcon: mappedFlavors[id]?.svgIcon,\n // data: object.data,\n // // formOptions: {\n // // formModel: res[id],\n // // data: object.data\n // // }\n // }))\n // );\n this.busyLoading.set(false);\n },\n error: () => {\n this.busyLoading.set(false);\n }\n });\n }\n }\n\n onFormStatusChanged(formId: string, evt: FormStatusChangedEvent) {\n this.#formStates.set(formId, evt);\n this.#getCombinedFormState();\n if (this.combinedFormState?.dirty) this.#startPending();\n else this.#finishPending();\n this.controlsVisible.set(!!this.combinedFormState?.dirty);\n if (this.combinedFormState) this.statusChanged.emit(this.combinedFormState);\n }\n\n #getCombinedFormState(): FormStatusChangedEvent {\n const combinedFormState = {\n dirty: false,\n indexdataChanged: false,\n invalid: false,\n data: {}\n };\n this.#formStates.forEach((s) => {\n if (s.dirty) {\n combinedFormState.dirty = s.dirty;\n }\n if (s.indexdataChanged) {\n combinedFormState.indexdataChanged = s.indexdataChanged;\n }\n if (s.invalid) {\n combinedFormState.invalid = s.invalid;\n }\n combinedFormState.data = { ...combinedFormState.data, ...s.data };\n });\n this.combinedFormState = combinedFormState;\n return this.combinedFormState;\n }\n\n save() {\n // TODO: this._dmsObject should be this.dmsObject() once this.#init() is removed\n if (this._dmsObject && this.combinedFormState) {\n this.busySaving.set(true);\n this.#dmsService.updateDmsObject(this._dmsObject.id, this.combinedFormState.data).subscribe({\n next: () => {\n this.setFormPristine();\n this.indexDataSaved.emit(this._dmsObject!);\n this.#finishPending();\n this.controlsVisible.set(false);\n this.busySaving.set(false);\n },\n error: (err) => {\n this.#notificationService.error(\n '',\n // this._dmsObject?.title || '',\n err.status === 404 ? this.translate.instant('yuv.object-metadata.context.load.error') : this.translate.instant('yuv.object-metadata.save.error')\n );\n this.controlsVisible.set(false);\n this.busySaving.set(false);\n }\n });\n }\n }\n /**\n * Reset te form to its initial state\n */\n resetForm() {\n if (this.objectForms()?.length) {\n this.objectForms().forEach((f) => f.resetForm());\n }\n\n if (this.objectMetadataSectionForms()?.length) {\n this.objectMetadataSectionForms().forEach((s) => s.resetForm());\n }\n (this.objectForms()?.length || this.objectMetadataSectionForms()?.length) && this.#formStates.clear();\n }\n\n setFormPristine() {\n if (this.objectForms()?.length) {\n this.objectForms().forEach((f) => f.setFormPristine());\n }\n if (this.objectMetadataSectionForms()?.length) {\n this.objectMetadataSectionForms().forEach((s) => s.setFormPristine());\n }\n (this.objectForms()?.length || this.objectMetadataSectionForms()?.length) && this.#formStates.clear();\n }\n\n #startPending() {\n // because this method will be called every time the form status changes,\n // pending task will only be started once until it was finished\n if (!this.#pendingChanges.hasPendingTask(this.#pendingTaskId || ' ')) {\n this.#pendingTaskId = this.#pendingChanges.startTask(this.translate.instant('yuv.object-metadata.pending-changes.alert'));\n }\n }\n\n #finishPending() {\n if (this.#pendingTaskId) this.#pendingChanges.finishTask(this.#pendingTaskId);\n }\n\n ngOnDestroy(): void {\n this.#formSubscriptions.forEach((s) => s.unsubscribe());\n }\n}\n","<main [yuvBusyOverlay]=\"busySaving() || busyLoading() || mainFormOptionsIsLoading()\">\n @if (empty()) {\n <p>{{ 'yuv.object-metadata.empty.message' | translate }}</p>\n }\n @if (!mainFormOptions()) {\n <yuv-object-form\n [formOptions]=\"mainFormOptions()\"\n [elementExtensions]=\"elementExtensions()\"\n (statusChanged)=\"onFormStatusChanged('main', $event)\"\n ></yuv-object-form>\n }\n @for (fo of flavorFormOptions(); track $index) {\n <yuv-object-metadata-section\n [section]=\"fo\"\n [elementExtensions]=\"elementExtensions()\"\n [expanded]=\"$index === 0\"\n (statusChanged)=\"onFormStatusChanged(fo.id, $event)\"\n ></yuv-object-metadata-section>\n }\n\n <!-- base data -->\n @let object = dmsObject() ?? _dmsObject;\n @if (object && !disableBasicMetadata()) {\n <yuv-object-summary-data [dmsObject]=\"object\"></yuv-object-summary-data>\n }\n</main>\n\n<footer [attr.inert]=\"disableControls() || !controlsVisible() || null\">\n <div class=\"container\">\n <button\n ymtButton=\"secondary\"\n button-size=\"small\"\n [disabled]=\"busySaving() || busyLoading()\"\n (click)=\"resetForm()\"\n [hidden]=\"!combinedFormState?.dirty\"\n [disabled]=\"!combinedFormState?.dirty\"\n >\n {{ 'yuv.object-metadata.button.reset' | translate }}\n </button>\n <button\n ymtButton=\"primary\"\n button-size=\"small\"\n (click)=\"save()\"\n [disabled]=\"!combinedFormState?.dirty || combinedFormState?.invalid || busySaving() || busyLoading()\"\n >\n {{ 'yuv.object-metadata.button.save' | translate }}\n </button>\n </div>\n</footer>\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, inject, input, signal, untracked } from '@angular/core';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { DmsObject, ObjectTypeFlavor, TabGuardDirective, TranslateModule, UserService, VirtualObjectType } from '@yuuvis/client-core';\nimport { ObjectPreviewComponent } from '@yuuvis/client-framework/object-preview';\nimport { ObjectAuditComponent } from './object-audit/object-audit.component';\nimport { ObjectDetailsShellComponent } from './object-details-shell/object-details-shell.component';\nimport { ObjectDetailsShellService } from './object-details-shell/object-details-shell.service';\nimport { ObjectMetadataComponent } from './object-metadata/object-metadata.component';\n\n@Component({\n selector: 'yuv-object-details',\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n MatTabsModule,\n TabGuardDirective,\n ObjectDetailsShellComponent,\n ObjectPreviewComponent,\n ObjectMetadataComponent,\n ObjectAuditComponent\n ],\n providers: [ObjectDetailsShellService],\n templateUrl: './object-details.component.html',\n styleUrls: ['./object-details.component.scss']\n})\nexport class ObjectDetailsComponent {\n readonly #userService = inject(UserService);\n #odShellService = inject(ObjectDetailsShellService);\n\n isAdvancedUser = this.#userService.isAdvancedUser;\n\n currentUser = signal(this.#userService.getCurrentUser());\n\n /**\n * ID to store the components layout state (splitted tabs, gutter position)\n */\n layoutSettingsID = signal<string | undefined>(undefined);\n\n /**\n * DmsObject to show the details for.\n */\n dmsObjectInput = input<DmsObject | undefined>(undefined, { alias: 'dmsObject' });\n dmsObjectInputEffect = effect(() => {\n const o = this.dmsObjectInput();\n if (o) untracked(() => this.#odShellService.setDmsObject(o));\n });\n\n dmsObject = this.#odShellService.dmsObject;\n\n /**\n * Flavors to take into account. These flavors define for example the metadata\n * of an object.\n */\n flavors = input<ObjectTypeFlavor[]>([]);\n\n /**\n * Virtual object type to use for retrieving header data\n */\n type = input.required<VirtualObjectType>();\n\n /**\n * If the object config for the given type has been stored in a certain bucket, this\n * bucket can be provided here. If no bucket is set, the config will be retrieved\n * from the main object config\n */\n objectConfigBucket = input<string | undefined>(undefined);\n /**\n * ID of a DmsObject. The object will be fetched from the backend upfront.\n */\n objectId = input<string | undefined>(undefined);\n #objectIdEffect = effect(() => {\n const oid = this.objectId();\n if (oid) this.#odShellService.fetchDmsObject(oid);\n });\n /**\n * Whether to hide the header\n */\n hideHeader = input<boolean>(false);\n\n onIndexdataSaved(updatedObject: DmsObject) {\n this.#odShellService.setDmsObject(updatedObject);\n }\n\n // versionSelected(version: number) {\n // const nav = ['../..', 'version'];\n // this.#router.navigate([...nav, this.dmsObject?.version], { queryParams: { version }, relativeTo: this.#route });\n // }\n}\n","<yuv-object-details-shell [type]=\"type()\" [hideHeader]=\"hideHeader()\" [bucket]=\"objectConfigBucket()\">\n @let dmsObj = dmsObject();\n <mat-tab-group yuvTabGuardDisable>\n <!-- content -->\n @if (dmsObj && dmsObj.content) {\n <mat-tab [label]=\"'yuv.object-details.tabs.content.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-preview [dmsObject]=\"dmsObj\"></yuv-object-preview>\n </ng-template>\n </mat-tab>\n }\n\n <!-- indexdata -->\n <mat-tab [label]=\"'yuv.object-metadata.tabs.indexdata.title' | translate\">\n <ng-template matTabContent>\n <yuv-object-metadata [dmsObject]=\"dmsObject()\" [flavors]=\"flavors()\" (indexDataSaved)=\"onIndexdataSaved($event)\"> </yuv-object-metadata>\n </ng-template>\n </mat-tab>\n <!-- history -->\n <mat-tab [label]=\"'yuv.object-metadata.tabs.history.title' | translate\">\n <ng-template matTabContent> <yuv-object-audit [dmsObject]=\"dmsObj\"></yuv-object-audit> </ng-template\n ></mat-tab>\n </mat-tab-group>\n</yuv-object-details-shell>\n","import { NgModule } from '@angular/core';\nimport { ObjectDetailsHeaderComponent } from './object-details-header/object-details-header.component';\nimport { ObjectDetailsShellComponent } from './object-details-shell/object-details-shell.component';\nimport { ObjectDetailsComponent } from './object-details.component';\nimport { ObjectMetadataComponent } from './object-metadata/object-metadata.component';\nimport { ObjectAuditComponent } from './object-audit/object-audit.component';\nimport { RetentionBadgeComponent } from '@yuuvis/client-framework/common';\n\nconst cmp = [\n ObjectDetailsComponent,\n ObjectDetailsHeaderComponent,\n ObjectDetailsShellComponent,\n ObjectMetadataComponent,\n ObjectAuditComponent,\n RetentionBadgeComponent\n]\n\n@NgModule({\n imports: cmp,\n exports: cmp\n})\nexport class YuvObjectDetailsModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Pipe({\n name: 'formSectionGroup',\n standalone: true \n})\nexport class FormSectionGroupPipe implements PipeTransform {\n transform(form: FormGroup, id: string): FormGroup {\n return form.get(id) as FormGroup;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
|
|
@@ -1185,6 +1185,13 @@ class ObjectFormComponent {
|
|
|
1185
1185
|
data: this.formData,
|
|
1186
1186
|
indexdataChanged: false
|
|
1187
1187
|
});
|
|
1188
|
+
// also set the data of the form options to the current data
|
|
1189
|
+
// so resetting the form afterwards will reset to the current
|
|
1190
|
+
// pristine state
|
|
1191
|
+
const fo = this.formOptions();
|
|
1192
|
+
if (!fo)
|
|
1193
|
+
return;
|
|
1194
|
+
fo.data = this.formData;
|
|
1188
1195
|
}
|
|
1189
1196
|
// reset the form to its initial state
|
|
1190
1197
|
resetForm() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-client-framework-object-form.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-form/src/lib/form-scripting.service.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-extension.interface.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-script/form-scripting-element-extension/form-scripting-element-extension.component.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-script/form-scripting-element-extension/form-scripting-element-extension.component.html","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form.validation.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form.utils.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form.service.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-element/object-form-element.component.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-element/object-form-element.component.html","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-group/object-form-group.component.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-group/object-form-group.component.html","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-script/object-form-script.service.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-script/object-form-scripting-scope.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form.component.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form.component.html","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form.module.ts","../../../../../libs/yuuvis/client-framework/object-form/src/yuuvis-client-framework-object-form.ts"],"sourcesContent":["import { inject, Injectable, NgZone, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n ApiBase,\n AppCacheService,\n BackendService,\n DmsObject,\n DmsService,\n EventService,\n HttpOptions,\n NotificationService,\n Operator,\n SearchQuery,\n SearchResult,\n SearchResultItem,\n SearchService,\n SystemService,\n TranslateService,\n UserService,\n Utils,\n YuvEventType,\n YuvUser\n} from '@yuuvis/client-core';\nimport { firstValueFrom, map } from 'rxjs';\nimport { FormScriptingAPI, FormScriptingElementExtension } from './form-scripting.api.interface';\nimport { ObjectFormComponent } from './object-form.component';\n\n@Injectable()\nexport class FormScriptingApiService {\n #ngZone = inject(NgZone);\n #router = inject(Router);\n #eventService = inject(EventService);\n #userService = inject(UserService);\n #dmsService = inject(DmsService);\n #systemService = inject(SystemService);\n #searchService = inject(SearchService);\n #backend = inject(BackendService);\n #translate = inject(TranslateService);\n #notifications = inject(NotificationService);\n #appCache = inject(AppCacheService);\n\n static EVENT_MODEL_CHANGED = 'yuv.event.object-form.model.changed';\n #activeFormComponents = new Map<string, ObjectFormComponent>();\n elementExtensions = signal<Record<string, FormScriptingElementExtension>>({});\n formId?: string;\n\n get api() {\n return this.getApi();\n }\n\n registerActiveForm(component: ObjectFormComponent) {\n const id = component.formOptions()?.formModel?.name || component?.id;\n return id && this.#activeFormComponents.set(id, component);\n }\n\n unregisterActiveForm(component: ObjectFormComponent) {\n const id = component.formOptions()?.formModel?.name || component?.id;\n return id && this.#activeFormComponents.delete(id);\n }\n\n getApi(): FormScriptingAPI {\n const formId = this.formId;\n return {\n elementExtensions: {\n register: (extensions: FormScriptingElementExtension[]) => {\n extensions.forEach((ext) => {\n if (ext.id) this.elementExtensions.set({ ...this.elementExtensions(), [ext.id]: ext });\n });\n }\n },\n events: {\n yuuvisEventType: YuvEventType,\n on: (type: string) => this.#ngZone.run(() => this.#eventService.on(type)),\n trigger: (type: string, data?: any) => this.#ngZone.run(() => this.#eventService.trigger(type, data))\n },\n session: {\n getUser: () => this.getCurrentUser(),\n user: {\n get: () => this.getCurrentUser(),\n hasRole: (role: string) => this.getCurrentUser().authorities?.includes(role) || false\n }\n },\n http: {\n get: (uri, base, options) => this.get(uri, base, options),\n post: (uri, data, base, options) => this.post(uri, data, base, options),\n del: (uri, base, options) => this.del(uri, base, options),\n put: (uri, data, base, options) => this.put(uri, data, base, options)\n },\n form: {\n activeForms: this.#activeFormComponents,\n getValue: (formControlName) =>\n Array.from(this.#activeFormComponents.values()).reduce(\n (prev: Record<string, unknown>, cur: ObjectFormComponent) => ({ ...prev, ...(cur.formData || {}) }),\n {}\n )[formControlName],\n setValue: (formControlName, newValue) => this.api.form.modelChange(formControlName, { name: 'value', newValue }),\n modelChange: (formControlName, change) =>\n this.#ngZone.run(() =>\n this.#eventService.trigger(FormScriptingApiService.EVENT_MODEL_CHANGED, {\n formId,\n formControlName,\n change\n })\n )\n },\n storage: {\n getItem: (key) => firstValueFrom(this.#appCache.getItem(key)),\n setItem: (key, value) => firstValueFrom(this.#appCache.setItem(key, value))\n },\n notifier: {\n success: (text, title) => this.#notifications.success(title, text),\n error: (text, title) => this.#notifications.error(title, text),\n info: (text, title) => this.#notifications.info(title, text),\n warning: (text, title) => this.#notifications.warning(title, text)\n },\n util: {\n translate: (key, data) => this.#translate.instant(key, data)\n }\n };\n }\n\n get(uri: string, base?: string, options?: HttpOptions) {\n return firstValueFrom(\n this.#backend.get(uri, base || ApiBase.none, options || { observe: 'response' }).pipe(\n map((res: any) => {\n return options ? res : { status: res.status, data: res.body };\n })\n )\n );\n }\n\n put(uri: string, data: Record<string, unknown>, base?: string, options?: HttpOptions) {\n return firstValueFrom(this.#backend.put(uri, data, base || ApiBase.none, options));\n }\n\n post(uri: string, data: Record<string, unknown>, base?: string, options?: HttpOptions) {\n return firstValueFrom(this.#backend.post(uri, data, base || ApiBase.none, options));\n }\n\n del(uri: string, base?: string, options?: HttpOptions) {\n return firstValueFrom(this.#backend.delete(uri, base || ApiBase.none, options));\n }\n\n getCurrentUser(): YuvUser {\n return this.#userService.getCurrentUser();\n }\n\n getDmsObject(id: string, version: number): Promise<DmsObject> {\n return firstValueFrom(this.#dmsService.getDmsObject(id, version))\n .then((response) => {\n return Promise.resolve(response);\n })\n .catch(this.#handleError);\n }\n\n /**\n * fetches dms objects from the server that match the given params\n *\n * @param fields - the fields to match. example: {name: 'max', plz: '47111}\n * @param type - the target object type\n */\n getResult(fields: Record<string, unknown>, type?: string): Promise<DmsObject[]> {\n const searchQuery: SearchQuery = {\n filters: Object.keys(fields).map((f) => ({\n f,\n o: Operator.EQUAL,\n v1: fields[f]\n }))\n };\n if (type) searchQuery.types = [type];\n return firstValueFrom(this.#searchService.search(searchQuery))\n .then((res: SearchResult) => {\n return Promise.resolve(\n res.items.map((resItem: SearchResultItem) => {\n new DmsObject(resItem);\n })\n );\n })\n .catch(this.#handleError);\n }\n\n encodeFileName(filename: string) {\n return Utils.encodeFileName(filename);\n }\n\n #handleError(error: any): Promise<any> {\n return Promise.reject(error.message || error);\n }\n}\n","import { Component, inject, input, Type } from '@angular/core';\nimport { FormScriptingAPI } from './form-scripting.api.interface';\nimport { FormScriptingApiService } from './form-scripting.service';\n\n// Extension of a particular form element\nexport interface IObjectFormElementExtension {\n property: string;\n cmp: Type<ObjectFormElementExtension>;\n}\n\nexport interface IObjectFormElementExtensionComponentInput {\n formControlName: string;\n}\n\n/**\n * Class to extend by form element extensions.\n */\n@Component({\n template: '',\n standalone: true\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport abstract class ObjectFormElementExtension {\n #formScriptingApiService = inject(FormScriptingApiService);\n\n input = input.required<IObjectFormElementExtensionComponentInput>();\n\n protected getApi(): FormScriptingAPI {\n return this.#formScriptingApiService.getApi();\n }\n\n protected getCurrentValue(): unknown {\n return this.getApi().form.getValue(this.input().formControlName);\n }\n\n setValue(value: unknown) {\n // only set the value if the value is different. Otherwise the form\n // will end up in an infinite loop\n if (value !== this.getCurrentValue()) this.getApi().form.setValue(this.input().formControlName, value);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, input } from '@angular/core';\nimport { YuvIconComponent } from '@yuuvis/client-framework/icons';\nimport { FormScriptingElementExtension } from '../../form-scripting.api.interface';\nimport { ObjectFormElementExtension } from '../../object-form-extension.interface';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'yuv-form-scripting-element-extension',\n standalone: true,\n imports: [CommonModule, YuvIconComponent, MatTooltipModule],\n templateUrl: './form-scripting-element-extension.component.html',\n styleUrl: './form-scripting-element-extension.component.scss' \n})\nexport class FormScriptingElementExtensionComponent extends ObjectFormElementExtension {\n ext = input<FormScriptingElementExtension>();\n defaultIcon =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M160-120q-33 0-56.5-23.5T80-200v-560q0-33 23.5-56.5T160-840h560q33 0 56.5 23.5T800-760v80h80v80h-80v80h80v80h-80v80h80v80h-80v80q0 33-23.5 56.5T720-120H160Zm0-80h560v-560H160v560Zm80-80h200v-160H240v160Zm240-280h160v-120H480v120Zm-240 80h200v-200H240v200Zm240 200h160v-240H480v240ZM160-760v560-560Z\"/></svg>';\n\n run() {\n this.ext()?.callback();\n }\n}\n","@let x = ext();\n@if (x) {\n @if (x.icon) {\n <button class=\"secondary\" (click)=\"run()\" [matTooltip]=\"x.label\">\n <yuv-icon [svg]=\"x.icon\"></yuv-icon>\n </button>\n } @else if (x.label) {\n <button class=\"secondary\" (click)=\"run()\">{{ x.label }}</button>\n } @else {\n <button class=\"secondary\" (click)=\"run()\">\n <yuv-icon [svg]=\"defaultIcon\"></yuv-icon>\n </button>\n }\n}\n","import { AbstractControl, ValidatorFn, Validators } from '@angular/forms';\nimport { ObjectFormControl, Situation } from '@yuuvis/client-core';\n/**\n * @ignore\n * Custom validation class.\n */\nexport class FormValidation {\n /**\n * Build validators for the given form element to be attached to\n * a reactive formControl.\n *\n * @param formElement - form element object\n * @param situation - form situation to fetch validators for\n */\n static getValidators(formElement: any, situation: string): ValidatorFn[] {\n const elmValidators: ValidatorFn[] = [];\n const { required, regex } = formElement;\n\n // apply situation based validations\n switch (situation) {\n case Situation.SEARCH: {\n // TODO: implement general validators for SEARCH situation\n break;\n }\n default: {\n if (required) {\n elmValidators.push(Validators.required);\n }\n if (regex && !formElement.multiselect) {\n elmValidators.push(Validators.pattern(regex));\n }\n break;\n }\n }\n return elmValidators;\n }\n\n /**\n *\n * @param control - from object control\n * @returns Validation object {eoformScript: {valid: boolean}} or null\n */\n static customScriptingValidation(): ValidatorFn {\n return (control: AbstractControl) => {\n const ctrl = control as ObjectFormControl;\n return ctrl._eoFormElement && ctrl._eoFormElement.error ? { eoformScript: { valid: false } } : null;\n };\n }\n}\n","import { Classification, ContentStreamField, ObjectFormControl, ObjectFormControlWrapper, Situation } from '@yuuvis/client-core';\nimport { FormValidation } from './object-form.validation';\n\n/**\n * Provides a rendering of form control in `ObjectFormComponent`, `QuickSearchComponent` so wie `SearchFilterFormComponent`.\n */\n\nexport class ObjectFormUtils {\n /**\n * Converts a form element object to an ObjectFormControlWrapper which then can be used to\n * render a from control. Result can be used as input for FormElementComponent.\n *\n * @param element - the element object or a json string\n * @param situation - optional property to set up a form situation for the control (default is EDIT)\n * @return the converted ObjectFormControlWrapper or null in case of an error\n */\n static elementToFormControl(formElement: any, situation?: string): ObjectFormControlWrapper {\n // Create the ObjectFormControlWrapper\n const wrapper = new ObjectFormControlWrapper({});\n const formSituation = situation ? situation : Situation.EDIT;\n\n wrapper._eoFormControlWrapper = {\n controlName: formElement.name,\n situation: formSituation\n };\n\n // create the actual form control\n const controlDisabled = !!formElement.readonly;\n const formControl = new ObjectFormControl(\n {\n value: formElement.value,\n disabled: controlDisabled\n },\n FormValidation.getValidators(formElement, formSituation)\n );\n\n // Form elements in SEARCH situation may arrive with a value set to NULL (explicit search for\n // fields that are NOT set). In that case we need to prepare the form control\n if (formSituation === Situation.SEARCH && formElement.value === null) {\n formElement.isNotSetValue = true;\n }\n\n ObjectFormUtils.updateFormElement(formElement);\n\n formControl._eoFormElement = formElement;\n wrapper.addControl(formElement.name, formControl);\n\n return wrapper;\n }\n /**\n * Update a form element after change a form element object.\n * @param formElement - the form element object\n */\n static updateFormElement(formElement: any) {\n if (formElement.type === 'decimal' && !formElement.scale) {\n formElement.scale = 2;\n }\n\n if (formElement.type === 'integer' && formElement.id === ContentStreamField.LENGTH) {\n formElement.classifications = [Classification.NUMBER_FILESIZE];\n }\n return formElement;\n }\n}\n","import { Injectable, Type } from '@angular/core';\nimport { ObjectFormControlWrapper, ObjectFormGroup, ObjectFormModel, Situation, YuvUser } from '@yuuvis/client-core';\n\nimport { IObjectFormElementExtension, ObjectFormElementExtension } from './object-form-extension.interface';\nimport { ObjectFormUtils } from './object-form.utils';\nimport { Subject } from 'rxjs';\nimport { FormStatusChangedEvent } from './object-form.interface';\n\n/**\n * @ignore\n */\n@Injectable()\nexport class ObjectFormService {\n #formExtensions: IObjectFormElementExtension[] = [];\n\n // Subject to notify about form status/value changes, e.g. when a form is reset or set to pristine.\n formChanged = new Subject<FormStatusChangedEvent>();\n\n setElementExtensions(formExtensions: IObjectFormElementExtension[]) {\n this.#formExtensions = formExtensions;\n }\n\n getElementExtensions(propertyName: string): Type<ObjectFormElementExtension>[] {\n return this.#formExtensions.filter((ext) => ext.property === propertyName).map((ext) => ext.cmp);\n }\n\n /**\n * Converts a form element object to an ObjectFormControlWrapper which then can be used to\n * render a from control. Result can be used as input for FormElementComponent.\n *\n * @param element - the element object or a json string\n * @param situation - optional property to set up a form situation for the control (default is EDIT)\n * @return the converted ObjectFormControlWrapper or null in case of an error\n */\n elementToFormControl(element: any, situation?: string): ObjectFormControlWrapper | null {\n let formElement;\n if (typeof element === 'string') {\n try {\n formElement = JSON.parse(element);\n } catch (e) {\n console.error('Unable to parse form element from json ', formElement);\n }\n } else {\n formElement = element;\n }\n return formElement ? ObjectFormUtils.elementToFormControl(element, situation) : null;\n }\n\n /**\n * Extract data from an object form based on situation.\n *\n * @param form - form to extract data from\n * @param situation - form situation\n * @param [initialData] - optional form data to match the current values against\n * This is required for editig indexdata (EDIT situation), because we have to compare new values\n * against the initial values. If a property that is contained in the forms initial data is removed\n * (e.g. set to null) then we have to set this null value, because otherwise the server would\n * ignore the changes.\n * @param isTableRowEditForm Flag indicating that the provided form is an inline form used by\n * a forms table element for editing rows. Those need a special handling.\n * @return extracted data as object\n */\n extractFormData(form: ObjectFormGroup, situation: string, initialData?: any, isTableRowEditForm?: boolean) {\n const extractedData = {};\n this.#getElementValues(extractedData, form, situation || 'EDIT', initialData, isTableRowEditForm);\n return extractedData;\n }\n\n // Recursive method to get the values from each form control.\n #getElementValues(data: any, formControl: ObjectFormModel, situation: string, initialData?: any, isTableRowEditForm?: boolean) {\n if (!formControl || !formControl.controls) {\n return;\n }\n\n if (formControl instanceof ObjectFormControlWrapper) {\n const fc: any = formControl._eoFormControlWrapper ? formControl.controls[formControl._eoFormControlWrapper.controlName] : null;\n if (!fc) {\n return;\n }\n\n if (fc._eoFormElement.isNotSetValue === true) {\n // form elements may explicitly set to have NULL value (e.g. from Search form if values are requested that have no values)\n this.#setDataValue(fc._eoFormElement.name, null, data, fc._eoFormElement, !isTableRowEditForm);\n } else if (fc.dirty) {\n // fc.value !== undefined) {\n const val = fc.value;\n\n switch (situation) {\n case Situation.SEARCH: {\n if (val !== null) {\n this.#setDataValue(fc._eoFormElement.name, val, data, fc._eoFormElement, !!isTableRowEditForm);\n }\n break;\n }\n case Situation.CREATE: {\n if (val !== null) {\n this.#setDataValue(fc._eoFormElement.name, val, data, fc._eoFormElement, !!isTableRowEditForm);\n }\n break;\n }\n case Situation.EDIT: {\n // in edit situation we have to compare new values against the initial values\n // If a property that is contained in the forms initial data is removed (e.g. set to null)\n // then we have to set this null value, because otherwise the server will ignore the changes\n const v = val === undefined ? null : val;\n if (v !== null || (initialData && initialData[fc._eoFormElement.name] !== undefined)) {\n // data[fc._eoFormElement.name] = val;\n this.#setDataValue(fc._eoFormElement.name, v, data, fc._eoFormElement, !!isTableRowEditForm);\n }\n break;\n }\n }\n // tri-state boolean fields could have a value of 'undefined' that needs to be transformed\n // into 'null' to be correctly be processed by the backend\n if (fc._eoFormElement.type === 'boolean' && fc.value === undefined) {\n this.#setDataValue(fc._eoFormElement.name, null, data, fc._eoFormElement, !!isTableRowEditForm);\n }\n }\n } else {\n Object.keys(formControl.controls).forEach((controlKey) => {\n const formControlKeyed = <ObjectFormGroup>formControl.controls[controlKey];\n this.#getElementValues(data, formControlKeyed, situation, initialData, isTableRowEditForm);\n });\n }\n }\n\n #setDataValue(key: string, value: unknown, data: Record<string, unknown>, formElement: any, isTableRowEditForm: boolean) {\n data[key] = value;\n\n if (isTableRowEditForm && formElement.dataMeta) {\n if (formElement._internalType === 'string:organization') {\n data[key + '_title'] = formElement.dataMeta.map((d: YuvUser) => d.title);\n }\n // else if (formElement._internalType === 'string:reference') {\n // data[key + '_title'] = formElement.dataMeta.map((e: ReferenceEntry) => e.title);\n // }\n }\n }\n}\n","import { CommonModule, NgComponentOutlet } from '@angular/common';\nimport { Component, computed, effect, inject, input, signal, Type, untracked, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { Classification, ObjectFormControlWrapper } from '@yuuvis/client-core';\nimport { MetadataFormFieldComponent } from '@yuuvis/client-framework/metadata-form';\nimport { FormScriptingElementExtension } from '../form-scripting.api.interface';\nimport { FormScriptingApiService } from '../form-scripting.service';\nimport { IObjectFormElementExtensionComponentInput, ObjectFormElementExtension } from '../object-form-extension.interface';\nimport { FormScriptingElementExtensionComponent } from '../object-form-script/form-scripting-element-extension/form-scripting-element-extension.component';\nimport { ObjectFormService } from '../object-form.service';\n\n@Component({\n selector: 'yuv-object-form-element',\n standalone: true,\n imports: [CommonModule, MetadataFormFieldComponent, NgComponentOutlet, ReactiveFormsModule],\n templateUrl: './object-form-element.component.html',\n styleUrls: ['./object-form-element.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'yuv-object-form-element' }\n})\nexport class ObjectFormElementComponent {\n #objectFormService = inject(ObjectFormService);\n #scriptingApi = inject(FormScriptingApiService);\n\n createForm = signal(false);\n\n formChangedSubject = this.#objectFormService.formChanged;\n formControlName?: string;\n formElementRef: any;\n errors?: string[];\n extensionComponents: Type<ObjectFormElementExtension>[] = [];\n #scriptingExtensions = this.#scriptingApi.elementExtensions;\n scriptingExtensions = computed(() =>\n Object.values(this.#scriptingExtensions()).filter((ext: FormScriptingElementExtension) => ext.propertyName === this.formControlName)\n );\n\n scriptExtensionCmp = FormScriptingElementExtensionComponent;\n situation = input<string>();\n\n element = input<ObjectFormControlWrapper>();\n #elementEffect = effect(() => {\n const element = this.element();\n\n untracked(() => {\n this.createForm.set(true);\n element && this.#setElement(element);\n });\n });\n\n get extensionComponentInput(): Record<string, unknown> {\n const xti: IObjectFormElementExtensionComponentInput = {\n formControlName: this.formControlName || ''\n };\n return xti as Record<string, any>;\n }\n\n #setElement(el: ObjectFormControlWrapper | undefined) {\n if (el && el._eoFormControlWrapper) {\n this.formControlName = el._eoFormControlWrapper.controlName;\n this.formElementRef = el.controls[this.formControlName];\n this.formElementRef._eoFormElement = this.#setGrouping(this.formElementRef?._eoFormElement);\n this.extensionComponents = this.#objectFormService.getElementExtensions(this.formControlName);\n this.createForm.set(false);\n }\n }\n\n /**\n * formating rules...\n * https://wiki.optimal-systems.de/display/PM/Status+yuuvis+Momentum+-+Flex+client\n */\n #setGrouping(formElement: any) {\n return { ...formElement, grouping: !!formElement?.classifications?.includes(Classification.NUMBER_DIGIT) };\n }\n\n onDataMetaChange(data: any) {\n this.formElementRef._eoFormElement.dataMeta = data;\n }\n\n \n}\n","@let el = element();\n\n@if (!createForm()) {\n @if (el && formElementRef) {\n <div class=\"form-element input\" [formGroup]=\"el\">\n <yuv-metadata-form-field\n [formChangedSubject]=\"formChangedSubject\"\n [field]=\"formElementRef._eoFormElement\"\n [formControlName]=\"el._eoFormControlWrapper!.controlName\"\n [situation]=\"situation()\"\n ></yuv-metadata-form-field>\n\n <div class=\"ext\">\n @for (cmp of extensionComponents; track $index) {\n <ng-container *ngComponentOutlet=\"cmp; inputs: { input: extensionComponentInput }\"></ng-container>\n }\n @for (scmp of scriptingExtensions(); track $index) {\n <ng-container *ngComponentOutlet=\"scriptExtensionCmp; inputs: { ext: scmp }\"></ng-container>\n }\n </div>\n </div>\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, input, Input, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { KeysPipe, ObjectFormControlWrapper, ObjectFormGroup, Situation, YuvFormGroup, YuvFormGroupWrapper } from '@yuuvis/client-core';\nimport { ObjectFormElementComponent } from '../object-form-element/object-form-element.component';\n\n@Component({\n selector: 'yuv-object-form-group',\n standalone: true,\n imports: [CommonModule, MatTabsModule, KeysPipe, ObjectFormElementComponent, ReactiveFormsModule],\n templateUrl: './object-form-group.component.html',\n styleUrls: ['./object-form-group.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ObjectFormGroupComponent {\n private types = {\n STACK: 'stack',\n GROUP: 'group',\n FIELDSET: 'fieldset'\n };\n\n groupType?: string;\n isCore = false;\n isData = false;\n\n // @ViewChild('tabView') tabView: TabView;\n\n // form situation, if not set default will be 'EDIT'\n @Input() situation = Situation.EDIT;\n\n group = input<ObjectFormGroup>();\n #groupEffect = effect(() => {\n const g = this.group();\n\n if (g) {\n this.isCore = !!g._eoFormGroup && g._eoFormGroup.label === 'core';\n this.isData = !!g._eoFormGroup && g._eoFormGroup.label === 'data';\n this.groupType = this.#getGroupType();\n }\n });\n\n noGroupLabels = input<boolean>();\n\n getHeaderStyleClass(ctrl: AbstractControl): string {\n return `dirty-${ctrl.dirty} invalid-${ctrl.invalid}`;\n }\n\n getChildControl(ctrl: AbstractControl): ObjectFormGroup {\n return ctrl as ObjectFormGroup;\n }\n\n getObjectFormGroup(control: any): YuvFormGroup | undefined {\n return (control as ObjectFormGroup)._eoFormGroup;\n }\n\n getObjectFormControlWrapper(control: any): YuvFormGroupWrapper | undefined {\n return (control as ObjectFormControlWrapper)?._eoFormControlWrapper;\n }\n\n getElement(control: any): ObjectFormControlWrapper {\n return control as ObjectFormControlWrapper;\n }\n\n #getGroupType(): string | undefined {\n // may as well be an ObjectFormControlWrapper so check first\n // if we got a real group\n const group = this.group() as ObjectFormGroup;\n if (group?._eoFormGroup) {\n if (group._eoFormGroup.type === 'o2mGroupStack') {\n // for data section only render as stack (tabs) if we have more than one child\n if (this.isData && Object.keys(group.controls).length === 1) {\n return this.types.GROUP;\n }\n return this.types.STACK;\n }\n if (group._eoFormGroup.type === 'o2mGroup') {\n return group._eoFormGroup.label && !(this.isCore || this.isData) && !this.noGroupLabels && !this.#parentIsStack(group)\n ? this.types.FIELDSET\n : this.types.GROUP;\n }\n return this.types.GROUP;\n } else return undefined;\n }\n\n #parentIsStack(group: ObjectFormGroup): boolean {\n const parentFormElement = group.parent && (group.parent as any)['_eoFormGroup'];\n return parentFormElement && parentFormElement.type === 'o2mGroupStack';\n }\n}\n","@let grp = group();\n@if (grp) {\n <div\n class=\"form-element {{ grp._eoFormGroup ? grp._eoFormGroup.type : 'o2mControlWrap' }} align-{{\n grp._eoFormGroup && grp._eoFormGroup.layout ? grp._eoFormGroup.layout.align : ''\n }}\"\n [formGroup]=\"grp\"\n >\n @switch (groupType) {\n <!-- group stacks (tabs) -->\n @case ('stack') {\n <mat-tab-group>\n @for (key of grp.controls | keys; track key) {\n <mat-tab [label]=\"getObjectFormGroup(grp.controls[key])?.label || ''\">\n <ng-template matTabContent>\n <div class=\"stack\" [ngClass]=\"{ stackBase: grp._eoFormGroup?.label === 'data' }\">\n @if (getObjectFormControlWrapper(grp.controls[key])) {\n <yuv-object-form-element [element]=\"getElement(grp.controls[key])\" [situation]=\"situation\"></yuv-object-form-element>\n } @else {\n <yuv-object-form-group [group]=\"getChildControl(grp.controls[key])\" [noGroupLabels]=\"true\" [situation]=\"situation\"></yuv-object-form-group>\n }\n </div>\n </ng-template>\n </mat-tab>\n }\n </mat-tab-group>\n }\n\n <!-- group with legend -->\n @case ('fieldset') {\n <div class=\"om-group fieldset\">\n <div class=\"legend\">\n <span>{{ grp._eoFormGroup?.label }}</span>\n </div>\n\n <div>\n @for (key of grp.controls | keys; track key) {\n @if (getObjectFormControlWrapper(grp.controls[key])) {\n <yuv-object-form-element [element]=\"getElement(grp.controls[key])\" [situation]=\"situation\"></yuv-object-form-element>\n } @else {\n <yuv-object-form-group [group]=\"getChildControl(grp.controls[key])\" [noGroupLabels]=\"true\" [situation]=\"situation\"></yuv-object-form-group>\n }\n }\n </div>\n </div>\n }\n <!-- group -->\n @case ('group') {\n @for (key of grp.controls | keys; track key) {\n @if (getObjectFormControlWrapper(grp.controls[key])) {\n <yuv-object-form-element [element]=\"getElement(grp.controls[key])\" [situation]=\"situation\"></yuv-object-form-element>\n } @else {\n <yuv-object-form-group [group]=\"getChildControl(grp.controls[key])\" [noGroupLabels]=\"true\" [situation]=\"situation\"></yuv-object-form-group>\n }\n }\n }\n }\n </div>\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BackendService, Logger } from '@yuuvis/client-core';\nimport { Observable, forkJoin as observableForkJoin } from 'rxjs';\nimport { map as _map } from 'rxjs/operators';\nimport { ObjectFormScriptingScope } from './object-form-scripting-scope';\n\n\n/**\n * @ignore\n */\n@Injectable()\nexport class ObjectFormScriptService {\n constructor(private logger: Logger, private backend: BackendService) { }\n\n /**\n * Run a form script.\n * @param scope - the current scripting scope\n * @param script - the script to be executed\n * @param [scriptName] - the scripts name\n */\n public runFormScript(scope: ObjectFormScriptingScope, script: any, scriptName?: string) {\n try {\n // Define form script the function\n const formScriptFunction = this.defineFunction('Formscript/' + scriptName, script);\n // run the form script\n const formScriptReturn = formScriptFunction(scope);\n // Check if the form script returns something and may export global scripts\n if (formScriptReturn) {\n this.importGlobalScriptsAndCallInit(scope, formScriptReturn);\n }\n } catch (e) {\n if (e instanceof SyntaxError) {\n alert('Syntax error in Form-Script. See console log for details.');\n }\n this.logger.error('Got script error', e);\n }\n }\n\n /**\n * Define form script function, appending source url as comment.\n * Enables debugging using browser debugging tools (Chrome+Firefox)\n * @see: https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Debug_eval_sources\n *\n * @param name - the name of the script\n * @param script - script to be wrapped in a function\n * @returns the function\n */\n // eslint-disable-next-line @typescript-eslint/ban-types\n private defineFunction(name: string, script: any): Function {\n // Appending source url as comment. See https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Debug_eval_sources\n // Enables debugging using browser debugging tools (Chrome+Firefox)\n // The line feed is needed, if the script has a comment in the last line\n return new Function('scope', script + '\\n;//# sourceURL=' + name + '.js');\n }\n\n /**\n * If the script contains global script, this function will import and run them\n * before running the actual script.\n *\n * @param scope - the current scripting scope\n * @param formScriptReturn - the return value of the actual form script\n */\n private importGlobalScriptsAndCallInit(scope: ObjectFormScriptingScope, formScriptReturn: any) {\n if (!formScriptReturn.init) {\n return;\n }\n\n if (formScriptReturn.uses) {\n // collect the global script exports promises\n const exports: any[] = [];\n const globals = [];\n\n // collect Observables for fetching global scripts\n for (const use of formScriptReturn.uses) {\n globals.push(this.resolveGlobalScript(use, scope));\n }\n\n observableForkJoin(globals).subscribe((globalReturns) => {\n for (const scriptReturn of globalReturns) {\n exports.push(scriptReturn['exports']);\n }\n // Invoke init function on form script return with the\n // collected exports using javascript apply magic\n formScriptReturn.init.apply(this, exports);\n });\n } else {\n // invoke init direct (no use of global scripts)\n formScriptReturn.init();\n }\n }\n\n /**\n * Fetch global scripts.\n * @param name - the name of the global script\n * @param scope - the current scripting scope\n * @returns\n */\n private resolveGlobalScript(name: string, scope: ObjectFormScriptingScope): Observable<any> {\n const requestOptions = {\n headers: new HttpHeaders({\n Accept: 'text/plain'\n }),\n responseType: 'text'\n };\n\n return this.backend.get(`/script/${name}/script`, undefined, requestOptions).pipe(\n _map((res: any) => {\n // define the global function ...\n const globalScript = this.defineFunction('Global/' + name, res);\n // ... and run it\n return globalScript(scope);\n })\n );\n }\n}\n","/**\n * @ignore\n * This class will be injected as scope into form scripts.\n */\nexport class ObjectFormScriptingScope {\n // List of all form fields (elements)\n public model: any = {};\n\n // all data values including invisible elements (READONLY)\n public data: any = {};\n\n // The id of the current DMS-Object (READONLY)\n public objectId?: string;\n\n // actions passed by BPM forms\n public actions: any = {};\n // additional objects provided by the object form\n // used for example to pass dms objects attached to a work item\n // to the script (READONLY)\n // may contain: FormScriptDmsObject, FileEntry\n public objects: any[] = [];\n public context: { id: string; title: string; objectTypeId: string } = { id: '', title: '', objectTypeId: '' };\n\n /**\n * Constructor\n * @param situation - Current form model situation (could be CREATE, SEARCH or EDIT)\n * @param onScriptingModelChange - callback function to be called when the scripting model changed\n * Be aware to provide an instance method as callback for the scripting scope.\n * @see: https://blog.johnnyreilly.com/2014/04/typescript-instance-methods.html\n *\n * @param api - Plugin API reference\n * @param isTableRowScope - set this to true if the current scripting scope is created for a\n * row editing form from a table element. It will then provide the right parameters for the scripting functions\n */\n // eslint-disable-next-line @typescript-eslint/ban-types\n constructor(public situation: string, private onScriptingModelChange: Function, public api: any, private isTableRowScope?: boolean) {}\n\n /**\n * Sets the internal model and wraps every model element with an observer to be\n * able to track their changes from within a form script\n * @param model\n */\n public setModel(model: any) {\n this.model = {};\n for (const k of Object.keys(model)) {\n this.model[k] = new ScopeElement(model[k], this.onScriptingModelChange);\n }\n }\n\n /**\n * Returns the observed model. Used for row editing forms of table elements that\n * create their own scripting scope in context of their parent form.\n * @returns the observed scripting scope model\n */\n public getModel() {\n return this.model;\n }\n\n /**\n * Called by the object form when the form model changes.\n * @param change - object with key equals name of the element\n * that changes and value of the new value\n */\n public modelChanged(change: any) {\n // find the changed element in the scopes model\n const propertyName = Object.keys(change)[0];\n if (change[propertyName] === undefined) {\n return;\n }\n\n if (this.model[propertyName]) {\n const el = this.model[propertyName];\n el.update(change[propertyName], this.model);\n }\n }\n}\n/**\n * @ignore\n */\nclass ScopeElement {\n // eslint-disable-next-line @typescript-eslint/ban-types\n constructor(private element: any, private onScriptingModelChange: Function) {\n if (this.element.value === undefined) {\n this.element.value = null;\n }\n if (this.isProxyable(this.element.value)) {\n this.element.value = this.createProxy(this.element.value);\n }\n }\n\n private isProxyable(value: any, key?: string) {\n return (\n (typeof value === 'object' || Array.isArray(value)) &&\n value !== null &&\n !(value instanceof Date) &&\n !value.isProxy &&\n (key ? !key.includes('_meta') : true)\n );\n }\n\n private createProxy(value: any) {\n const handler = {\n set: (target: Record<string, unknown>, key: string, val: unknown) => {\n const previousValue = structuredClone(this.element.value);\n if (this.isProxyable(val, key)) {\n target[key] = this.createProxy(val);\n } else {\n target[key] = val;\n }\n if (this.hasValueChanged(this.element.value, previousValue) && !key.includes('_meta')) {\n this.onScriptingModelChange(this.element.name, { newValue: structuredClone(this.element.value), name: 'value' });\n }\n return true;\n },\n // This get trap is only used to find out, if an object is a proxy or not.\n get: (target: Record<string, unknown>, key: string) => {\n if (key === 'isProxy') {\n return true;\n }\n return target[key];\n }\n };\n\n Object.keys(value).forEach((key) => {\n if (this.isProxyable(value[key], key)) {\n value[key] = this.createProxy(value[key]);\n }\n });\n return new Proxy(value, handler);\n }\n\n private hasValueChanged(value1: unknown, value2: unknown) {\n return JSON.stringify(value1) !== JSON.stringify(value2);\n }\n\n update(value: unknown, model: any) {\n const newValue = structuredClone(value);\n if (this.hasValueChanged(this.element.value, value)) {\n if (this.isProxyable(value)) {\n this.element.value = this.createProxy(newValue);\n } else {\n this.element.value = newValue;\n }\n if (this.element.onchange) {\n this.element.onchange(this, model);\n }\n }\n }\n\n set value(value) {\n if (this.hasValueChanged(this.element.value, value)) {\n if (this.isProxyable(value)) {\n this.element.value = this.createProxy(value);\n } else {\n this.element.value = value;\n }\n this.onScriptingModelChange(this.element.name, { newValue: structuredClone(this.element.value), name: 'value' });\n }\n }\n\n get value() {\n return this.element.value;\n }\n\n set onchange(onchange) {\n this.element.onchange = onchange;\n this.onScriptingModelChange(this.element.name, { newValue: onchange, name: 'onchange' });\n }\n\n get onchange() {\n return this.element.onchange;\n }\n\n set required(required) {\n this.element.required = required;\n this.onScriptingModelChange(this.element.name, { newValue: required, name: 'required' });\n }\n\n get required() {\n return this.element.required;\n }\n\n set readonly(readonly) {\n this.element.readonly = readonly;\n this.onScriptingModelChange(this.element.name, { newValue: readonly, name: 'readonly' });\n }\n\n get readonly() {\n return this.element.readonly;\n }\n\n set error(error) {\n this.element.error = error;\n this.onScriptingModelChange(this.element.name, { newValue: error, name: 'error' });\n }\n\n get error() {\n return this.element.error;\n }\n\n set onrowedit(onrowedit) {\n this.element.onrowedit = onrowedit;\n this.onScriptingModelChange(this.element.name, { newValue: onrowedit, name: 'onrowedit' });\n }\n\n get onrowedit() {\n return this.element.onrowedit;\n }\n\n setList(obj: any) {\n if (this.element.setList) {\n this.element.setList(obj);\n }\n }\n\n applyFilter(obj: any) {\n if (this.element.applyFilter) {\n this.element.applyFilter(obj);\n }\n }\n\n setFilter(obj: any) {\n if (this.element.setFilter) {\n this.element.setFilter(obj);\n }\n }\n\n get name() {\n return this.element.name;\n }\n\n get qname() {\n return this.element.qname;\n }\n\n get label() {\n return this.element.label;\n }\n\n get description() {\n return this.element.description;\n }\n\n get type() {\n return this.element.type;\n }\n\n get multiselect() {\n return this.element.multiselect;\n }\n\n get codesystem() {\n return this.element.codesystem;\n }\n\n get minlen() {\n return this.element.minLength;\n }\n\n get maxlen() {\n return this.element.maxLength;\n }\n\n get classifications() {\n return this.element.classifications;\n }\n\n get scale() {\n return this.element.scale;\n }\n\n get precision() {\n return this.element.precision;\n }\n\n get withtime() {\n return this.element.withtime;\n }\n\n get elements() {\n return this.element.elements;\n }\n\n get aliases() {\n return this.element.aliases;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, ChangeDetectorRef, Component, effect, ElementRef, inject, input, OnDestroy, output, signal, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule, ValidatorFn, Validators } from '@angular/forms';\nimport { ObjectFormControl, ObjectFormControlWrapper, ObjectFormGroup, Situation, SystemService, UserService, Utils } from '@yuuvis/client-core';\nimport { debounceTime, merge, Observable, of, Subscription } from 'rxjs';\nimport { FormScriptingApiService } from './form-scripting.service';\nimport { IObjectFormElementExtension } from './object-form-extension.interface';\nimport { ObjectFormGroupComponent } from './object-form-group/object-form-group.component';\nimport { ObjectFormScriptService } from './object-form-script/object-form-script.service';\nimport { ObjectFormScriptingScope } from './object-form-script/object-form-scripting-scope';\nimport { ObjectFormService } from './object-form.service';\nimport { ObjectFormUtils } from './object-form.utils';\nimport { FormValidation } from './object-form.validation';\nimport { ObjectFormOptions, FormStatusChangedEvent, ObjectFormModelChange } from './object-form.interface';\n\n@Component({\n selector: 'yuv-object-form',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, ObjectFormGroupComponent],\n providers: [ObjectFormService, ObjectFormScriptService, FormScriptingApiService],\n templateUrl: './object-form.component.html',\n styleUrl: './object-form.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'yuv-object-form',\n '[attr.inert]': 'inert() ? true : null'\n }\n})\nexport class ObjectFormComponent implements OnDestroy, AfterViewInit {\n #elementRef = inject(ElementRef);\n #systemService = inject(SystemService);\n #formScriptService = inject(ObjectFormScriptService);\n #formHelperService = inject(ObjectFormService);\n #userService = inject(UserService);\n #cdRef = inject(ChangeDetectorRef);\n #formScriptingApiService = inject(FormScriptingApiService);\n\n #skipTranslationsFor = ['core', 'data'];\n #namePrefix = 'fg_';\n gCount = 0;\n\n id = Utils.uuid();\n\n fo?: ObjectFormOptions;\n formOptions = input<ObjectFormOptions>();\n #formOptionsEffect = effect(() => {\n this.#init(this.formOptions());\n });\n\n inert = input<boolean>();\n elementExtensions = input<IObjectFormElementExtension[]>([]);\n #elementExtensionsEffect = effect(() => {\n this.#formHelperService.setElementExtensions(this.elementExtensions());\n });\n\n /**\n * There are special scenarios where forms are within a form themselves.\n * Setting this property to true, will handle the current form in a\n * slightly different way when it comes to form scripting.\n */\n isInnerTableForm = input<boolean>();\n\n /**\n * triggered when the forms state has been changed\n */\n statusChanged = output<FormStatusChangedEvent>();\n\n /**\n * handler to be executed after the form has been set up\n */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onFormReady = output();\n\n // the actual form instance\n form?: ObjectFormGroup;\n // property for holding the forms data used for comparison when a form-changed-event\n // is fetched to indicate wher or not the indexdata were changed or just the properties\n // of the form elements (eg. form script setting fields to readonly)\n formData: any;\n #scriptModel: any = {};\n #scriptingScope?: ObjectFormScriptingScope;\n #subscriptions: Subscription[] = [];\n\n // local store for all the form control references\n #formControls: any = {};\n #initialValidators: any = {};\n\n constructor() {\n this.#formScriptingApiService.formId = this.id;\n this.#formScriptingApiService.api.events\n .on(FormScriptingApiService.EVENT_MODEL_CHANGED)\n .pipe(takeUntilDestroyed())\n .subscribe((event) => event.data && this.#onScriptingModelChanged(event.data.formControlName, event.data.change, event.data.formId));\n\n this.#formScriptingApiService.formId = this.id;\n }\n\n // initialize the form based on the provided form options\n #init(fo: ObjectFormOptions | undefined) {\n this.form = undefined;\n if (!fo) return;\n if (!this.#validateFormModel(fo)) return;\n setTimeout(() => {\n this.#initialValidators = {};\n this.unsubscribeAll();\n this.#buildReactiveForm(fo);\n }, 0);\n }\n\n #validateFormModel(fo: ObjectFormOptions): boolean {\n const model = fo.formModel;\n const valid =\n model &&\n model.elements &&\n model.elements.length === 2 &&\n // core\n model.elements[0].type === 'o2mGroup' &&\n // data\n model.elements[1].type === 'o2mGroupStack';\n if (!valid) console.error('Invalid form model', model);\n return valid;\n }\n\n #initScriptingScope(formOptions: ObjectFormOptions, dataFormModel: any) {\n const { data, actions, objects, context } = (formOptions || {}) as ObjectFormOptions;\n\n if (this.#scriptingScope) {\n this.#scriptingScope.setModel(this.#scriptModel);\n /** provide access to actions (used inside of BPM-Forms) */\n this.#scriptingScope.actions = actions;\n /** provide access to additional objects (used for example in BPM-Start-Forms to\n * add data of DMS-Objects to start the process for)\n */\n this.#scriptingScope.objects = objects || [];\n this.#scriptingScope.context = context || { id: '', title: '', objectTypeId: '' };\n /** provide readonly access to initial form data (which may also contain values that\n * are not rendered as form elements (invisible values))\n */\n this.#scriptingScope.data = data;\n\n /** by default, scripting scopes are applied to forms. But table elements create their own scope\n * for editing rows. Being one of those inner forms should not run the form script again, but\n * instead just provide the observing abilities of the scripting scope.\n */\n if (!this.isInnerTableForm() && dataFormModel) {\n const scriptName = dataFormModel.name + '_' + dataFormModel.situation;\n console.debug('executing form script ' + scriptName);\n this.#formScriptService.runFormScript(this.#scriptingScope, dataFormModel.script, scriptName);\n }\n }\n }\n\n focusForm() {\n this.#elementRef.nativeElement.querySelector('input').focus();\n }\n\n getGroup(id: string): ObjectFormGroup {\n return this.form?.get(id) as ObjectFormGroup;\n }\n\n setFormData(data: Record<string, unknown>) {\n const fo = this.formOptions();\n if (!fo) return;\n fo.data = data;\n setTimeout(() => this.#init(fo), 0);\n }\n\n patchValue(data: Record<string, unknown>) {\n Object.keys(data).forEach((key) => {\n this.#onScriptingModelChanged(key, {\n name: 'value',\n newValue: data[key]\n });\n });\n }\n\n /**\n * Extracts the values from the form model. Each form value is represented by one\n * property on the result object holding the fields value. The keys (properties) are the `name`\n * properties of the form element.\n *\n * How values are extracted is influenced by the forms situation.\n *\n * @return object of key value pairs\n */\n getFormData() {\n return this.#formToData();\n }\n\n getFormElements() {\n const formElements: any = {};\n Object.keys(this.#formControls).forEach((k) => {\n formElements[k] = this.#formControls[k].__eoFormElement;\n });\n return formElements;\n }\n\n setFormPristine() {\n if (!this.form) return;\n this.form.markAsPristine();\n this.#formHelperService.formChanged.next({\n invalid: this.form.invalid,\n dirty: this.form.dirty,\n data: this.formData,\n indexdataChanged: false\n });\n }\n\n // reset the form to its initial state\n resetForm() {\n const fo = this.formOptions();\n if (!fo) return;\n this.setFormData(fo.data);\n this.#emitFormChangedEvent();\n }\n\n /**\n * Returns the observed model that was passed to the current form script running. If there is\n * no form script, this method will return NULL.\n * @returns\n */\n getObservedScriptModel() {\n return this.#scriptingScope ? this.#scriptingScope.getModel() : null;\n }\n\n // Create a reactive form from the enaio form model\n #buildReactiveForm(formOptions: ObjectFormOptions) {\n this.#scriptingScope = undefined;\n this.#scriptModel = {};\n this.#formControls = {};\n const formModel = this.#dataToForm(formOptions.formModel, formOptions.data);\n if (!formModel) {\n return;\n }\n // if a script is available, we'll init the form scripting for the\n // current form\n if (this.isInnerTableForm() || (formModel.script && formModel.script.length > 0)) {\n console.debug('adding form scripting scope');\n this.#scriptingScope = new ObjectFormScriptingScope(\n formModel.situation,\n this.#onScriptingModelChanged,\n this.#formScriptingApiService.getApi(),\n this.isInnerTableForm()\n );\n this.#scriptingScope.objectId = this.formOptions()!.objectId;\n }\n\n const form = new ObjectFormGroup({});\n if (formModel?.elements[0]?.elements) {\n this.#addFormControl(form, formModel.elements[0], 'core');\n }\n if (formModel?.elements[1]?.elements) {\n this.#addFormControl(form, formModel.elements[1], 'data');\n }\n this.form = form;\n this.#formScriptingApiService.registerActiveForm(this);\n setTimeout(() => {\n if (!this.form) return;\n this.initValidators(this.form);\n this.#subscriptions.push(\n merge(this.form.valueChanges, this.form.statusChanges)\n .pipe(debounceTime(500))\n .subscribe(() => this.#emitFormChangedEvent())\n );\n\n this.#initScriptingScope(formOptions, formModel);\n\n this.onFormReady.emit();\n this.#emitFormChangedEvent(false);\n }, 300); //<-- init validation is delayed\n }\n\n initValidators(form: any) {\n if (this.form) {\n for (const key of Object.keys(form.controls)) {\n const control = form.controls[key];\n if (control.controls) {\n this.initValidators(control);\n } else {\n this.#initialValidators[control._eoFormElement.name] = control.validator;\n control.setValidators(Validators.compose(this.#getValidators(control._eoFormElement).concat([this.#initialValidators[control._eoFormElement.name]])));\n control.updateValueAndValidity();\n }\n }\n }\n }\n\n #emitFormChangedEvent(compare = true) {\n // check if indexdata has been changed\n const currentFormData = this.getFormData();\n const idxChange = compare ? JSON.stringify(this.formData) !== JSON.stringify(currentFormData) : false;\n this.formData = currentFormData;\n if (this.form) {\n const e = {\n invalid: this.form.invalid,\n dirty: this.form.dirty,\n data: this.formData,\n indexdataChanged: idxChange\n };\n this.statusChanged.emit(e);\n this.#formHelperService.formChanged.next(e);\n }\n }\n\n /**\n * This method will be called each time the script changes its internal model.\n * It is used to transfer the script changes to the actual form model.\n *\n * To ensure the right context, we define an instance method as callback for the scripting scope\n * @see: https://blog.johnnyreilly.com/2014/04/typescript-instance-methods.html\n *\n * @param formControlName\n * @param change\n */\n #onScriptingModelChanged = (formControlName: string, change: ObjectFormModelChange, formId?: string) => {\n if (!this.form || (formId && this.id !== formId)) return;\n // find the target control\n const fc: ObjectFormControl = this.#formControls[formControlName] as ObjectFormControl;\n if (fc) {\n // change only allowed properties\n switch (change.name) {\n case 'value': {\n if (Array.isArray(change.newValue)) {\n this.#processArrayValueChange(fc, change);\n } else {\n fc._eoFormElement.value = change.newValue;\n if (fc.value !== change.newValue) {\n fc.patchValue(change.newValue);\n fc.updateValueAndValidity();\n fc.markAsDirty();\n }\n }\n this.form.markAsDirty();\n break;\n }\n case 'required': {\n fc._eoFormElement.required = change.newValue;\n // apply new validators\n // @see: https://scotch.io/tutorials/how-to-implement-conditional-validation-in-angular-2-model-driven-forms\n fc.setValidators(Validators.compose(this.#getValidators(fc._eoFormElement).concat([this.#initialValidators[fc._eoFormElement.name]])));\n // need to mark form control as touched because otherwise form validation will not show\n // error messages\n fc.markAsTouched();\n fc.updateValueAndValidity();\n break;\n }\n case 'readonly': {\n fc._eoFormElement.readonly = change.newValue;\n if (change.newValue === true) {\n fc.disable();\n } else {\n fc.enable();\n }\n break;\n }\n case 'error': {\n fc._eoFormElement.error = change.newValue;\n fc.markAsTouched();\n fc.updateValueAndValidity();\n break;\n }\n // new onrowedit function was applied by the script\n case 'onrowedit': {\n fc._eoFormElement.onrowedit = change.newValue;\n break;\n }\n // new onchange function was applied by the script\n case 'onchange': {\n fc._eoFormElement.onchange = change.newValue;\n break;\n }\n }\n this.#cdRef.detectChanges();\n }\n };\n\n #processArrayValueChange(fc: any, change: any) {\n const newVal = change.newValue;\n const targetType = fc._eoFormElement.type;\n // for some types we have to ensure that meta data are provided as well\n switch (targetType) {\n case 'ORGANIZATION': {\n this.#getDataMeta(fc._eoFormElement, newVal).subscribe((m) => {\n fc._eoFormElement.dataMeta = m;\n });\n break;\n }\n case 'TABLE': {\n const dataToBeProcessed: Record<string, unknown> = {};\n fc._eoFormElement.elements.forEach((e: any) => {\n if (e.type === 'ORGANIZATION' || e.type === 'CODESYSTEM') {\n dataToBeProcessed[e.name] = e;\n }\n });\n if (Object.keys(dataToBeProcessed).length) {\n newVal.forEach((rowData: any) => {\n Object.keys(rowData).forEach((key) => {\n if (dataToBeProcessed[key]) {\n this.#getDataMeta(dataToBeProcessed[key], rowData[key]).subscribe((m) => {\n if (m) {\n rowData[key + '_meta'] = m;\n } else {\n delete rowData[key + '_meta'];\n }\n this.#updateArrayValue(fc, newVal);\n });\n }\n });\n });\n }\n break;\n }\n }\n this.#updateArrayValue(fc, newVal);\n }\n\n #updateArrayValue(fc: any, newValue: any) {\n fc._eoFormElement.value = [].concat(newValue);\n fc.patchValue([].concat(newValue));\n fc.updateValueAndValidity();\n fc.markAsDirty();\n }\n\n #getDataMeta(formElement: any, newValue: any): Observable<any> {\n if (newValue) {\n switch (formElement.type) {\n case 'ORGANIZATION': {\n return this.#userService.getUserById(newValue);\n }\n }\n }\n return of(null);\n }\n\n #patchFormValue(formValue: string[] | string) {\n let value: any;\n if (Array.isArray(formValue)) {\n value = [];\n // copy by value for arrays of objects (e.g. table data)\n formValue.forEach((o) => value.push(JSON.parse(JSON.stringify(o))));\n } else {\n value = formValue;\n }\n return value;\n }\n\n /**\n * Recursive method adding a new FormControl (group or control) to a parent form group\n *\n * @param parentGroup - the parent group to add the control to\n * @param formElement - the enaio form model element to create the child control from\n * @param [useName] - use this name instead of the one from the model\n */\n #addFormControl(parentGroup: ObjectFormGroup, formElement: any, useName?: string) {\n const fo = this.formOptions();\n if (!fo) return;\n\n let ctrl;\n let name;\n\n // add a form group\n if (formElement.type === 'o2mGroup' || formElement.type === 'o2mGroupStack') {\n // do not add groups that are empty\n const isRootGroup = formElement.name && (formElement.name !== 'data' || formElement.name !== 'core');\n if (!isRootGroup && (!formElement.elements || formElement.elements.length === 0)) {\n console.error('Found empty form group', formElement);\n return;\n }\n\n ctrl = new ObjectFormGroup({});\n ctrl._eoFormGroup = {\n layout: formElement.layout,\n type: formElement.type\n };\n\n if (formElement.name) {\n if (this.#skipTranslationsFor.includes(formElement.name)) {\n ctrl._eoFormGroup.label = formElement.name;\n } else if (!formElement.label) {\n // no label, so try to translate the technical name\n ctrl._eoFormGroup.label = this.#systemService.getLocalizedResource(`${formElement.name}_label`) || formElement.name;\n } else {\n // there is a label so we take this one\n ctrl._eoFormGroup.label = formElement.label;\n }\n }\n\n if (useName === 'core' || useName === 'data') {\n ctrl._eoFormGroup.label = useName;\n }\n\n for (const e of formElement.elements) {\n this.#addFormControl(ctrl, e);\n }\n name = useName || 'fg' + this.gCount++;\n } else {\n // add form control\n // To be able to integrate recursive form controls into the main form,\n // we have to wrap them in a form group\n ctrl = new ObjectFormControlWrapper({});\n ctrl._eoFormControlWrapper = {\n // the name of the wrapped FormControl\n controlName: formElement.name,\n situation: fo.formModel.situation\n };\n\n // do not set a reference as the form controls value\n // otherwise we could not reset the form\n const value = formElement?.value\n ? this.#patchFormValue(formElement?.value)\n : !Utils.isEmpty(formElement?.defaultvalue) && fo.formModel.situation === Situation.CREATE\n ? this.#patchFormValue(formElement?.defaultvalue)\n : formElement?.value;\n\n // create the actual form control\n const controlDisabled = fo.disabled || !!formElement.readonly;\n const formControl = new ObjectFormControl({\n value,\n disabled: controlDisabled\n });\n\n // if form element has a 'label' property it will be shown as is ...\n if (!formElement.label) {\n // ... if there is no label but a 'labelKey' property we are going to localize that key ...\n if (formElement.labelkey) {\n formElement.label = this.#systemService.getLocalizedResource(`${formElement.labelkey}_label`) || formElement.labelkey;\n formElement.description = this.#systemService.getLocalizedResource(`${formElement.labelkey}_description`);\n } else {\n // ... no 'label' and also no 'labelKey' means that we are showing technical name instead\n formElement.label = formElement.name;\n }\n }\n formElement.readonly = controlDisabled;\n // we are using an internal type to distinguish between the components\n // to be used to render certain form elements\n formElement._internalType = this.#systemService.getInternalFormElementType(formElement.type, formElement.classifications);\n\n formControl._eoFormElement = formElement;\n this.#formControls[formElement.name] = formControl;\n\n if (formElement.type === 'TABLE') {\n // Add 'onrowedit' property even if it's not set.\n // This is required because otherwise mobX-Observer would not recognize\n // changes to this property applied by the form script\n if (!Object.keys(formControl._eoFormElement).includes('onrowedit')) {\n formControl._eoFormElement.onrowedit = null;\n }\n\n if (this.#scriptingScope && formControl._eoFormElement.value) {\n // having a scripting scope and table rows means that we need to set empty\n // columns to NULL, because otherwise mobX won't be able to track those values\n const valueFields = formControl._eoFormElement.elements.map((e: any) => e.name);\n formControl._eoFormElement.value.forEach((rowValue: any) => {\n valueFields.forEach((valueField: string) => {\n if (!Object.keys(rowValue).includes(valueField)) {\n rowValue[valueField] = null;\n }\n });\n });\n // update form controls value as well to reflect the observed value\n formControl.patchValue(formControl._eoFormElement.value, {\n onlySelf: true,\n emitEvent: false,\n emitModelToViewChange: false,\n emitViewToModelChange: false\n });\n }\n }\n\n if (formElement._internalType === 'string:organization') {\n formControl._eoFormElement.setFilter = (filterObject: any) => {\n formControl._eoFormElement.filter = filterObject;\n };\n }\n\n ObjectFormUtils.updateFormElement(formElement);\n\n // remove empty descriptions\n const desc = formControl._eoFormElement.description;\n if (desc && desc.trim().length === 0) {\n formControl._eoFormElement.description = null;\n }\n\n // add the form element to the script model that will be injected into\n // the forms scripting scope later on\n this.#scriptModel[formElement.name] = formControl._eoFormElement;\n\n // apply change listener to the form control, that will trigger\n // the form elements onChange listener\n const controlWatch = ctrl.valueChanges.pipe(debounceTime(500));\n this.#subscriptions.push(\n controlWatch.subscribe((v) => {\n if (this.#scriptingScope) {\n this.#scriptingScope.modelChanged(v);\n }\n })\n );\n\n ctrl.addControl(formElement.name, formControl);\n name = this.#namePrefix + formElement.name;\n }\n parentGroup.addControl(name, ctrl);\n }\n\n /**\n * Build validators for the given form element to be attached to\n * a reactive formControl.\n *\n * @param formElement - form element object\n */\n #getValidators(formElement: any): ValidatorFn[] {\n const fo = this.formOptions();\n const elmValidators = FormValidation.getValidators(formElement, fo?.formModel.situation);\n\n // add custom validator for script enabled forms\n if (this.#scriptingScope) {\n elmValidators.push(FormValidation.customScriptingValidation);\n }\n\n return elmValidators;\n }\n\n /**\n * Extract the values from the form\n */\n #formToData() {\n const fo = this.formOptions();\n return fo && this.form ? this.#formHelperService.extractFormData(this.form, fo.formModel.situation, fo.data, this.isInnerTableForm()) : {};\n }\n\n /**\n * Merge data into a form model.\n *\n * @param model - form model\n * @param data - data object or array of SearchFilter objects in case of a search form\n */\n #dataToForm(model: any, data: any) {\n if (model && data) {\n this.#setElementValues(model.elements, data);\n }\n return model;\n }\n\n // recursive method for adding values to model elements\n #setElementValues(elements: any[], data: Record<string, unknown>) {\n elements?.forEach((element) => {\n if (this.#hasValue(data, element)) {\n element.value = this.#getValue(data, element);\n } else {\n delete element.value;\n }\n if (element.type !== 'TABLE' && element.elements && element.elements.length > 0) {\n this.#setElementValues(element.elements, data);\n }\n });\n }\n\n #hasValue(data: Record<string, unknown>, element: any) {\n // differ between array of SearchFilters and a form data object\n if (Array.isArray(data)) {\n return !!data.find((filter) => filter.property === element.id);\n } else {\n return Object.keys(data).includes(element.name);\n }\n }\n\n #getValue(data: Record<string, unknown>, element: any) {\n return data[element.name];\n }\n\n ngOnDestroy() {\n this.unsubscribeAll();\n this.#formScriptingApiService.unregisterActiveForm(this);\n }\n\n ngAfterViewInit() {\n this.#cdRef.detectChanges();\n }\n\n // unsubscribe from all value change listeners for the current form\n // to avoid memory leaks. This method will also be called every time\n // a new form is rendered to get rid of the old form element subscriptions\n private unsubscribeAll() {\n if (this.#subscriptions.length) {\n console.debug('unsubscribed from ' + this.#subscriptions.length + ' value change listeners.');\n this.#subscriptions.forEach((s) => s.unsubscribe());\n this.#subscriptions = [];\n }\n }\n}\n","@let fo = formOptions();\n@if (fo && form) {\n <div class=\"yuv-object-form\" [formGroup]=\"form\">\n <div class=\"form-element-wrap core\">\n <yuv-object-form-group [group]=\"getGroup('core')\" [situation]=\"fo.formModel.situation\"></yuv-object-form-group>\n </div>\n <div class=\"form-element-wrap data\">\n <yuv-object-form-group [group]=\"getGroup('data')\" [situation]=\"fo.formModel.situation\"></yuv-object-form-group>\n </div>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { ObjectFormComponent } from './object-form.component';\n\n@NgModule({\n imports: [ObjectFormComponent],\n exports: [ObjectFormComponent],\n})\nexport class YuvObjectFormModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","observableForkJoin","_map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-client-framework-object-form.mjs","sources":["../../../../../libs/yuuvis/client-framework/object-form/src/lib/form-scripting.service.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-extension.interface.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-script/form-scripting-element-extension/form-scripting-element-extension.component.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-script/form-scripting-element-extension/form-scripting-element-extension.component.html","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form.validation.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form.utils.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form.service.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-element/object-form-element.component.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-element/object-form-element.component.html","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-group/object-form-group.component.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-group/object-form-group.component.html","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-script/object-form-script.service.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form-script/object-form-scripting-scope.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form.component.ts","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form.component.html","../../../../../libs/yuuvis/client-framework/object-form/src/lib/object-form.module.ts","../../../../../libs/yuuvis/client-framework/object-form/src/yuuvis-client-framework-object-form.ts"],"sourcesContent":["import { inject, Injectable, NgZone, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n ApiBase,\n AppCacheService,\n BackendService,\n DmsObject,\n DmsService,\n EventService,\n HttpOptions,\n NotificationService,\n Operator,\n SearchQuery,\n SearchResult,\n SearchResultItem,\n SearchService,\n SystemService,\n TranslateService,\n UserService,\n Utils,\n YuvEventType,\n YuvUser\n} from '@yuuvis/client-core';\nimport { firstValueFrom, map } from 'rxjs';\nimport { FormScriptingAPI, FormScriptingElementExtension } from './form-scripting.api.interface';\nimport { ObjectFormComponent } from './object-form.component';\n\n@Injectable()\nexport class FormScriptingApiService {\n #ngZone = inject(NgZone);\n #router = inject(Router);\n #eventService = inject(EventService);\n #userService = inject(UserService);\n #dmsService = inject(DmsService);\n #systemService = inject(SystemService);\n #searchService = inject(SearchService);\n #backend = inject(BackendService);\n #translate = inject(TranslateService);\n #notifications = inject(NotificationService);\n #appCache = inject(AppCacheService);\n\n static EVENT_MODEL_CHANGED = 'yuv.event.object-form.model.changed';\n #activeFormComponents = new Map<string, ObjectFormComponent>();\n elementExtensions = signal<Record<string, FormScriptingElementExtension>>({});\n formId?: string;\n\n get api() {\n return this.getApi();\n }\n\n registerActiveForm(component: ObjectFormComponent) {\n const id = component.formOptions()?.formModel?.name || component?.id;\n return id && this.#activeFormComponents.set(id, component);\n }\n\n unregisterActiveForm(component: ObjectFormComponent) {\n const id = component.formOptions()?.formModel?.name || component?.id;\n return id && this.#activeFormComponents.delete(id);\n }\n\n getApi(): FormScriptingAPI {\n const formId = this.formId;\n return {\n elementExtensions: {\n register: (extensions: FormScriptingElementExtension[]) => {\n extensions.forEach((ext) => {\n if (ext.id) this.elementExtensions.set({ ...this.elementExtensions(), [ext.id]: ext });\n });\n }\n },\n events: {\n yuuvisEventType: YuvEventType,\n on: (type: string) => this.#ngZone.run(() => this.#eventService.on(type)),\n trigger: (type: string, data?: any) => this.#ngZone.run(() => this.#eventService.trigger(type, data))\n },\n session: {\n getUser: () => this.getCurrentUser(),\n user: {\n get: () => this.getCurrentUser(),\n hasRole: (role: string) => this.getCurrentUser().authorities?.includes(role) || false\n }\n },\n http: {\n get: (uri, base, options) => this.get(uri, base, options),\n post: (uri, data, base, options) => this.post(uri, data, base, options),\n del: (uri, base, options) => this.del(uri, base, options),\n put: (uri, data, base, options) => this.put(uri, data, base, options)\n },\n form: {\n activeForms: this.#activeFormComponents,\n getValue: (formControlName) =>\n Array.from(this.#activeFormComponents.values()).reduce(\n (prev: Record<string, unknown>, cur: ObjectFormComponent) => ({ ...prev, ...(cur.formData || {}) }),\n {}\n )[formControlName],\n setValue: (formControlName, newValue) => this.api.form.modelChange(formControlName, { name: 'value', newValue }),\n modelChange: (formControlName, change) =>\n this.#ngZone.run(() =>\n this.#eventService.trigger(FormScriptingApiService.EVENT_MODEL_CHANGED, {\n formId,\n formControlName,\n change\n })\n )\n },\n storage: {\n getItem: (key) => firstValueFrom(this.#appCache.getItem(key)),\n setItem: (key, value) => firstValueFrom(this.#appCache.setItem(key, value))\n },\n notifier: {\n success: (text, title) => this.#notifications.success(title, text),\n error: (text, title) => this.#notifications.error(title, text),\n info: (text, title) => this.#notifications.info(title, text),\n warning: (text, title) => this.#notifications.warning(title, text)\n },\n util: {\n translate: (key, data) => this.#translate.instant(key, data)\n }\n };\n }\n\n get(uri: string, base?: string, options?: HttpOptions) {\n return firstValueFrom(\n this.#backend.get(uri, base || ApiBase.none, options || { observe: 'response' }).pipe(\n map((res: any) => {\n return options ? res : { status: res.status, data: res.body };\n })\n )\n );\n }\n\n put(uri: string, data: Record<string, unknown>, base?: string, options?: HttpOptions) {\n return firstValueFrom(this.#backend.put(uri, data, base || ApiBase.none, options));\n }\n\n post(uri: string, data: Record<string, unknown>, base?: string, options?: HttpOptions) {\n return firstValueFrom(this.#backend.post(uri, data, base || ApiBase.none, options));\n }\n\n del(uri: string, base?: string, options?: HttpOptions) {\n return firstValueFrom(this.#backend.delete(uri, base || ApiBase.none, options));\n }\n\n getCurrentUser(): YuvUser {\n return this.#userService.getCurrentUser();\n }\n\n getDmsObject(id: string, version: number): Promise<DmsObject> {\n return firstValueFrom(this.#dmsService.getDmsObject(id, version))\n .then((response) => {\n return Promise.resolve(response);\n })\n .catch(this.#handleError);\n }\n\n /**\n * fetches dms objects from the server that match the given params\n *\n * @param fields - the fields to match. example: {name: 'max', plz: '47111}\n * @param type - the target object type\n */\n getResult(fields: Record<string, unknown>, type?: string): Promise<DmsObject[]> {\n const searchQuery: SearchQuery = {\n filters: Object.keys(fields).map((f) => ({\n f,\n o: Operator.EQUAL,\n v1: fields[f]\n }))\n };\n if (type) searchQuery.types = [type];\n return firstValueFrom(this.#searchService.search(searchQuery))\n .then((res: SearchResult) => {\n return Promise.resolve(\n res.items.map((resItem: SearchResultItem) => {\n new DmsObject(resItem);\n })\n );\n })\n .catch(this.#handleError);\n }\n\n encodeFileName(filename: string) {\n return Utils.encodeFileName(filename);\n }\n\n #handleError(error: any): Promise<any> {\n return Promise.reject(error.message || error);\n }\n}\n","import { Component, inject, input, Type } from '@angular/core';\nimport { FormScriptingAPI } from './form-scripting.api.interface';\nimport { FormScriptingApiService } from './form-scripting.service';\n\n// Extension of a particular form element\nexport interface IObjectFormElementExtension {\n property: string;\n cmp: Type<ObjectFormElementExtension>;\n}\n\nexport interface IObjectFormElementExtensionComponentInput {\n formControlName: string;\n}\n\n/**\n * Class to extend by form element extensions.\n */\n@Component({\n template: '',\n standalone: true\n})\n// eslint-disable-next-line @angular-eslint/component-class-suffix\nexport abstract class ObjectFormElementExtension {\n #formScriptingApiService = inject(FormScriptingApiService);\n\n input = input.required<IObjectFormElementExtensionComponentInput>();\n\n protected getApi(): FormScriptingAPI {\n return this.#formScriptingApiService.getApi();\n }\n\n protected getCurrentValue(): unknown {\n return this.getApi().form.getValue(this.input().formControlName);\n }\n\n setValue(value: unknown) {\n // only set the value if the value is different. Otherwise the form\n // will end up in an infinite loop\n if (value !== this.getCurrentValue()) this.getApi().form.setValue(this.input().formControlName, value);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, input } from '@angular/core';\nimport { YuvIconComponent } from '@yuuvis/client-framework/icons';\nimport { FormScriptingElementExtension } from '../../form-scripting.api.interface';\nimport { ObjectFormElementExtension } from '../../object-form-extension.interface';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@Component({\n selector: 'yuv-form-scripting-element-extension',\n standalone: true,\n imports: [CommonModule, YuvIconComponent, MatTooltipModule],\n templateUrl: './form-scripting-element-extension.component.html',\n styleUrl: './form-scripting-element-extension.component.scss' \n})\nexport class FormScriptingElementExtensionComponent extends ObjectFormElementExtension {\n ext = input<FormScriptingElementExtension>();\n defaultIcon =\n '<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M160-120q-33 0-56.5-23.5T80-200v-560q0-33 23.5-56.5T160-840h560q33 0 56.5 23.5T800-760v80h80v80h-80v80h80v80h-80v80h80v80h-80v80q0 33-23.5 56.5T720-120H160Zm0-80h560v-560H160v560Zm80-80h200v-160H240v160Zm240-280h160v-120H480v120Zm-240 80h200v-200H240v200Zm240 200h160v-240H480v240ZM160-760v560-560Z\"/></svg>';\n\n run() {\n this.ext()?.callback();\n }\n}\n","@let x = ext();\n@if (x) {\n @if (x.icon) {\n <button class=\"secondary\" (click)=\"run()\" [matTooltip]=\"x.label\">\n <yuv-icon [svg]=\"x.icon\"></yuv-icon>\n </button>\n } @else if (x.label) {\n <button class=\"secondary\" (click)=\"run()\">{{ x.label }}</button>\n } @else {\n <button class=\"secondary\" (click)=\"run()\">\n <yuv-icon [svg]=\"defaultIcon\"></yuv-icon>\n </button>\n }\n}\n","import { AbstractControl, ValidatorFn, Validators } from '@angular/forms';\nimport { ObjectFormControl, Situation } from '@yuuvis/client-core';\n/**\n * @ignore\n * Custom validation class.\n */\nexport class FormValidation {\n /**\n * Build validators for the given form element to be attached to\n * a reactive formControl.\n *\n * @param formElement - form element object\n * @param situation - form situation to fetch validators for\n */\n static getValidators(formElement: any, situation: string): ValidatorFn[] {\n const elmValidators: ValidatorFn[] = [];\n const { required, regex } = formElement;\n\n // apply situation based validations\n switch (situation) {\n case Situation.SEARCH: {\n // TODO: implement general validators for SEARCH situation\n break;\n }\n default: {\n if (required) {\n elmValidators.push(Validators.required);\n }\n if (regex && !formElement.multiselect) {\n elmValidators.push(Validators.pattern(regex));\n }\n break;\n }\n }\n return elmValidators;\n }\n\n /**\n *\n * @param control - from object control\n * @returns Validation object {eoformScript: {valid: boolean}} or null\n */\n static customScriptingValidation(): ValidatorFn {\n return (control: AbstractControl) => {\n const ctrl = control as ObjectFormControl;\n return ctrl._eoFormElement && ctrl._eoFormElement.error ? { eoformScript: { valid: false } } : null;\n };\n }\n}\n","import { Classification, ContentStreamField, ObjectFormControl, ObjectFormControlWrapper, Situation } from '@yuuvis/client-core';\nimport { FormValidation } from './object-form.validation';\n\n/**\n * Provides a rendering of form control in `ObjectFormComponent`, `QuickSearchComponent` so wie `SearchFilterFormComponent`.\n */\n\nexport class ObjectFormUtils {\n /**\n * Converts a form element object to an ObjectFormControlWrapper which then can be used to\n * render a from control. Result can be used as input for FormElementComponent.\n *\n * @param element - the element object or a json string\n * @param situation - optional property to set up a form situation for the control (default is EDIT)\n * @return the converted ObjectFormControlWrapper or null in case of an error\n */\n static elementToFormControl(formElement: any, situation?: string): ObjectFormControlWrapper {\n // Create the ObjectFormControlWrapper\n const wrapper = new ObjectFormControlWrapper({});\n const formSituation = situation ? situation : Situation.EDIT;\n\n wrapper._eoFormControlWrapper = {\n controlName: formElement.name,\n situation: formSituation\n };\n\n // create the actual form control\n const controlDisabled = !!formElement.readonly;\n const formControl = new ObjectFormControl(\n {\n value: formElement.value,\n disabled: controlDisabled\n },\n FormValidation.getValidators(formElement, formSituation)\n );\n\n // Form elements in SEARCH situation may arrive with a value set to NULL (explicit search for\n // fields that are NOT set). In that case we need to prepare the form control\n if (formSituation === Situation.SEARCH && formElement.value === null) {\n formElement.isNotSetValue = true;\n }\n\n ObjectFormUtils.updateFormElement(formElement);\n\n formControl._eoFormElement = formElement;\n wrapper.addControl(formElement.name, formControl);\n\n return wrapper;\n }\n /**\n * Update a form element after change a form element object.\n * @param formElement - the form element object\n */\n static updateFormElement(formElement: any) {\n if (formElement.type === 'decimal' && !formElement.scale) {\n formElement.scale = 2;\n }\n\n if (formElement.type === 'integer' && formElement.id === ContentStreamField.LENGTH) {\n formElement.classifications = [Classification.NUMBER_FILESIZE];\n }\n return formElement;\n }\n}\n","import { Injectable, Type } from '@angular/core';\nimport { ObjectFormControlWrapper, ObjectFormGroup, ObjectFormModel, Situation, YuvUser } from '@yuuvis/client-core';\n\nimport { IObjectFormElementExtension, ObjectFormElementExtension } from './object-form-extension.interface';\nimport { ObjectFormUtils } from './object-form.utils';\nimport { Subject } from 'rxjs';\nimport { FormStatusChangedEvent } from './object-form.interface';\n\n/**\n * @ignore\n */\n@Injectable()\nexport class ObjectFormService {\n #formExtensions: IObjectFormElementExtension[] = [];\n\n // Subject to notify about form status/value changes, e.g. when a form is reset or set to pristine.\n formChanged = new Subject<FormStatusChangedEvent>();\n\n setElementExtensions(formExtensions: IObjectFormElementExtension[]) {\n this.#formExtensions = formExtensions;\n }\n\n getElementExtensions(propertyName: string): Type<ObjectFormElementExtension>[] {\n return this.#formExtensions.filter((ext) => ext.property === propertyName).map((ext) => ext.cmp);\n }\n\n /**\n * Converts a form element object to an ObjectFormControlWrapper which then can be used to\n * render a from control. Result can be used as input for FormElementComponent.\n *\n * @param element - the element object or a json string\n * @param situation - optional property to set up a form situation for the control (default is EDIT)\n * @return the converted ObjectFormControlWrapper or null in case of an error\n */\n elementToFormControl(element: any, situation?: string): ObjectFormControlWrapper | null {\n let formElement;\n if (typeof element === 'string') {\n try {\n formElement = JSON.parse(element);\n } catch (e) {\n console.error('Unable to parse form element from json ', formElement);\n }\n } else {\n formElement = element;\n }\n return formElement ? ObjectFormUtils.elementToFormControl(element, situation) : null;\n }\n\n /**\n * Extract data from an object form based on situation.\n *\n * @param form - form to extract data from\n * @param situation - form situation\n * @param [initialData] - optional form data to match the current values against\n * This is required for editig indexdata (EDIT situation), because we have to compare new values\n * against the initial values. If a property that is contained in the forms initial data is removed\n * (e.g. set to null) then we have to set this null value, because otherwise the server would\n * ignore the changes.\n * @param isTableRowEditForm Flag indicating that the provided form is an inline form used by\n * a forms table element for editing rows. Those need a special handling.\n * @return extracted data as object\n */\n extractFormData(form: ObjectFormGroup, situation: string, initialData?: any, isTableRowEditForm?: boolean) {\n const extractedData = {};\n this.#getElementValues(extractedData, form, situation || 'EDIT', initialData, isTableRowEditForm);\n return extractedData;\n }\n\n // Recursive method to get the values from each form control.\n #getElementValues(data: any, formControl: ObjectFormModel, situation: string, initialData?: any, isTableRowEditForm?: boolean) {\n if (!formControl || !formControl.controls) {\n return;\n }\n\n if (formControl instanceof ObjectFormControlWrapper) {\n const fc: any = formControl._eoFormControlWrapper ? formControl.controls[formControl._eoFormControlWrapper.controlName] : null;\n if (!fc) {\n return;\n }\n\n if (fc._eoFormElement.isNotSetValue === true) {\n // form elements may explicitly set to have NULL value (e.g. from Search form if values are requested that have no values)\n this.#setDataValue(fc._eoFormElement.name, null, data, fc._eoFormElement, !isTableRowEditForm);\n } else if (fc.dirty) {\n // fc.value !== undefined) {\n const val = fc.value;\n\n switch (situation) {\n case Situation.SEARCH: {\n if (val !== null) {\n this.#setDataValue(fc._eoFormElement.name, val, data, fc._eoFormElement, !!isTableRowEditForm);\n }\n break;\n }\n case Situation.CREATE: {\n if (val !== null) {\n this.#setDataValue(fc._eoFormElement.name, val, data, fc._eoFormElement, !!isTableRowEditForm);\n }\n break;\n }\n case Situation.EDIT: {\n // in edit situation we have to compare new values against the initial values\n // If a property that is contained in the forms initial data is removed (e.g. set to null)\n // then we have to set this null value, because otherwise the server will ignore the changes\n const v = val === undefined ? null : val;\n if (v !== null || (initialData && initialData[fc._eoFormElement.name] !== undefined)) {\n // data[fc._eoFormElement.name] = val;\n this.#setDataValue(fc._eoFormElement.name, v, data, fc._eoFormElement, !!isTableRowEditForm);\n }\n break;\n }\n }\n // tri-state boolean fields could have a value of 'undefined' that needs to be transformed\n // into 'null' to be correctly be processed by the backend\n if (fc._eoFormElement.type === 'boolean' && fc.value === undefined) {\n this.#setDataValue(fc._eoFormElement.name, null, data, fc._eoFormElement, !!isTableRowEditForm);\n }\n }\n } else {\n Object.keys(formControl.controls).forEach((controlKey) => {\n const formControlKeyed = <ObjectFormGroup>formControl.controls[controlKey];\n this.#getElementValues(data, formControlKeyed, situation, initialData, isTableRowEditForm);\n });\n }\n }\n\n #setDataValue(key: string, value: unknown, data: Record<string, unknown>, formElement: any, isTableRowEditForm: boolean) {\n data[key] = value;\n\n if (isTableRowEditForm && formElement.dataMeta) {\n if (formElement._internalType === 'string:organization') {\n data[key + '_title'] = formElement.dataMeta.map((d: YuvUser) => d.title);\n }\n // else if (formElement._internalType === 'string:reference') {\n // data[key + '_title'] = formElement.dataMeta.map((e: ReferenceEntry) => e.title);\n // }\n }\n }\n}\n","import { CommonModule, NgComponentOutlet } from '@angular/common';\nimport { Component, computed, effect, inject, input, signal, Type, untracked, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { Classification, ObjectFormControlWrapper } from '@yuuvis/client-core';\nimport { MetadataFormFieldComponent } from '@yuuvis/client-framework/metadata-form';\nimport { FormScriptingElementExtension } from '../form-scripting.api.interface';\nimport { FormScriptingApiService } from '../form-scripting.service';\nimport { IObjectFormElementExtensionComponentInput, ObjectFormElementExtension } from '../object-form-extension.interface';\nimport { FormScriptingElementExtensionComponent } from '../object-form-script/form-scripting-element-extension/form-scripting-element-extension.component';\nimport { ObjectFormService } from '../object-form.service';\n\n@Component({\n selector: 'yuv-object-form-element',\n standalone: true,\n imports: [CommonModule, MetadataFormFieldComponent, NgComponentOutlet, ReactiveFormsModule],\n templateUrl: './object-form-element.component.html',\n styleUrls: ['./object-form-element.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: { class: 'yuv-object-form-element' }\n})\nexport class ObjectFormElementComponent {\n #objectFormService = inject(ObjectFormService);\n #scriptingApi = inject(FormScriptingApiService);\n\n createForm = signal(false);\n\n formChangedSubject = this.#objectFormService.formChanged;\n formControlName?: string;\n formElementRef: any;\n errors?: string[];\n extensionComponents: Type<ObjectFormElementExtension>[] = [];\n #scriptingExtensions = this.#scriptingApi.elementExtensions;\n scriptingExtensions = computed(() =>\n Object.values(this.#scriptingExtensions()).filter((ext: FormScriptingElementExtension) => ext.propertyName === this.formControlName)\n );\n\n scriptExtensionCmp = FormScriptingElementExtensionComponent;\n situation = input<string>();\n\n element = input<ObjectFormControlWrapper>();\n #elementEffect = effect(() => {\n const element = this.element();\n\n untracked(() => {\n this.createForm.set(true);\n element && this.#setElement(element);\n });\n });\n\n get extensionComponentInput(): Record<string, unknown> {\n const xti: IObjectFormElementExtensionComponentInput = {\n formControlName: this.formControlName || ''\n };\n return xti as Record<string, any>;\n }\n\n #setElement(el: ObjectFormControlWrapper | undefined) {\n if (el && el._eoFormControlWrapper) {\n this.formControlName = el._eoFormControlWrapper.controlName;\n this.formElementRef = el.controls[this.formControlName];\n this.formElementRef._eoFormElement = this.#setGrouping(this.formElementRef?._eoFormElement);\n this.extensionComponents = this.#objectFormService.getElementExtensions(this.formControlName);\n this.createForm.set(false);\n }\n }\n\n /**\n * formating rules...\n * https://wiki.optimal-systems.de/display/PM/Status+yuuvis+Momentum+-+Flex+client\n */\n #setGrouping(formElement: any) {\n return { ...formElement, grouping: !!formElement?.classifications?.includes(Classification.NUMBER_DIGIT) };\n }\n\n onDataMetaChange(data: any) {\n this.formElementRef._eoFormElement.dataMeta = data;\n }\n\n \n}\n","@let el = element();\n\n@if (!createForm()) {\n @if (el && formElementRef) {\n <div class=\"form-element input\" [formGroup]=\"el\">\n <yuv-metadata-form-field\n [formChangedSubject]=\"formChangedSubject\"\n [field]=\"formElementRef._eoFormElement\"\n [formControlName]=\"el._eoFormControlWrapper!.controlName\"\n [situation]=\"situation()\"\n ></yuv-metadata-form-field>\n\n <div class=\"ext\">\n @for (cmp of extensionComponents; track $index) {\n <ng-container *ngComponentOutlet=\"cmp; inputs: { input: extensionComponentInput }\"></ng-container>\n }\n @for (scmp of scriptingExtensions(); track $index) {\n <ng-container *ngComponentOutlet=\"scriptExtensionCmp; inputs: { ext: scmp }\"></ng-container>\n }\n </div>\n </div>\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, effect, input, Input, ViewEncapsulation } from '@angular/core';\nimport { AbstractControl, ReactiveFormsModule } from '@angular/forms';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { KeysPipe, ObjectFormControlWrapper, ObjectFormGroup, Situation, YuvFormGroup, YuvFormGroupWrapper } from '@yuuvis/client-core';\nimport { ObjectFormElementComponent } from '../object-form-element/object-form-element.component';\n\n@Component({\n selector: 'yuv-object-form-group',\n standalone: true,\n imports: [CommonModule, MatTabsModule, KeysPipe, ObjectFormElementComponent, ReactiveFormsModule],\n templateUrl: './object-form-group.component.html',\n styleUrls: ['./object-form-group.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class ObjectFormGroupComponent {\n private types = {\n STACK: 'stack',\n GROUP: 'group',\n FIELDSET: 'fieldset'\n };\n\n groupType?: string;\n isCore = false;\n isData = false;\n\n // @ViewChild('tabView') tabView: TabView;\n\n // form situation, if not set default will be 'EDIT'\n @Input() situation = Situation.EDIT;\n\n group = input<ObjectFormGroup>();\n #groupEffect = effect(() => {\n const g = this.group();\n\n if (g) {\n this.isCore = !!g._eoFormGroup && g._eoFormGroup.label === 'core';\n this.isData = !!g._eoFormGroup && g._eoFormGroup.label === 'data';\n this.groupType = this.#getGroupType();\n }\n });\n\n noGroupLabels = input<boolean>();\n\n getHeaderStyleClass(ctrl: AbstractControl): string {\n return `dirty-${ctrl.dirty} invalid-${ctrl.invalid}`;\n }\n\n getChildControl(ctrl: AbstractControl): ObjectFormGroup {\n return ctrl as ObjectFormGroup;\n }\n\n getObjectFormGroup(control: any): YuvFormGroup | undefined {\n return (control as ObjectFormGroup)._eoFormGroup;\n }\n\n getObjectFormControlWrapper(control: any): YuvFormGroupWrapper | undefined {\n return (control as ObjectFormControlWrapper)?._eoFormControlWrapper;\n }\n\n getElement(control: any): ObjectFormControlWrapper {\n return control as ObjectFormControlWrapper;\n }\n\n #getGroupType(): string | undefined {\n // may as well be an ObjectFormControlWrapper so check first\n // if we got a real group\n const group = this.group() as ObjectFormGroup;\n if (group?._eoFormGroup) {\n if (group._eoFormGroup.type === 'o2mGroupStack') {\n // for data section only render as stack (tabs) if we have more than one child\n if (this.isData && Object.keys(group.controls).length === 1) {\n return this.types.GROUP;\n }\n return this.types.STACK;\n }\n if (group._eoFormGroup.type === 'o2mGroup') {\n return group._eoFormGroup.label && !(this.isCore || this.isData) && !this.noGroupLabels && !this.#parentIsStack(group)\n ? this.types.FIELDSET\n : this.types.GROUP;\n }\n return this.types.GROUP;\n } else return undefined;\n }\n\n #parentIsStack(group: ObjectFormGroup): boolean {\n const parentFormElement = group.parent && (group.parent as any)['_eoFormGroup'];\n return parentFormElement && parentFormElement.type === 'o2mGroupStack';\n }\n}\n","@let grp = group();\n@if (grp) {\n <div\n class=\"form-element {{ grp._eoFormGroup ? grp._eoFormGroup.type : 'o2mControlWrap' }} align-{{\n grp._eoFormGroup && grp._eoFormGroup.layout ? grp._eoFormGroup.layout.align : ''\n }}\"\n [formGroup]=\"grp\"\n >\n @switch (groupType) {\n <!-- group stacks (tabs) -->\n @case ('stack') {\n <mat-tab-group>\n @for (key of grp.controls | keys; track key) {\n <mat-tab [label]=\"getObjectFormGroup(grp.controls[key])?.label || ''\">\n <ng-template matTabContent>\n <div class=\"stack\" [ngClass]=\"{ stackBase: grp._eoFormGroup?.label === 'data' }\">\n @if (getObjectFormControlWrapper(grp.controls[key])) {\n <yuv-object-form-element [element]=\"getElement(grp.controls[key])\" [situation]=\"situation\"></yuv-object-form-element>\n } @else {\n <yuv-object-form-group [group]=\"getChildControl(grp.controls[key])\" [noGroupLabels]=\"true\" [situation]=\"situation\"></yuv-object-form-group>\n }\n </div>\n </ng-template>\n </mat-tab>\n }\n </mat-tab-group>\n }\n\n <!-- group with legend -->\n @case ('fieldset') {\n <div class=\"om-group fieldset\">\n <div class=\"legend\">\n <span>{{ grp._eoFormGroup?.label }}</span>\n </div>\n\n <div>\n @for (key of grp.controls | keys; track key) {\n @if (getObjectFormControlWrapper(grp.controls[key])) {\n <yuv-object-form-element [element]=\"getElement(grp.controls[key])\" [situation]=\"situation\"></yuv-object-form-element>\n } @else {\n <yuv-object-form-group [group]=\"getChildControl(grp.controls[key])\" [noGroupLabels]=\"true\" [situation]=\"situation\"></yuv-object-form-group>\n }\n }\n </div>\n </div>\n }\n <!-- group -->\n @case ('group') {\n @for (key of grp.controls | keys; track key) {\n @if (getObjectFormControlWrapper(grp.controls[key])) {\n <yuv-object-form-element [element]=\"getElement(grp.controls[key])\" [situation]=\"situation\"></yuv-object-form-element>\n } @else {\n <yuv-object-form-group [group]=\"getChildControl(grp.controls[key])\" [noGroupLabels]=\"true\" [situation]=\"situation\"></yuv-object-form-group>\n }\n }\n }\n }\n </div>\n}\n","import { HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { BackendService, Logger } from '@yuuvis/client-core';\nimport { Observable, forkJoin as observableForkJoin } from 'rxjs';\nimport { map as _map } from 'rxjs/operators';\nimport { ObjectFormScriptingScope } from './object-form-scripting-scope';\n\n\n/**\n * @ignore\n */\n@Injectable()\nexport class ObjectFormScriptService {\n constructor(private logger: Logger, private backend: BackendService) { }\n\n /**\n * Run a form script.\n * @param scope - the current scripting scope\n * @param script - the script to be executed\n * @param [scriptName] - the scripts name\n */\n public runFormScript(scope: ObjectFormScriptingScope, script: any, scriptName?: string) {\n try {\n // Define form script the function\n const formScriptFunction = this.defineFunction('Formscript/' + scriptName, script);\n // run the form script\n const formScriptReturn = formScriptFunction(scope);\n // Check if the form script returns something and may export global scripts\n if (formScriptReturn) {\n this.importGlobalScriptsAndCallInit(scope, formScriptReturn);\n }\n } catch (e) {\n if (e instanceof SyntaxError) {\n alert('Syntax error in Form-Script. See console log for details.');\n }\n this.logger.error('Got script error', e);\n }\n }\n\n /**\n * Define form script function, appending source url as comment.\n * Enables debugging using browser debugging tools (Chrome+Firefox)\n * @see: https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Debug_eval_sources\n *\n * @param name - the name of the script\n * @param script - script to be wrapped in a function\n * @returns the function\n */\n // eslint-disable-next-line @typescript-eslint/ban-types\n private defineFunction(name: string, script: any): Function {\n // Appending source url as comment. See https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Debug_eval_sources\n // Enables debugging using browser debugging tools (Chrome+Firefox)\n // The line feed is needed, if the script has a comment in the last line\n return new Function('scope', script + '\\n;//# sourceURL=' + name + '.js');\n }\n\n /**\n * If the script contains global script, this function will import and run them\n * before running the actual script.\n *\n * @param scope - the current scripting scope\n * @param formScriptReturn - the return value of the actual form script\n */\n private importGlobalScriptsAndCallInit(scope: ObjectFormScriptingScope, formScriptReturn: any) {\n if (!formScriptReturn.init) {\n return;\n }\n\n if (formScriptReturn.uses) {\n // collect the global script exports promises\n const exports: any[] = [];\n const globals = [];\n\n // collect Observables for fetching global scripts\n for (const use of formScriptReturn.uses) {\n globals.push(this.resolveGlobalScript(use, scope));\n }\n\n observableForkJoin(globals).subscribe((globalReturns) => {\n for (const scriptReturn of globalReturns) {\n exports.push(scriptReturn['exports']);\n }\n // Invoke init function on form script return with the\n // collected exports using javascript apply magic\n formScriptReturn.init.apply(this, exports);\n });\n } else {\n // invoke init direct (no use of global scripts)\n formScriptReturn.init();\n }\n }\n\n /**\n * Fetch global scripts.\n * @param name - the name of the global script\n * @param scope - the current scripting scope\n * @returns\n */\n private resolveGlobalScript(name: string, scope: ObjectFormScriptingScope): Observable<any> {\n const requestOptions = {\n headers: new HttpHeaders({\n Accept: 'text/plain'\n }),\n responseType: 'text'\n };\n\n return this.backend.get(`/script/${name}/script`, undefined, requestOptions).pipe(\n _map((res: any) => {\n // define the global function ...\n const globalScript = this.defineFunction('Global/' + name, res);\n // ... and run it\n return globalScript(scope);\n })\n );\n }\n}\n","/**\n * @ignore\n * This class will be injected as scope into form scripts.\n */\nexport class ObjectFormScriptingScope {\n // List of all form fields (elements)\n public model: any = {};\n\n // all data values including invisible elements (READONLY)\n public data: any = {};\n\n // The id of the current DMS-Object (READONLY)\n public objectId?: string;\n\n // actions passed by BPM forms\n public actions: any = {};\n // additional objects provided by the object form\n // used for example to pass dms objects attached to a work item\n // to the script (READONLY)\n // may contain: FormScriptDmsObject, FileEntry\n public objects: any[] = [];\n public context: { id: string; title: string; objectTypeId: string } = { id: '', title: '', objectTypeId: '' };\n\n /**\n * Constructor\n * @param situation - Current form model situation (could be CREATE, SEARCH or EDIT)\n * @param onScriptingModelChange - callback function to be called when the scripting model changed\n * Be aware to provide an instance method as callback for the scripting scope.\n * @see: https://blog.johnnyreilly.com/2014/04/typescript-instance-methods.html\n *\n * @param api - Plugin API reference\n * @param isTableRowScope - set this to true if the current scripting scope is created for a\n * row editing form from a table element. It will then provide the right parameters for the scripting functions\n */\n // eslint-disable-next-line @typescript-eslint/ban-types\n constructor(public situation: string, private onScriptingModelChange: Function, public api: any, private isTableRowScope?: boolean) {}\n\n /**\n * Sets the internal model and wraps every model element with an observer to be\n * able to track their changes from within a form script\n * @param model\n */\n public setModel(model: any) {\n this.model = {};\n for (const k of Object.keys(model)) {\n this.model[k] = new ScopeElement(model[k], this.onScriptingModelChange);\n }\n }\n\n /**\n * Returns the observed model. Used for row editing forms of table elements that\n * create their own scripting scope in context of their parent form.\n * @returns the observed scripting scope model\n */\n public getModel() {\n return this.model;\n }\n\n /**\n * Called by the object form when the form model changes.\n * @param change - object with key equals name of the element\n * that changes and value of the new value\n */\n public modelChanged(change: any) {\n // find the changed element in the scopes model\n const propertyName = Object.keys(change)[0];\n if (change[propertyName] === undefined) {\n return;\n }\n\n if (this.model[propertyName]) {\n const el = this.model[propertyName];\n el.update(change[propertyName], this.model);\n }\n }\n}\n/**\n * @ignore\n */\nclass ScopeElement {\n // eslint-disable-next-line @typescript-eslint/ban-types\n constructor(private element: any, private onScriptingModelChange: Function) {\n if (this.element.value === undefined) {\n this.element.value = null;\n }\n if (this.isProxyable(this.element.value)) {\n this.element.value = this.createProxy(this.element.value);\n }\n }\n\n private isProxyable(value: any, key?: string) {\n return (\n (typeof value === 'object' || Array.isArray(value)) &&\n value !== null &&\n !(value instanceof Date) &&\n !value.isProxy &&\n (key ? !key.includes('_meta') : true)\n );\n }\n\n private createProxy(value: any) {\n const handler = {\n set: (target: Record<string, unknown>, key: string, val: unknown) => {\n const previousValue = structuredClone(this.element.value);\n if (this.isProxyable(val, key)) {\n target[key] = this.createProxy(val);\n } else {\n target[key] = val;\n }\n if (this.hasValueChanged(this.element.value, previousValue) && !key.includes('_meta')) {\n this.onScriptingModelChange(this.element.name, { newValue: structuredClone(this.element.value), name: 'value' });\n }\n return true;\n },\n // This get trap is only used to find out, if an object is a proxy or not.\n get: (target: Record<string, unknown>, key: string) => {\n if (key === 'isProxy') {\n return true;\n }\n return target[key];\n }\n };\n\n Object.keys(value).forEach((key) => {\n if (this.isProxyable(value[key], key)) {\n value[key] = this.createProxy(value[key]);\n }\n });\n return new Proxy(value, handler);\n }\n\n private hasValueChanged(value1: unknown, value2: unknown) {\n return JSON.stringify(value1) !== JSON.stringify(value2);\n }\n\n update(value: unknown, model: any) {\n const newValue = structuredClone(value);\n if (this.hasValueChanged(this.element.value, value)) {\n if (this.isProxyable(value)) {\n this.element.value = this.createProxy(newValue);\n } else {\n this.element.value = newValue;\n }\n if (this.element.onchange) {\n this.element.onchange(this, model);\n }\n }\n }\n\n set value(value) {\n if (this.hasValueChanged(this.element.value, value)) {\n if (this.isProxyable(value)) {\n this.element.value = this.createProxy(value);\n } else {\n this.element.value = value;\n }\n this.onScriptingModelChange(this.element.name, { newValue: structuredClone(this.element.value), name: 'value' });\n }\n }\n\n get value() {\n return this.element.value;\n }\n\n set onchange(onchange) {\n this.element.onchange = onchange;\n this.onScriptingModelChange(this.element.name, { newValue: onchange, name: 'onchange' });\n }\n\n get onchange() {\n return this.element.onchange;\n }\n\n set required(required) {\n this.element.required = required;\n this.onScriptingModelChange(this.element.name, { newValue: required, name: 'required' });\n }\n\n get required() {\n return this.element.required;\n }\n\n set readonly(readonly) {\n this.element.readonly = readonly;\n this.onScriptingModelChange(this.element.name, { newValue: readonly, name: 'readonly' });\n }\n\n get readonly() {\n return this.element.readonly;\n }\n\n set error(error) {\n this.element.error = error;\n this.onScriptingModelChange(this.element.name, { newValue: error, name: 'error' });\n }\n\n get error() {\n return this.element.error;\n }\n\n set onrowedit(onrowedit) {\n this.element.onrowedit = onrowedit;\n this.onScriptingModelChange(this.element.name, { newValue: onrowedit, name: 'onrowedit' });\n }\n\n get onrowedit() {\n return this.element.onrowedit;\n }\n\n setList(obj: any) {\n if (this.element.setList) {\n this.element.setList(obj);\n }\n }\n\n applyFilter(obj: any) {\n if (this.element.applyFilter) {\n this.element.applyFilter(obj);\n }\n }\n\n setFilter(obj: any) {\n if (this.element.setFilter) {\n this.element.setFilter(obj);\n }\n }\n\n get name() {\n return this.element.name;\n }\n\n get qname() {\n return this.element.qname;\n }\n\n get label() {\n return this.element.label;\n }\n\n get description() {\n return this.element.description;\n }\n\n get type() {\n return this.element.type;\n }\n\n get multiselect() {\n return this.element.multiselect;\n }\n\n get codesystem() {\n return this.element.codesystem;\n }\n\n get minlen() {\n return this.element.minLength;\n }\n\n get maxlen() {\n return this.element.maxLength;\n }\n\n get classifications() {\n return this.element.classifications;\n }\n\n get scale() {\n return this.element.scale;\n }\n\n get precision() {\n return this.element.precision;\n }\n\n get withtime() {\n return this.element.withtime;\n }\n\n get elements() {\n return this.element.elements;\n }\n\n get aliases() {\n return this.element.aliases;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { AfterViewInit, ChangeDetectorRef, Component, effect, ElementRef, inject, input, OnDestroy, output, signal, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ReactiveFormsModule, ValidatorFn, Validators } from '@angular/forms';\nimport { ObjectFormControl, ObjectFormControlWrapper, ObjectFormGroup, Situation, SystemService, UserService, Utils } from '@yuuvis/client-core';\nimport { debounceTime, merge, Observable, of, Subscription } from 'rxjs';\nimport { FormScriptingApiService } from './form-scripting.service';\nimport { IObjectFormElementExtension } from './object-form-extension.interface';\nimport { ObjectFormGroupComponent } from './object-form-group/object-form-group.component';\nimport { ObjectFormScriptService } from './object-form-script/object-form-script.service';\nimport { ObjectFormScriptingScope } from './object-form-script/object-form-scripting-scope';\nimport { ObjectFormService } from './object-form.service';\nimport { ObjectFormUtils } from './object-form.utils';\nimport { FormValidation } from './object-form.validation';\nimport { ObjectFormOptions, FormStatusChangedEvent, ObjectFormModelChange } from './object-form.interface';\n\n@Component({\n selector: 'yuv-object-form',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, ObjectFormGroupComponent],\n providers: [ObjectFormService, ObjectFormScriptService, FormScriptingApiService],\n templateUrl: './object-form.component.html',\n styleUrl: './object-form.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'yuv-object-form',\n '[attr.inert]': 'inert() ? true : null'\n }\n})\nexport class ObjectFormComponent implements OnDestroy, AfterViewInit {\n #elementRef = inject(ElementRef);\n #systemService = inject(SystemService);\n #formScriptService = inject(ObjectFormScriptService);\n #formHelperService = inject(ObjectFormService);\n #userService = inject(UserService);\n #cdRef = inject(ChangeDetectorRef);\n #formScriptingApiService = inject(FormScriptingApiService);\n\n #skipTranslationsFor = ['core', 'data'];\n #namePrefix = 'fg_';\n gCount = 0;\n\n id = Utils.uuid();\n\n fo?: ObjectFormOptions;\n formOptions = input<ObjectFormOptions>();\n #formOptionsEffect = effect(() => {\n this.#init(this.formOptions());\n });\n\n inert = input<boolean>();\n elementExtensions = input<IObjectFormElementExtension[]>([]);\n #elementExtensionsEffect = effect(() => {\n this.#formHelperService.setElementExtensions(this.elementExtensions());\n });\n\n /**\n * There are special scenarios where forms are within a form themselves.\n * Setting this property to true, will handle the current form in a\n * slightly different way when it comes to form scripting.\n */\n isInnerTableForm = input<boolean>();\n\n /**\n * triggered when the forms state has been changed\n */\n statusChanged = output<FormStatusChangedEvent>();\n\n /**\n * handler to be executed after the form has been set up\n */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n onFormReady = output();\n\n // the actual form instance\n form?: ObjectFormGroup;\n // property for holding the forms data used for comparison when a form-changed-event\n // is fetched to indicate wher or not the indexdata were changed or just the properties\n // of the form elements (eg. form script setting fields to readonly)\n formData: any;\n #scriptModel: any = {};\n #scriptingScope?: ObjectFormScriptingScope;\n #subscriptions: Subscription[] = [];\n\n // local store for all the form control references\n #formControls: any = {};\n #initialValidators: any = {};\n\n constructor() {\n this.#formScriptingApiService.formId = this.id;\n this.#formScriptingApiService.api.events\n .on(FormScriptingApiService.EVENT_MODEL_CHANGED)\n .pipe(takeUntilDestroyed())\n .subscribe((event) => event.data && this.#onScriptingModelChanged(event.data.formControlName, event.data.change, event.data.formId));\n\n this.#formScriptingApiService.formId = this.id;\n }\n\n // initialize the form based on the provided form options\n #init(fo: ObjectFormOptions | undefined) {\n this.form = undefined;\n if (!fo) return;\n if (!this.#validateFormModel(fo)) return;\n setTimeout(() => {\n this.#initialValidators = {};\n this.unsubscribeAll();\n this.#buildReactiveForm(fo);\n }, 0);\n }\n\n #validateFormModel(fo: ObjectFormOptions): boolean {\n const model = fo.formModel;\n const valid =\n model &&\n model.elements &&\n model.elements.length === 2 &&\n // core\n model.elements[0].type === 'o2mGroup' &&\n // data\n model.elements[1].type === 'o2mGroupStack';\n if (!valid) console.error('Invalid form model', model);\n return valid;\n }\n\n #initScriptingScope(formOptions: ObjectFormOptions, dataFormModel: any) {\n const { data, actions, objects, context } = (formOptions || {}) as ObjectFormOptions;\n\n if (this.#scriptingScope) {\n this.#scriptingScope.setModel(this.#scriptModel);\n /** provide access to actions (used inside of BPM-Forms) */\n this.#scriptingScope.actions = actions;\n /** provide access to additional objects (used for example in BPM-Start-Forms to\n * add data of DMS-Objects to start the process for)\n */\n this.#scriptingScope.objects = objects || [];\n this.#scriptingScope.context = context || { id: '', title: '', objectTypeId: '' };\n /** provide readonly access to initial form data (which may also contain values that\n * are not rendered as form elements (invisible values))\n */\n this.#scriptingScope.data = data;\n\n /** by default, scripting scopes are applied to forms. But table elements create their own scope\n * for editing rows. Being one of those inner forms should not run the form script again, but\n * instead just provide the observing abilities of the scripting scope.\n */\n if (!this.isInnerTableForm() && dataFormModel) {\n const scriptName = dataFormModel.name + '_' + dataFormModel.situation;\n console.debug('executing form script ' + scriptName);\n this.#formScriptService.runFormScript(this.#scriptingScope, dataFormModel.script, scriptName);\n }\n }\n }\n\n focusForm() {\n this.#elementRef.nativeElement.querySelector('input').focus();\n }\n\n getGroup(id: string): ObjectFormGroup {\n return this.form?.get(id) as ObjectFormGroup;\n }\n\n setFormData(data: Record<string, unknown>) {\n const fo = this.formOptions();\n if (!fo) return;\n fo.data = data;\n setTimeout(() => this.#init(fo), 0);\n }\n\n patchValue(data: Record<string, unknown>) {\n Object.keys(data).forEach((key) => {\n this.#onScriptingModelChanged(key, {\n name: 'value',\n newValue: data[key]\n });\n });\n }\n\n /**\n * Extracts the values from the form model. Each form value is represented by one\n * property on the result object holding the fields value. The keys (properties) are the `name`\n * properties of the form element.\n *\n * How values are extracted is influenced by the forms situation.\n *\n * @return object of key value pairs\n */\n getFormData() {\n return this.#formToData();\n }\n\n getFormElements() {\n const formElements: any = {};\n Object.keys(this.#formControls).forEach((k) => {\n formElements[k] = this.#formControls[k].__eoFormElement;\n });\n return formElements;\n }\n\n setFormPristine() {\n if (!this.form) return;\n this.form.markAsPristine();\n this.#formHelperService.formChanged.next({\n invalid: this.form.invalid,\n dirty: this.form.dirty,\n data: this.formData,\n indexdataChanged: false\n });\n // also set the data of the form options to the current data\n // so resetting the form afterwards will reset to the current \n // pristine state\n const fo = this.formOptions();\n if (!fo) return;\n fo.data = this.formData;\n }\n\n // reset the form to its initial state\n resetForm() {\n const fo = this.formOptions();\n if (!fo) return;\n this.setFormData(fo.data);\n this.#emitFormChangedEvent();\n }\n\n /**\n * Returns the observed model that was passed to the current form script running. If there is\n * no form script, this method will return NULL.\n * @returns\n */\n getObservedScriptModel() {\n return this.#scriptingScope ? this.#scriptingScope.getModel() : null;\n }\n\n // Create a reactive form from the enaio form model\n #buildReactiveForm(formOptions: ObjectFormOptions) {\n this.#scriptingScope = undefined;\n this.#scriptModel = {};\n this.#formControls = {};\n const formModel = this.#dataToForm(formOptions.formModel, formOptions.data);\n if (!formModel) {\n return;\n }\n // if a script is available, we'll init the form scripting for the\n // current form\n if (this.isInnerTableForm() || (formModel.script && formModel.script.length > 0)) {\n console.debug('adding form scripting scope');\n this.#scriptingScope = new ObjectFormScriptingScope(\n formModel.situation,\n this.#onScriptingModelChanged,\n this.#formScriptingApiService.getApi(),\n this.isInnerTableForm()\n );\n this.#scriptingScope.objectId = this.formOptions()!.objectId;\n }\n\n const form = new ObjectFormGroup({});\n if (formModel?.elements[0]?.elements) {\n this.#addFormControl(form, formModel.elements[0], 'core');\n }\n if (formModel?.elements[1]?.elements) {\n this.#addFormControl(form, formModel.elements[1], 'data');\n }\n this.form = form;\n this.#formScriptingApiService.registerActiveForm(this);\n setTimeout(() => {\n if (!this.form) return;\n this.initValidators(this.form);\n this.#subscriptions.push(\n merge(this.form.valueChanges, this.form.statusChanges)\n .pipe(debounceTime(500))\n .subscribe(() => this.#emitFormChangedEvent())\n );\n\n this.#initScriptingScope(formOptions, formModel);\n\n this.onFormReady.emit();\n this.#emitFormChangedEvent(false);\n }, 300); //<-- init validation is delayed\n }\n\n initValidators(form: any) {\n if (this.form) {\n for (const key of Object.keys(form.controls)) {\n const control = form.controls[key];\n if (control.controls) {\n this.initValidators(control);\n } else {\n this.#initialValidators[control._eoFormElement.name] = control.validator;\n control.setValidators(Validators.compose(this.#getValidators(control._eoFormElement).concat([this.#initialValidators[control._eoFormElement.name]])));\n control.updateValueAndValidity();\n }\n }\n }\n }\n\n #emitFormChangedEvent(compare = true) {\n // check if indexdata has been changed\n const currentFormData = this.getFormData();\n const idxChange = compare ? JSON.stringify(this.formData) !== JSON.stringify(currentFormData) : false;\n this.formData = currentFormData;\n if (this.form) {\n const e = {\n invalid: this.form.invalid,\n dirty: this.form.dirty,\n data: this.formData,\n indexdataChanged: idxChange\n };\n this.statusChanged.emit(e);\n this.#formHelperService.formChanged.next(e);\n }\n }\n\n /**\n * This method will be called each time the script changes its internal model.\n * It is used to transfer the script changes to the actual form model.\n *\n * To ensure the right context, we define an instance method as callback for the scripting scope\n * @see: https://blog.johnnyreilly.com/2014/04/typescript-instance-methods.html\n *\n * @param formControlName\n * @param change\n */\n #onScriptingModelChanged = (formControlName: string, change: ObjectFormModelChange, formId?: string) => {\n if (!this.form || (formId && this.id !== formId)) return;\n // find the target control\n const fc: ObjectFormControl = this.#formControls[formControlName] as ObjectFormControl;\n if (fc) {\n // change only allowed properties\n switch (change.name) {\n case 'value': {\n if (Array.isArray(change.newValue)) {\n this.#processArrayValueChange(fc, change);\n } else {\n fc._eoFormElement.value = change.newValue;\n if (fc.value !== change.newValue) {\n fc.patchValue(change.newValue);\n fc.updateValueAndValidity();\n fc.markAsDirty();\n }\n }\n this.form.markAsDirty();\n break;\n }\n case 'required': {\n fc._eoFormElement.required = change.newValue;\n // apply new validators\n // @see: https://scotch.io/tutorials/how-to-implement-conditional-validation-in-angular-2-model-driven-forms\n fc.setValidators(Validators.compose(this.#getValidators(fc._eoFormElement).concat([this.#initialValidators[fc._eoFormElement.name]])));\n // need to mark form control as touched because otherwise form validation will not show\n // error messages\n fc.markAsTouched();\n fc.updateValueAndValidity();\n break;\n }\n case 'readonly': {\n fc._eoFormElement.readonly = change.newValue;\n if (change.newValue === true) {\n fc.disable();\n } else {\n fc.enable();\n }\n break;\n }\n case 'error': {\n fc._eoFormElement.error = change.newValue;\n fc.markAsTouched();\n fc.updateValueAndValidity();\n break;\n }\n // new onrowedit function was applied by the script\n case 'onrowedit': {\n fc._eoFormElement.onrowedit = change.newValue;\n break;\n }\n // new onchange function was applied by the script\n case 'onchange': {\n fc._eoFormElement.onchange = change.newValue;\n break;\n }\n }\n this.#cdRef.detectChanges();\n }\n };\n\n #processArrayValueChange(fc: any, change: any) {\n const newVal = change.newValue;\n const targetType = fc._eoFormElement.type;\n // for some types we have to ensure that meta data are provided as well\n switch (targetType) {\n case 'ORGANIZATION': {\n this.#getDataMeta(fc._eoFormElement, newVal).subscribe((m) => {\n fc._eoFormElement.dataMeta = m;\n });\n break;\n }\n case 'TABLE': {\n const dataToBeProcessed: Record<string, unknown> = {};\n fc._eoFormElement.elements.forEach((e: any) => {\n if (e.type === 'ORGANIZATION' || e.type === 'CODESYSTEM') {\n dataToBeProcessed[e.name] = e;\n }\n });\n if (Object.keys(dataToBeProcessed).length) {\n newVal.forEach((rowData: any) => {\n Object.keys(rowData).forEach((key) => {\n if (dataToBeProcessed[key]) {\n this.#getDataMeta(dataToBeProcessed[key], rowData[key]).subscribe((m) => {\n if (m) {\n rowData[key + '_meta'] = m;\n } else {\n delete rowData[key + '_meta'];\n }\n this.#updateArrayValue(fc, newVal);\n });\n }\n });\n });\n }\n break;\n }\n }\n this.#updateArrayValue(fc, newVal);\n }\n\n #updateArrayValue(fc: any, newValue: any) {\n fc._eoFormElement.value = [].concat(newValue);\n fc.patchValue([].concat(newValue));\n fc.updateValueAndValidity();\n fc.markAsDirty();\n }\n\n #getDataMeta(formElement: any, newValue: any): Observable<any> {\n if (newValue) {\n switch (formElement.type) {\n case 'ORGANIZATION': {\n return this.#userService.getUserById(newValue);\n }\n }\n }\n return of(null);\n }\n\n #patchFormValue(formValue: string[] | string) {\n let value: any;\n if (Array.isArray(formValue)) {\n value = [];\n // copy by value for arrays of objects (e.g. table data)\n formValue.forEach((o) => value.push(JSON.parse(JSON.stringify(o))));\n } else {\n value = formValue;\n }\n return value;\n }\n\n /**\n * Recursive method adding a new FormControl (group or control) to a parent form group\n *\n * @param parentGroup - the parent group to add the control to\n * @param formElement - the enaio form model element to create the child control from\n * @param [useName] - use this name instead of the one from the model\n */\n #addFormControl(parentGroup: ObjectFormGroup, formElement: any, useName?: string) {\n const fo = this.formOptions();\n if (!fo) return;\n\n let ctrl;\n let name;\n\n // add a form group\n if (formElement.type === 'o2mGroup' || formElement.type === 'o2mGroupStack') {\n // do not add groups that are empty\n const isRootGroup = formElement.name && (formElement.name !== 'data' || formElement.name !== 'core');\n if (!isRootGroup && (!formElement.elements || formElement.elements.length === 0)) {\n console.error('Found empty form group', formElement);\n return;\n }\n\n ctrl = new ObjectFormGroup({});\n ctrl._eoFormGroup = {\n layout: formElement.layout,\n type: formElement.type\n };\n\n if (formElement.name) {\n if (this.#skipTranslationsFor.includes(formElement.name)) {\n ctrl._eoFormGroup.label = formElement.name;\n } else if (!formElement.label) {\n // no label, so try to translate the technical name\n ctrl._eoFormGroup.label = this.#systemService.getLocalizedResource(`${formElement.name}_label`) || formElement.name;\n } else {\n // there is a label so we take this one\n ctrl._eoFormGroup.label = formElement.label;\n }\n }\n\n if (useName === 'core' || useName === 'data') {\n ctrl._eoFormGroup.label = useName;\n }\n\n for (const e of formElement.elements) {\n this.#addFormControl(ctrl, e);\n }\n name = useName || 'fg' + this.gCount++;\n } else {\n // add form control\n // To be able to integrate recursive form controls into the main form,\n // we have to wrap them in a form group\n ctrl = new ObjectFormControlWrapper({});\n ctrl._eoFormControlWrapper = {\n // the name of the wrapped FormControl\n controlName: formElement.name,\n situation: fo.formModel.situation\n };\n\n // do not set a reference as the form controls value\n // otherwise we could not reset the form\n const value = formElement?.value\n ? this.#patchFormValue(formElement?.value)\n : !Utils.isEmpty(formElement?.defaultvalue) && fo.formModel.situation === Situation.CREATE\n ? this.#patchFormValue(formElement?.defaultvalue)\n : formElement?.value;\n\n // create the actual form control\n const controlDisabled = fo.disabled || !!formElement.readonly;\n const formControl = new ObjectFormControl({\n value,\n disabled: controlDisabled\n });\n\n // if form element has a 'label' property it will be shown as is ...\n if (!formElement.label) {\n // ... if there is no label but a 'labelKey' property we are going to localize that key ...\n if (formElement.labelkey) {\n formElement.label = this.#systemService.getLocalizedResource(`${formElement.labelkey}_label`) || formElement.labelkey;\n formElement.description = this.#systemService.getLocalizedResource(`${formElement.labelkey}_description`);\n } else {\n // ... no 'label' and also no 'labelKey' means that we are showing technical name instead\n formElement.label = formElement.name;\n }\n }\n formElement.readonly = controlDisabled;\n // we are using an internal type to distinguish between the components\n // to be used to render certain form elements\n formElement._internalType = this.#systemService.getInternalFormElementType(formElement.type, formElement.classifications);\n\n formControl._eoFormElement = formElement;\n this.#formControls[formElement.name] = formControl;\n\n if (formElement.type === 'TABLE') {\n // Add 'onrowedit' property even if it's not set.\n // This is required because otherwise mobX-Observer would not recognize\n // changes to this property applied by the form script\n if (!Object.keys(formControl._eoFormElement).includes('onrowedit')) {\n formControl._eoFormElement.onrowedit = null;\n }\n\n if (this.#scriptingScope && formControl._eoFormElement.value) {\n // having a scripting scope and table rows means that we need to set empty\n // columns to NULL, because otherwise mobX won't be able to track those values\n const valueFields = formControl._eoFormElement.elements.map((e: any) => e.name);\n formControl._eoFormElement.value.forEach((rowValue: any) => {\n valueFields.forEach((valueField: string) => {\n if (!Object.keys(rowValue).includes(valueField)) {\n rowValue[valueField] = null;\n }\n });\n });\n // update form controls value as well to reflect the observed value\n formControl.patchValue(formControl._eoFormElement.value, {\n onlySelf: true,\n emitEvent: false,\n emitModelToViewChange: false,\n emitViewToModelChange: false\n });\n }\n }\n\n if (formElement._internalType === 'string:organization') {\n formControl._eoFormElement.setFilter = (filterObject: any) => {\n formControl._eoFormElement.filter = filterObject;\n };\n }\n\n ObjectFormUtils.updateFormElement(formElement);\n\n // remove empty descriptions\n const desc = formControl._eoFormElement.description;\n if (desc && desc.trim().length === 0) {\n formControl._eoFormElement.description = null;\n }\n\n // add the form element to the script model that will be injected into\n // the forms scripting scope later on\n this.#scriptModel[formElement.name] = formControl._eoFormElement;\n\n // apply change listener to the form control, that will trigger\n // the form elements onChange listener\n const controlWatch = ctrl.valueChanges.pipe(debounceTime(500));\n this.#subscriptions.push(\n controlWatch.subscribe((v) => {\n if (this.#scriptingScope) {\n this.#scriptingScope.modelChanged(v);\n }\n })\n );\n\n ctrl.addControl(formElement.name, formControl);\n name = this.#namePrefix + formElement.name;\n }\n parentGroup.addControl(name, ctrl);\n }\n\n /**\n * Build validators for the given form element to be attached to\n * a reactive formControl.\n *\n * @param formElement - form element object\n */\n #getValidators(formElement: any): ValidatorFn[] {\n const fo = this.formOptions();\n const elmValidators = FormValidation.getValidators(formElement, fo?.formModel.situation);\n\n // add custom validator for script enabled forms\n if (this.#scriptingScope) {\n elmValidators.push(FormValidation.customScriptingValidation);\n }\n\n return elmValidators;\n }\n\n /**\n * Extract the values from the form\n */\n #formToData() {\n const fo = this.formOptions();\n return fo && this.form ? this.#formHelperService.extractFormData(this.form, fo.formModel.situation, fo.data, this.isInnerTableForm()) : {};\n }\n\n /**\n * Merge data into a form model.\n *\n * @param model - form model\n * @param data - data object or array of SearchFilter objects in case of a search form\n */\n #dataToForm(model: any, data: any) {\n if (model && data) {\n this.#setElementValues(model.elements, data);\n }\n return model;\n }\n\n // recursive method for adding values to model elements\n #setElementValues(elements: any[], data: Record<string, unknown>) {\n elements?.forEach((element) => {\n if (this.#hasValue(data, element)) {\n element.value = this.#getValue(data, element);\n } else {\n delete element.value;\n }\n if (element.type !== 'TABLE' && element.elements && element.elements.length > 0) {\n this.#setElementValues(element.elements, data);\n }\n });\n }\n\n #hasValue(data: Record<string, unknown>, element: any) {\n // differ between array of SearchFilters and a form data object\n if (Array.isArray(data)) {\n return !!data.find((filter) => filter.property === element.id);\n } else {\n return Object.keys(data).includes(element.name);\n }\n }\n\n #getValue(data: Record<string, unknown>, element: any) {\n return data[element.name];\n }\n\n ngOnDestroy() {\n this.unsubscribeAll();\n this.#formScriptingApiService.unregisterActiveForm(this);\n }\n\n ngAfterViewInit() {\n this.#cdRef.detectChanges();\n }\n\n // unsubscribe from all value change listeners for the current form\n // to avoid memory leaks. This method will also be called every time\n // a new form is rendered to get rid of the old form element subscriptions\n private unsubscribeAll() {\n if (this.#subscriptions.length) {\n console.debug('unsubscribed from ' + this.#subscriptions.length + ' value change listeners.');\n this.#subscriptions.forEach((s) => s.unsubscribe());\n this.#subscriptions = [];\n }\n }\n}\n","@let fo = formOptions();\n@if (fo && form) {\n <div class=\"yuv-object-form\" [formGroup]=\"form\">\n <div class=\"form-element-wrap core\">\n <yuv-object-form-group [group]=\"getGroup('core')\" [situation]=\"fo.formModel.situation\"></yuv-object-form-group>\n </div>\n <div class=\"form-element-wrap data\">\n <yuv-object-form-group [group]=\"getGroup('data')\" [situation]=\"fo.formModel.situation\"></yuv-object-form-group>\n </div>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { ObjectFormComponent } from './object-form.component';\n\n@NgModule({\n imports: [ObjectFormComponent],\n exports: [ObjectFormComponent],\n})\nexport class YuvObjectFormModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3","observableForkJoin","_map"],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ export declare class ObjectMetadataSectionComponent {
|
|
|
16
16
|
busy: import("@angular/core").Signal<boolean>;
|
|
17
17
|
statusChanged: import("@angular/core").OutputEmitterRef<FormStatusChangedEvent>;
|
|
18
18
|
resetForm(): void;
|
|
19
|
+
setFormPristine(): void;
|
|
19
20
|
static ɵfac: i0.ɵɵFactoryDeclaration<ObjectMetadataSectionComponent, never>;
|
|
20
21
|
static ɵcmp: i0.ɵɵComponentDeclaration<ObjectMetadataSectionComponent, "yuv-object-metadata-section", never, { "section": { "alias": "section"; "required": true; "isSignal": true; }; "expandedInput": { "alias": "expanded"; "required": false; "isSignal": true; }; "elementExtensions": { "alias": "elementExtensions"; "required": false; "isSignal": true; }; }, { "statusChanged": "statusChanged"; }, never, never, true, never>;
|
|
21
22
|
}
|
|
@@ -65,6 +65,7 @@ export declare class ObjectMetadataComponent implements OnDestroy {
|
|
|
65
65
|
* Reset te form to its initial state
|
|
66
66
|
*/
|
|
67
67
|
resetForm(): void;
|
|
68
|
+
setFormPristine(): void;
|
|
68
69
|
ngOnDestroy(): void;
|
|
69
70
|
static ɵfac: i0.ɵɵFactoryDeclaration<ObjectMetadataComponent, never>;
|
|
70
71
|
static ɵcmp: i0.ɵɵComponentDeclaration<ObjectMetadataComponent, "yuv-object-metadata", never, { "disableControls": { "alias": "disableControls"; "required": false; "isSignal": true; }; "disableBasicMetadata": { "alias": "disableBasicMetadata"; "required": false; "isSignal": true; }; "elementExtensions": { "alias": "elementExtensions"; "required": false; "isSignal": true; }; "situation": { "alias": "situation"; "required": false; }; "formDisabled": { "alias": "formDisabled"; "required": false; }; "dmsObject": { "alias": "dmsObject"; "required": false; "isSignal": true; }; "flavoredDmsObject": { "alias": "flavoredDmsObject"; "required": false; "isSignal": true; }; "flavors": { "alias": "flavors"; "required": false; "isSignal": true; }; }, { "indexDataSaved": "indexDataSaved"; "statusChanged": "statusChanged"; }, never, never, true, never>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuuvis/client-framework",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.6",
|
|
4
4
|
"author": "OPTIMAL SYSTEMS GmbH <npm@optimal-systems.de>",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"peerDependencies": {
|
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
"@angular/common": "^19.2.1",
|
|
9
9
|
"@angular/core": "^19.2.1",
|
|
10
10
|
"angular-gridster2": "^19.0.0",
|
|
11
|
-
"@yuuvis/client-core": "^2.3.
|
|
12
|
-
"@yuuvis/client-shell-core": "^2.3.
|
|
11
|
+
"@yuuvis/client-core": "^2.3.6",
|
|
12
|
+
"@yuuvis/client-shell-core": "^2.3.6",
|
|
13
13
|
"ng-dynamic-component": "^10.8.2",
|
|
14
14
|
"modern-normalize": "^3.0.1"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@angular/material": "^19.2.15",
|
|
18
18
|
"@ngrx/signals": "^19.2.0",
|
|
19
|
-
"@yuuvis/material": "2.3.
|
|
19
|
+
"@yuuvis/material": "2.3.6",
|
|
20
20
|
"@yuuvis/media-viewer": "^2.0.8",
|
|
21
21
|
"angular-split": "^19.0.0",
|
|
22
22
|
"tslib": "^2.3.0"
|