fabrikantencore 2.13.1 → 2.13.4

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.
Files changed (22) hide show
  1. package/esm2022/src/app/modules/fabrikantencore/beheer/components/beheer-bcb-instance/beheer-bcb-instance.component.mjs +22 -103
  2. package/esm2022/src/app/modules/fabrikantencore/beheer/components/beheer-configurator/beheer-configurator.component.mjs +27 -51
  3. package/esm2022/src/app/modules/fabrikantencore/beheer/components/beheer-project/beheer-project.component.mjs +18 -133
  4. package/esm2022/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.mjs +8 -100
  5. package/esm2022/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.mjs +5 -1
  6. package/esm2022/src/app/modules/fabrikantencore/fabrikantencore.module.mjs +4 -1
  7. package/esm2022/src/app/modules/fabrikantencore/services/bcbproductinstance.service.mjs +328 -0
  8. package/esm2022/src/app/modules/fabrikantencore/services/fabrikanten.service.mjs +25 -3
  9. package/esm2022/src/app/modules/fabrikantencore/services/navigate.service.mjs +4 -1
  10. package/esm2022/src/app/modules/fabrikantencore/services/svg.service.mjs +7 -1
  11. package/esm2022/src/app/modules/fabrikantencore/swagger/SwaggerClient.mjs +173 -1
  12. package/fesm2022/fabrikantencore.mjs +677 -462
  13. package/fesm2022/fabrikantencore.mjs.map +1 -1
  14. package/package.json +1 -1
  15. package/src/app/modules/fabrikantencore/beheer/components/beheer-bcb-instance/beheer-bcb-instance.component.d.ts +7 -16
  16. package/src/app/modules/fabrikantencore/beheer/components/beheer-configurator/beheer-configurator.component.d.ts +8 -10
  17. package/src/app/modules/fabrikantencore/beheer/components/beheer-project/beheer-project.component.d.ts +5 -19
  18. package/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.d.ts +0 -7
  19. package/src/app/modules/fabrikantencore/services/bcbproductinstance.service.d.ts +50 -0
  20. package/src/app/modules/fabrikantencore/services/fabrikanten.service.d.ts +3 -2
  21. package/src/app/modules/fabrikantencore/services/svg.service.d.ts +2 -1
  22. package/src/app/modules/fabrikantencore/swagger/SwaggerClient.d.ts +32 -0
@@ -1,123 +1,42 @@
1
- import { Component, Input, ViewEncapsulation } from '@angular/core';
2
- import { FabrikantenFormRequestModel, FormInstanceRequestModel, TranslationCategory, TranslationSubCategory, LoginResponseModel, FormType } from '../../../swagger/SwaggerClient';
1
+ import { Component, ViewEncapsulation } from '@angular/core';
2
+ import { TranslationCategory, TranslationSubCategory } from '../../../swagger/SwaggerClient';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "../../../swagger/SwaggerClient";
4
+ import * as i1 from "../../../services/bcbproductinstance.service";
5
5
  import * as i2 from "../../../services/translate.service";
6
- import * as i3 from "../../../services/authentication.service";
7
- import * as i4 from "@angular/common";
8
- import * as i5 from "@angular/material/legacy-button";
9
- import * as i6 from "../../../components/fab-loader/fab-loader.component";
10
- import * as i7 from "../../../components/fab-form/fab-form.component";
6
+ import * as i3 from "../../../services/fabrikanten.service";
7
+ import * as i4 from "../../../services/authentication.service";
8
+ import * as i5 from "@angular/common";
9
+ import * as i6 from "@angular/material/legacy-button";
10
+ import * as i7 from "@angular/material/legacy-tabs";
11
+ import * as i8 from "../../../components/fab-loader/fab-loader.component";
12
+ import * as i9 from "../../../components/fab-filters-input/fab-filters-input.component";
13
+ import * as i10 from "../../../components/fab-svg-viewer/fab-svg-viewer.component";
14
+ import * as i11 from "../../../components/fab-form/fab-form.component";
11
15
  class BeheerBcbInstanceComponent {
12
- FormApiClient;
16
+ BcbProductInstanceService;
13
17
  TranslateService;
18
+ FabrikantenService;
14
19
  authenticationService;
15
20
  ChangeDetectorRef;
16
- FormLoaded = false;
17
- InstanceLoaded = false;
18
- BCBProductInstanceViewModel;
19
- LoadingForm = true;
20
- LoadingInstance = true;
21
- FabrikantenFormViewModel;
22
- set input(value) {
23
- this.BCBProductInstanceViewModel = value;
24
- this.InstanceLoaded = true;
25
- this.LoadInstance();
26
- }
27
21
  get TranslationCategory() {
28
22
  return TranslationCategory;
29
23
  }
30
24
  get TranslationSubCategory() {
31
25
  return TranslationSubCategory;
32
26
  }
33
- Loading() {
34
- return this.LoadingForm || this.LoadingInstance;
35
- }
36
- constructor(FormApiClient, TranslateService, authenticationService, ChangeDetectorRef) {
37
- this.FormApiClient = FormApiClient;
27
+ constructor(BcbProductInstanceService, TranslateService, FabrikantenService, authenticationService, ChangeDetectorRef) {
28
+ this.BcbProductInstanceService = BcbProductInstanceService;
38
29
  this.TranslateService = TranslateService;
30
+ this.FabrikantenService = FabrikantenService;
39
31
  this.authenticationService = authenticationService;
40
32
  this.ChangeDetectorRef = ChangeDetectorRef;
41
- this.LoadForm();
42
- }
43
- Save() {
44
- this.LoadingInstance = true;
45
- this.FabrikantenFormViewModel.customConnectId = this.BCBProductInstanceViewModel.id;
46
- this.FormApiClient.saveForm(this.FabrikantenFormViewModel).subscribe(() => {
47
- this.LoadingInstance = false;
48
- }, (error) => {
49
- alert('An unexpected error occured');
50
- this.LoadingInstance = false;
51
- });
52
- }
53
- LoadForm() {
54
- this.LoadingForm = true;
55
- var request = new FabrikantenFormRequestModel();
56
- request.formType = FormType.CustomForm;
57
- this.FormApiClient.getForm(request).subscribe((model) => {
58
- this.FabrikantenFormViewModel = model;
59
- this.LoadingForm = false;
60
- this.FormLoaded = true;
61
- this.LoadInstance();
62
- }, (error) => {
63
- alert('An unexpected error occured');
64
- this.LoadingForm = false;
65
- });
66
- }
67
- LoadInstance() {
68
- if (this.FormLoaded && this.InstanceLoaded) {
69
- this.LoadingInstance = true;
70
- var request = new FormInstanceRequestModel();
71
- request.customConnectId = this.BCBProductInstanceViewModel.id;
72
- request.formId = this.FabrikantenFormViewModel.id;
73
- request.loginResponseModel = new LoginResponseModel(this.authenticationService.currentUserValue);
74
- this.FormApiClient.getFormInstance(request).subscribe((model) => {
75
- this.FabrikantenFormViewModel.formInstanceId = model.id;
76
- var instances = model.formInputInstances;
77
- if (instances != null) {
78
- for (var i = 0; i < instances.length; i++) {
79
- var formcats = this.FabrikantenFormViewModel.formCategories;
80
- if (formcats != null) {
81
- for (var j = 0; j < formcats.length; j++) {
82
- var rows = formcats[j].rows;
83
- if (rows != null) {
84
- for (var k = 0; k < rows.length; k++) {
85
- var inputs = rows[k].inputs;
86
- if (inputs != null) {
87
- for (var l = 0; l < inputs.length; l++) {
88
- if (inputs[l].id == instances[i].formInputId) {
89
- inputs[l].value = instances[i].value;
90
- }
91
- }
92
- }
93
- }
94
- }
95
- }
96
- }
97
- }
98
- }
99
- this.LoadingInstance = false;
100
- }, (error) => {
101
- alert('An unexpected error occured');
102
- this.LoadingInstance = false;
103
- });
104
- }
105
- }
106
- DownloadPDF() {
107
- // CreateInstancePDF(int pLanguageId, int pPDFTemplateId, int pBCBInstanceId)
108
- var url = "/Download/CreateInstancePDF?pLanguageId=" + this.TranslateService.ActiveLanguage.id;
109
- url += "&pPDFTemplateId=1";
110
- url += "&pBCBInstanceId=" + this.BCBProductInstanceViewModel.id;
111
- window.open(url, "_blank");
112
33
  }
113
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerBcbInstanceComponent, deps: [{ token: i1.FormApiClient }, { token: i2.TranslateService }, { token: i3.AuthenticationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
114
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BeheerBcbInstanceComponent, selector: "app-beheer-bcb-instance", inputs: { input: "input" }, ngImport: i0, template: "<div *ngIf=\"Loading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!Loading()\">\n <div class=\"displayflex\">\n <div class=\"prop prop-name\">Product</div>\n <div class=\"prop prop-value\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, BCBProductInstanceViewModel.productId) }}\n </div>\n </div>\n <div class=\"displayflex\">\n <div class=\"prop prop-name\">Datum</div>\n <div class=\"prop prop-value\">\n {{ BCBProductInstanceViewModel.dateTimeModified }}\n </div>\n </div>\n <br />\n <br />\n <br />\n <div>\n <div>\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" colspan=\"2\">Filter</td>\n </tr>\n <ng-container *ngFor=\"let filter of BCBProductInstanceViewModel.filters\">\n <tr *ngIf=\"filter.filterOptions.length > 0\" class=\"info-row\">\n <td>\n {{ TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Name, filter.filterId) }}\n </td>\n <td>\n <div *ngFor=\"let filteroption of filter.filterOptions\" class=\"value-cell\">\n {{ TranslateService.GetActiveValue(TranslationCategory.FilterOption, TranslationSubCategory.Name, filteroption.filterOptionId) }}\n </div>\n </td>\n </tr>\n </ng-container>\n </table>\n <br />\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" colspan=\"2\">Range Input</td>\n </tr>\n <ng-container *ngFor=\"let rangeinput of BCBProductInstanceViewModel.rangeInputs\">\n <tr *ngIf=\"rangeinput.value != null\" class=\"info-row\">\n <td>\n {{ TranslateService.GetActiveValue(TranslationCategory.RangeInput, TranslationSubCategory.Name, rangeinput.rangeInputId) }}\n </td>\n <td class=\"value-cell\">\n {{ rangeinput.value }}\n </td>\n </tr>\n </ng-container>\n </table>\n </div>\n\n <div>\n <app-fab-form [form]=\"FabrikantenFormViewModel\"></app-fab-form>\n <div class=\"button-row\">\n <button mat-raised-button (click)=\"Save()\">\n Save\n </button>\n </div>\n </div>\n </div>\n <br />\n <br />\n <button mat-raised-button (click)=\"DownloadPDF()\">\n Download PDF\n </button>\n <br />\n</div>\n", styles: [".displayflex{display:flex}.prop{font-size:20px;padding:5px;border-bottom:1px solid #000}.prop-name{width:200px}.prop-value{width:calc(100% - 220px)}.border-bottom{border-bottom:1px solid #000;font-size:20px;padding:4px}.form-button-row{display:none}.value-cell{text-align:right;padding-right:5px}.info-row:hover{background-color:#efefef}.button-row{padding-top:3px;text-align:right}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i7.FabFormComponent, selector: "app-fab-form", inputs: ["form"], outputs: ["completed"] }], encapsulation: i0.ViewEncapsulation.None });
34
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerBcbInstanceComponent, deps: [{ token: i1.BcbProductInstanceService }, { token: i2.TranslateService }, { token: i3.FabrikantenService }, { token: i4.AuthenticationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
35
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BeheerBcbInstanceComponent, selector: "app-beheer-bcb-instance", ngImport: i0, template: "<div *ngIf=\"BcbProductInstanceService.IsLoading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!BcbProductInstanceService.IsLoading()\">\n <div class=\"displayflex\">\n <div style=\"flex: auto;\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, BcbProductInstanceService.BCBProductInstanceViewModel.productId) }}\n </div>\n\n <div style=\"padding: 10px;\">\n <button mat-raised-button (click)=\"BcbProductInstanceService.SaveConfiguration(ChangeDetectorRef)\">\n Save\n </button>\n &nbsp;\n <button mat-raised-button (click)=\"BcbProductInstanceService.DownloadPDF(this.TranslateService.ActiveLanguage.id)\">\n Download PDF\n </button>\n &nbsp;\n <button mat-raised-button (click)=\"BcbProductInstanceService.UnselectBCBProductInstance()\">\n Terug\n </button>\n </div>\n </div>\n <div class=\"displayflex\">\n <div class=\"dividercolumn leftcol\">\n <mat-tab-group style=\"height: 100%;\">\n <mat-tab label=\"Configuratie\">\n <div class=\"filter-scroll-section\">\n <fab-filters-input></fab-filters-input>\n </div>\n </mat-tab>\n <mat-tab label=\"Info\">\n <app-fab-form [form]=\"BcbProductInstanceService.FabrikantenCustomFormViewModel\"></app-fab-form>\n </mat-tab>\n </mat-tab-group>\n </div>\n <div style=\"width: 50%;\">\n <ng-container *ngIf=\"!FabrikantenService.ShowVariants()\">\n <app-fab-svg-viewer></app-fab-svg-viewer>\n </ng-container>\n <ng-container *ngIf=\"FabrikantenService.ShowVariants()\">\n <div style=\"padding: 10px;\">\n Er zijn nog meerdere varianten van dit product die voldoen aan de huidige filter selectie. Vul meer filters om de selectie te specificeren.\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: ["app-beheer-bcb-instance .displayflex{display:flex}app-beheer-bcb-instance .leftcol{padding:10px}app-beheer-bcb-instance .dividercolumn{width:50%;max-height:calc(100vH - 174px);overflow:auto}app-beheer-bcb-instance .filter-scroll-section{max-height:calc(100vH - 1px)}app-beheer-bcb-instance .filter-affects-sign{display:none}app-beheer-bcb-instance .affects-only-bestek{display:none}app-beheer-bcb-instance .svg-settings{top:80px!important;right:25px!important}app-beheer-bcb-instance .toolbar-button{display:none}app-beheer-bcb-instance .prop{font-size:20px;padding:5px;border-bottom:1px solid #000}app-beheer-bcb-instance .prop-name{width:200px}app-beheer-bcb-instance .prop-value{width:calc(100% - 220px)}app-beheer-bcb-instance .border-bottom{border-bottom:1px solid #000;font-size:20px;padding:4px}app-beheer-bcb-instance .form-button-row{display:none}app-beheer-bcb-instance .value-cell{text-align:right;padding-right:5px}app-beheer-bcb-instance .info-row:hover{background-color:#efefef}app-beheer-bcb-instance .button-row{padding-top:3px;text-align:right}app-beheer-bcb-instance app-fab-loader{position:fixed;background-color:#00000080;width:100%;top:0;left:0;height:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatLegacyTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { kind: "component", type: i7.MatLegacyTab, selector: "mat-tab", inputs: ["disabled"], exportAs: ["matTab"] }, { kind: "component", type: i8.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i9.FabFiltersInputComponent, selector: "fab-filters-input" }, { kind: "component", type: i10.FabSvgViewerComponent, selector: "app-fab-svg-viewer" }, { kind: "component", type: i11.FabFormComponent, selector: "app-fab-form", inputs: ["form"], outputs: ["completed"] }], encapsulation: i0.ViewEncapsulation.None });
115
36
  }
116
37
  export { BeheerBcbInstanceComponent };
117
38
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerBcbInstanceComponent, decorators: [{
118
39
  type: Component,
119
- args: [{ selector: 'app-beheer-bcb-instance', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"Loading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!Loading()\">\n <div class=\"displayflex\">\n <div class=\"prop prop-name\">Product</div>\n <div class=\"prop prop-value\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, BCBProductInstanceViewModel.productId) }}\n </div>\n </div>\n <div class=\"displayflex\">\n <div class=\"prop prop-name\">Datum</div>\n <div class=\"prop prop-value\">\n {{ BCBProductInstanceViewModel.dateTimeModified }}\n </div>\n </div>\n <br />\n <br />\n <br />\n <div>\n <div>\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" colspan=\"2\">Filter</td>\n </tr>\n <ng-container *ngFor=\"let filter of BCBProductInstanceViewModel.filters\">\n <tr *ngIf=\"filter.filterOptions.length > 0\" class=\"info-row\">\n <td>\n {{ TranslateService.GetActiveValue(TranslationCategory.Filter, TranslationSubCategory.Name, filter.filterId) }}\n </td>\n <td>\n <div *ngFor=\"let filteroption of filter.filterOptions\" class=\"value-cell\">\n {{ TranslateService.GetActiveValue(TranslationCategory.FilterOption, TranslationSubCategory.Name, filteroption.filterOptionId) }}\n </div>\n </td>\n </tr>\n </ng-container>\n </table>\n <br />\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" colspan=\"2\">Range Input</td>\n </tr>\n <ng-container *ngFor=\"let rangeinput of BCBProductInstanceViewModel.rangeInputs\">\n <tr *ngIf=\"rangeinput.value != null\" class=\"info-row\">\n <td>\n {{ TranslateService.GetActiveValue(TranslationCategory.RangeInput, TranslationSubCategory.Name, rangeinput.rangeInputId) }}\n </td>\n <td class=\"value-cell\">\n {{ rangeinput.value }}\n </td>\n </tr>\n </ng-container>\n </table>\n </div>\n\n <div>\n <app-fab-form [form]=\"FabrikantenFormViewModel\"></app-fab-form>\n <div class=\"button-row\">\n <button mat-raised-button (click)=\"Save()\">\n Save\n </button>\n </div>\n </div>\n </div>\n <br />\n <br />\n <button mat-raised-button (click)=\"DownloadPDF()\">\n Download PDF\n </button>\n <br />\n</div>\n", styles: [".displayflex{display:flex}.prop{font-size:20px;padding:5px;border-bottom:1px solid #000}.prop-name{width:200px}.prop-value{width:calc(100% - 220px)}.border-bottom{border-bottom:1px solid #000;font-size:20px;padding:4px}.form-button-row{display:none}.value-cell{text-align:right;padding-right:5px}.info-row:hover{background-color:#efefef}.button-row{padding-top:3px;text-align:right}\n"] }]
120
- }], ctorParameters: function () { return [{ type: i1.FormApiClient }, { type: i2.TranslateService }, { type: i3.AuthenticationService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { input: [{
121
- type: Input
122
- }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLWJjYi1pbnN0YW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1iY2ItaW5zdGFuY2UvYmVoZWVyLWJjYi1pbnN0YW5jZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1iY2ItaW5zdGFuY2UvYmVoZWVyLWJjYi1pbnN0YW5jZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE2QixLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0YsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHdCQUF3QixFQUErRixtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7O0FBRS9RLE1BTWEsMEJBQTBCO0lBOEJqQjtJQUNYO0lBQ0E7SUFDQTtJQS9CRixVQUFVLEdBQVksS0FBSyxDQUFDO0lBQzVCLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFFaEMsMkJBQTJCLENBQThCO0lBQ3pELFdBQVcsR0FBWSxJQUFJLENBQUM7SUFDNUIsZUFBZSxHQUFZLElBQUksQ0FBQztJQUVoQyx3QkFBd0IsQ0FBMkI7SUFFMUQsSUFBYSxLQUFLLENBQUMsS0FBa0M7UUFDbkQsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEtBQUssQ0FBQztRQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUUzQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzVCLE9BQU8s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QUVyQyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUMvQixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsNkVBQTZFO1FBQzdFLElBQUksR0FBRyxHQUFHLDBDQUEwQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQy9GLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQztRQUMzQixHQUFHLElBQUksa0JBQWtCLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQztRQUVoRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3QixDQUFDO3dHQXZJVSwwQkFBMEI7NEZBQTFCLDBCQUEwQiwyRkNYdkMseTZFQXlFQTs7U0Q5RGEsMEJBQTBCOzRGQUExQiwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0UseUJBQXlCLGlCQUdwQixpQkFBaUIsQ0FBQyxJQUFJO3VNQWF4QixLQUFLO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25Jbml0LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGYWJyaWthbnRlbkZvcm1SZXF1ZXN0TW9kZWwsIEZvcm1JbnN0YW5jZVJlcXVlc3RNb2RlbCwgRm9ybUluc3RhbmNlVmlld01vZGVsLCBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwsIEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCwgRm9ybUFwaUNsaWVudCwgVHJhbnNsYXRpb25DYXRlZ29yeSwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSwgTG9naW5SZXNwb25zZU1vZGVsLCBGb3JtVHlwZSB9IGZyb20gJy4uLy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJlaGVlci1iY2ItaW5zdGFuY2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vYmVoZWVyLWJjYi1pbnN0YW5jZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JlaGVlci1iY2ItaW5zdGFuY2UuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBCZWhlZXJCY2JJbnN0YW5jZUNvbXBvbmVudCB7XG5cbiAgcHVibGljIEZvcm1Mb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIEluc3RhbmNlTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIEJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbDogQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsO1xuICBwdWJsaWMgTG9hZGluZ0Zvcm06IGJvb2xlYW4gPSB0cnVlO1xuICBwdWJsaWMgTG9hZGluZ0luc3RhbmNlOiBib29sZWFuID0gdHJ1ZTtcblxuICBwdWJsaWMgRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsOiBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWw7XG5cbiAgQElucHV0KCkgc2V0IGlucHV0KHZhbHVlOiBCQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwpIHtcbiAgICB0aGlzLkJDQlByb2R1Y3RJbnN0YW5jZVZpZXdNb2RlbCA9IHZhbHVlO1xuICAgIHRoaXMuSW5zdGFuY2VMb2FkZWQgPSB0cnVlO1xuXG4gICAgdGhpcy5Mb2FkSW5zdGFuY2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgfVxuXG4gIHB1YmxpYyBMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLkxvYWRpbmdGb3JtIHx8IHRoaXMuTG9hZGluZ0luc3RhbmNlO1xyXG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIEZvcm1BcGlDbGllbnQ6IEZvcm1BcGlDbGllbnQsXG4gICAgcHVibGljIFRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcblxuICAgIHRoaXMuTG9hZEZvcm0oKTtcclxuICB9XG5cbiAgcHVibGljIFNhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5Mb2FkaW5nSW5zdGFuY2UgPSB0cnVlO1xuXG4gICAgdGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwuY3VzdG9tQ29ubmVjdElkID0gdGhpcy5CQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwuaWQ7XG4gICAgXG4gICAgdGhpcy5Gb3JtQXBpQ2xpZW50LnNhdmVGb3JtKHRoaXMuRmFicmlrYW50ZW5Gb3JtVmlld01vZGVsKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxuXG4gIHB1YmxpYyBMb2FkRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLkxvYWRpbmdGb3JtID0gdHJ1ZTtcblxuICAgIHZhciByZXF1ZXN0ID0gbmV3IEZhYnJpa2FudGVuRm9ybVJlcXVlc3RNb2RlbCgpO1xuXG4gICAgcmVxdWVzdC5mb3JtVHlwZSA9IEZvcm1UeXBlLkN1c3RvbUZvcm07XG5cbiAgICB0aGlzLkZvcm1BcGlDbGllbnQuZ2V0Rm9ybShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwgPSBtb2RlbDtcclxuICAgICAgdGhpcy5Mb2FkaW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLkZvcm1Mb2FkZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkSW5zdGFuY2UoKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxuXG4gIHB1YmxpYyBMb2FkSW5zdGFuY2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuRm9ybUxvYWRlZCAmJiB0aGlzLkluc3RhbmNlTG9hZGVkKSB7XG4gICAgICB0aGlzLkxvYWRpbmdJbnN0YW5jZSA9IHRydWU7XG5cbiAgICAgIHZhciByZXF1ZXN0ID0gbmV3IEZvcm1JbnN0YW5jZVJlcXVlc3RNb2RlbCgpO1xuXG4gICAgICByZXF1ZXN0LmN1c3RvbUNvbm5lY3RJZCA9IHRoaXMuQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsLmlkO1xuICAgICAgcmVxdWVzdC5mb3JtSWQgPSB0aGlzLkZhYnJpa2FudGVuRm9ybVZpZXdNb2RlbC5pZDtcbiAgICAgIHJlcXVlc3QubG9naW5SZXNwb25zZU1vZGVsID0gbmV3IExvZ2luUmVzcG9uc2VNb2RlbCh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jdXJyZW50VXNlclZhbHVlKTtcblxuICAgICAgdGhpcy5Gb3JtQXBpQ2xpZW50LmdldEZvcm1JbnN0YW5jZShyZXF1ZXN0KS5zdWJzY3JpYmUoKG1vZGVsOiBGb3JtSW5zdGFuY2VWaWV3TW9kZWwpID0+IHtcclxuXHJcbiAgICAgICAgdGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwuZm9ybUluc3RhbmNlSWQgPSBtb2RlbC5pZDtcclxuXHJcbiAgICAgICAgdmFyIGluc3RhbmNlcyA9IG1vZGVsLmZvcm1JbnB1dEluc3RhbmNlcztcclxuXHJcbiAgICAgICAgaWYgKGluc3RhbmNlcyAhPSBudWxsKSB7XHJcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluc3RhbmNlcy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgICAgICAgdmFyIGZvcm1jYXRzID0gdGhpcy5GYWJyaWthbnRlbkZvcm1WaWV3TW9kZWwuZm9ybUNhdGVnb3JpZXM7XHJcblxyXG4gICAgICAgICAgICBpZiAoZm9ybWNhdHMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZm9ybWNhdHMubGVuZ3RoOyBqKyspIHtcclxuXHJcbiAgICAgICAgICAgICAgICB2YXIgcm93cyA9IGZvcm1jYXRzW2pdLnJvd3M7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHJvd3MgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IHJvd3MubGVuZ3RoOyBrKyspIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlucHV0cyA9IHJvd3Nba10uaW5wdXRzO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRzICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBsID0gMDsgbCA8IGlucHV0cy5sZW5ndGg7IGwrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRzW2xdLmlkID09IGluc3RhbmNlc1tpXS5mb3JtSW5wdXRJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0c1tsXS52YWx1ZSA9IGluc3RhbmNlc1tpXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZ0luc3RhbmNlID0gZmFsc2U7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZGluZ0luc3RhbmNlID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cblxuICBwdWJsaWMgRG93bmxvYWRQREYoKTogdm9pZCB7XG4gICAgLy8gQ3JlYXRlSW5zdGFuY2VQREYoaW50IHBMYW5ndWFnZUlkLCBpbnQgcFBERlRlbXBsYXRlSWQsIGludCBwQkNCSW5zdGFuY2VJZClcbiAgICB2YXIgdXJsID0gXCIvRG93bmxvYWQvQ3JlYXRlSW5zdGFuY2VQREY/cExhbmd1YWdlSWQ9XCIgKyB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuQWN0aXZlTGFuZ3VhZ2UuaWQ7XHJcbiAgICB1cmwgKz0gXCImcFBERlRlbXBsYXRlSWQ9MVwiO1xyXG4gICAgdXJsICs9IFwiJnBCQ0JJbnN0YW5jZUlkPVwiICsgdGhpcy5CQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwuaWQ7XHJcblxyXG4gICAgd2luZG93Lm9wZW4odXJsLCBcIl9ibGFua1wiKTtcclxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiTG9hZGluZygpXCI+XG4gIDxhcHAtZmFiLWxvYWRlcj48L2FwcC1mYWItbG9hZGVyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhTG9hZGluZygpXCI+XG4gIDxkaXYgY2xhc3M9XCJkaXNwbGF5ZmxleFwiPlxuICAgIDxkaXYgY2xhc3M9XCJwcm9wIHByb3AtbmFtZVwiPlByb2R1Y3Q8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHJvcCBwcm9wLXZhbHVlXCI+XG4gICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuUHJvZHVjdCwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeS5OYW1lLCBCQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwucHJvZHVjdElkKSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImRpc3BsYXlmbGV4XCI+XG4gICAgPGRpdiBjbGFzcz1cInByb3AgcHJvcC1uYW1lXCI+RGF0dW08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicHJvcCBwcm9wLXZhbHVlXCI+XG4gICAgICB7eyBCQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwuZGF0ZVRpbWVNb2RpZmllZCB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGJyIC8+XG4gIDxiciAvPlxuICA8YnIgLz5cbiAgPGRpdj5cbiAgICA8ZGl2PlxuICAgICAgPHRhYmxlIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJib3JkZXItYm90dG9tXCIgY29sc3Bhbj1cIjJcIj5GaWx0ZXI8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsLmZpbHRlcnNcIj5cbiAgICAgICAgICA8dHIgKm5nSWY9XCJmaWx0ZXIuZmlsdGVyT3B0aW9ucy5sZW5ndGggPiAwXCIgY2xhc3M9XCJpbmZvLXJvd1wiPlxuICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZVZhbHVlKFRyYW5zbGF0aW9uQ2F0ZWdvcnkuRmlsdGVyLCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk5hbWUsIGZpbHRlci5maWx0ZXJJZCkgfX1cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpbHRlcm9wdGlvbiBvZiBmaWx0ZXIuZmlsdGVyT3B0aW9uc1wiIGNsYXNzPVwidmFsdWUtY2VsbFwiPlxuICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5GaWx0ZXJPcHRpb24sIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnkuTmFtZSwgZmlsdGVyb3B0aW9uLmZpbHRlck9wdGlvbklkKSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3RhYmxlPlxuICAgICAgPGJyIC8+XG4gICAgICA8dGFibGUgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1ib3R0b21cIiBjb2xzcGFuPVwiMlwiPlJhbmdlIElucHV0PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmFuZ2VpbnB1dCBvZiBCQ0JQcm9kdWN0SW5zdGFuY2VWaWV3TW9kZWwucmFuZ2VJbnB1dHNcIj5cbiAgICAgICAgICA8dHIgKm5nSWY9XCJyYW5nZWlucHV0LnZhbHVlICE9IG51bGxcIiBjbGFzcz1cImluZm8tcm93XCI+XG4gICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5SYW5nZUlucHV0LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk5hbWUsIHJhbmdlaW5wdXQucmFuZ2VJbnB1dElkKSB9fVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cInZhbHVlLWNlbGxcIj5cbiAgICAgICAgICAgICAge3sgcmFuZ2VpbnB1dC52YWx1ZSB9fVxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdGFibGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2PlxuICAgICAgPGFwcC1mYWItZm9ybSBbZm9ybV09XCJGYWJyaWthbnRlbkZvcm1WaWV3TW9kZWxcIj48L2FwcC1mYWItZm9ybT5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b24tcm93XCI+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlNhdmUoKVwiPlxuICAgICAgICAgIFNhdmVcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxiciAvPlxuICA8YnIgLz5cbiAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiRG93bmxvYWRQREYoKVwiPlxuICAgIERvd25sb2FkIFBERlxuICA8L2J1dHRvbj5cbiAgPGJyIC8+XG48L2Rpdj5cbiJdfQ==
40
+ args: [{ selector: 'app-beheer-bcb-instance', encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"BcbProductInstanceService.IsLoading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!BcbProductInstanceService.IsLoading()\">\n <div class=\"displayflex\">\n <div style=\"flex: auto;\">\n {{ TranslateService.GetActiveValue(TranslationCategory.Product, TranslationSubCategory.Name, BcbProductInstanceService.BCBProductInstanceViewModel.productId) }}\n </div>\n\n <div style=\"padding: 10px;\">\n <button mat-raised-button (click)=\"BcbProductInstanceService.SaveConfiguration(ChangeDetectorRef)\">\n Save\n </button>\n &nbsp;\n <button mat-raised-button (click)=\"BcbProductInstanceService.DownloadPDF(this.TranslateService.ActiveLanguage.id)\">\n Download PDF\n </button>\n &nbsp;\n <button mat-raised-button (click)=\"BcbProductInstanceService.UnselectBCBProductInstance()\">\n Terug\n </button>\n </div>\n </div>\n <div class=\"displayflex\">\n <div class=\"dividercolumn leftcol\">\n <mat-tab-group style=\"height: 100%;\">\n <mat-tab label=\"Configuratie\">\n <div class=\"filter-scroll-section\">\n <fab-filters-input></fab-filters-input>\n </div>\n </mat-tab>\n <mat-tab label=\"Info\">\n <app-fab-form [form]=\"BcbProductInstanceService.FabrikantenCustomFormViewModel\"></app-fab-form>\n </mat-tab>\n </mat-tab-group>\n </div>\n <div style=\"width: 50%;\">\n <ng-container *ngIf=\"!FabrikantenService.ShowVariants()\">\n <app-fab-svg-viewer></app-fab-svg-viewer>\n </ng-container>\n <ng-container *ngIf=\"FabrikantenService.ShowVariants()\">\n <div style=\"padding: 10px;\">\n Er zijn nog meerdere varianten van dit product die voldoen aan de huidige filter selectie. Vul meer filters om de selectie te specificeren.\n </div>\n </ng-container>\n </div>\n </div>\n</div>\n", styles: ["app-beheer-bcb-instance .displayflex{display:flex}app-beheer-bcb-instance .leftcol{padding:10px}app-beheer-bcb-instance .dividercolumn{width:50%;max-height:calc(100vH - 174px);overflow:auto}app-beheer-bcb-instance .filter-scroll-section{max-height:calc(100vH - 1px)}app-beheer-bcb-instance .filter-affects-sign{display:none}app-beheer-bcb-instance .affects-only-bestek{display:none}app-beheer-bcb-instance .svg-settings{top:80px!important;right:25px!important}app-beheer-bcb-instance .toolbar-button{display:none}app-beheer-bcb-instance .prop{font-size:20px;padding:5px;border-bottom:1px solid #000}app-beheer-bcb-instance .prop-name{width:200px}app-beheer-bcb-instance .prop-value{width:calc(100% - 220px)}app-beheer-bcb-instance .border-bottom{border-bottom:1px solid #000;font-size:20px;padding:4px}app-beheer-bcb-instance .form-button-row{display:none}app-beheer-bcb-instance .value-cell{text-align:right;padding-right:5px}app-beheer-bcb-instance .info-row:hover{background-color:#efefef}app-beheer-bcb-instance .button-row{padding-top:3px;text-align:right}app-beheer-bcb-instance app-fab-loader{position:fixed;background-color:#00000080;width:100%;top:0;left:0;height:100%}\n"] }]
41
+ }], ctorParameters: function () { return [{ type: i1.BcbProductInstanceService }, { type: i2.TranslateService }, { type: i3.FabrikantenService }, { type: i4.AuthenticationService }, { type: i0.ChangeDetectorRef }]; } });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLWJjYi1pbnN0YW5jZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1iY2ItaW5zdGFuY2UvYmVoZWVyLWJjYi1pbnN0YW5jZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1iY2ItaW5zdGFuY2UvYmVoZWVyLWJjYi1pbnN0YW5jZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFvQyxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUsvRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsc0JBQXNCLEVBQWdDLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFFM0gsTUFNYSwwQkFBMEI7SUFVNUI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQWJULElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsc0JBQXNCO1FBQy9CLE9BQU8sc0JBQXNCLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQ1MseUJBQW9ELEVBQ3BELGdCQUFrQyxFQUNsQyxrQkFBc0MsRUFDdEMscUJBQTRDLEVBQzVDLGlCQUFvQztRQUpwQyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFDN0MsQ0FBQzt3R0FmVSwwQkFBMEI7NEZBQTFCLDBCQUEwQiwrRENidkMsMjREQWlEQTs7U0RwQ2EsMEJBQTBCOzRGQUExQiwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0UseUJBQXlCLGlCQUdwQixpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25Jbml0LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGYWJyaWthbnRlblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mYWJyaWthbnRlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmNiUHJvZHVjdEluc3RhbmNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2JjYnByb2R1Y3RpbnN0YW5jZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRpb25DYXRlZ29yeSwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSwgTG9naW5SZXNwb25zZU1vZGVsLCBGb3JtVHlwZSB9IGZyb20gJy4uLy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJlaGVlci1iY2ItaW5zdGFuY2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vYmVoZWVyLWJjYi1pbnN0YW5jZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JlaGVlci1iY2ItaW5zdGFuY2UuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBCZWhlZXJCY2JJbnN0YW5jZUNvbXBvbmVudCB7XG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBCY2JQcm9kdWN0SW5zdGFuY2VTZXJ2aWNlOiBCY2JQcm9kdWN0SW5zdGFuY2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBGYWJyaWthbnRlblNlcnZpY2U6IEZhYnJpa2FudGVuU2VydmljZSxcbiAgICBwdWJsaWMgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXG4gICAgcHVibGljIENoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJCY2JQcm9kdWN0SW5zdGFuY2VTZXJ2aWNlLklzTG9hZGluZygpXCI+XG4gIDxhcHAtZmFiLWxvYWRlcj48L2FwcC1mYWItbG9hZGVyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhQmNiUHJvZHVjdEluc3RhbmNlU2VydmljZS5Jc0xvYWRpbmcoKVwiPlxuICA8ZGl2IGNsYXNzPVwiZGlzcGxheWZsZXhcIj5cbiAgICA8ZGl2IHN0eWxlPVwiZmxleDogYXV0bztcIj5cbiAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlVmFsdWUoVHJhbnNsYXRpb25DYXRlZ29yeS5Qcm9kdWN0LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5Lk5hbWUsIEJjYlByb2R1Y3RJbnN0YW5jZVNlcnZpY2UuQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsLnByb2R1Y3RJZCkgfX1cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nOiAxMHB4O1wiPlxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiQmNiUHJvZHVjdEluc3RhbmNlU2VydmljZS5TYXZlQ29uZmlndXJhdGlvbihDaGFuZ2VEZXRlY3RvclJlZilcIj5cbiAgICAgICAgU2F2ZVxuICAgICAgPC9idXR0b24+XG4gICAgICAmbmJzcDtcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkJjYlByb2R1Y3RJbnN0YW5jZVNlcnZpY2UuRG93bmxvYWRQREYodGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkFjdGl2ZUxhbmd1YWdlLmlkKVwiPlxuICAgICAgICBEb3dubG9hZCBQREZcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgJm5ic3A7XG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJCY2JQcm9kdWN0SW5zdGFuY2VTZXJ2aWNlLlVuc2VsZWN0QkNCUHJvZHVjdEluc3RhbmNlKClcIj5cbiAgICAgICAgVGVydWdcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImRpc3BsYXlmbGV4XCI+XG4gICAgPGRpdiBjbGFzcz1cImRpdmlkZXJjb2x1bW4gbGVmdGNvbFwiPlxuICAgICAgPG1hdC10YWItZ3JvdXAgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+XG4gICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiQ29uZmlndXJhdGllXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1zY3JvbGwtc2VjdGlvblwiPlxuICAgICAgICAgICAgPGZhYi1maWx0ZXJzLWlucHV0PjwvZmFiLWZpbHRlcnMtaW5wdXQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJJbmZvXCI+XG4gICAgICAgICAgPGFwcC1mYWItZm9ybSBbZm9ybV09XCJCY2JQcm9kdWN0SW5zdGFuY2VTZXJ2aWNlLkZhYnJpa2FudGVuQ3VzdG9tRm9ybVZpZXdNb2RlbFwiPjwvYXBwLWZhYi1mb3JtPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICA8L21hdC10YWItZ3JvdXA+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBzdHlsZT1cIndpZHRoOiA1MCU7XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIUZhYnJpa2FudGVuU2VydmljZS5TaG93VmFyaWFudHMoKVwiPlxuICAgICAgICA8YXBwLWZhYi1zdmctdmlld2VyPjwvYXBwLWZhYi1zdmctdmlld2VyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiRmFicmlrYW50ZW5TZXJ2aWNlLlNob3dWYXJpYW50cygpXCI+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nOiAxMHB4O1wiPlxuICAgICAgICAgIEVyIHppam4gbm9nIG1lZXJkZXJlIHZhcmlhbnRlbiB2YW4gZGl0IHByb2R1Y3QgZGllIHZvbGRvZW4gYWFuIGRlIGh1aWRpZ2UgZmlsdGVyIHNlbGVjdGllLiBWdWwgbWVlciBmaWx0ZXJzIG9tIGRlIHNlbGVjdGllIHRlIHNwZWNpZmljZXJlbi5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,58 +1,46 @@
1
1
  import { Component } from '@angular/core';
2
- import { CreateNewProjectRequestModel, GetConfigurationsRequestModel, LoginResponseModel, TranslationCategory, TranslationSubCategory } from '../../../swagger/SwaggerClient';
2
+ import { TranslationCategory, TranslationSubCategory } from '../../../swagger/SwaggerClient';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "../../../swagger/SwaggerClient";
4
+ import * as i1 from "../../../services/bcbproductinstance.service";
5
5
  import * as i2 from "../../../services/translate.service";
6
- import * as i3 from "../../../services/authentication.service";
7
- import * as i4 from "@angular/common";
8
- import * as i5 from "@angular/material/legacy-button";
9
- import * as i6 from "@angular/material/legacy-card";
10
- import * as i7 from "../beheer-nav/beheer-nav.component";
11
- import * as i8 from "../../../components/fab-loader/fab-loader.component";
12
- import * as i9 from "../beheer-project/beheer-project.component";
6
+ import * as i3 from "../../../services/fabrikanten.service";
7
+ import * as i4 from "../../../services/authentication.service";
8
+ import * as i5 from "@angular/router";
9
+ import * as i6 from "@angular/common";
10
+ import * as i7 from "@angular/material/legacy-button";
11
+ import * as i8 from "@angular/material/legacy-card";
12
+ import * as i9 from "../beheer-nav/beheer-nav.component";
13
+ import * as i10 from "../../../components/fab-loader/fab-loader.component";
14
+ import * as i11 from "../beheer-project/beheer-project.component";
13
15
  class BeheerConfiguratorComponent {
14
- ConfiguratorApiClient;
16
+ BcbProductInstanceService;
15
17
  TranslateService;
18
+ FabrikantenService;
16
19
  authenticationService;
20
+ ActivatedRoute;
17
21
  ChangeDetectorRef;
18
- Loading = true;
19
- ConfigurationsViewModel;
20
- ProjectViewModel = null;
21
22
  get TranslationCategory() {
22
23
  return TranslationCategory;
23
24
  }
24
25
  get TranslationSubCategory() {
25
26
  return TranslationSubCategory;
26
27
  }
27
- constructor(ConfiguratorApiClient, TranslateService, authenticationService, ChangeDetectorRef) {
28
- this.ConfiguratorApiClient = ConfiguratorApiClient;
28
+ constructor(BcbProductInstanceService, TranslateService, FabrikantenService, authenticationService, ActivatedRoute, ChangeDetectorRef) {
29
+ this.BcbProductInstanceService = BcbProductInstanceService;
29
30
  this.TranslateService = TranslateService;
31
+ this.FabrikantenService = FabrikantenService;
30
32
  this.authenticationService = authenticationService;
33
+ this.ActivatedRoute = ActivatedRoute;
31
34
  this.ChangeDetectorRef = ChangeDetectorRef;
35
+ this.FabrikantenService.ForceUpdate2D = true;
32
36
  }
33
37
  ngOnInit() {
34
38
  this.TranslateService.LoadTranslations(this.ChangeDetectorRef, null, undefined);
35
- this.LoadConfigurations();
36
- }
37
- SelectProject(project) {
38
- this.ProjectViewModel = project;
39
- }
40
- DeleteProject(project) {
41
- //this.ProjectViewModel = project;
42
- }
43
- CreateProject() {
44
- this.Loading = true;
45
- var request = new CreateNewProjectRequestModel();
46
- request.loginResponseModel = new LoginResponseModel(this.authenticationService.currentUserValue);
47
- this.ConfiguratorApiClient.createNewProject(request).subscribe(() => {
48
- this.LoadConfigurations();
49
- }, (error) => {
50
- alert('An unexpected error occured');
51
- this.Loading = false;
52
- });
39
+ this.BcbProductInstanceService.Init();
40
+ this.FabrikantenService.LoadFabrikantenViewModel(this.ChangeDetectorRef, this.ActivatedRoute);
53
41
  }
54
42
  IsLoading() {
55
- if (this.Loading) {
43
+ if (this.BcbProductInstanceService.IsLoading()) {
56
44
  return true;
57
45
  }
58
46
  if (this.TranslateService.Loading) {
@@ -60,24 +48,12 @@ class BeheerConfiguratorComponent {
60
48
  }
61
49
  return false;
62
50
  }
63
- LoadConfigurations() {
64
- this.Loading = true;
65
- var request = new GetConfigurationsRequestModel();
66
- request.loginResponseModel = new LoginResponseModel(this.authenticationService.currentUserValue);
67
- this.ConfiguratorApiClient.getConfigurations(request).subscribe((model) => {
68
- this.ConfigurationsViewModel = model;
69
- this.Loading = false;
70
- }, (error) => {
71
- alert('An unexpected error occured');
72
- this.Loading = false;
73
- });
74
- }
75
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerConfiguratorComponent, deps: [{ token: i1.ConfiguratorApiClient }, { token: i2.TranslateService }, { token: i3.AuthenticationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
76
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BeheerConfiguratorComponent, selector: "app-beheer-configurator", ngImport: i0, template: "<app-beheer-nav></app-beheer-nav>\n\n<div *ngIf=\"IsLoading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!IsLoading()\" class=\"main-container\">\n <mat-card *ngIf=\"ProjectViewModel == null\">\n <mat-card-content>\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" style=\"width: 20px;\"><b>Id</b></td>\n <td class=\"border-bottom\"><b>Name</b></td>\n <td class=\"border-bottom\"></td>\n <td></td>\n </tr>\n <tr *ngFor=\"let project of ConfigurationsViewModel.projects\">\n <td class=\"selectable\" (click)=\"SelectProject(project)\">{{ project.id }}</td>\n <td class=\"selectable\" (click)=\"SelectProject(project)\">\n {{ project.name }}\n </td>\n <td class=\"selectable\" (click)=\"SelectProject(project)\">\n {{ project.lastModified }}\n </td>\n <td style=\"width: 150px;\">\n <button mat-raised-button (click)=\"DeleteProject(project)\" style=\"width: 100%;\">\n Verwijderen\n </button>\n </td>\n </tr>\n </table>\n <br />\n <button mat-raised-button (click)=\"CreateProject()\">\n Nieuw\n </button>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngIf=\"ProjectViewModel != null\">\n <mat-card-content>\n <app-beheer-project [input]=\"ProjectViewModel\"></app-beheer-project>\n <br />\n <br />\n <br />\n <div>\n <button mat-raised-button (click)=\"SelectProject(null)\">\n Terug\n </button>\n </div>\n\n </mat-card-content>\n </mat-card>\n</div>\n", styles: [".main-container{padding:10px}.border-bottom{border-bottom:1px solid #000}.selectable{cursor:pointer}.selectable:hover{background-color:#f0f0f0}.displayflex{display:flex}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i6.MatLegacyCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i7.BeheerNavComponent, selector: "app-beheer-nav" }, { kind: "component", type: i8.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i9.BeheerProjectComponent, selector: "app-beheer-project", inputs: ["input"] }] });
51
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerConfiguratorComponent, deps: [{ token: i1.BcbProductInstanceService }, { token: i2.TranslateService }, { token: i3.FabrikantenService }, { token: i4.AuthenticationService }, { token: i5.ActivatedRoute }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
52
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: BeheerConfiguratorComponent, selector: "app-beheer-configurator", ngImport: i0, template: "<app-beheer-nav></app-beheer-nav>\n\n<div *ngIf=\"IsLoading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!IsLoading()\" class=\"main-container\">\n <mat-card *ngIf=\"BcbProductInstanceService.ProjectViewModel == null\">\n <mat-card-content>\n\n <h1>Projects</h1>\n\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" style=\"width: 20px;\"><b>Id</b></td>\n <td class=\"border-bottom\"><b>Name</b></td>\n <td class=\"border-bottom\"></td>\n <td class=\"border-bottom\"></td>\n </tr>\n <tr *ngFor=\"let project of BcbProductInstanceService.ConfigurationsViewModel.projects\">\n <td class=\"selectable\" (click)=\"BcbProductInstanceService.SelectProject(project)\">{{ project.id }}</td>\n <td class=\"selectable\" (click)=\"BcbProductInstanceService.SelectProject(project)\">\n {{ project.name }}\n </td>\n <td class=\"selectable\" (click)=\"BcbProductInstanceService.SelectProject(project)\">\n {{ project.lastModified }}\n </td>\n <td style=\"width: 150px;\">\n <button mat-raised-button (click)=\"BcbProductInstanceService.DeleteProject(project)\" style=\"width: 100%;\">\n Verwijderen\n </button>\n </td>\n </tr>\n </table>\n <br />\n <button mat-raised-button (click)=\"BcbProductInstanceService.CreateProject()\">\n Nieuw\n </button>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngIf=\"BcbProductInstanceService.ProjectViewModel != null\">\n <mat-card-content>\n <app-beheer-project></app-beheer-project>\n </mat-card-content>\n </mat-card>\n</div>\n", styles: [".main-container{padding:10px}.border-bottom{border-bottom:1px solid #000}.selectable{cursor:pointer}.selectable:hover{background-color:#f0f0f0}.displayflex{display:flex}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.MatLegacyButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatLegacyCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i8.MatLegacyCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i9.BeheerNavComponent, selector: "app-beheer-nav" }, { kind: "component", type: i10.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i11.BeheerProjectComponent, selector: "app-beheer-project" }] });
77
53
  }
78
54
  export { BeheerConfiguratorComponent };
79
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: BeheerConfiguratorComponent, decorators: [{
80
56
  type: Component,
81
- args: [{ selector: 'app-beheer-configurator', template: "<app-beheer-nav></app-beheer-nav>\n\n<div *ngIf=\"IsLoading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!IsLoading()\" class=\"main-container\">\n <mat-card *ngIf=\"ProjectViewModel == null\">\n <mat-card-content>\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" style=\"width: 20px;\"><b>Id</b></td>\n <td class=\"border-bottom\"><b>Name</b></td>\n <td class=\"border-bottom\"></td>\n <td></td>\n </tr>\n <tr *ngFor=\"let project of ConfigurationsViewModel.projects\">\n <td class=\"selectable\" (click)=\"SelectProject(project)\">{{ project.id }}</td>\n <td class=\"selectable\" (click)=\"SelectProject(project)\">\n {{ project.name }}\n </td>\n <td class=\"selectable\" (click)=\"SelectProject(project)\">\n {{ project.lastModified }}\n </td>\n <td style=\"width: 150px;\">\n <button mat-raised-button (click)=\"DeleteProject(project)\" style=\"width: 100%;\">\n Verwijderen\n </button>\n </td>\n </tr>\n </table>\n <br />\n <button mat-raised-button (click)=\"CreateProject()\">\n Nieuw\n </button>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngIf=\"ProjectViewModel != null\">\n <mat-card-content>\n <app-beheer-project [input]=\"ProjectViewModel\"></app-beheer-project>\n <br />\n <br />\n <br />\n <div>\n <button mat-raised-button (click)=\"SelectProject(null)\">\n Terug\n </button>\n </div>\n\n </mat-card-content>\n </mat-card>\n</div>\n", styles: [".main-container{padding:10px}.border-bottom{border-bottom:1px solid #000}.selectable{cursor:pointer}.selectable:hover{background-color:#f0f0f0}.displayflex{display:flex}\n"] }]
82
- }], ctorParameters: function () { return [{ type: i1.ConfiguratorApiClient }, { type: i2.TranslateService }, { type: i3.AuthenticationService }, { type: i0.ChangeDetectorRef }]; } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1jb25maWd1cmF0b3IvYmVoZWVyLWNvbmZpZ3VyYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1jb25maWd1cmF0b3IvYmVoZWVyLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUdyRSxPQUFPLEVBQW9CLDRCQUE0QixFQUFxSCw2QkFBNkIsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7Ozs7OztBQUVuVCxNQUthLDJCQUEyQjtJQWVsQjtJQUNYO0lBQ0E7SUFDQTtJQWpCRixPQUFPLEdBQVksSUFBSSxDQUFDO0lBRXhCLHVCQUF1QixDQUEwQjtJQUVqRCxnQkFBZ0IsR0FBNEIsSUFBSSxDQUFDO0lBRXhELElBQVcsbUJBQW1CO1FBQzVCLE9BQU8sbUJBQW1CLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsc0JBQXNCO1FBQy9CLE9BQU8sc0JBQXNCLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQW9CLHFCQUE0QyxFQUN2RCxnQkFBa0MsRUFDbEMscUJBQTRDLEVBQzVDLGlCQUFvQztRQUh6QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQ3ZELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO0lBRTdDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUlNLGFBQWEsQ0FBQyxPQUF5QjtRQUM1QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxhQUFhLENBQUMsT0FBeUI7UUFDNUMsa0NBQWtDO0lBQ3BDLENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBRXBCLElBQUksT0FBTyxHQUFHLElBQUksNEJBQTRCLEVBQUUsQ0FBQztRQUVqRCxPQUFPLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVqRyxJQUFJLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNsRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM1QixDQUFDLEVBQUUsQ0FBQyxLQUFlLEVBQUUsRUFBRTtZQUNyQixLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUVyQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7WUFDakMsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUVwQixJQUFJLE9BQU8sR0FBRyxJQUFJLDZCQUE2QixFQUFFLENBQUM7UUFFbEQsT0FBTyxDQUFDLGtCQUFrQixHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFakcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQThCLEVBQUUsRUFBRTtZQUNqRyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUMsRUFBRSxDQUFDLEtBQWUsRUFBRSxFQUFFO1lBQ3JCLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBRXJDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0FoRlUsMkJBQTJCOzRGQUEzQiwyQkFBMkIsK0RDVnhDLHFwREFxREE7O1NEM0NhLDJCQUEyQjs0RkFBM0IsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb2plY3RWaWV3TW9kZWwsIENyZWF0ZU5ld1Byb2plY3RSZXF1ZXN0TW9kZWwsIERlbGV0ZUJDQlByb2R1Y3RJbnN0YW5jZVJlcXVlc3RNb2RlbCwgQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsLCBDb25maWd1cmF0b3JBcGlDbGllbnQsIENvbmZpZ3VyYXRpb25zVmlld01vZGVsLCBHZXRDb25maWd1cmF0aW9uc1JlcXVlc3RNb2RlbCwgTG9naW5SZXNwb25zZU1vZGVsLCBUcmFuc2xhdGlvbkNhdGVnb3J5LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5IH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJlaGVlci1jb25maWd1cmF0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vYmVoZWVyLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JlaGVlci1jb25maWd1cmF0b3IuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBCZWhlZXJDb25maWd1cmF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgcHVibGljIENvbmZpZ3VyYXRpb25zVmlld01vZGVsOiBDb25maWd1cmF0aW9uc1ZpZXdNb2RlbDtcblxuICBwdWJsaWMgUHJvamVjdFZpZXdNb2RlbDogUHJvamVjdFZpZXdNb2RlbCB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgQ29uZmlndXJhdG9yQXBpQ2xpZW50OiBDb25maWd1cmF0b3JBcGlDbGllbnQsXG4gICAgcHVibGljIFRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHVibGljIGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICAgIHB1YmxpYyBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcblxyXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuVHJhbnNsYXRlU2VydmljZS5Mb2FkVHJhbnNsYXRpb25zKHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYsIG51bGwsIHVuZGVmaW5lZCk7XHJcbiAgICB0aGlzLkxvYWRDb25maWd1cmF0aW9ucygpO1xyXG4gIH1cblxuIFxuXG4gIHB1YmxpYyBTZWxlY3RQcm9qZWN0KHByb2plY3Q6IFByb2plY3RWaWV3TW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLlByb2plY3RWaWV3TW9kZWwgPSBwcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIERlbGV0ZVByb2plY3QocHJvamVjdDogUHJvamVjdFZpZXdNb2RlbCk6IHZvaWQge1xuICAgIC8vdGhpcy5Qcm9qZWN0Vmlld01vZGVsID0gcHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBDcmVhdGVQcm9qZWN0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBDcmVhdGVOZXdQcm9qZWN0UmVxdWVzdE1vZGVsKCk7XHJcblxyXG4gICAgcmVxdWVzdC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xyXG5cclxuICAgIHRoaXMuQ29uZmlndXJhdG9yQXBpQ2xpZW50LmNyZWF0ZU5ld1Byb2plY3QocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5Mb2FkQ29uZmlndXJhdGlvbnMoKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XG5cbiAgcHVibGljIElzTG9hZGluZygpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5Mb2FkaW5nKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cblxuICAgIGlmICh0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuTG9hZGluZykge1xuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxuXG4gIHByaXZhdGUgTG9hZENvbmZpZ3VyYXRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgR2V0Q29uZmlndXJhdGlvbnNSZXF1ZXN0TW9kZWwoKTtcclxuXHJcbiAgICByZXF1ZXN0LmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcblxyXG4gICAgdGhpcy5Db25maWd1cmF0b3JBcGlDbGllbnQuZ2V0Q29uZmlndXJhdGlvbnMocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogQ29uZmlndXJhdGlvbnNWaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5Db25maWd1cmF0aW9uc1ZpZXdNb2RlbCA9IG1vZGVsO1xyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XG59XG4iLCI8YXBwLWJlaGVlci1uYXY+PC9hcHAtYmVoZWVyLW5hdj5cblxuPGRpdiAqbmdJZj1cIklzTG9hZGluZygpXCI+XG4gIDxhcHAtZmFiLWxvYWRlcj48L2FwcC1mYWItbG9hZGVyPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhSXNMb2FkaW5nKClcIiBjbGFzcz1cIm1haW4tY29udGFpbmVyXCI+XG4gIDxtYXQtY2FyZCAqbmdJZj1cIlByb2plY3RWaWV3TW9kZWwgPT0gbnVsbFwiPlxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgPHRhYmxlIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJib3JkZXItYm90dG9tXCIgc3R5bGU9XCJ3aWR0aDogMjBweDtcIj48Yj5JZDwvYj48L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1ib3R0b21cIj48Yj5OYW1lPC9iPjwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyLWJvdHRvbVwiPjwvdGQ+XG4gICAgICAgICAgPHRkPjwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcHJvamVjdCBvZiBDb25maWd1cmF0aW9uc1ZpZXdNb2RlbC5wcm9qZWN0c1wiPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInNlbGVjdGFibGVcIiAoY2xpY2spPVwiU2VsZWN0UHJvamVjdChwcm9qZWN0KVwiPnt7IHByb2plY3QuaWQgfX08L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cInNlbGVjdGFibGVcIiAoY2xpY2spPVwiU2VsZWN0UHJvamVjdChwcm9qZWN0KVwiPlxuICAgICAgICAgICAge3sgcHJvamVjdC5uYW1lIH19XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJzZWxlY3RhYmxlXCIgKGNsaWNrKT1cIlNlbGVjdFByb2plY3QocHJvamVjdClcIj5cbiAgICAgICAgICAgIHt7IHByb2plY3QubGFzdE1vZGlmaWVkIH19XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgc3R5bGU9XCJ3aWR0aDogMTUwcHg7XCI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJEZWxldGVQcm9qZWN0KHByb2plY3QpXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIj5cbiAgICAgICAgICAgICAgVmVyd2lqZGVyZW5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RhYmxlPlxuICAgICAgPGJyIC8+XG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJDcmVhdGVQcm9qZWN0KClcIj5cbiAgICAgICAgTmlldXdcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cblxuICA8bWF0LWNhcmQgKm5nSWY9XCJQcm9qZWN0Vmlld01vZGVsICE9IG51bGxcIj5cbiAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgIDxhcHAtYmVoZWVyLXByb2plY3QgW2lucHV0XT1cIlByb2plY3RWaWV3TW9kZWxcIj48L2FwcC1iZWhlZXItcHJvamVjdD5cbiAgICAgIDxiciAvPlxuICAgICAgPGJyIC8+XG4gICAgICA8YnIgLz5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIlNlbGVjdFByb2plY3QobnVsbClcIj5cbiAgICAgICAgICBUZXJ1Z1xuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8L21hdC1jYXJkPlxuPC9kaXY+XG4iXX0=
57
+ args: [{ selector: 'app-beheer-configurator', template: "<app-beheer-nav></app-beheer-nav>\n\n<div *ngIf=\"IsLoading()\">\n <app-fab-loader></app-fab-loader>\n</div>\n\n<div *ngIf=\"!IsLoading()\" class=\"main-container\">\n <mat-card *ngIf=\"BcbProductInstanceService.ProjectViewModel == null\">\n <mat-card-content>\n\n <h1>Projects</h1>\n\n <table style=\"width: 100%;\">\n <tr>\n <td class=\"border-bottom\" style=\"width: 20px;\"><b>Id</b></td>\n <td class=\"border-bottom\"><b>Name</b></td>\n <td class=\"border-bottom\"></td>\n <td class=\"border-bottom\"></td>\n </tr>\n <tr *ngFor=\"let project of BcbProductInstanceService.ConfigurationsViewModel.projects\">\n <td class=\"selectable\" (click)=\"BcbProductInstanceService.SelectProject(project)\">{{ project.id }}</td>\n <td class=\"selectable\" (click)=\"BcbProductInstanceService.SelectProject(project)\">\n {{ project.name }}\n </td>\n <td class=\"selectable\" (click)=\"BcbProductInstanceService.SelectProject(project)\">\n {{ project.lastModified }}\n </td>\n <td style=\"width: 150px;\">\n <button mat-raised-button (click)=\"BcbProductInstanceService.DeleteProject(project)\" style=\"width: 100%;\">\n Verwijderen\n </button>\n </td>\n </tr>\n </table>\n <br />\n <button mat-raised-button (click)=\"BcbProductInstanceService.CreateProject()\">\n Nieuw\n </button>\n </mat-card-content>\n </mat-card>\n\n <mat-card *ngIf=\"BcbProductInstanceService.ProjectViewModel != null\">\n <mat-card-content>\n <app-beheer-project></app-beheer-project>\n </mat-card-content>\n </mat-card>\n</div>\n", styles: [".main-container{padding:10px}.border-bottom{border-bottom:1px solid #000}.selectable{cursor:pointer}.selectable:hover{background-color:#f0f0f0}.displayflex{display:flex}\n"] }]
58
+ }], ctorParameters: function () { return [{ type: i1.BcbProductInstanceService }, { type: i2.TranslateService }, { type: i3.FabrikantenService }, { type: i4.AuthenticationService }, { type: i5.ActivatedRoute }, { type: i0.ChangeDetectorRef }]; } });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1jb25maWd1cmF0b3IvYmVoZWVyLWNvbmZpZ3VyYXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci1jb25maWd1cmF0b3IvYmVoZWVyLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQU9yRSxPQUFPLEVBQW1QLG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFFOVUsTUFLYSwyQkFBMkI7SUFXN0I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBZFQsSUFBVyxtQkFBbUI7UUFDNUIsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxzQkFBc0IsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFDUyx5QkFBb0QsRUFDcEQsZ0JBQWtDLEVBQ2xDLGtCQUFzQyxFQUN0QyxxQkFBNEMsRUFDNUMsY0FBOEIsRUFDOUIsaUJBQW9DO1FBTHBDLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFDcEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDM0MsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDL0MsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUM5QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7d0dBcENVLDJCQUEyQjs0RkFBM0IsMkJBQTJCLCtEQ2R4Qyw4c0RBK0NBOztTRGpDYSwyQkFBMkI7NEZBQTNCLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENoYW5nZURldGVjdG9yUmVmLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBGYWJyaWthbnRlblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mYWJyaWthbnRlbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmNiUHJvZHVjdEluc3RhbmNlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2JjYnByb2R1Y3RpbnN0YW5jZS5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IFByb2plY3RWaWV3TW9kZWwsIENyZWF0ZU5ld1Byb2plY3RSZXF1ZXN0TW9kZWwsIERlbGV0ZVByb2plY3RSZXF1ZXN0TW9kZWwsIERlbGV0ZUJDQlByb2R1Y3RJbnN0YW5jZVJlcXVlc3RNb2RlbCwgQkNCUHJvZHVjdEluc3RhbmNlVmlld01vZGVsLCBDb25maWd1cmF0b3JBcGlDbGllbnQsIENvbmZpZ3VyYXRpb25zVmlld01vZGVsLCBHZXRDb25maWd1cmF0aW9uc1JlcXVlc3RNb2RlbCwgTG9naW5SZXNwb25zZU1vZGVsLCBUcmFuc2xhdGlvbkNhdGVnb3J5LCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5IH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWJlaGVlci1jb25maWd1cmF0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vYmVoZWVyLWNvbmZpZ3VyYXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JlaGVlci1jb25maWd1cmF0b3IuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBCZWhlZXJDb25maWd1cmF0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBCY2JQcm9kdWN0SW5zdGFuY2VTZXJ2aWNlOiBCY2JQcm9kdWN0SW5zdGFuY2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBUcmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHB1YmxpYyBGYWJyaWthbnRlblNlcnZpY2U6IEZhYnJpa2FudGVuU2VydmljZSxcbiAgICBwdWJsaWMgYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXG4gICAgcHVibGljIEFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwdWJsaWMgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5GYWJyaWthbnRlblNlcnZpY2UuRm9yY2VVcGRhdGUyRCA9IHRydWU7XHJcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkxvYWRUcmFuc2xhdGlvbnModGhpcy5DaGFuZ2VEZXRlY3RvclJlZiwgbnVsbCwgdW5kZWZpbmVkKTtcclxuICAgIHRoaXMuQmNiUHJvZHVjdEluc3RhbmNlU2VydmljZS5Jbml0KCk7XHJcbiAgICB0aGlzLkZhYnJpa2FudGVuU2VydmljZS5Mb2FkRmFicmlrYW50ZW5WaWV3TW9kZWwodGhpcy5DaGFuZ2VEZXRlY3RvclJlZiwgdGhpcy5BY3RpdmF0ZWRSb3V0ZSk7XHJcbiAgfVxuXG4gIHB1YmxpYyBJc0xvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuQmNiUHJvZHVjdEluc3RhbmNlU2VydmljZS5Jc0xvYWRpbmcoKSkge1xuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XG5cbiAgICBpZiAodGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkxvYWRpbmcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cbn1cbiIsIjxhcHAtYmVoZWVyLW5hdj48L2FwcC1iZWhlZXItbmF2PlxuXG48ZGl2ICpuZ0lmPVwiSXNMb2FkaW5nKClcIj5cbiAgPGFwcC1mYWItbG9hZGVyPjwvYXBwLWZhYi1sb2FkZXI+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cIiFJc0xvYWRpbmcoKVwiIGNsYXNzPVwibWFpbi1jb250YWluZXJcIj5cbiAgPG1hdC1jYXJkICpuZ0lmPVwiQmNiUHJvZHVjdEluc3RhbmNlU2VydmljZS5Qcm9qZWN0Vmlld01vZGVsID09IG51bGxcIj5cbiAgICA8bWF0LWNhcmQtY29udGVudD5cblxuICAgICAgPGgxPlByb2plY3RzPC9oMT5cblxuICAgICAgPHRhYmxlIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJib3JkZXItYm90dG9tXCIgc3R5bGU9XCJ3aWR0aDogMjBweDtcIj48Yj5JZDwvYj48L3RkPlxuICAgICAgICAgIDx0ZCBjbGFzcz1cImJvcmRlci1ib3R0b21cIj48Yj5OYW1lPC9iPjwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyLWJvdHRvbVwiPjwvdGQ+XG4gICAgICAgICAgPHRkIGNsYXNzPVwiYm9yZGVyLWJvdHRvbVwiPjwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcHJvamVjdCBvZiBCY2JQcm9kdWN0SW5zdGFuY2VTZXJ2aWNlLkNvbmZpZ3VyYXRpb25zVmlld01vZGVsLnByb2plY3RzXCI+XG4gICAgICAgICAgPHRkIGNsYXNzPVwic2VsZWN0YWJsZVwiIChjbGljayk9XCJCY2JQcm9kdWN0SW5zdGFuY2VTZXJ2aWNlLlNlbGVjdFByb2plY3QocHJvamVjdClcIj57eyBwcm9qZWN0LmlkIH19PC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJzZWxlY3RhYmxlXCIgKGNsaWNrKT1cIkJjYlByb2R1Y3RJbnN0YW5jZVNlcnZpY2UuU2VsZWN0UHJvamVjdChwcm9qZWN0KVwiPlxuICAgICAgICAgICAge3sgcHJvamVjdC5uYW1lIH19XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQgY2xhc3M9XCJzZWxlY3RhYmxlXCIgKGNsaWNrKT1cIkJjYlByb2R1Y3RJbnN0YW5jZVNlcnZpY2UuU2VsZWN0UHJvamVjdChwcm9qZWN0KVwiPlxuICAgICAgICAgICAge3sgcHJvamVjdC5sYXN0TW9kaWZpZWQgfX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBzdHlsZT1cIndpZHRoOiAxNTBweDtcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkJjYlByb2R1Y3RJbnN0YW5jZVNlcnZpY2UuRGVsZXRlUHJvamVjdChwcm9qZWN0KVwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XG4gICAgICAgICAgICAgIFZlcndpamRlcmVuXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90YWJsZT5cbiAgICAgIDxiciAvPlxuICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiQmNiUHJvZHVjdEluc3RhbmNlU2VydmljZS5DcmVhdGVQcm9qZWN0KClcIj5cbiAgICAgICAgTmlldXdcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cblxuICA8bWF0LWNhcmQgKm5nSWY9XCJCY2JQcm9kdWN0SW5zdGFuY2VTZXJ2aWNlLlByb2plY3RWaWV3TW9kZWwgIT0gbnVsbFwiPlxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxuICAgICAgPGFwcC1iZWhlZXItcHJvamVjdD48L2FwcC1iZWhlZXItcHJvamVjdD5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gIDwvbWF0LWNhcmQ+XG48L2Rpdj5cbiJdfQ==