@trudb/tru-common-lib 0.1.397 → 0.1.409

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.
@@ -0,0 +1,3 @@
1
+ export class TruWindowOpenOnStartSetting {
2
+ }
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXdpbmRvdy1vcGVuLW9uLXN0YXJ0LXNldHRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXNldHRpbmdzLWRpYWxvZy93aW5kb3dzL2NsYXNzZXMvdHJ1LXdpbmRvdy1vcGVuLW9uLXN0YXJ0LXNldHRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQiwyQkFBMkI7Q0FLaEQiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJ1V2luZG93T3Blbk9uU3RhcnRTZXR0aW5nIHtcclxuICBhYnN0cmFjdCBuYW1lOiBzdHJpbmc7XHJcbiAgYWJzdHJhY3QgbGFiZWw6IHN0cmluZztcclxuICBhYnN0cmFjdCBjaGVja2VkOiBib29sZWFuO1xyXG4gIGFic3RyYWN0IG1vZGlmaWVkOiBib29sZWFuO1xyXG59XHJcbiJdfQ==
@@ -1,41 +1,47 @@
1
1
  import { Component } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "../../../../services/tru-model-table-lookup";
4
- import * as i2 from "@angular/forms";
5
- import * as i3 from "@angular/material/checkbox";
6
- import * as i4 from "@angular/material/table";
3
+ import * as i1 from "../../../../services/tru-user-preference-manager";
4
+ import * as i2 from "../../../../services/tru-model-table-lookup";
5
+ import * as i3 from "@angular/forms";
6
+ import * as i4 from "@angular/material/checkbox";
7
+ import * as i5 from "@angular/material/table";
7
8
  export class TruAppWindowOpenOnStartupSetting {
9
+ userPreferenceManager;
8
10
  modelTableLookup;
9
- tableChoices = [];
11
+ settings = [];
10
12
  displayedColumns = [];
11
- constructor(modelTableLookup) {
13
+ constructor(userPreferenceManager, modelTableLookup) {
14
+ this.userPreferenceManager = userPreferenceManager;
12
15
  this.modelTableLookup = modelTableLookup;
13
16
  let tables = this.modelTableLookup.all;
14
- let choices = [];
17
+ let openOnStartSettings = [];
15
18
  tables.forEach((table) => {
16
- if (table.isAssociatedWithMenuItem) {
17
- let choice = {
18
- label: table.name,
19
- value: { $: table.name },
20
- checked: false,
21
- notAnOption: false
22
- };
23
- choices.push(choice);
24
- }
19
+ let name = table.name?.toUpperCase() + '_OPEN_ON_START';
20
+ let openOnStart = table.openOnStart;
21
+ let userPreferenceOpenOnStart = this.userPreferenceManager.get(name);
22
+ if (userPreferenceOpenOnStart)
23
+ openOnStart = Boolean(userPreferenceOpenOnStart);
24
+ openOnStartSettings.push({
25
+ name: name,
26
+ label: table.name,
27
+ checked: openOnStart,
28
+ modified: false
29
+ });
25
30
  });
26
- this.tableChoices = choices;
31
+ this.settings = openOnStartSettings;
27
32
  }
28
33
  onRowClicked = (row) => {
29
- row.selected = !row.selected;
34
+ row.checked = !row.checked;
35
+ row.modified = true;
30
36
  };
31
37
  ngOnInit() {
32
38
  this.displayedColumns = ['label', 'checked'];
33
39
  }
34
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruAppWindowOpenOnStartupSetting, deps: [{ token: i1.TruModelTableLookup }], target: i0.ɵɵFactoryTarget.Component });
35
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruAppWindowOpenOnStartupSetting, selector: "tru-app-window-open-on-startup-setting", ngImport: i0, template: "<p>Open Window(s) On Startup</p>\r\n<table mat-table [dataSource]=\"tableChoices\">\r\n <ng-container matColumnDef=\"label\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.label}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"checked\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\" class=\"tru-app-window-open-on-startup-checkbox\">\r\n <mat-checkbox [(ngModel)]=\"element.checked\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"onRowClicked(row)\"></tr>\r\n</table>\r\n", styles: [".tru-app-window-open-on-startup-checkbox{text-align:center;justify-content:center}\n"], dependencies: [{ 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: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i4.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i4.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i4.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i4.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i4.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i4.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i4.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i4.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i4.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }] });
40
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruAppWindowOpenOnStartupSetting, deps: [{ token: i1.TruUserPreferenceManager }, { token: i2.TruModelTableLookup }], target: i0.ɵɵFactoryTarget.Component });
41
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruAppWindowOpenOnStartupSetting, selector: "tru-app-window-open-on-startup-setting", ngImport: i0, template: "<p>Open Window(s) On Startup</p>\r\n<table mat-table [dataSource]=\"settings\">\r\n <ng-container matColumnDef=\"label\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.label}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"checked\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\" class=\"tru-app-window-open-on-startup-checkbox\">\r\n <mat-checkbox [(ngModel)]=\"element.checked\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"onRowClicked(row)\"></tr>\r\n</table>\r\n", styles: [".tru-app-window-open-on-startup-checkbox{text-align:center;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i5.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i5.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i5.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i5.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i5.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i5.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i5.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i5.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i5.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }] });
36
42
  }
37
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruAppWindowOpenOnStartupSetting, decorators: [{
38
44
  type: Component,
39
- args: [{ selector: 'tru-app-window-open-on-startup-setting', template: "<p>Open Window(s) On Startup</p>\r\n<table mat-table [dataSource]=\"tableChoices\">\r\n <ng-container matColumnDef=\"label\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.label}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"checked\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\" class=\"tru-app-window-open-on-startup-checkbox\">\r\n <mat-checkbox [(ngModel)]=\"element.checked\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"onRowClicked(row)\"></tr>\r\n</table>\r\n", styles: [".tru-app-window-open-on-startup-checkbox{text-align:center;justify-content:center}\n"] }]
40
- }], ctorParameters: () => [{ type: i1.TruModelTableLookup }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWFwcC13aW5kb3ctb3Blbi1vbi1zdGFydHVwLXNldHRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXNldHRpbmdzLWRpYWxvZy93aW5kb3dzL29uLXN0YXJ1cC90cnUtYXBwLXdpbmRvdy1vcGVuLW9uLXN0YXJ0dXAtc2V0dGluZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9hcHAtc2V0dGluZ3MtZGlhbG9nL3dpbmRvd3Mvb24tc3RhcnVwL3RydS1hcHAtd2luZG93LW9wZW4tb24tc3RhcnR1cC1zZXR0aW5nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBV2xELE1BQU0sT0FBTyxnQ0FBZ0M7SUFLdkI7SUFIcEIsWUFBWSxHQUFxQixFQUFFLENBQUM7SUFDcEMsZ0JBQWdCLEdBQWEsRUFBRSxDQUFDO0lBRWhDLFlBQW9CLGdCQUFxQztRQUFyQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBQ3ZELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUM7UUFDdkMsSUFBSSxPQUFPLEdBQXFCLEVBQUUsQ0FBQztRQUNuQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBeUIsRUFBRSxFQUFFO1lBQzNDLElBQUksS0FBSyxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQ25DLElBQUksTUFBTSxHQUFHO29CQUNYLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBYztvQkFDM0IsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7b0JBQ3hCLE9BQU8sRUFBRSxLQUFLO29CQUNkLFdBQVcsRUFBRSxLQUFLO2lCQUNuQixDQUFBO2dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQVksR0FBRyxDQUFDLEdBQVEsRUFBRSxFQUFFO1FBQzFCLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0lBQy9CLENBQUMsQ0FBQTtJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDL0MsQ0FBQzt1R0E1QlUsZ0NBQWdDOzJGQUFoQyxnQ0FBZ0MsOEVDWDdDLHV3QkFpQkE7OzJGRE5hLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSx3Q0FBd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNQVRfQ0hFQ0tCT1hfREVGQVVMVF9PUFRJT05TLCBNYXRDaGVja2JveERlZmF1bHRPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFRhYmxlTG9va3VwIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLXRhYmxlLWxvb2t1cCc7XHJcbmltcG9ydCB7IFRydVRhYmxlQ29uZmlnQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Jhc2UtY2xhc3Nlcy90cnUtdGFibGUtY29uZmlnLWJhc2UnO1xyXG5pbXBvcnQgeyBUcnVDaG9pY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL3RydS1jaG9pY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtYXBwLXdpbmRvdy1vcGVuLW9uLXN0YXJ0dXAtc2V0dGluZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1hcHAtd2luZG93LW9wZW4tb24tc3RhcnR1cC1zZXR0aW5nLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1hcHAtd2luZG93LW9wZW4tb24tc3RhcnR1cC1zZXR0aW5nLmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVBcHBXaW5kb3dPcGVuT25TdGFydHVwU2V0dGluZyBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHRhYmxlQ2hvaWNlczogQXJyYXk8VHJ1Q2hvaWNlPiA9IFtdO1xyXG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbW9kZWxUYWJsZUxvb2t1cDogVHJ1TW9kZWxUYWJsZUxvb2t1cCkge1xyXG4gICAgbGV0IHRhYmxlcyA9IHRoaXMubW9kZWxUYWJsZUxvb2t1cC5hbGw7XHJcbiAgICBsZXQgY2hvaWNlczogQXJyYXk8VHJ1Q2hvaWNlPiA9IFtdO1xyXG4gICAgdGFibGVzLmZvckVhY2goKHRhYmxlOiBUcnVUYWJsZUNvbmZpZ0Jhc2UpID0+IHtcclxuICAgICAgaWYgKHRhYmxlLmlzQXNzb2NpYXRlZFdpdGhNZW51SXRlbSkge1xyXG4gICAgICAgIGxldCBjaG9pY2UgPSB7XHJcbiAgICAgICAgICBsYWJlbDogdGFibGUubmFtZSBhcyBzdHJpbmcsXHJcbiAgICAgICAgICB2YWx1ZTogeyAkOiB0YWJsZS5uYW1lIH0sXHJcbiAgICAgICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgICAgIG5vdEFuT3B0aW9uOiBmYWxzZVxyXG4gICAgICAgIH1cclxuICAgICAgICBjaG9pY2VzLnB1c2goY2hvaWNlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRhYmxlQ2hvaWNlcyA9IGNob2ljZXM7XHJcbiAgfVxyXG5cclxuICBvblJvd0NsaWNrZWQgPSAocm93OiBhbnkpID0+IHtcclxuICAgIHJvdy5zZWxlY3RlZCA9ICFyb3cuc2VsZWN0ZWQ7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuZGlzcGxheWVkQ29sdW1ucyA9IFsnbGFiZWwnLCAnY2hlY2tlZCddO1xyXG4gIH1cclxufVxyXG5cclxuIiwiPHA+T3BlbiBXaW5kb3cocykgT24gU3RhcnR1cDwvcD5cclxuPHRhYmxlIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJ0YWJsZUNob2ljZXNcIj5cclxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImxhYmVsXCI+XHJcbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBOYW1lIDwvdGg+XHJcbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPiB7e2VsZW1lbnQubGFiZWx9fSA8L3RkPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImNoZWNrZWRcIj5cclxuICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+PC90aD5cclxuICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCIgY2xhc3M9XCJ0cnUtYXBwLXdpbmRvdy1vcGVuLW9uLXN0YXJ0dXAtY2hlY2tib3hcIj5cclxuICAgICAgPG1hdC1jaGVja2JveCBbKG5nTW9kZWwpXT1cImVsZW1lbnQuY2hlY2tlZFwiPjwvbWF0LWNoZWNrYm94PlxyXG4gICAgPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC90cj5cclxuICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIiAoY2xpY2spPVwib25Sb3dDbGlja2VkKHJvdylcIj48L3RyPlxyXG48L3RhYmxlPlxyXG4iXX0=
45
+ args: [{ selector: 'tru-app-window-open-on-startup-setting', template: "<p>Open Window(s) On Startup</p>\r\n<table mat-table [dataSource]=\"settings\">\r\n <ng-container matColumnDef=\"label\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.label}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"checked\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\" class=\"tru-app-window-open-on-startup-checkbox\">\r\n <mat-checkbox [(ngModel)]=\"element.checked\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"onRowClicked(row)\"></tr>\r\n</table>\r\n", styles: [".tru-app-window-open-on-startup-checkbox{text-align:center;justify-content:center}\n"] }]
46
+ }], ctorParameters: () => [{ type: i1.TruUserPreferenceManager }, { type: i2.TruModelTableLookup }] });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWFwcC13aW5kb3ctb3Blbi1vbi1zdGFydHVwLXNldHRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXNldHRpbmdzLWRpYWxvZy93aW5kb3dzL29uLXN0YXJ1cC90cnUtYXBwLXdpbmRvdy1vcGVuLW9uLXN0YXJ0dXAtc2V0dGluZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9hcHAtc2V0dGluZ3MtZGlhbG9nL3dpbmRvd3Mvb24tc3RhcnVwL3RydS1hcHAtd2luZG93LW9wZW4tb24tc3RhcnR1cC1zZXR0aW5nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVdsRCxNQUFNLE9BQU8sZ0NBQWdDO0lBTWpDO0lBQ0E7SUFMVixRQUFRLEdBQXVDLEVBQUUsQ0FBQztJQUNsRCxnQkFBZ0IsR0FBYSxFQUFFLENBQUM7SUFFaEMsWUFDVSxxQkFBK0MsRUFDL0MsZ0JBQXFDO1FBRHJDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBMEI7UUFDL0MscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFxQjtRQUU3QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDO1FBQ3ZDLElBQUksbUJBQW1CLEdBQXVDLEVBQUUsQ0FBQztRQUNqRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBeUIsRUFBRSxFQUFFO1lBQzNDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsZ0JBQWdCLENBQUM7WUFDeEQsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUNwQyxJQUFJLHlCQUF5QixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckUsSUFBSSx5QkFBeUI7Z0JBQzNCLFdBQVcsR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztZQUVuRCxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxJQUFJO2dCQUNWLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBYztnQkFDM0IsT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLFFBQVEsRUFBRSxLQUFLO2FBQ2UsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQztJQUN0QyxDQUFDO0lBRUQsWUFBWSxHQUFHLENBQUMsR0FBUSxFQUFFLEVBQUU7UUFDMUIsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDM0IsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDdEIsQ0FBQyxDQUFBO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO3VHQW5DVSxnQ0FBZ0M7MkZBQWhDLGdDQUFnQyw4RUNYN0MsbXdCQWlCQTs7MkZETmEsZ0NBQWdDO2tCQUw1QyxTQUFTOytCQUNFLHdDQUF3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRydVRhYmxlQ29uZmlnQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Jhc2UtY2xhc3Nlcy90cnUtdGFibGUtY29uZmlnLWJhc2UnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFRhYmxlTG9va3VwIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLXRhYmxlLWxvb2t1cCc7XHJcbmltcG9ydCB7IFRydVVzZXJQcmVmZXJlbmNlTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3RydS11c2VyLXByZWZlcmVuY2UtbWFuYWdlcic7XHJcbmltcG9ydCB7IFRydVdpbmRvd09wZW5PblN0YXJ0U2V0dGluZyB9IGZyb20gJy4uL2NsYXNzZXMvdHJ1LXdpbmRvdy1vcGVuLW9uLXN0YXJ0LXNldHRpbmcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtYXBwLXdpbmRvdy1vcGVuLW9uLXN0YXJ0dXAtc2V0dGluZycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1hcHAtd2luZG93LW9wZW4tb24tc3RhcnR1cC1zZXR0aW5nLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1hcHAtd2luZG93LW9wZW4tb24tc3RhcnR1cC1zZXR0aW5nLmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVBcHBXaW5kb3dPcGVuT25TdGFydHVwU2V0dGluZyBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHNldHRpbmdzOiBBcnJheTxUcnVXaW5kb3dPcGVuT25TdGFydFNldHRpbmc+ID0gW107XHJcbiAgZGlzcGxheWVkQ29sdW1uczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHVzZXJQcmVmZXJlbmNlTWFuYWdlcjogVHJ1VXNlclByZWZlcmVuY2VNYW5hZ2VyLFxyXG4gICAgcHJpdmF0ZSBtb2RlbFRhYmxlTG9va3VwOiBUcnVNb2RlbFRhYmxlTG9va3VwKSB7XHJcblxyXG4gICAgbGV0IHRhYmxlcyA9IHRoaXMubW9kZWxUYWJsZUxvb2t1cC5hbGw7XHJcbiAgICBsZXQgb3Blbk9uU3RhcnRTZXR0aW5nczogQXJyYXk8VHJ1V2luZG93T3Blbk9uU3RhcnRTZXR0aW5nPiA9IFtdOyAgXHJcbiAgICB0YWJsZXMuZm9yRWFjaCgodGFibGU6IFRydVRhYmxlQ29uZmlnQmFzZSkgPT4ge1xyXG4gICAgICBsZXQgbmFtZSA9IHRhYmxlLm5hbWU/LnRvVXBwZXJDYXNlKCkgKyAnX09QRU5fT05fU1RBUlQnO1xyXG4gICAgICBsZXQgb3Blbk9uU3RhcnQgPSB0YWJsZS5vcGVuT25TdGFydDtcclxuICAgICAgbGV0IHVzZXJQcmVmZXJlbmNlT3Blbk9uU3RhcnQgPSB0aGlzLnVzZXJQcmVmZXJlbmNlTWFuYWdlci5nZXQobmFtZSk7XHJcbiAgICAgIGlmICh1c2VyUHJlZmVyZW5jZU9wZW5PblN0YXJ0KVxyXG4gICAgICAgIG9wZW5PblN0YXJ0ID0gQm9vbGVhbih1c2VyUHJlZmVyZW5jZU9wZW5PblN0YXJ0KTtcclxuICAgICAgXHJcbiAgICAgIG9wZW5PblN0YXJ0U2V0dGluZ3MucHVzaCh7XHJcbiAgICAgICAgbmFtZTogbmFtZSxcclxuICAgICAgICBsYWJlbDogdGFibGUubmFtZSBhcyBzdHJpbmcsXHJcbiAgICAgICAgY2hlY2tlZDogb3Blbk9uU3RhcnQsXHJcbiAgICAgICAgbW9kaWZpZWQ6IGZhbHNlXHJcbiAgICAgIH0gYXMgVHJ1V2luZG93T3Blbk9uU3RhcnRTZXR0aW5nKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IG9wZW5PblN0YXJ0U2V0dGluZ3M7XHJcbiAgfVxyXG5cclxuICBvblJvd0NsaWNrZWQgPSAocm93OiBhbnkpID0+IHtcclxuICAgIHJvdy5jaGVja2VkID0gIXJvdy5jaGVja2VkO1xyXG4gICAgcm93Lm1vZGlmaWVkID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gWydsYWJlbCcsICdjaGVja2VkJ107XHJcbiAgfVxyXG59XHJcblxyXG4iLCI8cD5PcGVuIFdpbmRvdyhzKSBPbiBTdGFydHVwPC9wPlxyXG48dGFibGUgbWF0LXRhYmxlIFtkYXRhU291cmNlXT1cInNldHRpbmdzXCI+XHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsYWJlbFwiPlxyXG4gICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gTmFtZSA8L3RoPlxyXG4gICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj4ge3tlbGVtZW50LmxhYmVsfX0gPC90ZD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJjaGVja2VkXCI+XHJcbiAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPjwvdGg+XHJcbiAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIGNsYXNzPVwidHJ1LWFwcC13aW5kb3ctb3Blbi1vbi1zdGFydHVwLWNoZWNrYm94XCI+XHJcbiAgICAgIDxtYXQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJlbGVtZW50LmNoZWNrZWRcIj48L21hdC1jaGVja2JveD5cclxuICAgIDwvdGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDx0ciBtYXQtaGVhZGVyLXJvdyAqbWF0SGVhZGVyUm93RGVmPVwiZGlzcGxheWVkQ29sdW1uc1wiPjwvdHI+XHJcbiAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnM7XCIgKGNsaWNrKT1cIm9uUm93Q2xpY2tlZChyb3cpXCI+PC90cj5cclxuPC90YWJsZT5cclxuIl19
@@ -1,19 +1,12 @@
1
1
  import { Component } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- import * as i1 from "./on-starup/tru-app-window-open-on-startup-setting";
4
3
  export class TruAppWindowSettings {
5
- title;
6
- message;
7
- constructor() {
8
- this.title = '';
9
- this.message = '';
10
- }
11
- ngOnInit() { }
4
+ constructor() { }
12
5
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruAppWindowSettings, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruAppWindowSettings, selector: "tru-app-window-settings", ngImport: i0, template: "<div>\r\n <tru-app-window-open-on-startup-setting></tru-app-window-open-on-startup-setting>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1.TruAppWindowOpenOnStartupSetting, selector: "tru-app-window-open-on-startup-setting" }] });
6
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruAppWindowSettings, selector: "tru-app-window-settings", ngImport: i0, template: "<div>\r\n \r\n</div>\r\n", styles: [""] });
14
7
  }
15
8
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruAppWindowSettings, decorators: [{
16
9
  type: Component,
17
- args: [{ selector: 'tru-app-window-settings', template: "<div>\r\n <tru-app-window-open-on-startup-setting></tru-app-window-open-on-startup-setting>\r\n</div>\r\n" }]
10
+ args: [{ selector: 'tru-app-window-settings', template: "<div>\r\n \r\n</div>\r\n" }]
18
11
  }], ctorParameters: () => [] });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWFwcC13aW5kb3ctc2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXNldHRpbmdzLWRpYWxvZy93aW5kb3dzL3RydS1hcHAtd2luZG93LXNldHRpbmdzLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1zZXR0aW5ncy1kaWFsb2cvd2luZG93cy90cnUtYXBwLXdpbmRvdy1zZXR0aW5ncy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7OztBQU9sRCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLEtBQUssQ0FBUztJQUNkLE9BQU8sQ0FBUztJQUVoQjtRQUNFLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxRQUFRLEtBQUksQ0FBQzt1R0FURixvQkFBb0I7MkZBQXBCLG9CQUFvQiwrRENQakMsNEdBR0E7OzJGRElhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtYXBwLXdpbmRvdy1zZXR0aW5ncycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1hcHAtd2luZG93LXNldHRpbmdzLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1hcHAtd2luZG93LXNldHRpbmdzLmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVBcHBXaW5kb3dTZXR0aW5ncyBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy50aXRsZSA9ICcnO1xyXG4gICAgdGhpcy5tZXNzYWdlID0gJyc7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHt9XHJcbn1cclxuXHJcbiIsIjxkaXY+XHJcbiAgPHRydS1hcHAtd2luZG93LW9wZW4tb24tc3RhcnR1cC1zZXR0aW5nPjwvdHJ1LWFwcC13aW5kb3ctb3Blbi1vbi1zdGFydHVwLXNldHRpbmc+XHJcbjwvZGl2PlxyXG4iXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWFwcC13aW5kb3ctc2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYXBwLXNldHRpbmdzLWRpYWxvZy93aW5kb3dzL3RydS1hcHAtd2luZG93LXNldHRpbmdzLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1zZXR0aW5ncy1kaWFsb2cvd2luZG93cy90cnUtYXBwLXdpbmRvdy1zZXR0aW5ncy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7O0FBT2xELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsZ0JBQWUsQ0FBQzt1R0FETCxvQkFBb0I7MkZBQXBCLG9CQUFvQiwrRENQakMsMkJBR0E7OzJGRElhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtYXBwLXdpbmRvdy1zZXR0aW5ncycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1hcHAtd2luZG93LXNldHRpbmdzLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1hcHAtd2luZG93LXNldHRpbmdzLmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVBcHBXaW5kb3dTZXR0aW5ncyB7XHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG59XHJcblxyXG4iLCI8ZGl2PlxyXG4gIFxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,120 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { breeze, Predicate } from 'breeze-client';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./tru-model-type-lookup";
5
+ import * as i2 from "./tru-app-environment";
6
+ import * as i3 from "./tru-user";
7
+ export class TruUserPreferenceManager {
8
+ modelTypeLookup;
9
+ appEnvironment;
10
+ user;
11
+ globalDataContext;
12
+ constructor(modelTypeLookup, appEnvironment, user) {
13
+ this.modelTypeLookup = modelTypeLookup;
14
+ this.appEnvironment = appEnvironment;
15
+ this.user = user;
16
+ this.globalDataContext = this.appEnvironment.globalDataContext;
17
+ }
18
+ setupQuery(query, name) {
19
+ var predicate = new Predicate('TruDbUserRef', breeze.FilterQueryOp.Equals, this.user.activeUserRef);
20
+ if (name)
21
+ predicate = predicate.and('Name', breeze.FilterQueryOp.Equals, name);
22
+ return query.where(predicate);
23
+ }
24
+ /**
25
+ * Queries for a preference for the current user. On success, completes
26
+ * promise with the value or undefined if none.
27
+ * @param {string} name - preference name
28
+ * @returns {promise}
29
+ */
30
+ get = (name) => {
31
+ let preferences = this.globalDataContext
32
+ .entityAccess()
33
+ .searchCacheOnlySynchronously(this.modelTypeLookup.getType('TruDbUserPreference'), this.setupQuery);
34
+ if (preferences.length > 1)
35
+ console.log('Query selected more than one preference record.');
36
+ else if (preferences.length === 1)
37
+ return JSON.parse(preferences[0].Value);
38
+ else
39
+ return null;
40
+ };
41
+ /**
42
+ * Queries for all preferences for the current user. On success, completes
43
+ * promise with an object loaded with the values indexed by name.
44
+ * @returns {promise}
45
+ */
46
+ getAll = async () => {
47
+ await this.globalDataContext
48
+ .entityAccess()
49
+ .searchCacheOnly(this.modelTypeLookup.getType('TruDbUserPreference'), this.setupQuery)
50
+ .subscribe((entities) => {
51
+ let result = {};
52
+ for (var i = 0; i < entities.length; ++i)
53
+ result[entities[i].Name] = JSON.parse(entities[i].Value);
54
+ return result;
55
+ });
56
+ };
57
+ /**
58
+ * Saves the value of a preference. On success, completes promise with no value.
59
+ * @param {string} name - preference name
60
+ * @param {string} value - value text
61
+ * @returns {promise}
62
+ */
63
+ set = async (name, value) => {
64
+ await this.globalDataContext
65
+ .entityAccess()
66
+ .searchCacheOnly(this.modelTypeLookup.getType('TruDbUserPreference'), this.setupQuery)
67
+ .subscribe((entities) => {
68
+ if (entities.length > 1)
69
+ console.log('Query selected more than one preference record.');
70
+ value = JSON.stringify(value);
71
+ if (entities.length === 1) {
72
+ entities[0].Value = value;
73
+ }
74
+ else {
75
+ let entity = this.globalDataContext.entityAccess().add(this.modelTypeLookup.getType('TruDbUserPreference'));
76
+ entity.Name = name;
77
+ entity.Value = value;
78
+ entity.TruDbUserRef = this.user.activeUserRef;
79
+ }
80
+ this.globalDataContext.saveWithoutNotification()
81
+ .then(() => { })
82
+ .catch(() => {
83
+ return null;
84
+ });
85
+ });
86
+ };
87
+ /**
88
+ * Deletes a preference.
89
+ * @param {string} name - preference name
90
+ */
91
+ eliminate = async (name) => {
92
+ await this.globalDataContext
93
+ .entityAccess()
94
+ .searchCacheOnly(this.modelTypeLookup.getType('TruDbUserPreference'), this.setupQuery)
95
+ .subscribe((entities) => {
96
+ if (entities.length > 1) {
97
+ console.log('Query selected more than one preference record.');
98
+ }
99
+ if (entities.length === 0) {
100
+ }
101
+ entities[0].entityAspect.setDeleted();
102
+ this.globalDataContext.saveWithoutNotification()
103
+ .then(() => {
104
+ return true;
105
+ })
106
+ .catch(() => {
107
+ return false;
108
+ });
109
+ });
110
+ };
111
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUserPreferenceManager, deps: [{ token: i1.TruModelTypeLookup }, { token: i2.TruAppEnvironment }, { token: i3.TruUser }], target: i0.ɵɵFactoryTarget.Injectable });
112
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUserPreferenceManager, providedIn: 'root' });
113
+ }
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUserPreferenceManager, decorators: [{
115
+ type: Injectable,
116
+ args: [{
117
+ providedIn: 'root',
118
+ }]
119
+ }], ctorParameters: () => [{ type: i1.TruModelTypeLookup }, { type: i2.TruAppEnvironment }, { type: i3.TruUser }] });
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXVzZXItcHJlZmVyZW5jZS1tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9zZXJ2aWNlcy90cnUtdXNlci1wcmVmZXJlbmNlLW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTbEQsTUFBTSxPQUFPLHdCQUF3QjtJQUd6QjtJQUNBO0lBQ0E7SUFKRixpQkFBaUIsQ0FBaUI7SUFDMUMsWUFDVSxlQUFtQyxFQUNuQyxjQUFpQyxFQUNqQyxJQUFhO1FBRmIsb0JBQWUsR0FBZixlQUFlLENBQW9CO1FBQ25DLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxTQUFJLEdBQUosSUFBSSxDQUFTO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFtQyxDQUFDO0lBQ25GLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBVSxFQUFFLElBQVk7UUFDekMsSUFBSSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDcEcsSUFBSSxJQUFJO1lBQ04sU0FBUyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxHQUFHLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtRQUM1QixJQUFJ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QUUsSUFBWSxFQUFFLEVBQUU7UUFDeEMsTUFBTSxJQUFJLENBQUMsaUJBQWlCO2FBQ3pCLFlBQVksRUFBRTthQUNkLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUM7YUFDckYsU0FBUyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDM0IsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7WUFDakUsQ0FBQztZQUNELElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUU1QixDQUFDO1lBQ0QsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLEVBQUU7aUJBQzdDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQ1QsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLEdBQUcsRUFBRTtnQkFDVixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUE7dUdBM0dVLHdCQUF3QjsyR0FBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzJGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGJyZWV6ZSwgUHJlZGljYXRlIH0gZnJvbSAnYnJlZXplLWNsaWVudCc7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSAnLi90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuL3RydS1kYXRhLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFR5cGVMb29rdXAgfSBmcm9tICcuL3RydS1tb2RlbC10eXBlLWxvb2t1cCc7XHJcbmltcG9ydCB7IFRydVVzZXIgfSBmcm9tICcuL3RydS11c2VyJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVVc2VyUHJlZmVyZW5jZU1hbmFnZXIge1xyXG4gIHByaXZhdGUgZ2xvYmFsRGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBtb2RlbFR5cGVMb29rdXA6IFRydU1vZGVsVHlwZUxvb2t1cCxcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50LFxyXG4gICAgcHJpdmF0ZSB1c2VyOiBUcnVVc2VyKSB7XHJcbiAgICB0aGlzLmdsb2JhbERhdGFDb250ZXh0ID0gdGhpcy5hcHBFbnZpcm9ubWVudC5nbG9iYWxEYXRhQ29udGV4dCBhcyBUcnVEYXRhQ29udGV4dDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBRdWVyeShxdWVyeTogYW55LCBuYW1lOiBzdHJpbmcpIHtcclxuICAgIHZhciBwcmVkaWNhdGUgPSBuZXcgUHJlZGljYXRlKCdUcnVEYlVzZXJSZWYnLCBicmVlemUuRmlsdGVyUXVlcnlPcC5FcXVhbHMsIHRoaXMudXNlci5hY3RpdmVVc2VyUmVmKTtcclxuICAgIGlmIChuYW1lKVxyXG4gICAgICBwcmVkaWNhdGUgPSBwcmVkaWNhdGUuYW5kKCdOYW1lJywgYnJlZXplLkZpbHRlclF1ZXJ5T3AuRXF1YWxzLCBuYW1lKTtcclxuICAgIHJldHVybiBxdWVyeS53aGVyZShwcmVkaWNhdGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUXVlcmllcyBmb3IgYSBwcmVmZXJlbmNlIGZvciB0aGUgY3VycmVudCB1c2VyLiAgT24gc3VjY2VzcywgY29tcGxldGVzXHJcbiAgICogcHJvbWlzZSB3aXRoIHRoZSB2YWx1ZSBvciB1bmRlZmluZWQgaWYgbm9uZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIHByZWZlcmVuY2UgbmFtZVxyXG4gICAqIEByZXR1cm5zIHtwcm9taXNlfVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgPSAobmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICBsZXQgcHJlZmVyZW5jZXMgPSB0aGlzLmdsb2JhbERhdGFDb250ZXh0XHJcbiAgICAgIC5lbnRpdHlBY2Nlc3MoKVxyXG4gICAgICAuc2VhcmNoQ2FjaGVPbmx5U3luY2hyb25vdXNseSh0aGlzLm1vZGVsVHlwZUxvb2t1cC5nZXRUeXBlKCdUcnVEYlVzZXJQcmVmZXJlbmNlJyksIHRoaXMuc2V0dXBRdWVyeSlcclxuICAgIGlmIChwcmVmZXJlbmNlcy5sZW5ndGggPiAxKVxyXG4gICAgICBjb25zb2xlLmxvZygnUXVlcnkgc2VsZWN0ZWQgbW9yZSB0aGFuIG9uZSBwcmVmZXJlbmNlIHJlY29yZC4nKTtcclxuICAgIGVsc2UgaWYgKHByZWZlcmVuY2VzLmxlbmd0aCA9PT0gMSlcclxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UocHJlZmVyZW5jZXNbMF0uVmFsdWUpO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFF1ZXJpZXMgZm9yIGFsbCBwcmVmZXJlbmNlcyBmb3IgdGhlIGN1cnJlbnQgdXNlci4gIE9uIHN1Y2Nlc3MsIGNvbXBsZXRlc1xyXG4gICAqIHByb21pc2Ugd2l0aCBhbiBvYmplY3QgbG9hZGVkIHdpdGggdGhlIHZhbHVlcyBpbmRleGVkIGJ5IG5hbWUuXHJcbiAgICogQHJldHVybnMge3Byb21pc2V9XHJcbiAgICovXHJcbiAgcHVibGljIGdldEFsbCA9IGFzeW5jICgpID0+IHtcclxuICAgIGF3YWl0IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHRcclxuICAgICAgLmVudGl0eUFjY2VzcygpXHJcbiAgICAgIC5zZWFyY2hDYWNoZU9ubHkodGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSgnVHJ1RGJVc2VyUHJlZmVyZW5jZScpLCB0aGlzLnNldHVwUXVlcnkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGVudGl0aWVzOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0ge30gYXMgT2JqZWN0O1xyXG4gICAgICAgIHR5cGUgT2JqZWN0S2V5ID0ga2V5b2YgdHlwZW9mIHJlc3VsdDtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVudGl0aWVzLmxlbmd0aDsgKytpKVxyXG4gICAgICAgICAgcmVzdWx0W2VudGl0aWVzW2ldLk5hbWUgYXMgT2JqZWN0S2V5XSA9IEpTT04ucGFyc2UoZW50aXRpZXNbaV0uVmFsdWUpO1xyXG4gICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTYXZlcyB0aGUgdmFsdWUgb2YgYSBwcmVmZXJlbmNlLiAgT24gc3VjY2VzcywgY29tcGxldGVzIHByb21pc2Ugd2l0aCBubyB2YWx1ZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIHByZWZlcmVuY2UgbmFtZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIHZhbHVlIHRleHRcclxuICAgKiBAcmV0dXJucyB7cHJvbWlzZX1cclxuICAgKi9cclxuICBwdWJsaWMgc2V0ID0gYXN5bmMgKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4ge1xyXG4gICAgXHJcbiAgICBhd2FpdCB0aGlzLmdsb2JhbERhdGFDb250ZXh0XHJcbiAgICAgIC5lbnRpdHlBY2Nlc3MoKVxyXG4gICAgICAuc2VhcmNoQ2FjaGVPbmx5KHRoaXMubW9kZWxUeXBlTG9va3VwLmdldFR5cGUoJ1RydURiVXNlclByZWZlcmVuY2UnKSwgdGhpcy5zZXR1cFF1ZXJ5KVxyXG4gICAgICAuc3Vic2NyaWJlKChlbnRpdGllczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGVudGl0aWVzLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnUXVlcnkgc2VsZWN0ZWQgbW9yZSB0aGFuIG9uZSBwcmVmZXJlbmNlIHJlY29yZC4nKTtcclxuICAgICAgICB2YWx1ZSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcclxuICAgICAgICBpZiAoZW50aXRpZXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICBlbnRpdGllc1swXS5WYWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIH0gZWxzZSB7ICAgICAgICAgIFxyXG4gICAgICAgICAgbGV0IGVudGl0eSA9IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuYWRkKHRoaXMubW9kZWxUeXBlTG9va3VwLmdldFR5cGUoJ1RydURiVXNlclByZWZlcmVuY2UnKSkgYXMgYW55O1xyXG4gICAgICAgICAgZW50aXR5Lk5hbWUgPSBuYW1lO1xyXG4gICAgICAgICAgZW50aXR5LlZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgICBlbnRpdHkuVHJ1RGJVc2VyUmVmID0gdGhpcy51c2VyLmFjdGl2ZVVzZXJSZWY7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZ2xvYmFsRGF0YUNvbnRleHQuc2F2ZVdpdGhvdXROb3RpZmljYXRpb24oKVxyXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge30pXHJcbiAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgYSBwcmVmZXJlbmNlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gcHJlZmVyZW5jZSBuYW1lXHJcbiAgICovXHJcbiAgcHVibGljIGVsaW1pbmF0ZSA9IGFzeW5jIChuYW1lOiBzdHJpbmcpID0+IHtcclxuICAgIGF3YWl0IHRoaXMuZ2xvYmFsRGF0YUNvbnRleHRcclxuICAgICAgLmVudGl0eUFjY2VzcygpXHJcbiAgICAgIC5zZWFyY2hDYWNoZU9ubHkodGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSgnVHJ1RGJVc2VyUHJlZmVyZW5jZScpLCB0aGlzLnNldHVwUXVlcnkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGVudGl0aWVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZW50aXRpZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ1F1ZXJ5IHNlbGVjdGVkIG1vcmUgdGhhbiBvbmUgcHJlZmVyZW5jZSByZWNvcmQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlbnRpdGllcy5sZW5ndGggPT09IDApIHtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVudGl0aWVzWzBdLmVudGl0eUFzcGVjdC5zZXREZWxldGVkKCk7XHJcbiAgICAgICAgdGhpcy5nbG9iYWxEYXRhQ29udGV4dC5zYXZlV2l0aG91dE5vdGlmaWNhdGlvbigpXHJcbiAgICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcbn1cclxuIl19