@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.
- package/LICENSE +163 -0
- package/README.md +121 -0
- package/bundles/universis-ngx-tables.umd.js +4591 -0
- package/bundles/universis-ngx-tables.umd.js.map +1 -0
- package/bundles/universis-ngx-tables.umd.min.js +2 -0
- package/bundles/universis-ngx-tables.umd.min.js.map +1 -0
- package/esm2015/lib/components/add-items/add-items.component.js +142 -0
- package/esm2015/lib/components/advanced-aggregator/advanced-aggregator.component.js +120 -0
- package/esm2015/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +53 -0
- package/esm2015/lib/components/advanced-list/advanced-list.component.js +173 -0
- package/esm2015/lib/components/advanced-row-action/advanced-row-action.component.js +175 -0
- package/esm2015/lib/components/advanced-search-form/advanced-search-form.component.js +134 -0
- package/esm2015/lib/components/advanced-select/advanced-select.component.js +51 -0
- package/esm2015/lib/components/advanced-select/advanced-select.service.js +40 -0
- package/esm2015/lib/components/advanced-table/advanced-filter-value-provider.service.js +37 -0
- package/esm2015/lib/components/advanced-table/advanced-table-resolvers.js +44 -0
- package/esm2015/lib/components/advanced-table/advanced-table-search-base.js +23 -0
- package/esm2015/lib/components/advanced-table/advanced-table-search.component.js +519 -0
- package/esm2015/lib/components/advanced-table/advanced-table-settings.component.js +109 -0
- package/esm2015/lib/components/advanced-table/advanced-table.component.js +1007 -0
- package/esm2015/lib/components/advanced-table/advanced-table.formatters.interface.js +16 -0
- package/esm2015/lib/components/advanced-table/advanced-table.formatters.js +271 -0
- package/esm2015/lib/components/advanced-table/advanced-table.interfaces.js +2 -0
- package/esm2015/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +379 -0
- package/esm2015/lib/components/table-simple-header/table-simple-header.component.js +52 -0
- package/esm2015/lib/directives/advanced-table-editor.directive.js +157 -0
- package/esm2015/lib/directives/btnexp.directive.js +225 -0
- package/esm2015/lib/i18n/tables.el.js +104 -0
- package/esm2015/lib/i18n/tables.en.js +103 -0
- package/esm2015/lib/pipes/advanced-aggregator.pipe.js +35 -0
- package/esm2015/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +46 -0
- package/esm2015/lib/services/advanced-aggregator/advanced-aggregator.service.js +117 -0
- package/esm2015/lib/tables.activated-table.service.js +36 -0
- package/esm2015/lib/tables.module.js +134 -0
- package/esm2015/public_api.js +22 -0
- package/esm2015/universis-ngx-tables.js +14 -0
- package/esm5/lib/components/add-items/add-items.component.js +153 -0
- package/esm5/lib/components/advanced-aggregator/advanced-aggregator.component.js +169 -0
- package/esm5/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +56 -0
- package/esm5/lib/components/advanced-list/advanced-list.component.js +185 -0
- package/esm5/lib/components/advanced-row-action/advanced-row-action.component.js +179 -0
- package/esm5/lib/components/advanced-search-form/advanced-search-form.component.js +137 -0
- package/esm5/lib/components/advanced-select/advanced-select.component.js +56 -0
- package/esm5/lib/components/advanced-select/advanced-select.service.js +43 -0
- package/esm5/lib/components/advanced-table/advanced-filter-value-provider.service.js +50 -0
- package/esm5/lib/components/advanced-table/advanced-table-resolvers.js +48 -0
- package/esm5/lib/components/advanced-table/advanced-table-search-base.js +29 -0
- package/esm5/lib/components/advanced-table/advanced-table-search.component.js +556 -0
- package/esm5/lib/components/advanced-table/advanced-table-settings.component.js +115 -0
- package/esm5/lib/components/advanced-table/advanced-table.component.js +1035 -0
- package/esm5/lib/components/advanced-table/advanced-table.formatters.interface.js +16 -0
- package/esm5/lib/components/advanced-table/advanced-table.formatters.js +313 -0
- package/esm5/lib/components/advanced-table/advanced-table.interfaces.js +2 -0
- package/esm5/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +295 -0
- package/esm5/lib/components/table-simple-header/table-simple-header.component.js +58 -0
- package/esm5/lib/directives/advanced-table-editor.directive.js +175 -0
- package/esm5/lib/directives/btnexp.directive.js +253 -0
- package/esm5/lib/i18n/tables.el.js +104 -0
- package/esm5/lib/i18n/tables.en.js +103 -0
- package/esm5/lib/pipes/advanced-aggregator.pipe.js +39 -0
- package/esm5/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +49 -0
- package/esm5/lib/services/advanced-aggregator/advanced-aggregator.service.js +130 -0
- package/esm5/lib/tables.activated-table.service.js +43 -0
- package/esm5/lib/tables.module.js +139 -0
- package/esm5/public_api.js +22 -0
- package/esm5/universis-ngx-tables.js +14 -0
- package/fesm2015/universis-ngx-tables.js +4127 -0
- package/fesm2015/universis-ngx-tables.js.map +1 -0
- package/fesm5/universis-ngx-tables.js +4313 -0
- package/fesm5/universis-ngx-tables.js.map +1 -0
- package/lib/advanced-aggregator.d.ts +124 -0
- package/lib/components/add-items/add-items.component.d.ts +44 -0
- package/lib/components/advanced-aggregator/advanced-aggregator.component.d.ts +45 -0
- package/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.d.ts +25 -0
- package/lib/components/advanced-list/advanced-list.component.d.ts +42 -0
- package/lib/components/advanced-row-action/advanced-row-action.component.d.ts +42 -0
- package/lib/components/advanced-search-form/advanced-search-form.component.d.ts +27 -0
- package/lib/components/advanced-select/advanced-select.component.d.ts +14 -0
- package/lib/components/advanced-select/advanced-select.service.d.ts +9 -0
- package/lib/components/advanced-table/advanced-filter-value-provider.service.d.ts +8 -0
- package/lib/components/advanced-table/advanced-table-resolvers.d.ts +12 -0
- package/lib/components/advanced-table/advanced-table-search-base.d.ts +7 -0
- package/lib/components/advanced-table/advanced-table-search.component.d.ts +80 -0
- package/lib/components/advanced-table/advanced-table-settings.component.d.ts +35 -0
- package/lib/components/advanced-table/advanced-table.component.d.ts +142 -0
- package/lib/components/advanced-table/advanced-table.formatters.d.ts +62 -0
- package/lib/components/advanced-table/advanced-table.formatters.interface.d.ts +15 -0
- package/lib/components/advanced-table/advanced-table.interfaces.d.ts +27 -0
- package/lib/components/advanced-table-modal/advanced-table-modal-base.component.d.ts +82 -0
- package/lib/components/table-simple-header/table-simple-header.component.d.ts +14 -0
- package/lib/directives/advanced-table-editor.directive.d.ts +25 -0
- package/lib/directives/btnexp.directive.d.ts +68 -0
- package/lib/i18n/tables.el.d.ts +102 -0
- package/lib/i18n/tables.en.d.ts +101 -0
- package/lib/pipes/advanced-aggregator.pipe.d.ts +21 -0
- package/lib/pipes/advansed-aggregator-list-title-parse.pipe.d.ts +21 -0
- package/lib/services/advanced-aggregator/advanced-aggregator.service.d.ts +32 -0
- package/lib/tables.activated-table.service.d.ts +9 -0
- package/lib/tables.module.d.ts +7 -0
- package/package.json +51 -0
- package/public_api.d.ts +18 -0
- package/universis-ngx-tables.d.ts +12 -0
- package/universis-ngx-tables.metadata.json +1 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import * as tslib_1 from "tslib";
|
|
2
|
+
import { Component, ViewChild, Input } from '@angular/core';
|
|
3
|
+
import { AngularDataContext } from '@themost/angular';
|
|
4
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
5
|
+
import { ActivatedRoute } from '@angular/router';
|
|
6
|
+
// tslint:disable-next-line: max-line-length
|
|
7
|
+
import { AdvancedTableComponent, AdvancedTableConfiguration } from '../advanced-table/advanced-table.component';
|
|
8
|
+
import { ErrorService, DIALOG_BUTTONS, ModalService, UserActivityService } from '@universis/common';
|
|
9
|
+
import { ResponseError } from '@themost/client';
|
|
10
|
+
import { ToastService } from '@universis/common';
|
|
11
|
+
var AdvancedListComponent = /** @class */ (function () {
|
|
12
|
+
function AdvancedListComponent(_context, _translateService, _activatedRoute, _errorService, _toastService, _modalService, _userActivityService) {
|
|
13
|
+
this._context = _context;
|
|
14
|
+
this._translateService = _translateService;
|
|
15
|
+
this._activatedRoute = _activatedRoute;
|
|
16
|
+
this._errorService = _errorService;
|
|
17
|
+
this._toastService = _toastService;
|
|
18
|
+
this._modalService = _modalService;
|
|
19
|
+
this._userActivityService = _userActivityService;
|
|
20
|
+
this.allowSaveOption = true;
|
|
21
|
+
}
|
|
22
|
+
AdvancedListComponent.prototype.ngOnDestroy = function () {
|
|
23
|
+
if (this.dataSubscription) {
|
|
24
|
+
this.dataSubscription.unsubscribe();
|
|
25
|
+
}
|
|
26
|
+
if (this.reloadSubscription) {
|
|
27
|
+
this.reloadSubscription.unsubscribe();
|
|
28
|
+
}
|
|
29
|
+
if (this.subscription) {
|
|
30
|
+
this.subscription.unsubscribe();
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
AdvancedListComponent.prototype.ngOnInit = function () {
|
|
34
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
35
|
+
var metadata_1, err_1;
|
|
36
|
+
var _this = this;
|
|
37
|
+
return tslib_1.__generator(this, function (_a) {
|
|
38
|
+
switch (_a.label) {
|
|
39
|
+
case 0:
|
|
40
|
+
_a.trys.push([0, 2, , 3]);
|
|
41
|
+
return [4 /*yield*/, this._context.getMetadata()];
|
|
42
|
+
case 1:
|
|
43
|
+
metadata_1 = _a.sent();
|
|
44
|
+
// get route data
|
|
45
|
+
this.dataSubscription = this._activatedRoute.data.subscribe(function (routeData) {
|
|
46
|
+
// get entityType
|
|
47
|
+
var re = new RegExp("^" + routeData.model + "$", 'ig');
|
|
48
|
+
var entitySet = metadata_1.EntityContainer.EntitySet.find(function (x) {
|
|
49
|
+
return re.test(x.Name);
|
|
50
|
+
});
|
|
51
|
+
// if entity type is null
|
|
52
|
+
if (entitySet == null) {
|
|
53
|
+
// navigate to error
|
|
54
|
+
return _this._errorService.navigateToError(new ResponseError('EntitySet Not Found', 404));
|
|
55
|
+
}
|
|
56
|
+
// get entity type
|
|
57
|
+
var entityType = metadata_1.EntityType.find(function (x) {
|
|
58
|
+
return x.Name === entitySet.EntityType;
|
|
59
|
+
});
|
|
60
|
+
if (entityType == null) {
|
|
61
|
+
return _this._errorService.navigateToError(new ResponseError('EntityType Not Found', 404));
|
|
62
|
+
}
|
|
63
|
+
if (routeData.searchConfiguration) {
|
|
64
|
+
if (Object.prototype.hasOwnProperty.call(routeData.searchConfiguration, 'allowSave')) {
|
|
65
|
+
_this.allowSaveOption = routeData.searchConfiguration.allowSave;
|
|
66
|
+
}
|
|
67
|
+
_this.searchConfiguration = routeData.searchConfiguration;
|
|
68
|
+
}
|
|
69
|
+
if (routeData.tableConfiguration) {
|
|
70
|
+
_this.tableConfiguration = routeData.tableConfiguration;
|
|
71
|
+
}
|
|
72
|
+
if (routeData.description) {
|
|
73
|
+
_this.description = _this._translateService.instant(routeData.description);
|
|
74
|
+
}
|
|
75
|
+
if (routeData.longDescription) {
|
|
76
|
+
_this.longDescription = _this._translateService.instant(routeData.longDescription);
|
|
77
|
+
}
|
|
78
|
+
if (routeData.category) {
|
|
79
|
+
_this.category = _this._translateService.instant(routeData.category);
|
|
80
|
+
}
|
|
81
|
+
// clone default configuration
|
|
82
|
+
var defaultConfiguration = AdvancedTableConfiguration.cast(_this.tableConfiguration, true);
|
|
83
|
+
// correct edit button link
|
|
84
|
+
var column = defaultConfiguration.columns.find(function (col) {
|
|
85
|
+
return col.formatter === 'ButtonFormatter' && col.formatString === '(modal:edit)';
|
|
86
|
+
});
|
|
87
|
+
if (column) {
|
|
88
|
+
var url_1 = [];
|
|
89
|
+
_this._activatedRoute.snapshot.pathFromRoot.forEach(function (route) {
|
|
90
|
+
url_1.push.apply(url_1, route.url);
|
|
91
|
+
});
|
|
92
|
+
column.formatString = "#/" + url_1.join('/') + "/(modal:${id}/edit)";
|
|
93
|
+
}
|
|
94
|
+
// create list configuration by assigning list entity set
|
|
95
|
+
_this.table.config = Object.assign({
|
|
96
|
+
model: entitySet.Name
|
|
97
|
+
}, defaultConfiguration);
|
|
98
|
+
// fetch data
|
|
99
|
+
_this.table.fetch(true);
|
|
100
|
+
// do reload by using hidden fragment e.g. /classes#reload
|
|
101
|
+
_this.reloadSubscription = _this._activatedRoute.fragment.subscribe(function (fragment) {
|
|
102
|
+
if (fragment && fragment === 'reload') {
|
|
103
|
+
_this._toastService.show(_this.description, _this._translateService.instant('Settings.OperationCompleted'));
|
|
104
|
+
_this.table.fetch(true);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
// finally add user activity
|
|
108
|
+
_this._userActivityService.setItem({
|
|
109
|
+
category: _this.category,
|
|
110
|
+
description: _this.description,
|
|
111
|
+
url: window.location.hash.substring(1),
|
|
112
|
+
dateCreated: new Date
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
return [3 /*break*/, 3];
|
|
116
|
+
case 2:
|
|
117
|
+
err_1 = _a.sent();
|
|
118
|
+
console.error(err_1);
|
|
119
|
+
return [2 /*return*/, this._errorService.showError(err_1)];
|
|
120
|
+
case 3: return [2 /*return*/];
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Data load event handler of advanced table component
|
|
127
|
+
* @param {AdvancedTableDataResult} data
|
|
128
|
+
*/
|
|
129
|
+
AdvancedListComponent.prototype.onDataLoad = function (data) {
|
|
130
|
+
this.recordsTotal = data.recordsTotal;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Remove selected items
|
|
134
|
+
*/
|
|
135
|
+
AdvancedListComponent.prototype.remove = function () {
|
|
136
|
+
var _this = this;
|
|
137
|
+
if (this.table && this.table.selected && this.table.selected.length) {
|
|
138
|
+
// get items to remove
|
|
139
|
+
var items_1 = this.table.selected;
|
|
140
|
+
return this._modalService.showWarningDialog(this._translateService.instant('Tables.RemoveItemsTitle'), this._translateService.instant('Tables.RemoveItemsMessage'), DIALOG_BUTTONS.OkCancel).then(function (result) {
|
|
141
|
+
if (result === 'ok') {
|
|
142
|
+
_this._context.model(_this.table.config.model).remove(items_1).then(function () {
|
|
143
|
+
_this._toastService.show(_this.description + ':' + _this._translateService.instant('Tables.RemoveItemMessage.title'), _this._translateService.instant((items_1.length === 1 ?
|
|
144
|
+
'Tables.RemoveItemMessage.one' : 'Tables.RemoveItemMessage.many'), { value: items_1.length }));
|
|
145
|
+
_this.table.fetch(true);
|
|
146
|
+
}).catch(function (err) {
|
|
147
|
+
_this._errorService.showError(err, {
|
|
148
|
+
continueLink: '.'
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
AdvancedListComponent.decorators = [
|
|
156
|
+
{ type: Component, args: [{
|
|
157
|
+
selector: 'app-advanced-list',
|
|
158
|
+
template: "<div>\n <div class=\"row\" *ngIf=\"description\">\n <div class=\"col-auto\">\n <h2>{{description}}</h2>\n <p *ngIf=\"longDescription\">{{longDescription}}</p>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"searchConfiguration\">\n <div class=\"col-12\" [ngVar]=\"{}\" #filter=\"ngVar\">\n <app-advanced-table-search #advancedSearch [(filter)]=\"filter.value\" [collapsed]=\"true\" [table]=\"table\" [allowSave]=\"allowSaveOption\">\n <advanced-search>\n <app-advanced-search-form [form]=\"searchConfiguration\" (filterChange)=\"advancedSearch.asyncAdvancedSearch()\" #search [(filter)]=\"filter.value\"></app-advanced-search-form>\n </advanced-search>\n </app-advanced-table-search>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-auto mt-4\">\n <div class=\"font-xl text-secondary\" *ngIf=\"recordsTotal > 1\">\n <span>{{recordsTotal}}</span><span> </span><span [translate]=\"'Tables.Items'\"></span>\n </div>\n <div class=\"font-xl text-secondary\" *ngIf=\"recordsTotal === 1\">\n <span>{{recordsTotal}}</span><span> </span><span [translate]=\"'Tables.Item'\"></span>\n </div>\n </div>\n <div class=\"pull-right ml-auto mr-3 mt-3\">\n <div class=\"font-lg btn-toolbar mt-3\">\n <a *ngIf=\"table && table.selected && table.selected.length\"\n class=\"text-danger text-decoration-none mr-2\" href=\"javascript:void(0)\" (click)=\"remove()\">\n <span>-</span><span> </span><span [translate]=\"'Tables.RemoveItem'\"></span>\n </a>\n <a class=\"text-indigo text-decoration-none\" [routerLink]=\"['.', { outlets:{ modal:'add'} }]\">\n <span>+</span><span> </span><span [translate]=\"'Tables.AddItem'\"></span>\n </a>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12 mb-4\">\n <app-advanced-table [selectable]=\"true\" #table\n [autoLoad]=false\n [showFooter]=\"false\"\n (load)=\"onDataLoad($event)\" [height]=\"600\"></app-advanced-table>\n </div>\n </div>\n <router-modal></router-modal>\n</div>\n"
|
|
159
|
+
}] }
|
|
160
|
+
];
|
|
161
|
+
/** @nocollapse */
|
|
162
|
+
AdvancedListComponent.ctorParameters = function () { return [
|
|
163
|
+
{ type: AngularDataContext },
|
|
164
|
+
{ type: TranslateService },
|
|
165
|
+
{ type: ActivatedRoute },
|
|
166
|
+
{ type: ErrorService },
|
|
167
|
+
{ type: ToastService },
|
|
168
|
+
{ type: ModalService },
|
|
169
|
+
{ type: UserActivityService }
|
|
170
|
+
]; };
|
|
171
|
+
AdvancedListComponent.propDecorators = {
|
|
172
|
+
entitySet: [{ type: Input, args: ['entitySet',] }],
|
|
173
|
+
category: [{ type: Input, args: ['category',] }],
|
|
174
|
+
description: [{ type: Input, args: ['description',] }],
|
|
175
|
+
longDescription: [{ type: Input, args: ['longDescription',] }],
|
|
176
|
+
tableConfiguration: [{ type: Input, args: ['tableConfiguration',] }],
|
|
177
|
+
searchConfiguration: [{ type: Input, args: ['searchConfiguration',] }],
|
|
178
|
+
table: [{ type: ViewChild, args: ['table',] }],
|
|
179
|
+
allowSaveOption: [{ type: Input, args: ['allowSaveOption',] }]
|
|
180
|
+
};
|
|
181
|
+
return AdvancedListComponent;
|
|
182
|
+
}());
|
|
183
|
+
export { AdvancedListComponent };
|
|
184
|
+
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdW5pdmVyc2lzL25neC10YWJsZXMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hZHZhbmNlZC1saXN0L2FkdmFuY2VkLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBeUIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxrQkFBa0IsRUFBc0IsTUFBTSxrQkFBa0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsNENBQTRDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBMkIsMEJBQTBCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6SSxPQUFPLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpEO0lBb0JFLCtCQUFvQixRQUE0QixFQUN0QyxpQkFBbUMsRUFDbkMsZUFBK0IsRUFDL0IsYUFBMkIsRUFDM0IsYUFBMkIsRUFDM0IsYUFBMkIsRUFDM0Isb0JBQXlDO1FBTi9CLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBQ3RDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsb0JBQWUsR0FBZixlQUFlLENBQWdCO1FBQy9CLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQzNCLHlCQUFvQixHQUFwQixv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QVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixpbkVBQTZDO2lCQUM5Qzs7OztnQkFkUSxrQkFBa0I7Z0JBQ2xCLGdCQUFnQjtnQkFFaEIsY0FBYztnQkFHZCxZQUFZO2dCQUdaLFlBQVk7Z0JBSGtCLFlBQVk7Z0JBQUUsbUJBQW1COzs7NEJBZ0JyRSxLQUFLLFNBQUMsV0FBVzsyQkFDakIsS0FBSyxTQUFDLFVBQVU7OEJBQ2hCLEtBQUssU0FBQyxhQUFhO2tDQUNuQixLQUFLLFNBQUMsaUJBQWlCO3FDQUN2QixLQUFLLFNBQUMsb0JBQW9CO3NDQUMxQixLQUFLLFNBQUMscUJBQXFCO3dCQUMzQixTQUFTLFNBQUMsT0FBTztrQ0FDakIsS0FBSyxTQUFDLGlCQUFpQjs7SUFpSjFCLDRCQUFDO0NBQUEsQUFuS0QsSUFtS0M7U0EvSlkscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgT25EZXN0cm95LCBJbmplY3RhYmxlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5ndWxhckRhdGFDb250ZXh0LCBBbmd1bGFyRGF0YVNlcnZpY2UgfSBmcm9tICdAdGhlbW9zdC9hbmd1bGFyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbmltcG9ydCB7IEFkdmFuY2VkVGFibGVDb21wb25lbnQsIEFkdmFuY2VkVGFibGVEYXRhUmVzdWx0LCBBZHZhbmNlZFRhYmxlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFcnJvclNlcnZpY2UsIERJQUxPR19CVVRUT05TLCBNb2RhbFNlcnZpY2UsIFVzZXJBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICdAdW5pdmVyc2lzL2NvbW1vbic7XG5pbXBvcnQge1Jlc3BvbnNlRXJyb3J9IGZyb20gJ0B0aGVtb3N0L2NsaWVudCc7XG5pbXBvcnQgeyBUYWJsZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9hZHZhbmNlZC10YWJsZS9hZHZhbmNlZC10YWJsZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ0B1bml2ZXJzaXMvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWFkdmFuY2VkLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWR2YW5jZWQtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQWR2YW5jZWRMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHB1YmxpYyByZWNvcmRzVG90YWw6IG51bWJlcjtcbiAgcHVibGljIGNvbmZpZzogVGFibGVDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGRhdGFTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSByZWxvYWRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgQElucHV0KCdlbnRpdHlTZXQnKSBlbnRpdHlTZXQ6IHN0cmluZztcbiAgQElucHV0KCdjYXRlZ29yeScpIGNhdGVnb3J5OiBzdHJpbmc7XG4gIEBJbnB1dCgnZGVzY3JpcHRpb24nKSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBASW5wdXQoJ2xvbmdEZXNjcmlwdGlvbicpIGxvbmdEZXNjcmlwdGlvbjogc3RyaW5nO1xuICBASW5wdXQoJ3RhYmxlQ29uZmlndXJhdGlvbicpIHRhYmxlQ29uZmlndXJhdGlvbjogYW55O1xuICBASW5wdXQoJ3NlYXJjaENvbmZpZ3VyYXRpb24nKSBzZWFyY2hDb25maWd1cmF0aW9uOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ3RhYmxlJykgdGFibGU6IEFkdmFuY2VkVGFibGVDb21wb25lbnQ7XG4gIEBJbnB1dCgnYWxsb3dTYXZlT3B0aW9uJykgYWxsb3dTYXZlT3B0aW9uOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jb250ZXh0OiBBbmd1bGFyRGF0YUNvbnRleHQsXG4gICAgcHJpdmF0ZSBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIF9hY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBfZXJyb3JTZXJ2aWNlOiBFcnJvclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfdXNlckFjdGl2aXR5U2VydmljZTogVXNlckFjdGl2aXR5U2VydmljZVxuICAgICkgeyB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGFTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZGF0YVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZWxvYWRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucmVsb2FkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0cnkge1xuICAgICAgLy8gZ2V0IG1ldGFkYXRhXG4gICAgICBjb25zdCBtZXRhZGF0YSA9IGF3YWl0IHRoaXMuX2NvbnRleHQuZ2V0TWV0YWRhdGEoKTtcbiAgICAgIC8vIGdldCByb3V0ZSBkYXRhXG4gICAgICB0aGlzLmRhdGFTdWJzY3JpcHRpb24gPSB0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5kYXRhLnN1YnNjcmliZSggcm91dGVEYXRhID0+IHtcbiAgICAgICAgLy8gZ2V0IGVudGl0eVR5cGVcbiAgICAgICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKGBeJHtyb3V0ZURhdGEubW9kZWx9JGAsICdpZycpO1xuICAgICAgICBjb25zdCBlbnRpdHlTZXQgPSBtZXRhZGF0YS5FbnRpdHlDb250YWluZXIuRW50aXR5U2V0LmZpbmQoIHggPT4ge1xuICAgICAgICAgIHJldHVybiByZS50ZXN0KHguTmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBpZiBlbnRpdHkgdHlwZSBpcyBudWxsXG4gICAgICAgIGlmIChlbnRpdHlTZXQgPT0gbnVsbCkge1xuICAgICAgICAgIC8vIG5hdmlnYXRlIHRvIGVycm9yXG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2Vycm9yU2VydmljZS5uYXZpZ2F0ZVRvRXJyb3IobmV3IFJlc3BvbnNlRXJyb3IoJ0VudGl0eVNldCBOb3QgRm91bmQnLCA0MDQpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBnZXQgZW50aXR5IHR5cGVcbiAgICAgICAgY29uc3QgZW50aXR5VHlwZSA9IG1ldGFkYXRhLkVudGl0eVR5cGUuZmluZCggeCA9PiB7XG4gICAgICAgICAgcmV0dXJuIHguTmFtZSA9PT0gZW50aXR5U2V0LkVudGl0eVR5cGU7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoZW50aXR5VHlwZSA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2Vycm9yU2VydmljZS5uYXZpZ2F0ZVRvRXJyb3IobmV3IFJlc3BvbnNlRXJyb3IoJ0VudGl0eVR5cGUgTm90IEZvdW5kJywgNDA0KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvdXRlRGF0YS5zZWFyY2hDb25maWd1cmF0aW9uKSB7XG4gICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyb3V0ZURhdGEuc2VhcmNoQ29uZmlndXJhdGlvbiwgJ2FsbG93U2F2ZScpKSB7XG4gICAgICAgICAgICB0aGlzLmFsbG93U2F2ZU9wdGlvbiA9IHJvdXRlRGF0YS5zZWFyY2hDb25maWd1cmF0aW9uLmFsbG93U2F2ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zZWFyY2hDb25maWd1cmF0aW9uID0gcm91dGVEYXRhLnNlYXJjaENvbmZpZ3VyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvdXRlRGF0YS50YWJsZUNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICB0aGlzLnRhYmxlQ29uZmlndXJhdGlvbiA9IHJvdXRlRGF0YS50YWJsZUNvbmZpZ3VyYXRpb247XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJvdXRlRGF0YS5kZXNjcmlwdGlvbikge1xuICAgICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQocm91dGVEYXRhLmRlc2NyaXB0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocm91dGVEYXRhLmxvbmdEZXNjcmlwdGlvbikge1xuICAgICAgICAgIHRoaXMubG9uZ0Rlc2NyaXB0aW9uID0gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHJvdXRlRGF0YS5sb25nRGVzY3JpcHRpb24pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyb3V0ZURhdGEuY2F0ZWdvcnkpIHtcbiAgICAgICAgICB0aGlzLmNhdGVnb3J5ID0gdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHJvdXRlRGF0YS5jYXRlZ29yeSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2xvbmUgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAgICAgIGNvbnN0IGRlZmF1bHRDb25maWd1cmF0aW9uID0gQWR2YW5jZWRUYWJsZUNvbmZpZ3VyYXRpb24uY2FzdCh0aGlzLnRhYmxlQ29uZmlndXJhdGlvbiwgdHJ1ZSk7XG4gICAgICAgIC8vIGNvcnJlY3QgZWRpdCBidXR0b24gbGlua1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBkZWZhdWx0Q29uZmlndXJhdGlvbi5jb2x1bW5zLmZpbmQoIGNvbCA9PiB7XG4gICAgICAgICAgcmV0dXJuIGNvbC5mb3JtYXR0ZXIgPT09ICdCdXR0b25Gb3JtYXR0ZXInICYmIGNvbC5mb3JtYXRTdHJpbmcgPT09ICcobW9kYWw6ZWRpdCknO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNvbHVtbikge1xuICAgICAgICAgIGNvbnN0IHVybDogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgICAgICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhdGhGcm9tUm9vdC5mb3JFYWNoKCByb3V0ZSA9PiB7XG4gICAgICAgICAgICB1cmwucHVzaC5hcHBseSh1cmwsIHJvdXRlLnVybCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29sdW1uLmZvcm1hdFN0cmluZyA9IGAjLyR7dXJsLmpvaW4oJy8nKX0vKG1vZGFsOlxcJFxce2lkXFx9L2VkaXQpYDtcbiAgICAgICAgfVxuICAgICAgICAvLyBjcmVhdGUgbGlzdCBjb25maWd1cmF0aW9uIGJ5IGFzc2lnbmluZyBsaXN0IGVudGl0eSBzZXRcbiAgICAgICAgdGhpcy50YWJsZS5jb25maWcgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICBtb2RlbDogZW50aXR5U2V0Lk5hbWVcbiAgICAgICAgfSwgZGVmYXVsdENvbmZpZ3VyYXRpb24pO1xuICAgICAgICAvLyBmZXRjaCBkYXRhXG4gICAgICAgIHRoaXMudGFibGUuZmV0Y2godHJ1ZSk7XG4gICAgICAgIC8vIGRvIHJlbG9hZCBieSB1c2luZyBoaWRkZW4gZnJhZ21lbnQgZS5nLiAvY2xhc3NlcyNyZWxvYWRcbiAgICAgICAgdGhpcy5yZWxvYWRTdWJzY3JpcHRpb24gPSB0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5mcmFnbWVudC5zdWJzY3JpYmUoZnJhZ21lbnQgPT4ge1xuICAgICAgICAgIGlmIChmcmFnbWVudCAmJiBmcmFnbWVudCA9PT0gJ3JlbG9hZCcpIHtcbiAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KFxuICAgICAgICAgICAgICB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1NldHRpbmdzLk9wZXJhdGlvbkNvbXBsZXRlZCcpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy50YWJsZS5mZXRjaCh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBmaW5hbGx5IGFkZCB1c2VyIGFjdGl2aXR5XG4gICAgICAgIHRoaXMuX3VzZXJBY3Rpdml0eVNlcnZpY2Uuc2V0SXRlbSh7XG4gICAgICAgICAgY2F0ZWdvcnk6IHRoaXMuY2F0ZWdvcnksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgdXJsOiB3aW5kb3cubG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSksXG4gICAgICAgICAgZGF0ZUNyZWF0ZWQ6IG5ldyBEYXRlXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICByZXR1cm4gdGhpcy5fZXJyb3JTZXJ2aWNlLnNob3dFcnJvcihlcnIpO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIERhdGEgbG9hZCBldmVudCBoYW5kbGVyIG9mIGFkdmFuY2VkIHRhYmxlIGNvbXBvbmVudFxuICAgKiBAcGFyYW0ge0FkdmFuY2VkVGFibGVEYXRhUmVzdWx0fSBkYXRhXG4gICAqL1xuICBvbkRhdGFMb2FkKGRhdGE6IEFkdmFuY2VkVGFibGVEYXRhUmVzdWx0KSB7XG4gICAgdGhpcy5yZWNvcmRzVG90YWwgPSBkYXRhLnJlY29yZHNUb3RhbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgc2VsZWN0ZWQgaXRlbXNcbiAgICovXG4gIHJlbW92ZSgpIHtcbiAgICBpZiAodGhpcy50YWJsZSAmJiB0aGlzLnRhYmxlLnNlbGVjdGVkICYmIHRoaXMudGFibGUuc2VsZWN0ZWQubGVuZ3RoKSB7XG4gICAgICAvLyBnZXQgaXRlbXMgdG8gcmVtb3ZlXG4gICAgICBjb25zdCBpdGVtcyA9IHRoaXMudGFibGUuc2VsZWN0ZWQ7XG4gICAgICByZXR1cm4gdGhpcy5fbW9kYWxTZXJ2aWNlLnNob3dXYXJuaW5nRGlhbG9nKFxuICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1RhYmxlcy5SZW1vdmVJdGVtc1RpdGxlJyksXG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnVGFibGVzLlJlbW92ZUl0ZW1zTWVzc2FnZScpLFxuICAgICAgICBESUFMT0dfQlVUVE9OUy5Pa0NhbmNlbCkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09ICdvaycpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRleHQubW9kZWwodGhpcy50YWJsZS5jb25maWcubW9kZWwpLnJlbW92ZShpdGVtcykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KFxuICAgICAgICAgICAgICAgIHRoaXMuZGVzY3JpcHRpb24gKyAnOicgKyB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ1RhYmxlcy5SZW1vdmVJdGVtTWVzc2FnZS50aXRsZScpLFxuICAgICAgICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgoaXRlbXMubGVuZ3RoID09PSAxID9cbiAgICAgICAgICAgICAgICAgICdUYWJsZXMuUmVtb3ZlSXRlbU1lc3NhZ2Uub25lJyA6ICdUYWJsZXMuUmVtb3ZlSXRlbU1lc3NhZ2UubWFueScpXG4gICAgICAgICAgICAgICAgICAsIHsgdmFsdWU6IGl0ZW1zLmxlbmd0aCB9KVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB0aGlzLnRhYmxlLmZldGNoKHRydWUpO1xuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fZXJyb3JTZXJ2aWNlLnNob3dFcnJvcihlcnIsIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZUxpbms6ICcuJ1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import * as tslib_1 from "tslib";
|
|
2
|
+
import { Component, Input, EventEmitter, ViewChild, ViewEncapsulation, Output } from '@angular/core';
|
|
3
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
4
|
+
import { ActivatedRoute, Router } from '@angular/router';
|
|
5
|
+
import { AngularDataContext } from '@themost/angular';
|
|
6
|
+
import 'rxjs/add/observable/combineLatest';
|
|
7
|
+
import { ErrorService, ModalService } from '@universis/common';
|
|
8
|
+
import { RouterModalOkCancel } from '@universis/common/routing';
|
|
9
|
+
import { AppEventService } from '@universis/common';
|
|
10
|
+
import { Observable } from 'rxjs';
|
|
11
|
+
import { AdvancedFormComponent } from '@universis/forms';
|
|
12
|
+
import { ProgressbarComponent } from 'ngx-bootstrap/progressbar';
|
|
13
|
+
var AdvancedRowActionComponent = /** @class */ (function (_super) {
|
|
14
|
+
tslib_1.__extends(AdvancedRowActionComponent, _super);
|
|
15
|
+
function AdvancedRowActionComponent(router, activatedRoute, _translateService, _context, _errorService, _modalService, _appEvent) {
|
|
16
|
+
var _this = _super.call(this, router, activatedRoute) || this;
|
|
17
|
+
_this._translateService = _translateService;
|
|
18
|
+
_this._context = _context;
|
|
19
|
+
_this._errorService = _errorService;
|
|
20
|
+
_this._modalService = _modalService;
|
|
21
|
+
_this._appEvent = _appEvent;
|
|
22
|
+
_this.modalIcon = 'fas fa-project-diagram';
|
|
23
|
+
_this.progressType = 'indigo';
|
|
24
|
+
_this.errorMessage = 'Tables.Actions.CompletedWithErrors';
|
|
25
|
+
_this.loading = false;
|
|
26
|
+
_this.refresh = new EventEmitter();
|
|
27
|
+
// set modal size
|
|
28
|
+
_this.modalClass = 'modal-lg';
|
|
29
|
+
// set modal title
|
|
30
|
+
_this.modalTitle = 'Tables.Actions.Label';
|
|
31
|
+
// disable ok button
|
|
32
|
+
_this.okButtonDisabled = false;
|
|
33
|
+
// set button text
|
|
34
|
+
_this.okButtonText = 'Tables.Actions.Start';
|
|
35
|
+
return _this;
|
|
36
|
+
}
|
|
37
|
+
Object.defineProperty(AdvancedRowActionComponent.prototype, "form", {
|
|
38
|
+
get: function () {
|
|
39
|
+
return this.formComponent;
|
|
40
|
+
},
|
|
41
|
+
enumerable: true,
|
|
42
|
+
configurable: true
|
|
43
|
+
});
|
|
44
|
+
AdvancedRowActionComponent.prototype.ngOnInit = function () {
|
|
45
|
+
var _this = this;
|
|
46
|
+
this.refreshSubscription = this.refresh.subscribe(function (value) {
|
|
47
|
+
if (value && value.progress) {
|
|
48
|
+
var progress = 0;
|
|
49
|
+
if (value.progress < 0) {
|
|
50
|
+
progress = 0;
|
|
51
|
+
}
|
|
52
|
+
else if (value.progress > 100) {
|
|
53
|
+
progress = 100;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
progress = value.progress;
|
|
57
|
+
}
|
|
58
|
+
_this.progressComponent.value = progress;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
AdvancedRowActionComponent.prototype.ngAfterViewInit = function () {
|
|
63
|
+
var _this = this;
|
|
64
|
+
if (this.formComponent && this.formComponent.form) {
|
|
65
|
+
this.okButtonDisabled = true;
|
|
66
|
+
this.invalidSubscription = this.formComponent.form.change.subscribe(function (event) {
|
|
67
|
+
if (Object.prototype.hasOwnProperty.call(event, "isValid") && (event.changed != null)) {
|
|
68
|
+
_this.okButtonDisabled = !event.isValid;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
AdvancedRowActionComponent.prototype.ngOnDestroy = function () {
|
|
74
|
+
if (this.refreshSubscription) {
|
|
75
|
+
this.refreshSubscription.unsubscribe();
|
|
76
|
+
}
|
|
77
|
+
if (this.executeSubscription) {
|
|
78
|
+
this.executeSubscription.unsubscribe();
|
|
79
|
+
}
|
|
80
|
+
if (this.invalidSubscription) {
|
|
81
|
+
this.invalidSubscription.unsubscribe();
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
AdvancedRowActionComponent.prototype.cancel = function () {
|
|
85
|
+
if (this.loading) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
// close
|
|
89
|
+
if (this._modalService.modalRef) {
|
|
90
|
+
return this._modalService.modalRef.hide();
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
AdvancedRowActionComponent.prototype.ok = function () {
|
|
94
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
95
|
+
var _this = this;
|
|
96
|
+
return tslib_1.__generator(this, function (_a) {
|
|
97
|
+
try {
|
|
98
|
+
this.loading = true;
|
|
99
|
+
this.lastError = null;
|
|
100
|
+
if (this.formComponent && this.formComponent.form &&
|
|
101
|
+
this.formComponent.form.formio && this.formComponent.form.formio.data) {
|
|
102
|
+
// set data
|
|
103
|
+
this.data = this.formComponent.form.formio.data;
|
|
104
|
+
}
|
|
105
|
+
// do action
|
|
106
|
+
this.execute.subscribe(function (result) {
|
|
107
|
+
_this.loading = false;
|
|
108
|
+
_this.refresh.emit({
|
|
109
|
+
progress: 100
|
|
110
|
+
});
|
|
111
|
+
if (result && result.errors && result.errors > 0) {
|
|
112
|
+
// show message for partial success
|
|
113
|
+
if (result.errors === 1) {
|
|
114
|
+
_this.lastError = new Error(_this._translateService.instant(_this.errorMessage + ".Description.One"));
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
_this.lastError = new Error(_this._translateService.instant(_this.errorMessage + ".Description.Many", result));
|
|
118
|
+
}
|
|
119
|
+
_this.refresh.emit({
|
|
120
|
+
progress: 1
|
|
121
|
+
});
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
if (_this._modalService.modalRef) {
|
|
125
|
+
_this._modalService.modalRef.hide();
|
|
126
|
+
}
|
|
127
|
+
}, function (err) {
|
|
128
|
+
_this.loading = false;
|
|
129
|
+
_this.lastError = err;
|
|
130
|
+
_this.refresh.emit({
|
|
131
|
+
progress: 0
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
this.loading = false;
|
|
137
|
+
this.lastError = err;
|
|
138
|
+
}
|
|
139
|
+
return [2 /*return*/];
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
};
|
|
143
|
+
AdvancedRowActionComponent.decorators = [
|
|
144
|
+
{ type: Component, args: [{
|
|
145
|
+
selector: 'app-advanced-row-action',
|
|
146
|
+
template: "<div>\n <div class=\"modal-header\" *ngIf=\"modalTitle\">\n <h5 class=\"modal-title\">{{modalTitle | translate}}</h5>\n <button (click)=\"cancel()\" [disabled]=\"loading\"\n type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Cancel\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body pt-0 mt-2 pb-0\">\n <div class=\"row\" *ngIf=\"lastError\">\n <div class=\"col-12\">\n <div class=\"alert alert-warning\" role=\"alert\">\n <span>{{ 'Tables.Actions.CompletedWithErrors.Title' | translate }}</span><br>\n <small *ngIf=\"lastError.status >= 0\" [translate]=\"'E' + lastError.status + '.message'\"></small>\n <small *ngIf=\"lastError.status == null\">{{lastError.message}}</small>\n </div>\n </div>\n </div>\n <div class=\"row\" *ngIf=\"description\">\n <div class=\"col-12 mb-3\">\n <div class=\"text-justify\">\n {{description | translate}}\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <div *ngIf=\"items && items.length > 1\" [translate]=\"'Tables.Actions.ActionMessage.Many'\" [translateParams]=\"items\"></div>\n <div *ngIf=\"items && items.length === 1\" [translate]=\"'Tables.Actions.ActionMessage.One'\"></div>\n <div class=\"font-weight-bold text-danger\" *ngIf=\"items && items.length <= 0\" [translate]=\"'Tables.Actions.ActionMessage.None'\"></div>\n <div class=\"pt-2 font-weight-bold text-danger\" *ngIf=\"additionalMessage && items && items.length <= 0\">{{additionalMessage}}</div>\n </div>\n </div>\n <div class=\"row pt-3\" *ngIf=\"formTemplate\">\n <div class=\"col-12 mb-3\">\n <div>\n <advanced-form-edit #formComponent [formName]=\"formTemplate\" [(data)]=\"data\"></advanced-form-edit>\n </div>\n </div>\n </div>\n\n <div class=\"row mt-3\">\n <div class=\"col-12\">\n <progressbar #progress [type]=\"progressType\" [max]=\"100\">\n </progressbar>\n </div>\n </div>\n </div>\n\n <div class=\"modal-footer justify-content-end\">\n <button [disabled]=\"okButtonDisabled || loading || (items && items.length === 0)\" (click)=\"ok()\"\n type=\"button\" [ngClass]=\"okButtonClass\">\n {{okButtonText | translate}}\n </button>\n <button [disabled]=\"cancelButtonDisabled || loading\"\n (click)=\"cancel()\" type=\"button\" [ngClass]=\"cancelButtonClass\" data-dismiss=\"modal\">\n {{cancelButtonText | translate}}\n </button>\n </div>\n</div>\n",
|
|
147
|
+
encapsulation: ViewEncapsulation.None,
|
|
148
|
+
styles: ["\n .fa-1_5x {\n font-size: 1.5rem;\n }\n .form-control:disabled, .form-control[readonly] {\n background-color: inherit;\n }\n .form-check.checkbox {\n position: relative\n }\n "]
|
|
149
|
+
}] }
|
|
150
|
+
];
|
|
151
|
+
/** @nocollapse */
|
|
152
|
+
AdvancedRowActionComponent.ctorParameters = function () { return [
|
|
153
|
+
{ type: Router },
|
|
154
|
+
{ type: ActivatedRoute },
|
|
155
|
+
{ type: TranslateService },
|
|
156
|
+
{ type: AngularDataContext },
|
|
157
|
+
{ type: ErrorService },
|
|
158
|
+
{ type: ModalService },
|
|
159
|
+
{ type: AppEventService }
|
|
160
|
+
]; };
|
|
161
|
+
AdvancedRowActionComponent.propDecorators = {
|
|
162
|
+
items: [{ type: Input }],
|
|
163
|
+
modalIcon: [{ type: Input }],
|
|
164
|
+
description: [{ type: Input }],
|
|
165
|
+
formTemplate: [{ type: Input }],
|
|
166
|
+
progressType: [{ type: Input }],
|
|
167
|
+
data: [{ type: Output }],
|
|
168
|
+
additionalMessage: [{ type: Input }],
|
|
169
|
+
errorMessage: [{ type: Input }],
|
|
170
|
+
progressComponent: [{ type: ViewChild, args: ['progress',] }],
|
|
171
|
+
formComponent: [{ type: ViewChild, args: ['formComponent',] }],
|
|
172
|
+
refresh: [{ type: Input }],
|
|
173
|
+
execute: [{ type: Input }]
|
|
174
|
+
};
|
|
175
|
+
return AdvancedRowActionComponent;
|
|
176
|
+
}(RouterModalOkCancel));
|
|
177
|
+
export { AdvancedRowActionComponent };
|
|
178
|
+
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtcm93LWFjdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdW5pdmVyc2lzL25neC10YWJsZXMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hZHZhbmNlZC1yb3ctYWN0aW9uL2FkdmFuY2VkLXJvdy1hY3Rpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFxQixLQUFLLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBYyxpQkFBaUIsRUFBMkMsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNLLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLEVBQUMsWUFBWSxFQUFFLFlBQVksRUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBQzNFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsVUFBVSxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRWpFO0lBa0JnRCxzREFBbUI7SUFzQi9ELG9DQUFZLE1BQWMsRUFDZCxjQUE4QixFQUN0QixpQkFBbUMsRUFDbkMsUUFBNEIsRUFDNUIsYUFBMkIsRUFDM0IsYUFBMkIsRUFDM0IsU0FBMEI7UUFOOUMsWUFPSSxrQkFBTSxNQUFNLEVBQUUsY0FBYyxDQUFDLFNBU2hDO1FBZG1CLHVCQUFp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O2dDQUNwQixTQUFTLFNBQUMsZUFBZTswQkFDekIsS0FBSzswQkFDTCxLQUFLOztJQTBIVixpQ0FBQztDQUFBLEFBOUpELENBa0JnRCxtQkFBbUIsR0E0SWxFO1NBNUlZLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBWaWV3RW5jYXBzdWxhdGlvbiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QW5ndWxhckRhdGFDb250ZXh0fSBmcm9tICdAdGhlbW9zdC9hbmd1bGFyJztcbmltcG9ydCAncnhqcy9hZGQvb2JzZXJ2YWJsZS9jb21iaW5lTGF0ZXN0JztcbmltcG9ydCB7RXJyb3JTZXJ2aWNlLCBNb2RhbFNlcnZpY2UsIFRvYXN0U2VydmljZX0gZnJvbSAnQHVuaXZlcnNpcy9jb21tb24nO1xuaW1wb3J0IHtSb3V0ZXJNb2RhbE9rQ2FuY2VsfSBmcm9tICdAdW5pdmVyc2lzL2NvbW1vbi9yb3V0aW5nJztcbmltcG9ydCB7QXBwRXZlbnRTZXJ2aWNlfSBmcm9tICdAdW5pdmVyc2lzL2NvbW1vbic7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FkdmFuY2VkRm9ybUNvbXBvbmVudH0gZnJvbSAnQHVuaXZlcnNpcy9mb3Jtcyc7XG5pbXBvcnQgeyBQcm9ncmVzc2JhckNvbXBvbmVudCB9IGZyb20gJ25neC1ib290c3RyYXAvcHJvZ3Jlc3NiYXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1hZHZhbmNlZC1yb3ctYWN0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWR2YW5jZWQtcm93LWFjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIGBcbiAgICAgICAgLmZhLTFfNXgge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgICAgIH1cbiAgICAgICAgLmZvcm0tY29udHJvbDpkaXNhYmxlZCwgLmZvcm0tY29udHJvbFtyZWFkb25seV0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbiAgICAgICAgfVxuICAgICAgICAuZm9ybS1jaGVjay5jaGVja2JveCB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlXG4gICAgICAgIH1cbiAgICAgICAgYFxuICAgIF0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBBZHZhbmNlZFJvd0FjdGlvbkNvbXBvbmVudCBleHRlbmRzIFJvdXRlck1vZGFsT2tDYW5jZWwgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgaW52YWxpZFN1YnNjcmlwdGlvbjogYW55O1xuXG5cbiAgICBASW5wdXQoKSBpdGVtczogYW55O1xuICAgIEBJbnB1dCgpIG1vZGFsSWNvbiA9ICdmYXMgZmEtcHJvamVjdC1kaWFncmFtJztcbiAgICBASW5wdXQoKSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGZvcm1UZW1wbGF0ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHByb2dyZXNzVHlwZTogc3RyaW5nID0gJ2luZGlnbyc7XG4gICAgQE91dHB1dCgpIGRhdGE6IGFueTtcbiAgICBASW5wdXQoKSBhZGRpdGlvbmFsTWVzc2FnZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGVycm9yTWVzc2FnZSA9ICdUYWJsZXMuQWN0aW9ucy5Db21wbGV0ZWRXaXRoRXJyb3JzJztcbiAgICBwdWJsaWMgbGFzdEVycm9yOiBhbnk7XG4gICAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcbiAgICBAVmlld0NoaWxkKCdwcm9ncmVzcycpIHByb2dyZXNzQ29tcG9uZW50OiBQcm9ncmVzc2JhckNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdmb3JtQ29tcG9uZW50JykgZm9ybUNvbXBvbmVudDogQWR2YW5jZWRGb3JtQ29tcG9uZW50O1xuICAgIEBJbnB1dCgpIHJlZnJlc2g6IGFueSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBJbnB1dCgpIGV4ZWN1dGU6IE9ic2VydmFibGU8YW55PjtcbiAgICBwcml2YXRlIHJlZnJlc2hTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGV4ZWN1dGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHJvdXRlcjogUm91dGVyLFxuICAgICAgICAgICAgICAgIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2NvbnRleHQ6IEFuZ3VsYXJEYXRhQ29udGV4dCxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9lcnJvclNlcnZpY2U6IEVycm9yU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9tb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9hcHBFdmVudDogQXBwRXZlbnRTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKHJvdXRlciwgYWN0aXZhdGVkUm91dGUpO1xuICAgICAgICAvLyBzZXQgbW9kYWwgc2l6ZVxuICAgICAgICB0aGlzLm1vZGFsQ2xhc3MgPSAnbW9kYWwtbGcnO1xuICAgICAgICAvLyBzZXQgbW9kYWwgdGl0bGVcbiAgICAgICAgdGhpcy5tb2RhbFRpdGxlID0gJ1RhYmxlcy5BY3Rpb25zLkxhYmVsJztcbiAgICAgICAgLy8gZGlzYWJsZSBvayBidXR0b25cbiAgICAgICAgdGhpcy5va0J1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIC8vIHNldCBidXR0b24gdGV4dFxuICAgICAgICB0aGlzLm9rQnV0dG9uVGV4dCA9ICdUYWJsZXMuQWN0aW9ucy5TdGFydCc7XG4gICAgfVxuXG4gICAgZ2V0IGZvcm0oKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtQ29tcG9uZW50O1xuICAgIH1cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoU3Vic2NyaXB0aW9uID0gdGhpcy5yZWZyZXNoLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5wcm9ncmVzcykge1xuICAgICAgICAgICAgICAgIGxldCBwcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlLnByb2dyZXNzIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcyA9IDA7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5wcm9ncmVzcyA+IDEwMCkge1xuICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcyA9IDEwMDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcyA9IHZhbHVlLnByb2dyZXNzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzQ29tcG9uZW50LnZhbHVlID0gcHJvZ3Jlc3M7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMuZm9ybUNvbXBvbmVudCAmJiB0aGlzLmZvcm1Db21wb25lbnQuZm9ybSkge1xuICAgICAgICB0aGlzLm9rQnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmludmFsaWRTdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1Db21wb25lbnQuZm9ybS5jaGFuZ2Uuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXZlbnQsIFwiaXNWYWxpZFwiKSAmJiAoZXZlbnQuY2hhbmdlZCAhPSBudWxsKSkge1xuICAgICAgICAgICAgICB0aGlzLm9rQnV0dG9uRGlzYWJsZWQgPSAhZXZlbnQuaXNWYWxpZDtcbiAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMucmVmcmVzaFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZXhlY3V0ZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5leGVjdXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW52YWxpZFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5pbnZhbGlkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjYW5jZWwoKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgaWYgKHRoaXMubG9hZGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNsb3NlXG4gICAgICAgIGlmICh0aGlzLl9tb2RhbFNlcnZpY2UubW9kYWxSZWYpIHtcbiAgICAgICAgICAgIHJldHVybiAgdGhpcy5fbW9kYWxTZXJ2aWNlLm1vZGFsUmVmLmhpZGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIG9rKCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubGFzdEVycm9yID0gbnVsbDtcbiAgICAgICAgICAgIGlmICh0aGlzLmZvcm1Db21wb25lbnQgJiYgdGhpcy5mb3JtQ29tcG9uZW50LmZvcm0gJiZcbiAgICAgICAgICAgICAgdGhpcy5mb3JtQ29tcG9uZW50LmZvcm0uZm9ybWlvICYmIHRoaXMuZm9ybUNvbXBvbmVudC5mb3JtLmZvcm1pby5kYXRhKSB7XG4gICAgICAgICAgICAgIC8vIHNldCBkYXRhXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmZvcm1Db21wb25lbnQuZm9ybS5mb3JtaW8uZGF0YTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBkbyBhY3Rpb25cbiAgICAgICAgICAgIHRoaXMuZXhlY3V0ZS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IDEwMFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmVycm9ycyAmJiByZXN1bHQuZXJyb3JzID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBzaG93IG1lc3NhZ2UgZm9yIHBhcnRpYWwgc3VjY2Vzc1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmVycm9ycyA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0RXJyb3IgPSBuZXcgRXJyb3IodGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3RoaXMuZXJyb3JNZXNzYWdlfS5EZXNjcmlwdGlvbi5PbmVgKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxhc3RFcnJvciA9IG5ldyBFcnJvcih0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGAke3RoaXMuZXJyb3JNZXNzYWdlfS5EZXNjcmlwdGlvbi5NYW55YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2guZW1pdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmVzczogMVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fbW9kYWxTZXJ2aWNlLm1vZGFsUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX21vZGFsU2VydmljZS5tb2RhbFJlZi5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdEVycm9yID0gZXJyO1xuICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaC5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IDBcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5sYXN0RXJyb3IgPSBlcnI7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuIl19
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import * as tslib_1 from "tslib";
|
|
2
|
+
import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
3
|
+
import { FormioComponent } from 'angular-formio';
|
|
4
|
+
import { AngularDataContext } from '@themost/angular';
|
|
5
|
+
import { ActivatedRoute } from '@angular/router';
|
|
6
|
+
import { ServiceUrlPreProcessor, TranslatePreProcessor } from '@universis/forms';
|
|
7
|
+
import { AdvancedTableSearchBaseComponent } from '../advanced-table/advanced-table-search-base';
|
|
8
|
+
import { TranslateService } from '@ngx-translate/core';
|
|
9
|
+
import { HttpClient } from '@angular/common/http';
|
|
10
|
+
var AdvancedSearchFormComponent = /** @class */ (function (_super) {
|
|
11
|
+
tslib_1.__extends(AdvancedSearchFormComponent, _super);
|
|
12
|
+
function AdvancedSearchFormComponent(_context, _translateService, _activatedRoute, _http) {
|
|
13
|
+
var _this = _super.call(this) || this;
|
|
14
|
+
_this._context = _context;
|
|
15
|
+
_this._translateService = _translateService;
|
|
16
|
+
_this._activatedRoute = _activatedRoute;
|
|
17
|
+
_this._http = _http;
|
|
18
|
+
_this.form = {};
|
|
19
|
+
_this.refreshForm = new EventEmitter();
|
|
20
|
+
_this.submission = { data: {} };
|
|
21
|
+
_this.loading = true;
|
|
22
|
+
return _this;
|
|
23
|
+
}
|
|
24
|
+
AdvancedSearchFormComponent.prototype.ngOnChanges = function (changes) {
|
|
25
|
+
var _this = this;
|
|
26
|
+
if (Object.prototype.hasOwnProperty.call(changes, 'form')) {
|
|
27
|
+
if (changes.form != null) {
|
|
28
|
+
if (changes.form.currentValue &&
|
|
29
|
+
changes.form.currentValue != changes.form.previousValue) {
|
|
30
|
+
this.ngOnInit();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (Object.prototype.hasOwnProperty.call(changes, 'formSrc')) {
|
|
35
|
+
if (changes.formSrc != null) {
|
|
36
|
+
if (changes.formSrc.currentValue &&
|
|
37
|
+
changes.formSrc.currentValue != changes.formSrc.previousValue) {
|
|
38
|
+
this._http.get(changes.formSrc.currentValue).toPromise().then(function (form) {
|
|
39
|
+
// set form
|
|
40
|
+
_this.form = form;
|
|
41
|
+
// and init
|
|
42
|
+
_this.ngOnInit();
|
|
43
|
+
}).catch(function (err) {
|
|
44
|
+
console.error('An error occurred while loading search configuration');
|
|
45
|
+
console.error(err);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (Object.prototype.hasOwnProperty.call(changes, 'filter')) {
|
|
51
|
+
if (changes.filter != null) {
|
|
52
|
+
this.submission.data = changes.filter.currentValue || {};
|
|
53
|
+
this.refreshForm.emit({
|
|
54
|
+
submission: this.submission
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
AdvancedSearchFormComponent.prototype.ngOnInit = function () {
|
|
60
|
+
var _this = this;
|
|
61
|
+
if (this.form) {
|
|
62
|
+
new ServiceUrlPreProcessor(this._context).parse(this.form);
|
|
63
|
+
new TranslatePreProcessor(this._translateService).parse(this.form);
|
|
64
|
+
this.submission = {
|
|
65
|
+
data: this.filter
|
|
66
|
+
};
|
|
67
|
+
this.refreshForm.emit({
|
|
68
|
+
form: this.form
|
|
69
|
+
});
|
|
70
|
+
this.loading = false;
|
|
71
|
+
this.filterSubscription = this.filterChange.subscribe(function (filter) {
|
|
72
|
+
_this.submission.data = filter;
|
|
73
|
+
_this.refreshForm.emit({
|
|
74
|
+
submission: _this.submission
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
AdvancedSearchFormComponent.prototype.onChange = function (event) {
|
|
80
|
+
var _this = this;
|
|
81
|
+
Object.keys(this.formComponent.submission.data).forEach(function (key) {
|
|
82
|
+
if (Object.prototype.hasOwnProperty.call(_this.formComponent.submission.data, key)) {
|
|
83
|
+
var value = _this.formComponent.submission.data[key];
|
|
84
|
+
// the filter with type is a string and is not empty
|
|
85
|
+
var isEmptyString = typeof value === 'string' && value.length === 0;
|
|
86
|
+
if (!isEmptyString) {
|
|
87
|
+
Object.defineProperty(_this.filter, key, {
|
|
88
|
+
configurable: true,
|
|
89
|
+
enumerable: true,
|
|
90
|
+
value: value
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
delete _this.filter[key];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
AdvancedSearchFormComponent.prototype.onFormLoad = function (form) {
|
|
100
|
+
var currentLang = this._translateService.currentLang;
|
|
101
|
+
this.formComponent.formio.i18next.options.resources[currentLang] = { translation: this._translateService.instant("Forms") };
|
|
102
|
+
this.formComponent.formio.language = currentLang;
|
|
103
|
+
};
|
|
104
|
+
AdvancedSearchFormComponent.prototype.ngAfterViewInit = function () {
|
|
105
|
+
//
|
|
106
|
+
};
|
|
107
|
+
AdvancedSearchFormComponent.prototype.ngOnDestroy = function () {
|
|
108
|
+
if (this.filterSubscription) {
|
|
109
|
+
this.filterSubscription.unsubscribe();
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
AdvancedSearchFormComponent.decorators = [
|
|
113
|
+
{ type: Component, args: [{
|
|
114
|
+
selector: 'app-advanced-search-form',
|
|
115
|
+
template: "\n <div class=\"p-4\">\n <formio #formioComponent class=\"formio-search\" (keydown)=\"onKeyEnter($event)\" (change)=\"onChange($event)\" (formLoad)=\"onFormLoad($event)\"\n [refresh]=\"refreshForm\" [submission]=\"submission\" [form]=\"form\"></formio>\n </div>\n ",
|
|
116
|
+
encapsulation: ViewEncapsulation.None,
|
|
117
|
+
styles: ["formio.formio-search .form-group{margin-bottom:0}formio.formio-search .form-group .col-form-label{font-size:90%;padding-top:4px;padding-bottom:4px}.choices__list.choices__list--single .choices__item:first-child.choices__item--selectable{width:85%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}"]
|
|
118
|
+
}] }
|
|
119
|
+
];
|
|
120
|
+
/** @nocollapse */
|
|
121
|
+
AdvancedSearchFormComponent.ctorParameters = function () { return [
|
|
122
|
+
{ type: AngularDataContext },
|
|
123
|
+
{ type: TranslateService },
|
|
124
|
+
{ type: ActivatedRoute },
|
|
125
|
+
{ type: HttpClient }
|
|
126
|
+
]; };
|
|
127
|
+
AdvancedSearchFormComponent.propDecorators = {
|
|
128
|
+
formComponent: [{ type: ViewChild, args: ['formioComponent',] }],
|
|
129
|
+
form: [{ type: Input }],
|
|
130
|
+
formSrc: [{ type: Input }],
|
|
131
|
+
refreshForm: [{ type: Output }]
|
|
132
|
+
};
|
|
133
|
+
return AdvancedSearchFormComponent;
|
|
134
|
+
}(AdvancedTableSearchBaseComponent));
|
|
135
|
+
export { AdvancedSearchFormComponent };
|
|
136
|
+
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtc2VhcmNoLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHVuaXZlcnNpcy9uZ3gtdGFibGVzLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYWR2YW5jZWQtc2VhcmNoLWZvcm0vYWR2YW5jZWQtc2VhcmNoLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUEyQixNQUFNLGVBQWUsQ0FBQztBQUMvSixPQUFPLEVBQUMsZUFBZSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQy9FLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQzlGLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBR3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRDtJQVdpRCx1REFBZ0M7SUFXL0UscUNBQW9CLFFBQTRCLEVBQzVCLGlCQUFtQyxFQUNuQyxlQUErQixFQUMvQixLQUFpQjtRQUhyQyxZQUtFLGlCQUFPLFNBQ1I7UUFObUIsY0FBUSxHQUFSLFFBQVEsQ0FBb0I7UUFDNUIsdUJBQWlCLEdBQWpCLGlCQUFpQixDQUFrQjtRQUNuQyxxQkFBZSxHQUFmLGVBQWUsQ0FBZ0I7UUFDL0IsV0FBSyxHQUFMLEtBQUssQ0FBWTtRQVY1QixVQUFJLEdBQVEsRUFBRSxDQUFDO1FBRWQsaUJBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2hE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TSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM3SCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDO0lBQ25ELENBQUM7SUFFRCxxREFBZSxHQUFmO1FBQ0UsRUFBRTtJQUNKLENBQUM7SUFFRCxpREFBVyxHQUFYO1FBQ0UsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQzs7Z0JBdEhGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxRQUFRLEVBQUUsbVNBS1Q7b0JBRUQsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7O2lCQUN0Qzs7OztnQkFuQk8sa0JBQWtCO2dCQUlsQixnQkFBZ0I7Z0JBSGhCLGNBQWM7Z0JBTWIsVUFBVTs7O2dDQWdCaEIsU0FBUyxTQUFDLGlCQUFpQjt1QkFDM0IsS0FBSzswQkFDTCxLQUFLOzhCQUNMLE1BQU07O0lBc0dULGtDQUFDO0NBQUEsQUF2SEQsQ0FXaUQsZ0NBQWdDLEdBNEdoRjtTQTVHWSwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybWlvQ29tcG9uZW50LCBGb3JtaW9Gb3JtfSBmcm9tICdhbmd1bGFyLWZvcm1pbyc7XG5pbXBvcnQge0FuZ3VsYXJEYXRhQ29udGV4dH0gZnJvbSAnQHRoZW1vc3QvYW5ndWxhcic7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtTZXJ2aWNlVXJsUHJlUHJvY2Vzc29yLCBUcmFuc2xhdGVQcmVQcm9jZXNzb3J9IGZyb20gJ0B1bml2ZXJzaXMvZm9ybXMnO1xuaW1wb3J0IHtBZHZhbmNlZFRhYmxlU2VhcmNoQmFzZUNvbXBvbmVudH0gZnJvbSAnLi4vYWR2YW5jZWQtdGFibGUvYWR2YW5jZWQtdGFibGUtc2VhcmNoLWJhc2UnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7QWR2YW5jZWRUYWJsZUNvbXBvbmVudH0gZnJvbSAnLi4vYWR2YW5jZWQtdGFibGUvYWR2YW5jZWQtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hZHZhbmNlZC1zZWFyY2gtZm9ybScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInAtNFwiPlxuICAgICAgPGZvcm1pbyAjZm9ybWlvQ29tcG9uZW50IGNsYXNzPVwiZm9ybWlvLXNlYXJjaFwiIChrZXlkb3duKT1cIm9uS2V5RW50ZXIoJGV2ZW50KVwiIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiIChmb3JtTG9hZCk9XCJvbkZvcm1Mb2FkKCRldmVudClcIlxuICAgICAgICAgICAgICBbcmVmcmVzaF09XCJyZWZyZXNoRm9ybVwiIFtzdWJtaXNzaW9uXT1cInN1Ym1pc3Npb25cIiBbZm9ybV09XCJmb3JtXCI+PC9mb3JtaW8+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2FkdmFuY2VkLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQWR2YW5jZWRTZWFyY2hGb3JtQ29tcG9uZW50IGV4dGVuZHMgQWR2YW5jZWRUYWJsZVNlYXJjaEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcblxuXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1pb0NvbXBvbmVudCcpIGZvcm1Db21wb25lbnQ6IEZvcm1pb0NvbXBvbmVudDtcbiAgQElucHV0KCkgZm9ybTogYW55ID0ge307XG4gIEBJbnB1dCgpIGZvcm1TcmM6IHN0cmluZztcbiAgQE91dHB1dCgpIHJlZnJlc2hGb3JtID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIHN1Ym1pc3Npb246IGFueSA9IHsgZGF0YToge30gfTtcbiAgcHJpdmF0ZSBmaWx0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGxvYWRpbmcgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NvbnRleHQ6IEFuZ3VsYXJEYXRhQ29udGV4dCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50XG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaGFuZ2VzLCAnZm9ybScpKSB7XG4gICAgICBpZiAoY2hhbmdlcy5mb3JtICE9IG51bGwpIHtcbiAgICAgICAgaWYgKGNoYW5nZXMuZm9ybS5jdXJyZW50VmFsdWUgJiZcbiAgICAgICAgICBjaGFuZ2VzLmZvcm0uY3VycmVudFZhbHVlICE9IGNoYW5nZXMuZm9ybS5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5uZ09uSW5pdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2hhbmdlcywgJ2Zvcm1TcmMnKSkge1xuICAgICAgaWYgKGNoYW5nZXMuZm9ybVNyYyAhPSBudWxsKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmZvcm1TcmMuY3VycmVudFZhbHVlICYmXG4gICAgICAgICAgY2hhbmdlcy5mb3JtU3JjLmN1cnJlbnRWYWx1ZSAhPSBjaGFuZ2VzLmZvcm1TcmMucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgIHRoaXMuX2h0dHAuZ2V0KGNoYW5nZXMuZm9ybVNyYy5jdXJyZW50VmFsdWUpLnRvUHJvbWlzZSgpLnRoZW4oKGZvcm0pID0+IHtcbiAgICAgICAgICAgIC8vIHNldCBmb3JtXG4gICAgICAgICAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgICAgICAgICAgLy8gYW5kIGluaXRcbiAgICAgICAgICAgIHRoaXMubmdPbkluaXQoKTtcbiAgICAgICAgICB9KS5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBsb2FkaW5nIHNlYXJjaCBjb25maWd1cmF0aW9uJyk7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaGFuZ2VzLCAnZmlsdGVyJykpIHtcbiAgICAgIGlmIChjaGFuZ2VzLmZpbHRlciAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuc3VibWlzc2lvbi5kYXRhID0gY2hhbmdlcy5maWx0ZXIuY3VycmVudFZhbHVlIHx8IHt9O1xuICAgICAgICB0aGlzLnJlZnJlc2hGb3JtLmVtaXQoe1xuICAgICAgICAgIHN1Ym1pc3Npb246IHRoaXMuc3VibWlzc2lvblxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtKSB7XG4gICAgICBuZXcgU2VydmljZVVybFByZVByb2Nlc3Nvcih0aGlzLl9jb250ZXh0KS5wYXJzZSh0aGlzLmZvcm0pO1xuICAgICAgbmV3IFRyYW5zbGF0ZVByZVByb2Nlc3Nvcih0aGlzLl90cmFuc2xhdGVTZXJ2aWNlKS5wYXJzZSh0aGlzLmZvcm0pO1xuICAgICAgdGhpcy5zdWJtaXNzaW9uID0ge1xuICAgICAgICBkYXRhOiB0aGlzLmZpbHRlclxuICAgICAgfTtcbiAgICAgIHRoaXMucmVmcmVzaEZvcm0uZW1pdCh7XG4gICAgICAgIGZvcm06IHRoaXMuZm9ybVxuICAgICAgfSk7XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uID0gdGhpcy5maWx0ZXJDaGFuZ2Uuc3Vic2NyaWJlKCBmaWx0ZXIgPT4ge1xuICAgICAgICB0aGlzLnN1Ym1pc3Npb24uZGF0YSA9IGZpbHRlcjtcbiAgICAgICAgdGhpcy5yZWZyZXNoRm9ybS5lbWl0KHtcbiAgICAgICAgICBzdWJtaXNzaW9uOiB0aGlzLnN1Ym1pc3Npb25cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbkNoYW5nZShldmVudDogb2JqZWN0KSB7XG4gICAgT2JqZWN0LmtleXModGhpcy5mb3JtQ29tcG9uZW50LnN1Ym1pc3Npb24uZGF0YSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmZvcm1Db21wb25lbnQuc3VibWlzc2lvbi5kYXRhLCBrZXkpKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5mb3JtQ29tcG9uZW50LnN1Ym1pc3Npb24uZGF0YVtrZXldO1xuICAgICAgICAvLyB0aGUgZmlsdGVyIHdpdGggdHlwZSBpcyBhIHN0cmluZyBhbmQgaXMgbm90IGVtcHR5XG4gICAgICAgIGNvbnN0IGlzRW1wdHlTdHJpbmcgPSAgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPT09IDA7XG4gICAgICAgIGlmICghaXNFbXB0eVN0cmluZykge1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLmZpbHRlciwga2V5LCB7XG4gICAgICAgICAgICBjb25maWd1cmFibGUgOiB0cnVlLFxuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlIDogdmFsdWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgdGhpcy5maWx0ZXJba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25Gb3JtTG9hZChmb3JtOiBGb3JtaW9Gb3JtKSB7XG4gICAgY29uc3QgY3VycmVudExhbmcgPSB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nO1xuICAgIHRoaXMuZm9ybUNvbXBvbmVudC5mb3JtaW8uaTE4bmV4dC5vcHRpb25zLnJlc291cmNlc1tjdXJyZW50TGFuZ10gPSB7IHRyYW5zbGF0aW9uIDogdGhpcy5fdHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGBGb3Jtc2ApIH07XG4gICAgdGhpcy5mb3JtQ29tcG9uZW50LmZvcm1pby5sYW5ndWFnZSA9IGN1cnJlbnRMYW5nO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vXG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWx0ZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZmlsdGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|