@netgrif/components 6.3.0 → 6.4.0-beta.2
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/esm2020/lib/admin/ldap-group-role-assignment/ldap-group-role-assignment.component.mjs +5 -5
- package/esm2020/lib/admin/role-assignment/role-assignment.component.mjs +5 -5
- package/esm2020/lib/admin/user-invite/user-invite.component.mjs +3 -3
- package/esm2020/lib/data-fields/boolean-field/boolean-default-field/boolean-default-field.component.mjs +28 -0
- package/esm2020/lib/data-fields/boolean-field/boolean-field.component.mjs +13 -22
- package/esm2020/lib/data-fields/button-field/button-default-field/button-default-field.component.mjs +40 -0
- package/esm2020/lib/data-fields/button-field/button-field.component.mjs +12 -30
- package/esm2020/lib/data-fields/case-ref-field/case-ref-default/case-ref-default.component.mjs +22 -0
- package/esm2020/lib/data-fields/data-field-template/data-field-template.component.mjs +8 -7
- package/esm2020/lib/data-fields/data-fields.module.mjs +87 -39
- package/esm2020/lib/data-fields/date-field/date-default-field/date-default-field.component.mjs +33 -0
- package/esm2020/lib/data-fields/date-field/date-field.component.mjs +12 -14
- package/esm2020/lib/data-fields/date-time-field/date-time-default-field/date-time-default-field.component.mjs +34 -0
- package/esm2020/lib/data-fields/date-time-field/date-time-field.component.mjs +12 -15
- package/esm2020/lib/data-fields/enumeration-field/enumeration-autocomplete-dynamic-field/enumeration-autocomplete-dynamic-field.component.mjs +15 -9
- package/esm2020/lib/data-fields/enumeration-field/enumeration-autocomplete-select-field/enumeration-autocomplete-select-field.component.mjs +15 -9
- package/esm2020/lib/data-fields/enumeration-field/enumeration-field.component.mjs +7 -10
- package/esm2020/lib/data-fields/enumeration-field/enumeration-icon-field/enumeration-icon-field.component.mjs +14 -9
- package/esm2020/lib/data-fields/enumeration-field/enumeration-list-field/enumeration-list-field.component.mjs +17 -11
- package/esm2020/lib/data-fields/enumeration-field/enumeration-select-field/enumeration-select-field.component.mjs +16 -10
- package/esm2020/lib/data-fields/enumeration-field/enumeration-stepper-field/enumeration-stepper-field.component.mjs +17 -12
- package/esm2020/lib/data-fields/file-field/file-default-field/file-default-field.component.mjs +50 -0
- package/esm2020/lib/data-fields/file-field/file-field.component.mjs +14 -40
- package/esm2020/lib/data-fields/file-list-field/file-list-default-field/file-list-default-field.component.mjs +32 -0
- package/esm2020/lib/data-fields/file-list-field/file-list-field.component.mjs +25 -0
- package/esm2020/lib/data-fields/filter-field/filter-default-field/filter-default-field.component.mjs +30 -0
- package/esm2020/lib/data-fields/filter-field/filter-field.component.mjs +11 -17
- package/esm2020/lib/data-fields/filter-field/tab-view-filter-field/filter-field-tab-view-content.component.mjs +3 -3
- package/esm2020/lib/data-fields/i18n-field/i18n-divider-field/i18n-divider-field.component.mjs +14 -9
- package/esm2020/lib/data-fields/i18n-field/i18n-field.component.mjs +7 -6
- package/esm2020/lib/data-fields/i18n-field/i18n-text-field/i18n-text-field.component.mjs +14 -9
- package/esm2020/lib/data-fields/multichoice-field/multichoice-autocomplete-field/multichoice-autocomplete-field.component.mjs +16 -10
- package/esm2020/lib/data-fields/multichoice-field/multichoice-field.component.mjs +7 -7
- package/esm2020/lib/data-fields/multichoice-field/multichoice-list-field/multichoice-list-field.component.mjs +16 -10
- package/esm2020/lib/data-fields/multichoice-field/multichoice-select-field/multichoice-select-field.component.mjs +17 -8
- package/esm2020/lib/data-fields/number-field/number-currency-field/number-currency-field.component.mjs +15 -9
- package/esm2020/lib/data-fields/number-field/number-default-field/number-default-field.component.mjs +15 -9
- package/esm2020/lib/data-fields/number-field/number-field.component.mjs +7 -6
- package/esm2020/lib/data-fields/public-api.mjs +1 -16
- package/esm2020/lib/data-fields/required-label/required-label.component.mjs +3 -3
- package/esm2020/lib/data-fields/task-ref-field/task-ref-dashboard-field/task-ref-dashboard-field.component.mjs +38 -0
- package/esm2020/lib/data-fields/task-ref-field/task-ref-field.component.mjs +12 -23
- package/esm2020/lib/data-fields/task-ref-field/task-ref-list-field/task-ref-list-field.component.mjs +22 -0
- package/esm2020/lib/data-fields/text-field/dashboard-bar-chart-text-field/dashboard-bar-chart-text-field.component.mjs +14 -9
- package/esm2020/lib/data-fields/text-field/dashboard-iframe-text-field/dashboard-iframe-text-field.component.mjs +14 -9
- package/esm2020/lib/data-fields/text-field/dashboard-line-chart-text-field/dashboard-line-chart-text-field.component.mjs +14 -9
- package/esm2020/lib/data-fields/text-field/dashboard-pie-chart-text-field/dashboard-pie-chart-text-field.component.mjs +14 -9
- package/esm2020/lib/data-fields/text-field/dashboard-portal-text-field/dashboard-portal-text-field.component.mjs +14 -9
- package/esm2020/lib/data-fields/text-field/html-textarea-field/html-textarea-field.component.mjs +19 -14
- package/esm2020/lib/data-fields/text-field/password-text-field/password-text-field.component.mjs +15 -9
- package/esm2020/lib/data-fields/text-field/rich-textarea-field/rich-textarea-field.component.mjs +17 -12
- package/esm2020/lib/data-fields/text-field/simple-text-field/simple-text-field.component.mjs +15 -9
- package/esm2020/lib/data-fields/text-field/text-field.component.mjs +8 -16
- package/esm2020/lib/data-fields/text-field/textarea-field/textarea-field.component.mjs +14 -9
- package/esm2020/lib/data-fields/user-field/user-default-field/user-default-field.component.mjs +35 -0
- package/esm2020/lib/data-fields/user-field/user-field.component.mjs +12 -19
- package/esm2020/lib/data-fields/user-list-field/user-list-default-field/user-list-default-field.component.mjs +39 -0
- package/esm2020/lib/data-fields/user-list-field/user-list-field.component.mjs +13 -23
- package/esm2020/lib/dialog/admin-impersonate-dialog/admin-impersonate-dialog.component.mjs +77 -0
- package/esm2020/lib/dialog/dialog.module.mjs +159 -0
- package/esm2020/lib/dialog/filter-selector-dialog/filter-selector-dialog.component.mjs +164 -0
- package/esm2020/lib/dialog/import-net-dialog/import-net-dialog.component.mjs +151 -0
- package/esm2020/lib/dialog/load-filter-dialog/load-filter-dialog.component.mjs +98 -0
- package/esm2020/lib/dialog/multi-user-assign-dialog/multi-user-assign-dialog.component.mjs +70 -0
- package/esm2020/lib/dialog/new-case-dialog/new-case-dialog.component.mjs +251 -0
- package/esm2020/lib/dialog/public-api.mjs +11 -0
- package/esm2020/lib/dialog/save-filter-dialog/save-filter-dialog.component.mjs +83 -0
- package/esm2020/lib/dialog/user-assign-dialog/user-assign-dialog.component.mjs +73 -0
- package/esm2020/lib/dialog/user-impersonate-dialog/user-impersonate-dialog.component.mjs +98 -0
- package/esm2020/lib/filter-field-content/filter-field-tab-view/filter-field-tab-view.component.mjs +3 -3
- package/esm2020/lib/forms/login/login-form.component.mjs +3 -3
- package/esm2020/lib/header/header-modes/edit-mode/edit-mode.component.mjs +3 -3
- package/esm2020/lib/header/header-modes/search-mode/search-mode.component.mjs +3 -3
- package/esm2020/lib/header/header-modes/sort-mode/sort-mode.component.mjs +3 -3
- package/esm2020/lib/header/header.component.mjs +3 -3
- package/esm2020/lib/navigation/breadcrumbs/breadcrumbs.component.mjs +2 -2
- package/esm2020/lib/navigation/group-navigation-component-resolver/default-components/default-case-ref-list-view/default-case-ref-list-view.component.mjs +105 -0
- package/esm2020/lib/navigation/group-navigation-component-resolver/default-components/default-simple-task-view/default-simple-task-view.component.mjs +7 -8
- package/esm2020/lib/navigation/group-navigation-component-resolver/default-components/default-tabbed-case-view/default-tabbed-case-view.component.mjs +6 -4
- package/esm2020/lib/navigation/group-navigation-component-resolver/default-components/default-tabbed-task-view/default-tabbed-task-view.component.mjs +7 -8
- package/esm2020/lib/navigation/group-navigation-component-resolver/default-components/default-task-view/default-task-view.component.mjs +63 -0
- package/esm2020/lib/navigation/navigation-double-drawer/navigation-double-drawer.component.mjs +3 -3
- package/esm2020/lib/navigation/navigation.module.mjs +9 -3
- package/esm2020/lib/navigation/public-api.mjs +2 -1
- package/esm2020/lib/panel/panel-item/panel-item.component.mjs +3 -3
- package/esm2020/lib/panel/panel.component.mjs +3 -3
- package/esm2020/lib/panel/task-panel/task-panel.component.mjs +3 -3
- package/esm2020/lib/panel/task-panel-list/task-list.component.mjs +5 -4
- package/esm2020/lib/panel/task-panel-list-pagination/task-list-pagination.component.mjs +3 -3
- package/esm2020/lib/panel/task-panel-single/single-task.component.mjs +2 -2
- package/esm2020/lib/panel/workflow-panel/workflow-panel.component.mjs +9 -10
- package/esm2020/lib/search/advanced-search/advanced-search-component/advanced-search.component.mjs +3 -3
- package/esm2020/lib/search/advanced-search/search-clause-component/search-clause.component.mjs +3 -3
- package/esm2020/lib/search/advanced-search/search-predicate-component/search-predicate.component.mjs +8 -8
- package/esm2020/lib/search/fulltext-search-component/fulltext-search.component.mjs +8 -6
- package/esm2020/lib/search/search-component/search.component.mjs +11 -10
- package/esm2020/lib/search/search.module.mjs +9 -3
- package/esm2020/lib/side-menu/content-components/admin-impersonate/side-menu-admin-impersonate-component.module.mjs +3 -3
- package/esm2020/lib/side-menu/content-components/filter-selector/side-menu-filter-selector-component.module.mjs +4 -2
- package/esm2020/lib/side-menu/content-components/multi-user-assign/side-menu-multi-user-assign-component.module.mjs +3 -3
- package/esm2020/lib/side-menu/content-components/public-api.mjs +5 -1
- package/esm2020/lib/side-menu/content-components/user-assign/side-menu-user-assign-component.module.mjs +3 -3
- package/esm2020/lib/tabs/tab-view/tab-view.component.mjs +7 -6
- package/esm2020/lib/task-content/field-component-resolver/field-component-resolver.component.mjs +18 -27
- package/esm2020/lib/task-content/task-content/task-content.component.mjs +3 -3
- package/esm2020/lib/user/profile/profile.component.mjs +2 -2
- package/esm2020/lib/view/case-view/components/case-list/case-list.component.mjs +3 -3
- package/esm2020/lib/view/case-view/components/case-list-paginator/case-list-paginator.component.mjs +3 -3
- package/esm2020/lib/view/case-view/components/create-case-button/create-case-button.component.mjs +10 -4
- package/esm2020/lib/view/workflow-view/workflow-view.component.mjs +22 -21
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/netgrif-components.mjs +3848 -2122
- package/fesm2015/netgrif-components.mjs.map +1 -1
- package/fesm2020/netgrif-components.mjs +3761 -2128
- package/fesm2020/netgrif-components.mjs.map +1 -1
- package/lib/data-fields/boolean-field/boolean-default-field/boolean-default-field.component.d.ts +8 -0
- package/lib/data-fields/boolean-field/boolean-field.component.d.ts +5 -5
- package/lib/data-fields/button-field/button-default-field/button-default-field.component.d.ts +12 -0
- package/lib/data-fields/button-field/button-field.component.d.ts +7 -8
- package/lib/data-fields/case-ref-field/case-ref-default/case-ref-default.component.d.ts +8 -0
- package/lib/data-fields/data-field-template/data-field-template.component.d.ts +3 -2
- package/lib/data-fields/data-fields.module.d.ts +34 -20
- package/lib/data-fields/date-field/date-default-field/date-default-field.component.d.ts +9 -0
- package/lib/data-fields/date-field/date-field.component.d.ts +5 -3
- package/lib/data-fields/date-time-field/date-time-default-field/date-time-default-field.component.d.ts +9 -0
- package/lib/data-fields/date-time-field/date-time-field.component.d.ts +5 -3
- package/lib/data-fields/enumeration-field/enumeration-autocomplete-dynamic-field/enumeration-autocomplete-dynamic-field.component.d.ts +3 -3
- package/lib/data-fields/enumeration-field/enumeration-autocomplete-select-field/enumeration-autocomplete-select-field.component.d.ts +3 -3
- package/lib/data-fields/enumeration-field/enumeration-field.component.d.ts +3 -0
- package/lib/data-fields/enumeration-field/enumeration-icon-field/enumeration-icon-field.component.d.ts +3 -3
- package/lib/data-fields/enumeration-field/enumeration-list-field/enumeration-list-field.component.d.ts +3 -3
- package/lib/data-fields/enumeration-field/enumeration-select-field/enumeration-select-field.component.d.ts +3 -3
- package/lib/data-fields/enumeration-field/enumeration-stepper-field/enumeration-stepper-field.component.d.ts +3 -3
- package/lib/data-fields/file-field/file-default-field/file-default-field.component.d.ts +13 -0
- package/lib/data-fields/file-field/file-field.component.d.ts +6 -9
- package/lib/data-fields/file-list-field/file-list-default-field/file-list-default-field.component.d.ts +8 -0
- package/lib/data-fields/file-list-field/file-list-field.component.d.ts +10 -0
- package/lib/data-fields/filter-field/filter-default-field/filter-default-field.component.d.ts +10 -0
- package/lib/data-fields/filter-field/filter-field.component.d.ts +6 -6
- package/lib/data-fields/filter-field/tab-view-filter-field/filter-field-tab-view-content.component.d.ts +2 -2
- package/lib/data-fields/i18n-field/i18n-divider-field/i18n-divider-field.component.d.ts +3 -3
- package/lib/data-fields/i18n-field/i18n-field.component.d.ts +3 -0
- package/lib/data-fields/i18n-field/i18n-text-field/i18n-text-field.component.d.ts +3 -3
- package/lib/data-fields/multichoice-field/multichoice-autocomplete-field/multichoice-autocomplete-field.component.d.ts +3 -3
- package/lib/data-fields/multichoice-field/multichoice-field.component.d.ts +3 -0
- package/lib/data-fields/multichoice-field/multichoice-list-field/multichoice-list-field.component.d.ts +3 -3
- package/lib/data-fields/multichoice-field/multichoice-select-field/multichoice-select-field.component.d.ts +3 -2
- package/lib/data-fields/number-field/number-currency-field/number-currency-field.component.d.ts +3 -3
- package/lib/data-fields/number-field/number-default-field/number-default-field.component.d.ts +3 -3
- package/lib/data-fields/number-field/number-field.component.d.ts +3 -0
- package/lib/data-fields/public-api.d.ts +0 -15
- package/lib/data-fields/task-ref-field/task-ref-dashboard-field/task-ref-dashboard-field.component.d.ts +13 -0
- package/lib/data-fields/task-ref-field/task-ref-field.component.d.ts +6 -7
- package/lib/data-fields/task-ref-field/task-ref-list-field/task-ref-list-field.component.d.ts +8 -0
- package/lib/data-fields/text-field/dashboard-bar-chart-text-field/dashboard-bar-chart-text-field.component.d.ts +3 -3
- package/lib/data-fields/text-field/dashboard-iframe-text-field/dashboard-iframe-text-field.component.d.ts +3 -3
- package/lib/data-fields/text-field/dashboard-line-chart-text-field/dashboard-line-chart-text-field.component.d.ts +3 -3
- package/lib/data-fields/text-field/dashboard-pie-chart-text-field/dashboard-pie-chart-text-field.component.d.ts +3 -3
- package/lib/data-fields/text-field/dashboard-portal-text-field/dashboard-portal-text-field.component.d.ts +3 -3
- package/lib/data-fields/text-field/html-textarea-field/html-textarea-field.component.d.ts +5 -5
- package/lib/data-fields/text-field/password-text-field/password-text-field.component.d.ts +3 -3
- package/lib/data-fields/text-field/rich-textarea-field/rich-textarea-field.component.d.ts +3 -3
- package/lib/data-fields/text-field/simple-text-field/simple-text-field.component.d.ts +3 -3
- package/lib/data-fields/text-field/text-field.component.d.ts +4 -2
- package/lib/data-fields/text-field/textarea-field/textarea-field.component.d.ts +3 -3
- package/lib/data-fields/user-field/user-default-field/user-default-field.component.d.ts +10 -0
- package/lib/data-fields/user-field/user-field.component.d.ts +6 -5
- package/lib/data-fields/user-list-field/user-list-default-field/user-list-default-field.component.d.ts +11 -0
- package/lib/data-fields/user-list-field/user-list-field.component.d.ts +6 -6
- package/lib/dialog/admin-impersonate-dialog/admin-impersonate-dialog.component.d.ts +42 -0
- package/lib/dialog/dialog.module.d.ts +31 -0
- package/lib/dialog/filter-selector-dialog/filter-selector-dialog.component.d.ts +96 -0
- package/lib/dialog/import-net-dialog/import-net-dialog.component.d.ts +36 -0
- package/lib/dialog/load-filter-dialog/load-filter-dialog.component.d.ts +18 -0
- package/lib/dialog/multi-user-assign-dialog/multi-user-assign-dialog.component.d.ts +24 -0
- package/lib/dialog/new-case-dialog/new-case-dialog.component.d.ts +66 -0
- package/lib/dialog/public-api.d.ts +10 -0
- package/lib/dialog/save-filter-dialog/save-filter-dialog.component.d.ts +16 -0
- package/lib/dialog/user-assign-dialog/user-assign-dialog.component.d.ts +42 -0
- package/lib/dialog/user-impersonate-dialog/user-impersonate-dialog.component.d.ts +16 -0
- package/lib/filter-field-content/filter-field-tab-view/filter-field-tab-view.component.d.ts +2 -2
- package/lib/navigation/group-navigation-component-resolver/default-components/default-case-ref-list-view/default-case-ref-list-view.component.d.ts +19 -0
- package/lib/navigation/group-navigation-component-resolver/default-components/default-task-view/default-task-view.component.d.ts +12 -0
- package/lib/navigation/navigation.module.d.ts +17 -15
- package/lib/navigation/public-api.d.ts +1 -0
- package/lib/search/search.module.d.ts +4 -0
- package/lib/side-menu/content-components/admin-impersonate/side-menu-admin-impersonate-component.module.d.ts +1 -1
- package/lib/side-menu/content-components/filter-selector/side-menu-filter-selector-component.module.d.ts +1 -1
- package/lib/side-menu/content-components/multi-user-assign/side-menu-multi-user-assign-component.module.d.ts +1 -1
- package/lib/side-menu/content-components/public-api.d.ts +4 -0
- package/lib/side-menu/content-components/user-assign/side-menu-user-assign-component.module.d.ts +1 -1
- package/lib/task-content/field-component-resolver/field-component-resolver.component.d.ts +2 -2
- package/lib/view/case-view/components/create-case-button/create-case-button.component.d.ts +3 -1
- package/lib/view/workflow-view/workflow-view.component.d.ts +4 -3
- package/nae-theme.scss +8 -2
- package/nae-typography.scss +1 -1
- package/package.json +2 -2
- package/public-api.d.ts +1 -0
- package/src/lib/admin/ldap-group-role-assignment/ldap-group-role-assignment.component.theme.scss +2 -2
- package/src/lib/admin/role-assignment/role-assignment.component.theme.scss +16 -0
- package/src/lib/data-fields/data-field.theme.scss +217 -18
- package/src/lib/dialog/dialog.theme.scss +40 -2
- package/src/lib/header/header.theme.scss +0 -9
- package/src/lib/navigation/navigation.theme.scss +20 -3
- package/src/lib/panel/panel.theme.scss +50 -4
- package/src/lib/search/advanced-search/advanced-search-component/advanced-search.component.theme.scss +9 -0
- package/src/lib/search/advanced-search/search-predicate-component/search-predicate.component.theme.scss +7 -0
- package/src/lib/search/search-component/search.component-theme.scss +21 -0
- package/src/lib/side-menu/side-menu.theme.scss +1 -1
- package/src/lib/tabs/tabs.theme.scss +15 -1
- package/esm2020/lib/data-fields/file-field-list/file-list-field.component.mjs +0 -33
- package/lib/data-fields/file-field-list/file-list-field.component.d.ts +0 -8
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { FormControl } from '@angular/forms';
|
|
3
|
+
import { ProgressType } from '@netgrif/components-core';
|
|
4
|
+
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/material/dialog";
|
|
7
|
+
import * as i2 from "@netgrif/components-core";
|
|
8
|
+
import * as i3 from "@ngx-translate/core";
|
|
9
|
+
import * as i4 from "@angular/material/progress-bar";
|
|
10
|
+
import * as i5 from "@angular/material/progress-spinner";
|
|
11
|
+
import * as i6 from "@angular/material/icon";
|
|
12
|
+
import * as i7 from "@angular/material/form-field";
|
|
13
|
+
import * as i8 from "@angular/material/select";
|
|
14
|
+
import * as i9 from "@angular/material/core";
|
|
15
|
+
import * as i10 from "@angular/material/button";
|
|
16
|
+
import * as i11 from "@angular/flex-layout/flex";
|
|
17
|
+
import * as i12 from "@angular/common";
|
|
18
|
+
import * as i13 from "@angular/forms";
|
|
19
|
+
export class ImportNetDialogComponent {
|
|
20
|
+
constructor(_dialogRef, _petriNetResource, _log, _snackbar, _translate) {
|
|
21
|
+
this._dialogRef = _dialogRef;
|
|
22
|
+
this._petriNetResource = _petriNetResource;
|
|
23
|
+
this._log = _log;
|
|
24
|
+
this._snackbar = _snackbar;
|
|
25
|
+
this._translate = _translate;
|
|
26
|
+
this.files = {};
|
|
27
|
+
this.releaseTypes = ['Major', 'Minor', 'Patch'];
|
|
28
|
+
this.releaseTypeControl = new FormControl(this.releaseTypes[0]);
|
|
29
|
+
this._response = undefined;
|
|
30
|
+
this._dialogRef.backdropClick().subscribe(event => {
|
|
31
|
+
this.close();
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
ngAfterViewInit() {
|
|
35
|
+
this._fileInput = document.getElementById('sidemenu-fileUpload');
|
|
36
|
+
this._fileInput.onchange = () => {
|
|
37
|
+
for (const fileIndex of Array.from(Array(this._fileInput.files.length).keys())) {
|
|
38
|
+
const file = this._fileInput.files[fileIndex];
|
|
39
|
+
if (this.files[file.name]) {
|
|
40
|
+
const knownFile = this.files[file.name].data;
|
|
41
|
+
if (knownFile.type !== file.type || knownFile.lastModified !== file.lastModified) {
|
|
42
|
+
this.files[file.name] = this.setupFile(file);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.files[file.name] = this.setupFile(file);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
this.uploadFiles();
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
get fileList() {
|
|
53
|
+
return Object.values(this.files);
|
|
54
|
+
}
|
|
55
|
+
get isAllFinished() {
|
|
56
|
+
return Object.values(this.files).every(file => !file.inProgress && file.progress === 100);
|
|
57
|
+
}
|
|
58
|
+
onProcessFileChosen() {
|
|
59
|
+
if (this._fileInput) {
|
|
60
|
+
this._fileInput.click();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
cancelFile(file) {
|
|
64
|
+
file.sub.unsubscribe();
|
|
65
|
+
this.removeFile(file);
|
|
66
|
+
}
|
|
67
|
+
retryFile(file) {
|
|
68
|
+
this.uploadFile(file);
|
|
69
|
+
}
|
|
70
|
+
close() {
|
|
71
|
+
this._dialogRef.close({
|
|
72
|
+
opened: false,
|
|
73
|
+
message: 'All process files were processed',
|
|
74
|
+
data: this._response ? { net: this._response.net } : undefined
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
setupFile(file) {
|
|
78
|
+
return {
|
|
79
|
+
data: file,
|
|
80
|
+
stringId: '',
|
|
81
|
+
downloading: false,
|
|
82
|
+
inProgress: false,
|
|
83
|
+
progress: 0,
|
|
84
|
+
completed: false,
|
|
85
|
+
uploaded: false
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
uploadFiles() {
|
|
89
|
+
this._fileInput.value = '';
|
|
90
|
+
this.fileList.filter(fileModel => !fileModel.completed && fileModel.progress === 0).forEach(file => {
|
|
91
|
+
this.uploadFile(file);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
removeFile(file) {
|
|
95
|
+
if (this.files[file.data.name]) {
|
|
96
|
+
delete this.files[file.data.name];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
uploadFile(file) {
|
|
100
|
+
const fileFormData = new FormData();
|
|
101
|
+
fileFormData.append('file', file.data);
|
|
102
|
+
fileFormData.append('meta', this.releaseTypeControl.value.toString().toUpperCase());
|
|
103
|
+
file.inProgress = true;
|
|
104
|
+
file.completed = false;
|
|
105
|
+
file.error = false;
|
|
106
|
+
file.sub = this._petriNetResource.importPetriNet(fileFormData).subscribe((response) => {
|
|
107
|
+
if (response.type && response.type === ProgressType.UPLOAD) {
|
|
108
|
+
file.progress = response.progress;
|
|
109
|
+
if (file.progress === 100) {
|
|
110
|
+
file.uploaded = true;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
this._log.info(response.success);
|
|
115
|
+
this._response = response.outcome;
|
|
116
|
+
file.inProgress = false;
|
|
117
|
+
file.completed = true;
|
|
118
|
+
this._snackbar.openSuccessSnackBar(response.outcome.message === undefined
|
|
119
|
+
? this._translate.instant('workflow.snackBar.uploadSuccess')
|
|
120
|
+
: response.outcome.message);
|
|
121
|
+
}
|
|
122
|
+
}, error => {
|
|
123
|
+
file.inProgress = false;
|
|
124
|
+
file.completed = false;
|
|
125
|
+
file.error = true;
|
|
126
|
+
this._log.error('Importing process file has failed!', error);
|
|
127
|
+
this._snackbar.openErrorSnackBar(`${this._translate.instant('workflow.snackBar.uploadFailed')} ${error?.error?.message ?? ''}`);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
ImportNetDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ImportNetDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.PetriNetResourceService }, { token: i2.LoggerService }, { token: i2.SnackBarService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
132
|
+
ImportNetDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: ImportNetDialogComponent, selector: "nc-import-net-dialog", ngImport: i0, template: "<div class=\"mat-dialog-title\" fxLayout=\"column\" fxLayoutAlign=\"center none\">\n {{ 'side-menu.import-net.upload' | translate}}\n</div>\n\n<div mat-dialog-content fxLayout=\"column\" class=\"netgrif-input\">\n\n <ul class=\"file-list\">\n <li *ngFor=\"let file of fileList\" [@fadeInOut]=\"'in'\">\n <mat-progress-bar color=\"accent\" [value]=\"file.progress\"></mat-progress-bar>\n <span class=\"file-list-label\">\n <mat-progress-spinner *ngIf=\"file.inProgress && file.uploaded\" class=\"margin-right-default\"\n color=\"accent\" mode=\"indeterminate\" diameter=\"20\"></mat-progress-spinner>\n <mat-icon *ngIf=\"!file.inProgress && file.uploaded && file.completed\"\n class=\"done-icon margin-right-default\">\n done\n </mat-icon>\n <mat-icon *ngIf=\"!file.inProgress && !file.completed && file.error\"\n class=\"done-icon margin-right-default\">\n error\n </mat-icon>\n {{file.data.name}}\n <a title=\"Retry\" (click)=\"retryFile(file)\" *ngIf=\"!file.inProgress && file.error\">\n <mat-icon>refresh</mat-icon>\n </a>\n <a title=\"Cancel\" (click)=\"cancelFile(file)\" *ngIf=\"file.inProgress\">\n <mat-icon>cancel</mat-icon>\n </a>\n </span>\n </li>\n </ul>\n\n <input type=\"file\" id=\"sidemenu-fileUpload\" name=\"fileUpload\" multiple=\"multiple\"\n accept=\"text/xml\" class=\"display-none\"/>\n\n <mat-form-field class=\"cell-padding-fix\" color=\"primary\" appearance=\"outline\">\n <mat-label>Release</mat-label>\n <mat-select [formControl]=\"releaseTypeControl\">\n <mat-option *ngFor=\"let type of releaseTypes\" [value]=\"type\">\n {{type}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <button mat-raised-button color=\"primary\" class=\"margin-top\" (click)=\"onProcessFileChosen()\">\n <mat-icon>file_upload</mat-icon>\n {{ 'side-menu.import-net.choose' | translate}}\n </button>\n\n <button *ngIf=\"isAllFinished\" mat-stroked-button class=\"margin-top\" (click)=\"close()\">\n {{ 'side-menu.import-net.done' | translate}}\n </button>\n\n</div>\n\n", styles: [".file-list,.file-list li{margin:0;padding:0;list-style:none}.file-list-label{display:inline-flex;vertical-align:middle;font-size:12px;line-height:18px}.file-list-label mat-icon{font-size:18px;text-align:center}.file-list-label a{cursor:pointer}.container{padding:10%}.margin-right-default{margin-right:8px}.margin-right-half{margin-right:4px}.display-none{display:none!important}.margin-top{margin-top:8px}.cell-padding-fix{padding:4px 0 0}\n"], components: [{ type: i4.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { type: i5.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i10.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i11.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i11.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.MatLabel, selector: "mat-label" }, { type: i13.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i13.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], pipes: { "translate": i3.TranslatePipe }, animations: [
|
|
133
|
+
trigger('fadeInOut', [
|
|
134
|
+
state('in', style({ opacity: 100 })),
|
|
135
|
+
transition('* => void', [
|
|
136
|
+
animate(300, style({ opacity: 0 }))
|
|
137
|
+
])
|
|
138
|
+
])
|
|
139
|
+
] });
|
|
140
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: ImportNetDialogComponent, decorators: [{
|
|
141
|
+
type: Component,
|
|
142
|
+
args: [{ selector: 'nc-import-net-dialog', animations: [
|
|
143
|
+
trigger('fadeInOut', [
|
|
144
|
+
state('in', style({ opacity: 100 })),
|
|
145
|
+
transition('* => void', [
|
|
146
|
+
animate(300, style({ opacity: 0 }))
|
|
147
|
+
])
|
|
148
|
+
])
|
|
149
|
+
], template: "<div class=\"mat-dialog-title\" fxLayout=\"column\" fxLayoutAlign=\"center none\">\n {{ 'side-menu.import-net.upload' | translate}}\n</div>\n\n<div mat-dialog-content fxLayout=\"column\" class=\"netgrif-input\">\n\n <ul class=\"file-list\">\n <li *ngFor=\"let file of fileList\" [@fadeInOut]=\"'in'\">\n <mat-progress-bar color=\"accent\" [value]=\"file.progress\"></mat-progress-bar>\n <span class=\"file-list-label\">\n <mat-progress-spinner *ngIf=\"file.inProgress && file.uploaded\" class=\"margin-right-default\"\n color=\"accent\" mode=\"indeterminate\" diameter=\"20\"></mat-progress-spinner>\n <mat-icon *ngIf=\"!file.inProgress && file.uploaded && file.completed\"\n class=\"done-icon margin-right-default\">\n done\n </mat-icon>\n <mat-icon *ngIf=\"!file.inProgress && !file.completed && file.error\"\n class=\"done-icon margin-right-default\">\n error\n </mat-icon>\n {{file.data.name}}\n <a title=\"Retry\" (click)=\"retryFile(file)\" *ngIf=\"!file.inProgress && file.error\">\n <mat-icon>refresh</mat-icon>\n </a>\n <a title=\"Cancel\" (click)=\"cancelFile(file)\" *ngIf=\"file.inProgress\">\n <mat-icon>cancel</mat-icon>\n </a>\n </span>\n </li>\n </ul>\n\n <input type=\"file\" id=\"sidemenu-fileUpload\" name=\"fileUpload\" multiple=\"multiple\"\n accept=\"text/xml\" class=\"display-none\"/>\n\n <mat-form-field class=\"cell-padding-fix\" color=\"primary\" appearance=\"outline\">\n <mat-label>Release</mat-label>\n <mat-select [formControl]=\"releaseTypeControl\">\n <mat-option *ngFor=\"let type of releaseTypes\" [value]=\"type\">\n {{type}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <button mat-raised-button color=\"primary\" class=\"margin-top\" (click)=\"onProcessFileChosen()\">\n <mat-icon>file_upload</mat-icon>\n {{ 'side-menu.import-net.choose' | translate}}\n </button>\n\n <button *ngIf=\"isAllFinished\" mat-stroked-button class=\"margin-top\" (click)=\"close()\">\n {{ 'side-menu.import-net.done' | translate}}\n </button>\n\n</div>\n\n", styles: [".file-list,.file-list li{margin:0;padding:0;list-style:none}.file-list-label{display:inline-flex;vertical-align:middle;font-size:12px;line-height:18px}.file-list-label mat-icon{font-size:18px;text-align:center}.file-list-label a{cursor:pointer}.container{padding:10%}.margin-right-default{margin-right:8px}.margin-right-half{margin-right:4px}.display-none{display:none!important}.margin-top{margin-top:8px}.cell-padding-fix{padding:4px 0 0}\n"] }]
|
|
150
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i2.PetriNetResourceService }, { type: i2.LoggerService }, { type: i2.SnackBarService }, { type: i3.TranslateService }]; } });
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LW5ldC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzL3NyYy9saWIvZGlhbG9nL2ltcG9ydC1uZXQtZGlhbG9nL2ltcG9ydC1uZXQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2RpYWxvZy9pbXBvcnQtbmV0LWRpYWxvZy9pbXBvcnQtbmV0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFNBQVMsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUlzQixZQUFZLEVBRXhDLE1BQU0sMEJBQTBCLENBQUM7QUFHbEMsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBbUIvRSxNQUFNLE9BQU8sd0JBQXdCO0lBU2pDLFlBQXNCLFVBQWtELEVBQ2xELGlCQUEwQyxFQUMxQyxJQUFtQixFQUNuQixTQUEwQixFQUMxQixVQUE0QjtRQUo1QixlQUFVLEdBQVYsVUFBVSxDQUF3QztRQUNsRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXlCO1FBQzFDLFNBQUksR0FBSixJQUFJLENBQWU7UUFDbkIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFYM0MsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUNyQixpQkFBWSxHQUFrQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDMUQsdUJBQWtCLEdBQUcsSUFBSSxXQUFXLENB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QUUsS0FBSyxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FDNUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkcsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztzSEE3SFEsd0JBQXdCOzBHQUF4Qix3QkFBd0IsNERDOUJyQyxpNkVBc0RBLG80R0RqQ2dCO1FBQ1IsT0FBTyxDQUFDLFdBQVcsRUFBRTtZQUNqQixLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO1lBQ2xDLFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0JBQ3BCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7YUFDcEMsQ0FBQztTQUNMLENBQUM7S0FDTDs0RkFFUSx3QkFBd0I7a0JBYnBDLFNBQVM7K0JBQ0ksc0JBQXNCLGNBR3BCO3dCQUNSLE9BQU8sQ0FBQyxXQUFXLEVBQUU7NEJBQ2pCLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBQyxDQUFDLENBQUM7NEJBQ2xDLFVBQVUsQ0FBQyxXQUFXLEVBQUU7Z0NBQ3BCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7NkJBQ3BDLENBQUM7eUJBQ0wsQ0FBQztxQkFDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBFdmVudE91dGNvbWVNZXNzYWdlUmVzb3VyY2UsXG4gICAgRmlsZVVwbG9hZE1vZGVsLCBMb2dnZXJTZXJ2aWNlLFxuICAgIFBldHJpTmV0RXZlbnRPdXRjb21lLFxuICAgIFBldHJpTmV0UmVzb3VyY2VTZXJ2aWNlLCBQcm9ncmVzc1R5cGUsIFByb3ZpZGVyUHJvZ3Jlc3MsXG4gICAgU25hY2tCYXJTZXJ2aWNlXG59IGZyb20gJ0BuZXRncmlmL2NvbXBvbmVudHMtY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNYXREaWFsb2dSZWZ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQge2FuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmludGVyZmFjZSBGaWxlTGlzdCB7XG4gICAgW2tleTogc3RyaW5nXTogRmlsZVVwbG9hZE1vZGVsO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jLWltcG9ydC1uZXQtZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaW1wb3J0LW5ldC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ltcG9ydC1uZXQtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdmYWRlSW5PdXQnLCBbXG4gICAgICAgICAgICBzdGF0ZSgnaW4nLCBzdHlsZSh7b3BhY2l0eTogMTAwfSkpLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignKiA9PiB2b2lkJywgW1xuICAgICAgICAgICAgICAgIGFuaW1hdGUoMzAwLCBzdHlsZSh7b3BhY2l0eTogMH0pKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEltcG9ydE5ldERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuXG4gICAgcHVibGljIGZpbGVzOiBGaWxlTGlzdCA9IHt9O1xuICAgIHB1YmxpYyByZWxlYXNlVHlwZXM6IEFycmF5PHN0cmluZz4gPSBbJ01ham9yJywgJ01pbm9yJywgJ1BhdGNoJ107XG4gICAgcHVibGljIHJlbGVhc2VUeXBlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCh0aGlzLnJlbGVhc2VUeXBlc1swXSk7XG5cbiAgICBwcm90ZWN0ZWQgX3Jlc3BvbnNlOiBQZXRyaU5ldEV2ZW50T3V0Y29tZSA9IHVuZGVmaW5lZDtcbiAgICBwcm90ZWN0ZWQgX2ZpbGVJbnB1dDogSFRNTElucHV0RWxlbWVudDtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8SW1wb3J0TmV0RGlhbG9nQ29tcG9uZW50PixcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3BldHJpTmV0UmVzb3VyY2U6IFBldHJpTmV0UmVzb3VyY2VTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfbG9nOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByb3RlY3RlZCBfc25hY2tiYXI6IFNuYWNrQmFyU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcm90ZWN0ZWQgX3RyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgICAgICB0aGlzLl9kaWFsb2dSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZmlsZUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NpZGVtZW51LWZpbGVVcGxvYWQnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICB0aGlzLl9maWxlSW5wdXQub25jaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGVJbmRleCBvZiBBcnJheS5mcm9tKEFycmF5KHRoaXMuX2ZpbGVJbnB1dC5maWxlcy5sZW5ndGgpLmtleXMoKSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5fZmlsZUlucHV0LmZpbGVzW2ZpbGVJbmRleF07XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsZXNbZmlsZS5uYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrbm93bkZpbGUgPSB0aGlzLmZpbGVzW2ZpbGUubmFtZV0uZGF0YSBhcyBGaWxlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoa25vd25GaWxlLnR5cGUgIT09IGZpbGUudHlwZSB8fCBrbm93bkZpbGUubGFzdE1vZGlmaWVkICE9PSBmaWxlLmxhc3RNb2RpZmllZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlc1tmaWxlLm5hbWVdID0gdGhpcy5zZXR1cEZpbGUoZmlsZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzW2ZpbGUubmFtZV0gPSB0aGlzLnNldHVwRmlsZShmaWxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnVwbG9hZEZpbGVzKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZ2V0IGZpbGVMaXN0KCk6IEFycmF5PEZpbGVVcGxvYWRNb2RlbD4ge1xuICAgICAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLmZpbGVzKTtcbiAgICB9XG5cbiAgICBnZXQgaXNBbGxGaW5pc2hlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5maWxlcykuZXZlcnkoZmlsZSA9PiAhZmlsZS5pblByb2dyZXNzICYmIGZpbGUucHJvZ3Jlc3MgPT09IDEwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUHJvY2Vzc0ZpbGVDaG9zZW4oKSB7XG4gICAgICAgIGlmICh0aGlzLl9maWxlSW5wdXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpbGVJbnB1dC5jbGljaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNhbmNlbEZpbGUoZmlsZTogRmlsZVVwbG9hZE1vZGVsKSB7XG4gICAgICAgIGZpbGUuc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMucmVtb3ZlRmlsZShmaWxlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmV0cnlGaWxlKGZpbGU6IEZpbGVVcGxvYWRNb2RlbCkge1xuICAgICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgICAgb3BlbmVkOiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdBbGwgcHJvY2VzcyBmaWxlcyB3ZXJlIHByb2Nlc3NlZCcsXG4gICAgICAgICAgICBkYXRhOiB0aGlzLl9yZXNwb25zZSA/IHtuZXQ6IHRoaXMuX3Jlc3BvbnNlLm5ldH0gOiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldHVwRmlsZShmaWxlOiBGaWxlKTogRmlsZVVwbG9hZE1vZGVsIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IGZpbGUsXG4gICAgICAgICAgICBzdHJpbmdJZDogJycsXG4gICAgICAgICAgICBkb3dubG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICBpblByb2dyZXNzOiBmYWxzZSxcbiAgICAgICAgICAgIHByb2dyZXNzOiAwLFxuICAgICAgICAgICAgY29tcGxldGVkOiBmYWxzZSxcbiAgICAgICAgICAgIHVwbG9hZGVkOiBmYWxzZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGxvYWRGaWxlcygpIHtcbiAgICAgICAgdGhpcy5fZmlsZUlucHV0LnZhbHVlID0gJyc7XG5cbiAgICAgICAgdGhpcy5maWxlTGlzdC5maWx0ZXIoZmlsZU1vZGVsID0+ICFmaWxlTW9kZWwuY29tcGxldGVkICYmIGZpbGVNb2RlbC5wcm9ncmVzcyA9PT0gMCkuZm9yRWFjaChmaWxlID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkRmlsZShmaWxlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlbW92ZUZpbGUoZmlsZTogRmlsZVVwbG9hZE1vZGVsKSB7XG4gICAgICAgIGlmICh0aGlzLmZpbGVzW2ZpbGUuZGF0YS5uYW1lXSkge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuZmlsZXNbZmlsZS5kYXRhLm5hbWVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHVwbG9hZEZpbGUoZmlsZTogRmlsZVVwbG9hZE1vZGVsKSB7XG4gICAgICAgIGNvbnN0IGZpbGVGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmaWxlRm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZS5kYXRhIGFzIEZpbGUpO1xuICAgICAgICBmaWxlRm9ybURhdGEuYXBwZW5kKCdtZXRhJywgdGhpcy5yZWxlYXNlVHlwZUNvbnRyb2wudmFsdWUudG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpKTtcblxuICAgICAgICBmaWxlLmluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgICAgICBmaWxlLmNvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgICBmaWxlLmVycm9yID0gZmFsc2U7XG4gICAgICAgIGZpbGUuc3ViID0gdGhpcy5fcGV0cmlOZXRSZXNvdXJjZS5pbXBvcnRQZXRyaU5ldChmaWxlRm9ybURhdGEpLnN1YnNjcmliZSgocmVzcG9uc2U6IEV2ZW50T3V0Y29tZU1lc3NhZ2VSZXNvdXJjZSkgPT4ge1xuICAgICAgICAgICAgaWYgKChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlICYmIChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS50eXBlID09PSBQcm9ncmVzc1R5cGUuVVBMT0FEKSB7XG4gICAgICAgICAgICAgICAgZmlsZS5wcm9ncmVzcyA9IChyZXNwb25zZSBhcyBQcm92aWRlclByb2dyZXNzKS5wcm9ncmVzcztcbiAgICAgICAgICAgICAgICBpZiAoZmlsZS5wcm9ncmVzcyA9PT0gMTAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGUudXBsb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbG9nLmluZm8ocmVzcG9uc2Uuc3VjY2Vzcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2UgPSByZXNwb25zZS5vdXRjb21lIGFzIFBldHJpTmV0RXZlbnRPdXRjb21lO1xuICAgICAgICAgICAgICAgIGZpbGUuaW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGZpbGUuY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuU3VjY2Vzc1NuYWNrQmFyKHJlc3BvbnNlLm91dGNvbWUubWVzc2FnZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3dvcmtmbG93LnNuYWNrQmFyLnVwbG9hZFN1Y2Nlc3MnKVxuICAgICAgICAgICAgICAgICAgICA6IHJlc3BvbnNlLm91dGNvbWUubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIGZpbGUuaW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICAgICAgZmlsZS5jb21wbGV0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGZpbGUuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fbG9nLmVycm9yKCdJbXBvcnRpbmcgcHJvY2VzcyBmaWxlIGhhcyBmYWlsZWQhJywgZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbkVycm9yU25hY2tCYXIoXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5fdHJhbnNsYXRlLmluc3RhbnQoJ3dvcmtmbG93LnNuYWNrQmFyLnVwbG9hZEZhaWxlZCcpfSAke2Vycm9yPy5lcnJvcj8ubWVzc2FnZSA/PyAnJ31gKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1hdC1kaWFsb2ctdGl0bGVcIiBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgbm9uZVwiPlxuICAgIHt7ICdzaWRlLW1lbnUuaW1wb3J0LW5ldC51cGxvYWQnIHwgdHJhbnNsYXRlfX1cbjwvZGl2PlxuXG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwibmV0Z3JpZi1pbnB1dFwiPlxuXG4gICAgPHVsIGNsYXNzPVwiZmlsZS1saXN0XCI+XG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZmlsZSBvZiBmaWxlTGlzdFwiIFtAZmFkZUluT3V0XT1cIidpbidcIj5cbiAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3MtYmFyIGNvbG9yPVwiYWNjZW50XCIgW3ZhbHVlXT1cImZpbGUucHJvZ3Jlc3NcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGUtbGlzdC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lciAqbmdJZj1cImZpbGUuaW5Qcm9ncmVzcyAmJiBmaWxlLnVwbG9hZGVkXCIgY2xhc3M9XCJtYXJnaW4tcmlnaHQtZGVmYXVsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYWNjZW50XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiBkaWFtZXRlcj1cIjIwXCI+PC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhZmlsZS5pblByb2dyZXNzICYmIGZpbGUudXBsb2FkZWQgJiYgZmlsZS5jb21wbGV0ZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRvbmUtaWNvbiBtYXJnaW4tcmlnaHQtZGVmYXVsdFwiPlxuICAgICAgICAgICAgICAgICAgICBkb25lXG4gICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhZmlsZS5pblByb2dyZXNzICYmICFmaWxlLmNvbXBsZXRlZCAmJiAgZmlsZS5lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZG9uZS1pY29uIG1hcmdpbi1yaWdodC1kZWZhdWx0XCI+XG4gICAgICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICB7e2ZpbGUuZGF0YS5uYW1lfX1cbiAgICAgICAgICAgICAgICA8YSB0aXRsZT1cIlJldHJ5XCIgKGNsaWNrKT1cInJldHJ5RmlsZShmaWxlKVwiICpuZ0lmPVwiIWZpbGUuaW5Qcm9ncmVzcyAmJiBmaWxlLmVycm9yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5yZWZyZXNoPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPGEgdGl0bGU9XCJDYW5jZWxcIiAoY2xpY2spPVwiY2FuY2VsRmlsZShmaWxlKVwiICpuZ0lmPVwiZmlsZS5pblByb2dyZXNzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9saT5cbiAgICA8L3VsPlxuXG4gICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgaWQ9XCJzaWRlbWVudS1maWxlVXBsb2FkXCIgbmFtZT1cImZpbGVVcGxvYWRcIiBtdWx0aXBsZT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgYWNjZXB0PVwidGV4dC94bWxcIiBjbGFzcz1cImRpc3BsYXktbm9uZVwiLz5cblxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImNlbGwtcGFkZGluZy1maXhcIiBjb2xvcj1cInByaW1hcnlcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICA8bWF0LWxhYmVsPlJlbGVhc2U8L21hdC1sYWJlbD5cbiAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cInJlbGVhc2VUeXBlQ29udHJvbFwiPlxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHR5cGUgb2YgcmVsZWFzZVR5cGVzXCIgW3ZhbHVlXT1cInR5cGVcIj5cbiAgICAgICAgICAgICAgICB7e3R5cGV9fVxuICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgY2xhc3M9XCJtYXJnaW4tdG9wXCIgKGNsaWNrKT1cIm9uUHJvY2Vzc0ZpbGVDaG9zZW4oKVwiPlxuICAgICAgICA8bWF0LWljb24+ZmlsZV91cGxvYWQ8L21hdC1pY29uPlxuICAgICAgICB7eyAnc2lkZS1tZW51LmltcG9ydC1uZXQuY2hvb3NlJyB8IHRyYW5zbGF0ZX19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwiaXNBbGxGaW5pc2hlZFwiIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cIm1hcmdpbi10b3BcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICB7eyAnc2lkZS1tZW51LmltcG9ydC1uZXQuZG9uZScgfCB0cmFuc2xhdGV9fVxuICAgIDwvYnV0dG9uPlxuXG48L2Rpdj5cblxuIl19
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Component, Inject, ViewChild } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
+
import { AbstractCaseViewComponent, AllowedNetsService, AllowedNetsServiceFactory, CaseViewService, getImmediateData, NAE_BASE_FILTER, NAE_DEFAULT_HEADERS, SearchService, SimpleFilter, UserFilterConstants } from '@netgrif/components-core';
|
|
4
|
+
import { localAllowedNetsFactory } from '../../side-menu/content-components/load-filter/load-filter.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/material/dialog";
|
|
7
|
+
import * as i2 from "@netgrif/components-core";
|
|
8
|
+
import * as i3 from "../../header/header.component";
|
|
9
|
+
import * as i4 from "../../view/case-view/components/case-list/case-list.component";
|
|
10
|
+
import * as i5 from "@angular/flex-layout/flex";
|
|
11
|
+
import * as i6 from "@angular/common";
|
|
12
|
+
import * as i7 from "@angular/flex-layout/extended";
|
|
13
|
+
import * as i8 from "@ngx-translate/core";
|
|
14
|
+
export function loadBaseFilterFactory(dialogControl) {
|
|
15
|
+
if (!dialogControl) {
|
|
16
|
+
throw new Error('NewFilterCaseId was not provided in the side menu injection data');
|
|
17
|
+
}
|
|
18
|
+
const injectedData = dialogControl;
|
|
19
|
+
return { filter: injectedData.filter };
|
|
20
|
+
}
|
|
21
|
+
export class LoadFilterDialogComponent extends AbstractCaseViewComponent {
|
|
22
|
+
constructor(_dialogRef, _data, _log, caseViewService) {
|
|
23
|
+
super(caseViewService);
|
|
24
|
+
this._dialogRef = _dialogRef;
|
|
25
|
+
this._data = _data;
|
|
26
|
+
this._log = _log;
|
|
27
|
+
if (this._data) {
|
|
28
|
+
this._injectedData = this._data;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
handleCaseClick(clickedCase) {
|
|
32
|
+
const immediate = getImmediateData(clickedCase, UserFilterConstants.FILTER_FIELD_ID);
|
|
33
|
+
this._dialogRef.close({
|
|
34
|
+
opened: false,
|
|
35
|
+
message: 'Filter selected',
|
|
36
|
+
data: {
|
|
37
|
+
allowedNets: immediate.allowedNets,
|
|
38
|
+
filterMetadata: immediate.filterMetadata,
|
|
39
|
+
originViewId: getImmediateData(clickedCase, UserFilterConstants.ORIGIN_VIEW_ID_FIELD_ID).value,
|
|
40
|
+
filterCase: clickedCase,
|
|
41
|
+
filterCaseId: clickedCase.stringId,
|
|
42
|
+
filter: new SimpleFilter(clickedCase.stringId, immediate.filterMetadata.filterType, {
|
|
43
|
+
query: immediate.value
|
|
44
|
+
}, clickedCase.title)
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
ngAfterViewInit() {
|
|
49
|
+
this.initializeHeader(this.caseHeaderComponent);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
LoadFilterDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: LoadFilterDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.LoggerService }, { token: i2.CaseViewService }], target: i0.ɵɵFactoryTarget.Component });
|
|
53
|
+
LoadFilterDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: LoadFilterDialogComponent, selector: "nc-load-filter-dialog", providers: [
|
|
54
|
+
CaseViewService,
|
|
55
|
+
SearchService,
|
|
56
|
+
{
|
|
57
|
+
provide: NAE_BASE_FILTER,
|
|
58
|
+
useFactory: loadBaseFilterFactory,
|
|
59
|
+
deps: [MAT_DIALOG_DATA]
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
provide: AllowedNetsService,
|
|
63
|
+
useFactory: localAllowedNetsFactory,
|
|
64
|
+
deps: [AllowedNetsServiceFactory]
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
provide: NAE_DEFAULT_HEADERS,
|
|
68
|
+
useValue: ['meta-title', `${UserFilterConstants.FILTER_NET_IDENTIFIER}-${UserFilterConstants.FILTER_FIELD_ID}`]
|
|
69
|
+
}
|
|
70
|
+
], viewQueries: [{ propertyName: "caseHeaderComponent", first: true, predicate: ["header"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"mat-dialog-title\" fxLayout=\"column\" fxLayoutAlign=\"center none\">\n {{ 'search.tooltip.load' | translate }}\n</div>\n<div mat-dialog-content class=\"load-filter-container side-menu-root\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\">\n <nc-header #header [type]=\"headerType\" [maxHeaderColumns]=\"2\" [responsiveHeaders]=\"true\" [hideEditMode]=\"true\" class=\"case-header-padding\" [ngStyle]=\"{'width': getWidth()}\"></nc-header>\n <nc-case-list [selectedHeaders$]=\"selectedHeaders$\" [showDeleteMenu]=\"false\" [width]=\"getWidth()\"\n (caseClick)=\"handleCaseClick($event)\" [responsiveBody]=\"true\" fxFlex [textEllipsis]=\"true\" class=\"virtual-scroll-list-padding\"></nc-case-list>\n</div>\n\n", styles: [".load-filter-container{height:calc(100% - 64px);padding-left:8px;padding-right:8px;margin:0}.case-header-padding{padding-top:4px}.virtual-scroll-list-padding{padding-right:1px;margin-left:-1px}\n"], components: [{ type: i3.HeaderComponent, selector: "nc-header" }, { type: i4.CaseListComponent, selector: "nc-case-list" }], directives: [{ type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i5.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i7.DefaultStyleDirective, selector: " [ngStyle], [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl], [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl], [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]", inputs: ["ngStyle", "ngStyle.xs", "ngStyle.sm", "ngStyle.md", "ngStyle.lg", "ngStyle.xl", "ngStyle.lt-sm", "ngStyle.lt-md", "ngStyle.lt-lg", "ngStyle.lt-xl", "ngStyle.gt-xs", "ngStyle.gt-sm", "ngStyle.gt-md", "ngStyle.gt-lg"] }, { type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }], pipes: { "translate": i8.TranslatePipe } });
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: LoadFilterDialogComponent, decorators: [{
|
|
72
|
+
type: Component,
|
|
73
|
+
args: [{ selector: 'nc-load-filter-dialog', providers: [
|
|
74
|
+
CaseViewService,
|
|
75
|
+
SearchService,
|
|
76
|
+
{
|
|
77
|
+
provide: NAE_BASE_FILTER,
|
|
78
|
+
useFactory: loadBaseFilterFactory,
|
|
79
|
+
deps: [MAT_DIALOG_DATA]
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
provide: AllowedNetsService,
|
|
83
|
+
useFactory: localAllowedNetsFactory,
|
|
84
|
+
deps: [AllowedNetsServiceFactory]
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
provide: NAE_DEFAULT_HEADERS,
|
|
88
|
+
useValue: ['meta-title', `${UserFilterConstants.FILTER_NET_IDENTIFIER}-${UserFilterConstants.FILTER_FIELD_ID}`]
|
|
89
|
+
}
|
|
90
|
+
], template: "<div class=\"mat-dialog-title\" fxLayout=\"column\" fxLayoutAlign=\"center none\">\n {{ 'search.tooltip.load' | translate }}\n</div>\n<div mat-dialog-content class=\"load-filter-container side-menu-root\" fxLayout=\"column\" fxLayoutAlign=\"start stretch\">\n <nc-header #header [type]=\"headerType\" [maxHeaderColumns]=\"2\" [responsiveHeaders]=\"true\" [hideEditMode]=\"true\" class=\"case-header-padding\" [ngStyle]=\"{'width': getWidth()}\"></nc-header>\n <nc-case-list [selectedHeaders$]=\"selectedHeaders$\" [showDeleteMenu]=\"false\" [width]=\"getWidth()\"\n (caseClick)=\"handleCaseClick($event)\" [responsiveBody]=\"true\" fxFlex [textEllipsis]=\"true\" class=\"virtual-scroll-list-padding\"></nc-case-list>\n</div>\n\n", styles: [".load-filter-container{height:calc(100% - 64px);padding-left:8px;padding-right:8px;margin:0}.case-header-padding{padding-top:4px}.virtual-scroll-list-padding{padding-right:1px;margin-left:-1px}\n"] }]
|
|
91
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
92
|
+
type: Inject,
|
|
93
|
+
args: [MAT_DIALOG_DATA]
|
|
94
|
+
}] }, { type: i2.LoggerService }, { type: i2.CaseViewService }]; }, propDecorators: { caseHeaderComponent: [{
|
|
95
|
+
type: ViewChild,
|
|
96
|
+
args: ['header']
|
|
97
|
+
}] } });
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1maWx0ZXItZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2RpYWxvZy9sb2FkLWZpbHRlci1kaWFsb2cvbG9hZC1maWx0ZXItZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2RpYWxvZy9sb2FkLWZpbHRlci1kaWFsb2cvbG9hZC1maWx0ZXItZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFDLGVBQWUsRUFBZSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZFLE9BQU8sRUFDSCx5QkFBeUIsRUFBRSxrQkFBa0IsRUFBRSx5QkFBeUIsRUFFeEUsZUFBZSxFQUNmLGdCQUFnQixFQUdoQixlQUFlLEVBQUUsbUJBQW1CLEVBRXBDLGFBQWEsRUFDYixZQUFZLEVBQ1osbUJBQW1CLEVBQ3RCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sc0VBQXNFLENBQUM7Ozs7Ozs7Ozs7QUFJN0csTUFBTSxVQUFVLHFCQUFxQixDQUFDLGFBQXNDO0lBQ3hFLElBQUksQ0FBQyxhQUFhLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO0tBQ3ZGO0lBQ0QsTUFBTSxZQUFZLEdBQUcsYUFBd0MsQ0FBQztJQUU5RCxPQUFPLEVBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNLEVBQUMsQ0FBQztBQUN6QyxDQUFDO0FBeUJELE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx5QkFBeUI7SUFLcEUsWUFBc0IsVUFBbUQsRUFDMUIsS0FBOEIsRUFDdkQsSUFBbUIsRUFDN0IsZUFBZ0M7UUFDeEMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBSkwsZUFBVSxHQUFWLFVBQVUsQ0FBeUM7UUFDMUIsVUFBSyxHQUFMLEtBQUssQ0FBeUI7UUFDdkQsU0FBSSxHQUFKLElBQUksQ0FBZTtRQUdyQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDWixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFnQyxDQUFDO1NBQzlEO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxXQUFpQjtRQUM3QixNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFDbEIsTUFBTSxFQUFFLEtBQUs7WUFDYixPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLElBQUksRUFBRTtnQkFDRixXQUFXLEVBQUUsU0FBUyxDQUFDLFdBQVc7Z0JBQ2xDLGNBQWMsRUFBRSxTQUFTLENBQUMsY0FBYztnQkFDeEMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEtBQUs7Z0JBQzlGLFVBQVUsRUFBRSxXQUFXO2dCQUN2QixZQUFZLEVBQUUsV0FBVyxDQUFDLFFBQVE7Z0JBQ2xDLE1BQU0sRUFBRSxJQUFJLFlBQVksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFO29CQUNoRixLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUs7aUJBQ3pCLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQzthQUNEO1NBQzNCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3BELENBQUM7O3VIQW5DUSx5QkFBeUIsOENBTWQsZUFBZTsyR0FOMUIseUJBQXlCLGdEQW5CdkI7UUFDUCxlQUFlO1FBQ2YsYUFBYTtRQUNiO1lBQ0ksT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLHFCQUFxQjtZQUNqQyxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUM7U0FDMUI7UUFDRDtZQUNJLE9BQU8sRUFBRSxrQkFBa0I7WUFDM0IsVUFBVSxFQUFFLHVCQUF1QjtZQUNuQyxJQUFJLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztTQUNwQztRQUNEO1lBQ0ksT0FBTyxFQUFFLG1CQUFtQjtZQUM1QixRQUFRLEVBQUUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxtQkFBbUIsQ0FBQyxxQkFBcUIsSUFBSSxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUNsSDtLQUNKLGdLQ2pETCxxdkJBU0E7NEZEMENhLHlCQUF5QjtrQkF2QnJDLFNBQVM7K0JBQ0ksdUJBQXVCLGFBR3RCO3dCQUNQLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYjs0QkFDSSxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsVUFBVSxFQUFFLHFCQUFxQjs0QkFDakMsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDO3lCQUMxQjt3QkFDRDs0QkFDSSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixVQUFVLEVBQUUsdUJBQXVCOzRCQUNuQyxJQUFJLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQzt5QkFDcEM7d0JBQ0Q7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsUUFBUSxFQUFFLENBQUMsWUFBWSxFQUFFLEdBQUcsbUJBQW1CLENBQUMscUJBQXFCLElBQUksbUJBQW1CLENBQUMsZUFBZSxFQUFFLENBQUM7eUJBQ2xIO3FCQUNKOzswQkFRWSxNQUFNOzJCQUFDLGVBQWU7c0dBSFAsbUJBQW1CO3NCQUE5QyxTQUFTO3VCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgSW5qZWN0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RDYXNlVmlld0NvbXBvbmVudCwgQWxsb3dlZE5ldHNTZXJ2aWNlLCBBbGxvd2VkTmV0c1NlcnZpY2VGYWN0b3J5LCBCYXNlRmlsdGVyLFxuICAgIENhc2UsXG4gICAgQ2FzZVZpZXdTZXJ2aWNlLFxuICAgIGdldEltbWVkaWF0ZURhdGEsXG4gICAgTG9hZEZpbHRlckluamVjdGlvbkRhdGEsXG4gICAgTG9nZ2VyU2VydmljZSxcbiAgICBOQUVfQkFTRV9GSUxURVIsIE5BRV9ERUZBVUxUX0hFQURFUlMsXG4gICAgU2F2ZWRGaWx0ZXJNZXRhZGF0YSxcbiAgICBTZWFyY2hTZXJ2aWNlLFxuICAgIFNpbXBsZUZpbHRlcixcbiAgICBVc2VyRmlsdGVyQ29uc3RhbnRzXG59IGZyb20gJ0BuZXRncmlmL2NvbXBvbmVudHMtY29yZSc7XG5pbXBvcnQge2xvY2FsQWxsb3dlZE5ldHNGYWN0b3J5fSBmcm9tICcuLi8uLi9zaWRlLW1lbnUvY29udGVudC1jb21wb25lbnRzL2xvYWQtZmlsdGVyL2xvYWQtZmlsdGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0hlYWRlckNvbXBvbmVudH0gZnJvbSAnLi4vLi4vaGVhZGVyL2hlYWRlci5jb21wb25lbnQnO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQmFzZUZpbHRlckZhY3RvcnkoZGlhbG9nQ29udHJvbDogTG9hZEZpbHRlckluamVjdGlvbkRhdGEpOiBCYXNlRmlsdGVyIHtcbiAgICBpZiAoIWRpYWxvZ0NvbnRyb2wpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOZXdGaWx0ZXJDYXNlSWQgd2FzIG5vdCBwcm92aWRlZCBpbiB0aGUgc2lkZSBtZW51IGluamVjdGlvbiBkYXRhJyk7XG4gICAgfVxuICAgIGNvbnN0IGluamVjdGVkRGF0YSA9IGRpYWxvZ0NvbnRyb2wgYXMgTG9hZEZpbHRlckluamVjdGlvbkRhdGE7XG5cbiAgICByZXR1cm4ge2ZpbHRlcjogaW5qZWN0ZWREYXRhLmZpbHRlcn07XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmMtbG9hZC1maWx0ZXItZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbG9hZC1maWx0ZXItZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9sb2FkLWZpbHRlci1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgQ2FzZVZpZXdTZXJ2aWNlLFxuICAgICAgICBTZWFyY2hTZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOQUVfQkFTRV9GSUxURVIsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiBsb2FkQmFzZUZpbHRlckZhY3RvcnksXG4gICAgICAgICAgICBkZXBzOiBbTUFUX0RJQUxPR19EQVRBXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBBbGxvd2VkTmV0c1NlcnZpY2UsXG4gICAgICAgICAgICB1c2VGYWN0b3J5OiBsb2NhbEFsbG93ZWROZXRzRmFjdG9yeSxcbiAgICAgICAgICAgIGRlcHM6IFtBbGxvd2VkTmV0c1NlcnZpY2VGYWN0b3J5XVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOQUVfREVGQVVMVF9IRUFERVJTLFxuICAgICAgICAgICAgdXNlVmFsdWU6IFsnbWV0YS10aXRsZScsIGAke1VzZXJGaWx0ZXJDb25zdGFudHMuRklMVEVSX05FVF9JREVOVElGSUVSfS0ke1VzZXJGaWx0ZXJDb25zdGFudHMuRklMVEVSX0ZJRUxEX0lEfWBdXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIExvYWRGaWx0ZXJEaWFsb2dDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdENhc2VWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgICBwcm90ZWN0ZWQgX2luamVjdGVkRGF0YTogTG9hZEZpbHRlckluamVjdGlvbkRhdGE7XG4gICAgQFZpZXdDaGlsZCgnaGVhZGVyJykgcHVibGljIGNhc2VIZWFkZXJDb21wb25lbnQ6IEhlYWRlckNvbXBvbmVudDtcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8TG9hZEZpbHRlckRpYWxvZ0NvbXBvbmVudD4sXG4gICAgICAgICAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByb3RlY3RlZCBfZGF0YTogTG9hZEZpbHRlckluamVjdGlvbkRhdGEsXG4gICAgICAgICAgICAgICAgcHJvdGVjdGVkIF9sb2c6IExvZ2dlclNlcnZpY2UsXG4gICAgICAgICAgICAgICAgY2FzZVZpZXdTZXJ2aWNlOiBDYXNlVmlld1NlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoY2FzZVZpZXdTZXJ2aWNlKTtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuX2luamVjdGVkRGF0YSA9IHRoaXMuX2RhdGEgYXMgTG9hZEZpbHRlckluamVjdGlvbkRhdGE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVDYXNlQ2xpY2soY2xpY2tlZENhc2U6IENhc2UpIHtcbiAgICAgICAgY29uc3QgaW1tZWRpYXRlID0gZ2V0SW1tZWRpYXRlRGF0YShjbGlja2VkQ2FzZSwgVXNlckZpbHRlckNvbnN0YW50cy5GSUxURVJfRklFTERfSUQpO1xuICAgICAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgICAgb3BlbmVkOiBmYWxzZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdGaWx0ZXIgc2VsZWN0ZWQnLFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGFsbG93ZWROZXRzOiBpbW1lZGlhdGUuYWxsb3dlZE5ldHMsXG4gICAgICAgICAgICAgICAgZmlsdGVyTWV0YWRhdGE6IGltbWVkaWF0ZS5maWx0ZXJNZXRhZGF0YSxcbiAgICAgICAgICAgICAgICBvcmlnaW5WaWV3SWQ6IGdldEltbWVkaWF0ZURhdGEoY2xpY2tlZENhc2UsIFVzZXJGaWx0ZXJDb25zdGFudHMuT1JJR0lOX1ZJRVdfSURfRklFTERfSUQpLnZhbHVlLFxuICAgICAgICAgICAgICAgIGZpbHRlckNhc2U6IGNsaWNrZWRDYXNlLFxuICAgICAgICAgICAgICAgIGZpbHRlckNhc2VJZDogY2xpY2tlZENhc2Uuc3RyaW5nSWQsXG4gICAgICAgICAgICAgICAgZmlsdGVyOiBuZXcgU2ltcGxlRmlsdGVyKGNsaWNrZWRDYXNlLnN0cmluZ0lkLCBpbW1lZGlhdGUuZmlsdGVyTWV0YWRhdGEuZmlsdGVyVHlwZSwge1xuICAgICAgICAgICAgICAgICAgICBxdWVyeTogaW1tZWRpYXRlLnZhbHVlXG4gICAgICAgICAgICAgICAgfSwgY2xpY2tlZENhc2UudGl0bGUpXG4gICAgICAgICAgICB9IGFzIFNhdmVkRmlsdGVyTWV0YWRhdGFcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVIZWFkZXIodGhpcy5jYXNlSGVhZGVyQ29tcG9uZW50KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWF0LWRpYWxvZy10aXRsZVwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBub25lXCI+XG4gICAge3sgJ3NlYXJjaC50b29sdGlwLmxvYWQnIHwgdHJhbnNsYXRlICB9fVxuPC9kaXY+XG48ZGl2IG1hdC1kaWFsb2ctY29udGVudCBjbGFzcz1cImxvYWQtZmlsdGVyLWNvbnRhaW5lciBzaWRlLW1lbnUtcm9vdFwiIGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IHN0cmV0Y2hcIj5cbiAgICA8bmMtaGVhZGVyICNoZWFkZXIgW3R5cGVdPVwiaGVhZGVyVHlwZVwiIFttYXhIZWFkZXJDb2x1bW5zXT1cIjJcIiBbcmVzcG9uc2l2ZUhlYWRlcnNdPVwidHJ1ZVwiIFtoaWRlRWRpdE1vZGVdPVwidHJ1ZVwiIGNsYXNzPVwiY2FzZS1oZWFkZXItcGFkZGluZ1wiIFtuZ1N0eWxlXT1cInsnd2lkdGgnOiBnZXRXaWR0aCgpfVwiPjwvbmMtaGVhZGVyPlxuICAgIDxuYy1jYXNlLWxpc3QgW3NlbGVjdGVkSGVhZGVycyRdPVwic2VsZWN0ZWRIZWFkZXJzJFwiIFtzaG93RGVsZXRlTWVudV09XCJmYWxzZVwiIFt3aWR0aF09XCJnZXRXaWR0aCgpXCJcbiAgICAgICAgICAgICAgICAgIChjYXNlQ2xpY2spPVwiaGFuZGxlQ2FzZUNsaWNrKCRldmVudClcIiBbcmVzcG9uc2l2ZUJvZHldPVwidHJ1ZVwiIGZ4RmxleCBbdGV4dEVsbGlwc2lzXT1cInRydWVcIiBjbGFzcz1cInZpcnR1YWwtc2Nyb2xsLWxpc3QtcGFkZGluZ1wiPjwvbmMtY2FzZS1saXN0PlxuPC9kaXY+XG5cbiJdfQ==
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { UserListService } from '@netgrif/components-core';
|
|
3
|
+
import { FormControl } from '@angular/forms';
|
|
4
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/material/dialog";
|
|
7
|
+
import * as i2 from "@angular/material/form-field";
|
|
8
|
+
import * as i3 from "@angular/material/icon";
|
|
9
|
+
import * as i4 from "@angular/material/button";
|
|
10
|
+
import * as i5 from "../../side-menu/content-components/multi-user-assign/multi-user-assign-list/multi-user-assign-list.component";
|
|
11
|
+
import * as i6 from "@angular/flex-layout/flex";
|
|
12
|
+
import * as i7 from "@angular/material/input";
|
|
13
|
+
import * as i8 from "@angular/forms";
|
|
14
|
+
import * as i9 from "@angular/common";
|
|
15
|
+
import * as i10 from "@ngx-translate/core";
|
|
16
|
+
export class MultiUserAssignDialogComponent {
|
|
17
|
+
constructor(_dialogRef, _data) {
|
|
18
|
+
this._dialogRef = _dialogRef;
|
|
19
|
+
this._data = _data;
|
|
20
|
+
this.searchUserControl = new FormControl();
|
|
21
|
+
this._currentUsers = [];
|
|
22
|
+
if (this._data) {
|
|
23
|
+
this.injectedData = this._data;
|
|
24
|
+
this._currentUsers.push(...this.injectedData.value.userValues.values());
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
get initiallySelectedUsers() {
|
|
28
|
+
return this.injectedData && this.injectedData.value ? [...this.injectedData.value.userValues.values()] : undefined;
|
|
29
|
+
}
|
|
30
|
+
get roles() {
|
|
31
|
+
return this.injectedData ? this.injectedData.roles : [];
|
|
32
|
+
}
|
|
33
|
+
get negativeRoles() {
|
|
34
|
+
return this.injectedData ? this.injectedData.negativeRoles : [];
|
|
35
|
+
}
|
|
36
|
+
get currentUsers() {
|
|
37
|
+
return this._currentUsers;
|
|
38
|
+
}
|
|
39
|
+
userWasUnselected(user) {
|
|
40
|
+
const index = this._currentUsers.findIndex(v => v.id === user.id);
|
|
41
|
+
if (index > -1) {
|
|
42
|
+
this._currentUsers.splice(index, 1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
userWasSelected(user) {
|
|
46
|
+
this._currentUsers.push(user);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* On save button close side menu with selected user as data and message about confirm.
|
|
50
|
+
*/
|
|
51
|
+
save() {
|
|
52
|
+
if (this._currentUsers !== undefined) {
|
|
53
|
+
this._dialogRef.close({
|
|
54
|
+
opened: false,
|
|
55
|
+
message: 'Selected users were confirmed',
|
|
56
|
+
data: this._currentUsers
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
MultiUserAssignDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiUserAssignDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
62
|
+
MultiUserAssignDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MultiUserAssignDialogComponent, selector: "nc-multi-user-assign-dialog", providers: [UserListService], ngImport: i0, template: "<div class=\"mat-dialog-title\" fxLayout=\"column\" fxLayoutAlign=\"center none\">\n {{ 'side-menu.user.assign' | translate }}\n</div>\n<div mat-dialog-content fxLayoutAlign=\"start stretch\" class=\"height-fix\">\n <div class=\"user-assign-container side-menu-root\" fxFlex fxLayout=\"column\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-fix\">\n <mat-form-field fxFlex=\"100\" class=\"user-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-icon matPrefix class=\"prefix-icon\">search</mat-icon>\n <input matInput placeholder=\"{{ 'side-menu.user.choose' | translate }}\"\n [formControl]=\"searchUserControl\">\n <button mat-stroked-button *ngIf=\"searchUserControl.value\" matSuffix mat-icon-button\n (click)=\"searchUserControl.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <nc-multi-user-assign-list fxFlex class=\"height-100\"\n [searchUserControl]=\"searchUserControl\"\n [roles]=\"roles\"\n [negativeRoles]=\"negativeRoles\"\n [initiallySelectedUsers]=\"initiallySelectedUsers\"\n (userSelected)=\"userWasSelected($event)\"\n (userUnselected)=\"userWasUnselected($event)\">\n </nc-multi-user-assign-list>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\">\n <button mat-raised-button color=\"primary\"\n (click)=\"save()\">{{ 'dataField.user.save' | translate | uppercase }}</button>\n </div>\n </div>\n</div>\n\n", styles: [".user-assign-container{padding:16px;position:relative;height:100%}.user-assign-search{width:100%}.prefix-icon{font-size:18px;color:#64748b}.height-100{height:100%}.height-fix{height:calc(100% - 44px)}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i5.MultiUserAssignListComponent, selector: "nc-multi-user-assign-list" }], directives: [{ type: i6.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { type: i6.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i6.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { type: i2.MatPrefix, selector: "[matPrefix]" }, { type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MatSuffix, selector: "[matSuffix]" }], pipes: { "translate": i10.TranslatePipe, "uppercase": i9.UpperCasePipe } });
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MultiUserAssignDialogComponent, decorators: [{
|
|
64
|
+
type: Component,
|
|
65
|
+
args: [{ selector: 'nc-multi-user-assign-dialog', providers: [UserListService], template: "<div class=\"mat-dialog-title\" fxLayout=\"column\" fxLayoutAlign=\"center none\">\n {{ 'side-menu.user.assign' | translate }}\n</div>\n<div mat-dialog-content fxLayoutAlign=\"start stretch\" class=\"height-fix\">\n <div class=\"user-assign-container side-menu-root\" fxFlex fxLayout=\"column\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" class=\"netgrif-input netgrif-input-fix\">\n <mat-form-field fxFlex=\"100\" class=\"user-assign-search\" color=\"primary\" appearance=\"outline\">\n <mat-icon matPrefix class=\"prefix-icon\">search</mat-icon>\n <input matInput placeholder=\"{{ 'side-menu.user.choose' | translate }}\"\n [formControl]=\"searchUserControl\">\n <button mat-stroked-button *ngIf=\"searchUserControl.value\" matSuffix mat-icon-button\n (click)=\"searchUserControl.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n\n <nc-multi-user-assign-list fxFlex class=\"height-100\"\n [searchUserControl]=\"searchUserControl\"\n [roles]=\"roles\"\n [negativeRoles]=\"negativeRoles\"\n [initiallySelectedUsers]=\"initiallySelectedUsers\"\n (userSelected)=\"userWasSelected($event)\"\n (userUnselected)=\"userWasUnselected($event)\">\n </nc-multi-user-assign-list>\n\n <div fxLayout=\"row\" fxLayoutAlign=\"end center\">\n <button mat-raised-button color=\"primary\"\n (click)=\"save()\">{{ 'dataField.user.save' | translate | uppercase }}</button>\n </div>\n </div>\n</div>\n\n", styles: [".user-assign-container{padding:16px;position:relative;height:100%}.user-assign-search{width:100%}.prefix-icon{font-size:18px;color:#64748b}.height-100{height:100%}.height-fix{height:calc(100% - 44px)}\n"] }]
|
|
66
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
67
|
+
type: Inject,
|
|
68
|
+
args: [MAT_DIALOG_DATA]
|
|
69
|
+
}] }]; } });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktdXNlci1hc3NpZ24tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2RpYWxvZy9tdWx0aS11c2VyLWFzc2lnbi1kaWFsb2cvbXVsdGktdXNlci1hc3NpZ24tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy9zcmMvbGliL2RpYWxvZy9tdWx0aS11c2VyLWFzc2lnbi1kaWFsb2cvbXVsdGktdXNlci1hc3NpZ24tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hELE9BQU8sRUFBb0MsZUFBZSxFQUEyQixNQUFNLDBCQUEwQixDQUFDO0FBQ3RILE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZUFBZSxFQUFlLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7OztBQVF2RSxNQUFNLE9BQU8sOEJBQThCO0lBUXZDLFlBQXNCLFVBQXdELEVBQ3JCLEtBQTJCO1FBRDlELGVBQVUsR0FBVixVQUFVLENBQThDO1FBQ3JCLFVBQUssR0FBTCxLQUFLLENBQXNCO1FBUDdFLHNCQUFpQixHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFRekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1osSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBNkIsQ0FBQztZQUN2RCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBdUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUM5RjtJQUNMLENBQUM7SUFFRCxJQUFXLHNCQUFzQjtRQUM3QixPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQXVCLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMxSSxDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BFLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxJQUFlO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdkM7SUFDTCxDQUFDO0lBRU0sZUFBZSxDQUFDLElBQWU7UUFDbEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSTtRQUNQLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7Z0JBQ2xCLE1BQU0sRUFBRSxLQUFLO2dCQUNiLE9BQU8sRUFBRSwrQkFBK0I7Z0JBQ3hDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYTthQUMzQixDQUFDLENBQUM7U0FDTjtJQUNMLENBQUM7OzRIQXZEUSw4QkFBOEIsOENBU1QsZUFBZTtnSEFUcEMsOEJBQThCLHNEQUY1QixDQUFDLGVBQWUsQ0FBQywwQkNUaEMsc3lEQWlDQTs0RkR0QmEsOEJBQThCO2tCQU4xQyxTQUFTOytCQUNJLDZCQUE2QixhQUc1QixDQUFDLGVBQWUsQ0FBQzs7MEJBV0wsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEluamVjdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Byb2Nlc3NSb2xlLCBVc2VyTGlzdEluamVjdGVkRGF0YSwgVXNlckxpc3RTZXJ2aWNlLCBVc2VyTGlzdFZhbHVlLCBVc2VyVmFsdWV9IGZyb20gJ0BuZXRncmlmL2NvbXBvbmVudHMtY29yZSc7XG5pbXBvcnQge0Zvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ25jLW11bHRpLXVzZXItYXNzaWduLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL211bHRpLXVzZXItYXNzaWduLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vbXVsdGktdXNlci1hc3NpZ24tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbVXNlckxpc3RTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBNdWx0aVVzZXJBc3NpZ25EaWFsb2dDb21wb25lbnQge1xuXG4gICAgcHVibGljIHNlYXJjaFVzZXJDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgICBwdWJsaWMgaW5qZWN0ZWREYXRhOiBVc2VyTGlzdEluamVjdGVkRGF0YTtcblxuICAgIHByb3RlY3RlZCBfY3VycmVudFVzZXJzOiBBcnJheTxVc2VyVmFsdWU+O1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9kaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxNdWx0aVVzZXJBc3NpZ25EaWFsb2dDb21wb25lbnQ+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJvdGVjdGVkIF9kYXRhOiBVc2VyTGlzdEluamVjdGVkRGF0YSkge1xuICAgICAgICB0aGlzLl9jdXJyZW50VXNlcnMgPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuaW5qZWN0ZWREYXRhID0gdGhpcy5fZGF0YSBhcyBVc2VyTGlzdEluamVjdGVkRGF0YTtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRVc2Vycy5wdXNoKC4uLih0aGlzLmluamVjdGVkRGF0YS52YWx1ZSBhcyBVc2VyTGlzdFZhbHVlKS51c2VyVmFsdWVzLnZhbHVlcygpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaW5pdGlhbGx5U2VsZWN0ZWRVc2VycygpOiBBcnJheTxVc2VyVmFsdWU+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0ZWREYXRhICYmIHRoaXMuaW5qZWN0ZWREYXRhLnZhbHVlID8gWy4uLih0aGlzLmluamVjdGVkRGF0YS52YWx1ZSBhcyBVc2VyTGlzdFZhbHVlKS51c2VyVmFsdWVzLnZhbHVlcygpXSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJvbGVzKCk6IEFycmF5PHN0cmluZz4gfCBBcnJheTxQcm9jZXNzUm9sZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbmplY3RlZERhdGEgPyB0aGlzLmluamVjdGVkRGF0YS5yb2xlcyA6IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbmVnYXRpdmVSb2xlcygpOiBBcnJheTxzdHJpbmc+IHwgQXJyYXk8UHJvY2Vzc1JvbGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0ZWREYXRhID8gdGhpcy5pbmplY3RlZERhdGEubmVnYXRpdmVSb2xlcyA6IFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVudFVzZXJzKCk6IEFycmF5PFVzZXJWYWx1ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFVzZXJzO1xuICAgIH1cblxuICAgIHB1YmxpYyB1c2VyV2FzVW5zZWxlY3RlZCh1c2VyOiBVc2VyVmFsdWUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLl9jdXJyZW50VXNlcnMuZmluZEluZGV4KHYgPT4gdi5pZCA9PT0gdXNlci5pZCk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLl9jdXJyZW50VXNlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB1c2VyV2FzU2VsZWN0ZWQodXNlcjogVXNlclZhbHVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRVc2Vycy5wdXNoKHVzZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uIHNhdmUgYnV0dG9uIGNsb3NlIHNpZGUgbWVudSB3aXRoIHNlbGVjdGVkIHVzZXIgYXMgZGF0YSBhbmQgbWVzc2FnZSBhYm91dCBjb25maXJtLlxuICAgICAqL1xuICAgIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudFVzZXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgICAgICAgICAgb3BlbmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAnU2VsZWN0ZWQgdXNlcnMgd2VyZSBjb25maXJtZWQnLFxuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMuX2N1cnJlbnRVc2Vyc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYXQtZGlhbG9nLXRpdGxlXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeExheW91dEFsaWduPVwiY2VudGVyIG5vbmVcIj5cbiAgICB7eyAnc2lkZS1tZW51LnVzZXIuYXNzaWduJyB8IHRyYW5zbGF0ZSAgfX1cbjwvZGl2PlxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IHN0cmV0Y2hcIiBjbGFzcz1cImhlaWdodC1maXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwidXNlci1hc3NpZ24tY29udGFpbmVyIHNpZGUtbWVudS1yb290XCIgZnhGbGV4IGZ4TGF5b3V0PVwiY29sdW1uXCI+XG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCIgY2xhc3M9XCJuZXRncmlmLWlucHV0IG5ldGdyaWYtaW5wdXQtZml4XCI+XG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4PVwiMTAwXCIgY2xhc3M9XCJ1c2VyLWFzc2lnbi1zZWFyY2hcIiBjb2xvcj1cInByaW1hcnlcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRQcmVmaXggY2xhc3M9XCJwcmVmaXgtaWNvblwiPnNlYXJjaDwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwie3sgJ3NpZGUtbWVudS51c2VyLmNob29zZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoVXNlckNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiAqbmdJZj1cInNlYXJjaFVzZXJDb250cm9sLnZhbHVlXCIgbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlYXJjaFVzZXJDb250cm9sLnNldFZhbHVlKCcnKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5jLW11bHRpLXVzZXItYXNzaWduLWxpc3QgZnhGbGV4IGNsYXNzPVwiaGVpZ2h0LTEwMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hVc2VyQ29udHJvbF09XCJzZWFyY2hVc2VyQ29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyb2xlc109XCJyb2xlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZWdhdGl2ZVJvbGVzXT1cIm5lZ2F0aXZlUm9sZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5pdGlhbGx5U2VsZWN0ZWRVc2Vyc109XCJpbml0aWFsbHlTZWxlY3RlZFVzZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVzZXJTZWxlY3RlZCk9XCJ1c2VyV2FzU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1c2VyVW5zZWxlY3RlZCk9XCJ1c2VyV2FzVW5zZWxlY3RlZCgkZXZlbnQpXCI+XG4gICAgICAgIDwvbmMtbXVsdGktdXNlci1hc3NpZ24tbGlzdD5cblxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImVuZCBjZW50ZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiPnt7ICdkYXRhRmllbGQudXNlci5zYXZlJyB8IHRyYW5zbGF0ZSB8IHVwcGVyY2FzZSB9fTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG4iXX0=
|