@tsi-developpement/tsi-shared-ui 0.0.1
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/lib/consts/app-providers.mjs +11 -0
- package/esm2022/lib/consts/html-template.const.mjs +40 -0
- package/esm2022/lib/consts/index.mjs +8 -0
- package/esm2022/lib/consts/localization-key.mjs +12 -0
- package/esm2022/lib/consts/locals.const.mjs +8 -0
- package/esm2022/lib/consts/queryParamNames.const.mjs +11 -0
- package/esm2022/lib/consts/themes.mjs +5 -0
- package/esm2022/lib/consts/tsi-consts.mjs +45 -0
- package/esm2022/lib/end-points/authorization-endpoints.mjs +35 -0
- package/esm2022/lib/end-points/baseuri.mjs +11 -0
- package/esm2022/lib/end-points/endpoints.mjs +208 -0
- package/esm2022/lib/end-points/import-export-endpoint.mjs +35 -0
- package/esm2022/lib/end-points/index.mjs +7 -0
- package/esm2022/lib/end-points/presentation-settings-endpoints.mjs +13 -0
- package/esm2022/lib/end-points/reporting-endpoints.mjs +55 -0
- package/esm2022/lib/end-points/shared-endpoint.mjs +12 -0
- package/esm2022/lib/end-points/user-identity-endpoints.mjs +61 -0
- package/esm2022/lib/enums/Language.mjs +9 -0
- package/esm2022/lib/enums/auto-complete.mjs +6 -0
- package/esm2022/lib/enums/button-type.enum.mjs +6 -0
- package/esm2022/lib/enums/claim-types.mjs +15 -0
- package/esm2022/lib/enums/code-format.mjs +6 -0
- package/esm2022/lib/enums/component-use-modes-enum.mjs +19 -0
- package/esm2022/lib/enums/css-units.mjs +10 -0
- package/esm2022/lib/enums/decimal-format.mjs +8 -0
- package/esm2022/lib/enums/display-types.mjs +35 -0
- package/esm2022/lib/enums/filter-operator-type.mjs +34 -0
- package/esm2022/lib/enums/form-validation-error.mjs +7 -0
- package/esm2022/lib/enums/grid-selection-mode.mjs +7 -0
- package/esm2022/lib/enums/grid-sort-mode.mjs +7 -0
- package/esm2022/lib/enums/http-method-types.mjs +6 -0
- package/esm2022/lib/enums/index.mjs +25 -0
- package/esm2022/lib/enums/input-types.mjs +20 -0
- package/esm2022/lib/enums/layout-orientation.mjs +6 -0
- package/esm2022/lib/enums/logout-reason-enum.mjs +8 -0
- package/esm2022/lib/enums/modal-size-enum.mjs +10 -0
- package/esm2022/lib/enums/report-type.mjs +9 -0
- package/esm2022/lib/enums/status.mjs +9 -0
- package/esm2022/lib/enums/text-box-type.mjs +7 -0
- package/esm2022/lib/enums/tooltipPosition.enum.mjs +8 -0
- package/esm2022/lib/enums/tsi-component-enum.mjs +40 -0
- package/esm2022/lib/enums/type-import.mjs +6 -0
- package/esm2022/lib/functions/array.functions.mjs +8 -0
- package/esm2022/lib/functions/index.mjs +3 -0
- package/esm2022/lib/functions/modal-open.function.mjs +69 -0
- package/esm2022/lib/guards/admin.guard.mjs +37 -0
- package/esm2022/lib/guards/auth.guard.mjs +30 -0
- package/esm2022/lib/guards/index.mjs +4 -0
- package/esm2022/lib/guards/permission.guard.mjs +32 -0
- package/esm2022/lib/interfaces/configuration/configuration.mjs +2 -0
- package/esm2022/lib/interfaces/generic-form/generic-form.mjs +118 -0
- package/esm2022/lib/interfaces/generic-types/dictionary.mjs +2 -0
- package/esm2022/lib/interfaces/grid/grid-configuration.mjs +2 -0
- package/esm2022/lib/interfaces/index.mjs +12 -0
- package/esm2022/lib/interfaces/modal/dynamic.component.mjs +7 -0
- package/esm2022/lib/interfaces/modal/modal-size.mjs +2 -0
- package/esm2022/lib/interfaces/pagination/pagination-base.mjs +2 -0
- package/esm2022/lib/interfaces/select-list/combo-status-model.mjs +10 -0
- package/esm2022/lib/interfaces/settings/app-settings.mjs +2 -0
- package/esm2022/lib/interfaces/styles/css-size-property.mjs +17 -0
- package/esm2022/lib/interfaces/translation/translation.mjs +2 -0
- package/esm2022/lib/models/Notes/Note.mjs +7 -0
- package/esm2022/lib/models/application/configuration/endpoint-infos.mjs +3 -0
- package/esm2022/lib/models/application/configuration/entity-delete-behavior.mjs +2 -0
- package/esm2022/lib/models/authorization/authorization-token-mapper.mjs +24 -0
- package/esm2022/lib/models/authorization/authorization-token.mjs +2 -0
- package/esm2022/lib/models/common/component-descriminator.mjs +2 -0
- package/esm2022/lib/models/common/entity-properties.mjs +2 -0
- package/esm2022/lib/models/common/entity-validations.mjs +2 -0
- package/esm2022/lib/models/common/event-schema.mjs +2 -0
- package/esm2022/lib/models/common/key-value-pair.mjs +2 -0
- package/esm2022/lib/models/entity-info/entity-info.mjs +29 -0
- package/esm2022/lib/models/filter/filter-by-existing-values.mjs +7 -0
- package/esm2022/lib/models/filter/paged-result-request-base.mjs +13 -0
- package/esm2022/lib/models/filter/search-field.mjs +2 -0
- package/esm2022/lib/models/import-export/import-export.mjs +15 -0
- package/esm2022/lib/models/index.mjs +38 -0
- package/esm2022/lib/models/journalisation-application/journalisation-application.mjs +10 -0
- package/esm2022/lib/models/journalisation-application/status-history.mjs +3 -0
- package/esm2022/lib/models/layout/layout-config.mjs +2 -0
- package/esm2022/lib/models/modal/bs-modal.mjs +6 -0
- package/esm2022/lib/models/presentation-settings/presentation-settings.mjs +8 -0
- package/esm2022/lib/models/progress-bar/progress-bar-create-request.mjs +2 -0
- package/esm2022/lib/models/progress-bar/progress-bar-response.mjs +8 -0
- package/esm2022/lib/models/progress-bar/progress-bar-update-request.mjs +3 -0
- package/esm2022/lib/models/remote-services-utility/subscription-result.mjs +17 -0
- package/esm2022/lib/models/reporting/json-data-connection.mjs +2 -0
- package/esm2022/lib/models/reporting/optional-endpoints.mjs +2 -0
- package/esm2022/lib/models/reporting/report-template-response.mjs +2 -0
- package/esm2022/lib/models/reporting/report-to-edit-template.mjs +2 -0
- package/esm2022/lib/models/reporting/report-to-print.mjs +2 -0
- package/esm2022/lib/models/reporting/report-to-template.mjs +2 -0
- package/esm2022/lib/models/settings/devise.mjs +3 -0
- package/esm2022/lib/models/settings/fichier.mjs +6 -0
- package/esm2022/lib/models/settings/type-fichier.mjs +3 -0
- package/esm2022/lib/models/tsi-card/tsi-card.mjs +3 -0
- package/esm2022/lib/models/user-identity/login-response.mjs +7 -0
- package/esm2022/lib/models/user-identity/tenant.mjs +3 -0
- package/esm2022/lib/models/user-identity/user-identity.mjs +3 -0
- package/esm2022/lib/models/workflow/workflow.mjs +14 -0
- package/esm2022/lib/package-initializer.mjs +7 -0
- package/esm2022/lib/pipes/cut-label.pipe.mjs +23 -0
- package/esm2022/lib/pipes/index.mjs +8 -0
- package/esm2022/lib/pipes/localize.pipe.mjs +51 -0
- package/esm2022/lib/pipes/modal-label.pipe.mjs +37 -0
- package/esm2022/lib/pipes/shorten.pipe.mjs +20 -0
- package/esm2022/lib/pipes/to-number.pipe.mjs +20 -0
- package/esm2022/lib/pipes/tsi-currency.pipe.mjs +29 -0
- package/esm2022/lib/pipes/tsi-decimal.pipe.mjs +21 -0
- package/esm2022/lib/providers/index.mjs +2 -0
- package/esm2022/lib/providers/shared-ui-tsi.provider.mjs +15 -0
- package/esm2022/lib/routes/admin.routes.mjs +5 -0
- package/esm2022/lib/routes/app.routes.mjs +7 -0
- package/esm2022/lib/routes/identity.routes.mjs +4 -0
- package/esm2022/lib/routes/index.mjs +5 -0
- package/esm2022/lib/routes/manage-reporting.routes.mjs +5 -0
- package/esm2022/lib/services/Component-Finder/tsi-component-finder.service.mjs +22 -0
- package/esm2022/lib/services/Import-Export/modele-import.service.mjs +59 -0
- package/esm2022/lib/services/Note/Note.service.mjs +35 -0
- package/esm2022/lib/services/UserIdentity/identity-platform-authentication.service.mjs +29 -0
- package/esm2022/lib/services/UserIdentity/user-identity.service.mjs +40 -0
- package/esm2022/lib/services/application/api-explorer.service.mjs +24 -0
- package/esm2022/lib/services/application/app.layout.service.mjs +97 -0
- package/esm2022/lib/services/application/parametres-application-parambase.service.mjs +20 -0
- package/esm2022/lib/services/authorization/authorization.service.mjs +124 -0
- package/esm2022/lib/services/authorization/identity-manager.service.mjs +97 -0
- package/esm2022/lib/services/base/crud-base.service.mjs +38 -0
- package/esm2022/lib/services/configuration/entity-configuration.service.mjs +49 -0
- package/esm2022/lib/services/currentUser/currentUser.service.mjs +49 -0
- package/esm2022/lib/services/date-helper.service.mjs +133 -0
- package/esm2022/lib/services/dialog-data.service.mjs +32 -0
- package/esm2022/lib/services/fichier/fichier-upload.service.mjs +44 -0
- package/esm2022/lib/services/fichier/fichier.service.mjs +20 -0
- package/esm2022/lib/services/formula.service.mjs +20 -0
- package/esm2022/lib/services/generator/html-template-generator.service.mjs +196 -0
- package/esm2022/lib/services/index.mjs +41 -0
- package/esm2022/lib/services/journalisation/journalisation-application.service.mjs +23 -0
- package/esm2022/lib/services/journalisation/status-history.service.mjs +23 -0
- package/esm2022/lib/services/layout/layout-helper.service.mjs +72 -0
- package/esm2022/lib/services/modal/tsi-bs-modal.service.mjs +37 -0
- package/esm2022/lib/services/modal/tsi-modal.service.mjs +21 -0
- package/esm2022/lib/services/module-code/module-code.service.mjs +31 -0
- package/esm2022/lib/services/module-main-parameter.service.mjs +31 -0
- package/esm2022/lib/services/notification/error-response-manager.service.mjs +57 -0
- package/esm2022/lib/services/notification/tsi-confirmation.service.mjs +37 -0
- package/esm2022/lib/services/notification/tsi-message.service.mjs +54 -0
- package/esm2022/lib/services/notification/tsi-notification.service.mjs +47 -0
- package/esm2022/lib/services/presentation-setting/presentation-designer-base.service.mjs +26 -0
- package/esm2022/lib/services/presentation-setting/presentation-designer.service.mjs +58 -0
- package/esm2022/lib/services/presentation-setting/presentation-setting.service.mjs +39 -0
- package/esm2022/lib/services/progress-bar/progress-bar-helper.service.mjs +39 -0
- package/esm2022/lib/services/progress-bar/progress-bar.service.mjs +30 -0
- package/esm2022/lib/services/record-info-popup.service.mjs +21 -0
- package/esm2022/lib/services/reporting/dashboard-module.service.mjs +24 -0
- package/esm2022/lib/services/reporting/reporting.service.mjs +111 -0
- package/esm2022/lib/services/settings/app-settings.service.mjs +47 -0
- package/esm2022/lib/services/settings/keyboard-shortcut.service.mjs +30 -0
- package/esm2022/lib/services/status/entityStatus.service.mjs +21 -0
- package/esm2022/lib/services/translation/translation.service.mjs +71 -0
- package/esm2022/lib/services/validation/entity-validations.service.mjs +21 -0
- package/esm2022/lib/services/validation/generic-validation-state.service.mjs +30 -0
- package/esm2022/lib/services/validation/input-registry.service.mjs +25 -0
- package/esm2022/lib/services/workflow/workflow-configuration.service.mjs +80 -0
- package/esm2022/lib/shared.module.mjs +643 -0
- package/esm2022/lib/tsi-base/components/app-base/app-base.component.mjs +101 -0
- package/esm2022/lib/tsi-base/components/tsi-base/tsi-base.component.mjs +25 -0
- package/esm2022/lib/tsi-base/components/tsi-form-base/tsi-form-base.component.mjs +645 -0
- package/esm2022/lib/tsi-base/components/tsi-list-base/tsi-list-base.component.mjs +514 -0
- package/esm2022/lib/tsi-base/index.mjs +6 -0
- package/esm2022/lib/tsi-base/tsi-input-base/tsi-input-base.component.mjs +141 -0
- package/esm2022/lib/tsi-components/alert-import-message/alert-import-message.component.mjs +19 -0
- package/esm2022/lib/tsi-components/button-components/Tsi-Submit-Button/tsi-submit-button.component.mjs +40 -0
- package/esm2022/lib/tsi-components/button-components/tsi-button/tsi-button.component.mjs +75 -0
- package/esm2022/lib/tsi-components/create-or-edit-entity-informations/create-or-edit-entity-informations.component.mjs +173 -0
- package/esm2022/lib/tsi-components/create-or-edit-modele-import/create-or-edit-modele-import.component.mjs +201 -0
- package/esm2022/lib/tsi-components/index.mjs +80 -0
- package/esm2022/lib/tsi-components/input-components/editable-grid/editable-grid.component.mjs +643 -0
- package/esm2022/lib/tsi-components/input-components/tsi-checkbox/tsi-checkbox.component.mjs +120 -0
- package/esm2022/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.mjs +53 -0
- package/esm2022/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.mjs +62 -0
- package/esm2022/lib/tsi-components/input-components/tsi-date-picker/tsi-date-picker.component.mjs +116 -0
- package/esm2022/lib/tsi-components/input-components/tsi-decimal-input/tsi-decimal-input.component.mjs +51 -0
- package/esm2022/lib/tsi-components/input-components/tsi-file-manager/tsi-file-manager.component.mjs +195 -0
- package/esm2022/lib/tsi-components/input-components/tsi-formula-box/tsi-formula-box.component.mjs +54 -0
- package/esm2022/lib/tsi-components/input-components/tsi-integer/tsi-integer.component.mjs +55 -0
- package/esm2022/lib/tsi-components/input-components/tsi-radio-button/tsi-radio-button.component.mjs +43 -0
- package/esm2022/lib/tsi-components/input-components/tsi-rate-input/tsi-rate-input.component.mjs +56 -0
- package/esm2022/lib/tsi-components/input-components/tsi-search-combo/tsi-search-combo.component.mjs +649 -0
- package/esm2022/lib/tsi-components/input-components/tsi-text-area/tsi-text-area.component.mjs +44 -0
- package/esm2022/lib/tsi-components/input-components/tsi-text-box/tsi-text-box.component.mjs +50 -0
- package/esm2022/lib/tsi-components/input-components/tsi-time-picker/tsi-time-picker.component.mjs +65 -0
- package/esm2022/lib/tsi-components/logout-popup/logout-popup.component.mjs +12 -0
- package/esm2022/lib/tsi-components/manage-import-export/manage-import-export.component.mjs +435 -0
- package/esm2022/lib/tsi-components/manage-reporting/add-report-popup/add-report-popup.component.mjs +148 -0
- package/esm2022/lib/tsi-components/manage-reporting/manage-reporting.component.mjs +1075 -0
- package/esm2022/lib/tsi-components/message-components/tsi-error-message/tsi-error-message.component.mjs +31 -0
- package/esm2022/lib/tsi-components/message-components/tsi-info-message/tsi-info-message.component.mjs +24 -0
- package/esm2022/lib/tsi-components/message-components/tsi-redirection-message/tsi-redirection-message.component.mjs +19 -0
- package/esm2022/lib/tsi-components/message-components/tsi-success-message/tsi-success-message.component.mjs +22 -0
- package/esm2022/lib/tsi-components/modal-component/modal.component.mjs +138 -0
- package/esm2022/lib/tsi-components/modal-loader/modal-loader.component.mjs +58 -0
- package/esm2022/lib/tsi-components/output-components/display-nested-prop/display-nested-prop.component.mjs +32 -0
- package/esm2022/lib/tsi-components/output-components/tsi-checkbox-display/tsi-checkbox-display.component.mjs +18 -0
- package/esm2022/lib/tsi-components/output-components/tsi-currency-other-display/tsi-currency-other-display.component.mjs +17 -0
- package/esm2022/lib/tsi-components/output-components/tsi-currency-societe-display/tsi-currency-societe-display.component.mjs +57 -0
- package/esm2022/lib/tsi-components/output-components/tsi-date-display/tsi-date-display.component.mjs +27 -0
- package/esm2022/lib/tsi-components/output-components/tsi-decimal-display/tsi-decimal-display.component.mjs +25 -0
- package/esm2022/lib/tsi-components/output-components/tsi-display-grid/tsi-display-grid.component.mjs +139 -0
- package/esm2022/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.mjs +1509 -0
- package/esm2022/lib/tsi-components/output-components/tsi-image-display/tsi-image-display.component.mjs +144 -0
- package/esm2022/lib/tsi-components/output-components/tsi-integer-display/tsi-integer-display.component.mjs +13 -0
- package/esm2022/lib/tsi-components/output-components/tsi-label/tsi-label.component.mjs +24 -0
- package/esm2022/lib/tsi-components/output-components/tsi-label-legend/tsi-label-legend.component.mjs +18 -0
- package/esm2022/lib/tsi-components/output-components/tsi-legend/tsi-legend.component.mjs +20 -0
- package/esm2022/lib/tsi-components/output-components/tsi-paragraph/tsi-paragraph.component.mjs +17 -0
- package/esm2022/lib/tsi-components/output-components/tsi-rate-display/tsi-rate-display.component.mjs +30 -0
- package/esm2022/lib/tsi-components/output-components/tsi-time-display/tsi-time-display.component.mjs +17 -0
- package/esm2022/lib/tsi-components/output-components/tsi-view-grid/tsi-view-grid.component.mjs +427 -0
- package/esm2022/lib/tsi-components/reporting/reporting.component.mjs +667 -0
- package/esm2022/lib/tsi-components/spinner/spinner.component.mjs +15 -0
- package/esm2022/lib/tsi-components/tsi-bubble-info/tsi-bubble-info.component.mjs +21 -0
- package/esm2022/lib/tsi-components/tsi-calender/context-menu/context-menu.component.mjs +46 -0
- package/esm2022/lib/tsi-components/tsi-calender/tsi-calender.component.mjs +297 -0
- package/esm2022/lib/tsi-components/tsi-card/tsi-card.component.mjs +64 -0
- package/esm2022/lib/tsi-components/tsi-card-list/tsi-card-list.component.mjs +112 -0
- package/esm2022/lib/tsi-components/tsi-change-password/tsi-change-password.component.mjs +39 -0
- package/esm2022/lib/tsi-components/tsi-code-generator/tsi-code-generator.component.mjs +83 -0
- package/esm2022/lib/tsi-components/tsi-divider/tsi-divider.component.mjs +18 -0
- package/esm2022/lib/tsi-components/tsi-form/tsi-form.component.mjs +305 -0
- package/esm2022/lib/tsi-components/tsi-form-modal-footer/tsi-form-modal-footer.component.mjs +15 -0
- package/esm2022/lib/tsi-components/tsi-generic-crud/tsi-generic-crud.component.mjs +883 -0
- package/esm2022/lib/tsi-components/tsi-generic-form/tsi-generic-form.component.mjs +149 -0
- package/esm2022/lib/tsi-components/tsi-kanban/tsi-kanban.component.mjs +231 -0
- package/esm2022/lib/tsi-components/tsi-log-event-history/tsi-log-event-history.component.mjs +119 -0
- package/esm2022/lib/tsi-components/tsi-modal/tsi-modal.component.mjs +25 -0
- package/esm2022/lib/tsi-components/tsi-modal-footer/tsi-modal-footer.component.mjs +119 -0
- package/esm2022/lib/tsi-components/tsi-modal-header/tsi-modal-header.component.mjs +54 -0
- package/esm2022/lib/tsi-components/tsi-notes-avertir/tsi-notes-avertir.component.mjs +27 -0
- package/esm2022/lib/tsi-components/tsi-notes-createoredit/tsi-notes.component.mjs +123 -0
- package/esm2022/lib/tsi-components/tsi-notes-grid/tsi-notes-grid.component.mjs +41 -0
- package/esm2022/lib/tsi-components/tsi-popup-text-viewer/tsi-popup-text-viewer.component.mjs +187 -0
- package/esm2022/lib/tsi-components/tsi-progress-bar/tsi-progress-bar.component.mjs +170 -0
- package/esm2022/lib/tsi-components/tsi-search-box/tsi-search-box.component.mjs +142 -0
- package/esm2022/lib/tsi-components/tsi-send-mail/tsi-send-mail.component.mjs +37 -0
- package/esm2022/lib/tsi-components/tsi-tab-panel/tsi-tab-panel.component.mjs +52 -0
- package/esm2022/lib/tsi-components/tsi-tab-view/tsi-tab-view.component.mjs +46 -0
- package/esm2022/lib/tsi-components/tsi-tenants/tsi-tenants.component.mjs +122 -0
- package/esm2022/lib/tsi-components/tsi-tooltip/tsi-tooltip.component.mjs +21 -0
- package/esm2022/lib/tsi-components/tsi-upload-fiche/tsi-upload-fiche.component.mjs +186 -0
- package/esm2022/lib/tsi-components/tsi-upload-grid/tsi-upload-grid.component.mjs +54 -0
- package/esm2022/lib/tsi-directives/auto-select.directive.mjs +33 -0
- package/esm2022/lib/tsi-directives/busy.directive.mjs +32 -0
- package/esm2022/lib/tsi-directives/dynamic-component-loader/ad.directive.mjs +16 -0
- package/esm2022/lib/tsi-directives/index.mjs +8 -0
- package/esm2022/lib/tsi-directives/module-main-parameter.directive.mjs +16 -0
- package/esm2022/lib/tsi-directives/presentation-designer-base.directive.mjs +238 -0
- package/esm2022/lib/tsi-directives/presentation-designer.directive.mjs +205 -0
- package/esm2022/lib/tsi-directives/validation.directive.mjs +85 -0
- package/esm2022/lib/tsi-helpers/compoent-reference.helper.mjs +7 -0
- package/esm2022/lib/tsi-helpers/date-helper.mjs +21 -0
- package/esm2022/lib/tsi-helpers/export-excel.helper.mjs +40 -0
- package/esm2022/lib/tsi-helpers/filter-helper.mjs +126 -0
- package/esm2022/lib/tsi-helpers/grid-col-style.helper.mjs +7 -0
- package/esm2022/lib/tsi-helpers/guid.helper.mjs +19 -0
- package/esm2022/lib/tsi-helpers/helpers.mjs +9 -0
- package/esm2022/lib/tsi-helpers/index.mjs +13 -0
- package/esm2022/lib/tsi-helpers/mapping-helper.mjs +10 -0
- package/esm2022/lib/tsi-helpers/object.helper.mjs +6 -0
- package/esm2022/lib/tsi-helpers/primeng-translate-config.mjs +55 -0
- package/esm2022/lib/tsi-helpers/storage-manager.mjs +33 -0
- package/esm2022/lib/tsi-helpers/type-registry.helper.mjs +49 -0
- package/esm2022/lib/types/enum-description.type.mjs +2 -0
- package/esm2022/lib/types/index.mjs +3 -0
- package/esm2022/lib/types/time-only.mjs +42 -0
- package/esm2022/public-api.mjs +21 -0
- package/esm2022/tsi-developpement-tsi-shared-ui.mjs +5 -0
- package/esm2022/tsi-tsi-shared-ui.mjs +5 -0
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs +17486 -0
- package/fesm2022/tsi-developpement-tsi-shared-ui.mjs.map +1 -0
- package/fesm2022/tsi-tsi-shared-ui.mjs +17486 -0
- package/fesm2022/tsi-tsi-shared-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/consts/app-providers.d.ts +4 -0
- package/lib/consts/html-template.const.d.ts +12 -0
- package/lib/consts/index.d.ts +7 -0
- package/lib/consts/localization-key.d.ts +11 -0
- package/lib/consts/locals.const.d.ts +7 -0
- package/lib/consts/queryParamNames.const.d.ts +10 -0
- package/lib/consts/themes.d.ts +4 -0
- package/lib/consts/tsi-consts.d.ts +40 -0
- package/lib/end-points/authorization-endpoints.d.ts +31 -0
- package/lib/end-points/baseuri.d.ts +10 -0
- package/lib/end-points/endpoints.d.ts +205 -0
- package/lib/end-points/import-export-endpoint.d.ts +33 -0
- package/lib/end-points/index.d.ts +6 -0
- package/lib/end-points/presentation-settings-endpoints.d.ts +11 -0
- package/lib/end-points/reporting-endpoints.d.ts +53 -0
- package/lib/end-points/shared-endpoint.d.ts +9 -0
- package/lib/end-points/user-identity-endpoints.d.ts +59 -0
- package/lib/enums/Language.d.ts +9 -0
- package/lib/enums/auto-complete.d.ts +4 -0
- package/lib/enums/button-type.enum.d.ts +4 -0
- package/lib/enums/claim-types.d.ts +13 -0
- package/lib/enums/code-format.d.ts +4 -0
- package/lib/enums/component-use-modes-enum.d.ts +17 -0
- package/lib/enums/css-units.d.ts +8 -0
- package/lib/enums/decimal-format.d.ts +6 -0
- package/lib/enums/display-types.d.ts +17 -0
- package/lib/enums/filter-operator-type.d.ts +18 -0
- package/lib/enums/form-validation-error.d.ts +11 -0
- package/lib/enums/grid-selection-mode.d.ts +5 -0
- package/lib/enums/grid-sort-mode.d.ts +5 -0
- package/lib/enums/http-method-types.d.ts +4 -0
- package/lib/enums/index.d.ts +24 -0
- package/lib/enums/input-types.d.ts +18 -0
- package/lib/enums/layout-orientation.d.ts +4 -0
- package/lib/enums/logout-reason-enum.d.ts +6 -0
- package/lib/enums/modal-size-enum.d.ts +10 -0
- package/lib/enums/report-type.d.ts +7 -0
- package/lib/enums/status.d.ts +7 -0
- package/lib/enums/text-box-type.d.ts +5 -0
- package/lib/enums/tooltipPosition.enum.d.ts +6 -0
- package/lib/enums/tsi-component-enum.d.ts +37 -0
- package/lib/enums/type-import.d.ts +4 -0
- package/lib/functions/array.functions.d.ts +1 -0
- package/lib/functions/index.d.ts +1 -0
- package/lib/functions/modal-open.function.d.ts +9 -0
- package/lib/guards/admin.guard.d.ts +14 -0
- package/lib/guards/auth.guard.d.ts +12 -0
- package/lib/guards/index.d.ts +3 -0
- package/lib/guards/permission.guard.d.ts +2 -0
- package/lib/interfaces/configuration/configuration.d.ts +10 -0
- package/lib/interfaces/generic-form/generic-form.d.ts +45 -0
- package/lib/interfaces/generic-types/dictionary.d.ts +3 -0
- package/lib/interfaces/grid/grid-configuration.d.ts +116 -0
- package/lib/interfaces/index.d.ts +11 -0
- package/lib/interfaces/modal/dynamic.component.d.ts +18 -0
- package/lib/interfaces/modal/modal-size.d.ts +4 -0
- package/lib/interfaces/pagination/pagination-base.d.ts +46 -0
- package/lib/interfaces/select-list/combo-status-model.d.ts +8 -0
- package/lib/interfaces/settings/app-settings.d.ts +4 -0
- package/lib/interfaces/styles/css-size-property.d.ts +10 -0
- package/lib/interfaces/translation/translation.d.ts +10 -0
- package/lib/models/Notes/Note.d.ts +25 -0
- package/lib/models/application/configuration/endpoint-infos.d.ts +6 -0
- package/lib/models/application/configuration/entity-delete-behavior.d.ts +6 -0
- package/lib/models/authorization/authorization-token-mapper.d.ts +4 -0
- package/lib/models/authorization/authorization-token.d.ts +16 -0
- package/lib/models/common/component-descriminator.d.ts +4 -0
- package/lib/models/common/entity-properties.d.ts +5 -0
- package/lib/models/common/entity-validations.d.ts +7 -0
- package/lib/models/common/event-schema.d.ts +6 -0
- package/lib/models/common/key-value-pair.d.ts +4 -0
- package/lib/models/entity-info/entity-info.d.ts +37 -0
- package/lib/models/filter/filter-by-existing-values.d.ts +6 -0
- package/lib/models/filter/paged-result-request-base.d.ts +16 -0
- package/lib/models/filter/search-field.d.ts +35 -0
- package/lib/models/import-export/import-export.d.ts +28 -0
- package/lib/models/index.d.ts +37 -0
- package/lib/models/journalisation-application/journalisation-application.d.ts +39 -0
- package/lib/models/journalisation-application/status-history.d.ts +12 -0
- package/lib/models/layout/layout-config.d.ts +3 -0
- package/lib/models/modal/bs-modal.d.ts +5 -0
- package/lib/models/presentation-settings/presentation-settings.d.ts +14 -0
- package/lib/models/progress-bar/progress-bar-create-request.d.ts +8 -0
- package/lib/models/progress-bar/progress-bar-response.d.ts +10 -0
- package/lib/models/progress-bar/progress-bar-update-request.d.ts +9 -0
- package/lib/models/remote-services-utility/subscription-result.d.ts +15 -0
- package/lib/models/reporting/json-data-connection.d.ts +6 -0
- package/lib/models/reporting/optional-endpoints.d.ts +8 -0
- package/lib/models/reporting/report-template-response.d.ts +13 -0
- package/lib/models/reporting/report-to-edit-template.d.ts +29 -0
- package/lib/models/reporting/report-to-print.d.ts +18 -0
- package/lib/models/reporting/report-to-template.d.ts +19 -0
- package/lib/models/settings/devise.d.ts +9 -0
- package/lib/models/settings/fichier.d.ts +14 -0
- package/lib/models/settings/type-fichier.d.ts +4 -0
- package/lib/models/tsi-card/tsi-card.d.ts +9 -0
- package/lib/models/user-identity/login-response.d.ts +8 -0
- package/lib/models/user-identity/tenant.d.ts +5 -0
- package/lib/models/user-identity/user-identity.d.ts +5 -0
- package/lib/models/workflow/workflow.d.ts +36 -0
- package/lib/package-initializer.d.ts +1 -0
- package/lib/pipes/cut-label.pipe.d.ts +7 -0
- package/lib/pipes/index.d.ts +7 -0
- package/lib/pipes/localize.pipe.d.ts +11 -0
- package/lib/pipes/modal-label.pipe.d.ts +10 -0
- package/lib/pipes/shorten.pipe.d.ts +7 -0
- package/lib/pipes/to-number.pipe.d.ts +7 -0
- package/lib/pipes/tsi-currency.pipe.d.ts +10 -0
- package/lib/pipes/tsi-decimal.pipe.d.ts +7 -0
- package/lib/providers/index.d.ts +1 -0
- package/lib/providers/shared-ui-tsi.provider.d.ts +8 -0
- package/lib/routes/admin.routes.d.ts +4 -0
- package/lib/routes/app.routes.d.ts +6 -0
- package/lib/routes/identity.routes.d.ts +3 -0
- package/lib/routes/index.d.ts +4 -0
- package/lib/routes/manage-reporting.routes.d.ts +4 -0
- package/lib/services/Component-Finder/tsi-component-finder.service.d.ts +10 -0
- package/lib/services/Import-Export/modele-import.service.d.ts +21 -0
- package/lib/services/Note/Note.service.d.ts +15 -0
- package/lib/services/UserIdentity/identity-platform-authentication.service.d.ts +13 -0
- package/lib/services/UserIdentity/user-identity.service.d.ts +15 -0
- package/lib/services/application/api-explorer.service.d.ts +13 -0
- package/lib/services/application/app.layout.service.d.ts +47 -0
- package/lib/services/application/parametres-application-parambase.service.d.ts +10 -0
- package/lib/services/authorization/authorization.service.d.ts +46 -0
- package/lib/services/authorization/identity-manager.service.d.ts +23 -0
- package/lib/services/base/crud-base.service.d.ts +20 -0
- package/lib/services/configuration/entity-configuration.service.d.ts +22 -0
- package/lib/services/currentUser/currentUser.service.d.ts +26 -0
- package/lib/services/date-helper.service.d.ts +32 -0
- package/lib/services/dialog-data.service.d.ts +12 -0
- package/lib/services/fichier/fichier-upload.service.d.ts +15 -0
- package/lib/services/fichier/fichier.service.d.ts +10 -0
- package/lib/services/formula.service.d.ts +10 -0
- package/lib/services/generator/html-template-generator.service.d.ts +28 -0
- package/lib/services/index.d.ts +40 -0
- package/lib/services/journalisation/journalisation-application.service.d.ts +12 -0
- package/lib/services/journalisation/status-history.service.d.ts +12 -0
- package/lib/services/layout/layout-helper.service.d.ts +25 -0
- package/lib/services/modal/tsi-bs-modal.service.d.ts +16 -0
- package/lib/services/modal/tsi-modal.service.d.ts +9 -0
- package/lib/services/module-code/module-code.service.d.ts +18 -0
- package/lib/services/module-main-parameter.service.d.ts +12 -0
- package/lib/services/notification/error-response-manager.service.d.ts +13 -0
- package/lib/services/notification/tsi-confirmation.service.d.ts +11 -0
- package/lib/services/notification/tsi-message.service.d.ts +13 -0
- package/lib/services/notification/tsi-notification.service.d.ts +18 -0
- package/lib/services/presentation-setting/presentation-designer-base.service.d.ts +14 -0
- package/lib/services/presentation-setting/presentation-designer.service.d.ts +19 -0
- package/lib/services/presentation-setting/presentation-setting.service.d.ts +16 -0
- package/lib/services/progress-bar/progress-bar-helper.service.d.ts +19 -0
- package/lib/services/progress-bar/progress-bar.service.d.ts +16 -0
- package/lib/services/record-info-popup.service.d.ts +10 -0
- package/lib/services/reporting/dashboard-module.service.d.ts +11 -0
- package/lib/services/reporting/reporting.service.d.ts +32 -0
- package/lib/services/settings/app-settings.service.d.ts +13 -0
- package/lib/services/settings/keyboard-shortcut.service.d.ts +9 -0
- package/lib/services/status/entityStatus.service.d.ts +11 -0
- package/lib/services/translation/translation.service.d.ts +20 -0
- package/lib/services/validation/entity-validations.service.d.ts +10 -0
- package/lib/services/validation/generic-validation-state.service.d.ts +15 -0
- package/lib/services/validation/input-registry.service.d.ts +11 -0
- package/lib/services/workflow/workflow-configuration.service.d.ts +28 -0
- package/lib/shared.module.d.ts +141 -0
- package/lib/tsi-base/components/app-base/app-base.component.d.ts +28 -0
- package/lib/tsi-base/components/tsi-base/tsi-base.component.d.ts +11 -0
- package/lib/tsi-base/components/tsi-form-base/tsi-form-base.component.d.ts +118 -0
- package/lib/tsi-base/components/tsi-list-base/tsi-list-base.component.d.ts +85 -0
- package/lib/tsi-base/index.d.ts +5 -0
- package/lib/tsi-base/tsi-input-base/tsi-input-base.component.d.ts +34 -0
- package/lib/tsi-components/alert-import-message/alert-import-message.component.d.ts +10 -0
- package/lib/tsi-components/button-components/Tsi-Submit-Button/tsi-submit-button.component.d.ts +16 -0
- package/lib/tsi-components/button-components/tsi-button/tsi-button.component.d.ts +26 -0
- package/lib/tsi-components/create-or-edit-entity-informations/create-or-edit-entity-informations.component.d.ts +31 -0
- package/lib/tsi-components/create-or-edit-modele-import/create-or-edit-modele-import.component.d.ts +52 -0
- package/lib/tsi-components/index.d.ts +79 -0
- package/lib/tsi-components/input-components/editable-grid/editable-grid.component.d.ts +127 -0
- package/lib/tsi-components/input-components/tsi-checkbox/tsi-checkbox.component.d.ts +30 -0
- package/lib/tsi-components/input-components/tsi-currency-other-input/tsi-currency-other-input.component.d.ts +18 -0
- package/lib/tsi-components/input-components/tsi-currency-societe-input/tsi-currency-societe-input.component.d.ts +21 -0
- package/lib/tsi-components/input-components/tsi-date-picker/tsi-date-picker.component.d.ts +38 -0
- package/lib/tsi-components/input-components/tsi-decimal-input/tsi-decimal-input.component.d.ts +14 -0
- package/lib/tsi-components/input-components/tsi-file-manager/tsi-file-manager.component.d.ts +45 -0
- package/lib/tsi-components/input-components/tsi-formula-box/tsi-formula-box.component.d.ts +17 -0
- package/lib/tsi-components/input-components/tsi-integer/tsi-integer.component.d.ts +19 -0
- package/lib/tsi-components/input-components/tsi-radio-button/tsi-radio-button.component.d.ts +16 -0
- package/lib/tsi-components/input-components/tsi-rate-input/tsi-rate-input.component.d.ts +16 -0
- package/lib/tsi-components/input-components/tsi-search-combo/tsi-search-combo.component.d.ts +92 -0
- package/lib/tsi-components/input-components/tsi-text-area/tsi-text-area.component.d.ts +17 -0
- package/lib/tsi-components/input-components/tsi-text-box/tsi-text-box.component.d.ts +21 -0
- package/lib/tsi-components/input-components/tsi-time-picker/tsi-time-picker.component.d.ts +23 -0
- package/lib/tsi-components/logout-popup/logout-popup.component.d.ts +5 -0
- package/lib/tsi-components/manage-import-export/manage-import-export.component.d.ts +64 -0
- package/lib/tsi-components/manage-reporting/add-report-popup/add-report-popup.component.d.ts +151 -0
- package/lib/tsi-components/manage-reporting/manage-reporting.component.d.ts +109 -0
- package/lib/tsi-components/message-components/tsi-error-message/tsi-error-message.component.d.ts +15 -0
- package/lib/tsi-components/message-components/tsi-info-message/tsi-info-message.component.d.ts +13 -0
- package/lib/tsi-components/message-components/tsi-redirection-message/tsi-redirection-message.component.d.ts +9 -0
- package/lib/tsi-components/message-components/tsi-success-message/tsi-success-message.component.d.ts +13 -0
- package/lib/tsi-components/modal-component/modal.component.d.ts +25 -0
- package/lib/tsi-components/modal-loader/modal-loader.component.d.ts +27 -0
- package/lib/tsi-components/output-components/display-nested-prop/display-nested-prop.component.d.ts +14 -0
- package/lib/tsi-components/output-components/tsi-checkbox-display/tsi-checkbox-display.component.d.ts +6 -0
- package/lib/tsi-components/output-components/tsi-currency-other-display/tsi-currency-other-display.component.d.ts +7 -0
- package/lib/tsi-components/output-components/tsi-currency-societe-display/tsi-currency-societe-display.component.d.ts +19 -0
- package/lib/tsi-components/output-components/tsi-date-display/tsi-date-display.component.d.ts +10 -0
- package/lib/tsi-components/output-components/tsi-decimal-display/tsi-decimal-display.component.d.ts +9 -0
- package/lib/tsi-components/output-components/tsi-display-grid/tsi-display-grid.component.d.ts +41 -0
- package/lib/tsi-components/output-components/tsi-generic-grid/tsi-generic-grid.component.d.ts +231 -0
- package/lib/tsi-components/output-components/tsi-image-display/tsi-image-display.component.d.ts +46 -0
- package/lib/tsi-components/output-components/tsi-integer-display/tsi-integer-display.component.d.ts +6 -0
- package/lib/tsi-components/output-components/tsi-label/tsi-label.component.d.ts +8 -0
- package/lib/tsi-components/output-components/tsi-label-legend/tsi-label-legend.component.d.ts +6 -0
- package/lib/tsi-components/output-components/tsi-legend/tsi-legend.component.d.ts +9 -0
- package/lib/tsi-components/output-components/tsi-paragraph/tsi-paragraph.component.d.ts +6 -0
- package/lib/tsi-components/output-components/tsi-rate-display/tsi-rate-display.component.d.ts +10 -0
- package/lib/tsi-components/output-components/tsi-time-display/tsi-time-display.component.d.ts +7 -0
- package/lib/tsi-components/output-components/tsi-view-grid/tsi-view-grid.component.d.ts +97 -0
- package/lib/tsi-components/reporting/reporting.component.d.ts +103 -0
- package/lib/tsi-components/spinner/spinner.component.d.ts +8 -0
- package/lib/tsi-components/tsi-bubble-info/tsi-bubble-info.component.d.ts +9 -0
- package/lib/tsi-components/tsi-calender/context-menu/context-menu.component.d.ts +25 -0
- package/lib/tsi-components/tsi-calender/tsi-calender.component.d.ts +50 -0
- package/lib/tsi-components/tsi-card/tsi-card.component.d.ts +25 -0
- package/lib/tsi-components/tsi-card-list/tsi-card-list.component.d.ts +35 -0
- package/lib/tsi-components/tsi-change-password/tsi-change-password.component.d.ts +21 -0
- package/lib/tsi-components/tsi-code-generator/tsi-code-generator.component.d.ts +23 -0
- package/lib/tsi-components/tsi-divider/tsi-divider.component.d.ts +6 -0
- package/lib/tsi-components/tsi-form/tsi-form.component.d.ts +91 -0
- package/lib/tsi-components/tsi-form-modal-footer/tsi-form-modal-footer.component.d.ts +8 -0
- package/lib/tsi-components/tsi-generic-crud/tsi-generic-crud.component.d.ts +156 -0
- package/lib/tsi-components/tsi-generic-form/tsi-generic-form.component.d.ts +28 -0
- package/lib/tsi-components/tsi-kanban/tsi-kanban.component.d.ts +68 -0
- package/lib/tsi-components/tsi-log-event-history/tsi-log-event-history.component.d.ts +35 -0
- package/lib/tsi-components/tsi-modal/tsi-modal.component.d.ts +10 -0
- package/lib/tsi-components/tsi-modal-footer/tsi-modal-footer.component.d.ts +38 -0
- package/lib/tsi-components/tsi-modal-header/tsi-modal-header.component.d.ts +19 -0
- package/lib/tsi-components/tsi-notes-avertir/tsi-notes-avertir.component.d.ts +13 -0
- package/lib/tsi-components/tsi-notes-createoredit/tsi-notes.component.d.ts +21 -0
- package/lib/tsi-components/tsi-notes-grid/tsi-notes-grid.component.d.ts +12 -0
- package/lib/tsi-components/tsi-popup-text-viewer/tsi-popup-text-viewer.component.d.ts +41 -0
- package/lib/tsi-components/tsi-progress-bar/tsi-progress-bar.component.d.ts +38 -0
- package/lib/tsi-components/tsi-search-box/tsi-search-box.component.d.ts +44 -0
- package/lib/tsi-components/tsi-send-mail/tsi-send-mail.component.d.ts +21 -0
- package/lib/tsi-components/tsi-tab-panel/tsi-tab-panel.component.d.ts +18 -0
- package/lib/tsi-components/tsi-tab-view/tsi-tab-view.component.d.ts +17 -0
- package/lib/tsi-components/tsi-tenants/tsi-tenants.component.d.ts +39 -0
- package/lib/tsi-components/tsi-tooltip/tsi-tooltip.component.d.ts +9 -0
- package/lib/tsi-components/tsi-upload-fiche/tsi-upload-fiche.component.d.ts +35 -0
- package/lib/tsi-components/tsi-upload-grid/tsi-upload-grid.component.d.ts +13 -0
- package/lib/tsi-directives/auto-select.directive.d.ts +9 -0
- package/lib/tsi-directives/busy.directive.d.ts +11 -0
- package/lib/tsi-directives/dynamic-component-loader/ad.directive.d.ts +8 -0
- package/lib/tsi-directives/index.d.ts +7 -0
- package/lib/tsi-directives/module-main-parameter.directive.d.ts +8 -0
- package/lib/tsi-directives/presentation-designer-base.directive.d.ts +41 -0
- package/lib/tsi-directives/presentation-designer.directive.d.ts +37 -0
- package/lib/tsi-directives/validation.directive.d.ts +18 -0
- package/lib/tsi-helpers/compoent-reference.helper.d.ts +5 -0
- package/lib/tsi-helpers/date-helper.d.ts +6 -0
- package/lib/tsi-helpers/export-excel.helper.d.ts +5 -0
- package/lib/tsi-helpers/filter-helper.d.ts +12 -0
- package/lib/tsi-helpers/grid-col-style.helper.d.ts +5 -0
- package/lib/tsi-helpers/guid.helper.d.ts +6 -0
- package/lib/tsi-helpers/helpers.d.ts +4 -0
- package/lib/tsi-helpers/index.d.ts +12 -0
- package/lib/tsi-helpers/mapping-helper.d.ts +5 -0
- package/lib/tsi-helpers/object.helper.d.ts +3 -0
- package/lib/tsi-helpers/primeng-translate-config.d.ts +54 -0
- package/lib/tsi-helpers/storage-manager.d.ts +8 -0
- package/lib/tsi-helpers/type-registry.helper.d.ts +34 -0
- package/lib/types/enum-description.type.d.ts +3 -0
- package/lib/types/index.d.ts +2 -0
- package/lib/types/time-only.d.ts +17 -0
- package/package.json +24 -0
- package/public-api.d.ts +17 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { TsiFormComponentBaseComponent } from '../../tsi-base/components/tsi-form-base/tsi-form-base.component';
|
|
3
|
+
import { LocalizationKeys } from '../../consts/localization-key';
|
|
4
|
+
import { InputTypes, Modes } from '../../enums';
|
|
5
|
+
import { EntityInfoWithRelations, UpdateEntityInfoWithRelationsRequest } from '../../models';
|
|
6
|
+
import { TypeRegistryHelper } from '../../tsi-helpers';
|
|
7
|
+
import { appProviders } from '../../consts/app-providers';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../../services";
|
|
10
|
+
import * as i2 from "primeng/dynamicdialog";
|
|
11
|
+
import * as i3 from "@angular/forms";
|
|
12
|
+
import * as i4 from "primeng/tabview";
|
|
13
|
+
import * as i5 from "primeng/multiselect";
|
|
14
|
+
import * as i6 from "../input-components/editable-grid/editable-grid.component";
|
|
15
|
+
import * as i7 from "../input-components/tsi-search-combo/tsi-search-combo.component";
|
|
16
|
+
import * as i8 from "../input-components/tsi-checkbox/tsi-checkbox.component";
|
|
17
|
+
import * as i9 from "../input-components/tsi-text-box/tsi-text-box.component";
|
|
18
|
+
import * as i10 from "../output-components/tsi-label/tsi-label.component";
|
|
19
|
+
import * as i11 from "../output-components/tsi-view-grid/tsi-view-grid.component";
|
|
20
|
+
import * as i12 from "../tsi-modal-footer/tsi-modal-footer.component";
|
|
21
|
+
import * as i13 from "../tsi-modal-header/tsi-modal-header.component";
|
|
22
|
+
import * as i14 from "../tsi-form/tsi-form.component";
|
|
23
|
+
import * as i15 from "../../pipes/localize.pipe";
|
|
24
|
+
import * as i16 from "../../pipes/modal-label.pipe";
|
|
25
|
+
export class CreateOrEditEntityInformationsComponent extends TsiFormComponentBaseComponent {
|
|
26
|
+
constructor(_entityInformationsService, _errorResponseManagerService, ref, config, _notificationService, _confirmationService, _apiExplorerService) {
|
|
27
|
+
super(ref, config);
|
|
28
|
+
this._entityInformationsService = _entityInformationsService;
|
|
29
|
+
this._errorResponseManagerService = _errorResponseManagerService;
|
|
30
|
+
this.ref = ref;
|
|
31
|
+
this.config = config;
|
|
32
|
+
this._notificationService = _notificationService;
|
|
33
|
+
this._confirmationService = _confirmationService;
|
|
34
|
+
this._apiExplorerService = _apiExplorerService;
|
|
35
|
+
this.entityWithRelations = new EntityInfoWithRelations();
|
|
36
|
+
this.keyColumnOptions = [];
|
|
37
|
+
this.endpointInfos = [];
|
|
38
|
+
this.componentsOptions = TypeRegistryHelper.getBusinessComponentList();
|
|
39
|
+
this.permissionsGridColumns = [
|
|
40
|
+
{ header: 'administration_permissions_httpMethod', field: 'httpMethod' },
|
|
41
|
+
{ header: 'administration_permissions_route', field: 'route' },
|
|
42
|
+
{ header: 'administration_permissions_accessRights', field: 'accessRights' },
|
|
43
|
+
{ header: 'administration_permissions_methodName', field: 'methodName' }
|
|
44
|
+
];
|
|
45
|
+
this.entitiesRelationsColumns = [
|
|
46
|
+
{ header: 'administration_entityRelations_entityFrom', field: 'entityFrom', disabled: true },
|
|
47
|
+
{ header: 'administration_entityRelations_entityTo', field: 'entityTo' },
|
|
48
|
+
{ header: 'administration_entityRelations_logCascade', field: 'logCascade', type: InputTypes.CHECKBOX },
|
|
49
|
+
{ header: 'administration_entityRelations_duplicateCascade', field: 'duplicateCascade', type: InputTypes.CHECKBOX },
|
|
50
|
+
{ header: 'administration_entityRelations_deleteBehaviour', field: 'deleteBehaviour' }
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
getColonnesByClassNameAsKeyValuePair(className) {
|
|
54
|
+
if (className) {
|
|
55
|
+
this._entityInformationsService.getColonnesByClassNameAsKeyValuePair(className)
|
|
56
|
+
.subscribe(columns => {
|
|
57
|
+
this.keyColumnOptions = columns;
|
|
58
|
+
this.entityWithRelations.relations.map(er => er.entityFrom = className);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
getPermissionsByClassName() {
|
|
63
|
+
if (this.id) {
|
|
64
|
+
this._apiExplorerService.getEndpointsInfos(this.id).subscribe({
|
|
65
|
+
next: (endpointsInfos) => {
|
|
66
|
+
if (endpointsInfos && Array.isArray(endpointsInfos) && endpointsInfos.length > 0) {
|
|
67
|
+
this.endpointInfos = endpointsInfos;
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
error: (error) => {
|
|
71
|
+
console.error('Error fetching permissions:', error);
|
|
72
|
+
this._errorResponseManagerService.showErrorMessage(error);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
ngOnInit() {
|
|
78
|
+
super.ngOnInit();
|
|
79
|
+
this.getColonnesByClassNameAsKeyValuePair(this.id);
|
|
80
|
+
this.getPermissionsByClassName();
|
|
81
|
+
if ((this.mode === Modes.edit || this.mode === Modes.delete || this.mode === Modes.consult) &&
|
|
82
|
+
this.id !== undefined &&
|
|
83
|
+
this.id !== null) {
|
|
84
|
+
this.isloading = true;
|
|
85
|
+
this._entityInformationsService.getEntityInformationsAndRelations(this.id).subscribe({
|
|
86
|
+
next: (data) => {
|
|
87
|
+
this.entityWithRelations = data;
|
|
88
|
+
},
|
|
89
|
+
error: (error) => {
|
|
90
|
+
console.error('Error fetching entityInformation:', error);
|
|
91
|
+
this._errorResponseManagerService.showErrorMessage(error);
|
|
92
|
+
},
|
|
93
|
+
complete: () => {
|
|
94
|
+
this.isloading = false;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
save() {
|
|
100
|
+
super.save();
|
|
101
|
+
this.saving = false;
|
|
102
|
+
this.isloading = true;
|
|
103
|
+
if (this.mode === Modes.create) {
|
|
104
|
+
this._entityInformationsService.create(this.entityWithRelations).subscribe({
|
|
105
|
+
next: () => {
|
|
106
|
+
this._notificationService.info(this.l(LocalizationKeys.savedSuccessfully));
|
|
107
|
+
this.hide(true);
|
|
108
|
+
this.onSave.emit();
|
|
109
|
+
},
|
|
110
|
+
error: (response) => {
|
|
111
|
+
this.saving = false;
|
|
112
|
+
this.isloading = false;
|
|
113
|
+
this._errorResponseManagerService.showErrorMessage(response);
|
|
114
|
+
},
|
|
115
|
+
complete: () => {
|
|
116
|
+
this.isloading = false;
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
else if (this.mode === Modes.edit
|
|
121
|
+
&& this.entityWithRelations
|
|
122
|
+
&& this.entityWithRelations.entity.className) {
|
|
123
|
+
let updateEntityInfoWithRelationsRequest = new UpdateEntityInfoWithRelationsRequest(this.id ?? '', this.entityWithRelations.entity, this.entityWithRelations.relations);
|
|
124
|
+
this._entityInformationsService.update(updateEntityInfoWithRelationsRequest).subscribe({
|
|
125
|
+
next: () => {
|
|
126
|
+
this._notificationService.info(this.l(LocalizationKeys.updatedSuccessfully));
|
|
127
|
+
this.hide(true);
|
|
128
|
+
this.onSave.emit();
|
|
129
|
+
},
|
|
130
|
+
error: (response) => {
|
|
131
|
+
this.saving = false;
|
|
132
|
+
this.isloading = false;
|
|
133
|
+
this._errorResponseManagerService.showErrorMessage(response);
|
|
134
|
+
},
|
|
135
|
+
complete: () => {
|
|
136
|
+
this.isloading = false;
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
else if (this.mode === Modes.delete) {
|
|
141
|
+
this._confirmationService.confirm(LocalizationKeys.confirmDelete, undefined, (result) => {
|
|
142
|
+
if (result
|
|
143
|
+
&& this.entityWithRelations.entity.className) {
|
|
144
|
+
this._entityInformationsService.delete(this.id ?? '').subscribe({
|
|
145
|
+
next: () => {
|
|
146
|
+
this._notificationService.success(this.l(LocalizationKeys.deletedSuccessfully));
|
|
147
|
+
this.hide(true);
|
|
148
|
+
this.onSave.emit();
|
|
149
|
+
},
|
|
150
|
+
error: (response) => {
|
|
151
|
+
this._errorResponseManagerService.showErrorMessage(response);
|
|
152
|
+
this.saving = false;
|
|
153
|
+
this.isloading = false;
|
|
154
|
+
},
|
|
155
|
+
complete: () => {
|
|
156
|
+
this.isloading = false;
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
onAddRelation() {
|
|
164
|
+
this.entityWithRelations.relations.map(er => er.entityFrom = this.entityWithRelations.entity.className ?? '');
|
|
165
|
+
}
|
|
166
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditEntityInformationsComponent, deps: [{ token: i1.EntityConfigurationService }, { token: i1.ErrorResponseManagerService }, { token: i2.DynamicDialogRef }, { token: i2.DynamicDialogConfig }, { token: i1.TsiNotificationService }, { token: i1.TsiConfirmationService }, { token: i1.ApiExplorerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
167
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditEntityInformationsComponent, selector: "app-create-or-edit-entity-informations", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'administration_entityRelations_title' | localize\"\r\n (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'administration_tab_entityInformation' | localize\">\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_className'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.className\"\r\n (inputFieldChange)=\"getColonnesByClassNameAsKeyValuePair($event)\"\r\n [disabled]=\"isDeleteMode() || isConsultMode() || isEditMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formName'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.formName\" id-field=\"key\" label-field=\"value\" [showClear]=\"true\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_listComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.listComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_logged'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'Logged'\" [(inputField)]=\"entityWithRelations.entity.logged\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_listRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ListRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.listRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'FormRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.formRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorPropertyName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorPropertyName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorPropertyName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorClassName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorClassName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_keyColumns'\"></Tsi-Label>\r\n <div class=\"col-8\">\r\n <p-multiSelect [options]=\"keyColumnOptions\" [(ngModel)]=\"entityWithRelations.entity.keyColumns\"\r\n optionValue=\"key\" optionLabel=\"value\" display=\"chip\" defaultLabel=\"Select columns\" [filter]=\"true\">\r\n </p-multiSelect>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusColumnName'\"></Tsi-Label>\r\n \r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.statusColumnName\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_isWorkflow'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'IsWorkflow'\"\r\n [(inputField)]=\"entityWithRelations.entity.isWorkflow\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_defaultStatus'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DefaultStatus'\"\r\n [(inputField)]=\"entityWithRelations.entity.defaultStatus\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusEnumName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'StatusEnumName'\"\r\n [(inputField)]=\"entityWithRelations.entity.statusEnumName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_advancedSearchComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.advancedSearchComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardHeaderPhotoColumn'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardHeaderPhotoColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardTitleColumn'\"></Tsi-Label>\r\n \r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardTitleColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardSubHeaderColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardSubHeaderColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardDescriptionColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardDescriptionColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_relations' | localize\">\r\n <div class=\"grid\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"entitiesRelationsColumns\" [gridData]=\"entityWithRelations.relations\"\r\n [parent]=\"this\" (addedRowEventEmitter)=\"onAddRelation()\" [showAddButton]=\"isEditMode()\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_permissions' | localize\">\r\n <div class=\"grid\">\r\n <tsi-view-grid [header]=\"entityWithRelations.entity.className ?? ''\" class=\"col-12 mb-3\"\r\n [columns]=\"permissionsGridColumns\" [getDataFromApi]=\"false\" [gridData]=\"endpointInfos\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n <Tsi-Modal-Footer [isConsult]=\"isConsultMode()\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\">\r\n </Tsi-Modal-Footer>\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i4.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }, { kind: "component", type: i5.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i6.EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "events", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "disabled", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked"] }, { kind: "component", type: i7.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "currentRowItem", "datasource", "bind", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick"] }, { kind: "component", type: i8.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i9.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i10.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i11.TsiViewGridComponent, selector: "tsi-view-grid", inputs: ["columns", "gridConfiguration", "viewComponent", "crudService", "header", "modalSize", "showConsultButton", "showSearchField", "searchFields", "formEndpoint", "formName", "id", "showImportExportButton", "getDataFromApi", "gridData", "isSearchButtonDisabled", "selectKeyOnly", "selectionMode", "selectedItems", "key", "showGlobalSearch", "showExportButton", "showCalenderView", "calenderSchema", "showHeaderFilters", "showFilterButton", "selectAll", "checkedByField", "searchOnInit"], outputs: ["summariesChange", "selectedItemsChange", "buttonColumnClicked", "searchFieldsValueChanged", "getAllPagedResultChanged"] }, { kind: "component", type: i12.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate"], outputs: ["onCancelClick", "onSaveClick"] }, { kind: "component", type: i13.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: i14.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: i15.LocalizePipe, name: "localize" }, { kind: "pipe", type: i16.ModalLabelPipe, name: "modalLabel" }] }); }
|
|
168
|
+
}
|
|
169
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditEntityInformationsComponent, decorators: [{
|
|
170
|
+
type: Component,
|
|
171
|
+
args: [{ selector: 'app-create-or-edit-entity-informations', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" autocomplete=\"off\" (onSubmit)=\"save()\" [isLoading]=\"isloading\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'administration_entityRelations_title' | localize\"\r\n (onCloseClick)=\"hide()\">\r\n </Tsi-Modal-Header>\r\n\r\n <p-tabView>\r\n <p-tabPanel [header]=\"'administration_tab_entityInformation' | localize\">\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_className'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.className\"\r\n (inputFieldChange)=\"getColonnesByClassNameAsKeyValuePair($event)\"\r\n [disabled]=\"isDeleteMode() || isConsultMode() || isEditMode()\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formName'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.formName\" id-field=\"key\" label-field=\"value\" [showClear]=\"true\"\r\n [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_listComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.listComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_logged'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'Logged'\" [(inputField)]=\"entityWithRelations.entity.logged\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_listRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'ListRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.listRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\" [labelValue]=\"'administration_gestionEntityInformation_formRoute'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'FormRoute'\"\r\n [(inputField)]=\"entityWithRelations.entity.formRoute\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorPropertyName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorPropertyName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorPropertyName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_discriminatorClassName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DiscriminatorClassName'\"\r\n [(inputField)]=\"entityWithRelations.entity.discriminatorClassName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_keyColumns'\"></Tsi-Label>\r\n <div class=\"col-8\">\r\n <p-multiSelect [options]=\"keyColumnOptions\" [(ngModel)]=\"entityWithRelations.entity.keyColumns\"\r\n optionValue=\"key\" optionLabel=\"value\" display=\"chip\" defaultLabel=\"Select columns\" [filter]=\"true\">\r\n </p-multiSelect>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusColumnName'\"></Tsi-Label>\r\n \r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.statusColumnName\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_isWorkflow'\"></Tsi-Label>\r\n <Tsi-CheckBox class=\"col-8\" [inputName]=\"'IsWorkflow'\"\r\n [(inputField)]=\"entityWithRelations.entity.isWorkflow\">\r\n </Tsi-CheckBox>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_defaultStatus'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'DefaultStatus'\"\r\n [(inputField)]=\"entityWithRelations.entity.defaultStatus\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_statusEnumName'\"></Tsi-Label>\r\n <Tsi-Text-Box class=\"col-8\" [inputName]=\"'StatusEnumName'\"\r\n [(inputField)]=\"entityWithRelations.entity.statusEnumName\">\r\n </Tsi-Text-Box>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-6\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-4\"\r\n [labelValue]=\"'administration_gestionEntityInformation_advancedSearchComponent'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-8\" [datasource]=\"componentsOptions\"\r\n [(bind)]=\"entityWithRelations.entity.advancedSearchComponent\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"grid\">\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardHeaderPhotoColumn'\"></Tsi-Label>\r\n\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardHeaderPhotoColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardTitleColumn'\"></Tsi-Label>\r\n \r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardTitleColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-6\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardSubHeaderColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardSubHeaderColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"grid\">\r\n <div class=\"col-12\">\r\n <div class=\"grid\">\r\n <Tsi-Label class=\"col-2\"\r\n [labelValue]=\"'administration_gestionEntityInformation_cardDescriptionColumn'\"></Tsi-Label>\r\n <Tsi-Search-Combo class=\"col-6\" [datasource]=\"keyColumnOptions\"\r\n [(bind)]=\"entityWithRelations.entity.cardDescriptionColumn\" id-field=\"key\" label-field=\"value\"\r\n [showClear]=\"true\" [disabled]=\"isDeleteMode() || isConsultMode()\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </fieldset>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_relations' | localize\">\r\n <div class=\"grid\">\r\n <Tsi-Generic-Editable-Grid [columns]=\"entitiesRelationsColumns\" [gridData]=\"entityWithRelations.relations\"\r\n [parent]=\"this\" (addedRowEventEmitter)=\"onAddRelation()\" [showAddButton]=\"isEditMode()\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n </p-tabPanel>\r\n <p-tabPanel [header]=\"'administration_tab_permissions' | localize\">\r\n <div class=\"grid\">\r\n <tsi-view-grid [header]=\"entityWithRelations.entity.className ?? ''\" class=\"col-12 mb-3\"\r\n [columns]=\"permissionsGridColumns\" [getDataFromApi]=\"false\" [gridData]=\"endpointInfos\">\r\n </tsi-view-grid>\r\n </div>\r\n </p-tabPanel>\r\n </p-tabView>\r\n <Tsi-Modal-Footer [isConsult]=\"isConsultMode()\" [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\"\r\n (onCancelClick)=\"hide()\">\r\n </Tsi-Modal-Footer>\r\n</tsi-form>" }]
|
|
172
|
+
}], ctorParameters: () => [{ type: i1.EntityConfigurationService }, { type: i1.ErrorResponseManagerService }, { type: i2.DynamicDialogRef }, { type: i2.DynamicDialogConfig }, { type: i1.TsiNotificationService }, { type: i1.TsiConfirmationService }, { type: i1.ApiExplorerService }] });
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLWVkaXQtZW50aXR5LWluZm9ybWF0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvY3JlYXRlLW9yLWVkaXQtZW50aXR5LWluZm9ybWF0aW9ucy9jcmVhdGUtb3ItZWRpdC1lbnRpdHktaW5mb3JtYXRpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9jcmVhdGUtb3ItZWRpdC1lbnRpdHktaW5mb3JtYXRpb25zL2NyZWF0ZS1vci1lZGl0LWVudGl0eS1pbmZvcm1hdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUNoSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVMUQsTUFBTSxPQUFPLHVDQUF3QyxTQUFRLDZCQUE2QjtJQXNCeEYsWUFDUywwQkFBc0QsRUFDckQsNEJBQXlELEVBQ2pELEdBQXFCLEVBQ3JCLE1BQTJCLEVBQ25DLG9CQUE0QyxFQUM1QyxvQkFBNEMsRUFDNUMsbUJBQXVDO1FBQy9DLEtB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QUFJLEVBQUUsR0FBRyxFQUFFOzRCQUNULElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7NEJBQ2hGLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ3JCLENBQUM7d0JBQ0QsS0FBSyxFQUFFLENBQUMsUUFBMkIsRUFBRSxFQUFFOzRCQUNyQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7NEJBQzdELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDOzRCQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzt3QkFDekIsQ0FBQzt3QkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFOzRCQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO3dCQUN6QixDQUFDO3FCQUNGLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUNELGFBQWE7UUFDWCxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEgsQ0FBQzsrR0EvSlUsdUNBQXVDO21HQUF2Qyx1Q0FBdUMsaUVBRnZDLENBQUMsR0FBRyxZQUFZLENBQUMsaURDbkI5Qiw4c1hBcU9XOzs0RkRoTkUsdUNBQXVDO2tCQU5uRCxTQUFTOytCQUNFLHdDQUF3QyxhQUd2QyxDQUFDLEdBQUcsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRzaUZvcm1Db21wb25lbnRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdHNpLWJhc2UvY29tcG9uZW50cy90c2ktZm9ybS1iYXNlL3RzaS1mb3JtLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uS2V5cyB9IGZyb20gJy4uLy4uL2NvbnN0cy9sb2NhbGl6YXRpb24ta2V5JztcclxuaW1wb3J0IHsgSW5wdXRUeXBlcywgTW9kZXMgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcbmltcG9ydCB7IEdyaWRDb2x1bW4gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgRW50aXR5SW5mb1dpdGhSZWxhdGlvbnMsIFVwZGF0ZUVudGl0eUluZm9XaXRoUmVsYXRpb25zUmVxdWVzdCB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEVudGl0eUNvbmZpZ3VyYXRpb25TZXJ2aWNlLCBFcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2UsIFRzaU5vdGlmaWNhdGlvblNlcnZpY2UsIFRzaUNvbmZpcm1hdGlvblNlcnZpY2UsIEFwaUV4cGxvcmVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgVHlwZVJlZ2lzdHJ5SGVscGVyIH0gZnJvbSAnLi4vLi4vdHNpLWhlbHBlcnMnO1xyXG5pbXBvcnQgeyBFbmRwb2ludEluZm9zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uL2NvbmZpZ3VyYXRpb24vZW5kcG9pbnQtaW5mb3MnO1xyXG5pbXBvcnQgeyBhcHBQcm92aWRlcnMgfSBmcm9tICcuLi8uLi9jb25zdHMvYXBwLXByb3ZpZGVycyc7XHJcbmltcG9ydCB7IER5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWYgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNyZWF0ZS1vci1lZGl0LWVudGl0eS1pbmZvcm1hdGlvbnMnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtb3ItZWRpdC1lbnRpdHktaW5mb3JtYXRpb25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vY3JlYXRlLW9yLWVkaXQtZW50aXR5LWluZm9ybWF0aW9ucy5jb21wb25lbnQuc2NzcycsXHJcbiAgcHJvdmlkZXJzOiBbLi4uYXBwUHJvdmlkZXJzXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlT3JFZGl0RW50aXR5SW5mb3JtYXRpb25zQ29tcG9uZW50IGV4dGVuZHMgVHNpRm9ybUNvbXBvbmVudEJhc2VDb21wb25lbnQge1xyXG4gIGVudGl0eVdpdGhSZWxhdGlvbnM6IEVudGl0eUluZm9XaXRoUmVsYXRpb25zID0gbmV3IEVudGl0eUluZm9XaXRoUmVsYXRpb25zKCk7XHJcbiAga2V5Q29sdW1uT3B0aW9uczogS2V5VmFsdWU8c3RyaW5nLCBzdHJpbmc+W10gPSBbXTtcclxuICBlbmRwb2ludEluZm9zOiBFbmRwb2ludEluZm9zW10gPSBbXTtcclxuICBjb21wb25lbnRzT3B0aW9uczogS2V5VmFsdWU8c3RyaW5nLCBzdHJpbmc+W10gPSBUeXBlUmVnaXN0cnlIZWxwZXIuZ2V0QnVzaW5lc3NDb21wb25lbnRMaXN0KCk7XHJcblxyXG5cclxuICBwZXJtaXNzaW9uc0dyaWRDb2x1bW5zOiBBcnJheTxHcmlkQ29sdW1uPiA9IFtcclxuICAgIHsgaGVhZGVyOiAnYWRtaW5pc3RyYXRpb25fcGVybWlzc2lvbnNfaHR0cE1ldGhvZCcsIGZpZWxkOiAnaHR0cE1ldGhvZCcgfSxcclxuICAgIHsgaGVhZGVyOiAnYWRtaW5pc3RyYXRpb25fcGVybWlzc2lvbnNfcm91dGUnLCBmaWVsZDogJ3JvdXRlJyB9LFxyXG4gICAgeyBoZWFkZXI6ICdhZG1pbmlzdHJhdGlvbl9wZXJtaXNzaW9uc19hY2Nlc3NSaWdodHMnLCBmaWVsZDogJ2FjY2Vzc1JpZ2h0cycgfSxcclxuICAgIHsgaGVhZGVyOiAnYWRtaW5pc3RyYXRpb25fcGVybWlzc2lvbnNfbWV0aG9kTmFtZScsIGZpZWxkOiAnbWV0aG9kTmFtZScgfVxyXG4gIF07XHJcblxyXG5cclxuICBlbnRpdGllc1JlbGF0aW9uc0NvbHVtbnM6IEFycmF5PEdyaWRDb2x1bW4+ID0gW1xyXG4gICAgeyBoZWFkZXI6ICdhZG1pbmlzdHJhdGlvbl9lbnRpdHlSZWxhdGlvbnNfZW50aXR5RnJvbScsIGZpZWxkOiAnZW50aXR5RnJvbScsIGRpc2FibGVkOiB0cnVlIH0sXHJcbiAgICB7IGhlYWRlcjogJ2FkbWluaXN0cmF0aW9uX2VudGl0eVJlbGF0aW9uc19lbnRpdHlUbycsIGZpZWxkOiAnZW50aXR5VG8nIH0sXHJcbiAgICB7IGhlYWRlcjogJ2FkbWluaXN0cmF0aW9uX2VudGl0eVJlbGF0aW9uc19sb2dDYXNjYWRlJywgZmllbGQ6ICdsb2dDYXNjYWRlJywgdHlwZTogSW5wdXRUeXBlcy5DSEVDS0JPWCB9LFxyXG4gICAgeyBoZWFkZXI6ICdhZG1pbmlzdHJhdGlvbl9lbnRpdHlSZWxhdGlvbnNfZHVwbGljYXRlQ2FzY2FkZScsIGZpZWxkOiAnZHVwbGljYXRlQ2FzY2FkZScsIHR5cGU6IElucHV0VHlwZXMuQ0hFQ0tCT1ggfSxcclxuICAgIHsgaGVhZGVyOiAnYWRtaW5pc3RyYXRpb25fZW50aXR5UmVsYXRpb25zX2RlbGV0ZUJlaGF2aW91cicsIGZpZWxkOiAnZGVsZXRlQmVoYXZpb3VyJyB9XHJcbiAgXVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIF9lbnRpdHlJbmZvcm1hdGlvbnNTZXJ2aWNlOiBFbnRpdHlDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIHJlZjogRHluYW1pY0RpYWxvZ1JlZixcclxuICAgIHB1YmxpYyBvdmVycmlkZSBjb25maWc6IER5bmFtaWNEaWFsb2dDb25maWcsXHJcbiAgICBwcml2YXRlIF9ub3RpZmljYXRpb25TZXJ2aWNlOiBUc2lOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfY29uZmlybWF0aW9uU2VydmljZTogVHNpQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2FwaUV4cGxvcmVyU2VydmljZTogQXBpRXhwbG9yZXJTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihyZWYsIGNvbmZpZyk7XHJcbiAgfVxyXG5cclxuICBnZXRDb2xvbm5lc0J5Q2xhc3NOYW1lQXNLZXlWYWx1ZVBhaXIoY2xhc3NOYW1lPzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoY2xhc3NOYW1lKSB7XHJcbiAgICAgIHRoaXMuX2VudGl0eUluZm9ybWF0aW9uc1NlcnZpY2UuZ2V0Q29sb25uZXNCeUNsYXNzTmFtZUFzS2V5VmFsdWVQYWlyKGNsYXNzTmFtZSlcclxuICAgICAgICAuc3Vic2NyaWJlKGNvbHVtbnMgPT4ge1xyXG4gICAgICAgICAgdGhpcy5rZXlDb2x1bW5PcHRpb25zID0gY29sdW1ucztcclxuICAgICAgICAgIHRoaXMuZW50aXR5V2l0aFJlbGF0aW9ucy5yZWxhdGlvbnMubWFwKGVyID0+IGVyLmVudGl0eUZyb20gPSBjbGFzc05hbWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRQZXJtaXNzaW9uc0J5Q2xhc3NOYW1lKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaWQpIHtcclxuICAgICAgdGhpcy5fYXBpRXhwbG9yZXJTZXJ2aWNlLmdldEVuZHBvaW50c0luZm9zKHRoaXMuaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGVuZHBvaW50c0luZm9zKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZW5kcG9pbnRzSW5mb3MgJiYgQXJyYXkuaXNBcnJheShlbmRwb2ludHNJbmZvcykgJiYgZW5kcG9pbnRzSW5mb3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmVuZHBvaW50SW5mb3MgPSBlbmRwb2ludHNJbmZvcztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHBlcm1pc3Npb25zOicsIGVycm9yKTtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLmdldENvbG9ubmVzQnlDbGFzc05hbWVBc0tleVZhbHVlUGFpcih0aGlzLmlkKTtcclxuICAgIHRoaXMuZ2V0UGVybWlzc2lvbnNCeUNsYXNzTmFtZSgpO1xyXG4gICAgaWYgKFxyXG4gICAgICAodGhpcy5tb2RlID09PSBNb2Rlcy5lZGl0IHx8IHRoaXMubW9kZSA9PT0gTW9kZXMuZGVsZXRlIHx8IHRoaXMubW9kZSA9PT0gTW9kZXMuY29uc3VsdCkgJiZcclxuICAgICAgdGhpcy5pZCAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIHRoaXMuaWQgIT09IG51bGxcclxuICAgICkge1xyXG4gICAgICB0aGlzLmlzbG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuX2VudGl0eUluZm9ybWF0aW9uc1NlcnZpY2UuZ2V0RW50aXR5SW5mb3JtYXRpb25zQW5kUmVsYXRpb25zKHRoaXMuaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgIHRoaXMuZW50aXR5V2l0aFJlbGF0aW9ucyA9IGRhdGE7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBlbnRpdHlJbmZvcm1hdGlvbjonLCBlcnJvcik7XHJcbiAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgc2F2ZSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLnNhdmUoKVxyXG4gICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNsb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5tb2RlID09PSBNb2Rlcy5jcmVhdGUpIHtcclxuICAgICAgdGhpcy5fZW50aXR5SW5mb3JtYXRpb25zU2VydmljZS5jcmVhdGUodGhpcy5lbnRpdHlXaXRoUmVsYXRpb25zKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UuaW5mbyh0aGlzLmwoTG9jYWxpemF0aW9uS2V5cy5zYXZlZFN1Y2Nlc3NmdWxseSkpO1xyXG4gICAgICAgICAgdGhpcy5oaWRlKHRydWUpO1xyXG4gICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBlbHNlIGlmIChcclxuICAgICAgdGhpcy5tb2RlID09PSBNb2Rlcy5lZGl0XHJcbiAgICAgICYmIHRoaXMuZW50aXR5V2l0aFJlbGF0aW9uc1xyXG4gICAgICAmJiB0aGlzLmVudGl0eVdpdGhSZWxhdGlvbnMuZW50aXR5LmNsYXNzTmFtZVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCB1cGRhdGVFbnRpdHlJbmZvV2l0aFJlbGF0aW9uc1JlcXVlc3QgPSBuZXcgVXBkYXRlRW50aXR5SW5mb1dpdGhSZWxhdGlvbnNSZXF1ZXN0KHRoaXMuaWQgPz8gJycsIHRoaXMuZW50aXR5V2l0aFJlbGF0aW9ucy5lbnRpdHksIHRoaXMuZW50aXR5V2l0aFJlbGF0aW9ucy5yZWxhdGlvbnMpO1xyXG4gICAgICB0aGlzLl9lbnRpdHlJbmZvcm1hdGlvbnNTZXJ2aWNlLnVwZGF0ZSh1cGRhdGVFbnRpdHlJbmZvV2l0aFJlbGF0aW9uc1JlcXVlc3QpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5pbmZvKHRoaXMubChMb2NhbGl6YXRpb25LZXlzLnVwZGF0ZWRTdWNjZXNzZnVsbHkpKTtcclxuICAgICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgICAgICAgIHRoaXMub25TYXZlLmVtaXQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZS5zaG93RXJyb3JNZXNzYWdlKHJlc3BvbnNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAodGhpcy5tb2RlID09PSBNb2Rlcy5kZWxldGUpIHtcclxuICAgICAgdGhpcy5fY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKFxyXG4gICAgICAgIExvY2FsaXphdGlvbktleXMuY29uZmlybURlbGV0ZSxcclxuICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICByZXN1bHRcclxuICAgICAgICAgICAgJiYgdGhpcy5lbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5jbGFzc05hbWVcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLl9lbnRpdHlJbmZvcm1hdGlvbnNTZXJ2aWNlLmRlbGV0ZSh0aGlzLmlkID8/ICcnKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2Vzcyh0aGlzLmwoTG9jYWxpemF0aW9uS2V5cy5kZWxldGVkU3VjY2Vzc2Z1bGx5KSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KCk7XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLnNob3dFcnJvck1lc3NhZ2UocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNsb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgb25BZGRSZWxhdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuZW50aXR5V2l0aFJlbGF0aW9ucy5yZWxhdGlvbnMubWFwKGVyID0+IGVyLmVudGl0eUZyb20gPSB0aGlzLmVudGl0eVdpdGhSZWxhdGlvbnMuZW50aXR5LmNsYXNzTmFtZSA/PyAnJyk7XHJcbiAgfVxyXG59IiwiPHRzaS1mb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKG9uU3VibWl0KT1cInNhdmUoKVwiIFtpc0xvYWRpbmddPVwiaXNsb2FkaW5nXCI+XHJcbiAgPFRzaS1Nb2RhbC1IZWFkZXIgW2lucHV0VGl0bGVdPVwiaGVhZGVyIHwgbW9kYWxMYWJlbCA6IG1vZGUgOiAnYWRtaW5pc3RyYXRpb25fZW50aXR5UmVsYXRpb25zX3RpdGxlJyB8IGxvY2FsaXplXCJcclxuICAgIChvbkNsb3NlQ2xpY2spPVwiaGlkZSgpXCI+XHJcbiAgPC9Uc2ktTW9kYWwtSGVhZGVyPlxyXG5cclxuICA8cC10YWJWaWV3PlxyXG4gICAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInYWRtaW5pc3RyYXRpb25fdGFiX2VudGl0eUluZm9ybWF0aW9uJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgIDxmaWVsZHNldCBbZGlzYWJsZWRdPVwiaXNEZWxldGVNb2RlKCkgfHwgaXNDb25zdWx0TW9kZSgpXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTRcIiBbbGFiZWxWYWx1ZV09XCInYWRtaW5pc3RyYXRpb25fZ2VzdGlvbkVudGl0eUluZm9ybWF0aW9uX2NsYXNzTmFtZSdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgIDxUc2ktVGV4dC1Cb3ggY2xhc3M9XCJjb2wtOFwiIFtpbnB1dE5hbWVdPVwiJ0NsYXNzTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImVudGl0eVdpdGhSZWxhdGlvbnMuZW50aXR5LmNsYXNzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIChpbnB1dEZpZWxkQ2hhbmdlKT1cImdldENvbG9ubmVzQnlDbGFzc05hbWVBc0tleVZhbHVlUGFpcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKSB8fCBpc0VkaXRNb2RlKClcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLVRleHQtQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTRcIiBbbGFiZWxWYWx1ZV09XCInYWRtaW5pc3RyYXRpb25fZ2VzdGlvbkVudGl0eUluZm9ybWF0aW9uX2Zvcm1OYW1lJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gY2xhc3M9XCJjb2wtOFwiIFtkYXRhc291cmNlXT1cImNvbXBvbmVudHNPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5mb3JtTmFtZVwiIGlkLWZpZWxkPVwia2V5XCIgbGFiZWwtZmllbGQ9XCJ2YWx1ZVwiIFtzaG93Q2xlYXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0RlbGV0ZU1vZGUoKSB8fCBpc0NvbnN1bHRNb2RlKClcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLVNlYXJjaC1Db21ibz5cclxuXHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBjbGFzcz1cImNvbC00XCJcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsVmFsdWVdPVwiJ2FkbWluaXN0cmF0aW9uX2dlc3Rpb25FbnRpdHlJbmZvcm1hdGlvbl9saXN0Q29tcG9uZW50J1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1TZWFyY2gtQ29tYm8gY2xhc3M9XCJjb2wtOFwiIFtkYXRhc291cmNlXT1cImNvbXBvbmVudHNPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5saXN0Q29tcG9uZW50XCIgaWQtZmllbGQ9XCJrZXlcIiBsYWJlbC1maWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBjbGFzcz1cImNvbC00XCIgW2xhYmVsVmFsdWVdPVwiJ2FkbWluaXN0cmF0aW9uX2dlc3Rpb25FbnRpdHlJbmZvcm1hdGlvbl9sb2dnZWQnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUNoZWNrQm94IGNsYXNzPVwiY29sLThcIiBbaW5wdXROYW1lXT1cIidMb2dnZWQnXCIgWyhpbnB1dEZpZWxkKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5sb2dnZWRcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLUNoZWNrQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtNFwiIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl9nZXN0aW9uRW50aXR5SW5mb3JtYXRpb25fbGlzdFJvdXRlJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBjbGFzcz1cImNvbC04XCIgW2lucHV0TmFtZV09XCInTGlzdFJvdXRlJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiZW50aXR5V2l0aFJlbGF0aW9ucy5lbnRpdHkubGlzdFJvdXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1UZXh0LUJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBjbGFzcz1cImNvbC00XCIgW2xhYmVsVmFsdWVdPVwiJ2FkbWluaXN0cmF0aW9uX2dlc3Rpb25FbnRpdHlJbmZvcm1hdGlvbl9mb3JtUm91dGUnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVRleHQtQm94IGNsYXNzPVwiY29sLThcIiBbaW5wdXROYW1lXT1cIidGb3JtUm91dGUnXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5mb3JtUm91dGVcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLVRleHQtQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtNFwiXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl9nZXN0aW9uRW50aXR5SW5mb3JtYXRpb25fZGlzY3JpbWluYXRvclByb3BlcnR5TmFtZSdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgIDxUc2ktVGV4dC1Cb3ggY2xhc3M9XCJjb2wtOFwiIFtpbnB1dE5hbWVdPVwiJ0Rpc2NyaW1pbmF0b3JQcm9wZXJ0eU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5kaXNjcmltaW5hdG9yUHJvcGVydHlOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1UZXh0LUJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZFwiPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1MYWJlbCBjbGFzcz1cImNvbC00XCJcclxuICAgICAgICAgICAgICAgICAgW2xhYmVsVmFsdWVdPVwiJ2FkbWluaXN0cmF0aW9uX2dlc3Rpb25FbnRpdHlJbmZvcm1hdGlvbl9kaXNjcmltaW5hdG9yQ2xhc3NOYW1lJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBjbGFzcz1cImNvbC04XCIgW2lucHV0TmFtZV09XCInRGlzY3JpbWluYXRvckNsYXNzTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICBbKGlucHV0RmllbGQpXT1cImVudGl0eVdpdGhSZWxhdGlvbnMuZW50aXR5LmRpc2NyaW1pbmF0b3JDbGFzc05hbWVcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLVRleHQtQm94PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtNFwiXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl9nZXN0aW9uRW50aXR5SW5mb3JtYXRpb25fa2V5Q29sdW1ucydcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOFwiPlxyXG4gICAgICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCBbb3B0aW9uc109XCJrZXlDb2x1bW5PcHRpb25zXCIgWyhuZ01vZGVsKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5rZXlDb2x1bW5zXCJcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25WYWx1ZT1cImtleVwiIG9wdGlvbkxhYmVsPVwidmFsdWVcIiBkaXNwbGF5PVwiY2hpcFwiIGRlZmF1bHRMYWJlbD1cIlNlbGVjdCBjb2x1bW5zXCIgW2ZpbHRlcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvcC1tdWx0aVNlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtNFwiXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl9nZXN0aW9uRW50aXR5SW5mb3JtYXRpb25fc3RhdHVzQ29sdW1uTmFtZSdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBjbGFzcz1cImNvbC02XCIgW2RhdGFzb3VyY2VdPVwia2V5Q29sdW1uT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgIFsoYmluZCldPVwiZW50aXR5V2l0aFJlbGF0aW9ucy5lbnRpdHkuc3RhdHVzQ29sdW1uTmFtZVwiIGlkLWZpZWxkPVwia2V5XCIgbGFiZWwtZmllbGQ9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwidHJ1ZVwiIFtkaXNhYmxlZF09XCJpc0RlbGV0ZU1vZGUoKSB8fCBpc0NvbnN1bHRNb2RlKClcIj5cclxuICAgICAgICAgICAgICAgIDwvVHNpLVNlYXJjaC1Db21ibz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTRcIlxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxWYWx1ZV09XCInYWRtaW5pc3RyYXRpb25fZ2VzdGlvbkVudGl0eUluZm9ybWF0aW9uX2lzV29ya2Zsb3cnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUNoZWNrQm94IGNsYXNzPVwiY29sLThcIiBbaW5wdXROYW1lXT1cIidJc1dvcmtmbG93J1wiXHJcbiAgICAgICAgICAgICAgICAgIFsoaW5wdXRGaWVsZCldPVwiZW50aXR5V2l0aFJlbGF0aW9ucy5lbnRpdHkuaXNXb3JrZmxvd1wiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtNFwiXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl9nZXN0aW9uRW50aXR5SW5mb3JtYXRpb25fZGVmYXVsdFN0YXR1cydcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgIDxUc2ktVGV4dC1Cb3ggY2xhc3M9XCJjb2wtOFwiIFtpbnB1dE5hbWVdPVwiJ0RlZmF1bHRTdGF0dXMnXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5kZWZhdWx0U3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1UZXh0LUJveD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTRcIlxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxWYWx1ZV09XCInYWRtaW5pc3RyYXRpb25fZ2VzdGlvbkVudGl0eUluZm9ybWF0aW9uX3N0YXR1c0VudW1OYW1lJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBjbGFzcz1cImNvbC04XCIgW2lucHV0TmFtZV09XCInU3RhdHVzRW51bU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgWyhpbnB1dEZpZWxkKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5zdGF0dXNFbnVtTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktVGV4dC1Cb3g+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtNFwiXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl9nZXN0aW9uRW50aXR5SW5mb3JtYXRpb25fYWR2YW5jZWRTZWFyY2hDb21wb25lbnQnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBjbGFzcz1cImNvbC04XCIgW2RhdGFzb3VyY2VdPVwiY29tcG9uZW50c09wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICBbKGJpbmQpXT1cImVudGl0eVdpdGhSZWxhdGlvbnMuZW50aXR5LmFkdmFuY2VkU2VhcmNoQ29tcG9uZW50XCIgaWQtZmllbGQ9XCJrZXlcIiBsYWJlbC1maWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTZcIlxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxWYWx1ZV09XCInYWRtaW5pc3RyYXRpb25fZ2VzdGlvbkVudGl0eUluZm9ybWF0aW9uX2NhcmRIZWFkZXJQaG90b0NvbHVtbidcIj48L1RzaS1MYWJlbD5cclxuXHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBjbGFzcz1cImNvbC02XCIgW2RhdGFzb3VyY2VdPVwia2V5Q29sdW1uT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgIFsoYmluZCldPVwiZW50aXR5V2l0aFJlbGF0aW9ucy5lbnRpdHkuY2FyZEhlYWRlclBob3RvQ29sdW1uXCIgaWQtZmllbGQ9XCJrZXlcIiBsYWJlbC1maWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTZcIlxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxWYWx1ZV09XCInYWRtaW5pc3RyYXRpb25fZ2VzdGlvbkVudGl0eUluZm9ybWF0aW9uX2NhcmRUaXRsZUNvbHVtbidcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICA8VHNpLVNlYXJjaC1Db21ibyBjbGFzcz1cImNvbC02XCIgW2RhdGFzb3VyY2VdPVwia2V5Q29sdW1uT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgIFsoYmluZCldPVwiZW50aXR5V2l0aFJlbGF0aW9ucy5lbnRpdHkuY2FyZFRpdGxlQ29sdW1uXCIgaWQtZmllbGQ9XCJrZXlcIiBsYWJlbC1maWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtNlwiXHJcbiAgICAgICAgICAgICAgICAgIFtsYWJlbFZhbHVlXT1cIidhZG1pbmlzdHJhdGlvbl9nZXN0aW9uRW50aXR5SW5mb3JtYXRpb25fY2FyZFN1YkhlYWRlckNvbHVtbidcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIGNsYXNzPVwiY29sLTZcIiBbZGF0YXNvdXJjZV09XCJrZXlDb2x1bW5PcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5jYXJkU3ViSGVhZGVyQ29sdW1uXCIgaWQtZmllbGQ9XCJrZXlcIiBsYWJlbC1maWVsZD1cInZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCIgW2Rpc2FibGVkXT1cImlzRGVsZXRlTW9kZSgpIHx8IGlzQ29uc3VsdE1vZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTJcIlxyXG4gICAgICAgICAgICAgICAgICBbbGFiZWxWYWx1ZV09XCInYWRtaW5pc3RyYXRpb25fZ2VzdGlvbkVudGl0eUluZm9ybWF0aW9uX2NhcmREZXNjcmlwdGlvbkNvbHVtbidcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIGNsYXNzPVwiY29sLTZcIiBbZGF0YXNvdXJjZV09XCJrZXlDb2x1bW5PcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgWyhiaW5kKV09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5jYXJkRGVzY3JpcHRpb25Db2x1bW5cIiBpZC1maWVsZD1cImtleVwiIGxhYmVsLWZpZWxkPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICBbc2hvd0NsZWFyXT1cInRydWVcIiBbZGlzYWJsZWRdPVwiaXNEZWxldGVNb2RlKCkgfHwgaXNDb25zdWx0TW9kZSgpXCI+XHJcbiAgICAgICAgICAgICAgICA8L1RzaS1TZWFyY2gtQ29tYm8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZmllbGRzZXQ+XHJcbiAgICA8L3AtdGFiUGFuZWw+XHJcbiAgICA8cC10YWJQYW5lbCBbaGVhZGVyXT1cIidhZG1pbmlzdHJhdGlvbl90YWJfcmVsYXRpb25zJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgPFRzaS1HZW5lcmljLUVkaXRhYmxlLUdyaWQgW2NvbHVtbnNdPVwiZW50aXRpZXNSZWxhdGlvbnNDb2x1bW5zXCIgW2dyaWREYXRhXT1cImVudGl0eVdpdGhSZWxhdGlvbnMucmVsYXRpb25zXCJcclxuICAgICAgICAgIFtwYXJlbnRdPVwidGhpc1wiIChhZGRlZFJvd0V2ZW50RW1pdHRlcik9XCJvbkFkZFJlbGF0aW9uKClcIiBbc2hvd0FkZEJ1dHRvbl09XCJpc0VkaXRNb2RlKClcIj5cclxuICAgICAgICA8L1RzaS1HZW5lcmljLUVkaXRhYmxlLUdyaWQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9wLXRhYlBhbmVsPlxyXG4gICAgPHAtdGFiUGFuZWwgW2hlYWRlcl09XCInYWRtaW5pc3RyYXRpb25fdGFiX3Blcm1pc3Npb25zJyB8IGxvY2FsaXplXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcbiAgICAgICAgPHRzaS12aWV3LWdyaWQgW2hlYWRlcl09XCJlbnRpdHlXaXRoUmVsYXRpb25zLmVudGl0eS5jbGFzc05hbWUgPz8gJydcIiBjbGFzcz1cImNvbC0xMiBtYi0zXCJcclxuICAgICAgICAgIFtjb2x1bW5zXT1cInBlcm1pc3Npb25zR3JpZENvbHVtbnNcIiBbZ2V0RGF0YUZyb21BcGldPVwiZmFsc2VcIiBbZ3JpZERhdGFdPVwiZW5kcG9pbnRJbmZvc1wiPlxyXG4gICAgICAgIDwvdHNpLXZpZXctZ3JpZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3AtdGFiUGFuZWw+XHJcbiAgPC9wLXRhYlZpZXc+XHJcbiAgPFRzaS1Nb2RhbC1Gb290ZXIgW2lzQ29uc3VsdF09XCJpc0NvbnN1bHRNb2RlKClcIiBbY2FuY2VsRGlzYWJsZWRdPVwic2F2aW5nXCIgW3NhdmVEaXNhYmxlZF09XCJpc1N1Ym1pdERpc2FibGVkKClcIlxyXG4gICAgKG9uQ2FuY2VsQ2xpY2spPVwiaGlkZSgpXCI+XHJcbiAgPC9Uc2ktTW9kYWwtRm9vdGVyPlxyXG48L3RzaS1mb3JtPiJdfQ==
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import { TsiFormComponentBaseComponent } from '../../tsi-base/components/tsi-form-base/tsi-form-base.component';
|
|
4
|
+
import { LocalizationKeys } from '../../consts/localization-key';
|
|
5
|
+
import { Modes, TypeImportEnum, InputTypes, CSSUnits } from '../../enums';
|
|
6
|
+
import { ModeleImportCreateRequest } from '../../models';
|
|
7
|
+
import { GridColumnStyleHelper } from '../../tsi-helpers';
|
|
8
|
+
import { ImportExportEndPoints } from '../../end-points/import-export-endpoint';
|
|
9
|
+
import { appProviders } from '../../consts/app-providers';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "../../services";
|
|
12
|
+
import * as i2 from "primeng/dynamicdialog";
|
|
13
|
+
import * as i3 from "@angular/common";
|
|
14
|
+
import * as i4 from "../input-components/editable-grid/editable-grid.component";
|
|
15
|
+
import * as i5 from "../input-components/tsi-search-combo/tsi-search-combo.component";
|
|
16
|
+
import * as i6 from "../input-components/tsi-checkbox/tsi-checkbox.component";
|
|
17
|
+
import * as i7 from "../input-components/tsi-integer/tsi-integer.component";
|
|
18
|
+
import * as i8 from "../input-components/tsi-text-box/tsi-text-box.component";
|
|
19
|
+
import * as i9 from "../output-components/tsi-label/tsi-label.component";
|
|
20
|
+
import * as i10 from "../tsi-modal-footer/tsi-modal-footer.component";
|
|
21
|
+
import * as i11 from "../tsi-modal-header/tsi-modal-header.component";
|
|
22
|
+
import * as i12 from "../tsi-form/tsi-form.component";
|
|
23
|
+
import * as i13 from "../../pipes/modal-label.pipe";
|
|
24
|
+
export class CreateOrEditModeleImportComponent extends TsiFormComponentBaseComponent {
|
|
25
|
+
constructor(_modeleImportService, _notificationService, config, ref) {
|
|
26
|
+
super(ref, config);
|
|
27
|
+
this._modeleImportService = _modeleImportService;
|
|
28
|
+
this._notificationService = _notificationService;
|
|
29
|
+
this.config = config;
|
|
30
|
+
this.ref = ref;
|
|
31
|
+
this.modeleImportDetailColumns = [];
|
|
32
|
+
this.modeleImport = new ModeleImportCreateRequest();
|
|
33
|
+
this.getColonneByClassNameEndPoint = "";
|
|
34
|
+
this.getClassChildsByClassNameEndPoint = "";
|
|
35
|
+
this.modeleImportEndPoints = ImportExportEndPoints;
|
|
36
|
+
this._businnessClassName = "";
|
|
37
|
+
this.showModeleImportDetails = false;
|
|
38
|
+
this.eventsSubjectModeleImportDetail = new Subject();
|
|
39
|
+
this._businnessClassName = config?.data?.businessClass;
|
|
40
|
+
this.getClassChildsByClassNameEndPoint = ImportExportEndPoints.getClassChildsAsKeyValuePair(this._businnessClassName);
|
|
41
|
+
this.initModeleImportDetailColumns();
|
|
42
|
+
this.openedMode = this.config.data?.mode;
|
|
43
|
+
}
|
|
44
|
+
_updateModeleImportFromGrid() {
|
|
45
|
+
this.eventsSubjectModeleImportDetail.next();
|
|
46
|
+
}
|
|
47
|
+
onSaveModeleImportDetails(gridData) {
|
|
48
|
+
this.modeleImport.modeleImportDetails = gridData;
|
|
49
|
+
}
|
|
50
|
+
ngOnInit() {
|
|
51
|
+
super.ngOnInit();
|
|
52
|
+
if (this.config.data != undefined) {
|
|
53
|
+
this.modeleImport.classe = this.config?.data?.businessClass;
|
|
54
|
+
this.modeleImport.form = this.formName;
|
|
55
|
+
if (this.openedMode == Modes.edit && this.config.data?.id != undefined) {
|
|
56
|
+
this._modeleImportService.getById(this.config.data?.id)
|
|
57
|
+
.subscribe({
|
|
58
|
+
next: (data) => {
|
|
59
|
+
this.modeleImport = data;
|
|
60
|
+
this.updateValuesWithParentColumName();
|
|
61
|
+
this.typeImportChange(this.modeleImport.ordreOuTitreColonne);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
updateValuesWithParentColumName() {
|
|
68
|
+
let filtredData = this.modeleImport.modeleImportDetails
|
|
69
|
+
.filter(x => x.nomClasseDetail == undefined || x.nomClasseDetail == '');
|
|
70
|
+
filtredData.forEach(item => {
|
|
71
|
+
item.nomClasseDetail = this._businnessClassName;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
typeImportChange(event) {
|
|
75
|
+
this.initModeleImportDetailColumns();
|
|
76
|
+
if (event == TypeImportEnum.TitreColonne) {
|
|
77
|
+
let index = this.modeleImportDetailColumns.findIndex(x => x.field == "numero");
|
|
78
|
+
if (index != -1) {
|
|
79
|
+
this.modeleImportDetailColumns.splice(index, 1);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else if (event == TypeImportEnum.OrdreColonne) {
|
|
83
|
+
let index = this.modeleImportDetailColumns.findIndex(x => x.field == "nomColonneFichier");
|
|
84
|
+
if (index != -1) {
|
|
85
|
+
this.modeleImportDetailColumns.splice(index, 1);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (event != undefined) {
|
|
89
|
+
this.showModeleImportDetails = true;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
this.showModeleImportDetails = false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
initModeleImportDetailColumns() {
|
|
96
|
+
this.modeleImportDetailColumns = [
|
|
97
|
+
{
|
|
98
|
+
field: "nomClasseDetail",
|
|
99
|
+
header: "Nom Classe Detail",
|
|
100
|
+
type: InputTypes.SEARCH_COMBO,
|
|
101
|
+
listSourceUrl: this.getClassChildsByClassNameEndPoint,
|
|
102
|
+
idField: "value",
|
|
103
|
+
labelField: "value",
|
|
104
|
+
isFiltered: false,
|
|
105
|
+
watchForChanges: true,
|
|
106
|
+
style: GridColumnStyleHelper.createWidthStyle(CSSUnits.VW, 20)
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
field: "colonneClasse",
|
|
110
|
+
header: "Colonne Classe",
|
|
111
|
+
type: InputTypes.SEARCH_COMBO,
|
|
112
|
+
listSourceUrl: this.buildGetChildClassColumns,
|
|
113
|
+
idField: "value",
|
|
114
|
+
labelField: "value",
|
|
115
|
+
isFiltered: false,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
field: "numero",
|
|
119
|
+
header: "Ordre",
|
|
120
|
+
type: InputTypes.INTEGER,
|
|
121
|
+
watchForChanges: true
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
field: "nomColonneFichier",
|
|
125
|
+
header: "Nom Colonne Fichier",
|
|
126
|
+
type: InputTypes.TEXT_BOX,
|
|
127
|
+
watchForChanges: true
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
field: "nomColonneClefEtrangere",
|
|
131
|
+
header: "Nom Colonne Cle Etrangère",
|
|
132
|
+
watchForChanges: true,
|
|
133
|
+
type: InputTypes.SEARCH_COMBO,
|
|
134
|
+
listSourceUrl: this.buildGetColummnForForeignKeyClass,
|
|
135
|
+
idField: "key",
|
|
136
|
+
labelField: "value",
|
|
137
|
+
isFiltered: false,
|
|
138
|
+
},
|
|
139
|
+
];
|
|
140
|
+
}
|
|
141
|
+
buildGetColummnForForeignKeyClass(currentRowItem) {
|
|
142
|
+
let columnName = currentRowItem?.colonneClasse ?? "";
|
|
143
|
+
let parentEntityName = currentRowItem?.nomClasseDetail ?? "";
|
|
144
|
+
return ImportExportEndPoints.getColonnesByClassNameAsKeyValuePair(parentEntityName, columnName);
|
|
145
|
+
}
|
|
146
|
+
buildGetChildClassColumns(currentRowItem) {
|
|
147
|
+
let parentEntityName = currentRowItem?.nomClasseDetail ?? "";
|
|
148
|
+
// if (parentEntityName?.endsWith('s')) {
|
|
149
|
+
// parentEntityName = parentEntityName.slice(0, -1);
|
|
150
|
+
// }
|
|
151
|
+
return ImportExportEndPoints.getColonnesByClassNameAsKeyValuePair(parentEntityName, "");
|
|
152
|
+
}
|
|
153
|
+
buildGetChildChildClass(currentRowItem) {
|
|
154
|
+
let className = currentRowItem?.nomClasseDetail;
|
|
155
|
+
if (className?.endsWith('s')) {
|
|
156
|
+
className = className.slice(0, -1);
|
|
157
|
+
}
|
|
158
|
+
return ImportExportEndPoints.getClassChildsAsKeyValuePair(className);
|
|
159
|
+
}
|
|
160
|
+
deleteValueFromParentModel() {
|
|
161
|
+
let filtredData = this.modeleImport.modeleImportDetails
|
|
162
|
+
.filter(x => x.nomClasseDetail == this._businessClass);
|
|
163
|
+
filtredData.forEach(item => {
|
|
164
|
+
item.nomClasseDetail = undefined;
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
save() {
|
|
168
|
+
super.save();
|
|
169
|
+
this.saving = true;
|
|
170
|
+
this.isloading = true;
|
|
171
|
+
this._updateModeleImportFromGrid();
|
|
172
|
+
this.deleteValueFromParentModel();
|
|
173
|
+
if (this.openedMode == Modes.create) {
|
|
174
|
+
this._modeleImportService.create(this.modeleImport).subscribe({
|
|
175
|
+
next: () => {
|
|
176
|
+
this._notificationService.success(this.l(LocalizationKeys.savedSuccessfully));
|
|
177
|
+
this.hide(true);
|
|
178
|
+
this.onSave.emit();
|
|
179
|
+
this.isloading = false;
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
else if (this.openedMode == Modes.edit && this.modeleImport.uid != undefined) {
|
|
184
|
+
this._modeleImportService.update(this.modeleImport, this.modeleImport.uid).subscribe({
|
|
185
|
+
next: (data) => {
|
|
186
|
+
this._notificationService.success(this.l(LocalizationKeys.updatedSuccessfully));
|
|
187
|
+
this.hide(true);
|
|
188
|
+
this.onSave.emit();
|
|
189
|
+
this.isloading = false;
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditModeleImportComponent, deps: [{ token: i1.ModeleImportService }, { token: i1.TsiNotificationService }, { token: i2.DynamicDialogConfig }, { token: i2.DynamicDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
195
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CreateOrEditModeleImportComponent, selector: "app-create-or-edit-modele-import", providers: [...appProviders], usesInheritance: true, ngImport: i0, template: "<tsi-form class=\"form-horizontal\" [isLoading]=\"isloading\" autocomplete=\"off\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'Mod\u00E8le import'\"\r\n (onCloseClick)=\"hide()\"></Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"grid\">\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Modele'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.nom\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'nomModele'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Form'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.form\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomForm'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Classe'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.classe\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomClasse'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Premiere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.premiereLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'premiereLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Derniere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.dernierLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'dernierLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Arrete lors de premier erreur '\"></Tsi-Label>\r\n <Tsi-CheckBox [(inputField)]=\"modeleImport.arretePremierErreur\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'arretePremierErreur'\"></Tsi-CheckBox>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Ordre Ou Titre Colonne'\"></Tsi-Label>\r\n <Tsi-Search-Combo \r\n (bindChange)=\"typeImportChange($event)\"\r\n class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getTypeNatureDocumentEnum()\r\n \" [(bind)]=\"modeleImport.ordreOuTitreColonne\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div style=\"max-width: 1600px; overflow: auto;\" *ngIf=\"showModeleImportDetails\">\r\n <Tsi-Generic-Editable-Grid [gridData]=\"modeleImport.modeleImportDetails\"\r\n [events]=\"eventsSubjectModeleImportDetail.asObservable()\"\r\n (rowDeletedEventEmitter)=\"onSaveModeleImportDetails($event)\"\r\n [columns]=\"modeleImportDetailColumns\" [parent]=\"this\" [showSaveButton]=\"false\" [key]=\"'numLigne'\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n\r\n\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\" (onCancelClick)=\"hide()\"\r\n (onSaveClick)=\"save()\"></Tsi-Modal-Footer>\r\n\r\n</tsi-form>", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EditableGridComponent, selector: "Tsi-Generic-Editable-Grid", inputs: ["selectedItems", "configuration", "key", "items", "events", "showAddButton", "showDeleteButton", "showEditButton", "showRowSummary", "scrollHeight", "rowPerPage", "pageSize", "columns", "gridData", "isTableLoading", "parent", "showSaveButton", "showActionColumn", "enableRowDisabling", "rowSummaryConfig", "showHaveSumary", "showRowSumary", "selectKeyOnly", "selectionMode", "showConsultButton", "disabled", "editableGridBusinessClass", "orderColumn", "deleteLineButtonDisabled", "id"], outputs: ["itemsSave", "refreshEventEmitter", "saveDataEventEmitter", "rowChangedEventEmitter", "selectedRowEventEmitter", "addedRowEventEmitter", "focusOutEventEmitter", "cellChanged", "rowDeletedEventEmitter", "selectedItemsChange", "onRowSelect", "focusOutRow", "onConsultClicked"] }, { kind: "component", type: i5.TsiSearchComboComponent, selector: "Tsi-Search-Combo", inputs: ["elementSourceUrl", "listSourceUrl", "id-field", "label-field", "multiple", "sort", "showClear", "reloadDataSource", "isFiltered", "selectedLabel", "maxWidth", "businessClass", "currentRowItem", "datasource", "bind", "showSearchButton", "showAddButton", "showConsultButton", "showUpdateButton"], outputs: ["bindChange", "datasource-loaded", "init", "isLoaded", "selectedLabelChange", "onClick", "onSearchButtonClick"] }, { kind: "component", type: i6.TsiCheckboxComponent, selector: "Tsi-CheckBox", inputs: ["class", "isBinary", "checked", "tooltipText", "tooltipPosition"], outputs: ["inputFieldChange", "checkedChange"] }, { kind: "component", type: i7.TsiIntegerComponent, selector: "Tsi-Integer", inputs: ["class", "minValue", "maxValue", "delayChangeTime"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i8.TsiTextBoxComponent, selector: "Tsi-Text-Box", inputs: ["textBoxType", "autocomplete"], outputs: ["newItemEvent", "inputFieldChange"] }, { kind: "component", type: i9.TsiLabelComponent, selector: "Tsi-Label", inputs: ["labelValue", "styleClass", "infoText"] }, { kind: "component", type: i10.TsiModalFooterComponent, selector: "Tsi-Modal-Footer", inputs: ["cancelDisabled", "saveDisabled", "cancelLabel", "saveLabel", "isConsult", "isDuplicate", "isOnlyCreate"], outputs: ["onCancelClick", "onSaveClick"] }, { kind: "component", type: i11.TsiModalHeaderComponent, selector: "Tsi-Modal-Header", inputs: ["inputTitle"], outputs: ["onCloseClick"] }, { kind: "component", type: i12.TsiFormComponent, selector: "tsi-form", inputs: ["class", "autocomplete", "optionalEndpoints", "disabled", "isLoading", "modalSize", "formEndpoint", "formName", "isReportingToolbarDisabled", "isCreateOnly"], outputs: ["onSubmit", "onSubmitFormWorkflowConfiguration", "formRefChange", "onStatusChange"] }, { kind: "pipe", type: i13.ModalLabelPipe, name: "modalLabel" }] }); }
|
|
196
|
+
}
|
|
197
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CreateOrEditModeleImportComponent, decorators: [{
|
|
198
|
+
type: Component,
|
|
199
|
+
args: [{ selector: 'app-create-or-edit-modele-import', providers: [...appProviders], template: "<tsi-form class=\"form-horizontal\" [isLoading]=\"isloading\" autocomplete=\"off\">\r\n <Tsi-Modal-Header [inputTitle]=\"header | modalLabel : mode : 'Mod\u00E8le import'\"\r\n (onCloseClick)=\"hide()\"></Tsi-Modal-Header>\r\n\r\n <fieldset [disabled]=\"isDeleteMode() || isConsultMode() \">\r\n\r\n <div class=\"modal-body\">\r\n <div class=\"grid\">\r\n <div class=\"col-8\">\r\n <div class=\"grid\">\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Modele'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.nom\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'nomModele'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Form'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.form\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomForm'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Nom Classe'\"></Tsi-Label>\r\n <Tsi-Text-Box [(inputField)]=\"modeleImport.classe\" [disabled]=\"true\" class=\"col-9\"\r\n [inputName]=\"'nomClasse'\"></Tsi-Text-Box>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Premiere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.premiereLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'premiereLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Derniere Ligne Import'\"></Tsi-Label>\r\n <Tsi-Integer [(inputField)]=\"modeleImport.dernierLigneImport\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'dernierLigneImport'\"></Tsi-Integer>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Arrete lors de premier erreur '\"></Tsi-Label>\r\n <Tsi-CheckBox [(inputField)]=\"modeleImport.arretePremierErreur\" [disabled]=\"false\" class=\"col-9\"\r\n [inputName]=\"'arretePremierErreur'\"></Tsi-CheckBox>\r\n\r\n <Tsi-Label class=\"col-3\" [labelValue]=\"'Ordre Ou Titre Colonne'\"></Tsi-Label>\r\n <Tsi-Search-Combo \r\n (bindChange)=\"typeImportChange($event)\"\r\n class=\"col-9\" [listSourceUrl]=\"\r\n modeleImportEndPoints.getTypeNatureDocumentEnum()\r\n \" [(bind)]=\"modeleImport.ordreOuTitreColonne\" id-field=\"key\" label-field=\"value\">\r\n </Tsi-Search-Combo>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <div style=\"max-width: 1600px; overflow: auto;\" *ngIf=\"showModeleImportDetails\">\r\n <Tsi-Generic-Editable-Grid [gridData]=\"modeleImport.modeleImportDetails\"\r\n [events]=\"eventsSubjectModeleImportDetail.asObservable()\"\r\n (rowDeletedEventEmitter)=\"onSaveModeleImportDetails($event)\"\r\n [columns]=\"modeleImportDetailColumns\" [parent]=\"this\" [showSaveButton]=\"false\" [key]=\"'numLigne'\">\r\n </Tsi-Generic-Editable-Grid>\r\n </div>\r\n\r\n\r\n </fieldset>\r\n\r\n <Tsi-Modal-Footer [cancelDisabled]=\"saving\" [saveDisabled]=\"isSubmitDisabled()\" (onCancelClick)=\"hide()\"\r\n (onSaveClick)=\"save()\"></Tsi-Modal-Footer>\r\n\r\n</tsi-form>" }]
|
|
200
|
+
}], ctorParameters: () => [{ type: i1.ModeleImportService }, { type: i1.TsiNotificationService }, { type: i2.DynamicDialogConfig }, { type: i2.DynamicDialogRef }] });
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW9yLWVkaXQtbW9kZWxlLWltcG9ydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90c2ktc2hhcmVkLXVpL3NyYy9saWIvdHNpLWNvbXBvbmVudHMvY3JlYXRlLW9yLWVkaXQtbW9kZWxlLWltcG9ydC9jcmVhdGUtb3ItZWRpdC1tb2RlbGUtaW1wb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9jcmVhdGUtb3ItZWRpdC1tb2RlbGUtaW1wb3J0L2NyZWF0ZS1vci1lZGl0LW1vZGVsZS1pbXBvcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLGlFQUFpRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFMUUsT0FBTyxFQUFFLHlCQUF5QixFQUFzQixNQUFNLGNBQWMsQ0FBQztBQUU3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQVMxRCxNQUFNLE9BQU8saUNBQWtDLFNBQVEsNkJBQTZCO0lBWWxGLFlBQW9CLG9CQUF5QyxFQUNuRCxvQkFBNEMsRUFDcEMsTUFB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QUFHLEtBQUssQ0FBQztnQkFDekIsQ0FBQzthQUNGLENBQ0YsQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDOytHQXpMVSxpQ0FBaUM7bUdBQWpDLGlDQUFpQywyREFGakMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxpRENqQjlCLDh1R0E4RFc7OzRGRDNDRSxpQ0FBaUM7a0JBTjdDLFNBQVM7K0JBQ0Usa0NBQWtDLGFBR2pDLENBQUMsR0FBRyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRzaUZvcm1Db21wb25lbnRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdHNpLWJhc2UvY29tcG9uZW50cy90c2ktZm9ybS1iYXNlL3RzaS1mb3JtLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uS2V5cyB9IGZyb20gJy4uLy4uL2NvbnN0cy9sb2NhbGl6YXRpb24ta2V5JztcclxuaW1wb3J0IHsgTW9kZXMsIFR5cGVJbXBvcnRFbnVtLCBJbnB1dFR5cGVzLCBDU1NVbml0cyB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgR3JpZENvbHVtbiB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBNb2RlbGVJbXBvcnRDcmVhdGVSZXF1ZXN0LCBNb2RlbGVJbXBvcnREZXRhaWwgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBNb2RlbGVJbXBvcnRTZXJ2aWNlLCBUc2lOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBHcmlkQ29sdW1uU3R5bGVIZWxwZXIgfSBmcm9tICcuLi8uLi90c2ktaGVscGVycyc7XHJcbmltcG9ydCB7IEltcG9ydEV4cG9ydEVuZFBvaW50cyB9IGZyb20gJy4uLy4uL2VuZC1wb2ludHMvaW1wb3J0LWV4cG9ydC1lbmRwb2ludCc7XHJcbmltcG9ydCB7IGFwcFByb3ZpZGVycyB9IGZyb20gJy4uLy4uL2NvbnN0cy9hcHAtcHJvdmlkZXJzJztcclxuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1jcmVhdGUtb3ItZWRpdC1tb2RlbGUtaW1wb3J0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLW9yLWVkaXQtbW9kZWxlLWltcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLW9yLWVkaXQtbW9kZWxlLWltcG9ydC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogWy4uLmFwcFByb3ZpZGVyc11cclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZU9yRWRpdE1vZGVsZUltcG9ydENvbXBvbmVudCBleHRlbmRzIFRzaUZvcm1Db21wb25lbnRCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgbW9kZWxlSW1wb3J0RGV0YWlsQ29sdW1uczogQXJyYXk8R3JpZENvbHVtbj4gPSBbXTtcclxuICBtb2RlbGVJbXBvcnQ6IE1vZGVsZUltcG9ydENyZWF0ZVJlcXVlc3QgPSBuZXcgTW9kZWxlSW1wb3J0Q3JlYXRlUmVxdWVzdCgpXHJcbiAgZ2V0Q29sb25uZUJ5Q2xhc3NOYW1lRW5kUG9pbnQ6IHN0cmluZyA9IFwiXCJcclxuICBnZXRDbGFzc0NoaWxkc0J5Q2xhc3NOYW1lRW5kUG9pbnQ6IHN0cmluZyA9IFwiXCJcclxuICBtb2RlbGVJbXBvcnRFbmRQb2ludHMgPSBJbXBvcnRFeHBvcnRFbmRQb2ludHNcclxuICBfYnVzaW5uZXNzQ2xhc3NOYW1lOiBzdHJpbmcgPSBcIlwiXHJcbiAgZXZlbnRzU3ViamVjdE1vZGVsZUltcG9ydERldGFpbDogU3ViamVjdDx2b2lkPjtcclxuICBvcGVuZWRNb2RlOiBhbnlcclxuICBzaG93TW9kZWxlSW1wb3J0RGV0YWlsczogYm9vbGVhbiA9IGZhbHNlXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX21vZGVsZUltcG9ydFNlcnZpY2U6IE1vZGVsZUltcG9ydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9ub3RpZmljYXRpb25TZXJ2aWNlOiBUc2lOb3RpZmljYXRpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIG92ZXJyaWRlIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZywgcHVibGljIG92ZXJyaWRlIHJlZj86IER5bmFtaWNEaWFsb2dSZWYsKSB7XHJcbiAgICBzdXBlcihyZWYsIGNvbmZpZyk7XHJcbiAgICB0aGlzLmV2ZW50c1N1YmplY3RNb2RlbGVJbXBvcnREZXRhaWwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gICAgdGhpcy5fYnVzaW5uZXNzQ2xhc3NOYW1lID0gY29uZmlnPy5kYXRhPy5idXNpbmVzc0NsYXNzXHJcbiAgICB0aGlzLmdldENsYXNzQ2hpbGRzQnlDbGFzc05hbWVFbmRQb2ludCA9IEltcG9ydEV4cG9ydEVuZFBvaW50cy5nZXRDbGFzc0NoaWxkc0FzS2V5VmFsdWVQYWlyKHRoaXMuX2J1c2lubmVzc0NsYXNzTmFtZSlcclxuICAgIHRoaXMuaW5pdE1vZGVsZUltcG9ydERldGFpbENvbHVtbnMoKVxyXG4gICAgdGhpcy5vcGVuZWRNb2RlID0gdGhpcy5jb25maWcuZGF0YT8ubW9kZVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlTW9kZWxlSW1wb3J0RnJvbUdyaWQoKSB7XHJcbiAgICB0aGlzLmV2ZW50c1N1YmplY3RNb2RlbGVJbXBvcnREZXRhaWwubmV4dCgpO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlTW9kZWxlSW1wb3J0RGV0YWlscyhncmlkRGF0YTogQXJyYXk8TW9kZWxlSW1wb3J0RGV0YWlsPikge1xyXG4gICAgdGhpcy5tb2RlbGVJbXBvcnQubW9kZWxlSW1wb3J0RGV0YWlscyA9IGdyaWREYXRhXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KClcclxuICAgIGlmICh0aGlzLmNvbmZpZy5kYXRhICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydC5jbGFzc2UgPSB0aGlzLmNvbmZpZz8uZGF0YT8uYnVzaW5lc3NDbGFzc1xyXG4gICAgICB0aGlzLm1vZGVsZUltcG9ydC5mb3JtID0gdGhpcy5mb3JtTmFtZVxyXG5cclxuICAgICAgaWYgKHRoaXMub3BlbmVkTW9kZSA9PSBNb2Rlcy5lZGl0ICYmIHRoaXMuY29uZmlnLmRhdGE/LmlkICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuX21vZGVsZUltcG9ydFNlcnZpY2UuZ2V0QnlJZCh0aGlzLmNvbmZpZy5kYXRhPy5pZClcclxuICAgICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMubW9kZWxlSW1wb3J0ID0gZGF0YVxyXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWVzV2l0aFBhcmVudENvbHVtTmFtZSgpXHJcbiAgICAgICAgICAgICAgdGhpcy50eXBlSW1wb3J0Q2hhbmdlKHRoaXMubW9kZWxlSW1wb3J0Lm9yZHJlT3VUaXRyZUNvbG9ubmUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVZhbHVlc1dpdGhQYXJlbnRDb2x1bU5hbWUoKSB7XHJcbiAgICBsZXQgZmlsdHJlZERhdGEgPSB0aGlzLm1vZGVsZUltcG9ydC5tb2RlbGVJbXBvcnREZXRhaWxzXHJcbiAgICAgIC5maWx0ZXIoeCA9PiB4Lm5vbUNsYXNzZURldGFpbCA9PSB1bmRlZmluZWQgfHwgeC5ub21DbGFzc2VEZXRhaWwgPT0gJycpXHJcbiAgICBmaWx0cmVkRGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICBpdGVtLm5vbUNsYXNzZURldGFpbCA9IHRoaXMuX2J1c2lubmVzc0NsYXNzTmFtZVxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHR5cGVJbXBvcnRDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5pbml0TW9kZWxlSW1wb3J0RGV0YWlsQ29sdW1ucygpXHJcbiAgICBpZiAoZXZlbnQgPT0gVHlwZUltcG9ydEVudW0uVGl0cmVDb2xvbm5lKSB7XHJcbiAgICAgIGxldCBpbmRleCA9IHRoaXMubW9kZWxlSW1wb3J0RGV0YWlsQ29sdW1ucy5maW5kSW5kZXgoeCA9PiB4LmZpZWxkID09IFwibnVtZXJvXCIpXHJcbiAgICAgIGlmIChpbmRleCAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMubW9kZWxlSW1wb3J0RGV0YWlsQ29sdW1ucy5zcGxpY2UoaW5kZXgsIDEpXHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT0gVHlwZUltcG9ydEVudW0uT3JkcmVDb2xvbm5lKSB7XHJcbiAgICAgIGxldCBpbmRleCA9IHRoaXMubW9kZWxlSW1wb3J0RGV0YWlsQ29sdW1ucy5maW5kSW5kZXgoeCA9PiB4LmZpZWxkID09IFwibm9tQ29sb25uZUZpY2hpZXJcIilcclxuICAgICAgaWYgKGluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbGVJbXBvcnREZXRhaWxDb2x1bW5zLnNwbGljZShpbmRleCwgMSlcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50ICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnNob3dNb2RlbGVJbXBvcnREZXRhaWxzID0gdHJ1ZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93TW9kZWxlSW1wb3J0RGV0YWlscyA9IGZhbHNlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGluaXRNb2RlbGVJbXBvcnREZXRhaWxDb2x1bW5zKCkge1xyXG4gICAgdGhpcy5tb2RlbGVJbXBvcnREZXRhaWxDb2x1bW5zID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgZmllbGQ6IFwibm9tQ2xhc3NlRGV0YWlsXCIsXHJcbiAgICAgICAgaGVhZGVyOiBcIk5vbSBDbGFzc2UgRGV0YWlsXCIsXHJcbiAgICAgICAgdHlwZTogSW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk8sXHJcbiAgICAgICAgbGlzdFNvdXJjZVVybDogdGhpcy5nZXRDbGFzc0NoaWxkc0J5Q2xhc3NOYW1lRW5kUG9pbnQsXHJcbiAgICAgICAgaWRGaWVsZDogXCJ2YWx1ZVwiLFxyXG4gICAgICAgIGxhYmVsRmllbGQ6IFwidmFsdWVcIixcclxuICAgICAgICBpc0ZpbHRlcmVkOiBmYWxzZSxcclxuICAgICAgICB3YXRjaEZvckNoYW5nZXM6IHRydWUsXHJcbiAgICAgICAgc3R5bGU6IEdyaWRDb2x1bW5TdHlsZUhlbHBlci5jcmVhdGVXaWR0aFN0eWxlKENTU1VuaXRzLlZXLCAyMClcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkOiBcImNvbG9ubmVDbGFzc2VcIixcclxuICAgICAgICBoZWFkZXI6IFwiQ29sb25uZSBDbGFzc2VcIixcclxuICAgICAgICB0eXBlOiBJbnB1dFR5cGVzLlNFQVJDSF9DT01CTyxcclxuICAgICAgICBsaXN0U291cmNlVXJsOiB0aGlzLmJ1aWxkR2V0Q2hpbGRDbGFzc0NvbHVtbnMsXHJcbiAgICAgICAgaWRGaWVsZDogXCJ2YWx1ZVwiLFxyXG4gICAgICAgIGxhYmVsRmllbGQ6IFwidmFsdWVcIixcclxuICAgICAgICBpc0ZpbHRlcmVkOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkOiBcIm51bWVyb1wiLFxyXG4gICAgICAgIGhlYWRlcjogXCJPcmRyZVwiLFxyXG4gICAgICAgIHR5cGU6IElucHV0VHlwZXMuSU5URUdFUixcclxuICAgICAgICB3YXRjaEZvckNoYW5nZXM6IHRydWVcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkOiBcIm5vbUNvbG9ubmVGaWNoaWVyXCIsXHJcbiAgICAgICAgaGVhZGVyOiBcIk5vbSBDb2xvbm5lIEZpY2hpZXJcIixcclxuICAgICAgICB0eXBlOiBJbnB1dFR5cGVzLlRFWFRfQk9YLFxyXG4gICAgICAgIHdhdGNoRm9yQ2hhbmdlczogdHJ1ZVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgZmllbGQ6IFwibm9tQ29sb25uZUNsZWZFdHJhbmdlcmVcIixcclxuICAgICAgICBoZWFkZXI6IFwiTm9tIENvbG9ubmUgQ2xlIEV0cmFuZ8OocmVcIixcclxuICAgICAgICB3YXRjaEZvckNoYW5nZXM6IHRydWUsXHJcbiAgICAgICAgdHlwZTogSW5wdXRUeXBlcy5TRUFSQ0hfQ09NQk8sXHJcbiAgICAgICAgbGlzdFNvdXJjZVVybDogdGhpcy5idWlsZEdldENvbHVtbW5Gb3JGb3JlaWduS2V5Q2xhc3MsXHJcbiAgICAgICAgaWRGaWVsZDogXCJrZXlcIixcclxuICAgICAgICBsYWJlbEZpZWxkOiBcInZhbHVlXCIsXHJcbiAgICAgICAgaXNGaWx0ZXJlZDogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICBdXHJcbiAgfVxyXG5cclxuICBidWlsZEdldENvbHVtbW5Gb3JGb3JlaWduS2V5Q2xhc3MoY3VycmVudFJvd0l0ZW06IE1vZGVsZUltcG9ydERldGFpbCkge1xyXG4gICAgbGV0IGNvbHVtbk5hbWUgPSBjdXJyZW50Um93SXRlbT8uY29sb25uZUNsYXNzZSA/PyBcIlwiXHJcbiAgICBsZXQgcGFyZW50RW50aXR5TmFtZSA9IGN1cnJlbnRSb3dJdGVtPy5ub21DbGFzc2VEZXRhaWwgPz8gXCJcIlxyXG4gICAgcmV0dXJuIEltcG9ydEV4cG9ydEVuZFBvaW50cy5nZXRDb2xvbm5lc0J5Q2xhc3NOYW1lQXNLZXlWYWx1ZVBhaXIocGFyZW50RW50aXR5TmFtZSwgY29sdW1uTmFtZSlcclxuICB9XHJcblxyXG4gIGJ1aWxkR2V0Q2hpbGRDbGFzc0NvbHVtbnMoY3VycmVudFJvd0l0ZW06IE1vZGVsZUltcG9ydERldGFpbCkge1xyXG4gICAgbGV0IHBhcmVudEVudGl0eU5hbWUgPSBjdXJyZW50Um93SXRlbT8ubm9tQ2xhc3NlRGV0YWlsID8/IFwiXCJcclxuICAgIC8vIGlmIChwYXJlbnRFbnRpdHlOYW1lPy5lbmRzV2l0aCgncycpKSB7XHJcbiAgICAvLyAgIHBhcmVudEVudGl0eU5hbWUgPSBwYXJlbnRFbnRpdHlOYW1lLnNsaWNlKDAsIC0xKTtcclxuICAgIC8vIH1cclxuICAgIHJldHVybiBJbXBvcnRFeHBvcnRFbmRQb2ludHMuZ2V0Q29sb25uZXNCeUNsYXNzTmFtZUFzS2V5VmFsdWVQYWlyKHBhcmVudEVudGl0eU5hbWUsIFwiXCIpXHJcbiAgfVxyXG5cclxuICBidWlsZEdldENoaWxkQ2hpbGRDbGFzcyhjdXJyZW50Um93SXRlbTogTW9kZWxlSW1wb3J0RGV0YWlsKSB7XHJcbiAgICBsZXQgY2xhc3NOYW1lID0gY3VycmVudFJvd0l0ZW0/Lm5vbUNsYXNzZURldGFpbFxyXG4gICAgaWYgKGNsYXNzTmFtZT8uZW5kc1dpdGgoJ3MnKSkge1xyXG4gICAgICBjbGFzc05hbWUgPSBjbGFzc05hbWUuc2xpY2UoMCwgLTEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIEltcG9ydEV4cG9ydEVuZFBvaW50cy5nZXRDbGFzc0NoaWxkc0FzS2V5VmFsdWVQYWlyKGNsYXNzTmFtZSlcclxuICB9XHJcblxyXG4gIGRlbGV0ZVZhbHVlRnJvbVBhcmVudE1vZGVsKCkge1xyXG4gICAgbGV0IGZpbHRyZWREYXRhID0gdGhpcy5tb2RlbGVJbXBvcnQubW9kZWxlSW1wb3J0RGV0YWlsc1xyXG4gICAgICAuZmlsdGVyKHggPT4geC5ub21DbGFzc2VEZXRhaWwgPT0gdGhpcy5fYnVzaW5lc3NDbGFzcylcclxuICAgIGZpbHRyZWREYXRhLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGl0ZW0ubm9tQ2xhc3NlRGV0YWlsID0gdW5kZWZpbmVkXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgc2F2ZSgpOiB2b2lkIHtcclxuICAgIHN1cGVyLnNhdmUoKVxyXG4gICAgdGhpcy5zYXZpbmcgPSB0cnVlXHJcbiAgICB0aGlzLmlzbG9hZGluZyA9IHRydWVcclxuICAgIHRoaXMuX3VwZGF0ZU1vZGVsZUltcG9ydEZyb21HcmlkKClcclxuICAgIHRoaXMuZGVsZXRlVmFsdWVGcm9tUGFyZW50TW9kZWwoKVxyXG4gICAgaWYgKHRoaXMub3BlbmVkTW9kZSA9PSBNb2Rlcy5jcmVhdGUpIHtcclxuICAgICAgdGhpcy5fbW9kZWxlSW1wb3J0U2VydmljZS5jcmVhdGUodGhpcy5tb2RlbGVJbXBvcnQpLnN1YnNjcmliZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2Vzcyh0aGlzLmwoTG9jYWxpemF0aW9uS2V5cy5zYXZlZFN1Y2Nlc3NmdWxseSkpO1xyXG4gICAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMub25TYXZlLmVtaXQoKTtcclxuICAgICAgICAgICAgdGhpcy5pc2xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIClcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMub3BlbmVkTW9kZSA9PSBNb2Rlcy5lZGl0ICYmIHRoaXMubW9kZWxlSW1wb3J0LnVpZCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5fbW9kZWxlSW1wb3J0U2VydmljZS51cGRhdGUodGhpcy5tb2RlbGVJbXBvcnQsIHRoaXMubW9kZWxlSW1wb3J0LnVpZCkuc3Vic2NyaWJlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uuc3VjY2Vzcyh0aGlzLmwoTG9jYWxpemF0aW9uS2V5cy51cGRhdGVkU3VjY2Vzc2Z1bGx5KSk7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCgpO1xyXG4gICAgICAgICAgICB0aGlzLmlzbG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwiPHRzaS1mb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCIgW2lzTG9hZGluZ109XCJpc2xvYWRpbmdcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICA8VHNpLU1vZGFsLUhlYWRlciBbaW5wdXRUaXRsZV09XCJoZWFkZXIgfCBtb2RhbExhYmVsIDogbW9kZSA6ICdNb2TDqGxlIGltcG9ydCdcIlxyXG4gICAgKG9uQ2xvc2VDbGljayk9XCJoaWRlKClcIj48L1RzaS1Nb2RhbC1IZWFkZXI+XHJcblxyXG4gICAgPGZpZWxkc2V0IFtkaXNhYmxlZF09XCJpc0RlbGV0ZU1vZGUoKSB8fCBpc0NvbnN1bHRNb2RlKCkgXCI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImdyaWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLThcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkXCI+XHJcblxyXG4gICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTNcIiBbbGFiZWxWYWx1ZV09XCInTm9tIE1vZGVsZSdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgPFRzaS1UZXh0LUJveCBbKGlucHV0RmllbGQpXT1cIm1vZGVsZUltcG9ydC5ub21cIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBjbGFzcz1cImNvbC05XCJcclxuICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cIidub21Nb2RlbGUnXCI+PC9Uc2ktVGV4dC1Cb3g+XHJcblxyXG4gICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTNcIiBbbGFiZWxWYWx1ZV09XCInTm9tIEZvcm0nXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgIDxUc2ktVGV4dC1Cb3ggWyhpbnB1dEZpZWxkKV09XCJtb2RlbGVJbXBvcnQuZm9ybVwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgY2xhc3M9XCJjb2wtOVwiXHJcbiAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCInbm9tRm9ybSdcIj48L1RzaS1UZXh0LUJveD5cclxuXHJcbiAgICAgICAgICAgIDxUc2ktTGFiZWwgY2xhc3M9XCJjb2wtM1wiIFtsYWJlbFZhbHVlXT1cIidOb20gQ2xhc3NlJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICA8VHNpLVRleHQtQm94IFsoaW5wdXRGaWVsZCldPVwibW9kZWxlSW1wb3J0LmNsYXNzZVwiIFtkaXNhYmxlZF09XCJ0cnVlXCIgY2xhc3M9XCJjb2wtOVwiXHJcbiAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCInbm9tQ2xhc3NlJ1wiPjwvVHNpLVRleHQtQm94PlxyXG5cclxuICAgICAgICAgICAgPFRzaS1MYWJlbCBjbGFzcz1cImNvbC0zXCIgW2xhYmVsVmFsdWVdPVwiJ1ByZW1pZXJlIExpZ25lIEltcG9ydCdcIj48L1RzaS1MYWJlbD5cclxuICAgICAgICAgICAgPFRzaS1JbnRlZ2VyIFsoaW5wdXRGaWVsZCldPVwibW9kZWxlSW1wb3J0LnByZW1pZXJlTGlnbmVJbXBvcnRcIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBjbGFzcz1cImNvbC05XCJcclxuICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cIidwcmVtaWVyZUxpZ25lSW1wb3J0J1wiPjwvVHNpLUludGVnZXI+XHJcblxyXG4gICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTNcIiBbbGFiZWxWYWx1ZV09XCInRGVybmllcmUgTGlnbmUgSW1wb3J0J1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICA8VHNpLUludGVnZXIgWyhpbnB1dEZpZWxkKV09XCJtb2RlbGVJbXBvcnQuZGVybmllckxpZ25lSW1wb3J0XCIgW2Rpc2FibGVkXT1cImZhbHNlXCIgY2xhc3M9XCJjb2wtOVwiXHJcbiAgICAgICAgICAgICAgW2lucHV0TmFtZV09XCInZGVybmllckxpZ25lSW1wb3J0J1wiPjwvVHNpLUludGVnZXI+XHJcblxyXG4gICAgICAgICAgICA8VHNpLUxhYmVsIGNsYXNzPVwiY29sLTNcIiBbbGFiZWxWYWx1ZV09XCInQXJyZXRlIGxvcnMgZGUgcHJlbWllciBlcnJldXIgJ1wiPjwvVHNpLUxhYmVsPlxyXG4gICAgICAgICAgICA8VHNpLUNoZWNrQm94IFsoaW5wdXRGaWVsZCldPVwibW9kZWxlSW1wb3J0LmFycmV0ZVByZW1pZXJFcnJldXJcIiBbZGlzYWJsZWRdPVwiZmFsc2VcIiBjbGFzcz1cImNvbC05XCJcclxuICAgICAgICAgICAgICBbaW5wdXROYW1lXT1cIidhcnJldGVQcmVtaWVyRXJyZXVyJ1wiPjwvVHNpLUNoZWNrQm94PlxyXG5cclxuICAgICAgICAgICAgPFRzaS1MYWJlbCBjbGFzcz1cImNvbC0zXCIgW2xhYmVsVmFsdWVdPVwiJ09yZHJlIE91IFRpdHJlIENvbG9ubmUnXCI+PC9Uc2ktTGFiZWw+XHJcbiAgICAgICAgICAgIDxUc2ktU2VhcmNoLUNvbWJvIFxyXG4gICAgICAgICAgICAgICAgICAoYmluZENoYW5nZSk9XCJ0eXBlSW1wb3J0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC05XCIgW2xpc3RTb3VyY2VVcmxdPVwiXHJcbiAgICAgICAgICAgICAgICAgIG1vZGVsZUltcG9ydEVuZFBvaW50cy5nZXRUeXBlTmF0dXJlRG9jdW1lbnRFbnVtKClcclxuICAgICAgICAgICAgICAgIFwiIFsoYmluZCldPVwibW9kZWxlSW1wb3J0Lm9yZHJlT3VUaXRyZUNvbG9ubmVcIiBpZC1maWVsZD1cImtleVwiIGxhYmVsLWZpZWxkPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgPC9Uc2ktU2VhcmNoLUNvbWJvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICAgIDxkaXYgc3R5bGU9XCJtYXgtd2lkdGg6IDE2MDBweDsgb3ZlcmZsb3c6IGF1dG87XCIgKm5nSWY9XCJzaG93TW9kZWxlSW1wb3J0RGV0YWlsc1wiPlxyXG4gICAgICA8VHNpLUdlbmVyaWMtRWRpdGFibGUtR3JpZCBbZ3JpZERhdGFdPVwibW9kZWxlSW1wb3J0Lm1vZGVsZUltcG9ydERldGFpbHNcIlxyXG4gICAgICAgIFtldmVudHNdPVwiZXZlbnRzU3ViamVjdE1vZGVsZUltcG9ydERldGFpbC5hc09ic2VydmFibGUoKVwiXHJcbiAgICAgICAgKHJvd0RlbGV0ZWRFdmVudEVtaXR0ZXIpPVwib25TYXZlTW9kZWxlSW1wb3J0RGV0YWlscygkZXZlbnQpXCJcclxuICAgICAgICBbY29sdW1uc109XCJtb2RlbGVJbXBvcnREZXRhaWxDb2x1bW5zXCIgW3BhcmVudF09XCJ0aGlzXCIgW3Nob3dTYXZlQnV0dG9uXT1cImZhbHNlXCIgW2tleV09XCInbnVtTGlnbmUnXCI+XHJcbiAgICAgIDwvVHNpLUdlbmVyaWMtRWRpdGFibGUtR3JpZD5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgPC9maWVsZHNldD5cclxuXHJcbiAgPFRzaS1Nb2RhbC1Gb290ZXIgW2NhbmNlbERpc2FibGVkXT1cInNhdmluZ1wiIFtzYXZlRGlzYWJsZWRdPVwiaXNTdWJtaXREaXNhYmxlZCgpXCIgKG9uQ2FuY2VsQ2xpY2spPVwiaGlkZSgpXCJcclxuICAgIChvblNhdmVDbGljayk9XCJzYXZlKClcIj48L1RzaS1Nb2RhbC1Gb290ZXI+XHJcblxyXG48L3RzaS1mb3JtPiJdfQ==
|