@unifylib/ui-lib 1.0.3 → 1.0.65
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/esm2022/iq-ui-lib.mjs +5 -0
- package/esm2022/lib/base-model/SearchStrConfig.mjs +11 -0
- package/esm2022/lib/base-model/api-response.mjs +2 -0
- package/esm2022/lib/base-model/audit-log-entry.mjs +3 -0
- package/esm2022/lib/base-model/button-action-settings.mjs +17 -0
- package/esm2022/lib/base-model/column-def.model.mjs +28 -0
- package/esm2022/lib/base-model/do-action-request.mjs +8 -0
- package/esm2022/lib/base-model/field-action.mjs +6 -0
- package/esm2022/lib/base-model/field-filter.model.mjs +3 -0
- package/esm2022/lib/base-model/field-info.mjs +64 -0
- package/esm2022/lib/base-model/field-predicate.model.mjs +10 -0
- package/esm2022/lib/base-model/filter-request.mjs +13 -0
- package/esm2022/lib/base-model/filter.model.mjs +25 -0
- package/esm2022/lib/base-model/get-items-list.mjs +10 -0
- package/esm2022/lib/base-model/index.mjs +13 -0
- package/esm2022/lib/base-model/items-total.model.mjs +8 -0
- package/esm2022/lib/base-model/line-item.model.mjs +12 -0
- package/esm2022/lib/base-model/lookupItem.mjs +16 -0
- package/esm2022/lib/base-model/page-info.mjs +17 -0
- package/esm2022/lib/base-model/permission-matrix.model.mjs +2 -0
- package/esm2022/lib/base-model/report-request.model.mjs +17 -0
- package/esm2022/lib/base-model/response-envelop.model.mjs +10 -0
- package/esm2022/lib/base-model/snack-message.model.mjs +11 -0
- package/esm2022/lib/base-model/table-column.interface.mjs +2 -0
- package/esm2022/lib/base-model/table-page-user-action.interface.mjs +21 -0
- package/esm2022/lib/base-model/workflow/workflow-steps.model.mjs +9 -0
- package/esm2022/lib/base-model/workflow/workflow.model.mjs +42 -0
- package/esm2022/lib/components/action-comment/action-comment.component.mjs +111 -0
- package/esm2022/lib/components/action-confirmation/action-confirmation.component.mjs +68 -0
- package/esm2022/lib/components/activity-report-form/activity-report-form.component.mjs +486 -0
- package/esm2022/lib/components/advanced-filter/field-filter/field-filter.component.mjs +44 -0
- package/esm2022/lib/components/advanced-filter/filter-builder/filter-builder.component.mjs +323 -0
- package/esm2022/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.mjs +70 -0
- package/esm2022/lib/components/audit-log-list/audit-log.component.mjs +97 -0
- package/esm2022/lib/components/auto-complete/auto-complete.component.mjs +300 -0
- package/esm2022/lib/components/base-form/base-form.component.mjs +284 -0
- package/esm2022/lib/components/base-form-canvas/MaxDigitsDirective.mjs +29 -0
- package/esm2022/lib/components/base-form-canvas/NumbersOnlyDirective.mjs +132 -0
- package/esm2022/lib/components/base-form-canvas/base-form-canvas.component.mjs +789 -0
- package/esm2022/lib/components/base-input-dialog/base-input-dialog.component.mjs +72 -0
- package/esm2022/lib/components/base-table/base-table.component.mjs +708 -0
- package/esm2022/lib/components/button-actions/button-actions.component.mjs +101 -0
- package/esm2022/lib/components/editable-base-table/editable-base-table.component.mjs +507 -0
- package/esm2022/lib/components/equation-builder/equation-builder.component.mjs +117 -0
- package/esm2022/lib/components/item-line-editor/item-line-editor.component.mjs +322 -0
- package/esm2022/lib/components/multi-auto-complete/multi-auto-complete.component.mjs +294 -0
- package/esm2022/lib/components/paginator/paginator.component.mjs +181 -0
- package/esm2022/lib/components/permission-matrix/permission-matrix.component.mjs +129 -0
- package/esm2022/lib/components/report-details-dialog/report-details-dialog.component.mjs +102 -0
- package/esm2022/lib/components/report-form/report-form.component.mjs +485 -0
- package/esm2022/lib/components/search-bar/search-bar.component.mjs +63 -0
- package/esm2022/lib/components/section-form-canvas/section-form-canvas.component.mjs +99 -0
- package/esm2022/lib/components/shared/action-button/action-button.component.mjs +59 -0
- package/esm2022/lib/components/shared/action-card/action-card.component.mjs +93 -0
- package/esm2022/lib/components/shared/attachment-uploader/attachment-uploader.component.mjs +74 -0
- package/esm2022/lib/components/shared-list/shared-list.component.mjs +47 -0
- package/esm2022/lib/components/snackbar-static/snackbar-static.component.mjs +43 -0
- package/esm2022/lib/components/title-bar/title-bar.component.mjs +185 -0
- package/esm2022/lib/services/backend-service.mjs +241 -0
- package/esm2022/lib/services/index.mjs +4 -0
- package/esm2022/lib/services/top-panel.mjs +22 -0
- package/esm2022/lib/services/trigger-form.service.mjs +17 -0
- package/esm2022/lib/utils/base-utils.mjs +101 -0
- package/esm2022/lib/validators/date-range-validator.mjs +27 -0
- package/esm2022/lib/validators/index.mjs +4 -0
- package/esm2022/lib/validators/match-list.validator.mjs +9 -0
- package/esm2022/lib/validators/multi-email-validator.mjs +13 -0
- package/esm2022/public-api.mjs +30 -0
- package/esm2022/unifylib-ui-lib.mjs +5 -0
- package/fesm2022/iq-ui-lib.mjs +6713 -0
- package/fesm2022/iq-ui-lib.mjs.map +1 -0
- package/fesm2022/unifylib-ui-lib.mjs +6713 -0
- package/fesm2022/unifylib-ui-lib.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/base-model/SearchStrConfig.d.ts +8 -0
- package/{src/lib/base-model/api-response.ts → lib/base-model/api-response.d.ts} +5 -7
- package/lib/base-model/audit-log-entry.d.ts +7 -0
- package/lib/base-model/button-action-settings.d.ts +16 -0
- package/lib/base-model/column-def.model.d.ts +11 -0
- package/lib/base-model/do-action-request.d.ts +10 -0
- package/lib/base-model/field-action.d.ts +6 -0
- package/lib/base-model/field-filter.model.d.ts +7 -0
- package/lib/base-model/field-info.d.ts +59 -0
- package/lib/base-model/field-predicate.model.d.ts +7 -0
- package/lib/base-model/filter-request.d.ts +15 -0
- package/lib/base-model/filter.model.d.ts +22 -0
- package/lib/base-model/get-items-list.d.ts +21 -0
- package/lib/base-model/index.d.ts +12 -0
- package/lib/base-model/items-total.model.d.ts +6 -0
- package/lib/base-model/line-item.model.d.ts +10 -0
- package/lib/base-model/lookupItem.d.ts +13 -0
- package/{src/lib/base-model/page-info.ts → lib/base-model/page-info.d.ts} +26 -24
- package/lib/base-model/permission-matrix.model.d.ts +18 -0
- package/lib/base-model/report-request.model.d.ts +18 -0
- package/lib/base-model/response-envelop.model.d.ts +8 -0
- package/lib/base-model/snack-message.model.d.ts +7 -0
- package/lib/base-model/table-column.interface.d.ts +31 -0
- package/lib/base-model/table-page-user-action.interface.d.ts +14 -0
- package/lib/base-model/workflow/workflow-steps.model.d.ts +7 -0
- package/lib/base-model/workflow/workflow.model.d.ts +13 -0
- package/lib/components/action-comment/action-comment.component.d.ts +35 -0
- package/lib/components/action-confirmation/action-confirmation.component.d.ts +27 -0
- package/lib/components/activity-report-form/activity-report-form.component.d.ts +93 -0
- package/lib/components/advanced-filter/field-filter/field-filter.component.d.ts +21 -0
- package/lib/components/advanced-filter/filter-builder/filter-builder.component.d.ts +51 -0
- package/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.d.ts +25 -0
- package/lib/components/audit-log-list/audit-log.component.d.ts +29 -0
- package/lib/components/auto-complete/auto-complete.component.d.ts +52 -0
- package/lib/components/base-form/base-form.component.d.ts +59 -0
- package/lib/components/base-form-canvas/MaxDigitsDirective.d.ts +7 -0
- package/lib/components/base-form-canvas/NumbersOnlyDirective.d.ts +23 -0
- package/lib/components/base-form-canvas/base-form-canvas.component.d.ts +142 -0
- package/lib/components/base-input-dialog/base-input-dialog.component.d.ts +23 -0
- package/lib/components/base-table/base-table.component.d.ts +172 -0
- package/lib/components/button-actions/button-actions.component.d.ts +19 -0
- package/lib/components/editable-base-table/editable-base-table.component.d.ts +109 -0
- package/lib/components/equation-builder/equation-builder.component.d.ts +23 -0
- package/lib/components/item-line-editor/item-line-editor.component.d.ts +66 -0
- package/lib/components/multi-auto-complete/multi-auto-complete.component.d.ts +53 -0
- package/lib/components/paginator/paginator.component.d.ts +41 -0
- package/lib/components/permission-matrix/permission-matrix.component.d.ts +26 -0
- package/lib/components/report-details-dialog/report-details-dialog.component.d.ts +34 -0
- package/lib/components/report-form/report-form.component.d.ts +92 -0
- package/lib/components/search-bar/search-bar.component.d.ts +29 -0
- package/lib/components/section-form-canvas/section-form-canvas.component.d.ts +32 -0
- package/lib/components/shared/action-button/action-button.component.d.ts +17 -0
- package/lib/components/shared/action-card/action-card.component.d.ts +37 -0
- package/lib/components/shared/attachment-uploader/attachment-uploader.component.d.ts +18 -0
- package/lib/components/shared-list/shared-list.component.d.ts +21 -0
- package/lib/components/snackbar-static/snackbar-static.component.d.ts +15 -0
- package/lib/components/title-bar/title-bar.component.d.ts +54 -0
- package/lib/services/backend-service.d.ts +59 -0
- package/{src/lib/services/index.ts → lib/services/index.d.ts} +1 -1
- package/lib/services/top-panel.d.ts +8 -0
- package/lib/services/trigger-form.service.d.ts +7 -0
- package/lib/utils/base-utils.d.ts +13 -0
- package/lib/validators/date-range-validator.d.ts +2 -0
- package/lib/validators/match-list.validator.d.ts +4 -0
- package/lib/validators/multi-email-validator.d.ts +6 -0
- package/package.json +16 -3
- package/public-api.d.ts +26 -0
- package/ng-package.json +0 -7
- package/src/lib/base-model/SearchStrConfig.ts +0 -12
- package/src/lib/base-model/audit-log-entry.ts +0 -7
- package/src/lib/base-model/button-action-settings.ts +0 -25
- package/src/lib/base-model/column-def.model.ts +0 -34
- package/src/lib/base-model/do-action-request.ts +0 -11
- package/src/lib/base-model/field-action.ts +0 -7
- package/src/lib/base-model/field-filter.model.ts +0 -14
- package/src/lib/base-model/field-info.ts +0 -98
- package/src/lib/base-model/field-predicate.model.ts +0 -7
- package/src/lib/base-model/filter-request.ts +0 -27
- package/src/lib/base-model/filter.model.ts +0 -49
- package/src/lib/base-model/get-items-list.ts +0 -24
- package/src/lib/base-model/index.ts +0 -11
- package/src/lib/base-model/lookupItem.ts +0 -21
- package/src/lib/base-model/null-snackmessage.ts +0 -9
- package/src/lib/base-model/report-request.model.ts +0 -33
- package/src/lib/base-model/response-envelop.model.ts +0 -15
- package/src/lib/base-model/snack-message.model.ts +0 -14
- package/src/lib/base-model/snackmessage-interface.ts +0 -7
- package/src/lib/base-model/table-column.interface.ts +0 -29
- package/src/lib/base-model/table-page-user-action.interface.ts +0 -33
- package/src/lib/base-model/workflow/workflow-steps.model.ts +0 -9
- package/src/lib/base-model/workflow/workflow.model.ts +0 -52
- package/src/lib/components/action-confirmation/action-confirmation.component.css +0 -34
- package/src/lib/components/action-confirmation/action-confirmation.component.html +0 -18
- package/src/lib/components/action-confirmation/action-confirmation.component.spec.ts +0 -23
- package/src/lib/components/action-confirmation/action-confirmation.component.ts +0 -58
- package/src/lib/components/activity-report-form/activity-report-form.component.html +0 -109
- package/src/lib/components/activity-report-form/activity-report-form.component.scss +0 -0
- package/src/lib/components/activity-report-form/activity-report-form.component.spec.ts +0 -25
- package/src/lib/components/activity-report-form/activity-report-form.component.ts +0 -605
- package/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.css +0 -51
- package/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.html +0 -23
- package/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.spec.ts +0 -23
- package/src/lib/components/audit-log-details-dialog/audit-log-details-dialog.component.ts +0 -69
- package/src/lib/components/audit-log-list/audit-log.component.html +0 -23
- package/src/lib/components/audit-log-list/audit-log.component.scss +0 -0
- package/src/lib/components/audit-log-list/audit-log.component.spec.ts +0 -25
- package/src/lib/components/audit-log-list/audit-log.component.ts +0 -116
- package/src/lib/components/auto-complete/auto-complete.component.css +0 -14
- package/src/lib/components/auto-complete/auto-complete.component.html +0 -29
- package/src/lib/components/auto-complete/auto-complete.component.spec.ts +0 -23
- package/src/lib/components/auto-complete/auto-complete.component.ts +0 -330
- package/src/lib/components/base-form/base-form.component.html +0 -58
- package/src/lib/components/base-form/base-form.component.scss +0 -0
- package/src/lib/components/base-form/base-form.component.spec.ts +0 -25
- package/src/lib/components/base-form/base-form.component.ts +0 -305
- package/src/lib/components/base-form-canvas/base-form-canvas.component.css +0 -22
- package/src/lib/components/base-form-canvas/base-form-canvas.component.html +0 -1006
- package/src/lib/components/base-form-canvas/base-form-canvas.component.spec.ts +0 -23
- package/src/lib/components/base-form-canvas/base-form-canvas.component.ts +0 -573
- package/src/lib/components/base-input-dialog/base-input-dialog.component.css +0 -0
- package/src/lib/components/base-input-dialog/base-input-dialog.component.html +0 -42
- package/src/lib/components/base-input-dialog/base-input-dialog.component.spec.ts +0 -23
- package/src/lib/components/base-input-dialog/base-input-dialog.component.ts +0 -78
- package/src/lib/components/base-table/base-table.component.html +0 -242
- package/src/lib/components/base-table/base-table.component.scss +0 -31
- package/src/lib/components/base-table/base-table.component.spec.ts +0 -25
- package/src/lib/components/base-table/base-table.component.ts +0 -568
- package/src/lib/components/button-actions/button-actions.component.html +0 -28
- package/src/lib/components/button-actions/button-actions.component.scss +0 -6
- package/src/lib/components/button-actions/button-actions.component.spec.ts +0 -23
- package/src/lib/components/button-actions/button-actions.component.ts +0 -72
- package/src/lib/components/editable-base-table/editable-base-table.component.html +0 -372
- package/src/lib/components/editable-base-table/editable-base-table.component.scss +0 -44
- package/src/lib/components/editable-base-table/editable-base-table.component.spec.ts +0 -25
- package/src/lib/components/editable-base-table/editable-base-table.component.ts +0 -570
- package/src/lib/components/equation-builder/equation-builder.component.css +0 -0
- package/src/lib/components/equation-builder/equation-builder.component.html +0 -31
- package/src/lib/components/equation-builder/equation-builder.component.spec.ts +0 -23
- package/src/lib/components/equation-builder/equation-builder.component.ts +0 -121
- package/src/lib/components/multi-auto-complete/multi-auto-complete.component.css +0 -11
- package/src/lib/components/multi-auto-complete/multi-auto-complete.component.html +0 -38
- package/src/lib/components/multi-auto-complete/multi-auto-complete.component.spec.ts +0 -23
- package/src/lib/components/multi-auto-complete/multi-auto-complete.component.ts +0 -317
- package/src/lib/components/paginator/paginator.component.css +0 -25
- package/src/lib/components/paginator/paginator.component.html +0 -34
- package/src/lib/components/paginator/paginator.component.ts +0 -94
- package/src/lib/components/rejection-comment/action-comment.component.css +0 -33
- package/src/lib/components/rejection-comment/action-comment.component.html +0 -46
- package/src/lib/components/rejection-comment/action-comment.component.spec.ts +0 -23
- package/src/lib/components/rejection-comment/action-comment.component.ts +0 -86
- package/src/lib/components/report-details-dialog/report-details-dialog.component.css +0 -17
- package/src/lib/components/report-details-dialog/report-details-dialog.component.html +0 -16
- package/src/lib/components/report-details-dialog/report-details-dialog.component.spec.ts +0 -23
- package/src/lib/components/report-details-dialog/report-details-dialog.component.ts +0 -113
- package/src/lib/components/report-form/report-form.component.html +0 -94
- package/src/lib/components/report-form/report-form.component.scss +0 -0
- package/src/lib/components/report-form/report-form.component.spec.ts +0 -25
- package/src/lib/components/report-form/report-form.component.ts +0 -588
- package/src/lib/components/search-bar/search-bar.component.html +0 -62
- package/src/lib/components/search-bar/search-bar.component.scss +0 -8
- package/src/lib/components/search-bar/search-bar.component.spec.ts +0 -25
- package/src/lib/components/search-bar/search-bar.component.ts +0 -70
- package/src/lib/components/shared/attachment-uploader/attachment-uploader.component.css +0 -54
- package/src/lib/components/shared/attachment-uploader/attachment-uploader.component.html +0 -22
- package/src/lib/components/shared/attachment-uploader/attachment-uploader.component.spec.ts +0 -23
- package/src/lib/components/shared/attachment-uploader/attachment-uploader.component.ts +0 -45
- package/src/lib/components/shared-list/shared-list.component.css +0 -0
- package/src/lib/components/shared-list/shared-list.component.html +0 -17
- package/src/lib/components/shared-list/shared-list.component.spec.ts +0 -23
- package/src/lib/components/shared-list/shared-list.component.ts +0 -53
- package/src/lib/components/title-bar/title-bar.component.css +0 -0
- package/src/lib/components/title-bar/title-bar.component.css.map +0 -1
- package/src/lib/components/title-bar/title-bar.component.html +0 -31
- package/src/lib/components/title-bar/title-bar.component.scss +0 -23
- package/src/lib/components/title-bar/title-bar.component.spec.ts +0 -23
- package/src/lib/components/title-bar/title-bar.component.ts +0 -119
- package/src/lib/services/backend-service.ts +0 -286
- package/src/lib/services/top-panel.ts +0 -17
- package/src/lib/services/trigger-form.service.ts +0 -11
- package/src/lib/share-module/shared-module.ts +0 -10
- package/src/lib/styles/invoiceq-theme.scss +0 -252
- package/src/lib/styles/styles.scss +0 -1723
- package/src/lib/utils/base-utils.ts +0 -102
- package/src/lib/validators/date-range-validator.ts +0 -31
- package/src/lib/validators/match-list.validator.ts +0 -10
- package/src/lib/validators/multi-email-validator.ts +0 -15
- package/src/public-api.ts +0 -21
- package/tsconfig.lib.json +0 -15
- package/tsconfig.lib.prod.json +0 -11
- package/tsconfig.spec.json +0 -15
- /package/{src/lib/validators/index.ts → lib/validators/index.d.ts} +0 -0
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { Inject, Injectable } from "@angular/core";
|
|
2
|
+
import { HttpHeaders, HttpParams } from "@angular/common/http";
|
|
3
|
+
import { of, Subject } from "rxjs";
|
|
4
|
+
import { catchError, distinctUntilChanged } from "rxjs/operators";
|
|
5
|
+
import { SnackMessage } from "../base-model/snack-message.model";
|
|
6
|
+
import { ColumnDef } from "../base-model/column-def.model";
|
|
7
|
+
import { ReportRequest } from "../base-model/report-request.model";
|
|
8
|
+
import { ActionConfirmationComponent } from "../components/action-confirmation/action-confirmation.component";
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/common/http";
|
|
11
|
+
import * as i2 from "./top-panel";
|
|
12
|
+
import * as i3 from "@ngx-translate/core";
|
|
13
|
+
import * as i4 from "@angular/router";
|
|
14
|
+
import * as i5 from "@angular/material/dialog";
|
|
15
|
+
const WORKFLOW_STATES_MAP = {
|
|
16
|
+
1: 'New',
|
|
17
|
+
2: 'Pending',
|
|
18
|
+
3: 'Terminated',
|
|
19
|
+
4: 'Completed',
|
|
20
|
+
5: 'Updated',
|
|
21
|
+
6: 'Default'
|
|
22
|
+
};
|
|
23
|
+
const EXCLUDED_REPORT_COLUMNS = ['listAction', 'button', 'checkbox'];
|
|
24
|
+
export class BackendService {
|
|
25
|
+
constructor(http, topPanel, translateService, route, dialog, config, secretsManager) {
|
|
26
|
+
this.http = http;
|
|
27
|
+
this.topPanel = topPanel;
|
|
28
|
+
this.translateService = translateService;
|
|
29
|
+
this.route = route;
|
|
30
|
+
this.dialog = dialog;
|
|
31
|
+
this.config = config;
|
|
32
|
+
this.secretsManager = secretsManager;
|
|
33
|
+
this.topPanelMessage$ = new Subject();
|
|
34
|
+
this.fieldAction$ = new Subject();
|
|
35
|
+
this.isEmptyItems = true;
|
|
36
|
+
this.topPanelMessage$.subscribe(msg => {
|
|
37
|
+
this.topPanel.topPanelMessage$.next(msg);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
set defaults(value) {
|
|
41
|
+
}
|
|
42
|
+
get defaults() {
|
|
43
|
+
return {};
|
|
44
|
+
}
|
|
45
|
+
getStatusDescription(element, workflow) {
|
|
46
|
+
if (element?.stepId) {
|
|
47
|
+
let index = workflow?.workflowSteps?.findIndex(s => s.stepId === element.stepId);
|
|
48
|
+
if (index > -1) {
|
|
49
|
+
return this.translateService.getDefaultLang() === 'ar' ?
|
|
50
|
+
workflow?.workflowSteps[index].stepNameAr || workflow?.workflowSteps[index].stepName :
|
|
51
|
+
workflow?.workflowSteps[index].stepName;
|
|
52
|
+
// return this.translateService.instant(workflow?.workflowSteps[index].stepName);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
return this.translateService.instant('INVENTORY.inprocessStatus');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
if (element.statusId === 4 && element.statusDescription) {
|
|
60
|
+
return element.statusDescription;
|
|
61
|
+
}
|
|
62
|
+
else if (element.statusId) {
|
|
63
|
+
return this.translateService.instant(WORKFLOW_STATES_MAP[element.statusId]);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
return "unknown";
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//sss
|
|
71
|
+
getItemsByFilter(reportRequest, apiUrl) {
|
|
72
|
+
const url = `${this.getApiBasePath()}/api/v1${apiUrl}/list`;
|
|
73
|
+
return this.http.post(url, reportRequest, { headers: this.buildSecuredHeader() }).pipe(distinctUntilChanged(), catchError(err => of(err.message || err)));
|
|
74
|
+
}
|
|
75
|
+
getItemAuditLog(reportRequest, apiUrl) {
|
|
76
|
+
const url = `${this.getApiBasePath()}/api/v1${apiUrl}/audit-log`;
|
|
77
|
+
return this.http.post(url, reportRequest, { headers: this.buildSecuredHeader() }).pipe(distinctUntilChanged(), catchError(err => of(err.message || err)));
|
|
78
|
+
}
|
|
79
|
+
buildSecuredHeader() {
|
|
80
|
+
const headers = new HttpHeaders({
|
|
81
|
+
'Content-Type': 'application/json',
|
|
82
|
+
Authorization: this.config.getAuthToken()
|
|
83
|
+
});
|
|
84
|
+
return headers;
|
|
85
|
+
}
|
|
86
|
+
buildFormSecuredHeader() {
|
|
87
|
+
const headers = new HttpHeaders({
|
|
88
|
+
Authorization: this.config.getAuthToken()
|
|
89
|
+
});
|
|
90
|
+
return headers;
|
|
91
|
+
}
|
|
92
|
+
labelKey(column, pageInfo) {
|
|
93
|
+
const configuredKey = column.label ? column.label : column.property;
|
|
94
|
+
if (configuredKey && configuredKey.trim() !== '' && configuredKey.startsWith(pageInfo.labelsSection)) {
|
|
95
|
+
return configuredKey;
|
|
96
|
+
}
|
|
97
|
+
return `${pageInfo.labelsSection}.${configuredKey}`;
|
|
98
|
+
}
|
|
99
|
+
buildReportColumn(columns, pageInfo) {
|
|
100
|
+
let columnDef = [];
|
|
101
|
+
columns.filter(x => !EXCLUDED_REPORT_COLUMNS.includes(x.type)).forEach((c, index) => {
|
|
102
|
+
let transLabel = this.translateService.instant(this.labelKey(c, pageInfo));
|
|
103
|
+
let transGroup = pageInfo.supportGroupingInExport ?
|
|
104
|
+
c.group.trim() ? this.translateService.instant(c.group) : ' ' : null;
|
|
105
|
+
if (c.type === 'workflowStatus') {
|
|
106
|
+
transLabel = this.translateService.instant('workflowStatus');
|
|
107
|
+
}
|
|
108
|
+
if ((c.reportVisible === true) || (c.visible === true && c.reportVisible !== false)) {
|
|
109
|
+
columnDef.push(new ColumnDef(c, index, transLabel, this.translateService.getDefaultLang(), transGroup));
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
return columnDef;
|
|
113
|
+
}
|
|
114
|
+
base64ToArrayBuffer(base64) {
|
|
115
|
+
const binaryString = window.atob(base64); // Comment this if not using base64
|
|
116
|
+
const bytes = new Uint8Array(binaryString.length);
|
|
117
|
+
return bytes.map((byte, i) => binaryString.charCodeAt(i));
|
|
118
|
+
}
|
|
119
|
+
buildReportRequest(columns, title, filterRequest, reportType, pageInfo, searchStr, orientation = 'PORTRAIT') {
|
|
120
|
+
const columnDef = this.buildReportColumn(columns, pageInfo);
|
|
121
|
+
const reportRequest = new ReportRequest({
|
|
122
|
+
dataset: [], filter: "",
|
|
123
|
+
columns: columnDef,
|
|
124
|
+
// sessionId: this.topPanel.userSession().sessionId,
|
|
125
|
+
sessionId: this.config.getAuthToken(),
|
|
126
|
+
title: this.translateService.instant(title),
|
|
127
|
+
prefLang: this.translateService.getDefaultLang(),
|
|
128
|
+
reportType: reportType,
|
|
129
|
+
searchStr: searchStr,
|
|
130
|
+
filterRequest: filterRequest,
|
|
131
|
+
orientation: orientation
|
|
132
|
+
});
|
|
133
|
+
return reportRequest;
|
|
134
|
+
}
|
|
135
|
+
getLookupItemsByMultiFilter(listItems, filterRequest) {
|
|
136
|
+
listItems.pageSize = 100;
|
|
137
|
+
filterRequest.pageSize = 100;
|
|
138
|
+
const params = new HttpParams().set('searchStr', listItems.searchStr);
|
|
139
|
+
let url = `${this.getApiBasePath()}/api/v1/${listItems.apiUri}`;
|
|
140
|
+
return this.http.post(url, filterRequest, { headers: this.buildSecuredHeader(), params: params }).pipe(distinctUntilChanged(), catchError(err => of(err.message || err)));
|
|
141
|
+
}
|
|
142
|
+
getLookupItemsByFilter(listItems, cascadedId) {
|
|
143
|
+
listItems.pageSize = 500;
|
|
144
|
+
const params = new HttpParams().set('searchStr', listItems.searchStr);
|
|
145
|
+
let url = `${this.getApiBasePath()}/api/v1/${listItems.apiUri}`;
|
|
146
|
+
if (cascadedId) {
|
|
147
|
+
url = url + `/${cascadedId}`;
|
|
148
|
+
}
|
|
149
|
+
return this.http.post(url, listItems, { headers: this.buildSecuredHeader() }).pipe(distinctUntilChanged(), catchError(err => of(err.message || err)));
|
|
150
|
+
}
|
|
151
|
+
downloadReport(reportRequest, pageApiPath, readyPath) {
|
|
152
|
+
const s = readyPath === true ? `/api/v1${pageApiPath}` : `/api/v1${pageApiPath}/extractAndDownloadListReport`;
|
|
153
|
+
return this.http.post(this.getApiBasePath() + s, reportRequest, { headers: this.buildSecuredHeader() }).subscribe((resp) => {
|
|
154
|
+
if (resp.valid) {
|
|
155
|
+
if (resp.body) {
|
|
156
|
+
this.topPanelMessage$.next(new SnackMessage('report.download.start', true, 'success', {
|
|
157
|
+
entity: reportRequest.title,
|
|
158
|
+
format: reportRequest.reportType?.toUpperCase()
|
|
159
|
+
}));
|
|
160
|
+
const filename = reportRequest.title + "." + reportRequest.reportType;
|
|
161
|
+
const blob = new Blob([this.base64ToArrayBuffer(resp.body)]);
|
|
162
|
+
if (navigator.msSaveBlob) {
|
|
163
|
+
navigator.msSaveBlob(blob, filename);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
const link = document.createElement('a');
|
|
167
|
+
// Browsers that support HTML5 download attribute
|
|
168
|
+
if (link.download !== undefined) {
|
|
169
|
+
const url = URL.createObjectURL(blob);
|
|
170
|
+
link.setAttribute('href', url);
|
|
171
|
+
link.setAttribute('download', filename);
|
|
172
|
+
link.style.visibility = 'hidden';
|
|
173
|
+
document.body.appendChild(link);
|
|
174
|
+
link.click();
|
|
175
|
+
document.body.removeChild(link);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
this.topPanelMessage$.next(new SnackMessage('report.download.failed', false, 'error'));
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
getApiBasePath() {
|
|
186
|
+
return this.config.getBaseApi();
|
|
187
|
+
}
|
|
188
|
+
doActionWithAttachments(request, param2, pageInfo) {
|
|
189
|
+
const url = `${this.getApiBasePath()}/api/v1${pageInfo.apiUri}/doActionWithAttachments`;
|
|
190
|
+
const formData = new FormData();
|
|
191
|
+
formData.set('doActionRequest', new Blob([JSON.stringify(request)], {
|
|
192
|
+
type: "application/json"
|
|
193
|
+
}));
|
|
194
|
+
return this.http.post(url, formData, { headers: this.buildFormSecuredHeader() }).pipe(distinctUntilChanged(), catchError((error) => {
|
|
195
|
+
return of(error.error);
|
|
196
|
+
}));
|
|
197
|
+
}
|
|
198
|
+
doActionWithAttachment(request, file, pageInfo) {
|
|
199
|
+
const url = `${this.getApiBasePath()}/api/v1${pageInfo.apiUri}/doActionWithAttachments`;
|
|
200
|
+
const formData = new FormData();
|
|
201
|
+
formData.append('files', file);
|
|
202
|
+
formData.set('doActionRequest', new Blob([JSON.stringify(request)], {
|
|
203
|
+
type: "application/json"
|
|
204
|
+
}));
|
|
205
|
+
return this.http.post(url, formData, {
|
|
206
|
+
headers: this.buildFormSecuredHeader()
|
|
207
|
+
}).pipe(distinctUntilChanged(), catchError((error) => {
|
|
208
|
+
// Transform the error into a fake success-like response
|
|
209
|
+
return of(error.error); // This will now be passed to `next` in subscribe()
|
|
210
|
+
}));
|
|
211
|
+
}
|
|
212
|
+
encrypt(message) {
|
|
213
|
+
return this.secretsManager.encryptSecret(message);
|
|
214
|
+
}
|
|
215
|
+
decrypt(secret) {
|
|
216
|
+
return this.secretsManager.decryptSecret(secret);
|
|
217
|
+
}
|
|
218
|
+
getConfirmation() {
|
|
219
|
+
const dialogRef = this.dialog.open(ActionConfirmationComponent, {
|
|
220
|
+
data: { acceptActionLabel: 'accept', rejectActionLabel: 'return', warningMsg: 'confirmation_message' },
|
|
221
|
+
width: '600px',
|
|
222
|
+
height: 'auto'
|
|
223
|
+
});
|
|
224
|
+
return dialogRef.afterClosed();
|
|
225
|
+
}
|
|
226
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BackendService, deps: [{ token: i1.HttpClient }, { token: i2.TopPanel }, { token: i3.TranslateService }, { token: i4.ActivatedRoute }, { token: i5.MatDialog }, { token: 'config' }, { token: 'secretsManager' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
227
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BackendService, providedIn: 'root' }); }
|
|
228
|
+
}
|
|
229
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BackendService, decorators: [{
|
|
230
|
+
type: Injectable,
|
|
231
|
+
args: [{
|
|
232
|
+
providedIn: 'root'
|
|
233
|
+
}]
|
|
234
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.TopPanel }, { type: i3.TranslateService }, { type: i4.ActivatedRoute }, { type: i5.MatDialog }, { type: undefined, decorators: [{
|
|
235
|
+
type: Inject,
|
|
236
|
+
args: ['config']
|
|
237
|
+
}] }, { type: undefined, decorators: [{
|
|
238
|
+
type: Inject,
|
|
239
|
+
args: ['secretsManager']
|
|
240
|
+
}] }] });
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFja2VuZC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvc2VydmljZXMvYmFja2VuZC1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBZ0MsV0FBVyxFQUFFLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzVGLE9BQU8sRUFBYSxFQUFFLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFHL0QsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBS3pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQVFqRSxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQzs7Ozs7OztBQUU1RyxNQUFNLG1CQUFtQixHQUEyQjtJQUNoRCxDQUFDLEVBQUUsS0FBSztJQUNSLENBQUMsRUFBRSxTQUFTO0lBQ1osQ0FBQyxFQUFFLFlBQVk7SUFDZixDQUFDLEVBQUUsV0FBVztJQUNkLENBQUMsRUFBRSxTQUFTO0lBQ1osQ0FBQyxFQUFFLFNBQVM7Q0FDZixDQUFDO0FBRUYsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLFlBQVksRUFBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFJcEUsTUFBTSxPQUFPLGNBQWM7SUFRdkIsWUFBb0IsSUFBZ0IsRUFDaEIsUUFBa0IsRUFDbEIsZ0JBQWtDLEVBQ2xDLEtBQXFCLEVBQ3JCLE1BQWlCLEVBQ0MsTUFBVyxFQUNILGNBQW1CO1FBTjdDLFNBQUks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LFFBQVEsRUFBRTtZQUN4QyxPQUFPLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1NBQ3ZDLENBQUMsQ0FBQyxJQUFJLENBQ0wsb0JBQW9CLEVBQUUsRUFDdEIsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFO1lBQ3RDLHdEQUF3RDtZQUN4RCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxtREFBbUQ7UUFDN0UsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxPQUFPLENBQUMsTUFBVztRQUNqQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxlQUFlO1FBQ3BCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFO1lBQzlELElBQUksRUFBRSxFQUFDLGlCQUFpQixFQUFFLFFBQVEsRUFBQyxpQkFBaUIsRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLHNCQUFzQixFQUFDO1lBQ2xHLEtBQUssRUFBRSxPQUFPO1lBQ2QsTUFBTSxFQUFFLE1BQU07U0FDZixDQUFDLENBQUM7UUFDSCxPQUFPLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDOytHQTNQVSxjQUFjLDJKQWFILFFBQVEsYUFDUixnQkFBZ0I7bUhBZDNCLGNBQWMsY0FGWCxNQUFNOzs0RkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBY2dCLE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsTUFBTTsyQkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXN9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge09ic2VydmFibGUsIG9mLCBTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge2NhdGNoRXJyb3IsIGRpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtTbmFja01lc3NhZ2V9IGZyb20gXCIuLi9iYXNlLW1vZGVsL3NuYWNrLW1lc3NhZ2UubW9kZWxcIjtcclxuaW1wb3J0IHtQYWdlSW5mb30gZnJvbSBcIi4uL2Jhc2UtbW9kZWwvcGFnZS1pbmZvXCI7XHJcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHtDb2x1bW5EZWZ9IGZyb20gXCIuLi9iYXNlLW1vZGVsL2NvbHVtbi1kZWYubW9kZWxcIjtcclxuaW1wb3J0IHtUYWJsZUNvbHVtbn0gZnJvbSBcIi4uL2Jhc2UtbW9kZWwvdGFibGUtY29sdW1uLmludGVyZmFjZVwiO1xyXG5pbXBvcnQge0dldEl0ZW1zTGlzdH0gZnJvbSBcIi4uL2Jhc2UtbW9kZWwvZ2V0LWl0ZW1zLWxpc3RcIjtcclxuaW1wb3J0IHtGaWVsZEFjdGlvbn0gZnJvbSBcIi4uL2Jhc2UtbW9kZWwvZmllbGQtYWN0aW9uXCI7XHJcbmltcG9ydCB7V29ya2Zsb3d9IGZyb20gXCIuLi9iYXNlLW1vZGVsL3dvcmtmbG93L3dvcmtmbG93Lm1vZGVsXCI7XHJcbmltcG9ydCB7UmVwb3J0UmVxdWVzdH0gZnJvbSBcIi4uL2Jhc2UtbW9kZWwvcmVwb3J0LXJlcXVlc3QubW9kZWxcIjtcclxuaW1wb3J0IHtGaWx0ZXJSZXF1ZXN0fSBmcm9tIFwiLi4vYmFzZS1tb2RlbC9maWx0ZXItcmVxdWVzdFwiO1xyXG5pbXBvcnQge1Jlc3BvbnNlRW52ZWxvcH0gZnJvbSBcIi4uL2Jhc2UtbW9kZWwvcmVzcG9uc2UtZW52ZWxvcC5tb2RlbFwiO1xyXG5pbXBvcnQge0Zvcm1Hcm91cH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQge1RvcFBhbmVsfSBmcm9tIFwiLi90b3AtcGFuZWxcIjtcclxuaW1wb3J0IHtEb0FjdGlvblJlcXVlc3R9IGZyb20gXCIuLi9iYXNlLW1vZGVsL2RvLWFjdGlvbi1yZXF1ZXN0XCI7XHJcbmltcG9ydCB7TWF0RGlhbG9nfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7QWN0aW9uQ29uZmlybWF0aW9uQ29tcG9uZW50fSBmcm9tIFwiLi4vY29tcG9uZW50cy9hY3Rpb24tY29uZmlybWF0aW9uL2FjdGlvbi1jb25maXJtYXRpb24uY29tcG9uZW50XCI7XHJcblxyXG5jb25zdCBXT1JLRkxPV19TVEFURVNfTUFQOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0ge1xyXG4gICAgMTogJ05ldycsXHJcbiAgICAyOiAnUGVuZGluZycsXHJcbiAgICAzOiAnVGVybWluYXRlZCcsXHJcbiAgICA0OiAnQ29tcGxldGVkJyxcclxuICAgIDU6ICdVcGRhdGVkJyxcclxuICAgIDY6ICdEZWZhdWx0J1xyXG59O1xyXG5cclxuY29uc3QgRVhDTFVERURfUkVQT1JUX0NPTFVNTlMgPSBbJ2xpc3RBY3Rpb24nLCdidXR0b24nLCAnY2hlY2tib3gnXTtcclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYWNrZW5kU2VydmljZSB7XHJcbiAgICBwdWJsaWMgdG9wUGFuZWxNZXNzYWdlJCA9IG5ldyBTdWJqZWN0PFNuYWNrTWVzc2FnZT4oKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHB1YmxpYyBwYXJlbnRGb3JtOiBGb3JtR3JvdXA7XHJcbiAgICBwdWJsaWMgY2hpbGRGb3JtOiBGb3JtR3JvdXA7XHJcbiAgICBwdWJsaWMgZmllbGRBY3Rpb24kID0gbmV3IFN1YmplY3Q8RmllbGRBY3Rpb24+KCk7XHJcbiAgICBwdWJsaWMgaXNFbXB0eUl0ZW1zOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIHRvcFBhbmVsOiBUb3BQYW5lbCxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoJ2NvbmZpZycpIHByaXZhdGUgY29uZmlnOiBhbnksXHJcbiAgICAgICAgICAgICAgICBASW5qZWN0KCdzZWNyZXRzTWFuYWdlcicpIHByaXZhdGUgc2VjcmV0c01hbmFnZXI6IGFueSkge1xyXG5cclxuICAgICAgICB0aGlzLnRvcFBhbmVsTWVzc2FnZSQuc3Vic2NyaWJlKG1zZyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudG9wUGFuZWwudG9wUGFuZWxNZXNzYWdlJC5uZXh0KG1zZyk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBzZXQgZGVmYXVsdHModmFsdWU6IGFueSB8IHVuZGVmaW5lZCkge1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBkZWZhdWx0cygpOiBhbnkgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRTdGF0dXNEZXNjcmlwdGlvbihlbGVtZW50OiBhbnksIHdvcmtmbG93OiBXb3JrZmxvdykge1xyXG4gICAgICAgIGlmIChlbGVtZW50Py5zdGVwSWQpIHtcclxuXHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHdvcmtmbG93Py53b3JrZmxvd1N0ZXBzPy5maW5kSW5kZXgocyA9PiBzLnN0ZXBJZCA9PT0gZWxlbWVudC5zdGVwSWQpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXREZWZhdWx0TGFuZygpID09PSAnYXInID9cclxuICAgICAgICAgICAgICAgICAgICB3b3JrZmxvdz8ud29ya2Zsb3dTdGVwc1tpbmRleF0uc3RlcE5hbWVBciB8fCB3b3JrZmxvdz8ud29ya2Zsb3dTdGVwc1tpbmRleF0uc3RlcE5hbWU6XHJcbiAgICAgICAgICAgICAgICAgICAgd29ya2Zsb3c/LndvcmtmbG93U3RlcHNbaW5kZXhdLnN0ZXBOYW1lO1xyXG4gICAgICAgICAgICAgICAgLy8gcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHdvcmtmbG93Py53b3JrZmxvd1N0ZXBzW2luZGV4XS5zdGVwTmFtZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0lOVkVOVE9SWS5pbnByb2Nlc3NTdGF0dXMnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LnN0YXR1c0lkID09PSA0ICYmIGVsZW1lbnQuc3RhdHVzRGVzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50LnN0YXR1c0Rlc2NyaXB0aW9uO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuc3RhdHVzSWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChXT1JLRkxPV19TVEFURVNfTUFQW2VsZW1lbnQuc3RhdHVzSWRdKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBcInVua25vd25cIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuLy9zc3NcclxuICAgIGdldEl0ZW1zQnlGaWx0ZXIocmVwb3J0UmVxdWVzdDogYW55LCBhcGlVcmw6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5nZXRBcGlCYXNlUGF0aCgpfS9hcGkvdjEke2FwaVVybH0vbGlzdGA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwgcmVwb3J0UmVxdWVzdCwgeyBoZWFkZXJzOiB0aGlzLmJ1aWxkU2VjdXJlZEhlYWRlcigpfSkucGlwZShcclxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4gb2YoZXJyLm1lc3NhZ2UgfHwgZXJyKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEl0ZW1BdWRpdExvZyhyZXBvcnRSZXF1ZXN0OiBhbnksIGFwaVVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmdldEFwaUJhc2VQYXRoKCl9L2FwaS92MSR7YXBpVXJsfS9hdWRpdC1sb2dgO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIHJlcG9ydFJlcXVlc3QsIHsgaGVhZGVyczogdGhpcy5idWlsZFNlY3VyZWRIZWFkZXIoKX0pLnBpcGUoXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IG9mKGVyci5tZXNzYWdlIHx8IGVycikpKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBidWlsZFNlY3VyZWRIZWFkZXIoKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgICAgIEF1dGhvcml6YXRpb246IHRoaXMuY29uZmlnLmdldEF1dGhUb2tlbigpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGhlYWRlcnM7XHJcbiAgICB9XHJcblxyXG4gIHB1YmxpYyBidWlsZEZvcm1TZWN1cmVkSGVhZGVyKCkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgIEF1dGhvcml6YXRpb246IHRoaXMuY29uZmlnLmdldEF1dGhUb2tlbigpXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBoZWFkZXJzO1xyXG4gIH1cclxuXHJcbiAgbGFiZWxLZXkoY29sdW1uOiBhbnksIHBhZ2VJbmZvOiBQYWdlSW5mbykge1xyXG4gICAgY29uc3QgY29uZmlndXJlZEtleSA9IGNvbHVtbi5sYWJlbCA/IGNvbHVtbi5sYWJlbCA6IGNvbHVtbi5wcm9wZXJ0eTtcclxuXHJcbiAgICBpZiAoY29uZmlndXJlZEtleSAmJiBjb25maWd1cmVkS2V5LnRyaW0oKSAhPT0gJycgJiYgY29uZmlndXJlZEtleS5zdGFydHNXaXRoKHBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24pKSB7XHJcbiAgICAgIHJldHVybiBjb25maWd1cmVkS2V5O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBgJHtwYWdlSW5mby5sYWJlbHNTZWN0aW9ufS4ke2NvbmZpZ3VyZWRLZXl9YDtcclxuICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgYnVpbGRSZXBvcnRDb2x1bW4oY29sdW1uczogVGFibGVDb2x1bW48YW55PltdLCBwYWdlSW5mbzogUGFnZUluZm8pOiBDb2x1bW5EZWZbXSB7XHJcbiAgICAgICAgbGV0IGNvbHVtbkRlZjogQ29sdW1uRGVmW10gPSBbXTtcclxuXHJcbiAgICAgICAgICBjb2x1bW5zLmZpbHRlcih4ID0+ICFFWENMVURFRF9SRVBPUlRfQ09MVU1OUy5pbmNsdWRlcyh4LnR5cGUpKS5mb3JFYWNoKChjLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgdHJhbnNMYWJlbCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHRoaXMubGFiZWxLZXkoYyxwYWdlSW5mbykpO1xyXG4gICAgICAgICAgICBsZXQgdHJhbnNHcm91cCA9IHBhZ2VJbmZvLnN1cHBvcnRHcm91cGluZ0luRXhwb3J0ID9cclxuICAgICAgICAgICAgICBjLmdyb3VwLnRyaW0oKSA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGMuZ3JvdXApIDogJyAnIDogbnVsbDtcclxuICAgICAgICAgICAgaWYgKGMudHlwZSA9PT0gJ3dvcmtmbG93U3RhdHVzJykge1xyXG4gICAgICAgICAgICAgIHRyYW5zTGFiZWwgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnd29ya2Zsb3dTdGF0dXMnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoKGMucmVwb3J0VmlzaWJsZSA9PT0gdHJ1ZSkgfHwgKGMudmlzaWJsZSA9PT0gdHJ1ZSAmJiBjLnJlcG9ydFZpc2libGUgIT09IGZhbHNlKSkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkRlZi5wdXNoKG5ldyBDb2x1bW5EZWYoYywgaW5kZXgsIHRyYW5zTGFiZWwsIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXREZWZhdWx0TGFuZygpLHRyYW5zR3JvdXApKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiBjb2x1bW5EZWY7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBiYXNlNjRUb0FycmF5QnVmZmVyKGJhc2U2NDogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgYmluYXJ5U3RyaW5nID0gd2luZG93LmF0b2IoYmFzZTY0KTsgLy8gQ29tbWVudCB0aGlzIGlmIG5vdCB1c2luZyBiYXNlNjRcclxuICAgICAgICBjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJpbmFyeVN0cmluZy5sZW5ndGgpO1xyXG4gICAgICAgIHJldHVybiBieXRlcy5tYXAoKGJ5dGUsIGkpID0+IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGkpKTtcclxuICAgIH1cclxuXHJcbiAgICBidWlsZFJlcG9ydFJlcXVlc3QoY29sdW1uczogVGFibGVDb2x1bW48YW55PltdLCB0aXRsZTogc3RyaW5nIHwgc3RyaW5nW10sIGZpbHRlclJlcXVlc3Q6IEZpbHRlclJlcXVlc3QsIHJlcG9ydFR5cGU6IGFueSwgcGFnZUluZm86IFBhZ2VJbmZvLCBzZWFyY2hTdHI6IHN0cmluZyAsb3JpZW50YXRpb249J1BPUlRSQUlUJyk6IFJlcG9ydFJlcXVlc3Qge1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbkRlZiA9IHRoaXMuYnVpbGRSZXBvcnRDb2x1bW4oY29sdW1ucywgcGFnZUluZm8pO1xyXG4gICAgICAgIGNvbnN0IHJlcG9ydFJlcXVlc3QgPSBuZXcgUmVwb3J0UmVxdWVzdCh7XHJcbiAgICAgICAgICAgIGRhdGFzZXQ6IFtdLCBmaWx0ZXI6IFwiXCIsXHJcbiAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbkRlZixcclxuICAgICAgICAgICAgLy8gc2Vzc2lvbklkOiB0aGlzLnRvcFBhbmVsLnVzZXJTZXNzaW9uKCkuc2Vzc2lvbklkLFxyXG4gICAgICAgICAgICBzZXNzaW9uSWQ6IHRoaXMuY29uZmlnLmdldEF1dGhUb2tlbigpLFxyXG4gICAgICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQodGl0bGUpLFxyXG4gICAgICAgICAgICBwcmVmTGFuZzogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldERlZmF1bHRMYW5nKCksXHJcbiAgICAgICAgICAgIHJlcG9ydFR5cGU6IHJlcG9ydFR5cGUsXHJcbiAgICAgICAgICAgIHNlYXJjaFN0cjogc2VhcmNoU3RyLFxyXG4gICAgICAgICAgICBmaWx0ZXJSZXF1ZXN0OiBmaWx0ZXJSZXF1ZXN0LFxyXG4gICAgICAgICAgICBvcmllbnRhdGlvbjogb3JpZW50YXRpb259KTtcclxuICAgICAgICByZXR1cm4gcmVwb3J0UmVxdWVzdDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRMb29rdXBJdGVtc0J5TXVsdGlGaWx0ZXIobGlzdEl0ZW1zOiBHZXRJdGVtc0xpc3QsIGZpbHRlclJlcXVlc3Q/OiBGaWx0ZXJSZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgbGlzdEl0ZW1zLnBhZ2VTaXplID0gMTAwO1xyXG4gICAgICBmaWx0ZXJSZXF1ZXN0LnBhZ2VTaXplID0gMTAwO1xyXG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkuc2V0KCdzZWFyY2hTdHInLCBsaXN0SXRlbXMuc2VhcmNoU3RyKTtcclxuICAgICAgICBsZXQgdXJsID0gYCR7dGhpcy5nZXRBcGlCYXNlUGF0aCgpfS9hcGkvdjEvJHtsaXN0SXRlbXMuYXBpVXJpfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHVybCwgZmlsdGVyUmVxdWVzdCwgeyBoZWFkZXJzOiB0aGlzLmJ1aWxkU2VjdXJlZEhlYWRlcigpLCBwYXJhbXM6IHBhcmFtc30pLnBpcGUoXHJcbiAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IG9mKGVyci5tZXNzYWdlIHx8IGVycikpKTtcclxuICAgIH1cclxuICAgIGdldExvb2t1cEl0ZW1zQnlGaWx0ZXIobGlzdEl0ZW1zOiBHZXRJdGVtc0xpc3QsIGNhc2NhZGVkSWQ/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGxpc3RJdGVtcy5wYWdlU2l6ZSA9IDUwMDtcclxuICAgICAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpLnNldCgnc2VhcmNoU3RyJywgbGlzdEl0ZW1zLnNlYXJjaFN0cik7XHJcbiAgICAgICAgbGV0IHVybCA9IGAke3RoaXMuZ2V0QXBpQmFzZVBhdGgoKX0vYXBpL3YxLyR7bGlzdEl0ZW1zLmFwaVVyaX1gO1xyXG4gICAgICAgIGlmIChjYXNjYWRlZElkKSB7XHJcbiAgICAgICAgICAgIHVybCA9IHVybCArIGAvJHtjYXNjYWRlZElkfWBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIGxpc3RJdGVtcyx7IGhlYWRlcnM6IHRoaXMuYnVpbGRTZWN1cmVkSGVhZGVyKCl9KS5waXBlKFxyXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiBvZihlcnIubWVzc2FnZSB8fCBlcnIpKSk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICBkb3dubG9hZFJlcG9ydChyZXBvcnRSZXF1ZXN0OiBSZXBvcnRSZXF1ZXN0LCBwYWdlQXBpUGF0aCA6IHN0cmluZywgcmVhZHlQYXRoPyA6IGJvb2xlYW4gKSB7XHJcbiAgICAgIGNvbnN0IHMgPSByZWFkeVBhdGggPT09IHRydWUgPyBgL2FwaS92MSR7cGFnZUFwaVBhdGh9YCA6IGAvYXBpL3YxJHtwYWdlQXBpUGF0aH0vZXh0cmFjdEFuZERvd25sb2FkTGlzdFJlcG9ydGA7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxSZXNwb25zZUVudmVsb3A+KHRoaXMuZ2V0QXBpQmFzZVBhdGgoKSArIHMsIHJlcG9ydFJlcXVlc3QsIHtoZWFkZXJzOiB0aGlzLmJ1aWxkU2VjdXJlZEhlYWRlcigpfSkuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAocmVzcDpSZXNwb25zZUVudmVsb3ApID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXNwLnZhbGlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3AuYm9keSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy50b3BQYW5lbE1lc3NhZ2UkLm5leHQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTbmFja01lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcG9ydC5kb3dubG9hZC5zdGFydCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAnc3VjY2VzcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiByZXBvcnRSZXF1ZXN0LnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiByZXBvcnRSZXF1ZXN0LnJlcG9ydFR5cGU/LnRvVXBwZXJDYXNlKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gcmVwb3J0UmVxdWVzdC50aXRsZSArIFwiLlwiICsgcmVwb3J0UmVxdWVzdC5yZXBvcnRUeXBlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3RoaXMuYmFzZTY0VG9BcnJheUJ1ZmZlcihyZXNwLmJvZHkpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuYXZpZ2F0b3IubXNTYXZlQmxvYikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLm1zU2F2ZUJsb2IoYmxvYiwgZmlsZW5hbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJyb3dzZXJzIHRoYXQgc3VwcG9ydCBIVE1MNSBkb3dubG9hZCBhdHRyaWJ1dGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW5rLmRvd25sb2FkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgdXJsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlbmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluay5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudG9wUGFuZWxNZXNzYWdlJC5uZXh0KG5ldyBTbmFja01lc3NhZ2UoJ3JlcG9ydC5kb3dubG9hZC5mYWlsZWQnLCBmYWxzZSwgJ2Vycm9yJykpOyAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEFwaUJhc2VQYXRoKCl7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5nZXRCYXNlQXBpKCk7XHJcbiAgICB9XHJcblxyXG4gIGRvQWN0aW9uV2l0aEF0dGFjaG1lbnRzKHJlcXVlc3Q6IERvQWN0aW9uUmVxdWVzdCwgcGFyYW0yOiBhbnlbXSwgcGFnZUluZm86IFBhZ2VJbmZvKSB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmdldEFwaUJhc2VQYXRoKCl9L2FwaS92MSR7cGFnZUluZm8uYXBpVXJpfS9kb0FjdGlvbldpdGhBdHRhY2htZW50c2A7XHJcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvcm1EYXRhLnNldCgnZG9BY3Rpb25SZXF1ZXN0JywgbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHJlcXVlc3QpXSwge1xyXG4gICAgICB0eXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIlxyXG4gICAgfSkpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh1cmwsIGZvcm1EYXRhLCB7IGhlYWRlcnM6IHRoaXMuYnVpbGRGb3JtU2VjdXJlZEhlYWRlcigpIH0pLnBpcGUoXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBvZihlcnJvci5lcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICB9XHJcbiAgZG9BY3Rpb25XaXRoQXR0YWNobWVudChyZXF1ZXN0OiBEb0FjdGlvblJlcXVlc3QsIGZpbGU6IEZpbGUsIHBhZ2VJbmZvOiBQYWdlSW5mbykge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5nZXRBcGlCYXNlUGF0aCgpfS9hcGkvdjEke3BhZ2VJbmZvLmFwaVVyaX0vZG9BY3Rpb25XaXRoQXR0YWNobWVudHNgO1xyXG4gICAgY29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcblxyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlcycsIGZpbGUpO1xyXG4gICAgZm9ybURhdGEuc2V0KCdkb0FjdGlvblJlcXVlc3QnLCBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkocmVxdWVzdCldLCB7XHJcbiAgICAgIHR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiXHJcbiAgICB9KSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PGFueT4odXJsLCBmb3JtRGF0YSwge1xyXG4gICAgICBoZWFkZXJzOiB0aGlzLmJ1aWxkRm9ybVNlY3VyZWRIZWFkZXIoKVxyXG4gICAgfSkucGlwZShcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgLy8gVHJhbnNmb3JtIHRoZSBlcnJvciBpbnRvIGEgZmFrZSBzdWNjZXNzLWxpa2UgcmVzcG9uc2VcclxuICAgICAgICByZXR1cm4gb2YoZXJyb3IuZXJyb3IpOyAvLyBUaGlzIHdpbGwgbm93IGJlIHBhc3NlZCB0byBgbmV4dGAgaW4gc3Vic2NyaWJlKClcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBlbmNyeXB0KG1lc3NhZ2U6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0c01hbmFnZXIuZW5jcnlwdFNlY3JldChtZXNzYWdlKTtcclxuICB9XHJcblxyXG4gIGRlY3J5cHQoc2VjcmV0OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLnNlY3JldHNNYW5hZ2VyLmRlY3J5cHRTZWNyZXQoc2VjcmV0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDb25maXJtYXRpb24oKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQWN0aW9uQ29uZmlybWF0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IHthY2NlcHRBY3Rpb25MYWJlbDogJ2FjY2VwdCcscmVqZWN0QWN0aW9uTGFiZWw6J3JldHVybicsIHdhcm5pbmdNc2c6ICdjb25maXJtYXRpb25fbWVzc2FnZSd9LFxyXG4gICAgICB3aWR0aDogJzYwMHB4JyxcclxuICAgICAgaGVpZ2h0OiAnYXV0bydcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICAgIGludGVyZmFjZSBOYXZpZ2F0b3Ige1xyXG4gICAgICAgIG1zU2F2ZUJsb2I6IChibG9iT3JCYXNlNjQ6IEJsb2IgfCBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcpID0+IHZvaWRcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './backend-service';
|
|
2
|
+
export * from './top-panel';
|
|
3
|
+
export * from './trigger-form.service';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsd0JBQXdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JhY2tlbmQtc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdG9wLXBhbmVsJztcclxuZXhwb3J0ICogZnJvbSAnLi90cmlnZ2VyLWZvcm0uc2VydmljZSdcclxuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { BehaviorSubject } from "rxjs";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class TopPanel {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.topPanelMessage$ = new BehaviorSubject({
|
|
7
|
+
message: '',
|
|
8
|
+
translate: false,
|
|
9
|
+
type: 'info',
|
|
10
|
+
translateParams: {}
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TopPanel, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
14
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TopPanel, providedIn: 'root' }); }
|
|
15
|
+
}
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TopPanel, decorators: [{
|
|
17
|
+
type: Injectable,
|
|
18
|
+
args: [{
|
|
19
|
+
providedIn: 'root'
|
|
20
|
+
}]
|
|
21
|
+
}] });
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9wLXBhbmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvc2VydmljZXMvdG9wLXBhbmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFNckMsTUFBTSxPQUFPLFFBQVE7SUFIckI7UUFLUyxxQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBZTtZQUMxRCxPQUFPLEVBQUUsRUFBRTtZQUNYLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLElBQUksRUFBRSxNQUFNO1lBQ1osZUFBZSxFQUFFLEVBQUU7U0FDcEIsQ0FBQyxDQUFDO0tBRUo7K0dBVFksUUFBUTttSEFBUixRQUFRLGNBRlAsTUFBTTs7NEZBRVAsUUFBUTtrQkFIcEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge1NuYWNrTWVzc2FnZX0gZnJvbSBcIi4uL2Jhc2UtbW9kZWwvc25hY2stbWVzc2FnZS5tb2RlbFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9wUGFuZWwge1xyXG5cclxuICBwdWJsaWMgdG9wUGFuZWxNZXNzYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U25hY2tNZXNzYWdlPih7XHJcbiAgICBtZXNzYWdlOiAnJyxcclxuICAgIHRyYW5zbGF0ZTogZmFsc2UsXHJcbiAgICB0eXBlOiAnaW5mbycsXHJcbiAgICB0cmFuc2xhdGVQYXJhbXM6IHt9XHJcbiAgfSk7XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Injectable, signal } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class ShareDataService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.trigger = signal(true);
|
|
6
|
+
this.enableTrigger = (() => (() => this.trigger.update((val) => val = !val)));
|
|
7
|
+
}
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShareDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShareDataService, providedIn: 'root' }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShareDataService, decorators: [{
|
|
12
|
+
type: Injectable,
|
|
13
|
+
args: [{
|
|
14
|
+
providedIn: 'root'
|
|
15
|
+
}]
|
|
16
|
+
}] });
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJpZ2dlci1mb3JtLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9zZXJ2aWNlcy90cmlnZ2VyLWZvcm0uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFPakQsTUFBTSxPQUFPLGdCQUFnQjtJQUw3QjtRQU1FLFlBQU8sR0FBRyxNQUFNLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUN6RTsrR0FIWSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUpmLE1BQU07OzRGQUlQLGdCQUFnQjtrQkFMNUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFNoYXJlRGF0YVNlcnZpY2Uge1xyXG4gIHRyaWdnZXIgPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgZW5hYmxlVHJpZ2dlciA9ICgoKSA9PiAoKCkgPT4gdGhpcy50cmlnZ2VyLnVwZGF0ZSgodmFsKSA9PiB2YWwgPSAhdmFsKSkpXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { EMPTY_PAGE_INFO, FilterRequest } from "../base-model";
|
|
2
|
+
import { APPROVE, NEW, SAVE } from "../base-model/do-action-request";
|
|
3
|
+
import { Validators } from "@angular/forms";
|
|
4
|
+
export class BaseUtils {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.pageInfo = EMPTY_PAGE_INFO;
|
|
7
|
+
}
|
|
8
|
+
labelKey(column) {
|
|
9
|
+
if (column.type === 'workflowStatus') {
|
|
10
|
+
return 'INVENTORY.workflowStatus';
|
|
11
|
+
}
|
|
12
|
+
if (!column.property.length) {
|
|
13
|
+
return "";
|
|
14
|
+
}
|
|
15
|
+
const configuredKey = column.label ? column.label : column.property;
|
|
16
|
+
return configuredKey.startsWith(this.pageInfo.labelsSection) ? `${configuredKey}` : `${this.pageInfo.labelsSection}.${configuredKey}`;
|
|
17
|
+
}
|
|
18
|
+
labelKeyByValue(column, element) {
|
|
19
|
+
if (!column.property.length) {
|
|
20
|
+
return "";
|
|
21
|
+
}
|
|
22
|
+
return `${this.pageInfo.labelsSection}.${element[column.property]}`;
|
|
23
|
+
}
|
|
24
|
+
formatTimeToDate(v) {
|
|
25
|
+
const fromTime = new Date();
|
|
26
|
+
if (v) {
|
|
27
|
+
let split = v.split(":");
|
|
28
|
+
fromTime.setHours(split[0], split[1]);
|
|
29
|
+
}
|
|
30
|
+
return new Date(fromTime.getTime());
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function buildFormFields(fields, item) {
|
|
34
|
+
let fieldsControls = [];
|
|
35
|
+
for (let field of fields) {
|
|
36
|
+
if (field.type !== 'spacer') {
|
|
37
|
+
const emptyValue = field.type === 'lookup' || field.type === 'multi-select'
|
|
38
|
+
? null
|
|
39
|
+
: field.type === 'multi-state-checkbox'
|
|
40
|
+
? []
|
|
41
|
+
: '';
|
|
42
|
+
const extractedValue = item ? extractFieldName(item, field.property) : undefined;
|
|
43
|
+
const validators = field.required
|
|
44
|
+
? [...(field.validators || []), Validators.required]
|
|
45
|
+
: field.validators || [];
|
|
46
|
+
fieldsControls[field.property] = extractedValue !== undefined && extractedValue !== null
|
|
47
|
+
? [extractedValue, validators]
|
|
48
|
+
: [emptyValue, validators];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return fieldsControls;
|
|
52
|
+
}
|
|
53
|
+
export function buildItemsList(searchStr, apiPath, cascadedByProperty) {
|
|
54
|
+
const filterRequest = new FilterRequest();
|
|
55
|
+
// return {
|
|
56
|
+
filterRequest.apiUri = cascadedByProperty ? `${apiPath}/${cascadedByProperty}` : apiPath;
|
|
57
|
+
filterRequest.searchStr = searchStr;
|
|
58
|
+
filterRequest.pageIndex = 0;
|
|
59
|
+
filterRequest.pageSize = 10;
|
|
60
|
+
filterRequest.sortKey = 'id';
|
|
61
|
+
filterRequest.sortDirection = "DESC";
|
|
62
|
+
// }
|
|
63
|
+
return filterRequest;
|
|
64
|
+
}
|
|
65
|
+
export function extractFieldName(element, property) {
|
|
66
|
+
if (property.includes('.')) {
|
|
67
|
+
return property.split('.').reduce((acc, part) => acc && acc[part], element);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
return element[property];
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
export function getPositiveWfActionKey(stateType) {
|
|
74
|
+
if (stateType === "COMPLETED") {
|
|
75
|
+
return "save";
|
|
76
|
+
}
|
|
77
|
+
else if (stateType === "PENDING" || stateType === "NEW") {
|
|
78
|
+
return "approve";
|
|
79
|
+
}
|
|
80
|
+
return "save";
|
|
81
|
+
}
|
|
82
|
+
export function getNegativeWfActionKey(stateType) {
|
|
83
|
+
if (stateType === "COMPLETED") {
|
|
84
|
+
return "cancel";
|
|
85
|
+
}
|
|
86
|
+
else if (stateType === "PENDING" || stateType === "NEW") {
|
|
87
|
+
return "reject";
|
|
88
|
+
}
|
|
89
|
+
return "cancel";
|
|
90
|
+
}
|
|
91
|
+
export function getWfActionId(stateType) {
|
|
92
|
+
let actionId = NEW;
|
|
93
|
+
if (stateType === "COMPLETED") {
|
|
94
|
+
actionId = SAVE;
|
|
95
|
+
}
|
|
96
|
+
else if (stateType === "PENDING" || stateType === "NEW") {
|
|
97
|
+
actionId = APPROVE;
|
|
98
|
+
}
|
|
99
|
+
return actionId;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ludm9pY2VxL3VpLWxpYi9zcmMvbGliL3V0aWxzL2Jhc2UtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFZLGVBQWUsRUFBWSxhQUFhLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxQyxNQUFNLE9BQU8sU0FBUztJQUF0QjtRQUVFLGFBQVEsR0FBYSxlQUFlLENBQUM7SUE0QnZDLENBQUM7SUExQkMsUUFBUSxDQUFDLE1BQVc7UUFDbEIsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGdCQUFnQixFQUFFLENBQUM7WUFDckMsT0FBTywwQkFBMEIsQ0FBQTtRQUNuQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQTtRQUNuRSxPQUFPLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsSUFBSSxhQUFhLEVBQUUsQ0FBQztJQUN4SSxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQVcsRUFBRSxPQUFPO1FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1B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LFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGaWVsZEluZm8sIEVNUFRZX1BBR0VfSU5GTywgUGFnZUluZm8sIEZpbHRlclJlcXVlc3QsIFNBVkVfQU5EX0NPTVBMRVRFfSBmcm9tIFwiLi4vYmFzZS1tb2RlbFwiO1xyXG5pbXBvcnQge0FQUFJPVkUsIE5FVywgU0FWRX0gZnJvbSBcIi4uL2Jhc2UtbW9kZWwvZG8tYWN0aW9uLXJlcXVlc3RcIjtcclxuaW1wb3J0IHtWYWxpZGF0b3JzfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBCYXNlVXRpbHMge1xyXG5cclxuICBwYWdlSW5mbzogUGFnZUluZm8gPSBFTVBUWV9QQUdFX0lORk87XHJcblxyXG4gIGxhYmVsS2V5KGNvbHVtbjogYW55KSB7XHJcbiAgICBpZiAoY29sdW1uLnR5cGUgPT09ICd3b3JrZmxvd1N0YXR1cycpIHtcclxuICAgICAgcmV0dXJuICdJTlZFTlRPUlkud29ya2Zsb3dTdGF0dXMnXHJcbiAgICB9XHJcbiAgICBpZiAoIWNvbHVtbi5wcm9wZXJ0eS5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb25maWd1cmVkS2V5ID0gY29sdW1uLmxhYmVsID8gY29sdW1uLmxhYmVsIDogY29sdW1uLnByb3BlcnR5XHJcbiAgICByZXR1cm4gY29uZmlndXJlZEtleS5zdGFydHNXaXRoKHRoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbikgPyBgJHtjb25maWd1cmVkS2V5fWAgOiBgJHt0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb259LiR7Y29uZmlndXJlZEtleX1gO1xyXG4gIH1cclxuXHJcbiAgbGFiZWxLZXlCeVZhbHVlKGNvbHVtbjogYW55LCBlbGVtZW50KSB7XHJcbiAgICBpZiAoIWNvbHVtbi5wcm9wZXJ0eS5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7dGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9ufS4ke2VsZW1lbnRbY29sdW1uLnByb3BlcnR5XX1gXHJcbiAgfVxyXG5cclxuICBmb3JtYXRUaW1lVG9EYXRlKHY6IGFueSl7XHJcbiAgICBjb25zdCBmcm9tVGltZTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAodikge1xyXG4gICAgICBsZXQgc3BsaXQgPSB2LnNwbGl0KFwiOlwiKTtcclxuICAgICAgZnJvbVRpbWUuc2V0SG91cnMoc3BsaXRbMF0sIHNwbGl0WzFdKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgRGF0ZShmcm9tVGltZS5nZXRUaW1lKCkpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRm9ybUZpZWxkcyhmaWVsZHM6IEZpZWxkSW5mb1tdLCBpdGVtOmFueSl7XHJcbiAgbGV0IGZpZWxkc0NvbnRyb2xzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGZvciAobGV0IGZpZWxkIG9mIGZpZWxkcykge1xyXG4gICAgaWYgKGZpZWxkLnR5cGUgIT09ICdzcGFjZXInKSB7XHJcbiAgICAgIGNvbnN0IGVtcHR5VmFsdWUgPVxyXG4gICAgICAgIGZpZWxkLnR5cGUgPT09ICdsb29rdXAnIHx8IGZpZWxkLnR5cGUgPT09ICdtdWx0aS1zZWxlY3QnXHJcbiAgICAgICAgICA/IG51bGxcclxuICAgICAgICAgIDogZmllbGQudHlwZSA9PT0gJ211bHRpLXN0YXRlLWNoZWNrYm94J1xyXG4gICAgICAgICAgICA/IFtdXHJcbiAgICAgICAgICAgIDogJyc7XHJcbiAgICAgIGNvbnN0IGV4dHJhY3RlZFZhbHVlID0gaXRlbSA/IGV4dHJhY3RGaWVsZE5hbWUoaXRlbSwgZmllbGQucHJvcGVydHkpIDogdW5kZWZpbmVkO1xyXG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0gZmllbGQucmVxdWlyZWRcclxuICAgICAgICA/IFsuLi4oZmllbGQudmFsaWRhdG9ycyB8fCBbXSksIFZhbGlkYXRvcnMucmVxdWlyZWRdXHJcbiAgICAgICAgOiBmaWVsZC52YWxpZGF0b3JzIHx8IFtdO1xyXG5cclxuICAgICAgZmllbGRzQ29udHJvbHNbZmllbGQucHJvcGVydHldID0gZXh0cmFjdGVkVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBleHRyYWN0ZWRWYWx1ZSAhPT0gbnVsbFxyXG4gICAgICAgID8gW2V4dHJhY3RlZFZhbHVlLCB2YWxpZGF0b3JzXVxyXG4gICAgICAgIDogW2VtcHR5VmFsdWUsIHZhbGlkYXRvcnNdO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gZmllbGRzQ29udHJvbHM7XHJcbn1cclxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkSXRlbXNMaXN0KHNlYXJjaFN0cjogc3RyaW5nLCBhcGlQYXRoPzogc3RyaW5nLCBjYXNjYWRlZEJ5UHJvcGVydHk/OnN0cmluZyl7XHJcbiAgY29uc3QgZmlsdGVyUmVxdWVzdCA6IEZpbHRlclJlcXVlc3QgPSBuZXcgRmlsdGVyUmVxdWVzdCgpO1xyXG4gIC8vIHJldHVybiB7XHJcbiAgZmlsdGVyUmVxdWVzdC5hcGlVcmkgPSBjYXNjYWRlZEJ5UHJvcGVydHkgPyBgJHthcGlQYXRofS8ke2Nhc2NhZGVkQnlQcm9wZXJ0eX1gIDphcGlQYXRoO1xyXG4gIGZpbHRlclJlcXVlc3Quc2VhcmNoU3RyPSBzZWFyY2hTdHJcclxuICBmaWx0ZXJSZXF1ZXN0LnBhZ2VJbmRleCA9IDA7XHJcbiAgZmlsdGVyUmVxdWVzdC5wYWdlU2l6ZT0gMTA7XHJcbiAgZmlsdGVyUmVxdWVzdC5zb3J0S2V5PSAnaWQnO1xyXG4gIGZpbHRlclJlcXVlc3Quc29ydERpcmVjdGlvbiA9IFwiREVTQ1wiIGFzIGNvbnN0O1xyXG4gIC8vIH1cclxuICByZXR1cm4gZmlsdGVyUmVxdWVzdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RGaWVsZE5hbWUoZWxlbWVudDogYW55LCBwcm9wZXJ0eTogc3RyaW5nKSB7XHJcbiAgaWYgKHByb3BlcnR5LmluY2x1ZGVzKCcuJykpIHtcclxuICAgIHJldHVybiBwcm9wZXJ0eS5zcGxpdCgnLicpLnJlZHVjZSgoYWNjLCBwYXJ0KSA9PiBhY2MgJiYgYWNjW3BhcnRdLCBlbGVtZW50KTtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIGVsZW1lbnRbcHJvcGVydHldO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFBvc2l0aXZlV2ZBY3Rpb25LZXkoc3RhdGVUeXBlOiBhbnkpIHtcclxuICBpZiAgKHN0YXRlVHlwZSA9PT0gXCJDT01QTEVURURcIikge1xyXG4gICAgcmV0dXJuIFwic2F2ZVwiO1xyXG4gIH0gZWxzZSBpZiAgKHN0YXRlVHlwZSA9PT0gXCJQRU5ESU5HXCIgfHwgc3RhdGVUeXBlID09PSBcIk5FV1wiKSB7XHJcbiAgICByZXR1cm4gXCJhcHByb3ZlXCI7XHJcbiAgfVxyXG4gIHJldHVybiBcInNhdmVcIjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldE5lZ2F0aXZlV2ZBY3Rpb25LZXkoc3RhdGVUeXBlOiBhbnkpIHtcclxuICBpZiAgKHN0YXRlVHlwZSA9PT0gXCJDT01QTEVURURcIiApIHtcclxuICAgIHJldHVybiBcImNhbmNlbFwiO1xyXG4gIH0gZWxzZSBpZiAgKHN0YXRlVHlwZSA9PT0gXCJQRU5ESU5HXCJ8fCBzdGF0ZVR5cGUgPT09IFwiTkVXXCIpIHtcclxuICAgIHJldHVybiBcInJlamVjdFwiO1xyXG4gIH1cclxuICByZXR1cm4gXCJjYW5jZWxcIjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFdmQWN0aW9uSWQoc3RhdGVUeXBlKSB7XHJcbiAgbGV0IGFjdGlvbklkID0gTkVXO1xyXG4gIGlmICAoc3RhdGVUeXBlID09PSBcIkNPTVBMRVRFRFwiKSB7XHJcbiAgICBhY3Rpb25JZCA9ICBTQVZFO1xyXG4gIH0gZWxzZSBpZiAgKHN0YXRlVHlwZSA9PT0gXCJQRU5ESU5HXCIgfHwgc3RhdGVUeXBlID09PSBcIk5FV1wiKSB7XHJcbiAgICBhY3Rpb25JZCA9ICBBUFBST1ZFO1xyXG4gIH1cclxuICByZXR1cm4gYWN0aW9uSWQ7XHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { FormArray, FormGroup } from '@angular/forms';
|
|
2
|
+
export function DateRangeValidator(group) {
|
|
3
|
+
let fromDateControl = null;
|
|
4
|
+
let toDateControl = null;
|
|
5
|
+
if (group.parent instanceof FormGroup && group.parent.parent instanceof FormArray) {
|
|
6
|
+
const formGroup = group.parent;
|
|
7
|
+
fromDateControl = formGroup.get('from');
|
|
8
|
+
toDateControl = formGroup.get('to');
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
fromDateControl = group.root.get('from');
|
|
12
|
+
toDateControl = group.root.get('to');
|
|
13
|
+
}
|
|
14
|
+
if (fromDateControl && toDateControl) {
|
|
15
|
+
const fromDateValue = fromDateControl.value;
|
|
16
|
+
const toDateValue = toDateControl.value;
|
|
17
|
+
if (fromDateValue && toDateValue) {
|
|
18
|
+
const fromDate = new Date(fromDateValue);
|
|
19
|
+
const toDate = new Date(toDateValue);
|
|
20
|
+
if (fromDate > toDate) {
|
|
21
|
+
return { dateRangeInvalid: 'Invalid Date Range: To date must be after from date' };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS12YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi92YWxpZGF0b3JzL2RhdGUtcmFuZ2UtdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpGLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFzQjtJQUN2RCxJQUFJLGVBQWUsR0FBMkIsSUFBSSxDQUFDO0lBQ25ELElBQUksYUFBYSxHQUEyQixJQUFJLENBQUM7SUFFakQsSUFBSSxLQUFLLENBQUMsTUFBTSxZQUFZLFNBQVMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sWUFBWSxTQUFTLEVBQUUsQ0FBQztRQUNsRixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQy9CLGVBQWUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLGFBQWEsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7U0FBTSxDQUFDO1FBQ04sZUFBZSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxlQUFlLElBQUksYUFBYSxFQUFFLENBQUM7UUFDckMsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztRQUM1QyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBRXhDLElBQUksYUFBYSxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRXJDLElBQUksUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDO2dCQUN0QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUscURBQXFELEVBQUUsQ0FBQztZQUNyRixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIEZvcm1BcnJheSwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIERhdGVSYW5nZVZhbGlkYXRvcihncm91cDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gIGxldCBmcm9tRGF0ZUNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGwgPSBudWxsO1xyXG4gIGxldCB0b0RhdGVDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgaWYgKGdyb3VwLnBhcmVudCBpbnN0YW5jZW9mIEZvcm1Hcm91cCAmJiBncm91cC5wYXJlbnQucGFyZW50IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICBjb25zdCBmb3JtR3JvdXAgPSBncm91cC5wYXJlbnQ7XHJcbiAgICBmcm9tRGF0ZUNvbnRyb2wgPSBmb3JtR3JvdXAuZ2V0KCdmcm9tJyk7XHJcbiAgICB0b0RhdGVDb250cm9sID0gZm9ybUdyb3VwLmdldCgndG8nKTtcclxuICB9IGVsc2Uge1xyXG4gICAgZnJvbURhdGVDb250cm9sID0gZ3JvdXAucm9vdC5nZXQoJ2Zyb20nKTtcclxuICAgIHRvRGF0ZUNvbnRyb2wgPSBncm91cC5yb290LmdldCgndG8nKTtcclxuICB9XHJcblxyXG4gIGlmIChmcm9tRGF0ZUNvbnRyb2wgJiYgdG9EYXRlQ29udHJvbCkge1xyXG4gICAgY29uc3QgZnJvbURhdGVWYWx1ZSA9IGZyb21EYXRlQ29udHJvbC52YWx1ZTtcclxuICAgIGNvbnN0IHRvRGF0ZVZhbHVlID0gdG9EYXRlQ29udHJvbC52YWx1ZTtcclxuXHJcbiAgICBpZiAoZnJvbURhdGVWYWx1ZSAmJiB0b0RhdGVWYWx1ZSkge1xyXG4gICAgICBjb25zdCBmcm9tRGF0ZSA9IG5ldyBEYXRlKGZyb21EYXRlVmFsdWUpO1xyXG4gICAgICBjb25zdCB0b0RhdGUgPSBuZXcgRGF0ZSh0b0RhdGVWYWx1ZSk7XHJcblxyXG4gICAgICBpZiAoZnJvbURhdGUgPiB0b0RhdGUpIHtcclxuICAgICAgICByZXR1cm4geyBkYXRlUmFuZ2VJbnZhbGlkOiAnSW52YWxpZCBEYXRlIFJhbmdlOiBUbyBkYXRlIG11c3QgYmUgYWZ0ZXIgZnJvbSBkYXRlJyB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbnVsbDtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './match-list.validator';
|
|
2
|
+
export * from './multi-email-validator';
|
|
3
|
+
export * from './date-range-validator';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi92YWxpZGF0b3JzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tYXRjaC1saXN0LnZhbGlkYXRvcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbXVsdGktZW1haWwtdmFsaWRhdG9yJztcclxuZXhwb3J0ICogZnJvbSAnLi9kYXRlLXJhbmdlLXZhbGlkYXRvcic7XHJcbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { LookupItem } from "../base-model";
|
|
2
|
+
export function RequireMatch(control) {
|
|
3
|
+
const selection = control.value;
|
|
4
|
+
if (typeof selection === 'string' || (selection instanceof LookupItem && selection.id === -1)) {
|
|
5
|
+
return { incorrect: true };
|
|
6
|
+
}
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2gtbGlzdC52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi92YWxpZGF0b3JzL21hdGNoLWxpc3QudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekMsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFrQjtJQUMzQyxNQUFNLFNBQVMsR0FBUSxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQ3JDLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLENBQUMsU0FBUyxZQUFZLFVBQVUsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM1RixPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtGb3JtR3JvdXB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge0xvb2t1cEl0ZW19IGZyb20gXCIuLi9iYXNlLW1vZGVsXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gUmVxdWlyZU1hdGNoKGNvbnRyb2w6IEZvcm1Hcm91cCkge1xyXG4gICAgY29uc3Qgc2VsZWN0aW9uOiBhbnkgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgaWYgKHR5cGVvZiBzZWxlY3Rpb24gPT09ICdzdHJpbmcnIHx8IChzZWxlY3Rpb24gaW5zdGFuY2VvZiBMb29rdXBJdGVtICYmIHNlbGVjdGlvbi5pZCA9PT0gLTEpKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgaW5jb3JyZWN0OiB0cnVlIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function MultiEmailValidator(control) {
|
|
2
|
+
if (!control.value) {
|
|
3
|
+
return null;
|
|
4
|
+
}
|
|
5
|
+
const emails = control.value.split(';').map(email => email.trim());
|
|
6
|
+
for (let email of emails) {
|
|
7
|
+
if (!email.match(/^([\w+-.%]+@[\w-.]+\.[A-Za-z]{2,7};?)*$/)) {
|
|
8
|
+
return { 'invalidEmail': { value: control.value } };
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktZW1haWwtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy9saWIvdmFsaWRhdG9ycy9tdWx0aS1lbWFpbC12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE9BQWtCO0lBQ2xELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRW5FLEtBQUssSUFBSSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMseUNBQXlDLENBQUMsRUFBRSxDQUFDO1lBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDeEQsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIE11bHRpRW1haWxWYWxpZGF0b3IoY29udHJvbDogRm9ybUdyb3VwKSB7XHJcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICAgIGNvbnN0IGVtYWlscyA9IGNvbnRyb2wudmFsdWUuc3BsaXQoJzsnKS5tYXAoZW1haWwgPT4gZW1haWwudHJpbSgpKTtcclxuXHJcbiAgICBmb3IgKGxldCBlbWFpbCBvZiBlbWFpbHMpIHtcclxuICAgICAgICBpZiAoIWVtYWlsLm1hdGNoKC9eKFtcXHcrLS4lXStAW1xcdy0uXStcXC5bQS1aYS16XXsyLDd9Oz8pKiQvKSkge1xyXG4gICAgICAgICAgICByZXR1cm4geyAnaW52YWxpZEVtYWlsJzogeyB2YWx1ZTogY29udHJvbC52YWx1ZSB9IH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of invoiceq-lib
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/components/action-confirmation/action-confirmation.component';
|
|
5
|
+
export * from './lib/components/base-table/base-table.component';
|
|
6
|
+
export * from './lib/components/audit-log-list/audit-log.component';
|
|
7
|
+
export * from './lib/components/editable-base-table/editable-base-table.component';
|
|
8
|
+
export * from './lib/components/title-bar/title-bar.component';
|
|
9
|
+
export * from './lib/components/shared-list/shared-list.component';
|
|
10
|
+
export * from './lib/components/base-form-canvas/base-form-canvas.component';
|
|
11
|
+
export * from './lib/components/section-form-canvas/section-form-canvas.component';
|
|
12
|
+
export * from './lib/components/base-form/base-form.component';
|
|
13
|
+
export * from './lib/components/audit-log-details-dialog/audit-log-details-dialog.component';
|
|
14
|
+
export * from './lib/components/report-form/report-form.component';
|
|
15
|
+
export * from './lib/components/activity-report-form/activity-report-form.component';
|
|
16
|
+
export * from './lib/components/report-details-dialog/report-details-dialog.component';
|
|
17
|
+
export * from './lib/base-model';
|
|
18
|
+
export * from './lib/base-model/line-item.model';
|
|
19
|
+
export * from './lib/base-model/items-total.model';
|
|
20
|
+
export * from './lib/services';
|
|
21
|
+
export * from './lib/validators';
|
|
22
|
+
export * from './lib/components/base-input-dialog/base-input-dialog.component';
|
|
23
|
+
export * from './lib/components/search-bar/search-bar.component';
|
|
24
|
+
export * from './lib/components/snackbar-static/snackbar-static.component';
|
|
25
|
+
export * from './lib/components/shared/action-card/action-card.component';
|
|
26
|
+
export * from './lib/components/shared/action-button/action-button.component';
|
|
27
|
+
export * from './lib/components/action-comment/action-comment.component';
|
|
28
|
+
export * from './lib/components/item-line-editor/item-line-editor.component';
|
|
29
|
+
export * from './lib/components/permission-matrix/permission-matrix.component';
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2ludm9pY2VxL3VpLWxpYi9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsb0VBQW9FLENBQUE7QUFDbEYsY0FBYyxrREFBa0QsQ0FBQTtBQUNoRSxjQUFjLHFEQUFxRCxDQUFBO0FBQ25FLGNBQWMsb0VBQW9FLENBQUE7QUFDbEYsY0FBYyxnREFBZ0QsQ0FBQTtBQUM5RCxjQUFjLG9EQUFvRCxDQUFBO0FBQ2xFLGNBQWMsOERBQThELENBQUE7QUFDNUUsY0FBYyxvRUFBb0UsQ0FBQTtBQUNsRixjQUFjLGdEQUFnRCxDQUFBO0FBQzlELGNBQWMsOEVBQThFLENBQUE7QUFDNUYsY0FBYyxvREFBb0QsQ0FBQTtBQUNsRSxjQUFjLHNFQUFzRSxDQUFBO0FBQ3BGLGNBQWMsd0VBQXdFLENBQUE7QUFDdEYsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZ0VBQWdFLENBQUE7QUFDOUUsY0FBYyxrREFBa0QsQ0FBQTtBQUNoRSxjQUFjLDREQUE0RCxDQUFBO0FBQzFFLGNBQWMsMkRBQTJELENBQUE7QUFDekUsY0FBYywrREFBK0QsQ0FBQTtBQUM3RSxjQUFjLDBEQUEwRCxDQUFBO0FBQ3hFLGNBQWMsOERBQThELENBQUE7QUFDNUUsY0FBYyxnRUFBZ0UsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBpbnZvaWNlcS1saWJcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FjdGlvbi1jb25maXJtYXRpb24vYWN0aW9uLWNvbmZpcm1hdGlvbi5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYmFzZS10YWJsZS9iYXNlLXRhYmxlLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdWRpdC1sb2ctbGlzdC9hdWRpdC1sb2cuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2VkaXRhYmxlLWJhc2UtdGFibGUvZWRpdGFibGUtYmFzZS10YWJsZS5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGl0bGUtYmFyL3RpdGxlLWJhci5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2hhcmVkLWxpc3Qvc2hhcmVkLWxpc3QuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS1jYW52YXMvYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VjdGlvbi1mb3JtLWNhbnZhcy9zZWN0aW9uLWZvcm0tY2FudmFzLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iYXNlLWZvcm0vYmFzZS1mb3JtLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hdWRpdC1sb2ctZGV0YWlscy1kaWFsb2cvYXVkaXQtbG9nLWRldGFpbHMtZGlhbG9nLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9yZXBvcnQtZm9ybS9yZXBvcnQtZm9ybS5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWN0aXZpdHktcmVwb3J0LWZvcm0vYWN0aXZpdHktcmVwb3J0LWZvcm0uY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3JlcG9ydC1kZXRhaWxzLWRpYWxvZy9yZXBvcnQtZGV0YWlscy1kaWFsb2cuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLW1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS1tb2RlbC9saW5lLWl0ZW0ubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLW1vZGVsL2l0ZW1zLXRvdGFsLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi92YWxpZGF0b3JzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9iYXNlLWlucHV0LWRpYWxvZy9iYXNlLWlucHV0LWRpYWxvZy5jb21wb25lbnQnXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2VhcmNoLWJhci9zZWFyY2gtYmFyLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zbmFja2Jhci1zdGF0aWMvc25hY2tiYXItc3RhdGljLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zaGFyZWQvYWN0aW9uLWNhcmQvYWN0aW9uLWNhcmQuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NoYXJlZC9hY3Rpb24tYnV0dG9uL2FjdGlvbi1idXR0b24uY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2FjdGlvbi1jb21tZW50L2FjdGlvbi1jb21tZW50LmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9pdGVtLWxpbmUtZWRpdG9yL2l0ZW0tbGluZS1lZGl0b3IuY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Blcm1pc3Npb24tbWF0cml4L3Blcm1pc3Npb24tbWF0cml4LmNvbXBvbmVudCdcclxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pZnlsaWItdWktbGliLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvaW52b2ljZXEvdWktbGliL3NyYy91bmlmeWxpYi11aS1saWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|