@trudb/tru-common-lib 0.0.810 → 0.0.813

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.
@@ -1,10 +1,12 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "../../services/tru-data-context";
4
- import * as i2 from "../../services/tru-text-manager";
5
- import * as i3 from "../../components/desktop/services/tru-window-event-handler";
4
+ import * as i2 from "../../services/tru-app-environment";
5
+ import * as i3 from "../../services/tru-text-manager";
6
+ import * as i4 from "../../components/desktop/services/tru-window-event-handler";
6
7
  export class TruDetailViewBase {
7
8
  dataContext;
9
+ appEnvironment;
8
10
  textManager;
9
11
  windowEventHandler;
10
12
  view;
@@ -16,11 +18,26 @@ export class TruDetailViewBase {
16
18
  disableNavigationToPreviousEntity = false;
17
19
  disableNavigationToNextEntity = false;
18
20
  navigationIndex = 0;
19
- constructor(dataContext, textManager, windowEventHandler) {
21
+ recordsBeforeRevert = 0;
22
+ subs = [];
23
+ constructor(dataContext, appEnvironment, textManager, windowEventHandler) {
20
24
  this.dataContext = dataContext;
25
+ this.appEnvironment = appEnvironment;
21
26
  this.textManager = textManager;
22
27
  this.windowEventHandler = windowEventHandler;
23
28
  }
29
+ calculateNextIndex = () => {
30
+ let nextIndex = 0;
31
+ var removedRecords = this.recordsBeforeRevert - this.entities.length;
32
+ if (this.navigationIndex > this.entities.length - 1)
33
+ nextIndex = this.entities.length - 1;
34
+ else {
35
+ nextIndex = (this.navigationIndex - removedRecords);
36
+ }
37
+ if (nextIndex < 0)
38
+ nextIndex = 0;
39
+ return nextIndex;
40
+ };
24
41
  onAddEntity = () => {
25
42
  let newEntity = this.dataContext.entityAccess().add(this.entityType);
26
43
  this.entities.splice(this.navigationIndex + 1, 0, newEntity);
@@ -48,6 +65,19 @@ export class TruDetailViewBase {
48
65
  this.setNavigationIndex(index);
49
66
  this.setEntityDisplayValues(this.tableName);
50
67
  };
68
+ subscribe() {
69
+ this.subs.push(this.appEnvironment.onRevertComplete$.subscribe((event) => {
70
+ if (event?.successful && this.view.entities) {
71
+ this.recordsBeforeRevert = this.entities.length;
72
+ this.entities = this.entities.filter((e) => { return !e.entityAspect.entityState.isDetached(); });
73
+ this.setNavigationIndex(this.calculateNextIndex());
74
+ }
75
+ }));
76
+ this.subs.push(this.view.onActive().subscribe((active) => {
77
+ if (active)
78
+ this.setEntityDisplayValues(this.tableName);
79
+ }));
80
+ }
51
81
  setNavigationIndex(index) {
52
82
  this.navigationIndex = index;
53
83
  this.disableNavigationToPreviousEntity = index === 0;
@@ -71,13 +101,13 @@ export class TruDetailViewBase {
71
101
  this.windowEventHandler.setWindowTitle(this.textManager.formatWindowTitle(title));
72
102
  this.recordLocation = recordIndex + ' of ' + this.entities.length;
73
103
  }
74
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruDetailViewBase, deps: [{ token: i1.TruDataContext }, { token: i2.TruTextManager }, { token: i3.TruWindowEventHandler }], target: i0.ɵɵFactoryTarget.Component });
104
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruDetailViewBase, deps: [{ token: i1.TruDataContext }, { token: i2.TruAppEnvironment }, { token: i3.TruTextManager }, { token: i4.TruWindowEventHandler }], target: i0.ɵɵFactoryTarget.Component });
75
105
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: TruDetailViewBase, selector: "tru-detail-view-base", inputs: { view: "view" }, ngImport: i0, template: "", styles: [""] });
76
106
  }
77
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruDetailViewBase, decorators: [{
78
108
  type: Component,
79
109
  args: [{ selector: 'tru-detail-view-base', template: "" }]
80
- }], ctorParameters: () => [{ type: i1.TruDataContext }, { type: i2.TruTextManager }, { type: i3.TruWindowEventHandler }], propDecorators: { view: [{
110
+ }], ctorParameters: () => [{ type: i1.TruDataContext }, { type: i2.TruAppEnvironment }, { type: i3.TruTextManager }, { type: i4.TruWindowEventHandler }], propDecorators: { view: [{
81
111
  type: Input
82
112
  }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRldGFpbC12aWV3LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2Jhc2Utdmlld3MvZGV0YWlsL3RydS1kZXRhaWwtdmlldy1iYXNlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9iYXNlLXZpZXdzL2RldGFpbC90cnUtZGV0YWlsLXZpZXctYmFzZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVdqRCxNQUFNLE9BQU8saUJBQWlCO0lBYWhCO0lBQ0E7SUFDQTtJQWRILElBQUksQ0FBd0I7SUFFckMsU0FBUyxDQUFNO0lBQ2YsUUFBUSxHQUFlLEVBQUUsQ0FBQztJQUMxQixNQUFNLENBQU07SUFDWixVQUFVLENBQU07SUFDaEIsY0FBYyxHQUFrQixJQUFJLENBQUM7SUFDckMsaUNBQWlDLEdBQVksS0FBSyxDQUFDO0lBQ25ELDZCQUE2QixHQUFZLEtBQUssQ0FBQztJQUMvQyxlQUFlLEdBQVcsQ0FBQyxDQUFDO0lBRTVCLFlBQ1ksV0FBMkIsRUFDM0IsV0FBMkIsRUFDM0Isa0JBQXlDO1FBRnpDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF1QjtJQUVyRCxDQUFDO0lBRUQsV0FBVyxHQUFHLEdBQUcsRUFBRTtRQUNqQixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLEVBQUUs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Q0FBQztJQUNwRSxDQUFDO3VHQTdFVSxpQkFBaUI7MkZBQWpCLGlCQUFpQixzRkNYOUIsRUFBQTs7MkZEV2EsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLHNCQUFzQjtvSkFLdkIsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcnVEZXNrdG9wVmlld0NvbmZpZyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGVza3RvcC9jbGFzc2VzL3RydS1kZXNrdG9wLXZpZXctY29uZmlnJztcclxuaW1wb3J0IHsgVHJ1V2luZG93RXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNrdG9wL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dCc7XHJcbmltcG9ydCB7IFRydVRleHRNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXRleHQtbWFuYWdlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RydS1kZXRhaWwtdmlldy1iYXNlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LWRldGFpbC12aWV3LWJhc2UuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWRldGFpbC12aWV3LWJhc2UuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRydURldGFpbFZpZXdCYXNlIHtcclxuICBASW5wdXQoKSB2aWV3ITogVHJ1RGVza3RvcFZpZXdDb25maWc7XHJcblxyXG4gIHRhYmxlTmFtZTogYW55O1xyXG4gIGVudGl0aWVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgZW50aXR5OiBhbnk7XHJcbiAgZW50aXR5VHlwZTogYW55O1xyXG4gIHJlY29yZExvY2F0aW9uOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBkaXNhYmxlTmF2aWdhdGlvblRvUHJldmlvdXNFbnRpdHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaXNhYmxlTmF2aWdhdGlvblRvTmV4dEVudGl0eTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG5hdmlnYXRpb25JbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgcHJvdGVjdGVkIHRleHRNYW5hZ2VyOiBUcnVUZXh0TWFuYWdlcixcclxuICAgIHByb3RlY3RlZCB3aW5kb3dFdmVudEhhbmRsZXI6IFRydVdpbmRvd0V2ZW50SGFuZGxlcikge1xyXG5cclxuICB9XHJcblxyXG4gIG9uQWRkRW50aXR5ID0gKCkgPT4ge1xyXG4gICAgbGV0IG5ld0VudGl0eSA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuYWRkKHRoaXMuZW50aXR5VHlwZSk7XHJcbiAgICB0aGlzLmVudGl0aWVzLnNwbGljZSh0aGlzLm5hdmlnYXRpb25JbmRleCArIDEsIDAsIG5ld0VudGl0eSk7XHJcbiAgICB0aGlzLm5hdmlnYXRlVG8odGhpcy5uYXZpZ2F0aW9uSW5kZXggKyAxKTtcclxuICB9XHJcblxyXG4gIG9uQ2xvbmVFbnRpdHkgPSAoKSA9PiB7XHJcblxyXG4gIH1cclxuXHJcbiAgb25EZWxldGVFbnRpdHkgPSAoKSA9PiB7XHJcbiAgICBsZXQgY29uZmlybU1zZyA9IHRoaXMudGV4dE1hbmFnZXIuZm10RGVsZXRlQ29uZmlybWF0aW9uKHRoaXMuZW50aXR5VHlwZS5uYW1lKTtcclxuICAgIHRoaXMuZGF0YUNvbnRleHQuZGVsZXRlKFt0aGlzLmVudGl0eV0sIGNvbmZpcm1Nc2csICgpID0+IHsgcmV0dXJuIHRydWU7IH0pO1xyXG4gIH1cclxuXHJcbiAgb25GaXJzdEVudGl0eSA9ICgpID0+IHtcclxuICAgIHRoaXMubmF2aWdhdGVUbygwKTtcclxuICB9XHJcblxyXG4gIG9uUHJldmlvdXNFbnRpdHkgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm5hdmlnYXRlVG8odGhpcy5uYXZpZ2F0aW9uSW5kZXggLSAxKTtcclxuICB9XHJcblxyXG4gIG9uTmV4dEVudGl0eSA9ICgpID0+IHtcclxuICAgIHRoaXMubmF2aWdhdGVUbyh0aGlzLm5hdmlnYXRpb25JbmRleCArIDEpO1xyXG4gIH1cclxuXHJcbiAgb25MYXN0RW50aXR5ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvKHRoaXMuZW50aXRpZXMubGVuZ3RoIC0gMSk7XHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvID0gKGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgIHRoaXMuc2V0TmF2aWdhdGlvbkluZGV4KGluZGV4KTtcclxuICAgIHRoaXMuc2V0RW50aXR5RGlzcGxheVZhbHVlcyh0aGlzLnRhYmxlTmFtZSk7XHJcbiAgfVxyXG5cclxuICBzZXROYXZpZ2F0aW9uSW5kZXgoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5uYXZpZ2F0aW9uSW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMuZGlzYWJsZU5hdmlnYXRpb25Ub1ByZXZpb3VzRW50aXR5ID0gaW5kZXggPT09IDA7XHJcbiAgICB0aGlzLmRpc2FibGVOYXZpZ2F0aW9uVG9OZXh0RW50aXR5ID0gaW5kZXggPT09IHRoaXMuZW50aXRpZXMubGVuZ3RoIC0gMTtcclxuICAgIHRoaXMuZW50aXR5ID0gdGhpcy5lbnRpdGllc1t0aGlzLm5hdmlnYXRpb25JbmRleF07XHJcbiAgfVxyXG5cclxuICBzZXRFbnRpdHlEaXNwbGF5VmFsdWVzKHRhYmxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgdGl0bGUgPSAnJztcclxuICAgIGxldCByZWNvcmRJbmRleCA9ICc/JztcclxuICAgIGxldCBlbnRpdHkgPSB0aGlzLmVudGl0aWVzW3RoaXMubmF2aWdhdGlvbkluZGV4XTtcclxuICAgIGlmIChlbnRpdHkpIHtcclxuICAgICAgdGl0bGUgPSB0YWJsZU5hbWUgKyAnIC0gJztcclxuICAgICAgaWYgKGVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGUuaXNBZGRlZCgpKSB7XHJcbiAgICAgICAgdGl0bGUgKz0gJ05ldyBSZWNvcmQnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRpdGxlICs9IHRoaXMuZW50aXR5LkhJRDtcclxuICAgICAgfVxyXG4gICAgICByZWNvcmRJbmRleCA9ICh0aGlzLm5hdmlnYXRpb25JbmRleCArIDEpLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLndpbmRvd0V2ZW50SGFuZGxlci5zZXRXaW5kb3dUaXRsZSh0aGlzLnRleHRNYW5hZ2VyLmZvcm1hdFdpbmRvd1RpdGxlKHRpdGxlKSk7XHJcbiAgICB0aGlzLnJlY29yZExvY2F0aW9uID0gcmVjb3JkSW5kZXggKyAnIG9mICcgKyB0aGlzLmVudGl0aWVzLmxlbmd0aDtcclxuICB9XHJcbn1cclxuIiwiIl19
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRldGFpbC12aWV3LWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2Jhc2Utdmlld3MvZGV0YWlsL3RydS1kZXRhaWwtdmlldy1iYXNlLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9iYXNlLXZpZXdzL2RldGFpbC90cnUtZGV0YWlsLXZpZXctYmFzZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFhakQsTUFBTSxPQUFPLGlCQUFpQjtJQWVoQjtJQUNBO0lBQ0E7SUFDQTtJQWpCSCxJQUFJLENBQXdCO0lBRXJDLFNBQVMsQ0FBTTtJQUNmLFFBQVEsR0FBZSxFQUFFLENBQUM7SUFDMUIsTUFBTSxDQUFNO0lBQ1osVUFBVSxDQUFNO0lBQ2hCLGNBQWMsR0FBa0IsSUFBSSxDQUFDO0lBQ3JDLGlDQUFpQyxHQUFZLEtBQUssQ0FBQztJQUNuRCw2QkFBNkIsR0FBWSxLQUFLLENBQUM7SUFDL0MsZUFBZSxHQUFXLENBQUMsQ0FBQztJQUM1QixtQkFBbUIsR0FBVyxDQUFDLENBQUM7SUFDaEMsSUFBSSxHQUF3QixFQUFFLENBQUM7SUFFL0IsWUFDWSxXQUEyQixFQUMzQixjQUFpQyxFQUNqQyxXQUEyQixFQUMzQixrQkFBeUM7UUFIekMsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF1QjtJQUNyRCxDQUFDO0lBRU8sa0JBQWtCLEdBQUcsR0FBVyxFQUFFO1FBQ3hDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLGNBQWMsR0FBRyxJ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TTtnQkFDTCxLQUFLLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7YUFDMUI7WUFDRCxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ3JEO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbEYsSUFBSSxDQUFDLGNBQWMsR0FBRyxXQUFXLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ3BFLENBQUM7dUdBNUdVLGlCQUFpQjsyRkFBakIsaUJBQWlCLHNGQ2I5QixFQUFBOzsyRkRhYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0Usc0JBQXNCO29MQUt2QixJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcnVEZXNrdG9wVmlld0NvbmZpZyB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZGVza3RvcC9jbGFzc2VzL3RydS1kZXNrdG9wLXZpZXctY29uZmlnJztcclxuaW1wb3J0IHsgVHJ1V2luZG93RXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9kZXNrdG9wL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWFwcC1lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dCc7XHJcbmltcG9ydCB7IFRydVRleHRNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXRleHQtbWFuYWdlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RydS1kZXRhaWwtdmlldy1iYXNlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LWRldGFpbC12aWV3LWJhc2UuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWRldGFpbC12aWV3LWJhc2UuY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRydURldGFpbFZpZXdCYXNlIHtcclxuICBASW5wdXQoKSB2aWV3ITogVHJ1RGVza3RvcFZpZXdDb25maWc7XHJcblxyXG4gIHRhYmxlTmFtZTogYW55O1xyXG4gIGVudGl0aWVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgZW50aXR5OiBhbnk7XHJcbiAgZW50aXR5VHlwZTogYW55O1xyXG4gIHJlY29yZExvY2F0aW9uOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBkaXNhYmxlTmF2aWdhdGlvblRvUHJldmlvdXNFbnRpdHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaXNhYmxlTmF2aWdhdGlvblRvTmV4dEVudGl0eTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG5hdmlnYXRpb25JbmRleDogbnVtYmVyID0gMDtcclxuICByZWNvcmRzQmVmb3JlUmV2ZXJ0OiBudW1iZXIgPSAwO1xyXG4gIHN1YnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgcHJvdGVjdGVkIGFwcEVudmlyb25tZW50OiBUcnVBcHBFbnZpcm9ubWVudCxcclxuICAgIHByb3RlY3RlZCB0ZXh0TWFuYWdlcjogVHJ1VGV4dE1hbmFnZXIsXHJcbiAgICBwcm90ZWN0ZWQgd2luZG93RXZlbnRIYW5kbGVyOiBUcnVXaW5kb3dFdmVudEhhbmRsZXIpIHtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FsY3VsYXRlTmV4dEluZGV4ID0gKCk6IG51bWJlciA9PiB7XHJcbiAgICBsZXQgbmV4dEluZGV4ID0gMDtcclxuICAgIHZhciByZW1vdmVkUmVjb3JkcyA9IHRoaXMucmVjb3Jkc0JlZm9yZVJldmVydCAtIHRoaXMuZW50aXRpZXMubGVuZ3RoO1xyXG4gICAgaWYgKHRoaXMubmF2aWdhdGlvbkluZGV4ID4gdGhpcy5lbnRpdGllcy5sZW5ndGggLSAxKVxyXG4gICAgICBuZXh0SW5kZXggPSB0aGlzLmVudGl0aWVzLmxlbmd0aCAtIDE7XHJcbiAgICBlbHNlIHtcclxuICAgICAgbmV4dEluZGV4ID0gKHRoaXMubmF2aWdhdGlvbkluZGV4IC0gcmVtb3ZlZFJlY29yZHMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChuZXh0SW5kZXggPCAwKVxyXG4gICAgICBuZXh0SW5kZXggPSAwO1xyXG5cclxuICAgIHJldHVybiBuZXh0SW5kZXg7XHJcbiAgfVxyXG5cclxuICBvbkFkZEVudGl0eSA9ICgpID0+IHtcclxuICAgIGxldCBuZXdFbnRpdHkgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZCh0aGlzLmVudGl0eVR5cGUpO1xyXG4gICAgdGhpcy5lbnRpdGllcy5zcGxpY2UodGhpcy5uYXZpZ2F0aW9uSW5kZXggKyAxLCAwLCBuZXdFbnRpdHkpO1xyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvKHRoaXMubmF2aWdhdGlvbkluZGV4ICsgMSk7XHJcbiAgfVxyXG5cclxuICBvbkNsb25lRW50aXR5ID0gKCkgPT4ge1xyXG5cclxuICB9XHJcblxyXG4gIG9uRGVsZXRlRW50aXR5ID0gKCkgPT4ge1xyXG4gICAgbGV0IGNvbmZpcm1Nc2cgPSB0aGlzLnRleHRNYW5hZ2VyLmZtdERlbGV0ZUNvbmZpcm1hdGlvbih0aGlzLmVudGl0eVR5cGUubmFtZSk7XHJcbiAgICB0aGlzLmRhdGFDb250ZXh0LmRlbGV0ZShbdGhpcy5lbnRpdHldLCBjb25maXJtTXNnLCAoKSA9PiB7IHJldHVybiB0cnVlOyB9KTtcclxuICB9XHJcblxyXG4gIG9uRmlyc3RFbnRpdHkgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm5hdmlnYXRlVG8oMCk7XHJcbiAgfVxyXG5cclxuICBvblByZXZpb3VzRW50aXR5ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5uYXZpZ2F0ZVRvKHRoaXMubmF2aWdhdGlvbkluZGV4IC0gMSk7XHJcbiAgfVxyXG5cclxuICBvbk5leHRFbnRpdHkgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm5hdmlnYXRlVG8odGhpcy5uYXZpZ2F0aW9uSW5kZXggKyAxKTtcclxuICB9XHJcblxyXG4gIG9uTGFzdEVudGl0eSA9ICgpID0+IHtcclxuICAgIHRoaXMubmF2aWdhdGVUbyh0aGlzLmVudGl0aWVzLmxlbmd0aCAtIDEpO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGVUbyA9IChpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICB0aGlzLnNldE5hdmlnYXRpb25JbmRleChpbmRleCk7XHJcbiAgICB0aGlzLnNldEVudGl0eURpc3BsYXlWYWx1ZXModGhpcy50YWJsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlKCkge1xyXG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy5hcHBFbnZpcm9ubWVudC5vblJldmVydENvbXBsZXRlJC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGV2ZW50Py5zdWNjZXNzZnVsICYmIHRoaXMudmlldy5lbnRpdGllcykge1xyXG4gICAgICAgIHRoaXMucmVjb3Jkc0JlZm9yZVJldmVydCA9IHRoaXMuZW50aXRpZXMubGVuZ3RoO1xyXG4gICAgICAgIHRoaXMuZW50aXRpZXMgPSB0aGlzLmVudGl0aWVzLmZpbHRlcigoZTogYW55KSA9PiB7IHJldHVybiAhZS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGUuaXNEZXRhY2hlZCgpIH0pO1xyXG4gICAgICAgIHRoaXMuc2V0TmF2aWdhdGlvbkluZGV4KHRoaXMuY2FsY3VsYXRlTmV4dEluZGV4KCkpO1xyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcbiAgICB0aGlzLnN1YnMucHVzaCh0aGlzLnZpZXcub25BY3RpdmUoKS5zdWJzY3JpYmUoKGFjdGl2ZTogYm9vbGVhbikgPT4ge1xyXG4gICAgICBpZiAoYWN0aXZlKVxyXG4gICAgICAgIHRoaXMuc2V0RW50aXR5RGlzcGxheVZhbHVlcyh0aGlzLnRhYmxlTmFtZSk7XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBzZXROYXZpZ2F0aW9uSW5kZXgoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5uYXZpZ2F0aW9uSW5kZXggPSBpbmRleDtcclxuICAgIHRoaXMuZGlzYWJsZU5hdmlnYXRpb25Ub1ByZXZpb3VzRW50aXR5ID0gaW5kZXggPT09IDA7XHJcbiAgICB0aGlzLmRpc2FibGVOYXZpZ2F0aW9uVG9OZXh0RW50aXR5ID0gaW5kZXggPT09IHRoaXMuZW50aXRpZXMubGVuZ3RoIC0gMTtcclxuICAgIHRoaXMuZW50aXR5ID0gdGhpcy5lbnRpdGllc1t0aGlzLm5hdmlnYXRpb25JbmRleF07XHJcbiAgfVxyXG5cclxuICBzZXRFbnRpdHlEaXNwbGF5VmFsdWVzKHRhYmxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgdGl0bGUgPSAnJztcclxuICAgIGxldCByZWNvcmRJbmRleCA9ICc/JztcclxuICAgIGxldCBlbnRpdHkgPSB0aGlzLmVudGl0aWVzW3RoaXMubmF2aWdhdGlvbkluZGV4XTtcclxuICAgIGlmIChlbnRpdHkpIHtcclxuICAgICAgdGl0bGUgPSB0YWJsZU5hbWUgKyAnIC0gJztcclxuICAgICAgaWYgKGVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGUuaXNBZGRlZCgpKSB7XHJcbiAgICAgICAgdGl0bGUgKz0gJ05ldyBSZWNvcmQnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRpdGxlICs9IHRoaXMuZW50aXR5LkhJRDtcclxuICAgICAgfVxyXG4gICAgICByZWNvcmRJbmRleCA9ICh0aGlzLm5hdmlnYXRpb25JbmRleCArIDEpLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLndpbmRvd0V2ZW50SGFuZGxlci5zZXRXaW5kb3dUaXRsZSh0aGlzLnRleHRNYW5hZ2VyLmZvcm1hdFdpbmRvd1RpdGxlKHRpdGxlKSk7XHJcbiAgICB0aGlzLnJlY29yZExvY2F0aW9uID0gcmVjb3JkSW5kZXggKyAnIG9mICcgKyB0aGlzLmVudGl0aWVzLmxlbmd0aDtcclxuICB9XHJcbn1cclxuIiwiIl19
@@ -1547,6 +1547,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImpor
1547
1547
 
1548
1548
  class TruDetailViewBase {
1549
1549
  dataContext;
1550
+ appEnvironment;
1550
1551
  textManager;
1551
1552
  windowEventHandler;
1552
1553
  view;
@@ -1558,11 +1559,26 @@ class TruDetailViewBase {
1558
1559
  disableNavigationToPreviousEntity = false;
1559
1560
  disableNavigationToNextEntity = false;
1560
1561
  navigationIndex = 0;
1561
- constructor(dataContext, textManager, windowEventHandler) {
1562
+ recordsBeforeRevert = 0;
1563
+ subs = [];
1564
+ constructor(dataContext, appEnvironment, textManager, windowEventHandler) {
1562
1565
  this.dataContext = dataContext;
1566
+ this.appEnvironment = appEnvironment;
1563
1567
  this.textManager = textManager;
1564
1568
  this.windowEventHandler = windowEventHandler;
1565
1569
  }
1570
+ calculateNextIndex = () => {
1571
+ let nextIndex = 0;
1572
+ var removedRecords = this.recordsBeforeRevert - this.entities.length;
1573
+ if (this.navigationIndex > this.entities.length - 1)
1574
+ nextIndex = this.entities.length - 1;
1575
+ else {
1576
+ nextIndex = (this.navigationIndex - removedRecords);
1577
+ }
1578
+ if (nextIndex < 0)
1579
+ nextIndex = 0;
1580
+ return nextIndex;
1581
+ };
1566
1582
  onAddEntity = () => {
1567
1583
  let newEntity = this.dataContext.entityAccess().add(this.entityType);
1568
1584
  this.entities.splice(this.navigationIndex + 1, 0, newEntity);
@@ -1590,6 +1606,19 @@ class TruDetailViewBase {
1590
1606
  this.setNavigationIndex(index);
1591
1607
  this.setEntityDisplayValues(this.tableName);
1592
1608
  };
1609
+ subscribe() {
1610
+ this.subs.push(this.appEnvironment.onRevertComplete$.subscribe((event) => {
1611
+ if (event?.successful && this.view.entities) {
1612
+ this.recordsBeforeRevert = this.entities.length;
1613
+ this.entities = this.entities.filter((e) => { return !e.entityAspect.entityState.isDetached(); });
1614
+ this.setNavigationIndex(this.calculateNextIndex());
1615
+ }
1616
+ }));
1617
+ this.subs.push(this.view.onActive().subscribe((active) => {
1618
+ if (active)
1619
+ this.setEntityDisplayValues(this.tableName);
1620
+ }));
1621
+ }
1593
1622
  setNavigationIndex(index) {
1594
1623
  this.navigationIndex = index;
1595
1624
  this.disableNavigationToPreviousEntity = index === 0;
@@ -1613,13 +1642,13 @@ class TruDetailViewBase {
1613
1642
  this.windowEventHandler.setWindowTitle(this.textManager.formatWindowTitle(title));
1614
1643
  this.recordLocation = recordIndex + ' of ' + this.entities.length;
1615
1644
  }
1616
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruDetailViewBase, deps: [{ token: TruDataContext }, { token: TruTextManager }, { token: TruWindowEventHandler }], target: i0.ɵɵFactoryTarget.Component });
1645
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruDetailViewBase, deps: [{ token: TruDataContext }, { token: TruAppEnvironment }, { token: TruTextManager }, { token: TruWindowEventHandler }], target: i0.ɵɵFactoryTarget.Component });
1617
1646
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.2", type: TruDetailViewBase, selector: "tru-detail-view-base", inputs: { view: "view" }, ngImport: i0, template: "", styles: [""] });
1618
1647
  }
1619
1648
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.2", ngImport: i0, type: TruDetailViewBase, decorators: [{
1620
1649
  type: Component,
1621
1650
  args: [{ selector: 'tru-detail-view-base', template: "" }]
1622
- }], ctorParameters: () => [{ type: TruDataContext }, { type: TruTextManager }, { type: TruWindowEventHandler }], propDecorators: { view: [{
1651
+ }], ctorParameters: () => [{ type: TruDataContext }, { type: TruAppEnvironment }, { type: TruTextManager }, { type: TruWindowEventHandler }], propDecorators: { view: [{
1623
1652
  type: Input
1624
1653
  }] } });
1625
1654