@mediusinc/mng-commons-audit 3.2.0 → 3.3.0-rc.0
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/assets/i18n/en.json +42 -36
- package/assets/i18n/sl.json +42 -36
- package/esm2022/lib/api/services/audit-revisions-api.service.mjs +3 -3
- package/esm2022/lib/api/services/audit.service.mjs +3 -3
- package/esm2022/lib/components/entity-changes-field/entity-changes-field.component.mjs +5 -39
- package/esm2022/lib/components/pages/audit/audit-page.component.mjs +3 -3
- package/esm2022/lib/components/pages/entity-revisions/audit-entity-revisions-page.component.mjs +29 -25
- package/esm2022/lib/components/pages/revisions/audit-revisions-page.component.mjs +6 -11
- package/esm2022/lib/models/guiEntityModelWithI18n.model.mjs +9 -0
- package/esm2022/lib/utils/audit.util.mjs +60 -4
- package/fesm2022/mediusinc-mng-commons-audit.mjs +119 -93
- package/fesm2022/mediusinc-mng-commons-audit.mjs.map +1 -1
- package/lib/components/pages/entity-revisions/audit-entity-revisions-page.component.d.ts +2 -1
- package/lib/models/guiEntityModelWithI18n.model.d.ts +4 -0
- package/lib/utils/audit.util.d.ts +8 -2
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TypeName, ObjectSerializer, MediusFilterMatchType, AMngBaseApiService, MngConfigurationService, MngInternalError, AMngTableviewRouteComponent, LookupDataProvider, TableviewDescriptor, TableviewDataProvider, MediusQueryResult,
|
|
1
|
+
import { TypeName, ObjectSerializer, MediusFilterMatchType, AMngBaseApiService, MngConfigurationService, MngInternalError, AMngTableviewRouteComponent, LookupDataProvider, TableviewDescriptor, TableviewDataProvider, MediusQueryResult, ActionEditorDetailsDescriptor, MngDropdownComponent, MngTableviewRouteComponent, AMngFormlyCustomFieldComponent, TableDescriptor, TablePaginationModeEnum, MngTableComponent, EditorDescriptor, TableviewEditorTypeEnum, TableFilterDisplayEnum, MngTableviewComponent, RouteBuilder, TableviewRouteBuilder, RoutesBuilder } from '@mediusinc/mng-commons';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
3
|
import { InjectionToken, inject, Injectable, Component, DestroyRef, signal, Input, Injector, ChangeDetectionStrategy } from '@angular/core';
|
|
4
4
|
import { map } from 'rxjs/operators';
|
|
@@ -99,6 +99,18 @@ var MngRevisionTypeDto;
|
|
|
99
99
|
})(MngRevisionTypeDto || (MngRevisionTypeDto = {}));
|
|
100
100
|
ObjectSerializer.get().registerEnum(MngRevisionTypeDto, 'MngRevisionTypeDto');
|
|
101
101
|
|
|
102
|
+
let MngEntityRevisionChangeState = class MngEntityRevisionChangeState {
|
|
103
|
+
};
|
|
104
|
+
MngEntityRevisionChangeState = __decorate([
|
|
105
|
+
TypeName('MngEntityRevisionChangeState')
|
|
106
|
+
], MngEntityRevisionChangeState);
|
|
107
|
+
|
|
108
|
+
let MngEntityRevisionChanges = class MngEntityRevisionChanges {
|
|
109
|
+
};
|
|
110
|
+
MngEntityRevisionChanges = __decorate([
|
|
111
|
+
TypeName('MngEntityChanges')
|
|
112
|
+
], MngEntityRevisionChanges);
|
|
113
|
+
|
|
102
114
|
var NewMediusFilterMatchType;
|
|
103
115
|
(function (NewMediusFilterMatchType) {
|
|
104
116
|
NewMediusFilterMatchType["Equals"] = "eq";
|
|
@@ -119,6 +131,7 @@ var NewMediusFilterMatchType;
|
|
|
119
131
|
})(NewMediusFilterMatchType || (NewMediusFilterMatchType = {}));
|
|
120
132
|
|
|
121
133
|
class AuditUtil {
|
|
134
|
+
static { this._dateRegex = /\d{4}-[01]\d-[0-3]\d/; }
|
|
122
135
|
static addColumnsFromModel(descriptor, properties, modelType = undefined, addFilters = true, addSorts = true) {
|
|
123
136
|
for (const property of properties) {
|
|
124
137
|
if (!property.resolvedPropertyName) {
|
|
@@ -287,7 +300,12 @@ class AuditUtil {
|
|
|
287
300
|
break;
|
|
288
301
|
}
|
|
289
302
|
case MediusFilterMatchType.FromTo: {
|
|
290
|
-
|
|
303
|
+
if (this._dateRegex.test(mfp.filterValue)) {
|
|
304
|
+
filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.Between}:${new Date(mfp.filterValue).toISOString()},${new Date(mfp.filterValueTo).toISOString()}`);
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.Between}:${mfp.filterValue},${mfp.filterValueTo}`);
|
|
308
|
+
}
|
|
291
309
|
break;
|
|
292
310
|
}
|
|
293
311
|
case MediusFilterMatchType.Contains: {
|
|
@@ -311,11 +329,21 @@ class AuditUtil {
|
|
|
311
329
|
break;
|
|
312
330
|
}
|
|
313
331
|
case MediusFilterMatchType.SmallerThan: {
|
|
314
|
-
|
|
332
|
+
if (this._dateRegex.test(mfp.filterValue)) {
|
|
333
|
+
filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.LessThan}:${new Date(mfp.filterValue).toISOString()}`);
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.LessThan}:${mfp.filterValue}`);
|
|
337
|
+
}
|
|
315
338
|
break;
|
|
316
339
|
}
|
|
317
340
|
case MediusFilterMatchType.GreaterThan: {
|
|
318
|
-
|
|
341
|
+
if (this._dateRegex.test(mfp.filterValue)) {
|
|
342
|
+
filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.GreaterThan}:${new Date(mfp.filterValue).toISOString()}`);
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
filterQPs.push(`${this.extractPropertyName(mfp.property)}=${NewMediusFilterMatchType.GreaterThan}:${mfp.filterValue}`);
|
|
346
|
+
}
|
|
319
347
|
break;
|
|
320
348
|
}
|
|
321
349
|
}
|
|
@@ -325,6 +353,44 @@ class AuditUtil {
|
|
|
325
353
|
}
|
|
326
354
|
return url;
|
|
327
355
|
}
|
|
356
|
+
static mapItemsToEntityChangesArray(fieldValue) {
|
|
357
|
+
const entityChanges = [];
|
|
358
|
+
for (const key of Object.keys(fieldValue)) {
|
|
359
|
+
const ec = new MngEntityRevisionChanges();
|
|
360
|
+
ec.entityType = key;
|
|
361
|
+
ec.items = [];
|
|
362
|
+
for (const change of fieldValue[key]) {
|
|
363
|
+
if (change.revType === MngRevisionTypeDto.Add && change.entityNewState) {
|
|
364
|
+
const item = new MngEntityRevisionChangeState();
|
|
365
|
+
item.revType = change.revType;
|
|
366
|
+
item.color = 'green';
|
|
367
|
+
Object.entries(change.entityNewState).forEach(([key, value]) => (item[key] = value));
|
|
368
|
+
ec.items.push(item);
|
|
369
|
+
}
|
|
370
|
+
else if (change.revType === MngRevisionTypeDto.Del && change.entityOldState) {
|
|
371
|
+
const item = new MngEntityRevisionChangeState();
|
|
372
|
+
item.revType = change.revType;
|
|
373
|
+
item.color = 'red';
|
|
374
|
+
Object.entries(change.entityOldState).forEach(([key, value]) => (item[key] = value));
|
|
375
|
+
ec.items.push(item);
|
|
376
|
+
}
|
|
377
|
+
else if (change.revType === MngRevisionTypeDto.Mod && change.entityOldState && change.entityNewState) {
|
|
378
|
+
const itemOld = new MngEntityRevisionChangeState();
|
|
379
|
+
itemOld.revType = change.revType;
|
|
380
|
+
itemOld.color = 'red';
|
|
381
|
+
Object.entries(change.entityOldState).forEach(([key, value]) => (itemOld[key] = value));
|
|
382
|
+
const itemNew = new MngEntityRevisionChangeState();
|
|
383
|
+
itemNew.revType = change.revType;
|
|
384
|
+
itemNew.color = 'green';
|
|
385
|
+
Object.entries(change.entityNewState).forEach(([key, value]) => (itemNew[key] = value));
|
|
386
|
+
ec.items.push(itemOld);
|
|
387
|
+
ec.items.push(itemNew);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
entityChanges.push(ec);
|
|
391
|
+
}
|
|
392
|
+
return entityChanges;
|
|
393
|
+
}
|
|
328
394
|
}
|
|
329
395
|
|
|
330
396
|
class MngAuditRevisionsApiService extends AMngBaseApiService {
|
|
@@ -367,10 +433,10 @@ class MngAuditRevisionsApiService extends AMngBaseApiService {
|
|
|
367
433
|
countRevisionsWithStateForEntityType(queryParams, entityType) {
|
|
368
434
|
return this.http.get(this.getUrl(`/states/${entityType}/count`, AuditUtil.appendMediusQueryParamsToUrl(queryParams)));
|
|
369
435
|
}
|
|
370
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
371
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.
|
|
436
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditRevisionsApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
437
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditRevisionsApiService }); }
|
|
372
438
|
}
|
|
373
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
439
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditRevisionsApiService, decorators: [{
|
|
374
440
|
type: Injectable
|
|
375
441
|
}], ctorParameters: function () { return []; } });
|
|
376
442
|
|
|
@@ -429,22 +495,28 @@ class MngAuditService extends AMngBaseApiService {
|
|
|
429
495
|
requestAuditModel() {
|
|
430
496
|
return this.http.get(this.getUrl('/audit-models')).pipe(map(response => this.deserializeClassArray(response, MngGuiEntityModelDto)));
|
|
431
497
|
}
|
|
432
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
433
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.
|
|
498
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
499
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditService }); }
|
|
434
500
|
}
|
|
435
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
501
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditService, decorators: [{
|
|
436
502
|
type: Injectable
|
|
437
503
|
}], ctorParameters: function () { return []; } });
|
|
438
504
|
|
|
439
505
|
class MngAuditPageComponent {
|
|
440
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
441
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
506
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
507
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngAuditPageComponent, isStandalone: true, selector: "mng-audit-page", ngImport: i0, template: "<router-outlet></router-outlet>\n", dependencies: [{ kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
|
|
442
508
|
}
|
|
443
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
509
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditPageComponent, decorators: [{
|
|
444
510
|
type: Component,
|
|
445
511
|
args: [{ standalone: true, selector: 'mng-audit-page', imports: [RouterOutlet], template: "<router-outlet></router-outlet>\n" }]
|
|
446
512
|
}] });
|
|
447
513
|
|
|
514
|
+
let MngGuiEntityModelWithI18n = class MngGuiEntityModelWithI18n extends MngGuiEntityModelDto {
|
|
515
|
+
};
|
|
516
|
+
MngGuiEntityModelWithI18n = __decorate([
|
|
517
|
+
TypeName('MngGuiEntityModelWithI18n')
|
|
518
|
+
], MngGuiEntityModelWithI18n);
|
|
519
|
+
|
|
448
520
|
class MngAuditEntityRevisionsPageComponent extends AMngTableviewRouteComponent {
|
|
449
521
|
constructor(router) {
|
|
450
522
|
super();
|
|
@@ -453,17 +525,25 @@ class MngAuditEntityRevisionsPageComponent extends AMngTableviewRouteComponent {
|
|
|
453
525
|
this.auditService = inject(MngAuditService);
|
|
454
526
|
this.revisisonsApiService = inject(MngAuditRevisionsApiService);
|
|
455
527
|
this.showTableview = signal(false);
|
|
456
|
-
this.revisionEntitiesLookupProvider = new LookupDataProvider(
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
528
|
+
this.revisionEntitiesLookupProvider = new LookupDataProvider(MngGuiEntityModelWithI18n).withLookup(() => this.auditService.auditModel$.pipe(map(model => {
|
|
529
|
+
const modelI18n = model;
|
|
530
|
+
modelI18n.sort((m1, m2) => {
|
|
531
|
+
if (m1.entityName && m2.entityName) {
|
|
532
|
+
return m1.entityName.localeCompare(m2.entityName);
|
|
533
|
+
}
|
|
534
|
+
else if (m1.entityName && !m2.entityName) {
|
|
535
|
+
return 1;
|
|
536
|
+
}
|
|
537
|
+
else {
|
|
538
|
+
return -1;
|
|
539
|
+
}
|
|
540
|
+
});
|
|
541
|
+
modelI18n.forEach(item => {
|
|
542
|
+
const translatedEntityName = this.translateService.instant('AuditEntities.' + item.entityName);
|
|
543
|
+
item.entityNameI18n = translatedEntityName.includes('AuditEntities.') ? item.entityName : translatedEntityName;
|
|
544
|
+
});
|
|
545
|
+
return modelI18n;
|
|
546
|
+
})));
|
|
467
547
|
}
|
|
468
548
|
ngOnInit() {
|
|
469
549
|
this.route.paramMap.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(params => {
|
|
@@ -532,11 +612,7 @@ class MngAuditEntityRevisionsPageComponent extends AMngTableviewRouteComponent {
|
|
|
532
612
|
throw new MngInternalError('No revision model or revision entity is provided for tableview.');
|
|
533
613
|
}
|
|
534
614
|
const entityName = this.selectedRevisionEntity.entityName;
|
|
535
|
-
const detailsAction = new
|
|
536
|
-
.withPosition(ActionPositionEnum.RowClick)
|
|
537
|
-
.withRouteTrigger(':itemId')
|
|
538
|
-
.withFetchFunction(ActionDataProviderUtil.runFetchOrFail)
|
|
539
|
-
.withTableviewCategory(TableviewActionDefaultCategories.DETAILS)
|
|
615
|
+
const detailsAction = new ActionEditorDetailsDescriptor(this.descriptor.detailsEditor)
|
|
540
616
|
.withFetchFunction(ctx => {
|
|
541
617
|
if (!entityName) {
|
|
542
618
|
return throwError(() => new MngInternalError('No revision entity is provided for details.'));
|
|
@@ -547,16 +623,16 @@ class MngAuditEntityRevisionsPageComponent extends AMngTableviewRouteComponent {
|
|
|
547
623
|
const revId = ctx.parameters.itemId.toString().split('_')[0];
|
|
548
624
|
const itemId = ctx.parameters.itemId.toString().split('_')[1];
|
|
549
625
|
return this.revisisonsApiService.fetchRevisionsWithStateForEntityType(entityName, revId, itemId);
|
|
550
|
-
})
|
|
551
|
-
|
|
626
|
+
})
|
|
627
|
+
.withEditorTitle('pages.entityRevisions.actions.details.editor.title');
|
|
552
628
|
return [detailsAction];
|
|
553
629
|
}
|
|
554
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
555
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
630
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditEntityRevisionsPageComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
631
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngAuditEntityRevisionsPageComponent, isStandalone: true, selector: "mng-audit-entity-revisions-page", usesInheritance: true, ngImport: i0, template: "<div class=\"card\">\n <div class=\"field mb-0\">\n <mng-dropdown\n id=\"revisionEntityDropdown\"\n [placeholder]=\"'pages.entityRevisions.dropdown.placeholder' | translate\"\n [itemsLabelProperty]=\"'entityNameI18n'\"\n [(ngModel)]=\"selectedRevisionEntity\"\n (valueChange)=\"onRevisionEntityChange()\"\n [dataProvider]=\"revisionEntitiesLookupProvider\"></mng-dropdown>\n <small *ngIf=\"!selectedRevisionEntity\" class=\"block\">\n {{ 'pages.entityRevisions.dropdown.helpText' | translate }}\n </small>\n </div>\n</div>\n<div *ngIf=\"showTableview()\">\n <mng-tableview-route [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"></mng-tableview-route>\n</div>\n", dependencies: [{ kind: "component", type: MngDropdownComponent, selector: "mng-dropdown", inputs: ["dataProvider", "dataKeyProperty", "itemsLabelProperty", "itemsLabelTranslate", "itemsValueProperty", "itemsDisabledProperty", "multiselect", "placeholder", "showClear", "selectFirstItem", "className", "dropdownClassName", "changeValueOnBlur"], outputs: ["valueChange"] }, { kind: "component", type: MngTableviewRouteComponent, selector: "mng-tableview-route", inputs: ["descriptor", "dataProvider", "actions"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormlyModule }] }); }
|
|
556
632
|
}
|
|
557
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
633
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditEntityRevisionsPageComponent, decorators: [{
|
|
558
634
|
type: Component,
|
|
559
|
-
args: [{ standalone: true, selector: 'mng-audit-entity-revisions-page', imports: [MngDropdownComponent, MngTableviewRouteComponent, FormsModule, AsyncPipe, NgIf, TranslateModule, FormlyModule], template: "<div class=\"card\">\n <div class=\"field mb-0\">\n <mng-dropdown\n id=\"revisionEntityDropdown\"\n [placeholder]=\"'pages.entityRevisions.dropdown.placeholder' | translate\"\n [itemsLabelProperty]=\"'
|
|
635
|
+
args: [{ standalone: true, selector: 'mng-audit-entity-revisions-page', imports: [MngDropdownComponent, MngTableviewRouteComponent, FormsModule, AsyncPipe, NgIf, TranslateModule, FormlyModule], template: "<div class=\"card\">\n <div class=\"field mb-0\">\n <mng-dropdown\n id=\"revisionEntityDropdown\"\n [placeholder]=\"'pages.entityRevisions.dropdown.placeholder' | translate\"\n [itemsLabelProperty]=\"'entityNameI18n'\"\n [(ngModel)]=\"selectedRevisionEntity\"\n (valueChange)=\"onRevisionEntityChange()\"\n [dataProvider]=\"revisionEntitiesLookupProvider\"></mng-dropdown>\n <small *ngIf=\"!selectedRevisionEntity\" class=\"block\">\n {{ 'pages.entityRevisions.dropdown.helpText' | translate }}\n </small>\n </div>\n</div>\n<div *ngIf=\"showTableview()\">\n <mng-tableview-route [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"></mng-tableview-route>\n</div>\n" }]
|
|
560
636
|
}], ctorParameters: function () { return [{ type: i1.Router }]; } });
|
|
561
637
|
|
|
562
638
|
var MngRevEntityWithChangesDto_1;
|
|
@@ -595,18 +671,6 @@ MngRevEntityDetailed = __decorate([
|
|
|
595
671
|
TypeName('MngRevEntityDetailed')
|
|
596
672
|
], MngRevEntityDetailed);
|
|
597
673
|
|
|
598
|
-
let MngEntityRevisionChangeState = class MngEntityRevisionChangeState {
|
|
599
|
-
};
|
|
600
|
-
MngEntityRevisionChangeState = __decorate([
|
|
601
|
-
TypeName('MngEntityRevisionChangeState')
|
|
602
|
-
], MngEntityRevisionChangeState);
|
|
603
|
-
|
|
604
|
-
let MngEntityRevisionChanges = class MngEntityRevisionChanges {
|
|
605
|
-
};
|
|
606
|
-
MngEntityRevisionChanges = __decorate([
|
|
607
|
-
TypeName('MngEntityChanges')
|
|
608
|
-
], MngEntityRevisionChanges);
|
|
609
|
-
|
|
610
674
|
class EntityChangesFieldComponent extends AMngFormlyCustomFieldComponent {
|
|
611
675
|
constructor() {
|
|
612
676
|
super(...arguments);
|
|
@@ -624,40 +688,7 @@ class EntityChangesFieldComponent extends AMngFormlyCustomFieldComponent {
|
|
|
624
688
|
next: model => {
|
|
625
689
|
this.auditModel = model;
|
|
626
690
|
if (this.fieldValue) {
|
|
627
|
-
|
|
628
|
-
const ec = new MngEntityRevisionChanges();
|
|
629
|
-
ec.entityType = key;
|
|
630
|
-
ec.items = [];
|
|
631
|
-
for (const change of this.fieldValue[key]) {
|
|
632
|
-
if (change.revType === MngRevisionTypeDto.Add && change.entityNewState) {
|
|
633
|
-
const item = new MngEntityRevisionChangeState();
|
|
634
|
-
item.revType = change.revType;
|
|
635
|
-
item.color = 'green';
|
|
636
|
-
Object.entries(change.entityNewState).forEach(([key, value]) => (item[key] = value));
|
|
637
|
-
ec.items.push(item);
|
|
638
|
-
}
|
|
639
|
-
else if (change.revType === MngRevisionTypeDto.Del && change.entityOldState) {
|
|
640
|
-
const item = new MngEntityRevisionChangeState();
|
|
641
|
-
item.revType = change.revType;
|
|
642
|
-
item.color = 'red';
|
|
643
|
-
Object.entries(change.entityOldState).forEach(([key, value]) => (item[key] = value));
|
|
644
|
-
ec.items.push(item);
|
|
645
|
-
}
|
|
646
|
-
else if (change.revType === MngRevisionTypeDto.Mod && change.entityOldState && change.entityNewState) {
|
|
647
|
-
const itemOld = new MngEntityRevisionChangeState();
|
|
648
|
-
itemOld.revType = change.revType;
|
|
649
|
-
itemOld.color = 'red';
|
|
650
|
-
Object.entries(change.entityOldState).forEach(([key, value]) => (itemOld[key] = value));
|
|
651
|
-
const itemNew = new MngEntityRevisionChangeState();
|
|
652
|
-
itemNew.revType = change.revType;
|
|
653
|
-
itemNew.color = 'green';
|
|
654
|
-
Object.entries(change.entityNewState).forEach(([key, value]) => (itemNew[key] = value));
|
|
655
|
-
ec.items.push(itemOld);
|
|
656
|
-
ec.items.push(itemNew);
|
|
657
|
-
}
|
|
658
|
-
}
|
|
659
|
-
this.entityChanges.push(ec);
|
|
660
|
-
}
|
|
691
|
+
this.entityChanges = AuditUtil.mapItemsToEntityChangesArray(this.fieldValue);
|
|
661
692
|
this.modelFetched.next(true);
|
|
662
693
|
}
|
|
663
694
|
},
|
|
@@ -696,10 +727,10 @@ class EntityChangesFieldComponent extends AMngFormlyCustomFieldComponent {
|
|
|
696
727
|
desc.withDataKey(`EntityChangeField_${entityChanges.entityType ?? 'default'}`);
|
|
697
728
|
return desc;
|
|
698
729
|
}
|
|
699
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
700
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
730
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: EntityChangesFieldComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
731
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: EntityChangesFieldComponent, isStandalone: true, selector: "mng-entity-changes-field", inputs: { injector: "injector" }, usesInheritance: true, ngImport: i0, template: "<div *ngIf=\"modelFetched | async; else loading\">\n <mng-table *ngFor=\"let ec of entityChanges\" [items]=\"ec.items\" [descriptor]=\"createDescriptor(ec)\"></mng-table>\n</div>\n<ng-template #loading>\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem\"></i>\n </div>\n</ng-template>\n", styles: ["::ng-deep tr.audit-row-deleted{background:hsla(3,100%,60%,.1)!important}::ng-deep tr.audit-row-deleted .audit-cell{background:hsla(3,90%,63%,.3)!important}::ng-deep tr.audit-row-added{background-color:#1bc5621a!important}::ng-deep tr.audit-row-added .audit-cell{background:hsla(145,76%,44%,.3)!important}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MngTableComponent, selector: "mng-table", inputs: ["descriptor", "items", "queryResult", "loading", "dataProvider", "useQueryParams", "selectionMode", "selectionEnabled", "actions", "isColumnClickable", "viewContainer", "captionComponent", "columnActionComponent", "columnActionMinWidth", "globalFilterFields"], outputs: ["tableLoad", "cellClick", "selectionChange", "captionComponentInstance", "columnActionComponentInstance"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
|
|
701
732
|
}
|
|
702
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
733
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: EntityChangesFieldComponent, decorators: [{
|
|
703
734
|
type: Component,
|
|
704
735
|
args: [{ standalone: true, selector: 'mng-entity-changes-field', imports: [NgForOf, MngTableComponent, NgIf, AsyncPipe], template: "<div *ngIf=\"modelFetched | async; else loading\">\n <mng-table *ngFor=\"let ec of entityChanges\" [items]=\"ec.items\" [descriptor]=\"createDescriptor(ec)\"></mng-table>\n</div>\n<ng-template #loading>\n <div class=\"text-center\">\n <i class=\"pi pi-spin pi-spinner\" style=\"font-size: 2rem\"></i>\n </div>\n</ng-template>\n", styles: ["::ng-deep tr.audit-row-deleted{background:hsla(3,100%,60%,.1)!important}::ng-deep tr.audit-row-deleted .audit-cell{background:hsla(3,90%,63%,.3)!important}::ng-deep tr.audit-row-added{background-color:#1bc5621a!important}::ng-deep tr.audit-row-added .audit-cell{background:hsla(145,76%,44%,.3)!important}\n"] }]
|
|
705
736
|
}], propDecorators: { injector: [{
|
|
@@ -747,11 +778,7 @@ class MngAuditRevisionsPageComponent extends AMngTableviewRouteComponent {
|
|
|
747
778
|
return new TableviewDataProvider(MngRevEntity);
|
|
748
779
|
}
|
|
749
780
|
createActionDescriptors() {
|
|
750
|
-
const detailsAction = new
|
|
751
|
-
.withPosition(ActionPositionEnum.RowClick)
|
|
752
|
-
.withRouteTrigger(':itemId')
|
|
753
|
-
.withTableviewCategory(TableviewActionDefaultCategories.DETAILS)
|
|
754
|
-
.withFetchFunction(ctx => ctx.parameters.itemId
|
|
781
|
+
const detailsAction = new ActionEditorDetailsDescriptor(this.descriptor.detailsEditor).withFetchFunction(ctx => ctx.parameters.itemId
|
|
755
782
|
? this.revisisonsApiService.getAllChangesForRevision(ctx.parameters.itemId).pipe(map(item => {
|
|
756
783
|
const revEntityWithChanges = new MngRevEntityDetailed();
|
|
757
784
|
revEntityWithChanges.rev = ctx.parameters.itemId;
|
|
@@ -760,13 +787,12 @@ class MngAuditRevisionsPageComponent extends AMngTableviewRouteComponent {
|
|
|
760
787
|
return revEntityWithChanges;
|
|
761
788
|
}))
|
|
762
789
|
: throwError(() => new MngInternalError('No revision id provided for fetch function')));
|
|
763
|
-
detailsAction.withEditorActions([new ActionEditorSubmitDescriptor(detailsAction, ActionEditorSubmitTypeEnum.Cancel)]);
|
|
764
790
|
return [detailsAction];
|
|
765
791
|
}
|
|
766
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
767
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
792
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditRevisionsPageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
793
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngAuditRevisionsPageComponent, isStandalone: true, selector: "mng-audit-revisions-page", usesInheritance: true, ngImport: i0, template: "<mng-tableview-route *ngIf=\"showTableview()\" [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"></mng-tableview-route>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MngTableviewRouteComponent, selector: "mng-tableview-route", inputs: ["descriptor", "dataProvider", "actions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
768
794
|
}
|
|
769
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
795
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngAuditRevisionsPageComponent, decorators: [{
|
|
770
796
|
type: Component,
|
|
771
797
|
args: [{ standalone: true, selector: 'mng-audit-revisions-page', imports: [NgIf, MngTableviewComponent, AsyncPipe, MngTableviewComponent, RouterOutlet, JsonPipe, MngTableviewRouteComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mng-tableview-route *ngIf=\"showTableview()\" [descriptor]=\"descriptor\" [dataProvider]=\"dataProvider\" [actions]=\"actions\"></mng-tableview-route>\n" }]
|
|
772
798
|
}] });
|