@universis/ngx-tables 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/LICENSE +163 -0
  2. package/README.md +121 -0
  3. package/bundles/universis-ngx-tables.umd.js +4591 -0
  4. package/bundles/universis-ngx-tables.umd.js.map +1 -0
  5. package/bundles/universis-ngx-tables.umd.min.js +2 -0
  6. package/bundles/universis-ngx-tables.umd.min.js.map +1 -0
  7. package/esm2015/lib/components/add-items/add-items.component.js +142 -0
  8. package/esm2015/lib/components/advanced-aggregator/advanced-aggregator.component.js +120 -0
  9. package/esm2015/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +53 -0
  10. package/esm2015/lib/components/advanced-list/advanced-list.component.js +173 -0
  11. package/esm2015/lib/components/advanced-row-action/advanced-row-action.component.js +175 -0
  12. package/esm2015/lib/components/advanced-search-form/advanced-search-form.component.js +134 -0
  13. package/esm2015/lib/components/advanced-select/advanced-select.component.js +51 -0
  14. package/esm2015/lib/components/advanced-select/advanced-select.service.js +40 -0
  15. package/esm2015/lib/components/advanced-table/advanced-filter-value-provider.service.js +37 -0
  16. package/esm2015/lib/components/advanced-table/advanced-table-resolvers.js +44 -0
  17. package/esm2015/lib/components/advanced-table/advanced-table-search-base.js +23 -0
  18. package/esm2015/lib/components/advanced-table/advanced-table-search.component.js +519 -0
  19. package/esm2015/lib/components/advanced-table/advanced-table-settings.component.js +109 -0
  20. package/esm2015/lib/components/advanced-table/advanced-table.component.js +1007 -0
  21. package/esm2015/lib/components/advanced-table/advanced-table.formatters.interface.js +16 -0
  22. package/esm2015/lib/components/advanced-table/advanced-table.formatters.js +271 -0
  23. package/esm2015/lib/components/advanced-table/advanced-table.interfaces.js +2 -0
  24. package/esm2015/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +379 -0
  25. package/esm2015/lib/components/table-simple-header/table-simple-header.component.js +52 -0
  26. package/esm2015/lib/directives/advanced-table-editor.directive.js +157 -0
  27. package/esm2015/lib/directives/btnexp.directive.js +225 -0
  28. package/esm2015/lib/i18n/tables.el.js +104 -0
  29. package/esm2015/lib/i18n/tables.en.js +103 -0
  30. package/esm2015/lib/pipes/advanced-aggregator.pipe.js +35 -0
  31. package/esm2015/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +46 -0
  32. package/esm2015/lib/services/advanced-aggregator/advanced-aggregator.service.js +117 -0
  33. package/esm2015/lib/tables.activated-table.service.js +36 -0
  34. package/esm2015/lib/tables.module.js +134 -0
  35. package/esm2015/public_api.js +22 -0
  36. package/esm2015/universis-ngx-tables.js +14 -0
  37. package/esm5/lib/components/add-items/add-items.component.js +153 -0
  38. package/esm5/lib/components/advanced-aggregator/advanced-aggregator.component.js +169 -0
  39. package/esm5/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +56 -0
  40. package/esm5/lib/components/advanced-list/advanced-list.component.js +185 -0
  41. package/esm5/lib/components/advanced-row-action/advanced-row-action.component.js +179 -0
  42. package/esm5/lib/components/advanced-search-form/advanced-search-form.component.js +137 -0
  43. package/esm5/lib/components/advanced-select/advanced-select.component.js +56 -0
  44. package/esm5/lib/components/advanced-select/advanced-select.service.js +43 -0
  45. package/esm5/lib/components/advanced-table/advanced-filter-value-provider.service.js +50 -0
  46. package/esm5/lib/components/advanced-table/advanced-table-resolvers.js +48 -0
  47. package/esm5/lib/components/advanced-table/advanced-table-search-base.js +29 -0
  48. package/esm5/lib/components/advanced-table/advanced-table-search.component.js +556 -0
  49. package/esm5/lib/components/advanced-table/advanced-table-settings.component.js +115 -0
  50. package/esm5/lib/components/advanced-table/advanced-table.component.js +1035 -0
  51. package/esm5/lib/components/advanced-table/advanced-table.formatters.interface.js +16 -0
  52. package/esm5/lib/components/advanced-table/advanced-table.formatters.js +313 -0
  53. package/esm5/lib/components/advanced-table/advanced-table.interfaces.js +2 -0
  54. package/esm5/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +295 -0
  55. package/esm5/lib/components/table-simple-header/table-simple-header.component.js +58 -0
  56. package/esm5/lib/directives/advanced-table-editor.directive.js +175 -0
  57. package/esm5/lib/directives/btnexp.directive.js +253 -0
  58. package/esm5/lib/i18n/tables.el.js +104 -0
  59. package/esm5/lib/i18n/tables.en.js +103 -0
  60. package/esm5/lib/pipes/advanced-aggregator.pipe.js +39 -0
  61. package/esm5/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +49 -0
  62. package/esm5/lib/services/advanced-aggregator/advanced-aggregator.service.js +130 -0
  63. package/esm5/lib/tables.activated-table.service.js +43 -0
  64. package/esm5/lib/tables.module.js +139 -0
  65. package/esm5/public_api.js +22 -0
  66. package/esm5/universis-ngx-tables.js +14 -0
  67. package/fesm2015/universis-ngx-tables.js +4127 -0
  68. package/fesm2015/universis-ngx-tables.js.map +1 -0
  69. package/fesm5/universis-ngx-tables.js +4313 -0
  70. package/fesm5/universis-ngx-tables.js.map +1 -0
  71. package/lib/advanced-aggregator.d.ts +124 -0
  72. package/lib/components/add-items/add-items.component.d.ts +44 -0
  73. package/lib/components/advanced-aggregator/advanced-aggregator.component.d.ts +45 -0
  74. package/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.d.ts +25 -0
  75. package/lib/components/advanced-list/advanced-list.component.d.ts +42 -0
  76. package/lib/components/advanced-row-action/advanced-row-action.component.d.ts +42 -0
  77. package/lib/components/advanced-search-form/advanced-search-form.component.d.ts +27 -0
  78. package/lib/components/advanced-select/advanced-select.component.d.ts +14 -0
  79. package/lib/components/advanced-select/advanced-select.service.d.ts +9 -0
  80. package/lib/components/advanced-table/advanced-filter-value-provider.service.d.ts +8 -0
  81. package/lib/components/advanced-table/advanced-table-resolvers.d.ts +12 -0
  82. package/lib/components/advanced-table/advanced-table-search-base.d.ts +7 -0
  83. package/lib/components/advanced-table/advanced-table-search.component.d.ts +80 -0
  84. package/lib/components/advanced-table/advanced-table-settings.component.d.ts +35 -0
  85. package/lib/components/advanced-table/advanced-table.component.d.ts +142 -0
  86. package/lib/components/advanced-table/advanced-table.formatters.d.ts +62 -0
  87. package/lib/components/advanced-table/advanced-table.formatters.interface.d.ts +15 -0
  88. package/lib/components/advanced-table/advanced-table.interfaces.d.ts +27 -0
  89. package/lib/components/advanced-table-modal/advanced-table-modal-base.component.d.ts +82 -0
  90. package/lib/components/table-simple-header/table-simple-header.component.d.ts +14 -0
  91. package/lib/directives/advanced-table-editor.directive.d.ts +25 -0
  92. package/lib/directives/btnexp.directive.d.ts +68 -0
  93. package/lib/i18n/tables.el.d.ts +102 -0
  94. package/lib/i18n/tables.en.d.ts +101 -0
  95. package/lib/pipes/advanced-aggregator.pipe.d.ts +21 -0
  96. package/lib/pipes/advansed-aggregator-list-title-parse.pipe.d.ts +21 -0
  97. package/lib/services/advanced-aggregator/advanced-aggregator.service.d.ts +32 -0
  98. package/lib/tables.activated-table.service.d.ts +9 -0
  99. package/lib/tables.module.d.ts +7 -0
  100. package/package.json +51 -0
  101. package/public_api.d.ts +18 -0
  102. package/universis-ngx-tables.d.ts +12 -0
  103. package/universis-ngx-tables.metadata.json +1 -0
@@ -0,0 +1,157 @@
1
+ import { Directive, Output, EventEmitter } from '@angular/core';
2
+ import { AdvancedTableComponent } from '../components/advanced-table/advanced-table.component';
3
+ export class AdvancedTableNotNullError extends Error {
4
+ constructor() {
5
+ super('Advanced table component cannot be empty at this context.');
6
+ }
7
+ }
8
+ export class AdvancedTableEditorDirective {
9
+ constructor(table) {
10
+ this.table = table;
11
+ this.dirty = false;
12
+ this.dirtyChange = new EventEmitter(false);
13
+ //
14
+ }
15
+ /**
16
+ * Add rows to table and mark them as added rows
17
+ */
18
+ add(...addItems) {
19
+ if (this.table == null) {
20
+ throw new AdvancedTableNotNullError();
21
+ }
22
+ // decorate items
23
+ const key = this.table.config.columns[0].property || this.table.config.columns[0].name;
24
+ for (let index = 0; index < addItems.length; index++) {
25
+ const element = addItems[index];
26
+ let tr = this.table.dataTable.rows(':has(input[data-id="' + element[key] + '"])').nodes().to$();
27
+ if (tr.hasClass('removed')) {
28
+ tr.toggleClass('removed text-gray-400 text-decoration-line-through');
29
+ }
30
+ else {
31
+ this.table.dataTable.rows.add([element]);
32
+ tr = this.table.dataTable.rows(':has(input[data-id="' + element[key] + '"])').nodes().to$();
33
+ tr.toggleClass('added font-weight-bold text-success');
34
+ }
35
+ }
36
+ this.table.dataTable.draw();
37
+ // find removed
38
+ const removedLength = this.table.dataTable.rows('.removed')[0].length;
39
+ // find added
40
+ const addedLength = this.table.dataTable.rows('.added')[0].length;
41
+ // and emit event
42
+ const items = this.table.dataTable.rows().data();
43
+ this.table.load.emit({
44
+ data: items,
45
+ recordsFiltered: items.length - removedLength,
46
+ recordsTotal: items.length - removedLength
47
+ });
48
+ this.dirty = (removedLength > 0 || addedLength > 0);
49
+ this.dirtyChange.emit(this.dirty);
50
+ }
51
+ /**
52
+ * Marks rows as removed rows
53
+ */
54
+ remove(...removeItems) {
55
+ if (this.table == null) {
56
+ throw new AdvancedTableNotNullError();
57
+ }
58
+ // get key
59
+ const key = this.table.config.columns[0].property || this.table.config.columns[0].name;
60
+ // loop items
61
+ for (let index = 0; index < removeItems.length; index++) {
62
+ const element = removeItems[index];
63
+ const tr = this.table.dataTable.rows(':has(input[data-id="' + element[key] + '"])').nodes().to$();
64
+ // if row is marked as added
65
+ if (tr.hasClass('added')) {
66
+ // remove this dirty row
67
+ this.table.dataTable.rows(tr).remove();
68
+ }
69
+ else {
70
+ // otherwise unmarked row
71
+ tr.toggleClass('removed text-gray-400 text-decoration-line-through');
72
+ }
73
+ // check if item is selected
74
+ const selectedIndex = this.table.selected.findIndex((item) => {
75
+ return item[key] === element[key];
76
+ });
77
+ // and remove it from selected collection
78
+ if (selectedIndex >= 0) {
79
+ this.table.selected.splice(selectedIndex, 1);
80
+ }
81
+ }
82
+ // re-draw table
83
+ this.table.dataTable.draw();
84
+ // get number of table items
85
+ const items = this.table.dataTable.rows().data();
86
+ // get number of removed items
87
+ const removedLength = this.table.dataTable.rows('.removed')[0].length;
88
+ // get number of added items
89
+ const addedLength = this.table.dataTable.rows('.added')[0].length;
90
+ // refresh
91
+ this.table.load.emit({
92
+ data: items,
93
+ recordsFiltered: items.length - removedLength,
94
+ recordsTotal: items.length - removedLength
95
+ });
96
+ this.dirty = (removedLength > 0 || addedLength > 0);
97
+ this.dirtyChange.emit(this.dirty);
98
+ }
99
+ set(items) {
100
+ if (this.table == null) {
101
+ throw new AdvancedTableNotNullError();
102
+ }
103
+ // clear rows
104
+ this.table.selected = [];
105
+ this.table.dataTable.clear();
106
+ // set items
107
+ this.table.dataTable.rows.add(items).draw();
108
+ this.table.load.emit({
109
+ data: items,
110
+ recordsFiltered: items.length,
111
+ recordsTotal: items.length
112
+ });
113
+ }
114
+ /**
115
+ * Undo changes
116
+ */
117
+ undo() {
118
+ if (this.table == null) {
119
+ throw new AdvancedTableNotNullError();
120
+ }
121
+ // reset removed rows
122
+ this.table.dataTable.rows('.removed').nodes().to$().toggleClass('removed text-gray-400 text-decoration-line-through');
123
+ // remove added rows
124
+ this.table.dataTable.rows('.added').remove();
125
+ // clear selected items
126
+ this.table.selected = [];
127
+ const items = this.table.dataTable.rows().data();
128
+ this.table.dataTable.draw();
129
+ this.table.load.emit({
130
+ data: items,
131
+ recordsFiltered: items.length,
132
+ recordsTotal: items.length
133
+ });
134
+ this.dirty = false;
135
+ this.dirtyChange.emit(this.dirty);
136
+ }
137
+ rows() {
138
+ if (this.table == null) {
139
+ throw new AdvancedTableNotNullError();
140
+ }
141
+ return Array.from(this.table.dataTable.rows(':not(.removed)').data());
142
+ }
143
+ }
144
+ AdvancedTableEditorDirective.decorators = [
145
+ { type: Directive, args: [{
146
+ selector: '[tableEditor]'
147
+ },] }
148
+ ];
149
+ /** @nocollapse */
150
+ AdvancedTableEditorDirective.ctorParameters = () => [
151
+ { type: AdvancedTableComponent }
152
+ ];
153
+ AdvancedTableEditorDirective.propDecorators = {
154
+ dirtyChange: [{ type: Output }]
155
+ };
156
+
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdGFibGUtZWRpdG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bml2ZXJzaXMvbmd4LXRhYmxlcy8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmVzL2FkdmFuY2VkLXRhYmxlLWVkaXRvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNPLFNBQVMsRUFBb0IsTUFBTSxFQUFFLFlBQVksRUFDOUQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFFL0YsTUFBTSxnQ0FBaUMsU0FBUSxLQUFLO0lBQ2xEO1FBQ0UsS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7SUFDckUsQ0FBQztDQUNGO0FBT0QsTUFBTTtJQUtKLFlBQW9CLEtBQTZCO1FBQTdCLFVBQUssR0FBTCxLQUFLLENBQXdCO1FBSDFDLFVBQUssR0FBWSxLQUFLLENBQUM7UUFDcEIsZ0JBQVcsR0FBMEIsSUFBSSxZQUFZLENBQVUsS0FBSyxDQUFDLENBQUM7UUFHOUUsRUFBRTtJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUcsQ0FBQyxHQUFHLFFBQWU7UUFDcEIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtZQUN0QixNQUFNLElBQUkseUJBQXlCLEVBQUUsQ0FBQztTQUN2QztRQUNELGlCQUFpQjtRQUNqQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdkYsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDcEQsTUFBTSxPQUFP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Ozs7MEJBZ0I1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRWxlbWVudFJlZiwgRGlyZWN0aXZlLCBWaWV3Q29udGFpbmVyUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFkdmFuY2VkVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLXRhYmxlLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjbGFzcyBBZHZhbmNlZFRhYmxlTm90TnVsbEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignQWR2YW5jZWQgdGFibGUgY29tcG9uZW50IGNhbm5vdCBiZSBlbXB0eSBhdCB0aGlzIGNvbnRleHQuJyk7XG4gIH1cbn1cblxuQERpcmVjdGl2ZShcbiB7XG4gICBzZWxlY3RvcjogJ1t0YWJsZUVkaXRvcl0nXG4gfVxuKVxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkVGFibGVFZGl0b3JEaXJlY3RpdmUge1xuXG4gIHB1YmxpYyBkaXJ0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgZGlydHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFibGU6IEFkdmFuY2VkVGFibGVDb21wb25lbnQpIHtcbiAgICAvL1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCByb3dzIHRvIHRhYmxlIGFuZCBtYXJrIHRoZW0gYXMgYWRkZWQgcm93c1xuICAgKi9cbiAgYWRkKC4uLmFkZEl0ZW1zOiBhbnlbXSkge1xuICAgIGlmICh0aGlzLnRhYmxlID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBBZHZhbmNlZFRhYmxlTm90TnVsbEVycm9yKCk7XG4gICAgfVxuICAgIC8vIGRlY29yYXRlIGl0ZW1zXG4gICAgY29uc3Qga2V5ID0gdGhpcy50YWJsZS5jb25maWcuY29sdW1uc1swXS5wcm9wZXJ0eSB8fCB0aGlzLnRhYmxlLmNvbmZpZy5jb2x1bW5zWzBdLm5hbWU7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFkZEl0ZW1zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgZWxlbWVudCA9IGFkZEl0ZW1zW2luZGV4XTtcbiAgICAgIGxldCB0ciA9IHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoJzpoYXMoaW5wdXRbZGF0YS1pZD1cIicgKyBlbGVtZW50W2tleV0gKyAnXCJdKScpLm5vZGVzKCkudG8kKCk7XG4gICAgICBpZiAodHIuaGFzQ2xhc3MoJ3JlbW92ZWQnKSkge1xuICAgICAgICB0ci50b2dnbGVDbGFzcygncmVtb3ZlZCB0ZXh0LWdyYXktNDAwIHRleHQtZGVjb3JhdGlvbi1saW5lLXRocm91Z2gnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MuYWRkKFtlbGVtZW50XSk7XG4gICAgICAgIHRyID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygnOmhhcyhpbnB1dFtkYXRhLWlkPVwiJyArIGVsZW1lbnRba2V5XSArICdcIl0pJykubm9kZXMoKS50byQoKTtcbiAgICAgICAgdHIudG9nZ2xlQ2xhc3MoJ2FkZGVkIGZvbnQtd2VpZ2h0LWJvbGQgdGV4dC1zdWNjZXNzJyk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudGFibGUuZGF0YVRhYmxlLmRyYXcoKTtcbiAgICAvLyBmaW5kIHJlbW92ZWRcbiAgICBjb25zdCByZW1vdmVkTGVuZ3RoID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygnLnJlbW92ZWQnKVswXS5sZW5ndGg7XG4gICAgLy8gZmluZCBhZGRlZFxuICAgIGNvbnN0IGFkZGVkTGVuZ3RoID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygnLmFkZGVkJylbMF0ubGVuZ3RoO1xuICAgIC8vIGFuZCBlbWl0IGV2ZW50XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCkuZGF0YSgpO1xuICAgIHRoaXMudGFibGUubG9hZC5lbWl0KHtcbiAgICAgIGRhdGE6IGl0ZW1zLFxuICAgICAgcmVjb3Jkc0ZpbHRlcmVkOiBpdGVtcy5sZW5ndGggLSByZW1vdmVkTGVuZ3RoLFxuICAgICAgcmVjb3Jkc1RvdGFsOiBpdGVtcy5sZW5ndGggLSByZW1vdmVkTGVuZ3RoXG4gICAgfSk7XG4gICAgdGhpcy5kaXJ0eSA9IChyZW1vdmVkTGVuZ3RoID4gMCB8fCBhZGRlZExlbmd0aCA+IDApO1xuICAgIHRoaXMuZGlydHlDaGFuZ2UuZW1pdCh0aGlzLmRpcnR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrcyByb3dzIGFzIHJlbW92ZWQgcm93c1xuICAgKi9cbiAgcmVtb3ZlKC4uLnJlbW92ZUl0ZW1zOiBhbnlbXSkge1xuICAgIGlmICh0aGlzLnRhYmxlID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBBZHZhbmNlZFRhYmxlTm90TnVsbEVycm9yKCk7XG4gICAgfVxuICAgIC8vIGdldCBrZXlcbiAgICBjb25zdCBrZXkgPSB0aGlzLnRhYmxlLmNvbmZpZy5jb2x1bW5zWzBdLnByb3BlcnR5IHx8IHRoaXMudGFibGUuY29uZmlnLmNvbHVtbnNbMF0ubmFtZTtcbiAgICAvLyBsb29wIGl0ZW1zXG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcmVtb3ZlSXRlbXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSByZW1vdmVJdGVtc1tpbmRleF07XG4gICAgICAgIGNvbnN0IHRyID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygnOmhhcyhpbnB1dFtkYXRhLWlkPVwiJyArIGVsZW1lbnRba2V5XSArICdcIl0pJykubm9kZXMoKS50byQoKTtcbiAgICAgICAgLy8gaWYgcm93IGlzIG1hcmtlZCBhcyBhZGRlZFxuICAgICAgICBpZiAodHIuaGFzQ2xhc3MoJ2FkZGVkJykpIHtcbiAgICAgICAgICAvLyByZW1vdmUgdGhpcyBkaXJ0eSByb3dcbiAgICAgICAgICB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKHRyKS5yZW1vdmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBvdGhlcndpc2UgdW5tYXJrZWQgcm93XG4gICAgICAgICAgdHIudG9nZ2xlQ2xhc3MoJ3JlbW92ZWQgdGV4dC1ncmF5LTQwMCB0ZXh0LWRlY29yYXRpb24tbGluZS10aHJvdWdoJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2hlY2sgaWYgaXRlbSBpcyBzZWxlY3RlZFxuICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy50YWJsZS5zZWxlY3RlZC5maW5kSW5kZXgoKGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbVtrZXldID09PSBlbGVtZW50W2tleV07XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBhbmQgcmVtb3ZlIGl0IGZyb20gc2VsZWN0ZWQgY29sbGVjdGlvblxuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCA+PSAwKSB7XG4gICAgICAgICAgdGhpcy50YWJsZS5zZWxlY3RlZC5zcGxpY2Uoc2VsZWN0ZWRJbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIHJlLWRyYXcgdGFibGVcbiAgICAgIHRoaXMudGFibGUuZGF0YVRhYmxlLmRyYXcoKTtcbiAgICAgIC8vIGdldCBudW1iZXIgb2YgdGFibGUgaXRlbXNcbiAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygpLmRhdGEoKTtcbiAgICAgIC8vIGdldCBudW1iZXIgb2YgcmVtb3ZlZCBpdGVtc1xuICAgICAgY29uc3QgcmVtb3ZlZExlbmd0aCA9IHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoJy5yZW1vdmVkJylbMF0ubGVuZ3RoO1xuICAgICAgLy8gZ2V0IG51bWJlciBvZiBhZGRlZCBpdGVtc1xuICAgICAgY29uc3QgYWRkZWRMZW5ndGggPSB0aGlzLnRhYmxlLmRhdGFUYWJsZS5yb3dzKCcuYWRkZWQnKVswXS5sZW5ndGg7XG4gICAgICAvLyByZWZyZXNoXG4gICAgICB0aGlzLnRhYmxlLmxvYWQuZW1pdCh7XG4gICAgICAgIGRhdGE6IGl0ZW1zLFxuICAgICAgICByZWNvcmRzRmlsdGVyZWQ6IGl0ZW1zLmxlbmd0aCAtIHJlbW92ZWRMZW5ndGgsXG4gICAgICAgIHJlY29yZHNUb3RhbDogaXRlbXMubGVuZ3RoIC0gcmVtb3ZlZExlbmd0aFxuICAgICAgfSk7XG4gICAgICB0aGlzLmRpcnR5ID0gKHJlbW92ZWRMZW5ndGggPiAwIHx8IGFkZGVkTGVuZ3RoID4gMCk7XG4gICAgICB0aGlzLmRpcnR5Q2hhbmdlLmVtaXQodGhpcy5kaXJ0eSk7XG4gIH1cblxuICBzZXQoaXRlbXM6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMudGFibGUgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEFkdmFuY2VkVGFibGVOb3ROdWxsRXJyb3IoKTtcbiAgICB9XG4gICAgLy8gY2xlYXIgcm93c1xuICAgIHRoaXMudGFibGUuc2VsZWN0ZWQgPSBbXTtcbiAgICB0aGlzLnRhYmxlLmRhdGFUYWJsZS5jbGVhcigpO1xuICAgIC8vIHNldCBpdGVtc1xuICAgIHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MuYWRkKGl0ZW1zKS5kcmF3KCk7XG4gICAgdGhpcy50YWJsZS5sb2FkLmVtaXQoe1xuICAgICAgZGF0YTogaXRlbXMsXG4gICAgICByZWNvcmRzRmlsdGVyZWQ6IGl0ZW1zLmxlbmd0aCxcbiAgICAgIHJlY29yZHNUb3RhbDogaXRlbXMubGVuZ3RoXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVW5kbyBjaGFuZ2VzXG4gICAqL1xuICB1bmRvKCkge1xuICAgIGlmICh0aGlzLnRhYmxlID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBBZHZhbmNlZFRhYmxlTm90TnVsbEVycm9yKCk7XG4gICAgfVxuICAgIC8vIHJlc2V0IHJlbW92ZWQgcm93c1xuICAgIHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoJy5yZW1vdmVkJykubm9kZXMoKS50byQoKS50b2dnbGVDbGFzcygncmVtb3ZlZCB0ZXh0LWdyYXktNDAwIHRleHQtZGVjb3JhdGlvbi1saW5lLXRocm91Z2gnKTtcbiAgICAvLyByZW1vdmUgYWRkZWQgcm93c1xuICAgIHRoaXMudGFibGUuZGF0YVRhYmxlLnJvd3MoJy5hZGRlZCcpLnJlbW92ZSgpO1xuICAgIC8vIGNsZWFyIHNlbGVjdGVkIGl0ZW1zXG4gICAgdGhpcy50YWJsZS5zZWxlY3RlZCA9IFtdO1xuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy50YWJsZS5kYXRhVGFibGUucm93cygpLmRhdGEoKTtcbiAgICB0aGlzLnRhYmxlLmRhdGFUYWJsZS5kcmF3KCk7XG4gICAgdGhpcy50YWJsZS5sb2FkLmVtaXQoe1xuICAgICAgZGF0YTogaXRlbXMsXG4gICAgICByZWNvcmRzRmlsdGVyZWQ6IGl0ZW1zLmxlbmd0aCxcbiAgICAgIHJlY29yZHNUb3RhbDogaXRlbXMubGVuZ3RoXG4gICAgfSk7XG4gICAgdGhpcy5kaXJ0eSA9IGZhbHNlO1xuICAgIHRoaXMuZGlydHlDaGFuZ2UuZW1pdCh0aGlzLmRpcnR5KTtcbiAgfVxuXG4gIHJvd3MoKSB7XG4gICAgaWYgKHRoaXMudGFibGUgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEFkdmFuY2VkVGFibGVOb3ROdWxsRXJyb3IoKTtcbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy50YWJsZS5kYXRhVGFibGUucm93cygnOm5vdCgucmVtb3ZlZCknKS5kYXRhKCkpO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,225 @@
1
+ import * as tslib_1 from "tslib";
2
+ import { Directive, HostListener } from '@angular/core';
3
+ import { ActivatedTableService } from '../tables.activated-table.service';
4
+ import { AngularDataContext } from '@themost/angular';
5
+ import { ConfigurationService, ErrorService, LoadingService } from '@universis/common';
6
+ import { TranslateService } from '@ngx-translate/core';
7
+ import { ResponseError } from '@themost/client';
8
+ const MAX_EXPORT_ITEMS = 500;
9
+ export class BtnExpDirective {
10
+ constructor(_activatedTable, _context, _config, _translate, _loadingService, _errorService) {
11
+ this._activatedTable = _activatedTable;
12
+ this._context = _context;
13
+ this._config = _config;
14
+ this._translate = _translate;
15
+ this._loadingService = _loadingService;
16
+ this._errorService = _errorService;
17
+ }
18
+ clickEvent(event) {
19
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
20
+ event.preventDefault();
21
+ event.stopPropagation();
22
+ if (this._activatedTable.activeTable) {
23
+ const lastQuery = this._activatedTable.activeTable.lastQuery;
24
+ const tableConfig = this._activatedTable.activeTable.config;
25
+ const serviceHeaders = this._context.getService().getHeaders();
26
+ const queryModel = lastQuery.getModel();
27
+ let query = this._context.model(queryModel).asQueryable();
28
+ const queryParams = lastQuery.getParams();
29
+ query = this.constructQuery(query, queryParams, tableConfig, serviceHeaders);
30
+ const maxExportItems = 1000;
31
+ if (maxExportItems && typeof maxExportItems === 'number' && maxExportItems > 0) {
32
+ query.skip(0).take(maxExportItems);
33
+ }
34
+ else {
35
+ query.skip(0).take(MAX_EXPORT_ITEMS);
36
+ }
37
+ // This constructs the URI based on the way @themost does
38
+ const url = this.constructURL(query);
39
+ this.downloadFile(url, query.getService().getHeaders(), query.getModel());
40
+ }
41
+ });
42
+ }
43
+ /**
44
+ * Sets the parameters to the query based on
45
+ * the active filters of the activated table
46
+ * @param {ClientDataQueryable} query
47
+ * @param params: The filters of the last query of the activated table
48
+ * @return ClientDataQueryable
49
+ */
50
+ setParams(query, params) {
51
+ if (params && typeof params === 'object') {
52
+ Object.keys(params).forEach((key) => {
53
+ query.setParam(key, params[key]);
54
+ });
55
+ }
56
+ return query;
57
+ }
58
+ /**
59
+ * Sets the headers to the query based on
60
+ * the default headers of the DataContext
61
+ * and appending the accept header to get
62
+ * an xlsx file from the API
63
+ * @param {ClientDataQueryable} query
64
+ * @param {Headers} headers: The headers to append to the query
65
+ * @return ClientDataQueryable
66
+ */
67
+ setHeaders(query, headers) {
68
+ Object.keys(headers).forEach((key) => {
69
+ if (headers.hasOwnProperty(key)) {
70
+ query.getService().setHeader(key, headers[key]);
71
+ }
72
+ });
73
+ // sets a header to accept xlsx files
74
+ query.getService().setHeader('Accept', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
75
+ return query;
76
+ }
77
+ /**
78
+ * Constructs the select parameter of the
79
+ * ClientDataQuery by replacing the target name
80
+ * of the field based on the localized translation
81
+ * of that property on the advanced tabled
82
+ * @param {ClientDataQueryable} query
83
+ * @param tableConfig: The configuration of the activated table
84
+ * @return ClientDataQueryable
85
+ */
86
+ constructQueryParam(query, tableConfig) {
87
+ let selectQuery = query.getParams().$select;
88
+ let selectQueryArray = selectQuery.split(',');
89
+ selectQueryArray = selectQueryArray.map((select) => {
90
+ const words = select.split(' ');
91
+ if (words.length === 3) {
92
+ if (tableConfig && tableConfig.columns) {
93
+ for (const column of tableConfig.columns) {
94
+ if (column.property === words[2] && column.title) {
95
+ words[2] = `"${this._translate.instant(column.title)}"`;
96
+ }
97
+ else if (column.property === words[2]) {
98
+ words[2] = `"${this._translate.instant(words[2])}"`;
99
+ }
100
+ }
101
+ }
102
+ }
103
+ if (words.length === 1) {
104
+ if (tableConfig && tableConfig.columns) {
105
+ for (const column of tableConfig.columns) {
106
+ if (column.name === words[0] && column.title) {
107
+ words[0] = `${words[0]} as "${this._translate.instant(column.title)}"`;
108
+ break;
109
+ }
110
+ else if (column.name === words[0] && column.property) {
111
+ words[0] = `${words[0]} as "${this._translate.instant(column.property)}"`;
112
+ break;
113
+ }
114
+ else if (words[0] === column.name && words[0] === "id" && column.hidden) {
115
+ break;
116
+ }
117
+ else if (words[0] == column.name || words[0] === column.property) {
118
+ words[0] = `${words[0]} as "${this._translate.instant(words[0])}"`;
119
+ }
120
+ }
121
+ }
122
+ return words[0];
123
+ }
124
+ return words.join(' ');
125
+ });
126
+ selectQuery = selectQueryArray.join(',');
127
+ query.setParam('$select', selectQuery);
128
+ return query;
129
+ }
130
+ /**
131
+ * Constructs the fetch URL based the query parameters
132
+ * @param {ClientDataQueryable} query
133
+ * @return String
134
+ */
135
+ constructURL(query) {
136
+ const baseURL = query.getService().getBase();
137
+ let url = baseURL.endsWith('/') ? (baseURL + query.getModel() + '?') : (baseURL + '/' + query.getModel() + '?');
138
+ Object.keys(query.getParams()).forEach((key, index) => {
139
+ if (index === 0) {
140
+ url += key + '=' + query.getParams()[key];
141
+ }
142
+ else {
143
+ url += '&' + key + '=' + query.getParams()[key];
144
+ }
145
+ });
146
+ return url;
147
+ }
148
+ /**
149
+ * Constructs the query by setting the parameters of the
150
+ * advanced table's active filters, sets the necessary headers
151
+ * and build the select parameter of the query
152
+ * @param {ClientDataQueryable} query
153
+ * @param params: The filters of the last query of the activated table
154
+ * @param tableConfig: The configuration of the activated table
155
+ * @param {Headers} headers: The headers to append to the query
156
+ * @return ClientDataQueryable
157
+ */
158
+ constructQuery(query, params, tableConfig, headers) {
159
+ let _query = this.setParams(query, params);
160
+ _query = this.setHeaders(_query, headers);
161
+ _query = this.constructQueryParam(_query, tableConfig);
162
+ return _query;
163
+ }
164
+ /**
165
+ * Fetches and saves the xlsx file
166
+ * @param {String} url
167
+ * @param {Headers} serviceHeaders: The headers to append to the query
168
+ * @param modelName: The model name of the advanced table
169
+ */
170
+ downloadFile(url, serviceHeaders, modelName) {
171
+ this._loadingService.showLoading();
172
+ fetch(encodeURI(url), {
173
+ headers: serviceHeaders,
174
+ credentials: 'include'
175
+ }).then(response => {
176
+ if (response && !response.ok) {
177
+ throw new ResponseError(response.statusText, response.status);
178
+ }
179
+ return response.blob();
180
+ }).then(blob => {
181
+ const objectUrl = window.URL.createObjectURL(blob);
182
+ const a = document.createElement('a');
183
+ document.body.appendChild(a);
184
+ a.setAttribute('style', 'display: none');
185
+ a.href = objectUrl;
186
+ const downloadName = `${modelName}.xlsx`;
187
+ a.download = downloadName;
188
+ // this adds support for IE and MS Edge (up to version 44.19041)
189
+ if (window.navigator && window.navigator.msSaveOrOpenBlob) {
190
+ window.navigator.msSaveOrOpenBlob(blob, downloadName);
191
+ }
192
+ else {
193
+ // for all other browsers
194
+ a.click();
195
+ }
196
+ window.URL.revokeObjectURL(objectUrl);
197
+ a.remove();
198
+ this._loadingService.hideLoading();
199
+ }).catch(err => {
200
+ this._loadingService.hideLoading();
201
+ this._errorService.showError(err, {
202
+ continueLink: '.'
203
+ });
204
+ });
205
+ }
206
+ }
207
+ BtnExpDirective.decorators = [
208
+ { type: Directive, args: [{
209
+ selector: '.universis-btn-export'
210
+ },] }
211
+ ];
212
+ /** @nocollapse */
213
+ BtnExpDirective.ctorParameters = () => [
214
+ { type: ActivatedTableService },
215
+ { type: AngularDataContext },
216
+ { type: ConfigurationService },
217
+ { type: TranslateService },
218
+ { type: LoadingService },
219
+ { type: ErrorService }
220
+ ];
221
+ BtnExpDirective.propDecorators = {
222
+ clickEvent: [{ type: HostListener, args: ['click', ['$event'],] }]
223
+ };
224
+
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRuZXhwLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bml2ZXJzaXMvbmd4LXRhYmxlcy8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmVzL2J0bmV4cC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDckYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFzQixhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUduRSxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQztBQUs3QixNQUFNO0lBQ0osWUFBb0IsZUFBc0MsRUFDdEMsUUFBNEIsRUFDNUIsT0FBNkIsRUFDN0IsVUFBNEIsRUFDNUIsZUFBK0IsRUFDL0IsYUFBMkI7UUFMM0Isb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBQ3RDLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBQzVCLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQzdCLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQzVCLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUMvQixrQkFBYSxHQUFiLGFBQWEsQ0FBYztJQUMvQyxDQUFDO0lBR0ssVUFBVSxDQUFDLEtBQUs7O1lBQ3BCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRTtnQkFDcEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxD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QUNYO1lBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDYixJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDaEMsWUFBWSxFQUFFLEdBQUc7YUFDbEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUFyTUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx1QkFBdUI7YUFDbEM7Ozs7WUFYTyxxQkFBcUI7WUFDckIsa0JBQWtCO1lBQ2xCLG9CQUFvQjtZQUNwQixnQkFBZ0I7WUFEb0IsY0FBYztZQUE1QixZQUFZOzs7eUJBbUJ2QyxZQUFZLFNBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFRhYmxlU2VydmljZX0gZnJvbSAnLi4vdGFibGVzLmFjdGl2YXRlZC10YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7QW5ndWxhckRhdGFDb250ZXh0fSBmcm9tICdAdGhlbW9zdC9hbmd1bGFyJztcbmltcG9ydCB7Q29uZmlndXJhdGlvblNlcnZpY2UsIEVycm9yU2VydmljZSwgTG9hZGluZ1NlcnZpY2V9IGZyb20gJ0B1bml2ZXJzaXMvY29tbW9uJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0NsaWVudERhdGFRdWVyeWFibGUsIFJlc3BvbnNlRXJyb3J9IGZyb20gJ0B0aGVtb3N0L2NsaWVudCc7XG5pbXBvcnQgeyBUYWJsZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9jb21wb25lbnRzL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLXRhYmxlLmludGVyZmFjZXMnO1xuXG5jb25zdCBNQVhfRVhQT1JUX0lURU1TID0gNTAwO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICcudW5pdmVyc2lzLWJ0bi1leHBvcnQnXG59KVxuZXhwb3J0IGNsYXNzIEJ0bkV4cERpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2FjdGl2YXRlZFRhYmxlOiBBY3RpdmF0ZWRUYWJsZVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2NvbnRleHQ6IEFuZ3VsYXJEYXRhQ29udGV4dCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfY29uZmlnOiBDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9sb2FkaW5nU2VydmljZTogTG9hZGluZ1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2Vycm9yU2VydmljZTogRXJyb3JTZXJ2aWNlKSB7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIGFzeW5jIGNsaWNrRXZlbnQoZXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLl9hY3RpdmF0ZWRUYWJsZS5hY3RpdmVUYWJsZSkge1xuICAgICAgY29uc3QgbGFzdFF1ZXJ5ID0gdGhpcy5fYWN0aXZhdGVkVGFibGUuYWN0aXZlVGFibGUubGFzdFF1ZXJ5O1xuICAgICAgY29uc3QgdGFibGVDb25maWcgPSB0aGlzLl9hY3RpdmF0ZWRUYWJsZS5hY3RpdmVUYWJsZS5jb25maWc7XG4gICAgICBjb25zdCBzZXJ2aWNlSGVhZGVycyA9IHRoaXMuX2NvbnRleHQuZ2V0U2VydmljZSgpLmdldEhlYWRlcnMoKTtcbiAgICAgIGNvbnN0IHF1ZXJ5TW9kZWwgPSBsYXN0UXVlcnkuZ2V0TW9kZWwoKTtcbiAgICAgIGxldCBxdWVyeSA9IHRoaXMuX2NvbnRleHQubW9kZWwocXVlcnlNb2RlbCkuYXNRdWVyeWFibGUoKTtcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbGFzdFF1ZXJ5LmdldFBhcmFtcygpO1xuICAgICAgcXVlcnkgPSB0aGlzLmNvbnN0cnVjdFF1ZXJ5KHF1ZXJ5LCBxdWVyeVBhcmFtcywgdGFibGVDb25maWcsIHNlcnZpY2VIZWFkZXJzKTtcbiAgICAgIGNvbnN0IG1heEV4cG9ydEl0ZW1zID0gMTAwMDtcbiAgICAgIGlmIChtYXhFeHBvcnRJdGVtcyAmJiB0eXBlb2YgbWF4RXhwb3J0SXRlbXMgPT09ICdudW1iZXInICYmIG1heEV4cG9ydEl0ZW1zID4gMCkge1xuICAgICAgICBxdWVyeS5za2lwKDApLnRha2UobWF4RXhwb3J0SXRlbXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnkuc2tpcCgwKS50YWtlKE1BWF9FWFBPUlRfSVRFTVMpO1xuICAgICAgfVxuICAgICAgLy8gVGhpcyBjb25zdHJ1Y3RzIHRoZSBVUkkgYmFzZWQgb24gdGhlIHdheSBAdGhlbW9zdCBkb2VzXG4gICAgICBjb25zdCB1cmwgPSB0aGlzLmNvbnN0cnVjdFVSTChxdWVyeSk7XG4gICAgICB0aGlzLmRvd25sb2FkRmlsZSh1cmwsIHF1ZXJ5LmdldFNlcnZpY2UoKS5nZXRIZWFkZXJzKCksIHF1ZXJ5LmdldE1vZGVsKCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwYXJhbWV0ZXJzIHRvIHRoZSBxdWVyeSBiYXNlZCBvblxuICAgKiB0aGUgYWN0aXZlIGZpbHRlcnMgb2YgdGhlIGFjdGl2YXRlZCB0YWJsZVxuICAgKiBAcGFyYW0ge0NsaWVudERhdGFRdWVyeWFibGV9IHF1ZXJ5XG4gICAqIEBwYXJhbSBwYXJhbXM6IFRoZSBmaWx0ZXJzIG9mIHRoZSBsYXN0IHF1ZXJ5IG9mIHRoZSBhY3RpdmF0ZWQgdGFibGVcbiAgICogQHJldHVybiBDbGllbnREYXRhUXVlcnlhYmxlXG4gICAqL1xuICBzZXRQYXJhbXMocXVlcnk6IENsaWVudERhdGFRdWVyeWFibGUsIHBhcmFtcyk6IENsaWVudERhdGFRdWVyeWFibGUge1xuICAgIGlmIChwYXJhbXMgJiYgdHlwZW9mIHBhcmFtcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgIE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIHF1ZXJ5LnNldFBhcmFtKGtleSwgcGFyYW1zW2tleV0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBxdWVyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBoZWFkZXJzIHRvIHRoZSBxdWVyeSBiYXNlZCBvblxuICAgKiB0aGUgZGVmYXVsdCBoZWFkZXJzIG9mIHRoZSBEYXRhQ29udGV4dFxuICAgKiBhbmQgYXBwZW5kaW5nIHRoZSBhY2NlcHQgaGVhZGVyIHRvIGdldFxuICAgKiBhbiB4bHN4IGZpbGUgZnJvbSB0aGUgQVBJXG4gICAqIEBwYXJhbSB7Q2xpZW50RGF0YVF1ZXJ5YWJsZX0gcXVlcnlcbiAgICogQHBhcmFtIHtIZWFkZXJzfSBoZWFkZXJzOiBUaGUgaGVhZGVycyB0byBhcHBlbmQgdG8gdGhlIHF1ZXJ5XG4gICAqIEByZXR1cm4gQ2xpZW50RGF0YVF1ZXJ5YWJsZVxuICAgKi9cbiAgc2V0SGVhZGVycyhxdWVyeTogQ2xpZW50RGF0YVF1ZXJ5YWJsZSwgaGVhZGVyczogSGVhZGVycyk6IENsaWVudERhdGFRdWVyeWFibGUge1xuICAgIE9iamVjdC5rZXlzKGhlYWRlcnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGhlYWRlcnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBxdWVyeS5nZXRTZXJ2aWNlKCkuc2V0SGVhZGVyKGtleSwgaGVhZGVyc1trZXldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBzZXRzIGEgaGVhZGVyIHRvIGFjY2VwdCB4bHN4IGZpbGVzXG4gICAgcXVlcnkuZ2V0U2VydmljZSgpLnNldEhlYWRlcignQWNjZXB0JywgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Jyk7XG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgdGhlIHNlbGVjdCBwYXJhbWV0ZXIgb2YgdGhlXG4gICAqIENsaWVudERhdGFRdWVyeSBieSByZXBsYWNpbmcgdGhlIHRhcmdldCBuYW1lXG4gICAqIG9mIHRoZSBmaWVsZCBiYXNlZCBvbiB0aGUgbG9jYWxpemVkIHRyYW5zbGF0aW9uXG4gICAqIG9mIHRoYXQgcHJvcGVydHkgb24gdGhlIGFkdmFuY2VkIHRhYmxlZFxuICAgKiBAcGFyYW0ge0NsaWVudERhdGFRdWVyeWFibGV9IHF1ZXJ5XG4gICAqIEBwYXJhbSB0YWJsZUNvbmZpZzogVGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGFjdGl2YXRlZCB0YWJsZVxuICAgKiBAcmV0dXJuIENsaWVudERhdGFRdWVyeWFibGVcbiAgICovXG4gIGNvbnN0cnVjdFF1ZXJ5UGFyYW0ocXVlcnk6IENsaWVudERhdGFRdWVyeWFibGUsIHRhYmxlQ29uZmlnOiBUYWJsZUNvbmZpZ3VyYXRpb24pOiBDbGllbnREYXRhUXVlcnlhYmxlIHtcbiAgICBsZXQgc2VsZWN0UXVlcnkgPSBxdWVyeS5nZXRQYXJhbXMoKS4kc2VsZWN0O1xuICAgIGxldCBzZWxlY3RRdWVyeUFycmF5ID0gc2VsZWN0UXVlcnkuc3BsaXQoJywnKTtcbiAgICBzZWxlY3RRdWVyeUFycmF5ID0gc2VsZWN0UXVlcnlBcnJheS5tYXAoKHNlbGVjdCkgPT4ge1xuICAgICAgY29uc3Qgd29yZHMgPSBzZWxlY3Quc3BsaXQoJyAnKTtcbiAgICAgIGlmICh3b3Jkcy5sZW5ndGggPT09IDMpIHtcbiAgICAgICAgaWYgKHRhYmxlQ29uZmlnICYmIHRhYmxlQ29uZmlnLmNvbHVtbnMpIHtcbiAgICAgICAgICBmb3IoY29uc3QgY29sdW1uIG9mIHRhYmxlQ29uZmlnLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIGlmIChjb2x1bW4ucHJvcGVydHkgPT09IHdvcmRzWzJdICYmIGNvbHVtbi50aXRsZSkge1xuICAgICAgICAgICAgICB3b3Jkc1syXSA9IGBcIiR7dGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoY29sdW1uLnRpdGxlKX1cImA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbHVtbi5wcm9wZXJ0eSA9PT0gd29yZHNbMl0pIHtcbiAgICAgICAgICAgICAgd29yZHNbMl0gPSBgXCIke3RoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KHdvcmRzWzJdKX1cImBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh3b3Jkcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgaWYgKHRhYmxlQ29uZmlnICYmIHRhYmxlQ29uZmlnLmNvbHVtbnMpIHtcbiAgICAgICAgICBmb3IoY29uc3QgY29sdW1uIG9mIHRhYmxlQ29uZmlnLmNvbHVtbnMpe1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5uYW1lID09PSB3b3Jkc1swXSAmJiBjb2x1bW4udGl0bGUpIHtcbiAgICAgICAgICAgICAgd29yZHNbMF0gPSBgJHt3b3Jkc1swXX0gYXMgXCIke3RoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KGNvbHVtbi50aXRsZSl9XCJgO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29sdW1uLm5hbWUgPT09IHdvcmRzWzBdICYmIGNvbHVtbi5wcm9wZXJ0eSkge1xuICAgICAgICAgICAgICB3b3Jkc1swXSA9IGAke3dvcmRzWzBdfSBhcyBcIiR7dGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoY29sdW1uLnByb3BlcnR5KX1cImA7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh3b3Jkc1swXSA9PT0gY29sdW1uLm5hbWUgJiYgd29yZHNbMF09PT0gXCJpZFwiICYmIGNvbHVtbi5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9IGVsc2UgaWYod29yZHNbMF0gPT0gY29sdW1uLm5hbWUgfHwgd29yZHNbMF09PT0gY29sdW1uLnByb3BlcnR5KSB7XG4gICAgICAgICAgICAgIHdvcmRzWzBdID0gYCR7d29yZHNbMF19IGFzIFwiJHt0aGlzLl90cmFuc2xhdGUuaW5zdGFudCh3b3Jkc1swXSl9XCJgO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gd29yZHNbMF07XG4gICAgICB9XG4gICAgICByZXR1cm4gd29yZHMuam9pbignICcpO1xuICAgIH0pO1xuICAgIHNlbGVjdFF1ZXJ5ID0gc2VsZWN0UXVlcnlBcnJheS5qb2luKCcsJyk7XG4gICAgcXVlcnkuc2V0UGFyYW0oJyRzZWxlY3QnLCBzZWxlY3RRdWVyeSApO1xuICAgIHJldHVybiBxdWVyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIHRoZSBmZXRjaCBVUkwgYmFzZWQgdGhlIHF1ZXJ5IHBhcmFtZXRlcnNcbiAgICogQHBhcmFtIHtDbGllbnREYXRhUXVlcnlhYmxlfSBxdWVyeVxuICAgKiBAcmV0dXJuIFN0cmluZ1xuICAgKi9cbiAgY29uc3RydWN0VVJMKHF1ZXJ5KTogU3RyaW5nIHtcbiAgICBjb25zdCBiYXNlVVJMID0gcXVlcnkuZ2V0U2VydmljZSgpLmdldEJhc2UoKTtcbiAgICBsZXQgdXJsID0gYmFzZVVSTC5lbmRzV2l0aCgnLycpID8gKGJhc2VVUkwgKyBxdWVyeS5nZXRNb2RlbCgpICsgJz8nKSA6IChiYXNlVVJMICsgJy8nICsgcXVlcnkuZ2V0TW9kZWwoKSArICc/Jyk7XG4gICAgT2JqZWN0LmtleXMocXVlcnkuZ2V0UGFyYW1zKCkpLmZvckVhY2goKGtleSwgaW5kZXgpID0+IHtcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICB1cmwgKz0ga2V5ICsgJz0nICsgcXVlcnkuZ2V0UGFyYW1zKClba2V5XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVybCArPSAnJicgKyBrZXkgKyAnPScgKyBxdWVyeS5nZXRQYXJhbXMoKVtrZXldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyB0aGUgcXVlcnkgYnkgc2V0dGluZyB0aGUgcGFyYW1ldGVycyBvZiB0aGVcbiAgICogYWR2YW5jZWQgdGFibGUncyBhY3RpdmUgZmlsdGVycywgc2V0cyB0aGUgbmVjZXNzYXJ5IGhlYWRlcnNcbiAgICogYW5kIGJ1aWxkIHRoZSBzZWxlY3QgcGFyYW1ldGVyIG9mIHRoZSBxdWVyeVxuICAgKiBAcGFyYW0ge0NsaWVudERhdGFRdWVyeWFibGV9IHF1ZXJ5XG4gICAqIEBwYXJhbSBwYXJhbXM6IFRoZSBmaWx0ZXJzIG9mIHRoZSBsYXN0IHF1ZXJ5IG9mIHRoZSBhY3RpdmF0ZWQgdGFibGVcbiAgICogQHBhcmFtIHRhYmxlQ29uZmlnOiBUaGUgY29uZmlndXJhdGlvbiBvZiB0aGUgYWN0aXZhdGVkIHRhYmxlXG4gICAqIEBwYXJhbSB7SGVhZGVyc30gaGVhZGVyczogVGhlIGhlYWRlcnMgdG8gYXBwZW5kIHRvIHRoZSBxdWVyeVxuICAgKiBAcmV0dXJuIENsaWVudERhdGFRdWVyeWFibGVcbiAgICovXG4gIGNvbnN0cnVjdFF1ZXJ5KHF1ZXJ5LCBwYXJhbXMsIHRhYmxlQ29uZmlnLCBoZWFkZXJzOiBIZWFkZXJzKSB7XG4gICAgbGV0IF9xdWVyeSA9IHRoaXMuc2V0UGFyYW1zKHF1ZXJ5LCBwYXJhbXMpO1xuICAgIF9xdWVyeSA9IHRoaXMuc2V0SGVhZGVycyhfcXVlcnksIGhlYWRlcnMpO1xuICAgIF9xdWVyeSA9IHRoaXMuY29uc3RydWN0UXVlcnlQYXJhbShfcXVlcnksIHRhYmxlQ29uZmlnKTtcbiAgICByZXR1cm4gX3F1ZXJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoZXMgYW5kIHNhdmVzIHRoZSB4bHN4IGZpbGVcbiAgICogQHBhcmFtIHtTdHJpbmd9IHVybFxuICAgKiBAcGFyYW0ge0hlYWRlcnN9IHNlcnZpY2VIZWFkZXJzOiBUaGUgaGVhZGVycyB0byBhcHBlbmQgdG8gdGhlIHF1ZXJ5XG4gICAqIEBwYXJhbSBtb2RlbE5hbWU6IFRoZSBtb2RlbCBuYW1lIG9mIHRoZSBhZHZhbmNlZCB0YWJsZVxuICAgKi9cbiAgZG93bmxvYWRGaWxlKHVybCwgc2VydmljZUhlYWRlcnM6IEhlYWRlcnMsIG1vZGVsTmFtZSkge1xuICAgIHRoaXMuX2xvYWRpbmdTZXJ2aWNlLnNob3dMb2FkaW5nKCk7XG4gICAgZmV0Y2goZW5jb2RlVVJJKHVybCksIHtcbiAgICAgIGhlYWRlcnM6IHNlcnZpY2VIZWFkZXJzLFxuICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJ1xuICAgIH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgaWYgKHJlc3BvbnNlICYmICFyZXNwb25zZS5vaykge1xuICAgICAgICB0aHJvdyBuZXcgUmVzcG9uc2VFcnJvcihyZXNwb25zZS5zdGF0dXNUZXh0LCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3BvbnNlLmJsb2IoKTtcbiAgICB9KS50aGVuKGJsb2IgPT4ge1xuICAgICAgY29uc3Qgb2JqZWN0VXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcbiAgICAgIGEuc2V0QXR0cmlidXRlKCdzdHlsZScsICdkaXNwbGF5OiBub25lJyk7XG4gICAgICBhLmhyZWYgPSBvYmplY3RVcmw7XG4gICAgICBjb25zdCBkb3dubG9hZE5hbWUgPSBgJHttb2RlbE5hbWV9Lnhsc3hgO1xuICAgICAgYS5kb3dubG9hZCA9IGRvd25sb2FkTmFtZTtcbiAgICAgIC8vIHRoaXMgYWRkcyBzdXBwb3J0IGZvciBJRSBhbmQgTVMgRWRnZSAodXAgdG8gdmVyc2lvbiA0NC4xOTA0MSlcbiAgICAgIGlmICh3aW5kb3cubmF2aWdhdG9yICYmIHdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYikge1xuICAgICAgICB3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IoYmxvYiwgZG93bmxvYWROYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGZvciBhbGwgb3RoZXIgYnJvd3NlcnNcbiAgICAgICAgYS5jbGljaygpO1xuICAgICAgfVxuICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VXJsKTtcbiAgICAgIGEucmVtb3ZlKCk7XG4gICAgICB0aGlzLl9sb2FkaW5nU2VydmljZS5oaWRlTG9hZGluZygpO1xuICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICB0aGlzLl9sb2FkaW5nU2VydmljZS5oaWRlTG9hZGluZygpO1xuICAgICAgdGhpcy5fZXJyb3JTZXJ2aWNlLnNob3dFcnJvcihlcnIsIHtcbiAgICAgICAgY29udGludWVMaW5rOiAnLidcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,104 @@
1
+ export const TABLES_EL = {
2
+ "Tables": {
3
+ "Export": "Εξαγωγή",
4
+ "More": "Περισσότερα",
5
+ "Search": "Αναζήτηση",
6
+ "SearchPlaceholder": "Αναζήτηση...",
7
+ "GroupBy": "Ομαδοποίηση ανά",
8
+ "DataTable": {
9
+ "paginate": {
10
+ "first": "Πρώτη σελίδα",
11
+ "last": "Τελεταία σελίδα",
12
+ "next": "Επόμενη",
13
+ "previous": "Προηγούμενη"
14
+ },
15
+ "info": "Εμφάνιση _START_ έως _END_ από _TOTAL_ εγγραφές",
16
+ "infoEmpty": "Δεν βρέθηκαν εγγραφές",
17
+ "loading": "Εμφάνιση δεδομένων...",
18
+ "processing": "Παραλαβή δεδομένων...",
19
+ "emptyTable": "Δεν βρέθηκαν αποτελέσματα."
20
+ },
21
+ "ColumnDisplay": "Επιλογή Εμφάνισης στηλών",
22
+ "ColumnDisplayInfo": "Επιλέξτε τις στήλες που θέλετε να εμφανίζονται.",
23
+ "Save": "Εφαρμογή",
24
+ "Apply": "Εφαρμογή",
25
+ "Cancel": "Ακύρωση",
26
+ "RecordsPerPage": "Εγγραφές ανά σελίδα",
27
+ "PageInfo": "{{start}}-{{end}} από {{recordsTotal}}",
28
+ "SearchListPlaceholder": "Αναζητήστε στη λίστα...",
29
+ "Filters": "Φίλτρα",
30
+ "All": "Όλα",
31
+ "AddItem": "Προσθήκη στοιχείου",
32
+ "EmptyTableTitle": "Δεν βρέθηκαν αποτελέσματα.",
33
+ "EmptyTableMessage": "Προσπαθήστε να χρησιμοποιήσετε άλλες λέξεις κλειδιά.",
34
+ "RemoveItem": "Διαγραφή στοιχείου",
35
+ "Items": "στοιχεία",
36
+ "Item": "στοιχείο",
37
+ "AddItemMessage": {
38
+ "title": "Προσθήκη στοιχείων",
39
+ "one": "Ένα νέο στοιχείο προστέθηκε με επιτυχία.",
40
+ "many": "{{value}} νέα στοιχεία προστέθηκαν με επιτυχία."
41
+ },
42
+ "RemoveItemMessage": {
43
+ "title": "Αφαίρεση στοιχείων",
44
+ "one": "Ένα στοιχείο αφαιρέθηκε με επιτυχία.",
45
+ "many": "{{value}} στοιχεία αφαιρέθηκαν με επιτυχία."
46
+ },
47
+ "RemoveItemsTitle": "Διαγραφή στοιχείου",
48
+ "RemoveItemsMessage": "Πρόκειται να διαγράψετε ένα ή περισσότερα στοιχεία. Θέλετε να προχωρήσετε?",
49
+ "SelectAll": "Επιλογή όλων",
50
+ "ClearSelection": "Αναίρεση επιλογής",
51
+ "Actions": {
52
+ "Label": "Επεξεργασία",
53
+ "Start": "Έναρξη",
54
+ "ActionMessage": {
55
+ "None": "Δεν έχετε επιλέξει κανένα στοιχείο που να ακολουθεί τις προϋποθέσεις της ενέργειας.",
56
+ "One": "Έχετε επιλέξει ένα στοιχείο που ακολουθεί τις προϋποθέσεις της ενέργειας. Πατήστε το πλήκτρο Έναρξη για να ξεκινήσει η διαδικασία.",
57
+ "Many": "Έχετε επιλέξει {{length}} στοιχεία που ακολουθούν τις προϋποθέσεις της ενέργειας. Πατήστε το πλήκτρο Έναρξη για να ξεκινήσει η διαδικασία."
58
+ },
59
+ "CompletedWithErrors": {
60
+ "Title": "Η διαδικασία ολοκληρώθηκε με σφάλματα.",
61
+ "Description": {
62
+ "One": "Ένα στοιχείο δεν ανανεώθηκε λόγω ενός σφάλματος που συνέβη κατά την εκτέλεση της διαδικασίας.",
63
+ "Many": "{{errors}} στοιχεία δεν ανανεώθηκαν λόγω ενός σφάλματος που συνέβη κατά την εκτέλεση της διαδικασίας."
64
+ }
65
+ },
66
+ "CompletedWithSuccess": {
67
+ "Title": "Η διαδικασία ολοκληρώθηκε με επιτυχία."
68
+ }
69
+ }
70
+ },
71
+ "TrueFalse": {
72
+ "long": {
73
+ "Yes": "Ναι",
74
+ "No": "Όχι"
75
+ }
76
+ },
77
+ "AdvancedSearch": {
78
+ "Choose": "<Επιλέξτε μια αναζήτηση>",
79
+ "ChooseDate": "Επιλογή ημερομηνίας",
80
+ "SavedSearches": "Αποθηκευμένες αναζητήσεις",
81
+ "ToggleDropdown": "Εμφάνιση λίστας",
82
+ "SaveCurrentSearch": "Αποθήκευση αναζήτησης",
83
+ "SaveAs": "Αποθήκευση ως",
84
+ "Save": "Αποθήκευση",
85
+ "Delete": "Διαγραφή",
86
+ "More": "Περισσότερα",
87
+ "Less": "Λιγότερα",
88
+ "Modal": {
89
+ "Title": "Αποθήκευση κριτηρίων αναζήτησης",
90
+ "Help": "Ορίστε έναν τίτλο για τα επιλεγμένα κριτήρια αναζήτησης. Αυτός ο τίτλος θα σας βοηθήσει να τα χρησιμοποιήσετε ξανά στο μέλλον.",
91
+ "TitleOnUserError": "Παρακαλώ εισάγετε έναν τίτλο",
92
+ "TitleOnListAlreadyCreated": "Το όνομα αυτό χρησιμοποιείται ήδη. Διαλέξτε ένα διαφορετικό.",
93
+ "NoListDefined": "Δεν έχει οριστεί το σημείο αποθήκευσης της λίστας",
94
+ "EmptyCriteriaList": "Δεν έχετε καθορίσει κανένα κριτήριο για αποθήκευση",
95
+ "SaveNameLabel": "Ονομασία λίστας",
96
+ "SaveNamePlaceholder": "Εισάγετε έναν τίτλο",
97
+ "Accept": "Αποθήκευση",
98
+ "Decline": "Απόρριψη",
99
+ "Close": "Κλείσιμο"
100
+ }
101
+ }
102
+ };
103
+
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVzLmVsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHVuaXZlcnNpcy9uZ3gtdGFibGVzLyIsInNvdXJjZXMiOlsibGliL2kxOG4vdGFibGVzLmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUNyQixRQUFRLEVBQUU7UUFDTixRQUFRLEVBQUUsU0FBUztRQUNuQixNQUFNLEVBQUUsYUFBYTtRQUNyQixRQUFRLEVBQUUsV0FBVztRQUNyQixtQkFBbUIsRUFBRSxjQUFjO1FBQ25DLFNBQVMsRUFBRSxpQkFBaUI7UUFDNUIsV0FBVyxFQUFFO1lBQ1QsVUFBVSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxjQUFjO2dCQUN2QixNQUFNLEVBQUUsaUJBQWlCO2dCQUN6QixNQUFNLEVBQUUsU0FBUztnQkFDakIsVUFBVSxFQUFFLGFBQWE7YUFDNUI7WUFDRCxNQUFNLEVBQUUsaURBQWlEO1lBQ3pELFdBQVcsRUFBRSx1QkFBdUI7WUFDcEMsU0FBUyxFQUFFLHVCQUF1QjtZQUNsQyxZQUFZLEVBQUUsdUJBQXVCO1lBQ3JDLFlBQVksRUFBRSw0QkFBNEI7U0FDN0M7UUFDSCxlQUFlLEVBQUUsMEJBQTBCO1FBQzNDLG1CQUFtQixFQUFFLGlEQUFpRDtRQUN0RSxNQUFNLEVBQUUsVUFBVTtRQUNsQixPQUFPLEVBQUUsVUFBVTtRQUNuQixRQUFRLEVBQUUsU0FBUztRQUNuQixnQkFBZ0IsRUFBRSxxQkFBcUI7UUFDdkMsVUFBVSxFQUFFLHdDQUF3QztRQUNwRCx1QkFBdUIsRUFBRSx5QkFBeUI7UUFDbEQsU0FBUyxFQUFFLFFBQVE7UUFDbkIsS0FBSyxFQUFFLEtBQUs7UUFDVixTQUFTLEVBQUUsb0JBQW9CO1FBQy9CLGlCQUFpQixFQUFFLDRCQUE0QjtRQUMvQyxtQkFBbUIsRUFBRSxzREFBc0Q7UUFDM0UsWUFBWSxFQUFFLG9CQUFvQjtRQUNsQyxPQUFPLEVBQUUsVUFBVTtRQUNuQixNQUFNLEVBQUUsVUFBVTtRQUNsQixnQkFBZ0IsRUFBRTtZQUNkLE9BQU8sRUFBRSxvQkFBb0I7WUFDN0IsS0FBSyxFQUFFLDBDQUEwQztZQUNqRCxNQUFNLEVBQUUsaURBQWlEO1NBQzFEO1FBQ0gsbUJBQW1CLEVBQUU7WUFDakIsT0FBTyxFQUFFLG9CQUFvQjtZQUM3QixLQUFLLEVBQUUsc0NBQXNDO1lBQzdDLE1BQU0sRUFBRSw2Q0FBNkM7U0FDeEQ7UUFDRCxrQkFBa0IsRUFBRSxvQkFBb0I7UUFDeEMsb0JBQW9CLEVBQUUsNEVBQTRFO1FBQ2xHLFdBQVcsRUFBRSxjQUFjO1FBQzNCLGdCQUFnQixFQUFFLG1CQUFtQjtRQUN2QyxTQUFTLEVBQUU7WUFDVCxPQUFPLEVBQUUsYUFBYTtZQUN0QixPQUFPLEVBQUUsUUFBUTtZQUNqQixlQUFlLEVBQUU7Z0JBQ2YsTUFBTSxFQUFFLHFGQUFxRjtnQkFDN0YsS0FBSyxFQUFFLG9JQUFvSTtnQkFDM0ksTUFBTSxFQUFFLDRJQUE0STthQUNySjtZQUNELHFCQUFxQixFQUFFO2dCQUNyQixPQUFPLEVBQUUsd0NBQXdDO2dCQUNqRCxhQUFhLEVBQUU7b0JBQ2IsS0FBSyxFQUFFLCtGQUErRjtvQkFDdEcsTUFBTSxFQUFFLHVHQUF1RztpQkFDaEg7YUFDRjtZQUNELHNCQUFzQixFQUFFO2dCQUN0QixPQUFPLEVBQUUsd0NBQXdDO2FBQ2xEO1NBQ0Y7S0FDRjtJQUNELFdBQVcsRUFBRTtRQUNULE1BQU0sRUFBRTtZQUNKLEtBQUssRUFBRSxLQUFLO1lBQ1osSUFBSSxFQUFFLEtBQUs7U0FDZDtLQUNKO0lBQ0QsZ0JBQWdCLEVBQUU7UUFDZCxRQUFRLEVBQUUsMEJBQTBCO1FBQ3BDLFlBQVksRUFBRSxxQkFBcUI7UUFDbkMsZUFBZSxFQUFFLDJCQUEyQjtRQUM1QyxnQkFBZ0IsRUFBRyxpQkFBaUI7UUFDcEMsbUJBQW1CLEVBQUUsdUJBQXVCO1FBQzVDLFFBQVEsRUFBRyxlQUFlO1FBQzFCLE1BQU0sRUFBRyxZQUFZO1FBQ3JCLFFBQVEsRUFBRyxVQUFVO1FBQ3JCLE1BQU0sRUFBRSxhQUFhO1FBQ3JCLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLE9BQU8sRUFBRztZQUNOLE9BQU8sRUFBRyxpQ0FBaUM7WUFDM0MsTUFBTSxFQUFHLGdJQUFnSTtZQUN6SSxrQkFBa0IsRUFBRyw4QkFBOEI7WUFDbkQsMkJBQTJCLEVBQUcsOERBQThEO1lBQzVGLGVBQWUsRUFBRyxtREFBbUQ7WUFDckUsbUJBQW1CLEVBQUcsb0RBQW9EO1lBQzFFLGVBQWUsRUFBRyxpQkFBaUI7WUFDbkMscUJBQXFCLEVBQUcscUJBQXFCO1lBQzdDLFFBQVEsRUFBRyxZQUFZO1lBQ3ZCLFNBQVMsRUFBRyxVQUFVO1lBQ3RCLE9BQU8sRUFBRyxVQUFVO1NBQ3ZCO0tBQ0o7Q0FDSixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFRBQkxFU19FTCA9IHtcbiAgICBcIlRhYmxlc1wiOiB7XG4gICAgICAgIFwiRXhwb3J0XCI6IFwizpXOvs6xzrPPic6zzq5cIixcbiAgICAgICAgXCJNb3JlXCI6IFwizqDOtc+BzrnPg8+Dz4zPhM61z4HOsVwiLFxuICAgICAgICBcIlNlYXJjaFwiOiBcIs6Rzr3Osc62zq7PhM63z4POt1wiLFxuICAgICAgICBcIlNlYXJjaFBsYWNlaG9sZGVyXCI6IFwizpHOvc6xzrbOrs+EzrfPg863Li4uXCIsXG4gICAgICAgIFwiR3JvdXBCeVwiOiBcIs6fzrzOsc60zr/PgM6/zq/Ot8+DzrcgzrHOvc6sXCIsXG4gICAgICAgIFwiRGF0YVRhYmxlXCI6IHtcbiAgICAgICAgICAgIFwicGFnaW5hdGVcIjoge1xuICAgICAgICAgICAgICAgIFwiZmlyc3RcIjogXCLOoM+Bz47PhM63IM+DzrXOu86vzrTOsVwiLFxuICAgICAgICAgICAgICAgIFwibGFzdFwiOiBcIs6kzrXOu861z4TOsc6vzrEgz4POtc67zq/OtM6xXCIsXG4gICAgICAgICAgICAgICAgXCJuZXh0XCI6IFwizpXPgM+MzrzOtc69zrdcIixcbiAgICAgICAgICAgICAgICBcInByZXZpb3VzXCI6IFwizqDPgc6/zrfOs86/z43OvM61zr3Ot1wiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJpbmZvXCI6IFwizpXOvM+GzqzOvc65z4POtyBfU1RBUlRfIM6tz4nPgiBfRU5EXyDOsc+Az4wgX1RPVEFMXyDOtc6zzrPPgc6xz4bOrc+CXCIsXG4gICAgICAgICAgICBcImluZm9FbXB0eVwiOiBcIs6UzrXOvSDOss+Bzq3OuM63zrrOsc69IM61zrPOs8+BzrHPhs6tz4JcIixcbiAgICAgICAgICAgIFwibG9hZGluZ1wiOiBcIs6VzrzPhs6szr3Ouc+DzrcgzrTOtc60zr/OvM6tzr3Pic69Li4uXCIsXG4gICAgICAgICAgICBcInByb2Nlc3NpbmdcIjogXCLOoM6xz4HOsc67zrHOss6uIM60zrXOtM6/zrzOrc69z4nOvS4uLlwiLFxuICAgICAgICAgICAgXCJlbXB0eVRhYmxlXCI6IFwizpTOtc69IM6yz4HOrc64zrfOus6xzr0gzrHPgM6/z4TOtc67zq3Pg868zrHPhM6xLlwiXG4gICAgICAgIH0sXG4gICAgICBcIkNvbHVtbkRpc3BsYXlcIjogXCLOlc+AzrnOu86/zrPOriDOlc68z4bOrM69zrnPg863z4Igz4PPhM63zrvPjs69XCIsXG4gICAgICBcIkNvbHVtbkRpc3BsYXlJbmZvXCI6IFwizpXPgM65zrvOrc6+z4TOtSDPhM65z4Igz4PPhM6uzrvOtc+CIM+Azr/PhSDOuM6tzrvOtc+EzrUgzr3OsSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkuXCIsXG4gICAgICBcIlNhdmVcIjogXCLOlc+GzrHPgc68zr/Os86uXCIsXG4gICAgICBcIkFwcGx5XCI6IFwizpXPhs6xz4HOvM6/zrPOrlwiLFxuICAgICAgXCJDYW5jZWxcIjogXCLOkc66z43Pgc+Jz4POt1wiLFxuICAgICAgXCJSZWNvcmRzUGVyUGFnZVwiOiBcIs6VzrPOs8+BzrHPhs6tz4IgzrHOvc6sIM+DzrXOu86vzrTOsVwiLFxuICAgICAgXCJQYWdlSW5mb1wiOiBcInt7c3RhcnR9fS17e2VuZH19IM6xz4DPjCB7e3JlY29yZHNUb3RhbH19XCIsXG4gICAgICBcIlNlYXJjaExpc3RQbGFjZWhvbGRlclwiOiBcIs6Rzr3Osc62zrfPhM6uz4PPhM61IM+Dz4TOtyDOu86vz4PPhM6xLi4uXCIsXG4gICAgICBcIkZpbHRlcnNcIjogXCLOps6vzrvPhM+BzrFcIixcbiAgICAgIFwiQWxsXCI6IFwizozOu86xXCIsXG4gICAgICAgIFwiQWRkSXRlbVwiOiBcIs6gz4HOv8+DzrjOrs66zrcgz4PPhM6/zrnPh861zq/Ov8+FXCIsXG4gICAgICAgIFwiRW1wdHlUYWJsZVRpdGxlXCI6IFwizpTOtc69IM6yz4HOrc64zrfOus6xzr0gzrHPgM6/z4TOtc67zq3Pg868zrHPhM6xLlwiLFxuICAgICAgICBcIkVtcHR5VGFibGVNZXNzYWdlXCI6IFwizqDPgc6/z4PPgM6xzrjOrs+Dz4TOtSDOvc6xIM+Hz4HOt8+DzrnOvM6/z4DOv865zq7Pg861z4TOtSDOrM67zrvOtc+CIM67zq3Ovs61zrnPgiDOus67zrXOuc60zrnOrC5cIixcbiAgICAgICAgXCJSZW1vdmVJdGVtXCI6IFwizpTOuc6xzrPPgc6xz4bOriDPg8+Ezr/Ouc+HzrXOr86/z4VcIixcbiAgICAgICAgXCJJdGVtc1wiOiBcIs+Dz4TOv865z4fOtc6vzrFcIixcbiAgICAgICAgXCJJdGVtXCI6IFwiz4PPhM6/zrnPh861zq/Ov1wiLFxuICAgICAgICBcIkFkZEl0ZW1NZXNzYWdlXCI6IHtcbiAgICAgICAgICAgIFwidGl0bGVcIjogXCLOoM+Bzr/Pg864zq7Ous63IM+Dz4TOv865z4fOtc6vz4nOvVwiLFxuICAgICAgICAgICAgXCJvbmVcIjogXCLOiM69zrEgzr3Orc6/IM+Dz4TOv865z4fOtc6vzr8gz4DPgc6/z4PPhM6tzrjOt866zrUgzrzOtSDOtc+AzrnPhM+Fz4fOr86xLlwiLFxuICAgICAgICAgICAgXCJtYW55XCI6IFwie3t2YWx1ZX19IM69zq3OsSDPg8+Ezr/Ouc+HzrXOr86xIM+Az4HOv8+Dz4TOrc64zrfOus6xzr0gzrzOtSDOtc+AzrnPhM+Fz4fOr86xLlwiXG4gICAgICAgICAgfSxcbiAgICAgICAgXCJSZW1vdmVJdGVtTWVzc2FnZVwiOiB7XG4gICAgICAgICAgICBcInRpdGxlXCI6IFwizpHPhs6xzq/Pgc61z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr1cIixcbiAgICAgICAgICAgIFwib25lXCI6IFwizojOvc6xIM+Dz4TOv865z4fOtc6vzr8gzrHPhs6xzrnPgc6tzrjOt866zrUgzrzOtSDOtc+AzrnPhM+Fz4fOr86xLlwiLFxuICAgICAgICAgICAgXCJtYW55XCI6IFwie3t2YWx1ZX19IM+Dz4TOv865z4fOtc6vzrEgzrHPhs6xzrnPgc6tzrjOt866zrHOvSDOvM61IM61z4DOuc+Ez4XPh86vzrEuXCJcbiAgICAgICAgfSxcbiAgICAgICAgXCJSZW1vdmVJdGVtc1RpdGxlXCI6IFwizpTOuc6xzrPPgc6xz4bOriDPg8+Ezr/Ouc+HzrXOr86/z4VcIixcbiAgICAgICAgXCJSZW1vdmVJdGVtc01lc3NhZ2VcIjogXCLOoM+Bz4zOus61zrnPhM6xzrkgzr3OsSDOtM65zrHOs8+BzqzPiM61z4TOtSDOrc69zrEgzq4gz4DOtc+BzrnPg8+Dz4zPhM61z4HOsSDPg8+Ezr/Ouc+HzrXOr86xLiDOmM6tzrvOtc+EzrUgzr3OsSDPgM+Bzr/Ph8+Jz4HOrs+DzrXPhM61P1wiLFxuICAgICAgICBcIlNlbGVjdEFsbFwiOiBcIs6Vz4DOuc67zr/Os86uIM+MzrvPic69XCIsXG4gICAgICAgIFwiQ2xlYXJTZWxlY3Rpb25cIjogXCLOkc69zrHOr8+BzrXPg863IM61z4DOuc67zr/Os86uz4JcIixcbiAgICAgIFwiQWN0aW9uc1wiOiB7XG4gICAgICAgIFwiTGFiZWxcIjogXCLOlc+AzrXOvs61z4HOs86xz4POr86xXCIsXG4gICAgICAgIFwiU3RhcnRcIjogXCLOiM69zrHPgc6+zrdcIixcbiAgICAgICAgXCJBY3Rpb25NZXNzYWdlXCI6IHtcbiAgICAgICAgICBcIk5vbmVcIjogXCLOlM61zr0gzq3Ph861z4TOtSDOtc+AzrnOu86tzr7Otc65IM66zrHOvc6tzr3OsSDPg8+Ezr/Ouc+HzrXOr86/IM+Azr/PhSDOvc6xIM6xzrrOv867zr/Phc64zrXOryDPhM65z4Igz4DPgc6/z4vPgM6/zrjOrc+DzrXOuc+CIM+EzrfPgiDOtc69zq3Pgc6zzrXOuc6xz4IuXCIsXG4gICAgICAgICAgXCJPbmVcIjogXCLOiM+HzrXPhM61IM61z4DOuc67zq3Ovs61zrkgzq3Ovc6xIM+Dz4TOv865z4fOtc6vzr8gz4DOv8+FIM6xzrrOv867zr/Phc64zrXOryDPhM65z4Igz4DPgc6/z4vPgM6/zrjOrc+DzrXOuc+CIM+EzrfPgiDOtc69zq3Pgc6zzrXOuc6xz4IuIM6gzrHPhM6uz4PPhM61IM+Ezr8gz4DOu86uzrrPhM+Bzr8gzojOvc6xz4HOvs63IM6zzrnOsSDOvc6xIM6+zrXOus65zr3Ors+DzrXOuSDOtyDOtM65zrHOtM65zrrOsc+Dzq/OsS5cIixcbiAgICAgICAgICBcIk1hbnlcIjogXCLOiM+HzrXPhM61IM61z4DOuc67zq3Ovs61zrkge3tsZW5ndGh9fSDPg8+Ezr/Ouc+HzrXOr86xIM+Azr/PhSDOsc66zr/Ou86/z4XOuM6/z43OvSDPhM65z4Igz4DPgc6/z4vPgM6/zrjOrc+DzrXOuc+CIM+EzrfPgiDOtc69zq3Pgc6zzrXOuc6xz4IuIM6gzrHPhM6uz4PPhM61IM+Ezr8gz4DOu86uzrrPhM+Bzr8gzojOvc6xz4HOvs63IM6zzrnOsSDOvc6xIM6+zrXOus65zr3Ors+DzrXOuSDOtyDOtM65zrHOtM65zrrOsc+Dzq/OsS5cIlxuICAgICAgICB9LFxuICAgICAgICBcIkNvbXBsZXRlZFdpdGhFcnJvcnNcIjoge1xuICAgICAgICAgIFwiVGl0bGVcIjogXCLOlyDOtM65zrHOtM65zrrOsc+Dzq/OsSDOv867zr/Ous67zrfPgc+OzrjOt866zrUgzrzOtSDPg8+GzqzOu868zrHPhM6xLlwiLFxuICAgICAgICAgIFwiRGVzY3JpcHRpb25cIjoge1xuICAgICAgICAgICAgXCJPbmVcIjogXCLOiM69zrEgz4PPhM6/zrnPh861zq/OvyDOtM61zr0gzrHOvc6xzr3Otc+OzrjOt866zrUgzrvPjM6zz4kgzrXOvc+Mz4Igz4PPhs6szrvOvM6xz4TOv8+CIM+Azr/PhSDPg8+Fzr3Orc6yzrcgzrrOsc+Ezqwgz4TOt869IM61zrrPhM6tzrvOtc+Dzrcgz4TOt8+CIM60zrnOsc60zrnOus6xz4POr86xz4IuXCIsXG4gICAgICAgICAgICBcIk1hbnlcIjogXCJ7e2Vycm9yc319IM+Dz4TOv865z4fOtc6vzrEgzrTOtc69IM6xzr3Osc69zrXPjs64zrfOus6xzr0gzrvPjM6zz4kgzrXOvc+Mz4Igz4PPhs6szrvOvM6xz4TOv8+CIM+Azr/PhSDPg8+Fzr3Orc6yzrcgzrrOsc+Ezqwgz4TOt869IM61zrrPhM6tzrvOtc+Dzrcgz4TOt8+CIM60zrnOsc60zrnOus6xz4POr86xz4IuXCJcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiQ29tcGxldGVkV2l0aFN1Y2Nlc3NcIjoge1xuICAgICAgICAgIFwiVGl0bGVcIjogXCLOlyDOtM65zrHOtM65zrrOsc+Dzq/OsSDOv867zr/Ous67zrfPgc+OzrjOt866zrUgzrzOtSDOtc+AzrnPhM+Fz4fOr86xLlwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIFwiVHJ1ZUZhbHNlXCI6IHtcbiAgICAgICAgXCJsb25nXCI6IHtcbiAgICAgICAgICAgIFwiWWVzXCI6IFwizp3Osc65XCIsXG4gICAgICAgICAgICBcIk5vXCI6IFwizozPh865XCJcbiAgICAgICAgfVxuICAgIH0sXG4gICAgXCJBZHZhbmNlZFNlYXJjaFwiOiB7XG4gICAgICAgIFwiQ2hvb3NlXCI6IFwiPM6Vz4DOuc67zq3Ovs+EzrUgzrzOuc6xIM6xzr3Osc62zq7PhM63z4POtz5cIixcbiAgICAgICAgXCJDaG9vc2VEYXRlXCI6IFwizpXPgM65zrvOv86zzq4gzrfOvM61z4HOv868zrfOvc6vzrHPglwiLFxuICAgICAgICBcIlNhdmVkU2VhcmNoZXNcIjogXCLOkc+Azr/OuM63zrrOtc+FzrzOrc69zrXPgiDOsc69zrHOts63z4TOrs+DzrXOuc+CXCIsXG4gICAgICAgIFwiVG9nZ2xlRHJvcGRvd25cIiA6IFwizpXOvM+GzqzOvc65z4POtyDOu86vz4PPhM6xz4JcIixcbiAgICAgICAgXCJTYXZlQ3VycmVudFNlYXJjaFwiOiBcIs6Rz4DOv864zq7Ous61z4XPg863IM6xzr3Osc62zq7PhM63z4POt8+CXCIsXG4gICAgICAgIFwiU2F2ZUFzXCIgOiBcIs6Rz4DOv864zq7Ous61z4XPg863IM+Jz4JcIixcbiAgICAgICAgXCJTYXZlXCIgOiBcIs6Rz4DOv864zq7Ous61z4XPg863XCIsXG4gICAgICAgIFwiRGVsZXRlXCIgOiBcIs6UzrnOsc6zz4HOsc+Gzq5cIixcbiAgICAgICAgXCJNb3JlXCI6IFwizqDOtc+BzrnPg8+Dz4zPhM61z4HOsVwiLFxuICAgICAgICBcIkxlc3NcIjogXCLOm865zrPPjM+EzrXPgc6xXCIsXG4gICAgICAgIFwiTW9kYWxcIiA6IHtcbiAgICAgICAgICAgIFwiVGl0bGVcIiA6IFwizpHPgM6/zrjOrs66zrXPhc+DzrcgzrrPgc65z4TOt8+Bzq/Pic69IM6xzr3Osc62zq7PhM63z4POt8+CXCIsXG4gICAgICAgICAgICBcIkhlbHBcIiA6IFwizp/Pgc6vz4PPhM61IM6tzr3Osc69IM+Ezq/PhM67zr8gzrPOuc6xIM+EzrEgzrXPgM65zrvOtc6zzrzOrc69zrEgzrrPgc65z4TOrs+BzrnOsSDOsc69zrHOts6uz4TOt8+DzrfPgi4gzpHPhc+Ez4zPgiDOvyDPhM6vz4TOu86/z4IgzrjOsSDPg86xz4IgzrLOv863zrjOrs+DzrXOuSDOvc6xIM+EzrEgz4fPgc63z4POuc68zr/PgM6/zrnOrs+DzrXPhM61IM6+zrHOvc6sIM+Dz4TOvyDOvM6tzrvOu86/zr0uXCIsXG4gICAgICAgICAgICBcIlRpdGxlT25Vc2VyRXJyb3JcIiA6IFwizqDOsc+BzrHOus6xzrvPjiDOtc65z4POrM6zzrXPhM61IM6tzr3Osc69IM+Ezq/PhM67zr9cIixcbiAgICAgICAgICAgIFwiVGl0bGVPbkxpc3RBbHJlYWR5Q3JlYXRlZFwiIDogXCLOpM6/IM+Mzr3Ov868zrEgzrHPhc+Ez4wgz4fPgc63z4POuc68zr/PgM6/zrnOtc6vz4TOsc65IM6uzrTOty4gzpTOuc6xzrvOrc6+z4TOtSDOrc69zrEgzrTOuc6xz4bOv8+BzrXPhM65zrrPjC5cIixcbiAgICAgICAgICAgIFwiTm9MaXN0RGVmaW5lZFwiIDogXCLOlM61zr0gzq3Ph861zrkgzr/Pgc65z4PPhM61zq8gz4TOvyDPg863zrzOtc6vzr8gzrHPgM6/zrjOrs66zrXPhc+DzrfPgiDPhM63z4IgzrvOr8+Dz4TOsc+CXCIsXG4gICAgICAgICAgICBcIkVtcHR5Q3JpdGVyaWFMaXN0XCIgOiBcIs6UzrXOvSDOrc+HzrXPhM61IM66zrHOuM6/z4HOr8+DzrXOuSDOus6xzr3Orc69zrEgzrrPgc65z4TOrs+BzrnOvyDOs865zrEgzrHPgM6/zrjOrs66zrXPhc+DzrdcIixcbiAgICAgICAgICAgIFwiU2F2ZU5hbWVMYWJlbFwiIDogXCLOn869zr/OvM6xz4POr86xIM67zq/Pg8+EzrHPglwiLFxuICAgICAgICAgICAgXCJTYXZlTmFtZVBsYWNlaG9sZGVyXCIgOiBcIs6VzrnPg86szrPOtc+EzrUgzq3Ovc6xzr0gz4TOr8+EzrvOv1wiLFxuICAgICAgICAgICAgXCJBY2NlcHRcIiA6IFwizpHPgM6/zrjOrs66zrXPhc+DzrdcIixcbiAgICAgICAgICAgIFwiRGVjbGluZVwiIDogXCLOkc+Az4zPgc+BzrnPiM63XCIsXG4gICAgICAgICAgICBcIkNsb3NlXCIgOiBcIs6azrvOtc6vz4POuc68zr9cIlxuICAgICAgICB9XG4gICAgfVxufVxuIl19