fabrikantencore 2.6.2 → 2.6.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 (96) hide show
  1. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-deeplink/beheer-deeplink.component.mjs +20 -14
  2. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-filter/beheer-filter.component.mjs +18 -15
  3. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-filters/beheer-filters.component.mjs +17 -50
  4. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-main/beheer-main.component.mjs +9 -6
  5. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-nav/beheer-nav.component.mjs +5 -4
  6. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.mjs +23 -18
  7. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.mjs +18 -12
  8. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.mjs +20 -11
  9. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.mjs +19 -32
  10. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.mjs +3 -6
  11. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-select-filter-dialog/beheer-select-filter-dialog.component.mjs +19 -17
  12. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.mjs +80 -68
  13. package/esm2020/src/app/modules/fabrikantencore/beheer/components/beheer-users/beheer-users.component.mjs +135 -7
  14. package/esm2020/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.mjs +11 -4
  15. package/esm2020/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.mjs +10 -3
  16. package/esm2020/src/app/modules/fabrikantencore/components/fab-category-navigator/fab-category-navigator.component.mjs +10 -3
  17. package/esm2020/src/app/modules/fabrikantencore/components/fab-category-tile/fab-category-tile.component.mjs +10 -3
  18. package/esm2020/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.mjs +10 -3
  19. package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour-dialog/fab-filter-colour-dialog.component.mjs +15 -3
  20. package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour.component.mjs +10 -3
  21. package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-colour-label/fab-filter-colour-label.component.mjs +10 -3
  22. package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.mjs +10 -3
  23. package/esm2020/src/app/modules/fabrikantencore/components/fab-filter-label/fab-filter-label.component.mjs +10 -3
  24. package/esm2020/src/app/modules/fabrikantencore/components/fab-filters/fab-filters.component.mjs +8 -4
  25. package/esm2020/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.mjs +10 -3
  26. package/esm2020/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.mjs +10 -3
  27. package/esm2020/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.mjs +10 -3
  28. package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product-info/fab-product-info.component.mjs +3 -2
  29. package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.mjs +10 -3
  30. package/esm2020/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.mjs +10 -3
  31. package/esm2020/src/app/modules/fabrikantencore/components/fab-product-select/fab-product-select.component.mjs +12 -5
  32. package/esm2020/src/app/modules/fabrikantencore/components/fab-product-tile/fab-product-tile.component.mjs +11 -5
  33. package/esm2020/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.mjs +13 -6
  34. package/esm2020/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.mjs +10 -3
  35. package/esm2020/src/app/modules/fabrikantencore/components/fab-select-bcbproduct/fab-select-bcbproduct.component.mjs +10 -3
  36. package/esm2020/src/app/modules/fabrikantencore/components/fab-start/fab-start.component.mjs +2 -3
  37. package/esm2020/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.mjs +5 -8
  38. package/esm2020/src/app/modules/fabrikantencore/components/fab-texture/fab-texture.component.mjs +10 -3
  39. package/esm2020/src/app/modules/fabrikantencore/fabrikantencore.module.mjs +14 -1
  40. package/esm2020/src/app/modules/fabrikantencore/helpers/auth.guard.mjs +2 -1
  41. package/esm2020/src/app/modules/fabrikantencore/services/authentication.service.mjs +25 -2
  42. package/esm2020/src/app/modules/fabrikantencore/services/fabrikanten.service.mjs +130 -89
  43. package/esm2020/src/app/modules/fabrikantencore/services/importsets.service.mjs +7 -5
  44. package/esm2020/src/app/modules/fabrikantencore/services/photo.service.mjs +3 -2
  45. package/esm2020/src/app/modules/fabrikantencore/services/products.service.mjs +12 -21
  46. package/esm2020/src/app/modules/fabrikantencore/services/svg.service.mjs +11 -6
  47. package/esm2020/src/app/modules/fabrikantencore/services/translate.service.mjs +17 -212
  48. package/esm2020/src/app/modules/fabrikantencore/swagger/SwaggerClient.mjs +1071 -535
  49. package/fesm2015/fabrikantencore.mjs +1759 -1114
  50. package/fesm2015/fabrikantencore.mjs.map +1 -1
  51. package/fesm2020/fabrikantencore.mjs +1750 -1100
  52. package/fesm2020/fabrikantencore.mjs.map +1 -1
  53. package/package.json +1 -1
  54. package/src/app/modules/fabrikantencore/beheer/components/beheer-deeplink/beheer-deeplink.component.d.ts +4 -1
  55. package/src/app/modules/fabrikantencore/beheer/components/beheer-filter/beheer-filter.component.d.ts +3 -1
  56. package/src/app/modules/fabrikantencore/beheer/components/beheer-filters/beheer-filters.component.d.ts +4 -4
  57. package/src/app/modules/fabrikantencore/beheer/components/beheer-main/beheer-main.component.d.ts +3 -1
  58. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-connect-rangeinput/beheer-products-connect-rangeinput.component.d.ts +3 -1
  59. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-ebo/beheer-products-ebo.component.d.ts +3 -1
  60. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-eigenschap/beheer-products-eigenschap.component.d.ts +3 -1
  61. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products-koppel-filteroption-dailog/beheer-products-koppel-filteroption-dailog.component.d.ts +3 -2
  62. package/src/app/modules/fabrikantencore/beheer/components/beheer-products/beheer-products.component.d.ts +0 -1
  63. package/src/app/modules/fabrikantencore/beheer/components/beheer-select-filter-dialog/beheer-select-filter-dialog.component.d.ts +3 -1
  64. package/src/app/modules/fabrikantencore/beheer/components/beheer-translate/beheer-translate.component.d.ts +17 -10
  65. package/src/app/modules/fabrikantencore/beheer/components/beheer-users/beheer-users.component.d.ts +18 -1
  66. package/src/app/modules/fabrikantencore/components/fab-actionmenu/fab-actionmenu.component.d.ts +3 -0
  67. package/src/app/modules/fabrikantencore/components/fab-breadcrumb/fab-breadcrumb.component.d.ts +3 -1
  68. package/src/app/modules/fabrikantencore/components/fab-category-navigator/fab-category-navigator.component.d.ts +3 -1
  69. package/src/app/modules/fabrikantencore/components/fab-category-tile/fab-category-tile.component.d.ts +3 -1
  70. package/src/app/modules/fabrikantencore/components/fab-filter/fab-filter.component.d.ts +3 -1
  71. package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour-dialog/fab-filter-colour-dialog.component.d.ts +2 -0
  72. package/src/app/modules/fabrikantencore/components/fab-filter-colour/fab-filter-colour.component.d.ts +3 -1
  73. package/src/app/modules/fabrikantencore/components/fab-filter-colour-label/fab-filter-colour-label.component.d.ts +3 -1
  74. package/src/app/modules/fabrikantencore/components/fab-filter-fold/fab-filter-fold.component.d.ts +3 -1
  75. package/src/app/modules/fabrikantencore/components/fab-filter-label/fab-filter-label.component.d.ts +3 -1
  76. package/src/app/modules/fabrikantencore/components/fab-filters/fab-filters.component.d.ts +2 -0
  77. package/src/app/modules/fabrikantencore/components/fab-filters-input/fab-filters-input.component.d.ts +3 -0
  78. package/src/app/modules/fabrikantencore/components/fab-multiselect/fab-multiselect.component.d.ts +3 -1
  79. package/src/app/modules/fabrikantencore/components/fab-multiselect-fold/fab-multiselect-fold.component.d.ts +3 -1
  80. package/src/app/modules/fabrikantencore/components/fab-product/fab-product.component.d.ts +3 -0
  81. package/src/app/modules/fabrikantencore/components/fab-product/fab-toebehoren/fab-toebehoren.component.d.ts +3 -0
  82. package/src/app/modules/fabrikantencore/components/fab-product-select/fab-product-select.component.d.ts +3 -0
  83. package/src/app/modules/fabrikantencore/components/fab-product-tile/fab-product-tile.component.d.ts +3 -1
  84. package/src/app/modules/fabrikantencore/components/fab-range-input/fab-range-input.component.d.ts +3 -1
  85. package/src/app/modules/fabrikantencore/components/fab-range-input-fold/fab-range-input-fold.component.d.ts +3 -1
  86. package/src/app/modules/fabrikantencore/components/fab-select-bcbproduct/fab-select-bcbproduct.component.d.ts +3 -0
  87. package/src/app/modules/fabrikantencore/components/fab-svg-viewer/fab-svg-viewer.component.d.ts +1 -2
  88. package/src/app/modules/fabrikantencore/components/fab-texture/fab-texture.component.d.ts +3 -0
  89. package/src/app/modules/fabrikantencore/fabrikantencore.module.d.ts +10 -9
  90. package/src/app/modules/fabrikantencore/services/authentication.service.d.ts +4 -0
  91. package/src/app/modules/fabrikantencore/services/fabrikanten.service.d.ts +10 -11
  92. package/src/app/modules/fabrikantencore/services/importsets.service.d.ts +3 -1
  93. package/src/app/modules/fabrikantencore/services/products.service.d.ts +3 -2
  94. package/src/app/modules/fabrikantencore/services/svg.service.d.ts +6 -1
  95. package/src/app/modules/fabrikantencore/services/translate.service.d.ts +4 -28
  96. package/src/app/modules/fabrikantencore/swagger/SwaggerClient.d.ts +395 -199
@@ -1,85 +1,100 @@
1
1
  import { Component } from '@angular/core';
2
- import { CreateExportRequest, ReadExportRequest } from '../../../swagger/SwaggerClient';
2
+ import { BeheerLanguagesSubCategoryViewModel, CreateExportRequest, ReadExportRequest, TranslationCategory, TranslationSubCategory } from '../../../swagger/SwaggerClient';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "../../../services/translate.service";
5
- import * as i2 from "../../../swagger/SwaggerClient";
4
+ import * as i1 from "../../../swagger/SwaggerClient";
5
+ import * as i2 from "../../../services/authentication.service";
6
6
  import * as i3 from "@angular/common";
7
7
  import * as i4 from "@angular/material/form-field";
8
- import * as i5 from "@angular/forms";
9
- import * as i6 from "@angular/material/button";
8
+ import * as i5 from "@angular/material/input";
9
+ import * as i6 from "@angular/forms";
10
10
  import * as i7 from "@angular/material/card";
11
- import * as i8 from "@angular/material/select";
12
- import * as i9 from "@angular/material/core";
13
- import * as i10 from "../beheer-nav/beheer-nav.component";
14
- import * as i11 from "../../../components/fab-loader/fab-loader.component";
15
- import * as i12 from "../../../components/fab-flag/fab-flag.component";
11
+ import * as i8 from "@angular/material/paginator";
12
+ import * as i9 from "@angular/material/select";
13
+ import * as i10 from "@angular/material/core";
14
+ import * as i11 from "../beheer-nav/beheer-nav.component";
15
+ import * as i12 from "../../../components/fab-loader/fab-loader.component";
16
+ import * as i13 from "../../../components/fab-flag/fab-flag.component";
16
17
  export class BeheerTranslateComponent {
17
- constructor(TranslateService, TranslateApiClient, ChangeDetectorRef) {
18
- this.TranslateService = TranslateService;
18
+ constructor(TranslateApiClient, authenticationService, ChangeDetectorRef) {
19
19
  this.TranslateApiClient = TranslateApiClient;
20
+ this.authenticationService = authenticationService;
20
21
  this.ChangeDetectorRef = ChangeDetectorRef;
22
+ this.Loading = true;
23
+ this.ActiveSubs = new Array();
24
+ this.pageIndex = 0;
25
+ this.amountLength = 0;
26
+ this.amountPerPage = 10;
27
+ this.SelectedBeheerLanguagesCategoryViewModel = null;
21
28
  }
22
- ngOnInit() {
23
- this.TranslateService.LoadTranslations(this.ChangeDetectorRef, null, null);
29
+ get TranslationCategory() {
30
+ return TranslationCategory;
24
31
  }
25
- GetCategoryEntries() {
26
- if (this.TranslateService.LanguagesViewModel?.languages != null && this.TranslateService.LanguagesViewModel.languages.length > 0 && this.TranslateService.LanguagesViewModel.languages[0].categoryEntries != null) {
27
- return this.TranslateService.LanguagesViewModel.languages[0].categoryEntries;
28
- }
29
- else {
30
- return new Array();
31
- ;
32
- }
32
+ get TranslationSubCategory() {
33
+ return TranslationSubCategory;
33
34
  }
34
- GetProductEntries() {
35
- if (this.TranslateService.LanguagesViewModel?.languages != null && this.TranslateService.LanguagesViewModel.languages.length > 0 && this.TranslateService.LanguagesViewModel.languages[0].productEntries != null) {
36
- return this.TranslateService.LanguagesViewModel.languages[0].productEntries;
37
- }
38
- else {
39
- return new Array();
40
- }
35
+ ngOnInit() {
36
+ this.LoadTranslations(this.ChangeDetectorRef);
41
37
  }
42
- GetFilterEntries() {
43
- if (this.TranslateService.LanguagesViewModel?.languages != null && this.TranslateService.LanguagesViewModel.languages.length > 0 && this.TranslateService.LanguagesViewModel.languages[0].filterEntries != null) {
44
- return this.TranslateService.LanguagesViewModel.languages[0].filterEntries;
45
- }
46
- else {
47
- return new Array();
48
- }
38
+ handlePageEvent(e) {
39
+ //this.pageEvent = e;
40
+ //this.length = e.length;
41
+ //this.pageSize = e.pageSize;
42
+ this.pageIndex = e.pageIndex;
43
+ this.RefreshPaginator();
49
44
  }
50
- GetFilterOptionEntries(filterid) {
51
- var array = new Array();
52
- if (this.TranslateService.LanguagesViewModel?.languages != null && this.TranslateService.LanguagesViewModel.languages.length > 0 && this.TranslateService.LanguagesViewModel.languages[0].filterOptionEntries != null) {
53
- for (var i = 0; i < this.TranslateService.LanguagesViewModel.languages[0].filterOptionEntries.length; i++) {
54
- if (this.TranslateService.LanguagesViewModel.languages[0].filterOptionEntries[i].filterId == filterid) {
55
- array.push(this.TranslateService.LanguagesViewModel.languages[0].filterOptionEntries[i]);
45
+ RefreshPaginator() {
46
+ this.amountLength = 0;
47
+ this.ActiveSubs = new Array();
48
+ var startIndex = this.pageIndex * this.amountPerPage;
49
+ var endIndex = (this.pageIndex + 1) * this.amountPerPage;
50
+ if (this.SelectedBeheerLanguagesCategoryViewModel != null) {
51
+ var subcats = this.SelectedBeheerLanguagesCategoryViewModel.subCategories;
52
+ if (subcats != null) {
53
+ for (var i = 0; i < subcats.length; i++) {
54
+ var keys = subcats[i].keys;
55
+ if (keys != null) {
56
+ var subcat = null;
57
+ for (var j = 0; j < keys.length; j++) {
58
+ if (this.amountLength >= startIndex && this.amountLength < endIndex) {
59
+ if (subcat == null) {
60
+ subcat = new BeheerLanguagesSubCategoryViewModel();
61
+ subcat.translationSubCategory = subcats[i].translationSubCategory;
62
+ subcat.html = subcats[i].html;
63
+ subcat.keys = new Array();
64
+ this.ActiveSubs.push(subcat);
65
+ }
66
+ if (subcat?.keys != null) {
67
+ subcat.keys.push(keys[j]);
68
+ }
69
+ }
70
+ this.amountLength++;
71
+ }
72
+ }
56
73
  }
57
74
  }
58
75
  }
59
- return array;
60
- }
61
- GetDescriptionEntries() {
62
- if (this.TranslateService.LanguagesViewModel?.languages != null && this.TranslateService.LanguagesViewModel.languages.length > 0 && this.TranslateService.LanguagesViewModel.languages[0].descriptionEntries != null) {
63
- return this.TranslateService.LanguagesViewModel.languages[0].descriptionEntries;
64
- }
65
- else {
66
- return new Array();
67
- }
68
76
  }
69
- GetAfbeeldingEntries() {
70
- if (this.TranslateService.LanguagesViewModel?.languages != null && this.TranslateService.LanguagesViewModel.languages.length > 0 && this.TranslateService.LanguagesViewModel.languages[0].afbeeldingEntries != null) {
71
- return this.TranslateService.LanguagesViewModel.languages[0].afbeeldingEntries;
72
- }
73
- else {
74
- return new Array();
75
- }
77
+ LoadTranslations(ChangeDetectorRef) {
78
+ this.Loading = true;
79
+ ChangeDetectorRef.detectChanges();
80
+ this.TranslateApiClient.getBeheerLanguagesViewModel(this.authenticationService.currentUserValue).subscribe((model) => {
81
+ this.BeheerLanguagesViewModel = model;
82
+ this.Loading = false;
83
+ }, (error) => {
84
+ if (error.status == 400)
85
+ alert(error.json());
86
+ else {
87
+ alert('An unexpected error occured');
88
+ alert(error);
89
+ }
90
+ this.Loading = false;
91
+ ChangeDetectorRef.detectChanges();
92
+ });
76
93
  }
77
94
  Export() {
78
95
  var request = new CreateExportRequest();
79
- this.TranslateService.Loading = true;
80
96
  this.TranslateApiClient.createExport(request).subscribe((model) => {
81
97
  alert(model.url);
82
- this.TranslateService.Loading = false;
83
98
  }, (error) => {
84
99
  if (error.status == 400)
85
100
  alert(error.json());
@@ -91,10 +106,7 @@ export class BeheerTranslateComponent {
91
106
  }
92
107
  Import() {
93
108
  var request = new ReadExportRequest();
94
- this.TranslateService.Loading = true;
95
109
  this.TranslateApiClient.readExport(request).subscribe(() => {
96
- this.TranslateService.Loading = false;
97
- this.TranslateService.LoadTranslations(this.ChangeDetectorRef, null, null);
98
110
  }, (error) => {
99
111
  if (error.status == 400)
100
112
  alert(error.json());
@@ -105,10 +117,10 @@ export class BeheerTranslateComponent {
105
117
  });
106
118
  }
107
119
  }
108
- BeheerTranslateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: BeheerTranslateComponent, deps: [{ token: i1.TranslateService }, { token: i2.TranslateApiClient }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
109
- BeheerTranslateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: BeheerTranslateComponent, selector: "app-beheer-translate", ngImport: i0, template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<app-fab-loader *ngIf=\"TranslateService.Loading\"></app-fab-loader>\r\n\r\n<div *ngIf=\"!TranslateService.Loading\">\r\n <mat-card class=\"main-bar\">\r\n <mat-card-content>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Category</mat-label>\r\n <mat-select [(ngModel)]=\"TranslateService.SelectedCategory\">\r\n <mat-option *ngFor=\"let cat of TranslateService.Categories\" [value]=\"cat\">\r\n {{cat}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-raised-button (click)=\"Export()\">\r\n Export\r\n </button>\r\n <button mat-raised-button (click)=\"Import()\">\r\n Import\r\n </button>\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <mat-card class=\"main\">\r\n <mat-card-content>\r\n <table class=\"full-width\">\r\n <ng-container *ngIf=\"TranslateService.GetActiveCategorie() != null\">\r\n <tr>\r\n <td colspan=\"2\" class=\"cat-row\">\r\n {{ TranslateService.GetActiveCategorie().name }}\r\n </td>\r\n <td class=\"cat-row\" *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let key of TranslateService.GetActiveCategorie().keys\">\r\n <td>{{ key.id }}</td>\r\n <td>{{ key.name }}</td>\r\n <td *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n {{ TranslateService.GetValue(language, TranslateService.GetActiveCategorie().name, key.name) }}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"TranslateService.SelectedCategory == 'Categories'\">\r\n <tr>\r\n <td colspan=\"2\" class=\"cat-row\">\r\n Categories\r\n </td>\r\n <td class=\"cat-row\" *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let cat of GetCategoryEntries()\">\r\n <td>{{ cat.categoryId }}</td>\r\n <td>{{ cat.categoryName }}</td>\r\n <td *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n {{ TranslateService.GetValueCategory(language, cat.categoryId) }}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"TranslateService.SelectedCategory == 'Products'\">\r\n <tr>\r\n <td colspan=\"2\" class=\"cat-row\">\r\n Products\r\n </td>\r\n <td class=\"cat-row\" *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let prod of GetProductEntries()\">\r\n <td>{{ prod.productId }}</td>\r\n <td>{{ prod.productName }}</td>\r\n <td *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n {{ TranslateService.GetValueProduct(language, prod.productId) }}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"TranslateService.SelectedCategory == 'Filter'\">\r\n <tr>\r\n <td colspan=\"2\" class=\"cat-row\">\r\n Filters\r\n </td>\r\n <td class=\"cat-row\" *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </tr>\r\n <ng-container *ngFor=\"let filter of GetFilterEntries()\">\r\n <tr>\r\n <td class=\"cat-row\">{{ filter.filterId }}</td>\r\n <td class=\"cat-row\">{{ filter.filterName }}</td>\r\n <td class=\"cat-row\" *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n {{ TranslateService.GetValueFilter(language, filter.filterId) }}\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let option of GetFilterOptionEntries(filter.filterId)\">\r\n <td>{{ option.filterOptionId }}</td>\r\n <td>{{ option.filterOptionName }}</td>\r\n <td *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n {{ TranslateService.GetValueFilterOption(language, option.filterOptionId) }}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"TranslateService.SelectedCategory == 'Description'\">\r\n <tr>\r\n <td colspan=\"2\" class=\"cat-row\">\r\n Description\r\n </td>\r\n <td class=\"cat-row\" *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let description of GetDescriptionEntries()\">\r\n <td>{{ description.bcbProductId }}</td>\r\n <td>{{ description.productName }}</td>\r\n <td *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n {{ TranslateService.GetValueDescription(language, description.bcbProductId) }}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"TranslateService.SelectedCategory == 'Afbeelding'\">\r\n <tr>\r\n <td colspan=\"2\" class=\"cat-row\">\r\n Afbeelding\r\n </td>\r\n <td class=\"cat-row\" *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let afbeelding of GetAfbeeldingEntries()\">\r\n <td>{{ afbeelding.bcbProductAfbeeldingId }}</td>\r\n <td>{{ afbeelding.productName }}</td>\r\n <td *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n {{ TranslateService.GetValueAfbeelding(language, afbeelding.bcbProductAfbeeldingId) }}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n</div>\r\n", styles: [".cat-row{font-weight:700;border-bottom:1px solid #000;padding-top:20px}.main{margin:20px;max-height:calc(100vH - 235px);overflow:auto}.main-bar{margin:20px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.MatButton, 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.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i7.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i10.BeheerNavComponent, selector: "app-beheer-nav" }, { kind: "component", type: i11.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i12.FabFlagComponent, selector: "fab-flag", inputs: ["country"] }] });
120
+ BeheerTranslateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: BeheerTranslateComponent, deps: [{ token: i1.TranslateApiClient }, { token: i2.AuthenticationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
121
+ BeheerTranslateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: BeheerTranslateComponent, selector: "app-beheer-translate", ngImport: i0, template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<app-fab-loader *ngIf=\"Loading\"></app-fab-loader>\r\n\r\n<div *ngIf=\"!Loading\">\r\n <div class=\"displayflex\">\r\n <div>\r\n <mat-card class=\"main-bar\">\r\n <mat-card-content>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Group</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedBeheerLanguagesCategoryViewModel\" (selectionChange)=\"RefreshPaginator()\">\r\n <mat-option *ngFor=\"let cat of BeheerLanguagesViewModel.categories\" [value]=\"cat\">\r\n {{ TranslationCategory[cat.translationCategory] }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<button mat-raised-button (click)=\"Export()\">\r\n Export\r\n </button>\r\n <button mat-raised-button (click)=\"Import()\">\r\n Import\r\n </button>-->\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n <mat-card class=\"main-bar flexauto\">\r\n <mat-card-content>\r\n <div class=\"max-height\">\r\n <div *ngIf=\"SelectedBeheerLanguagesCategoryViewModel != null\">\r\n <h1>{{ TranslationCategory[SelectedBeheerLanguagesCategoryViewModel.translationCategory] }}</h1>\r\n\r\n <table class=\"full-width\">\r\n <tr>\r\n <td colspan=\"2\" class=\"cat-row\"></td>\r\n <td class=\"cat-row\" *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </tr>\r\n\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <tr *ngFor=\"let key of subcat.keys\">\r\n <td>{{ TranslationSubCategory[subcat.translationSubCategory] }}</td>\r\n <td></td>\r\n <td *ngFor=\"let entry of key.entries\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n Translation\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"entry.value\">\r\n </mat-form-field>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n </div>\r\n <div>\r\n <mat-paginator #paginator\r\n (page)=\"handlePageEvent($event)\"\r\n [length]=\"amountLength\"\r\n [pageSize]=\"amountPerPage\"\r\n [showFirstLastButtons]=\"true\"\r\n [hidePageSize]=\"true\"\r\n [pageIndex]=\"pageIndex\"\r\n aria-label=\"Select page\">\r\n </mat-paginator>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n</div>\r\n", styles: [".cat-row{font-weight:700;border-bottom:1px solid #000;padding-top:20px}.displayflex{display:flex}.flexauto{flex:auto}.max-height{height:calc(100vH - 174px);overflow:auto}.fullwidth{width:100%}.main{margin:20px;max-height:calc(100vH - 235px);overflow:auto}.main-bar{margin:20px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i7.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i11.BeheerNavComponent, selector: "app-beheer-nav" }, { kind: "component", type: i12.FabLoaderComponent, selector: "app-fab-loader" }, { kind: "component", type: i13.FabFlagComponent, selector: "fab-flag", inputs: ["country"] }] });
110
122
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: BeheerTranslateComponent, decorators: [{
111
123
  type: Component,
112
- args: [{ selector: 'app-beheer-translate', template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<app-fab-loader *ngIf=\"TranslateService.Loading\"></app-fab-loader>\r\n\r\n<div *ngIf=\"!TranslateService.Loading\">\r\n <mat-card class=\"main-bar\">\r\n <mat-card-content>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Category</mat-label>\r\n <mat-select [(ngModel)]=\"TranslateService.SelectedCategory\">\r\n <mat-option *ngFor=\"let cat of TranslateService.Categories\" [value]=\"cat\">\r\n {{cat}}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <button mat-raised-button (click)=\"Export()\">\r\n Export\r\n </button>\r\n <button mat-raised-button (click)=\"Import()\">\r\n Import\r\n </button>\r\n </mat-card-content>\r\n </mat-card>\r\n\r\n <mat-card class=\"main\">\r\n <mat-card-content>\r\n <table class=\"full-width\">\r\n <ng-container *ngIf=\"TranslateService.GetActiveCategorie() != null\">\r\n <tr>\r\n <td colspan=\"2\" class=\"cat-row\">\r\n {{ TranslateService.GetActiveCategorie().name }}\r\n </td>\r\n <td class=\"cat-row\" *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let key of TranslateService.GetActiveCategorie().keys\">\r\n <td>{{ key.id }}</td>\r\n <td>{{ key.name }}</td>\r\n <td *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n {{ TranslateService.GetValue(language, TranslateService.GetActiveCategorie().name, key.name) }}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"TranslateService.SelectedCategory == 'Categories'\">\r\n <tr>\r\n <td colspan=\"2\" class=\"cat-row\">\r\n Categories\r\n </td>\r\n <td class=\"cat-row\" *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let cat of GetCategoryEntries()\">\r\n <td>{{ cat.categoryId }}</td>\r\n <td>{{ cat.categoryName }}</td>\r\n <td *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n {{ TranslateService.GetValueCategory(language, cat.categoryId) }}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"TranslateService.SelectedCategory == 'Products'\">\r\n <tr>\r\n <td colspan=\"2\" class=\"cat-row\">\r\n Products\r\n </td>\r\n <td class=\"cat-row\" *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let prod of GetProductEntries()\">\r\n <td>{{ prod.productId }}</td>\r\n <td>{{ prod.productName }}</td>\r\n <td *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n {{ TranslateService.GetValueProduct(language, prod.productId) }}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"TranslateService.SelectedCategory == 'Filter'\">\r\n <tr>\r\n <td colspan=\"2\" class=\"cat-row\">\r\n Filters\r\n </td>\r\n <td class=\"cat-row\" *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </tr>\r\n <ng-container *ngFor=\"let filter of GetFilterEntries()\">\r\n <tr>\r\n <td class=\"cat-row\">{{ filter.filterId }}</td>\r\n <td class=\"cat-row\">{{ filter.filterName }}</td>\r\n <td class=\"cat-row\" *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n {{ TranslateService.GetValueFilter(language, filter.filterId) }}\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let option of GetFilterOptionEntries(filter.filterId)\">\r\n <td>{{ option.filterOptionId }}</td>\r\n <td>{{ option.filterOptionName }}</td>\r\n <td *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n {{ TranslateService.GetValueFilterOption(language, option.filterOptionId) }}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"TranslateService.SelectedCategory == 'Description'\">\r\n <tr>\r\n <td colspan=\"2\" class=\"cat-row\">\r\n Description\r\n </td>\r\n <td class=\"cat-row\" *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let description of GetDescriptionEntries()\">\r\n <td>{{ description.bcbProductId }}</td>\r\n <td>{{ description.productName }}</td>\r\n <td *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n {{ TranslateService.GetValueDescription(language, description.bcbProductId) }}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <ng-container *ngIf=\"TranslateService.SelectedCategory == 'Afbeelding'\">\r\n <tr>\r\n <td colspan=\"2\" class=\"cat-row\">\r\n Afbeelding\r\n </td>\r\n <td class=\"cat-row\" *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </tr>\r\n <tr *ngFor=\"let afbeelding of GetAfbeeldingEntries()\">\r\n <td>{{ afbeelding.bcbProductAfbeeldingId }}</td>\r\n <td>{{ afbeelding.productName }}</td>\r\n <td *ngFor=\"let language of TranslateService.LanguagesViewModel.languages\">\r\n {{ TranslateService.GetValueAfbeelding(language, afbeelding.bcbProductAfbeeldingId) }}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </mat-card-content>\r\n </mat-card>\r\n</div>\r\n", styles: [".cat-row{font-weight:700;border-bottom:1px solid #000;padding-top:20px}.main{margin:20px;max-height:calc(100vH - 235px);overflow:auto}.main-bar{margin:20px}\n"] }]
113
- }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.TranslateApiClient }, { type: i0.ChangeDetectorRef }]; } });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQXdCLGlCQUFpQixFQUFrTyxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQU85VSxNQUFNLE9BQU8sd0JBQXdCO0lBRW5DLFlBQ1MsZ0JBQWtDLEVBQ2pDLGtCQUFzQyxFQUN0QyxpQkFBb0M7UUFGckMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNqQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7SUFBSSxDQUFDO0lBRW5ELFFBQVE7UUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU0sa0JBQWtCO1FBRXZCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FB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QUFHO2dCQUNyQixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7aUJBQ2pCO2dCQUNILEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUNyQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLE9BQU8sR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFckMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3pELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdFLENBQUMsRUFBRSxDQUFDLEtBQWUsRUFBRSxFQUFFO1lBQ3JCLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHO2dCQUNyQixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7aUJBQ2pCO2dCQUNILEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUNyQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7cUhBM0dVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLDREQ1RyQyw0a05BOElBOzJGRHJJYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0Usc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IENyZWF0ZUV4cG9ydFJlcXVlc3QsIENyZWF0ZUV4cG9ydFJlc3BvbnNlLCBSZWFkRXhwb3J0UmVxdWVzdCwgVHJhbnNsYXRlRW50cnlQcm9kdWN0Vmlld01vZGVsLCBUcmFuc2xhdGVFbnRyeUNhdGVnb3J5Vmlld01vZGVsLCBUcmFuc2xhdGVFbnRyeURlc2NyaXB0aW9uVmlld01vZGVsLCBUcmFuc2xhdGVFbnRyeUZpbHRlclZpZXdNb2RlbCwgVHJhbnNsYXRlRW50cnlGaWx0ZXJPcHRpb25WaWV3TW9kZWwsIFRyYW5zbGF0ZUFwaUNsaWVudCwgVHJhbnNsYXRlRW50cnlBZmJlZWxkaW5nVmlld01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWJlaGVlci10cmFuc2xhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iZWhlZXItdHJhbnNsYXRlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9iZWhlZXItdHJhbnNsYXRlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEJlaGVlclRyYW5zbGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIFRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIFRyYW5zbGF0ZUFwaUNsaWVudDogVHJhbnNsYXRlQXBpQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuVHJhbnNsYXRlU2VydmljZS5Mb2FkVHJhbnNsYXRpb25zKHRoaXMuQ2hhbmdlRGV0ZWN0b3JSZWYsIG51bGwsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldENhdGVnb3J5RW50cmllcygpOiBBcnJheTxUcmFuc2xhdGVFbnRyeUNhdGVnb3J5Vmlld01vZGVsPiB7XHJcblxyXG4gICAgaWYgKHRoaXMuVHJhbnNsYXRlU2VydmljZS5MYW5ndWFnZXNWaWV3TW9kZWw/Lmxhbmd1YWdlcyAhPSBudWxsICYmIHRoaXMuVHJhbnNsYXRlU2VydmljZS5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzLmxlbmd0aCA+IDAgJiYgdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNbMF0uY2F0ZWdvcnlFbnRyaWVzICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuVHJhbnNsYXRlU2VydmljZS5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzWzBdLmNhdGVnb3J5RW50cmllcztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmV3IEFycmF5PFRyYW5zbGF0ZUVudHJ5Q2F0ZWdvcnlWaWV3TW9kZWw+KCk7O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldFByb2R1Y3RFbnRyaWVzKCk6IEFycmF5PFRyYW5zbGF0ZUVudHJ5UHJvZHVjdFZpZXdNb2RlbD4ge1xyXG5cclxuICAgIGlmICh0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuTGFuZ3VhZ2VzVmlld01vZGVsPy5sYW5ndWFnZXMgIT0gbnVsbCAmJiB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlcy5sZW5ndGggPiAwICYmIHRoaXMuVHJhbnNsYXRlU2VydmljZS5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzWzBdLnByb2R1Y3RFbnRyaWVzICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuVHJhbnNsYXRlU2VydmljZS5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzWzBdLnByb2R1Y3RFbnRyaWVzO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgQXJyYXk8VHJhbnNsYXRlRW50cnlQcm9kdWN0Vmlld01vZGVsPigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIEdldEZpbHRlckVudHJpZXMoKTogQXJyYXk8VHJhbnNsYXRlRW50cnlGaWx0ZXJWaWV3TW9kZWw+IHtcclxuXHJcbiAgICBpZiAodGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkxhbmd1YWdlc1ZpZXdNb2RlbD8ubGFuZ3VhZ2VzICE9IG51bGwgJiYgdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXMubGVuZ3RoID4gMCAmJiB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1swXS5maWx0ZXJFbnRyaWVzICE9IG51bGwpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuVHJhbnNsYXRlU2VydmljZS5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzWzBdLmZpbHRlckVudHJpZXM7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIG5ldyBBcnJheTxUcmFuc2xhdGVFbnRyeUZpbHRlclZpZXdNb2RlbD4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRGaWx0ZXJPcHRpb25FbnRyaWVzKGZpbHRlcmlkOiBudW1iZXIpOiBBcnJheTxUcmFuc2xhdGVFbnRyeUZpbHRlck9wdGlvblZpZXdNb2RlbD4ge1xyXG4gICAgdmFyIGFycmF5ID0gbmV3IEFycmF5PFRyYW5zbGF0ZUVudHJ5RmlsdGVyT3B0aW9uVmlld01vZGVsPigpO1xyXG5cclxuICAgIGlmICh0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuTGFuZ3VhZ2VzVmlld01vZGVsPy5sYW5ndWFnZXMgIT0gbnVsbCAmJiB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlcy5sZW5ndGggPiAwICYmIHRoaXMuVHJhbnNsYXRlU2VydmljZS5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzWzBdLmZpbHRlck9wdGlvbkVudHJpZXMgIT0gbnVsbCkge1xyXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuVHJhbnNsYXRlU2VydmljZS5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzWzBdLmZpbHRlck9wdGlvbkVudHJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAodGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNbMF0uZmlsdGVyT3B0aW9uRW50cmllc1tpXS5maWx0ZXJJZCA9PSBmaWx0ZXJpZCkge1xyXG4gICAgICAgICAgYXJyYXkucHVzaCh0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1swXS5maWx0ZXJPcHRpb25FbnRyaWVzW2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYXJyYXk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgR2V0RGVzY3JpcHRpb25FbnRyaWVzKCk6IEFycmF5PFRyYW5zbGF0ZUVudHJ5RGVzY3JpcHRpb25WaWV3TW9kZWw+IHtcclxuXHJcbiAgICBpZiAodGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkxhbmd1YWdlc1ZpZXdNb2RlbD8ubGFuZ3VhZ2VzICE9IG51bGwgJiYgdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXMubGVuZ3RoID4gMCAmJiB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1swXS5kZXNjcmlwdGlvbkVudHJpZXMgIT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNbMF0uZGVzY3JpcHRpb25FbnRyaWVzO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgQXJyYXk8VHJhbnNsYXRlRW50cnlEZXNjcmlwdGlvblZpZXdNb2RlbD4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBHZXRBZmJlZWxkaW5nRW50cmllcygpOiBBcnJheTxUcmFuc2xhdGVFbnRyeUFmYmVlbGRpbmdWaWV3TW9kZWw+IHtcclxuXHJcbiAgICBpZiAodGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkxhbmd1YWdlc1ZpZXdNb2RlbD8ubGFuZ3VhZ2VzICE9IG51bGwgJiYgdGhpcy5UcmFuc2xhdGVTZXJ2aWNlLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXMubGVuZ3RoID4gMCAmJiB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1swXS5hZmJlZWxkaW5nRW50cmllcyAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1swXS5hZmJlZWxkaW5nRW50cmllcztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmV3IEFycmF5PFRyYW5zbGF0ZUVudHJ5QWZiZWVsZGluZ1ZpZXdNb2RlbD4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBFeHBvcnQoKTogdm9pZCB7XHJcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBDcmVhdGVFeHBvcnRSZXF1ZXN0KCk7XHJcbiAgICB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQuY3JlYXRlRXhwb3J0KHJlcXVlc3QpLnN1YnNjcmliZSgobW9kZWw6IENyZWF0ZUV4cG9ydFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGFsZXJ0KG1vZGVsLnVybCk7XHJcbiAgICAgIHRoaXMuVHJhbnNsYXRlU2VydmljZS5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGFsZXJ0KGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEltcG9ydCgpOiB2b2lkIHtcclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlYWRFeHBvcnRSZXF1ZXN0KCk7XHJcbiAgICB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5UcmFuc2xhdGVBcGlDbGllbnQucmVhZEV4cG9ydChyZXF1ZXN0KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLlRyYW5zbGF0ZVNlcnZpY2UuTG9hZFRyYW5zbGF0aW9ucyh0aGlzLkNoYW5nZURldGVjdG9yUmVmLCBudWxsLCBudWxsKTtcclxuICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgYWxlcnQoZXJyb3IuanNvbigpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgYWxlcnQoJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgIGFsZXJ0KGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGFwcC1iZWhlZXItbmF2PjwvYXBwLWJlaGVlci1uYXY+XHJcblxyXG48YXBwLWZhYi1sb2FkZXIgKm5nSWY9XCJUcmFuc2xhdGVTZXJ2aWNlLkxvYWRpbmdcIj48L2FwcC1mYWItbG9hZGVyPlxyXG5cclxuPGRpdiAqbmdJZj1cIiFUcmFuc2xhdGVTZXJ2aWNlLkxvYWRpbmdcIj5cclxuICA8bWF0LWNhcmQgY2xhc3M9XCJtYWluLWJhclwiPlxyXG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+Q2F0ZWdvcnk8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cIlRyYW5zbGF0ZVNlcnZpY2UuU2VsZWN0ZWRDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGNhdCBvZiBUcmFuc2xhdGVTZXJ2aWNlLkNhdGVnb3JpZXNcIiBbdmFsdWVdPVwiY2F0XCI+XHJcbiAgICAgICAgICAgIHt7Y2F0fX1cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkV4cG9ydCgpXCI+XHJcbiAgICAgICAgRXhwb3J0XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJJbXBvcnQoKVwiPlxyXG4gICAgICAgIEltcG9ydFxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuICA8L21hdC1jYXJkPlxyXG5cclxuICA8bWF0LWNhcmQgY2xhc3M9XCJtYWluXCI+XHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgPHRhYmxlIGNsYXNzPVwiZnVsbC13aWR0aFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJUcmFuc2xhdGVTZXJ2aWNlLkdldEFjdGl2ZUNhdGVnb3JpZSgpICE9IG51bGxcIj5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCIgY2xhc3M9XCJjYXQtcm93XCI+XHJcbiAgICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVDYXRlZ29yaWUoKS5uYW1lIH19XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNhdC1yb3dcIiAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgVHJhbnNsYXRlU2VydmljZS5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgPGZhYi1mbGFnIFtjb3VudHJ5XT1cImxhbmd1YWdlLmZsYWdcIj48L2ZhYi1mbGFnPiB7eyBsYW5ndWFnZS5uYW1lIH19XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBrZXkgb2YgVHJhbnNsYXRlU2VydmljZS5HZXRBY3RpdmVDYXRlZ29yaWUoKS5rZXlzXCI+XHJcbiAgICAgICAgICAgIDx0ZD57eyBrZXkuaWQgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3sga2V5Lm5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIFRyYW5zbGF0ZVNlcnZpY2UuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0VmFsdWUobGFuZ3VhZ2UsIFRyYW5zbGF0ZVNlcnZpY2UuR2V0QWN0aXZlQ2F0ZWdvcmllKCkubmFtZSwga2V5Lm5hbWUpIH19XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJUcmFuc2xhdGVTZXJ2aWNlLlNlbGVjdGVkQ2F0ZWdvcnkgPT0gJ0NhdGVnb3JpZXMnXCI+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiIGNsYXNzPVwiY2F0LXJvd1wiPlxyXG4gICAgICAgICAgICAgIENhdGVnb3JpZXNcclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2F0LXJvd1wiICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBUcmFuc2xhdGVTZXJ2aWNlLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNcIj5cclxuICAgICAgICAgICAgICA8ZmFiLWZsYWcgW2NvdW50cnldPVwibGFuZ3VhZ2UuZmxhZ1wiPjwvZmFiLWZsYWc+IHt7IGxhbmd1YWdlLm5hbWUgfX1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGNhdCBvZiBHZXRDYXRlZ29yeUVudHJpZXMoKVwiPlxyXG4gICAgICAgICAgICA8dGQ+e3sgY2F0LmNhdGVnb3J5SWQgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3sgY2F0LmNhdGVnb3J5TmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgVHJhbnNsYXRlU2VydmljZS5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRWYWx1ZUNhdGVnb3J5KGxhbmd1YWdlLCBjYXQuY2F0ZWdvcnlJZCkgfX1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlRyYW5zbGF0ZVNlcnZpY2UuU2VsZWN0ZWRDYXRlZ29yeSA9PSAnUHJvZHVjdHMnXCI+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiIGNsYXNzPVwiY2F0LXJvd1wiPlxyXG4gICAgICAgICAgICAgIFByb2R1Y3RzXHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNhdC1yb3dcIiAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgVHJhbnNsYXRlU2VydmljZS5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgPGZhYi1mbGFnIFtjb3VudHJ5XT1cImxhbmd1YWdlLmZsYWdcIj48L2ZhYi1mbGFnPiB7eyBsYW5ndWFnZS5uYW1lIH19XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBwcm9kIG9mIEdldFByb2R1Y3RFbnRyaWVzKClcIj5cclxuICAgICAgICAgICAgPHRkPnt7IHByb2QucHJvZHVjdElkIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7IHByb2QucHJvZHVjdE5hbWUgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIFRyYW5zbGF0ZVNlcnZpY2UuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0VmFsdWVQcm9kdWN0KGxhbmd1YWdlLCBwcm9kLnByb2R1Y3RJZCkgfX1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlRyYW5zbGF0ZVNlcnZpY2UuU2VsZWN0ZWRDYXRlZ29yeSA9PSAnRmlsdGVyJ1wiPlxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjJcIiBjbGFzcz1cImNhdC1yb3dcIj5cclxuICAgICAgICAgICAgICBGaWx0ZXJzXHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNhdC1yb3dcIiAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgVHJhbnNsYXRlU2VydmljZS5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgPGZhYi1mbGFnIFtjb3VudHJ5XT1cImxhbmd1YWdlLmZsYWdcIj48L2ZhYi1mbGFnPiB7eyBsYW5ndWFnZS5uYW1lIH19XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIEdldEZpbHRlckVudHJpZXMoKVwiPlxyXG4gICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2F0LXJvd1wiPnt7IGZpbHRlci5maWx0ZXJJZCB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2F0LXJvd1wiPnt7IGZpbHRlci5maWx0ZXJOYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJjYXQtcm93XCIgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIFRyYW5zbGF0ZVNlcnZpY2UuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRWYWx1ZUZpbHRlcihsYW5ndWFnZSwgZmlsdGVyLmZpbHRlcklkKSB9fVxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIEdldEZpbHRlck9wdGlvbkVudHJpZXMoZmlsdGVyLmZpbHRlcklkKVwiPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyBvcHRpb24uZmlsdGVyT3B0aW9uSWQgfX08L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZD57eyBvcHRpb24uZmlsdGVyT3B0aW9uTmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBUcmFuc2xhdGVTZXJ2aWNlLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNcIj5cclxuICAgICAgICAgICAgICAgIHt7IFRyYW5zbGF0ZVNlcnZpY2UuR2V0VmFsdWVGaWx0ZXJPcHRpb24obGFuZ3VhZ2UsIG9wdGlvbi5maWx0ZXJPcHRpb25JZCkgfX1cclxuICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlRyYW5zbGF0ZVNlcnZpY2UuU2VsZWN0ZWRDYXRlZ29yeSA9PSAnRGVzY3JpcHRpb24nXCI+XHJcbiAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiIGNsYXNzPVwiY2F0LXJvd1wiPlxyXG4gICAgICAgICAgICAgIERlc2NyaXB0aW9uXHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNhdC1yb3dcIiAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgVHJhbnNsYXRlU2VydmljZS5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgPGZhYi1mbGFnIFtjb3VudHJ5XT1cImxhbmd1YWdlLmZsYWdcIj48L2ZhYi1mbGFnPiB7eyBsYW5ndWFnZS5uYW1lIH19XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBkZXNjcmlwdGlvbiBvZiBHZXREZXNjcmlwdGlvbkVudHJpZXMoKVwiPlxyXG4gICAgICAgICAgICA8dGQ+e3sgZGVzY3JpcHRpb24uYmNiUHJvZHVjdElkIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7IGRlc2NyaXB0aW9uLnByb2R1Y3ROYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBUcmFuc2xhdGVTZXJ2aWNlLkxhbmd1YWdlc1ZpZXdNb2RlbC5sYW5ndWFnZXNcIj5cclxuICAgICAgICAgICAgICB7eyBUcmFuc2xhdGVTZXJ2aWNlLkdldFZhbHVlRGVzY3JpcHRpb24obGFuZ3VhZ2UsIGRlc2NyaXB0aW9uLmJjYlByb2R1Y3RJZCkgfX1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlRyYW5zbGF0ZVNlcnZpY2UuU2VsZWN0ZWRDYXRlZ29yeSA9PSAnQWZiZWVsZGluZydcIj5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCIgY2xhc3M9XCJjYXQtcm93XCI+XHJcbiAgICAgICAgICAgICAgQWZiZWVsZGluZ1xyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgY2xhc3M9XCJjYXQtcm93XCIgKm5nRm9yPVwibGV0IGxhbmd1YWdlIG9mIFRyYW5zbGF0ZVNlcnZpY2UuTGFuZ3VhZ2VzVmlld01vZGVsLmxhbmd1YWdlc1wiPlxyXG4gICAgICAgICAgICAgIDxmYWItZmxhZyBbY291bnRyeV09XCJsYW5ndWFnZS5mbGFnXCI+PC9mYWItZmxhZz4ge3sgbGFuZ3VhZ2UubmFtZSB9fVxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgYWZiZWVsZGluZyBvZiBHZXRBZmJlZWxkaW5nRW50cmllcygpXCI+XHJcbiAgICAgICAgICAgIDx0ZD57eyBhZmJlZWxkaW5nLmJjYlByb2R1Y3RBZmJlZWxkaW5nSWQgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3sgYWZiZWVsZGluZy5wcm9kdWN0TmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgbGFuZ3VhZ2Ugb2YgVHJhbnNsYXRlU2VydmljZS5MYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAge3sgVHJhbnNsYXRlU2VydmljZS5HZXRWYWx1ZUFmYmVlbGRpbmcobGFuZ3VhZ2UsIGFmYmVlbGRpbmcuYmNiUHJvZHVjdEFmYmVlbGRpbmdJZCkgfX1cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgPC9tYXQtY2FyZD5cclxuPC9kaXY+XHJcbiJdfQ==
124
+ args: [{ selector: 'app-beheer-translate', template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<app-fab-loader *ngIf=\"Loading\"></app-fab-loader>\r\n\r\n<div *ngIf=\"!Loading\">\r\n <div class=\"displayflex\">\r\n <div>\r\n <mat-card class=\"main-bar\">\r\n <mat-card-content>\r\n <mat-form-field appearance=\"fill\">\r\n <mat-label>Group</mat-label>\r\n <mat-select [(ngModel)]=\"SelectedBeheerLanguagesCategoryViewModel\" (selectionChange)=\"RefreshPaginator()\">\r\n <mat-option *ngFor=\"let cat of BeheerLanguagesViewModel.categories\" [value]=\"cat\">\r\n {{ TranslationCategory[cat.translationCategory] }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n <!--<button mat-raised-button (click)=\"Export()\">\r\n Export\r\n </button>\r\n <button mat-raised-button (click)=\"Import()\">\r\n Import\r\n </button>-->\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n <mat-card class=\"main-bar flexauto\">\r\n <mat-card-content>\r\n <div class=\"max-height\">\r\n <div *ngIf=\"SelectedBeheerLanguagesCategoryViewModel != null\">\r\n <h1>{{ TranslationCategory[SelectedBeheerLanguagesCategoryViewModel.translationCategory] }}</h1>\r\n\r\n <table class=\"full-width\">\r\n <tr>\r\n <td colspan=\"2\" class=\"cat-row\"></td>\r\n <td class=\"cat-row\" *ngFor=\"let language of BeheerLanguagesViewModel.languages\">\r\n <fab-flag [country]=\"language.flag\"></fab-flag> {{ language.name }}\r\n </td>\r\n </tr>\r\n\r\n <ng-container *ngFor=\"let subcat of ActiveSubs\">\r\n <tr *ngFor=\"let key of subcat.keys\">\r\n <td>{{ TranslationSubCategory[subcat.translationSubCategory] }}</td>\r\n <td></td>\r\n <td *ngFor=\"let entry of key.entries\">\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n Translation\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"entry.value\">\r\n </mat-form-field>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n </div>\r\n </div>\r\n <div>\r\n <mat-paginator #paginator\r\n (page)=\"handlePageEvent($event)\"\r\n [length]=\"amountLength\"\r\n [pageSize]=\"amountPerPage\"\r\n [showFirstLastButtons]=\"true\"\r\n [hidePageSize]=\"true\"\r\n [pageIndex]=\"pageIndex\"\r\n aria-label=\"Select page\">\r\n </mat-paginator>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n</div>\r\n", styles: [".cat-row{font-weight:700;border-bottom:1px solid #000;padding-top:20px}.displayflex{display:flex}.flexauto{flex:auto}.max-height{height:calc(100vH - 174px);overflow:auto}.fullwidth{width:100%}.main{margin:20px;max-height:calc(100vH - 235px);overflow:auto}.main-bar{margin:20px}\n"] }]
125
+ }], ctorParameters: function () { return [{ type: i1.TranslateApiClient }, { type: i2.AuthenticationService }, { type: i0.ChangeDetectorRef }]; } });
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci10cmFuc2xhdGUvYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUlyRSxPQUFPLEVBQWlFLG1DQUFtQyxFQUE0QixtQkFBbUIsRUFBd0IsaUJBQWlCLEVBQXFELG1CQUFtQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQU81VSxNQUFNLE9BQU8sd0JBQXdCO0lBb0JuQyxZQUNVLGtCQUFzQyxFQUN0QyxxQkFBNEMsRUFDNUMsaUJBQW9DO1FBRnBDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBckJ2QyxZQUFPLEdBQVksSUFBSSxDQUFDO1FBRXhCLGVBQVUsR0FBK0MsSUFBSSxLQUFLLEVBQXVDLENBQUM7UUFFMUcsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQVUzQiw2Q0FBd0MsR0FBNEMsSUFBSSxDQUFDO0lBSzlDLENBQUM7SUFibkQsSUFBVyxtQkFBbUI7UUFDNUIsT0FBTyxtQkFBbUIsQ0FBQztJ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QUMsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDakI7Z0JBQ0gsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7Z0JBQ3JDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNkO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztxSEF2SVUsd0JBQXdCO3lHQUF4Qix3QkFBd0IsNERDWHJDLGcrRkF3RUE7MkZEN0RhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZXNLZXlWaWV3TW9kZWwsIEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsLCBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwsIENyZWF0ZUV4cG9ydFJlcXVlc3QsIENyZWF0ZUV4cG9ydFJlc3BvbnNlLCBSZWFkRXhwb3J0UmVxdWVzdCwgVHJhbnNsYXRlQXBpQ2xpZW50LCBUcmFuc2xhdGVLZXlDYXRlZ29yeVZpZXdNb2RlbCwgVHJhbnNsYXRpb25DYXRlZ29yeSwgVHJhbnNsYXRpb25TdWJDYXRlZ29yeSB9IGZyb20gJy4uLy4uLy4uL3N3YWdnZXIvU3dhZ2dlckNsaWVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1iZWhlZXItdHJhbnNsYXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYmVoZWVyLXRyYW5zbGF0ZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCZWhlZXJUcmFuc2xhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBwdWJsaWMgTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbDogQmVoZWVyTGFuZ3VhZ2VzVmlld01vZGVsO1xyXG4gIHB1YmxpYyBBY3RpdmVTdWJzOiBBcnJheTxCZWhlZXJMYW5ndWFnZXNTdWJDYXRlZ29yeVZpZXdNb2RlbD4gPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWw+KCk7XHJcblxyXG4gIHB1YmxpYyBwYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgcHVibGljIGFtb3VudExlbmd0aDogbnVtYmVyID0gMDtcclxuICBwdWJsaWMgYW1vdW50UGVyUGFnZTogbnVtYmVyID0gMTA7XHJcblxyXG4gIHB1YmxpYyBnZXQgVHJhbnNsYXRpb25DYXRlZ29yeSgpIHtcclxuICAgIHJldHVybiBUcmFuc2xhdGlvbkNhdGVnb3J5O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBUcmFuc2xhdGlvblN1YkNhdGVnb3J5KCkge1xyXG4gICAgcmV0dXJuIFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2VsZWN0ZWRCZWhlZXJMYW5ndWFnZXNDYXRlZ29yeVZpZXdNb2RlbDogQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIFRyYW5zbGF0ZUFwaUNsaWVudDogVHJhbnNsYXRlQXBpQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgQ2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLkxvYWRUcmFuc2xhdGlvbnModGhpcy5DaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVQYWdlRXZlbnQoZTogUGFnZUV2ZW50KSB7XHJcbiAgICAvL3RoaXMucGFnZUV2ZW50ID0gZTtcclxuICAgIC8vdGhpcy5sZW5ndGggPSBlLmxlbmd0aDtcclxuICAgIC8vdGhpcy5wYWdlU2l6ZSA9IGUucGFnZVNpemU7XHJcbiAgICB0aGlzLnBhZ2VJbmRleCA9IGUucGFnZUluZGV4O1xyXG5cclxuICAgIHRoaXMuUmVmcmVzaFBhZ2luYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIFJlZnJlc2hQYWdpbmF0b3IoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFtb3VudExlbmd0aCA9IDA7XHJcbiAgICB0aGlzLkFjdGl2ZVN1YnMgPSBuZXcgQXJyYXk8QmVoZWVyTGFuZ3VhZ2VzU3ViQ2F0ZWdvcnlWaWV3TW9kZWw+KCk7XHJcblxyXG4gICAgdmFyIHN0YXJ0SW5kZXggPSB0aGlzLnBhZ2VJbmRleCAqIHRoaXMuYW1vdW50UGVyUGFnZTtcclxuICAgIHZhciBlbmRJbmRleCA9ICh0aGlzLnBhZ2VJbmRleCArIDEpICogdGhpcy5hbW91bnRQZXJQYWdlO1xyXG5cclxuICAgIGlmICh0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgIT0gbnVsbCkge1xyXG5cclxuICAgICAgdmFyIHN1YmNhdHMgPSB0aGlzLlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwuc3ViQ2F0ZWdvcmllcztcclxuXHJcbiAgICAgIGlmIChzdWJjYXRzICE9IG51bGwpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YmNhdHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHZhciBrZXlzID0gc3ViY2F0c1tpXS5rZXlzO1xyXG5cclxuICAgICAgICAgIGlmIChrZXlzICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHZhciBzdWJjYXQ6IEJlaGVlckxhbmd1YWdlc1N1YkNhdGVnb3J5Vmlld01vZGVsIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGtleXMubGVuZ3RoOyBqKyspIHtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYW1vdW50TGVuZ3RoID49IHN0YXJ0SW5kZXggJiYgdGhpcy5hbW91bnRMZW5ndGggPCBlbmRJbmRleCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHN1YmNhdCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIHN1YmNhdCA9IG5ldyBCZWhlZXJMYW5ndWFnZXNTdWJDYXRlZ29yeVZpZXdNb2RlbCgpO1xyXG4gICAgICAgICAgICAgICAgICBzdWJjYXQudHJhbnNsYXRpb25TdWJDYXRlZ29yeSA9IHN1YmNhdHNbaV0udHJhbnNsYXRpb25TdWJDYXRlZ29yeTtcclxuICAgICAgICAgICAgICAgICAgc3ViY2F0Lmh0bWwgPSBzdWJjYXRzW2ldLmh0bWw7XHJcbiAgICAgICAgICAgICAgICAgIHN1YmNhdC5rZXlzID0gbmV3IEFycmF5PEJlaGVlckxhbmd1YWdlc0tleVZpZXdNb2RlbD4oKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuQWN0aXZlU3Vicy5wdXNoKHN1YmNhdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHN1YmNhdD8ua2V5cyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgIHN1YmNhdC5rZXlzLnB1c2goa2V5c1tqXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLmFtb3VudExlbmd0aCsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9hZFRyYW5zbGF0aW9ucyhDaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLkxvYWRpbmcgPSB0cnVlO1xyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LmdldEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbCh0aGlzLmF1dGhlbnRpY2F0aW9uU2VydmljZS5jdXJyZW50VXNlclZhbHVlKS5zdWJzY3JpYmUoKG1vZGVsOiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5CZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwgPSBtb2RlbDtcclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSwgKGVycm9yOiBSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICBhbGVydChlcnJvci5qc29uKCkpO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBhbGVydCgnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgYWxlcnQoZXJyb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgQ2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRXhwb3J0KCk6IHZvaWQge1xyXG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgQ3JlYXRlRXhwb3J0UmVxdWVzdCgpO1xyXG5cclxuXHJcbiAgICB0aGlzLlRyYW5zbGF0ZUFwaUNsaWVudC5jcmVhdGVFeHBvcnQocmVxdWVzdCkuc3Vic2NyaWJlKChtb2RlbDogQ3JlYXRlRXhwb3J0UmVzcG9uc2UpID0+IHtcclxuICAgICAgYWxlcnQobW9kZWwudXJsKTtcclxuXHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGFsZXJ0KGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIEltcG9ydCgpOiB2b2lkIHtcclxuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlYWRFeHBvcnRSZXF1ZXN0KCk7XHJcblxyXG5cclxuICAgIHRoaXMuVHJhbnNsYXRlQXBpQ2xpZW50LnJlYWRFeHBvcnQocmVxdWVzdCkuc3Vic2NyaWJlKCgpID0+IHtcclxuXHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGFsZXJ0KGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGFsZXJ0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBhbGVydChlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8YXBwLWJlaGVlci1uYXY+PC9hcHAtYmVoZWVyLW5hdj5cclxuXHJcbjxhcHAtZmFiLWxvYWRlciAqbmdJZj1cIkxvYWRpbmdcIj48L2FwcC1mYWItbG9hZGVyPlxyXG5cclxuPGRpdiAqbmdJZj1cIiFMb2FkaW5nXCI+XHJcbiAgPGRpdiBjbGFzcz1cImRpc3BsYXlmbGV4XCI+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYWluLWJhclwiPlxyXG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+R3JvdXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgWyhuZ01vZGVsKV09XCJTZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsXCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJSZWZyZXNoUGFnaW5hdG9yKClcIj5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgY2F0IG9mIEJlaGVlckxhbmd1YWdlc1ZpZXdNb2RlbC5jYXRlZ29yaWVzXCIgW3ZhbHVlXT1cImNhdFwiPlxyXG4gICAgICAgICAgICAgICAge3sgVHJhbnNsYXRpb25DYXRlZ29yeVtjYXQudHJhbnNsYXRpb25DYXRlZ29yeV0gfX1cclxuICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8IS0tPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiRXhwb3J0KClcIj5cclxuICAgICAgICAgICAgRXhwb3J0XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkltcG9ydCgpXCI+XHJcbiAgICAgICAgICAgIEltcG9ydFxyXG4gICAgICAgICAgPC9idXR0b24+LS0+XHJcbiAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICA8L21hdC1jYXJkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bWF0LWNhcmQgY2xhc3M9XCJtYWluLWJhciBmbGV4YXV0b1wiPlxyXG4gICAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWF4LWhlaWdodFwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdJZj1cIlNlbGVjdGVkQmVoZWVyTGFuZ3VhZ2VzQ2F0ZWdvcnlWaWV3TW9kZWwgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICA8aDE+e3sgVHJhbnNsYXRpb25DYXRlZ29yeVtTZWxlY3RlZEJlaGVlckxhbmd1YWdlc0NhdGVnb3J5Vmlld01vZGVsLnRyYW5zbGF0aW9uQ2F0ZWdvcnldIH19PC9oMT5cclxuXHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cImZ1bGwtd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjJcIiBjbGFzcz1cImNhdC1yb3dcIj48L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiY2F0LXJvd1wiICpuZ0Zvcj1cImxldCBsYW5ndWFnZSBvZiBCZWhlZXJMYW5ndWFnZXNWaWV3TW9kZWwubGFuZ3VhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxmYWItZmxhZyBbY291bnRyeV09XCJsYW5ndWFnZS5mbGFnXCI+PC9mYWItZmxhZz4ge3sgbGFuZ3VhZ2UubmFtZSB9fVxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJjYXQgb2YgQWN0aXZlU3Vic1wiPlxyXG4gICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBrZXkgb2Ygc3ViY2F0LmtleXNcIj5cclxuICAgICAgICAgICAgICAgICAgPHRkPnt7IFRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnlbc3ViY2F0LnRyYW5zbGF0aW9uU3ViQ2F0ZWdvcnldIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgZW50cnkgb2Yga2V5LmVudHJpZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBjbGFzcz1cImZ1bGx3aWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb25cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgWyhuZ01vZGVsKV09XCJlbnRyeS52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxtYXQtcGFnaW5hdG9yICNwYWdpbmF0b3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlKT1cImhhbmRsZVBhZ2VFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtsZW5ndGhdPVwiYW1vdW50TGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJhbW91bnRQZXJQYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Rmlyc3RMYXN0QnV0dG9uc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlUGFnZVNpemVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2VJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VsZWN0IHBhZ2VcIj5cclxuICAgICAgICAgIDwvbWF0LXBhZ2luYXRvcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgPC9tYXQtY2FyZD5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -1,15 +1,143 @@
1
1
  import { Component } from '@angular/core';
2
+ import { CreateUserModel, DeleteUserModel, EditUserModel, LoginResponseModel, UserViewModel } from '../../../swagger/SwaggerClient';
2
3
  import * as i0 from "@angular/core";
3
- import * as i1 from "../beheer-nav/beheer-nav.component";
4
+ import * as i1 from "../../../swagger/SwaggerClient";
5
+ import * as i2 from "../../../services/authentication.service";
6
+ import * as i3 from "@angular/common";
7
+ import * as i4 from "@angular/material/form-field";
8
+ import * as i5 from "@angular/material/input";
9
+ import * as i6 from "@angular/forms";
10
+ import * as i7 from "@angular/material/button";
11
+ import * as i8 from "@angular/material/card";
12
+ import * as i9 from "@angular/material/select";
13
+ import * as i10 from "@angular/material/core";
14
+ import * as i11 from "../beheer-nav/beheer-nav.component";
15
+ import * as i12 from "../../../components/fab-loader/fab-loader.component";
4
16
  export class BeheerUsersComponent {
5
- constructor() { }
17
+ constructor(securityApiClient, authenticationService) {
18
+ this.securityApiClient = securityApiClient;
19
+ this.authenticationService = authenticationService;
20
+ this.Loading = false;
21
+ this.Overview = true;
22
+ this.NewUser = false;
23
+ this.EditUser = false;
24
+ this.Password = "";
25
+ }
6
26
  ngOnInit() {
27
+ this.LoadUsers();
28
+ }
29
+ Add() {
30
+ this.EditUser = false;
31
+ this.NewUser = true;
32
+ this.Overview = false;
33
+ this.UserViewModel = new UserViewModel();
34
+ }
35
+ Edit(user) {
36
+ this.EditUser = true;
37
+ this.Overview = false;
38
+ this.NewUser = false;
39
+ this.UserViewModel = user;
40
+ }
41
+ Save() {
42
+ this.Loading = true;
43
+ if (this.NewUser) {
44
+ var model = new CreateUserModel();
45
+ model.loginResponseModel = new LoginResponseModel(this.authenticationService.currentUserValue);
46
+ model.userName = this.UserViewModel.userName;
47
+ model.password = this.Password;
48
+ model.userRole = this.UserViewModel.userRole;
49
+ this.securityApiClient.createUser(model).subscribe((model) => {
50
+ if (!model.success) {
51
+ alert(model.message);
52
+ }
53
+ this.LoadUsers();
54
+ }, (error) => {
55
+ if (error.status == 400)
56
+ console.log(error.json());
57
+ else {
58
+ console.log('An unexpected error occured');
59
+ console.log(error);
60
+ }
61
+ this.Loading = false;
62
+ });
63
+ }
64
+ else if (this.EditUser) {
65
+ var model2 = new EditUserModel();
66
+ model2.loginResponseModel = new LoginResponseModel(this.authenticationService.currentUserValue);
67
+ model2.userName = this.UserViewModel.userName;
68
+ model2.password = this.Password;
69
+ model2.userRole = this.UserViewModel.userRole;
70
+ model2.userId = this.UserViewModel.userId;
71
+ this.securityApiClient.editUser(model2).subscribe((model) => {
72
+ if (!model.success) {
73
+ alert(model.message);
74
+ }
75
+ this.LoadUsers();
76
+ }, (error) => {
77
+ if (error.status == 400)
78
+ console.log(error.json());
79
+ else {
80
+ console.log('An unexpected error occured');
81
+ console.log(error);
82
+ }
83
+ this.Loading = false;
84
+ });
85
+ }
86
+ }
87
+ Cancel() {
88
+ this.Overview = true;
89
+ this.NewUser = false;
90
+ this.EditUser = false;
91
+ this.Password = "";
92
+ this.UserViewModel = new UserViewModel();
93
+ }
94
+ Delete(user) {
95
+ if (confirm("Weet je het zeker?")) {
96
+ this.Loading = true;
97
+ var model = new DeleteUserModel();
98
+ model.loginResponseModel = new LoginResponseModel(this.authenticationService.currentUserValue);
99
+ model.userId = user.userId;
100
+ this.securityApiClient.deleteUser(model).subscribe((model) => {
101
+ if (!model.success) {
102
+ alert(model.message);
103
+ }
104
+ this.LoadUsers();
105
+ }, (error) => {
106
+ if (error.status == 400)
107
+ console.log(error.json());
108
+ else {
109
+ console.log('An unexpected error occured');
110
+ console.log(error);
111
+ }
112
+ this.Loading = false;
113
+ });
114
+ }
115
+ }
116
+ LoadUsers() {
117
+ this.Loading = true;
118
+ this.NewUser = false;
119
+ this.EditUser = false;
120
+ this.Overview = true;
121
+ this.UserViewModel = new UserViewModel();
122
+ this.Password = "";
123
+ this.securityApiClient.getUsersViewModel(this.authenticationService.currentUserValue).subscribe((model) => {
124
+ this.UsersViewModel = model;
125
+ this.Loading = false;
126
+ }, (error) => {
127
+ if (error.status == 400)
128
+ console.log(error.json());
129
+ else {
130
+ console.log('An unexpected error occured');
131
+ console.log(error);
132
+ }
133
+ this.Loading = false;
134
+ });
7
135
  }
8
136
  }
9
- BeheerUsersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: BeheerUsersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- BeheerUsersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: BeheerUsersComponent, selector: "app-beheer-users", ngImport: i0, template: "<app-beheer-nav></app-beheer-nav>\r\n", styles: [""], dependencies: [{ kind: "component", type: i1.BeheerNavComponent, selector: "app-beheer-nav" }] });
137
+ BeheerUsersComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: BeheerUsersComponent, deps: [{ token: i1.SecurityApiClient }, { token: i2.AuthenticationService }], target: i0.ɵɵFactoryTarget.Component });
138
+ BeheerUsersComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: BeheerUsersComponent, selector: "app-beheer-users", ngImport: i0, template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<div class=\"displayflex\">\r\n <mat-card class=\"card\">\r\n <mat-card-content>\r\n <div *ngIf=\"Loading\">\r\n <app-fab-loader></app-fab-loader>\r\n </div>\r\n <ng-container *ngIf=\"!Loading\">\r\n <div *ngIf=\"Overview\">\r\n <table>\r\n <tr>\r\n <td class=\"headercell-username\"><b>Username</b></td>\r\n <td class=\"headercell-role\"><b>Role</b></td>\r\n <td class=\"headercell-actions\"></td>\r\n <td class=\"headercell-actions\"></td>\r\n </tr>\r\n <ng-container *ngFor=\"let user of this.UsersViewModel.users\">\r\n <tr>\r\n <td class=\"cell\">{{ user.userName }}</td>\r\n <td class=\"cell\">{{ user.userRoleStr }}</td>\r\n <td>\r\n <button mat-raised-button (click)=\"Edit(user)\">\r\n Edit\r\n </button>\r\n\r\n </td>\r\n <td>\r\n <button mat-raised-button (click)=\"Delete(user)\" [disabled]=\"user.userId == this.UsersViewModel.currentUserId\">\r\n Delete\r\n </button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n <br />\r\n <br />\r\n <br />\r\n <br />\r\n <button mat-raised-button (click)=\"Add()\">\r\n Add\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"NewUser || EditUser\">\r\n <div>\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n Username\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"this.UserViewModel.userName\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n Password\r\n </mat-label>\r\n <input matInput type=\"password\" [(ngModel)]=\"Password\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <mat-form-field style=\"width: 100%;\">\r\n <mat-select placeholder=\"Role\" [(ngModel)]=\"UserViewModel.userRole\">\r\n <mat-option [value]=\"0\">\r\n Content\r\n </mat-option>\r\n <mat-option [value]=\"1\">\r\n Administrator\r\n </mat-option>\r\n <!--<mat-option [value]=\"2\">\r\n DeTweeSnoeken\r\n </mat-option>-->\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <br />\r\n <br />\r\n <br />\r\n\r\n <div class=\"displayflex\">\r\n <button mat-raised-button (click)=\"Cancel()\">\r\n Cancel\r\n </button>\r\n <div style=\"flex: auto;\">\r\n\r\n </div>\r\n <button mat-raised-button (click)=\"Save()\">\r\n Save\r\n </button>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n \r\n </mat-card-content>\r\n </mat-card>\r\n</div>\r\n", styles: [".card{margin:auto}.displayflex{display:flex}.cell{border-bottom:1px solid #000}.headercell-username{min-width:300px}.headercell-role{min-width:200px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.MatButton, 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.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i11.BeheerNavComponent, selector: "app-beheer-nav" }, { kind: "component", type: i12.FabLoaderComponent, selector: "app-fab-loader" }] });
11
139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: BeheerUsersComponent, decorators: [{
12
140
  type: Component,
13
- args: [{ selector: 'app-beheer-users', template: "<app-beheer-nav></app-beheer-nav>\r\n" }]
14
- }], ctorParameters: function () { return []; } });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXVzZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvYmVoZWVyL2NvbXBvbmVudHMvYmVoZWVyLXVzZXJzL2JlaGVlci11c2Vycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci11c2Vycy9iZWhlZXItdXNlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7O0FBT2xELE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsZ0JBQWdCLENBQUM7SUFFakIsUUFBUTtJQUNSLENBQUM7O2lIQUxVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLHdEQ1BqQyx1Q0FDQTsyRkRNYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0Usa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWJlaGVlci11c2VycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JlaGVlci11c2Vycy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYmVoZWVyLXVzZXJzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEJlaGVlclVzZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8YXBwLWJlaGVlci1uYXY+PC9hcHAtYmVoZWVyLW5hdj5cclxuIl19
141
+ args: [{ selector: 'app-beheer-users', template: "<app-beheer-nav></app-beheer-nav>\r\n\r\n<div class=\"displayflex\">\r\n <mat-card class=\"card\">\r\n <mat-card-content>\r\n <div *ngIf=\"Loading\">\r\n <app-fab-loader></app-fab-loader>\r\n </div>\r\n <ng-container *ngIf=\"!Loading\">\r\n <div *ngIf=\"Overview\">\r\n <table>\r\n <tr>\r\n <td class=\"headercell-username\"><b>Username</b></td>\r\n <td class=\"headercell-role\"><b>Role</b></td>\r\n <td class=\"headercell-actions\"></td>\r\n <td class=\"headercell-actions\"></td>\r\n </tr>\r\n <ng-container *ngFor=\"let user of this.UsersViewModel.users\">\r\n <tr>\r\n <td class=\"cell\">{{ user.userName }}</td>\r\n <td class=\"cell\">{{ user.userRoleStr }}</td>\r\n <td>\r\n <button mat-raised-button (click)=\"Edit(user)\">\r\n Edit\r\n </button>\r\n\r\n </td>\r\n <td>\r\n <button mat-raised-button (click)=\"Delete(user)\" [disabled]=\"user.userId == this.UsersViewModel.currentUserId\">\r\n Delete\r\n </button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n <br />\r\n <br />\r\n <br />\r\n <br />\r\n <button mat-raised-button (click)=\"Add()\">\r\n Add\r\n </button>\r\n </div>\r\n\r\n <div *ngIf=\"NewUser || EditUser\">\r\n <div>\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n Username\r\n </mat-label>\r\n <input matInput type=\"text\" [(ngModel)]=\"this.UserViewModel.userName\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <mat-form-field appearance=\"fill\" class=\"fullwidth\">\r\n <mat-label>\r\n Password\r\n </mat-label>\r\n <input matInput type=\"password\" [(ngModel)]=\"Password\">\r\n </mat-form-field>\r\n </div>\r\n\r\n <div>\r\n <mat-form-field style=\"width: 100%;\">\r\n <mat-select placeholder=\"Role\" [(ngModel)]=\"UserViewModel.userRole\">\r\n <mat-option [value]=\"0\">\r\n Content\r\n </mat-option>\r\n <mat-option [value]=\"1\">\r\n Administrator\r\n </mat-option>\r\n <!--<mat-option [value]=\"2\">\r\n DeTweeSnoeken\r\n </mat-option>-->\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n </div>\r\n\r\n <br />\r\n <br />\r\n <br />\r\n\r\n <div class=\"displayflex\">\r\n <button mat-raised-button (click)=\"Cancel()\">\r\n Cancel\r\n </button>\r\n <div style=\"flex: auto;\">\r\n\r\n </div>\r\n <button mat-raised-button (click)=\"Save()\">\r\n Save\r\n </button>\r\n </div>\r\n \r\n </div>\r\n </ng-container>\r\n \r\n </mat-card-content>\r\n </mat-card>\r\n</div>\r\n", styles: [".card{margin:auto}.displayflex{display:flex}.cell{border-bottom:1px solid #000}.headercell-username{min-width:300px}.headercell-role{min-width:200px}\n"] }]
142
+ }], ctorParameters: function () { return [{ type: i1.SecurityApiClient }, { type: i2.AuthenticationService }]; } });
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoZWVyLXVzZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9mYWJyaWthbnRlbmNvcmUvYmVoZWVyL2NvbXBvbmVudHMvYmVoZWVyLXVzZXJzL2JlaGVlci11c2Vycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZHVsZXMvZmFicmlrYW50ZW5jb3JlL2JlaGVlci9jb21wb25lbnRzL2JlaGVlci11c2Vycy9iZWhlZXItdXNlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQXdELGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQU8xTCxNQUFNLE9BQU8sb0JBQW9CO0lBYS9CLFlBQW9CLGlCQUFvQyxFQUM5QyxxQkFBNEM7UUFEbEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUM5QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBWi9DLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsYUFBUSxHQUFZLElBQUksQ0FBQztRQUN6QixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFMUIsYUFBUSxHQUFXLEVBQUUsQ0FBQztJQU82QixDQUFDO0lBRTNELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVNLEdBQUc7UUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUss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TyxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2lIQTVKVSxvQkFBb0I7cUdBQXBCLG9CQUFvQix3RENUakMsNHlHQXNHQTsyRkQ3RmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEF1dGhlbnRpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGhlbnRpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDcmVhdGVVc2VyTW9kZWwsIERlbGV0ZVVzZXJNb2RlbCwgRWRpdFVzZXJNb2RlbCwgTG9naW5SZXNwb25zZU1vZGVsLCBTZWN1cml0eUFwaUNsaWVudCwgVXNlclJlc3BvbnNlTW9kZWwsIFVzZXJzVmlld01vZGVsLCBVc2VyVmlld01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vc3dhZ2dlci9Td2FnZ2VyQ2xpZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWJlaGVlci11c2VycycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2JlaGVlci11c2Vycy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYmVoZWVyLXVzZXJzLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEJlaGVlclVzZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgcHVibGljIExvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgT3ZlcnZpZXc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBOZXdVc2VyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIEVkaXRVc2VyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBQYXNzd29yZDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgcHVibGljIFVzZXJzVmlld01vZGVsOiBVc2Vyc1ZpZXdNb2RlbDtcclxuXHJcbiAgcHVibGljIFVzZXJWaWV3TW9kZWw6IFVzZXJWaWV3TW9kZWw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2VjdXJpdHlBcGlDbGllbnQ6IFNlY3VyaXR5QXBpQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBhdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkVXNlcnMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBBZGQoKTogdm9pZCB7XHJcbiAgICB0aGlzLkVkaXRVc2VyID0gZmFsc2U7XHJcbiAgICB0aGlzLk5ld1VzZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5PdmVydmlldyA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuVXNlclZpZXdNb2RlbCA9IG5ldyBVc2VyVmlld01vZGVsKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgRWRpdCh1c2VyOiBVc2VyVmlld01vZGVsKSB7XHJcbiAgICB0aGlzLkVkaXRVc2VyID0gdHJ1ZTtcclxuICAgIHRoaXMuT3ZlcnZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMuTmV3VXNlciA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuVXNlclZpZXdNb2RlbCA9IHVzZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2F2ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMuTmV3VXNlcikge1xyXG4gICAgICB2YXIgbW9kZWwgPSBuZXcgQ3JlYXRlVXNlck1vZGVsKCk7XHJcblxyXG4gICAgICBtb2RlbC5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xyXG5cclxuICAgICAgbW9kZWwudXNlck5hbWUgPSB0aGlzLlVzZXJWaWV3TW9kZWwudXNlck5hbWU7XHJcbiAgICAgIG1vZGVsLnBhc3N3b3JkID0gdGhpcy5QYXNzd29yZDtcclxuICAgICAgbW9kZWwudXNlclJvbGUgPSB0aGlzLlVzZXJWaWV3TW9kZWwudXNlclJvbGU7XHJcblxyXG4gICAgICB0aGlzLnNlY3VyaXR5QXBpQ2xpZW50LmNyZWF0ZVVzZXIobW9kZWwpLnN1YnNjcmliZSgobW9kZWw6IFVzZXJSZXNwb25zZU1vZGVsKSA9PiB7XHJcblxyXG4gICAgICAgIGlmICghbW9kZWwuc3VjY2Vzcykge1xyXG4gICAgICAgICAgYWxlcnQobW9kZWwubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRVc2VycygpO1xyXG4gICAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvci5qc29uKCkpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0FuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJlZCcpO1xyXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5FZGl0VXNlcikge1xyXG4gICAgICB2YXIgbW9kZWwyID0gbmV3IEVkaXRVc2VyTW9kZWwoKTtcclxuXHJcbiAgICAgIG1vZGVsMi5sb2dpblJlc3BvbnNlTW9kZWwgPSBuZXcgTG9naW5SZXNwb25zZU1vZGVsKHRoaXMuYXV0aGVudGljYXRpb25TZXJ2aWNlLmN1cnJlbnRVc2VyVmFsdWUpO1xyXG5cclxuICAgICAgbW9kZWwyLnVzZXJOYW1lID0gdGhpcy5Vc2VyVmlld01vZGVsLnVzZXJOYW1lO1xyXG4gICAgICBtb2RlbDIucGFzc3dvcmQgPSB0aGlzLlBhc3N3b3JkO1xyXG4gICAgICBtb2RlbDIudXNlclJvbGUgPSB0aGlzLlVzZXJWaWV3TW9kZWwudXNlclJvbGU7XHJcbiAgICAgIG1vZGVsMi51c2VySWQgPSB0aGlzLlVzZXJWaWV3TW9kZWwudXNlcklkO1xyXG5cclxuICAgICAgdGhpcy5zZWN1cml0eUFwaUNsaWVudC5lZGl0VXNlcihtb2RlbDIpLnN1YnNjcmliZSgobW9kZWw6IFVzZXJSZXNwb25zZU1vZGVsKSA9PiB7XHJcbiAgICAgICAgaWYgKCFtb2RlbC5zdWNjZXNzKSB7XHJcbiAgICAgICAgICBhbGVydChtb2RlbC5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZFVzZXJzKCk7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5PdmVydmlldyA9IHRydWU7XHJcbiAgICB0aGlzLk5ld1VzZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuRWRpdFVzZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuUGFzc3dvcmQgPSBcIlwiO1xyXG4gICAgdGhpcy5Vc2VyVmlld01vZGVsID0gbmV3IFVzZXJWaWV3TW9kZWwoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBEZWxldGUodXNlcjogVXNlclZpZXdNb2RlbCkge1xyXG4gICAgaWYgKGNvbmZpcm0oXCJXZWV0IGplIGhldCB6ZWtlcj9cIikpIHtcclxuICAgICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgIHZhciBtb2RlbCA9IG5ldyBEZWxldGVVc2VyTW9kZWwoKTtcclxuXHJcbiAgICAgIG1vZGVsLmxvZ2luUmVzcG9uc2VNb2RlbCA9IG5ldyBMb2dpblJlc3BvbnNlTW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSk7XHJcblxyXG4gICAgICBtb2RlbC51c2VySWQgPSB1c2VyLnVzZXJJZDtcclxuXHJcbiAgICAgIHRoaXMuc2VjdXJpdHlBcGlDbGllbnQuZGVsZXRlVXNlcihtb2RlbCkuc3Vic2NyaWJlKChtb2RlbDogVXNlclJlc3BvbnNlTW9kZWwpID0+IHtcclxuXHJcbiAgICAgICAgaWYgKCFtb2RlbC5zdWNjZXNzKSB7XHJcbiAgICAgICAgICBhbGVydChtb2RlbC5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuTG9hZFVzZXJzKCk7XHJcbiAgICAgIH0sIChlcnJvcjogUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzID09IDQwMClcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnQW4gdW5leHBlY3RlZCBlcnJvciBvY2N1cmVkJyk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLkxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgTG9hZFVzZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5Mb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLk5ld1VzZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuRWRpdFVzZXIgPSBmYWxzZTtcclxuICAgIHRoaXMuT3ZlcnZpZXcgPSB0cnVlO1xyXG4gICAgdGhpcy5Vc2VyVmlld01vZGVsID0gbmV3IFVzZXJWaWV3TW9kZWwoKTtcclxuICAgIHRoaXMuUGFzc3dvcmQgPSBcIlwiO1xyXG5cclxuICAgIHRoaXMuc2VjdXJpdHlBcGlDbGllbnQuZ2V0VXNlcnNWaWV3TW9kZWwodGhpcy5hdXRoZW50aWNhdGlvblNlcnZpY2UuY3VycmVudFVzZXJWYWx1ZSkuc3Vic2NyaWJlKChtb2RlbDogVXNlcnNWaWV3TW9kZWwpID0+IHtcclxuICAgICAgdGhpcy5Vc2Vyc1ZpZXdNb2RlbCA9IG1vZGVsO1xyXG5cclxuICAgICAgdGhpcy5Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9LCAoZXJyb3I6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT0gNDAwKVxyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yLmpzb24oKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxhcHAtYmVoZWVyLW5hdj48L2FwcC1iZWhlZXItbmF2PlxyXG5cclxuPGRpdiBjbGFzcz1cImRpc3BsYXlmbGV4XCI+XHJcbiAgPG1hdC1jYXJkIGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJMb2FkaW5nXCI+XHJcbiAgICAgICAgPGFwcC1mYWItbG9hZGVyPjwvYXBwLWZhYi1sb2FkZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIUxvYWRpbmdcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiT3ZlcnZpZXdcIj5cclxuICAgICAgICAgIDx0YWJsZT5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImhlYWRlcmNlbGwtdXNlcm5hbWVcIj48Yj5Vc2VybmFtZTwvYj48L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImhlYWRlcmNlbGwtcm9sZVwiPjxiPlJvbGU8L2I+PC90ZD5cclxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJoZWFkZXJjZWxsLWFjdGlvbnNcIj48L3RkPlxyXG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImhlYWRlcmNlbGwtYWN0aW9uc1wiPjwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHVzZXIgb2YgdGhpcy5Vc2Vyc1ZpZXdNb2RlbC51c2Vyc1wiPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNlbGxcIj57eyB1c2VyLnVzZXJOYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImNlbGxcIj57eyB1c2VyLnVzZXJSb2xlU3RyIH19PC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiRWRpdCh1c2VyKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEVkaXRcclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiRGVsZXRlKHVzZXIpXCIgW2Rpc2FibGVkXT1cInVzZXIudXNlcklkID09IHRoaXMuVXNlcnNWaWV3TW9kZWwuY3VycmVudFVzZXJJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIERlbGV0ZVxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgPGJyIC8+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJBZGQoKVwiPlxyXG4gICAgICAgICAgICBBZGRcclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiTmV3VXNlciB8fCBFZGl0VXNlclwiPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJmdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgVXNlcm5hbWVcclxuICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cInRoaXMuVXNlclZpZXdNb2RlbC51c2VyTmFtZVwiPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgY2xhc3M9XCJmdWxsd2lkdGhcIj5cclxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgUGFzc3dvcmRcclxuICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgWyhuZ01vZGVsKV09XCJQYXNzd29yZFwiPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJSb2xlXCIgWyhuZ01vZGVsKV09XCJVc2VyVmlld01vZGVsLnVzZXJSb2xlXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiMFwiPlxyXG4gICAgICAgICAgICAgICAgICBDb250ZW50XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiMVwiPlxyXG4gICAgICAgICAgICAgICAgICBBZG1pbmlzdHJhdG9yXHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8IS0tPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjJcIj5cclxuICAgICAgICAgICAgICAgICAgRGVUd2VlU25vZWtlblxyXG4gICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPi0tPlxyXG4gICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgIDxiciAvPlxyXG4gICAgICAgICAgPGJyIC8+XHJcblxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRpc3BsYXlmbGV4XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cIkNhbmNlbCgpXCI+XHJcbiAgICAgICAgICAgICAgQ2FuY2VsXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZmxleDogYXV0bztcIj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJTYXZlKClcIj5cclxuICAgICAgICAgICAgICBTYXZlXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICBcclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIFxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gIDwvbWF0LWNhcmQ+XHJcbjwvZGl2PlxyXG4iXX0=