ngx-techlify-core 11.5.2 → 14.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/action-popup/action-popup.component.mjs +34 -0
- package/esm2020/lib/action-popup/action-popup.model.mjs +3 -0
- package/esm2020/lib/action-popup/action-popup.module.mjs +32 -0
- package/esm2020/lib/action-popup/index.mjs +3 -0
- package/esm2020/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.mjs +18 -0
- package/esm2020/lib/audit-log/audit-log-for-model/audit-log-for-model.component.mjs +51 -0
- package/esm2020/lib/audit-log/audit-log-for-model/audit-log-for-model.module.mjs +40 -0
- package/esm2020/lib/audit-log/audit-log-list/audit-log-list-routing.module.mjs +18 -0
- package/esm2020/lib/audit-log/audit-log-list/audit-log-list.component.mjs +139 -0
- package/esm2020/lib/audit-log/audit-log-list/audit-log-list.module.mjs +48 -0
- package/esm2020/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.mjs +18 -0
- package/esm2020/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.mjs +74 -0
- package/esm2020/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.mjs +40 -0
- package/esm2020/lib/audit-log/audit-log-routing.module.mjs +25 -0
- package/esm2020/lib/audit-log/audit-log-view/audit-log-view-routing.module.mjs +18 -0
- package/esm2020/lib/audit-log/audit-log-view/audit-log-view.component.mjs +51 -0
- package/esm2020/lib/audit-log/audit-log-view/audit-log-view.module.mjs +32 -0
- package/esm2020/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.mjs +18 -0
- package/esm2020/lib/audit-log/audit-log-view-model/audit-log-view-model.component.mjs +56 -0
- package/esm2020/lib/audit-log/audit-log-view-model/audit-log-view-model.module.mjs +32 -0
- package/esm2020/lib/audit-log/audit-log.module.mjs +31 -0
- package/esm2020/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.mjs +18 -0
- package/esm2020/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.mjs +37 -0
- package/esm2020/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.mjs +32 -0
- package/esm2020/lib/base-model/index.mjs +4 -0
- package/esm2020/lib/base-model/techlify-form-component.class.mjs +49 -0
- package/esm2020/lib/base-model/techlify-listing-component.class.mjs +41 -0
- package/esm2020/lib/base-model/techlify-service.class.mjs +64 -0
- package/esm2020/lib/core/alert.service.mjs +38 -0
- package/esm2020/lib/core/api-prefix.interceptor.mjs +26 -0
- package/esm2020/lib/core/authentication.guard.mjs +35 -0
- package/esm2020/lib/core/authentication.service.mjs +54 -0
- package/esm2020/lib/core/cache.interceptor.mjs +58 -0
- package/esm2020/lib/core/config.service.mjs +45 -0
- package/esm2020/lib/core/core.module.mjs +63 -0
- package/esm2020/lib/core/credentials.service.mjs +79 -0
- package/esm2020/lib/core/dataManager.service.mjs +119 -0
- package/esm2020/lib/core/error-handler.interceptor.mjs +48 -0
- package/esm2020/lib/core/error-handler.service.mjs +55 -0
- package/esm2020/lib/core/filter.service.mjs +37 -0
- package/esm2020/lib/core/form-validator.service.mjs +24 -0
- package/esm2020/lib/core/header.interceptor.mjs +24 -0
- package/esm2020/lib/core/http-cache.service.mjs +107 -0
- package/esm2020/lib/core/http.service.mjs +84 -0
- package/esm2020/lib/core/index.mjs +22 -0
- package/esm2020/lib/core/logger.service.mjs +100 -0
- package/esm2020/lib/core/route-reusable-strategy.mjs +36 -0
- package/esm2020/lib/core/snack/snack.component.mjs +33 -0
- package/esm2020/lib/core/snack/snack.module.mjs +36 -0
- package/esm2020/lib/core/storage.service.mjs +38 -0
- package/esm2020/lib/core/techlify-config.model.mjs +28 -0
- package/esm2020/lib/core/token.interceptor.mjs +28 -0
- package/esm2020/lib/data-table/data-table.component.mjs +208 -0
- package/esm2020/lib/data-table/data-table.model.mjs +11 -0
- package/esm2020/lib/data-table/data-table.module.mjs +36 -0
- package/esm2020/lib/data-table/index.mjs +3 -0
- package/esm2020/lib/date-validator.mjs +10 -0
- package/esm2020/lib/document-viewer/document-viewer.component.mjs +65 -0
- package/esm2020/lib/document-viewer/document-viewer.module.mjs +36 -0
- package/esm2020/lib/document-viewer/index.mjs +3 -0
- package/esm2020/lib/document-viewer/viewer-config.model.mjs +3 -0
- package/esm2020/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.mjs +32 -0
- package/esm2020/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.mjs +76 -0
- package/esm2020/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.mjs +36 -0
- package/esm2020/lib/email-subscription/email-subscription-for-user/index.mjs +2 -0
- package/esm2020/lib/email-subscription/email-subscription-routing.module.mjs +18 -0
- package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.mjs +18 -0
- package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.mjs +105 -0
- package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.mjs +44 -0
- package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.mjs +2 -0
- package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.mjs +34 -0
- package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.mjs +161 -0
- package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.mjs +44 -0
- package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.mjs +2 -0
- package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.mjs +18 -0
- package/esm2020/lib/email-subscription/email-subscription-type/email-subscription-type.module.mjs +22 -0
- package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.mjs +18 -0
- package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.mjs +101 -0
- package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.mjs +43 -0
- package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.mjs +2 -0
- package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.mjs +34 -0
- package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.mjs +165 -0
- package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.mjs +48 -0
- package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.mjs +2 -0
- package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.mjs +18 -0
- package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.mjs +52 -0
- package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.mjs +40 -0
- package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.mjs +2 -0
- package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.mjs +18 -0
- package/esm2020/lib/email-subscription/email-subscription-user/email-subscription-user.module.mjs +22 -0
- package/esm2020/lib/email-subscription/email-subscription.module.mjs +22 -0
- package/esm2020/lib/entity-files/entity-file-form/entity-file-form.component.mjs +144 -0
- package/esm2020/lib/entity-files/entity-file.service.mjs +43 -0
- package/esm2020/lib/entity-files/entity-files-view-all.component.mjs +320 -0
- package/esm2020/lib/entity-files/entity-files-view-all.module.mjs +66 -0
- package/esm2020/lib/entity-files/index.mjs +3 -0
- package/esm2020/lib/export-excel/export-excel-button/export-excel-button.component.mjs +32 -0
- package/esm2020/lib/export-excel/export-excel.module.mjs +24 -0
- package/esm2020/lib/file-dropper/file-dropper.component.mjs +125 -0
- package/esm2020/lib/file-dropper/file-dropper.model.mjs +3 -0
- package/esm2020/lib/file-dropper/file-dropper.module.mjs +30 -0
- package/esm2020/lib/file-dropper/index.mjs +3 -0
- package/esm2020/lib/import-csv/data-import/data-import.component.mjs +18 -0
- package/esm2020/lib/import-csv/failed-items-list/failed-items-list.component.mjs +35 -0
- package/esm2020/lib/import-csv/field-mapping/field-mapping.component.mjs +153 -0
- package/esm2020/lib/import-csv/import-csv-config.mjs +2 -0
- package/esm2020/lib/import-csv/import-csv.component.mjs +198 -0
- package/esm2020/lib/import-csv/import-csv.module.mjs +74 -0
- package/esm2020/lib/import-csv/import-history-list/import-history-list.component.mjs +71 -0
- package/esm2020/lib/import-csv/import-success/import-success.component.mjs +24 -0
- package/esm2020/lib/loader/index.mjs +2 -0
- package/esm2020/lib/loader/loader.component.mjs +23 -0
- package/esm2020/lib/loader/loader.module.mjs +28 -0
- package/esm2020/lib/login-history-for-user/login-history-for-user-routing.module.mjs +26 -0
- package/esm2020/lib/login-history-for-user/login-history-for-user.component.mjs +92 -0
- package/esm2020/lib/login-history-for-user/login-history-for-user.module.mjs +44 -0
- package/esm2020/lib/material.module.mjs +115 -0
- package/esm2020/lib/note/comment-form/comment-form.component.mjs +77 -0
- package/esm2020/lib/note/index.mjs +4 -0
- package/esm2020/lib/note/note-form/note-form.component.mjs +79 -0
- package/esm2020/lib/note/note-list/note-list.component.mjs +148 -0
- package/esm2020/lib/note/note.module.mjs +54 -0
- package/esm2020/lib/note/note.service.mjs +29 -0
- package/esm2020/lib/read-more/read-more.component.mjs +43 -0
- package/esm2020/lib/read-more/read-more.module.mjs +30 -0
- package/esm2020/lib/request-helper/request-helper.service.mjs +106 -0
- package/esm2020/lib/searchable-selector/index.mjs +3 -0
- package/esm2020/lib/searchable-selector/mat-select-infinite-scroll.directive.mjs +84 -0
- package/esm2020/lib/searchable-selector/searchable-selector.component.mjs +350 -0
- package/esm2020/lib/searchable-selector/searchable-selector.module.mjs +41 -0
- package/esm2020/lib/techlify-feature/on-off-switch/on-off-switch.component.mjs +24 -0
- package/esm2020/lib/techlify-feature/techlify-feature-enabled.directive.mjs +73 -0
- package/esm2020/lib/techlify-feature/techlify-feature-listing.component.mjs +172 -0
- package/esm2020/lib/techlify-feature/techlify-feature.module.mjs +48 -0
- package/esm2020/lib/techlify-feature/techlify-feature.routing.mjs +12 -0
- package/esm2020/lib/techlify-feature/techlify-feature.service.mjs +26 -0
- package/esm2020/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.mjs +15 -0
- package/esm2020/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.mjs +285 -0
- package/esm2020/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.mjs +38 -0
- package/esm2020/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.mjs +180 -0
- package/esm2020/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.mjs +46 -0
- package/esm2020/lib/techlify-update/techlify-update-form/techlify-update-form.component.mjs +114 -0
- package/esm2020/lib/techlify-update/techlify-update-form/techlify-update-form.module.mjs +38 -0
- package/esm2020/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.mjs +28 -0
- package/esm2020/lib/techlify-update/techlify-update-history/techlify-update-history.component.mjs +144 -0
- package/esm2020/lib/techlify-update/techlify-update-history/techlify-update-history.module.mjs +47 -0
- package/esm2020/lib/techlify-update/techlify-update-routing.module.mjs +28 -0
- package/esm2020/lib/techlify-update/techlify-update.module.mjs +51 -0
- package/esm2020/lib/techlify-update/techlify-update.service.mjs +41 -0
- package/esm2020/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.mjs +162 -0
- package/esm2020/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.mjs +77 -0
- package/esm2020/lib/techlify-update/update-notifier/update-notifier.component.mjs +53 -0
- package/esm2020/lib/techlify-update/update-notifier/update-notifier.module.mjs +39 -0
- package/esm2020/lib/techlify-update/update-view/update-view.component.mjs +38 -0
- package/esm2020/lib/techlify-update/update-view/update-view.module.mjs +30 -0
- package/esm2020/lib/timeline-filter/calculate-timeline.mjs +101 -0
- package/esm2020/lib/timeline-filter/index.mjs +4 -0
- package/esm2020/lib/timeline-filter/timeline-filter-routing.module.mjs +18 -0
- package/esm2020/lib/timeline-filter/timeline-filter.component.mjs +237 -0
- package/esm2020/lib/timeline-filter/timeline-filter.module.mjs +60 -0
- package/esm2020/lib/timeline-filter/timeline.model.mjs +18 -0
- package/esm2020/lib/utility/date-utils.service.mjs +50 -0
- package/esm2020/lib/utility/index.mjs +4 -0
- package/esm2020/lib/utility/num-items-selector.component.mjs +31 -0
- package/esm2020/lib/utility/number-selector.component.mjs +42 -0
- package/esm2020/lib/utility/utility.module.mjs +28 -0
- package/esm2020/ngx-techlify-core.mjs +5 -0
- package/esm2020/public-api.mjs +97 -0
- package/fesm2015/ngx-techlify-core.mjs +7890 -0
- package/fesm2015/ngx-techlify-core.mjs.map +1 -0
- package/fesm2020/ngx-techlify-core.mjs +7795 -0
- package/fesm2020/ngx-techlify-core.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/action-popup/action-popup.component.d.ts +18 -0
- package/lib/action-popup/action-popup.component.d.ts.map +1 -0
- package/lib/action-popup/action-popup.model.d.ts +6 -0
- package/lib/action-popup/action-popup.model.d.ts.map +1 -0
- package/lib/action-popup/action-popup.module.d.ts +11 -0
- package/lib/action-popup/action-popup.module.d.ts.map +1 -0
- package/lib/action-popup/index.d.ts +3 -0
- package/lib/action-popup/index.d.ts.map +1 -0
- package/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.d.ts +8 -0
- package/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.d.ts.map +1 -0
- package/lib/audit-log/audit-log-for-model/audit-log-for-model.component.d.ts +16 -0
- package/lib/audit-log/audit-log-for-model/audit-log-for-model.component.d.ts.map +1 -0
- package/lib/audit-log/audit-log-for-model/audit-log-for-model.module.d.ts +14 -0
- package/lib/audit-log/audit-log-for-model/audit-log-for-model.module.d.ts.map +1 -0
- package/lib/audit-log/audit-log-list/audit-log-list-routing.module.d.ts +8 -0
- package/lib/audit-log/audit-log-list/audit-log-list-routing.module.d.ts.map +1 -0
- package/lib/audit-log/audit-log-list/audit-log-list.component.d.ts +36 -0
- package/lib/audit-log/audit-log-list/audit-log-list.component.d.ts.map +1 -0
- package/lib/audit-log/audit-log-list/audit-log-list.module.d.ts +16 -0
- package/lib/audit-log/audit-log-list/audit-log-list.module.d.ts.map +1 -0
- package/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.d.ts +8 -0
- package/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.d.ts.map +1 -0
- package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.d.ts +23 -0
- package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.d.ts.map +1 -0
- package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.d.ts +14 -0
- package/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.d.ts.map +1 -0
- package/lib/audit-log/audit-log-routing.module.d.ts +8 -0
- package/lib/audit-log/audit-log-routing.module.d.ts.map +1 -0
- package/lib/audit-log/audit-log-view/audit-log-view-routing.module.d.ts +8 -0
- package/lib/audit-log/audit-log-view/audit-log-view-routing.module.d.ts.map +1 -0
- package/lib/audit-log/audit-log-view/audit-log-view.component.d.ts +21 -0
- package/lib/audit-log/audit-log-view/audit-log-view.component.d.ts.map +1 -0
- package/lib/audit-log/audit-log-view/audit-log-view.module.d.ts +12 -0
- package/lib/audit-log/audit-log-view/audit-log-view.module.d.ts.map +1 -0
- package/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.d.ts +8 -0
- package/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.d.ts.map +1 -0
- package/lib/audit-log/audit-log-view-model/audit-log-view-model.component.d.ts +19 -0
- package/lib/audit-log/audit-log-view-model/audit-log-view-model.component.d.ts.map +1 -0
- package/lib/audit-log/audit-log-view-model/audit-log-view-model.module.d.ts +12 -0
- package/lib/audit-log/audit-log-view-model/audit-log-view-model.module.d.ts.map +1 -0
- package/lib/audit-log/audit-log.module.d.ts +11 -0
- package/lib/audit-log/audit-log.module.d.ts.map +1 -0
- package/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.d.ts +8 -0
- package/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.d.ts.map +1 -0
- package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.d.ts +15 -0
- package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.d.ts.map +1 -0
- package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.d.ts +12 -0
- package/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.d.ts.map +1 -0
- package/lib/base-model/index.d.ts +4 -0
- package/lib/base-model/index.d.ts.map +1 -0
- package/lib/base-model/techlify-form-component.class.d.ts +44 -0
- package/lib/base-model/techlify-form-component.class.d.ts.map +1 -0
- package/lib/base-model/techlify-listing-component.class.d.ts +48 -0
- package/lib/base-model/techlify-listing-component.class.d.ts.map +1 -0
- package/lib/base-model/techlify-service.class.d.ts +53 -0
- package/lib/base-model/techlify-service.class.d.ts.map +1 -0
- package/lib/core/alert.service.d.ts +16 -0
- package/lib/core/alert.service.d.ts.map +1 -0
- package/lib/core/api-prefix.interceptor.d.ts +15 -0
- package/lib/core/api-prefix.interceptor.d.ts.map +1 -0
- package/lib/core/authentication.guard.d.ts +14 -0
- package/lib/core/authentication.guard.d.ts.map +1 -0
- package/lib/core/authentication.service.d.ts +27 -0
- package/lib/core/authentication.service.d.ts.map +1 -0
- package/lib/core/cache.interceptor.d.ts +25 -0
- package/lib/core/cache.interceptor.d.ts.map +1 -0
- package/lib/core/config.service.d.ts +23 -0
- package/lib/core/config.service.d.ts.map +1 -0
- package/lib/core/core.module.d.ts +12 -0
- package/lib/core/core.module.d.ts.map +1 -0
- package/lib/core/credentials.service.d.ts +40 -0
- package/lib/core/credentials.service.d.ts.map +1 -0
- package/{src/lib/core/dataManager.service.ts → lib/core/dataManager.service.d.ts} +26 -76
- package/lib/core/dataManager.service.d.ts.map +1 -0
- package/lib/core/error-handler.interceptor.d.ts +18 -0
- package/lib/core/error-handler.interceptor.d.ts.map +1 -0
- package/lib/core/error-handler.service.d.ts +18 -0
- package/lib/core/error-handler.service.d.ts.map +1 -0
- package/lib/core/filter.service.d.ts +12 -0
- package/lib/core/filter.service.d.ts.map +1 -0
- package/lib/core/form-validator.service.d.ts +12 -0
- package/lib/core/form-validator.service.d.ts.map +1 -0
- package/lib/core/header.interceptor.d.ts +12 -0
- package/lib/core/header.interceptor.d.ts.map +1 -0
- package/lib/core/http-cache.service.d.ts +58 -0
- package/lib/core/http-cache.service.d.ts.map +1 -0
- package/lib/core/http.service.d.ts +60 -0
- package/lib/core/http.service.d.ts.map +1 -0
- package/{src/lib/core/index.ts → lib/core/index.d.ts} +1 -1
- package/lib/core/index.d.ts.map +1 -0
- package/lib/core/logger.service.d.ts +86 -0
- package/lib/core/logger.service.d.ts.map +1 -0
- package/lib/core/route-reusable-strategy.d.ts +17 -0
- package/lib/core/route-reusable-strategy.d.ts.map +1 -0
- package/lib/core/snack/snack.component.d.ts +14 -0
- package/lib/core/snack/snack.component.d.ts.map +1 -0
- package/lib/core/snack/snack.module.d.ts +11 -0
- package/lib/core/snack/snack.module.d.ts.map +1 -0
- package/lib/core/storage.service.d.ts +19 -0
- package/lib/core/storage.service.d.ts.map +1 -0
- package/lib/core/techlify-config.model.d.ts +19 -0
- package/lib/core/techlify-config.model.d.ts.map +1 -0
- package/lib/core/token.interceptor.d.ts +15 -0
- package/lib/core/token.interceptor.d.ts.map +1 -0
- package/lib/data-table/data-table.component.d.ts +64 -0
- package/lib/data-table/data-table.component.d.ts.map +1 -0
- package/{src/lib/data-table/data-table.model.ts → lib/data-table/data-table.model.d.ts} +7 -9
- package/lib/data-table/data-table.model.d.ts.map +1 -0
- package/lib/data-table/data-table.module.d.ts +12 -0
- package/lib/data-table/data-table.module.d.ts.map +1 -0
- package/lib/data-table/index.d.ts +3 -0
- package/lib/data-table/index.d.ts.map +1 -0
- package/lib/date-validator.d.ts +2 -0
- package/lib/date-validator.d.ts.map +1 -0
- package/lib/document-viewer/document-viewer.component.d.ts +20 -0
- package/lib/document-viewer/document-viewer.component.d.ts.map +1 -0
- package/lib/document-viewer/document-viewer.module.d.ts +12 -0
- package/lib/document-viewer/document-viewer.module.d.ts.map +1 -0
- package/lib/document-viewer/index.d.ts +3 -0
- package/lib/document-viewer/index.d.ts.map +1 -0
- package/lib/document-viewer/viewer-config.model.d.ts +6 -0
- package/lib/document-viewer/viewer-config.model.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.d.ts +13 -0
- package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.d.ts +21 -0
- package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.d.ts +13 -0
- package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.d.ts.map +1 -0
- package/{src/lib/email-subscription/email-subscription-for-user/index.ts → lib/email-subscription/email-subscription-for-user/index.d.ts} +1 -0
- package/lib/email-subscription/email-subscription-for-user/index.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-routing.module.d.ts +8 -0
- package/lib/email-subscription/email-subscription-routing.module.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.d.ts +8 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.d.ts +36 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.d.ts +15 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.d.ts.map +1 -0
- package/{src/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.ts → lib/email-subscription/email-subscription-type/email-subscription-type-form/index.d.ts} +1 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-form/index.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.d.ts +15 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.d.ts +34 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.d.ts +15 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.d.ts +2 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.d.ts +8 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type.module.d.ts +9 -0
- package/lib/email-subscription/email-subscription-type/email-subscription-type.module.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.d.ts +8 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.d.ts +36 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.d.ts +15 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.d.ts.map +1 -0
- package/{src/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.ts → lib/email-subscription/email-subscription-user/email-subscription-user-form/index.d.ts} +1 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-form/index.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.d.ts +15 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.d.ts +36 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.d.ts +16 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.d.ts.map +1 -0
- package/{src/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.ts → lib/email-subscription/email-subscription-user/email-subscription-user-list/index.d.ts} +1 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list/index.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.d.ts +8 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.d.ts +17 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.d.ts +14 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.d.ts.map +1 -0
- package/{src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.ts → lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.d.ts} +1 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/index.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.d.ts +8 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user.module.d.ts +9 -0
- package/lib/email-subscription/email-subscription-user/email-subscription-user.module.d.ts.map +1 -0
- package/lib/email-subscription/email-subscription.module.d.ts +9 -0
- package/lib/email-subscription/email-subscription.module.d.ts.map +1 -0
- package/lib/entity-files/entity-file-form/entity-file-form.component.d.ts +42 -0
- package/lib/entity-files/entity-file-form/entity-file-form.component.d.ts.map +1 -0
- package/lib/entity-files/entity-file.service.d.ts +15 -0
- package/lib/entity-files/entity-file.service.d.ts.map +1 -0
- package/lib/entity-files/entity-files-view-all.component.d.ts +69 -0
- package/lib/entity-files/entity-files-view-all.component.d.ts.map +1 -0
- package/lib/entity-files/entity-files-view-all.module.d.ts +20 -0
- package/lib/entity-files/entity-files-view-all.module.d.ts.map +1 -0
- package/lib/entity-files/index.d.ts +3 -0
- package/lib/entity-files/index.d.ts.map +1 -0
- package/lib/export-excel/export-excel-button/export-excel-button.component.d.ts +12 -0
- package/lib/export-excel/export-excel-button/export-excel-button.component.d.ts.map +1 -0
- package/lib/export-excel/export-excel.module.d.ts +10 -0
- package/lib/export-excel/export-excel.module.d.ts.map +1 -0
- package/lib/file-dropper/file-dropper.component.d.ts +37 -0
- package/lib/file-dropper/file-dropper.component.d.ts.map +1 -0
- package/lib/file-dropper/file-dropper.model.d.ts +11 -0
- package/lib/file-dropper/file-dropper.model.d.ts.map +1 -0
- package/lib/file-dropper/file-dropper.module.d.ts +11 -0
- package/lib/file-dropper/file-dropper.module.d.ts.map +1 -0
- package/lib/file-dropper/index.d.ts +3 -0
- package/lib/file-dropper/index.d.ts.map +1 -0
- package/lib/import-csv/data-import/data-import.component.d.ts +10 -0
- package/lib/import-csv/data-import/data-import.component.d.ts.map +1 -0
- package/lib/import-csv/failed-items-list/failed-items-list.component.d.ts +16 -0
- package/lib/import-csv/failed-items-list/failed-items-list.component.d.ts.map +1 -0
- package/lib/import-csv/field-mapping/field-mapping.component.d.ts +38 -0
- package/lib/import-csv/field-mapping/field-mapping.component.d.ts.map +1 -0
- package/lib/import-csv/import-csv-config.d.ts +18 -0
- package/lib/import-csv/import-csv-config.d.ts.map +1 -0
- package/lib/import-csv/import-csv.component.d.ts +37 -0
- package/lib/import-csv/import-csv.component.d.ts.map +1 -0
- package/lib/import-csv/import-csv.module.d.ts +21 -0
- package/lib/import-csv/import-csv.module.d.ts.map +1 -0
- package/lib/import-csv/import-history-list/import-history-list.component.d.ts +25 -0
- package/lib/import-csv/import-history-list/import-history-list.component.d.ts.map +1 -0
- package/lib/import-csv/import-success/import-success.component.d.ts +12 -0
- package/lib/import-csv/import-success/import-success.component.d.ts.map +1 -0
- package/{src/lib/loader/index.ts → lib/loader/index.d.ts} +1 -0
- package/lib/loader/index.d.ts.map +1 -0
- package/lib/loader/loader.component.d.ts +12 -0
- package/lib/loader/loader.component.d.ts.map +1 -0
- package/lib/loader/loader.module.d.ts +10 -0
- package/lib/loader/loader.module.d.ts.map +1 -0
- package/lib/login-history-for-user/login-history-for-user-routing.module.d.ts +8 -0
- package/lib/login-history-for-user/login-history-for-user-routing.module.d.ts.map +1 -0
- package/lib/login-history-for-user/login-history-for-user.component.d.ts +27 -0
- package/lib/login-history-for-user/login-history-for-user.component.d.ts.map +1 -0
- package/lib/login-history-for-user/login-history-for-user.module.d.ts +15 -0
- package/lib/login-history-for-user/login-history-for-user.module.d.ts.map +1 -0
- package/lib/material.module.d.ts +27 -0
- package/lib/material.module.d.ts.map +1 -0
- package/lib/note/comment-form/comment-form.component.d.ts +26 -0
- package/lib/note/comment-form/comment-form.component.d.ts.map +1 -0
- package/{src/lib/note/index.ts → lib/note/index.d.ts} +1 -0
- package/lib/note/index.d.ts.map +1 -0
- package/lib/note/note-form/note-form.component.d.ts +31 -0
- package/lib/note/note-form/note-form.component.d.ts.map +1 -0
- package/lib/note/note-list/note-list.component.d.ts +32 -0
- package/lib/note/note-list/note-list.component.d.ts.map +1 -0
- package/lib/note/note.module.d.ts +17 -0
- package/lib/note/note.module.d.ts.map +1 -0
- package/lib/note/note.service.d.ts +13 -0
- package/lib/note/note.service.d.ts.map +1 -0
- package/lib/read-more/read-more.component.d.ts +16 -0
- package/lib/read-more/read-more.component.d.ts.map +1 -0
- package/lib/read-more/read-more.module.d.ts +11 -0
- package/lib/read-more/read-more.module.d.ts.map +1 -0
- package/lib/request-helper/request-helper.service.d.ts +41 -0
- package/lib/request-helper/request-helper.service.d.ts.map +1 -0
- package/lib/searchable-selector/index.d.ts +3 -0
- package/lib/searchable-selector/index.d.ts.map +1 -0
- package/lib/searchable-selector/mat-select-infinite-scroll.directive.d.ts +27 -0
- package/lib/searchable-selector/mat-select-infinite-scroll.directive.d.ts.map +1 -0
- package/lib/searchable-selector/searchable-selector.component.d.ts +85 -0
- package/lib/searchable-selector/searchable-selector.component.d.ts.map +1 -0
- package/lib/searchable-selector/searchable-selector.module.d.ts +13 -0
- package/lib/searchable-selector/searchable-selector.module.d.ts.map +1 -0
- package/lib/techlify-feature/on-off-switch/on-off-switch.component.d.ts +13 -0
- package/lib/techlify-feature/on-off-switch/on-off-switch.component.d.ts.map +1 -0
- package/lib/techlify-feature/techlify-feature-enabled.directive.d.ts +21 -0
- package/lib/techlify-feature/techlify-feature-enabled.directive.d.ts.map +1 -0
- package/lib/techlify-feature/techlify-feature-listing.component.d.ts +41 -0
- package/lib/techlify-feature/techlify-feature-listing.component.d.ts.map +1 -0
- package/lib/techlify-feature/techlify-feature.module.d.ts +17 -0
- package/lib/techlify-feature/techlify-feature.module.d.ts.map +1 -0
- package/lib/techlify-feature/techlify-feature.routing.d.ts +3 -0
- package/lib/techlify-feature/techlify-feature.routing.d.ts.map +1 -0
- package/lib/techlify-feature/techlify-feature.service.d.ts +12 -0
- package/lib/techlify-feature/techlify-feature.service.d.ts.map +1 -0
- package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.d.ts +13 -0
- package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.d.ts.map +1 -0
- package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.d.ts +80 -0
- package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.d.ts.map +1 -0
- package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.d.ts +13 -0
- package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.d.ts.map +1 -0
- package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.d.ts +62 -0
- package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.d.ts.map +1 -0
- package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.d.ts +15 -0
- package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.d.ts.map +1 -0
- package/lib/techlify-update/techlify-update-form/techlify-update-form.component.d.ts +34 -0
- package/lib/techlify-update/techlify-update-form/techlify-update-form.component.d.ts.map +1 -0
- package/lib/techlify-update/techlify-update-form/techlify-update-form.module.d.ts +13 -0
- package/lib/techlify-update/techlify-update-form/techlify-update-form.module.d.ts.map +1 -0
- package/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.d.ts +8 -0
- package/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.d.ts.map +1 -0
- package/lib/techlify-update/techlify-update-history/techlify-update-history.component.d.ts +35 -0
- package/lib/techlify-update/techlify-update-history/techlify-update-history.component.d.ts.map +1 -0
- package/lib/techlify-update/techlify-update-history/techlify-update-history.module.d.ts +16 -0
- package/lib/techlify-update/techlify-update-history/techlify-update-history.module.d.ts.map +1 -0
- package/lib/techlify-update/techlify-update-routing.module.d.ts +8 -0
- package/lib/techlify-update/techlify-update-routing.module.d.ts.map +1 -0
- package/lib/techlify-update/techlify-update.module.d.ts +17 -0
- package/lib/techlify-update/techlify-update.module.d.ts.map +1 -0
- package/lib/techlify-update/techlify-update.service.d.ts +17 -0
- package/lib/techlify-update/techlify-update.service.d.ts.map +1 -0
- package/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.d.ts +35 -0
- package/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.d.ts.map +1 -0
- package/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.d.ts +29 -0
- package/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.d.ts.map +1 -0
- package/lib/techlify-update/update-notifier/update-notifier.component.d.ts +20 -0
- package/lib/techlify-update/update-notifier/update-notifier.component.d.ts.map +1 -0
- package/lib/techlify-update/update-notifier/update-notifier.module.d.ts +14 -0
- package/lib/techlify-update/update-notifier/update-notifier.module.d.ts.map +1 -0
- package/lib/techlify-update/update-view/update-view.component.d.ts +18 -0
- package/lib/techlify-update/update-view/update-view.component.d.ts.map +1 -0
- package/lib/techlify-update/update-view/update-view.module.d.ts +11 -0
- package/lib/techlify-update/update-view/update-view.module.d.ts.map +1 -0
- package/lib/timeline-filter/calculate-timeline.d.ts +7 -0
- package/lib/timeline-filter/calculate-timeline.d.ts.map +1 -0
- package/lib/timeline-filter/index.d.ts +4 -0
- package/lib/timeline-filter/index.d.ts.map +1 -0
- package/lib/timeline-filter/timeline-filter-routing.module.d.ts +8 -0
- package/lib/timeline-filter/timeline-filter-routing.module.d.ts.map +1 -0
- package/lib/timeline-filter/timeline-filter.component.d.ts +66 -0
- package/lib/timeline-filter/timeline-filter.component.d.ts.map +1 -0
- package/lib/timeline-filter/timeline-filter.module.d.ts +19 -0
- package/lib/timeline-filter/timeline-filter.module.d.ts.map +1 -0
- package/lib/timeline-filter/timeline.model.d.ts +18 -0
- package/lib/timeline-filter/timeline.model.d.ts.map +1 -0
- package/lib/utility/date-utils.service.d.ts +25 -0
- package/lib/utility/date-utils.service.d.ts.map +1 -0
- package/{src/lib/utility/index.ts → lib/utility/index.d.ts} +2 -1
- package/lib/utility/index.d.ts.map +1 -0
- package/lib/utility/num-items-selector.component.d.ts +20 -0
- package/lib/utility/num-items-selector.component.d.ts.map +1 -0
- package/lib/utility/number-selector.component.d.ts +24 -0
- package/lib/utility/number-selector.component.d.ts.map +1 -0
- package/lib/utility/utility.module.d.ts +11 -0
- package/lib/utility/utility.module.d.ts.map +1 -0
- package/ngx-techlify-core.d.ts.map +1 -0
- package/package.json +49 -29
- package/{src/public-api.ts → public-api.d.ts} +1 -30
- package/public-api.d.ts.map +1 -0
- package/karma.conf.js +0 -44
- package/ng-package.json +0 -27
- package/src/lib/action-popup/action-popup.component.html +0 -21
- package/src/lib/action-popup/action-popup.component.scss +0 -0
- package/src/lib/action-popup/action-popup.component.spec.ts +0 -25
- package/src/lib/action-popup/action-popup.component.ts +0 -31
- package/src/lib/action-popup/action-popup.model.ts +0 -5
- package/src/lib/action-popup/action-popup.module.ts +0 -23
- package/src/lib/action-popup/index.ts +0 -2
- package/src/lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module.ts +0 -10
- package/src/lib/audit-log/audit-log-for-model/audit-log-for-model.component.html +0 -9
- package/src/lib/audit-log/audit-log-for-model/audit-log-for-model.component.scss +0 -0
- package/src/lib/audit-log/audit-log-for-model/audit-log-for-model.component.spec.ts +0 -25
- package/src/lib/audit-log/audit-log-for-model/audit-log-for-model.component.ts +0 -49
- package/src/lib/audit-log/audit-log-for-model/audit-log-for-model.module.ts +0 -24
- package/src/lib/audit-log/audit-log-list/audit-log-list-routing.module.ts +0 -10
- package/src/lib/audit-log/audit-log-list/audit-log-list.component.html +0 -92
- package/src/lib/audit-log/audit-log-list/audit-log-list.component.scss +0 -21
- package/src/lib/audit-log/audit-log-list/audit-log-list.component.spec.ts +0 -25
- package/src/lib/audit-log/audit-log-list/audit-log-list.component.ts +0 -138
- package/src/lib/audit-log/audit-log-list/audit-log-list.module.ts +0 -28
- package/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module.ts +0 -10
- package/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.html +0 -49
- package/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.scss +0 -0
- package/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.spec.ts +0 -26
- package/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.component.ts +0 -74
- package/src/lib/audit-log/audit-log-list-filter/audit-log-list-filter.module.ts +0 -24
- package/src/lib/audit-log/audit-log-routing.module.ts +0 -18
- package/src/lib/audit-log/audit-log-view/audit-log-view-routing.module.ts +0 -10
- package/src/lib/audit-log/audit-log-view/audit-log-view.component.html +0 -46
- package/src/lib/audit-log/audit-log-view/audit-log-view.component.scss +0 -0
- package/src/lib/audit-log/audit-log-view/audit-log-view.component.spec.ts +0 -25
- package/src/lib/audit-log/audit-log-view/audit-log-view.component.ts +0 -54
- package/src/lib/audit-log/audit-log-view/audit-log-view.module.ts +0 -20
- package/src/lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module.ts +0 -10
- package/src/lib/audit-log/audit-log-view-model/audit-log-view-model.component.html +0 -38
- package/src/lib/audit-log/audit-log-view-model/audit-log-view-model.component.scss +0 -4
- package/src/lib/audit-log/audit-log-view-model/audit-log-view-model.component.spec.ts +0 -25
- package/src/lib/audit-log/audit-log-view-model/audit-log-view-model.component.ts +0 -53
- package/src/lib/audit-log/audit-log-view-model/audit-log-view-model.module.ts +0 -20
- package/src/lib/audit-log/audit-log.module.ts +0 -20
- package/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module.ts +0 -10
- package/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.html +0 -4
- package/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.scss +0 -4
- package/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.spec.ts +0 -25
- package/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.component.ts +0 -28
- package/src/lib/audit-log/audit-logs-view-model/audit-logs-view-model.module.ts +0 -20
- package/src/lib/base-model/index.ts +0 -3
- package/src/lib/base-model/techlify-form-component.class.ts +0 -60
- package/src/lib/base-model/techlify-listing-component.class.ts +0 -67
- package/src/lib/base-model/techlify-service.class.ts +0 -73
- package/src/lib/core/alert.service.ts +0 -32
- package/src/lib/core/api-prefix.interceptor.ts +0 -22
- package/src/lib/core/authentication.guard.ts +0 -34
- package/src/lib/core/authentication.service.ts +0 -53
- package/src/lib/core/cache.interceptor.ts +0 -59
- package/src/lib/core/config.service.ts +0 -52
- package/src/lib/core/core.module.ts +0 -44
- package/src/lib/core/credentials.service.ts +0 -91
- package/src/lib/core/error-handler.interceptor.ts +0 -43
- package/src/lib/core/error-handler.service.ts +0 -61
- package/src/lib/core/filter.service.ts +0 -42
- package/src/lib/core/form-validator.service.ts +0 -23
- package/src/lib/core/header.interceptor.ts +0 -22
- package/src/lib/core/http-cache.service.ts +0 -122
- package/src/lib/core/http.service.ts +0 -137
- package/src/lib/core/logger.service.ts +0 -113
- package/src/lib/core/route-reusable-strategy.ts +0 -36
- package/src/lib/core/snack/error-snack.html +0 -8
- package/src/lib/core/snack/snack.component.ts +0 -19
- package/src/lib/core/snack/snack.module.ts +0 -22
- package/src/lib/core/snack/snack.scss +0 -18
- package/src/lib/core/snack/success-snack.html +0 -8
- package/src/lib/core/storage.service.ts +0 -38
- package/src/lib/core/techlify-config.model.ts +0 -32
- package/src/lib/core/token.interceptor.ts +0 -25
- package/src/lib/data-table/data-table.component.html +0 -139
- package/src/lib/data-table/data-table.component.scss +0 -54
- package/src/lib/data-table/data-table.component.spec.ts +0 -25
- package/src/lib/data-table/data-table.component.ts +0 -232
- package/src/lib/data-table/data-table.module.ts +0 -23
- package/src/lib/data-table/index.ts +0 -2
- package/src/lib/date-validator.ts +0 -12
- package/src/lib/document-viewer/document-viewer.component.css +0 -5
- package/src/lib/document-viewer/document-viewer.component.html +0 -19
- package/src/lib/document-viewer/document-viewer.component.ts +0 -66
- package/src/lib/document-viewer/document-viewer.module.ts +0 -22
- package/src/lib/document-viewer/index.ts +0 -2
- package/src/lib/document-viewer/viewer-config.model.ts +0 -5
- package/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.ts +0 -25
- package/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.html +0 -23
- package/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.scss +0 -4
- package/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.spec.ts +0 -25
- package/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component.ts +0 -74
- package/src/lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module.ts +0 -22
- package/src/lib/email-subscription/email-subscription-routing.module.ts +0 -10
- package/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module.ts +0 -10
- package/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.html +0 -47
- package/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.scss +0 -0
- package/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.spec.ts +0 -25
- package/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component.ts +0 -113
- package/src/lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module.ts +0 -28
- package/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.ts +0 -29
- package/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.html +0 -76
- package/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.scss +0 -4
- package/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.spec.ts +0 -25
- package/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component.ts +0 -170
- package/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module.ts +0 -26
- package/src/lib/email-subscription/email-subscription-type/email-subscription-type-list/index.ts +0 -1
- package/src/lib/email-subscription/email-subscription-type/email-subscription-type-routing.module.ts +0 -11
- package/src/lib/email-subscription/email-subscription-type/email-subscription-type.module.ts +0 -14
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module.ts +0 -10
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.html +0 -38
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.scss +0 -0
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.spec.ts +0 -25
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component.ts +0 -113
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module.ts +0 -26
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.ts +0 -27
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.html +0 -74
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.scss +0 -5
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.spec.ts +0 -25
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component.ts +0 -174
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module.ts +0 -28
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module.ts +0 -10
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.html +0 -21
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.scss +0 -0
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.spec.ts +0 -25
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component.ts +0 -56
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module.ts +0 -24
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user-routing.module.ts +0 -11
- package/src/lib/email-subscription/email-subscription-user/email-subscription-user.module.ts +0 -14
- package/src/lib/email-subscription/email-subscription.module.ts +0 -15
- package/src/lib/entity-files/entity-file-form/entity-file-form.component.css +0 -0
- package/src/lib/entity-files/entity-file-form/entity-file-form.component.html +0 -45
- package/src/lib/entity-files/entity-file-form/entity-file-form.component.ts +0 -172
- package/src/lib/entity-files/entity-file.service.ts +0 -46
- package/src/lib/entity-files/entity-files-view-all.component.css +0 -0
- package/src/lib/entity-files/entity-files-view-all.component.html +0 -236
- package/src/lib/entity-files/entity-files-view-all.component.ts +0 -325
- package/src/lib/entity-files/entity-files-view-all.module.ts +0 -38
- package/src/lib/entity-files/index.ts +0 -2
- package/src/lib/export-excel/export-excel-button/export-excel-button.component.html +0 -1
- package/src/lib/export-excel/export-excel-button/export-excel-button.component.scss +0 -0
- package/src/lib/export-excel/export-excel-button/export-excel-button.component.spec.ts +0 -25
- package/src/lib/export-excel/export-excel-button/export-excel-button.component.ts +0 -31
- package/src/lib/export-excel/export-excel.module.ts +0 -16
- package/src/lib/file-dropper/file-dropper.component.html +0 -41
- package/src/lib/file-dropper/file-dropper.component.scss +0 -8
- package/src/lib/file-dropper/file-dropper.component.ts +0 -139
- package/src/lib/file-dropper/file-dropper.model.ts +0 -10
- package/src/lib/file-dropper/file-dropper.module.ts +0 -18
- package/src/lib/file-dropper/index.ts +0 -2
- package/src/lib/import-csv/data-import/data-import.component.html +0 -11
- package/src/lib/import-csv/data-import/data-import.component.scss +0 -0
- package/src/lib/import-csv/data-import/data-import.component.spec.ts +0 -28
- package/src/lib/import-csv/data-import/data-import.component.ts +0 -16
- package/src/lib/import-csv/failed-items-list/failed-items-list.component.html +0 -61
- package/src/lib/import-csv/failed-items-list/failed-items-list.component.scss +0 -0
- package/src/lib/import-csv/failed-items-list/failed-items-list.component.spec.ts +0 -28
- package/src/lib/import-csv/failed-items-list/failed-items-list.component.ts +0 -30
- package/src/lib/import-csv/field-mapping/field-mapping.component.html +0 -70
- package/src/lib/import-csv/field-mapping/field-mapping.component.scss +0 -15
- package/src/lib/import-csv/field-mapping/field-mapping.component.ts +0 -161
- package/src/lib/import-csv/import-csv-config.ts +0 -17
- package/src/lib/import-csv/import-csv.component.html +0 -71
- package/src/lib/import-csv/import-csv.component.scss +0 -15
- package/src/lib/import-csv/import-csv.component.spec.ts +0 -28
- package/src/lib/import-csv/import-csv.component.ts +0 -198
- package/src/lib/import-csv/import-csv.module.ts +0 -43
- package/src/lib/import-csv/import-history-list/import-history-list.component.html +0 -43
- package/src/lib/import-csv/import-history-list/import-history-list.component.scss +0 -0
- package/src/lib/import-csv/import-history-list/import-history-list.component.spec.ts +0 -28
- package/src/lib/import-csv/import-history-list/import-history-list.component.ts +0 -74
- package/src/lib/import-csv/import-success/import-success.component.html +0 -22
- package/src/lib/import-csv/import-success/import-success.component.scss +0 -0
- package/src/lib/import-csv/import-success/import-success.component.spec.ts +0 -28
- package/src/lib/import-csv/import-success/import-success.component.ts +0 -17
- package/src/lib/loader/loader.component.html +0 -4
- package/src/lib/loader/loader.component.scss +0 -8
- package/src/lib/loader/loader.component.spec.ts +0 -73
- package/src/lib/loader/loader.component.ts +0 -18
- package/src/lib/loader/loader.module.ts +0 -18
- package/src/lib/login-history-for-user/login-history-for-user-routing.module.ts +0 -18
- package/src/lib/login-history-for-user/login-history-for-user.component.html +0 -31
- package/src/lib/login-history-for-user/login-history-for-user.component.scss +0 -4
- package/src/lib/login-history-for-user/login-history-for-user.component.spec.ts +0 -25
- package/src/lib/login-history-for-user/login-history-for-user.component.ts +0 -94
- package/src/lib/login-history-for-user/login-history-for-user.module.ts +0 -26
- package/src/lib/material.module.ts +0 -68
- package/src/lib/note/comment-form/comment-form.component.html +0 -45
- package/src/lib/note/comment-form/comment-form.component.scss +0 -7
- package/src/lib/note/comment-form/comment-form.component.spec.ts +0 -24
- package/src/lib/note/comment-form/comment-form.component.ts +0 -84
- package/src/lib/note/note-form/note-form.component.css +0 -0
- package/src/lib/note/note-form/note-form.component.html +0 -26
- package/src/lib/note/note-form/note-form.component.spec.ts +0 -25
- package/src/lib/note/note-form/note-form.component.ts +0 -93
- package/src/lib/note/note-list/note-list.component.css +0 -4
- package/src/lib/note/note-list/note-list.component.html +0 -58
- package/src/lib/note/note-list/note-list.component.spec.ts +0 -25
- package/src/lib/note/note-list/note-list.component.ts +0 -156
- package/src/lib/note/note.module.ts +0 -33
- package/src/lib/note/note.service.spec.ts +0 -16
- package/src/lib/note/note.service.ts +0 -26
- package/src/lib/read-more/read-more.component.html +0 -3
- package/src/lib/read-more/read-more.component.scss +0 -8
- package/src/lib/read-more/read-more.component.spec.ts +0 -24
- package/src/lib/read-more/read-more.component.ts +0 -41
- package/src/lib/read-more/read-more.module.ts +0 -18
- package/src/lib/request-helper/request-helper.service.ts +0 -92
- package/src/lib/searchable-selector/index.ts +0 -2
- package/src/lib/searchable-selector/mat-select-infinite-scroll.directive.ts +0 -89
- package/src/lib/searchable-selector/searchable-selector.component.html +0 -21
- package/src/lib/searchable-selector/searchable-selector.component.scss +0 -8
- package/src/lib/searchable-selector/searchable-selector.component.spec.ts +0 -25
- package/src/lib/searchable-selector/searchable-selector.component.ts +0 -337
- package/src/lib/searchable-selector/searchable-selector.module.ts +0 -25
- package/src/lib/techlify-feature/on-off-switch/on-off-switch.component.html +0 -4
- package/src/lib/techlify-feature/on-off-switch/on-off-switch.component.scss +0 -0
- package/src/lib/techlify-feature/on-off-switch/on-off-switch.component.spec.ts +0 -28
- package/src/lib/techlify-feature/on-off-switch/on-off-switch.component.ts +0 -25
- package/src/lib/techlify-feature/techlify-feature-enabled.directive.ts +0 -71
- package/src/lib/techlify-feature/techlify-feature-listing.component.html +0 -65
- package/src/lib/techlify-feature/techlify-feature-listing.component.scss +0 -0
- package/src/lib/techlify-feature/techlify-feature-listing.component.ts +0 -174
- package/src/lib/techlify-feature/techlify-feature.module.ts +0 -28
- package/src/lib/techlify-feature/techlify-feature.routing.ts +0 -13
- package/src/lib/techlify-feature/techlify-feature.service.ts +0 -23
- package/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.ts +0 -25
- package/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.html +0 -18
- package/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.scss +0 -6
- package/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.spec.ts +0 -25
- package/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.ts +0 -308
- package/src/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.ts +0 -24
- package/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.html +0 -8
- package/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.scss +0 -0
- package/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.spec.ts +0 -25
- package/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.ts +0 -180
- package/src/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.ts +0 -28
- package/src/lib/techlify-update/techlify-update-form/techlify-update-form.component.html +0 -78
- package/src/lib/techlify-update/techlify-update-form/techlify-update-form.component.scss +0 -0
- package/src/lib/techlify-update/techlify-update-form/techlify-update-form.component.spec.ts +0 -25
- package/src/lib/techlify-update/techlify-update-form/techlify-update-form.component.ts +0 -113
- package/src/lib/techlify-update/techlify-update-form/techlify-update-form.module.ts +0 -25
- package/src/lib/techlify-update/techlify-update-history/index.ts +0 -1
- package/src/lib/techlify-update/techlify-update-history/techlify-update-history-routing.module.ts +0 -21
- package/src/lib/techlify-update/techlify-update-history/techlify-update-history.component.html +0 -94
- package/src/lib/techlify-update/techlify-update-history/techlify-update-history.component.scss +0 -0
- package/src/lib/techlify-update/techlify-update-history/techlify-update-history.component.ts +0 -142
- package/src/lib/techlify-update/techlify-update-history/techlify-update-history.module.ts +0 -25
- package/src/lib/techlify-update/techlify-update-routing.module.ts +0 -21
- package/src/lib/techlify-update/techlify-update.module.ts +0 -27
- package/src/lib/techlify-update/techlify-update.service.spec.ts +0 -16
- package/src/lib/techlify-update/techlify-update.service.ts +0 -42
- package/src/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.html +0 -104
- package/src/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.scss +0 -0
- package/src/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.spec.ts +0 -25
- package/src/lib/techlify-update/techlify-updates-list/techlify-updates-list.component.ts +0 -167
- package/src/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.html +0 -39
- package/src/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.scss +0 -57
- package/src/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.spec.ts +0 -25
- package/src/lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component.ts +0 -76
- package/src/lib/techlify-update/update-notifier/update-notifier.component.html +0 -0
- package/src/lib/techlify-update/update-notifier/update-notifier.component.scss +0 -3
- package/src/lib/techlify-update/update-notifier/update-notifier.component.spec.ts +0 -25
- package/src/lib/techlify-update/update-notifier/update-notifier.component.ts +0 -56
- package/src/lib/techlify-update/update-notifier/update-notifier.module.ts +0 -27
- package/src/lib/techlify-update/update-view/update-view.component.html +0 -63
- package/src/lib/techlify-update/update-view/update-view.component.scss +0 -19
- package/src/lib/techlify-update/update-view/update-view.component.spec.ts +0 -25
- package/src/lib/techlify-update/update-view/update-view.component.ts +0 -36
- package/src/lib/techlify-update/update-view/update-view.module.ts +0 -23
- package/src/lib/timeline-filter/calculate-timeline.ts +0 -109
- package/src/lib/timeline-filter/index.ts +0 -3
- package/src/lib/timeline-filter/timeline-filter-routing.module.ts +0 -10
- package/src/lib/timeline-filter/timeline-filter.component.html +0 -54
- package/src/lib/timeline-filter/timeline-filter.component.scss +0 -0
- package/src/lib/timeline-filter/timeline-filter.component.spec.ts +0 -25
- package/src/lib/timeline-filter/timeline-filter.component.ts +0 -220
- package/src/lib/timeline-filter/timeline-filter.module.ts +0 -22
- package/src/lib/timeline-filter/timeline.model.ts +0 -17
- package/src/lib/utility/date-utils.service.ts +0 -51
- package/src/lib/utility/num-items-selector.component.ts +0 -29
- package/src/lib/utility/num-items-selector.html +0 -13
- package/src/lib/utility/number-selector.component.ts +0 -38
- package/src/lib/utility/number-selector.html +0 -6
- package/src/lib/utility/utility.module.ts +0 -20
- package/src/test.ts +0 -26
- package/tsconfig.lib.json +0 -26
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -17
- package/tslint.json +0 -17
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@angular/flex-layout/flex";
|
|
5
|
+
import * as i3 from "@angular/material/button";
|
|
6
|
+
import * as i4 from "@angular/material/icon";
|
|
7
|
+
import * as i5 from "@angular/material/divider";
|
|
8
|
+
export class FailedItemsListComponent {
|
|
9
|
+
constructor(location) {
|
|
10
|
+
this.location = location;
|
|
11
|
+
this.onReUpload = new EventEmitter();
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
}
|
|
15
|
+
isValidDate(d) {
|
|
16
|
+
var date = new Date(d);
|
|
17
|
+
return date instanceof Date && !isNaN(date.getTime());
|
|
18
|
+
}
|
|
19
|
+
reUpload() {
|
|
20
|
+
this.onReUpload.emit(true);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
FailedItemsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FailedItemsListComponent, deps: [{ token: i1.Location }], target: i0.ɵɵFactoryTarget.Component });
|
|
24
|
+
FailedItemsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FailedItemsListComponent, selector: "app-failed-items-list", inputs: { failedItems: "failedItems", selectedFields: "selectedFields" }, outputs: { onReUpload: "onReUpload" }, ngImport: i0, template: "<div *ngIf=\"failedItems.length\" class=\"mt-4\" fxLayout=\"column\">\r\n <div fxLayout=\"row wrap\" class=\"pb-3\">\r\n <h5 fxFlex=\"30%\" class=\"primary-color\">Summary</h5>\r\n <div fxFlex=\"70%\" fxLayoutAlign=\"center center\">\r\n <h5 class=\"secondary-color\">\r\n <span class=\"font-weight-bold\">{{failedItems.length}}</span>\r\n </h5>\r\n <span class=\"text-muted ml-2\"> Error(s) Found In Uploaded File</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n <div fxLayout=\"row wrap\" class=\"pt-3\">\r\n <h5 class=\"primary-color\">Errors</h5>\r\n <div style=\"overflow-x: auto;width: 1100px;\" class=\"pt-3\">\r\n <table class=\"table table-bordered table-striped table-hover table-sm ml-4 w-100\">\r\n <thead>\r\n <tr>\r\n <th>#</th>\r\n <th *ngFor=\"let field of selectedFields;\">{{field?.label}}</th>\r\n <th class=\"text-danger\">Error</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let timesheet of failedItems; let i=index\">\r\n <tr>\r\n <td>{{i + 1}}</td>\r\n <td *ngFor=\"let field of selectedFields;\">\r\n <ng-container *ngIf=\"(field.propertyType == 'date' || field.propertyType == 'dateTime')\r\n &&isValidDate(timesheet[field.property]);else elseProperty;\">\r\n {{ timesheet[field.property] | date: 'MMM d, y, H:mm:ss' }}\r\n </ng-container>\r\n <ng-template #elseProperty>\r\n {{ timesheet[field.property] }}\r\n </ng-template>\r\n </td>\r\n <td class=\"text-danger\">\r\n {{timesheet?.error}}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"mt-1\" fxFlex=\"100%\" fxLayoutAlign=\"end\">\r\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\r\n Close\r\n </button>\r\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\r\n <mat-icon>\r\n <span class=\"material-icons-outlined\">\r\n file_upload\r\n </span>\r\n </mat-icon>\r\n Re-upload\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FailedItemsListComponent, decorators: [{
|
|
26
|
+
type: Component,
|
|
27
|
+
args: [{ selector: 'app-failed-items-list', template: "<div *ngIf=\"failedItems.length\" class=\"mt-4\" fxLayout=\"column\">\r\n <div fxLayout=\"row wrap\" class=\"pb-3\">\r\n <h5 fxFlex=\"30%\" class=\"primary-color\">Summary</h5>\r\n <div fxFlex=\"70%\" fxLayoutAlign=\"center center\">\r\n <h5 class=\"secondary-color\">\r\n <span class=\"font-weight-bold\">{{failedItems.length}}</span>\r\n </h5>\r\n <span class=\"text-muted ml-2\"> Error(s) Found In Uploaded File</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n <div fxLayout=\"row wrap\" class=\"pt-3\">\r\n <h5 class=\"primary-color\">Errors</h5>\r\n <div style=\"overflow-x: auto;width: 1100px;\" class=\"pt-3\">\r\n <table class=\"table table-bordered table-striped table-hover table-sm ml-4 w-100\">\r\n <thead>\r\n <tr>\r\n <th>#</th>\r\n <th *ngFor=\"let field of selectedFields;\">{{field?.label}}</th>\r\n <th class=\"text-danger\">Error</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let timesheet of failedItems; let i=index\">\r\n <tr>\r\n <td>{{i + 1}}</td>\r\n <td *ngFor=\"let field of selectedFields;\">\r\n <ng-container *ngIf=\"(field.propertyType == 'date' || field.propertyType == 'dateTime')\r\n &&isValidDate(timesheet[field.property]);else elseProperty;\">\r\n {{ timesheet[field.property] | date: 'MMM d, y, H:mm:ss' }}\r\n </ng-container>\r\n <ng-template #elseProperty>\r\n {{ timesheet[field.property] }}\r\n </ng-template>\r\n </td>\r\n <td class=\"text-danger\">\r\n {{timesheet?.error}}\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n <div class=\"mt-1\" fxFlex=\"100%\" fxLayoutAlign=\"end\">\r\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\r\n Close\r\n </button>\r\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\r\n <mat-icon>\r\n <span class=\"material-icons-outlined\">\r\n file_upload\r\n </span>\r\n </mat-icon>\r\n Re-upload\r\n </button>\r\n </div>\r\n</div>\r\n" }]
|
|
28
|
+
}], ctorParameters: function () { return [{ type: i1.Location }]; }, propDecorators: { failedItems: [{
|
|
29
|
+
type: Input
|
|
30
|
+
}], selectedFields: [{
|
|
31
|
+
type: Input
|
|
32
|
+
}], onReUpload: [{
|
|
33
|
+
type: Output
|
|
34
|
+
}] } });
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFpbGVkLWl0ZW1zLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9pbXBvcnQtY3N2L2ZhaWxlZC1pdGVtcy1saXN0L2ZhaWxlZC1pdGVtcy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvaW1wb3J0LWNzdi9mYWlsZWQtaXRlbXMtbGlzdC9mYWlsZWQtaXRlbXMtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7O0FBTy9FLE1BQU0sT0FBTyx3QkFBd0I7SUFLbkMsWUFDUyxRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBSGpCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBSXRDLENBQUM7SUFFTCxRQUFRO0lBQ1IsQ0FBQztJQUVELFdBQVcsQ0FBQyxDQUFNO1FBQ2hCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxZQUFZLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7O3FIQW5CVSx3QkFBd0I7eUdBQXhCLHdCQUF3Qiw4S0NSckMsKzNFQTZEQTsyRkRyRGEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHVCQUF1QjsrRkFLeEIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWZhaWxlZC1pdGVtcy1saXN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmFpbGVkLWl0ZW1zLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZhaWxlZC1pdGVtcy1saXN0LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZhaWxlZEl0ZW1zTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgZmFpbGVkSXRlbXM6IGFueVtdO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkRmllbGRzOiBhbnlbXTtcclxuICBAT3V0cHV0KCkgb25SZVVwbG9hZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgbG9jYXRpb246IExvY2F0aW9uXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBpc1ZhbGlkRGF0ZShkOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHZhciBkYXRlID0gbmV3IERhdGUoZCk7XHJcbiAgICByZXR1cm4gZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKGRhdGUuZ2V0VGltZSgpKTtcclxuICB9XHJcblxyXG4gIHJlVXBsb2FkKCkge1xyXG4gICAgdGhpcy5vblJlVXBsb2FkLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiZmFpbGVkSXRlbXMubGVuZ3RoXCIgY2xhc3M9XCJtdC00XCIgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93IHdyYXBcIiBjbGFzcz1cInBiLTNcIj5cclxuICAgIDxoNSBmeEZsZXg9XCIzMCVcIiBjbGFzcz1cInByaW1hcnktY29sb3JcIj5TdW1tYXJ5PC9oNT5cclxuICAgIDxkaXYgZnhGbGV4PVwiNzAlXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj5cclxuICAgICAgPGg1IGNsYXNzPVwic2Vjb25kYXJ5LWNvbG9yXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXdlaWdodC1ib2xkXCI+e3tmYWlsZWRJdGVtcy5sZW5ndGh9fTwvc3Bhbj5cclxuICAgICAgPC9oNT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIG1sLTJcIj4gRXJyb3IocykgRm91bmQgSW4gVXBsb2FkZWQgRmlsZTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2PlxyXG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBmeExheW91dD1cInJvdyB3cmFwXCIgY2xhc3M9XCJwdC0zXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJwcmltYXJ5LWNvbG9yXCI+RXJyb3JzPC9oNT5cclxuICAgIDxkaXYgc3R5bGU9XCJvdmVyZmxvdy14OiBhdXRvO3dpZHRoOiAxMTAwcHg7XCIgY2xhc3M9XCJwdC0zXCI+XHJcbiAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIHRhYmxlLXN0cmlwZWQgdGFibGUtaG92ZXIgdGFibGUtc20gbWwtNCB3LTEwMFwiPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRoPiM8L3RoPlxyXG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGZpZWxkIG9mIHNlbGVjdGVkRmllbGRzO1wiPnt7ZmllbGQ/LmxhYmVsfX08L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPkVycm9yPC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0aW1lc2hlZXQgb2YgZmFpbGVkSXRlbXM7IGxldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICA8dGQ+e3tpICsgMX19PC90ZD5cclxuICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHNlbGVjdGVkRmllbGRzO1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihmaWVsZC5wcm9wZXJ0eVR5cGUgPT0gJ2RhdGUnIHx8IGZpZWxkLnByb3BlcnR5VHlwZSA9PSAnZGF0ZVRpbWUnKVxyXG4gICAgICAgICAgICAgICAgICYmaXNWYWxpZERhdGUodGltZXNoZWV0W2ZpZWxkLnByb3BlcnR5XSk7ZWxzZSBlbHNlUHJvcGVydHk7XCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHRpbWVzaGVldFtmaWVsZC5wcm9wZXJ0eV0gfCBkYXRlOiAnTU1NIGQsIHksIEg6bW06c3MnIH19XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZVByb3BlcnR5PlxyXG4gICAgICAgICAgICAgICAgICB7eyB0aW1lc2hlZXRbZmllbGQucHJvcGVydHldIH19XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1kYW5nZXJcIj5cclxuICAgICAgICAgICAgICAgIHt7dGltZXNoZWV0Py5lcnJvcn19XHJcbiAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibXQtMVwiIGZ4RmxleD1cIjEwMCVcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJtdC0yIG1yLTJcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImxvY2F0aW9uLmJhY2soKVwiPlxyXG4gICAgICBDbG9zZVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cIm10LTIgbXItMiBwcmltYXJ5LWNvbG9yXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZVVwbG9hZCgpXCI+XHJcbiAgICAgIDxtYXQtaWNvbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zLW91dGxpbmVkXCI+XHJcbiAgICAgICAgICBmaWxlX3VwbG9hZFxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgUmUtdXBsb2FkXHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { UntypedFormControl, Validators } from '@angular/forms';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/forms";
|
|
5
|
+
import * as i2 from "../../core/form-validator.service";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "@angular/flex-layout/flex";
|
|
8
|
+
import * as i5 from "@angular/material/button";
|
|
9
|
+
import * as i6 from "@angular/material/form-field";
|
|
10
|
+
import * as i7 from "@angular/material/icon";
|
|
11
|
+
import * as i8 from "@angular/material/core";
|
|
12
|
+
import * as i9 from "@angular/material/select";
|
|
13
|
+
import * as i10 from "@angular/material/divider";
|
|
14
|
+
import * as i11 from "@angular/material/tooltip";
|
|
15
|
+
const errorMessages = {
|
|
16
|
+
property: {
|
|
17
|
+
required: "Property is required",
|
|
18
|
+
unavailable: "Duplicate entry"
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
export class FieldMappingComponent {
|
|
22
|
+
constructor(fb, formValidatorService, changeDetectorRef, location) {
|
|
23
|
+
this.fb = fb;
|
|
24
|
+
this.formValidatorService = formValidatorService;
|
|
25
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
26
|
+
this.location = location;
|
|
27
|
+
this.firstDataArray = [];
|
|
28
|
+
this.properties = [];
|
|
29
|
+
this.onSave = new EventEmitter();
|
|
30
|
+
this.onReUpload = new EventEmitter();
|
|
31
|
+
this.createImportMappingForm();
|
|
32
|
+
}
|
|
33
|
+
ngOnInit() {
|
|
34
|
+
this.properties = this.config.properties;
|
|
35
|
+
;
|
|
36
|
+
this.reFectorAttributes(this.data[0]);
|
|
37
|
+
}
|
|
38
|
+
createImportMappingForm() {
|
|
39
|
+
this.importMappingForm = this.fb.group({
|
|
40
|
+
fields: this.fb.array([]),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
get fieldsArray() {
|
|
44
|
+
return this.importMappingForm.get('fields');
|
|
45
|
+
}
|
|
46
|
+
createField(field) {
|
|
47
|
+
var fieldForm = this.fb.group({
|
|
48
|
+
id: new UntypedFormControl(field.id),
|
|
49
|
+
label: new UntypedFormControl(field.label),
|
|
50
|
+
value: new UntypedFormControl(field.value),
|
|
51
|
+
property: new UntypedFormControl(field.property, Validators.compose([
|
|
52
|
+
Validators.required
|
|
53
|
+
])),
|
|
54
|
+
propertyType: new UntypedFormControl(field.propertyType)
|
|
55
|
+
});
|
|
56
|
+
return fieldForm;
|
|
57
|
+
}
|
|
58
|
+
reFectorAttributes(data) {
|
|
59
|
+
for (var k in data) {
|
|
60
|
+
if (data.hasOwnProperty(k)) {
|
|
61
|
+
var dataValue = {
|
|
62
|
+
id: '',
|
|
63
|
+
label: k,
|
|
64
|
+
value: data[k],
|
|
65
|
+
property: '',
|
|
66
|
+
propertyType: ''
|
|
67
|
+
};
|
|
68
|
+
this.firstDataArray.push(dataValue);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
this.firstDataArray.forEach((element, mainIndex) => {
|
|
72
|
+
element.id = mainIndex;
|
|
73
|
+
this.properties.find((property, index) => {
|
|
74
|
+
if (property.label.toLowerCase().includes(element.label.toLowerCase())) {
|
|
75
|
+
element.property = property.value;
|
|
76
|
+
element.propertyType = property.type;
|
|
77
|
+
return element;
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
next() {
|
|
83
|
+
this.importMappingForm.markAllAsTouched();
|
|
84
|
+
if (!this.importMappingForm.valid) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
this.onSave.emit(this.importMappingForm.value);
|
|
88
|
+
}
|
|
89
|
+
/** Method to evaluate form fields*/
|
|
90
|
+
isFieldValid(field, form) {
|
|
91
|
+
return this.formValidatorService.isFieldValid(field, form);
|
|
92
|
+
}
|
|
93
|
+
/** Method to find error in form fields*/
|
|
94
|
+
getErrorMessage(field, form) {
|
|
95
|
+
return this.formValidatorService.getErrorMessage(field, form, errorMessages);
|
|
96
|
+
}
|
|
97
|
+
ngAfterViewInit() {
|
|
98
|
+
//Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.
|
|
99
|
+
//Add 'implements AfterViewInit' to the class.
|
|
100
|
+
setTimeout(x => {
|
|
101
|
+
this.firstDataArray.forEach((element) => {
|
|
102
|
+
this.fieldsArray.push(this.createField(element));
|
|
103
|
+
});
|
|
104
|
+
this.changeDetectorRef.detectChanges();
|
|
105
|
+
}, 500);
|
|
106
|
+
}
|
|
107
|
+
updatePropertyType(event, index) {
|
|
108
|
+
var field = this.properties.find((field) => field.value == event.value);
|
|
109
|
+
if (field) {
|
|
110
|
+
this.fieldsArray.controls[index].get('propertyType').setValue(field.type);
|
|
111
|
+
this.uniqueValidator();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
uniqueValidator() {
|
|
115
|
+
this.fieldsArray.value.forEach((field, index) => {
|
|
116
|
+
var control = this.fieldsArray.controls[index].get('property');
|
|
117
|
+
const isNameUnique = this.fieldsArray.value.find(propertyData => propertyData.property === control.value
|
|
118
|
+
&& propertyData.id != this.fieldsArray.controls[index].get('id').value)
|
|
119
|
+
? false
|
|
120
|
+
: true;
|
|
121
|
+
if (!isNameUnique) {
|
|
122
|
+
control.setErrors({ unavailable: true });
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
control.setErrors(null);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
removeField(index) {
|
|
130
|
+
if (index == -1) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
this.fieldsArray.removeAt(index);
|
|
134
|
+
}
|
|
135
|
+
reUpload() {
|
|
136
|
+
this.onReUpload.emit(true);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
FieldMappingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FieldMappingComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.FormValidatorService }, { token: i0.ChangeDetectorRef }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Component });
|
|
140
|
+
FieldMappingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: FieldMappingComponent, selector: "app-field-mapping", inputs: { data: "data", config: "config" }, outputs: { onSave: "onSave", onReUpload: "onReUpload" }, ngImport: i0, template: "<div fxLayout=\"column\" class=\"mt-2\">\r\n <div fxLayout=\"row wrap\" class=\"pb-3\">\r\n <h5 fxFlex=\"30%\" class=\"primary-color\">Summary</h5>\r\n <div fxFlex=\"70%\" fxLayoutAlign=\"center center\">\r\n <h5 class=\"secondary-color\">\r\n <span class=\"font-weight-bold\">{{data.length}}</span>\r\n </h5>\r\n <span class=\"text-muted ml-2\"> Records Found In Uploaded File</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n\r\n <form [formGroup]=\"importMappingForm\" (ngSubmit)=\"next()\" fxLayout=\"column\" class=\"pt-3\">\r\n <h5 class=\"primary-color pb-2\">Properties</h5>\r\n <table style=\"width: 100%;\" class=\"table table-sm table-striped\">\r\n <tr class=\"table-header-row\">\r\n <th>Column Headers From File</th>\r\n <th>Preview Information</th>\r\n <th>Property</th>\r\n </tr>\r\n <ng-container formArrayName=\"fields\">\r\n <tr *ngFor=\"let field of fieldsArray.controls; let i=index\" [formGroupName]=\"i\">\r\n <td>{{ field.get('label').value }}</td>\r\n <td>{{ field.get('value').value }}</td>\r\n <td>\r\n <mat-form-field fxFlex=\"100%\" appearance=\"outline\">\r\n <mat-label>Select Property</mat-label>\r\n <mat-select placeholder=\"Select Property\" formControlName=\"property\" required\r\n (selectionChange)=\"updatePropertyType($event, i)\">\r\n <mat-option *ngFor=\"let property of properties\" [value]=\"property.value\">\r\n {{property.label}}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"isFieldValid('property', fieldsArray.controls[i])\">\r\n {{getErrorMessage('property', fieldsArray.controls[i])}}\r\n </mat-error>\r\n </mat-form-field>\r\n <button type=\"button\" mat-icon-button (click)=\"removeField(i)\" *ngIf=\"fieldsArray.length > 1\"\r\n matTooltip=\"Remove column\" matTooltipPosition=\"right\">\r\n <mat-icon class=\"text-danger\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n\r\n <div class=\"mt-1\" fxFlex=\"100%\" fxLayoutAlign=\"end\">\r\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\r\n Cancel\r\n </button>\r\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\r\n <mat-icon>\r\n <span class=\"material-icons-outlined\">\r\n file_upload\r\n </span>\r\n </mat-icon>\r\n Re-upload\r\n </button>\r\n <button mat-stroked-button class=\"mt-2 primary-bg text-white\" type=\"submit\">\r\n Next\r\n <mat-icon>\r\n chevron_right\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </form>\r\n</div>\r\n", styles: ["table{width:100%}th,td{padding:1%}.table-header-row{background-color:#e6e4e4;color:#000;font-weight:bolder}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: i4.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i4.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
141
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: FieldMappingComponent, decorators: [{
|
|
142
|
+
type: Component,
|
|
143
|
+
args: [{ selector: 'app-field-mapping', template: "<div fxLayout=\"column\" class=\"mt-2\">\r\n <div fxLayout=\"row wrap\" class=\"pb-3\">\r\n <h5 fxFlex=\"30%\" class=\"primary-color\">Summary</h5>\r\n <div fxFlex=\"70%\" fxLayoutAlign=\"center center\">\r\n <h5 class=\"secondary-color\">\r\n <span class=\"font-weight-bold\">{{data.length}}</span>\r\n </h5>\r\n <span class=\"text-muted ml-2\"> Records Found In Uploaded File</span>\r\n </div>\r\n </div>\r\n\r\n <div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n\r\n <form [formGroup]=\"importMappingForm\" (ngSubmit)=\"next()\" fxLayout=\"column\" class=\"pt-3\">\r\n <h5 class=\"primary-color pb-2\">Properties</h5>\r\n <table style=\"width: 100%;\" class=\"table table-sm table-striped\">\r\n <tr class=\"table-header-row\">\r\n <th>Column Headers From File</th>\r\n <th>Preview Information</th>\r\n <th>Property</th>\r\n </tr>\r\n <ng-container formArrayName=\"fields\">\r\n <tr *ngFor=\"let field of fieldsArray.controls; let i=index\" [formGroupName]=\"i\">\r\n <td>{{ field.get('label').value }}</td>\r\n <td>{{ field.get('value').value }}</td>\r\n <td>\r\n <mat-form-field fxFlex=\"100%\" appearance=\"outline\">\r\n <mat-label>Select Property</mat-label>\r\n <mat-select placeholder=\"Select Property\" formControlName=\"property\" required\r\n (selectionChange)=\"updatePropertyType($event, i)\">\r\n <mat-option *ngFor=\"let property of properties\" [value]=\"property.value\">\r\n {{property.label}}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"isFieldValid('property', fieldsArray.controls[i])\">\r\n {{getErrorMessage('property', fieldsArray.controls[i])}}\r\n </mat-error>\r\n </mat-form-field>\r\n <button type=\"button\" mat-icon-button (click)=\"removeField(i)\" *ngIf=\"fieldsArray.length > 1\"\r\n matTooltip=\"Remove column\" matTooltipPosition=\"right\">\r\n <mat-icon class=\"text-danger\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </table>\r\n\r\n <div class=\"mt-1\" fxFlex=\"100%\" fxLayoutAlign=\"end\">\r\n <button mat-button class=\"mt-2 mr-2\" type=\"button\" (click)=\"location.back()\">\r\n Cancel\r\n </button>\r\n <button mat-stroked-button class=\"mt-2 mr-2 primary-color\" type=\"button\" (click)=\"reUpload()\">\r\n <mat-icon>\r\n <span class=\"material-icons-outlined\">\r\n file_upload\r\n </span>\r\n </mat-icon>\r\n Re-upload\r\n </button>\r\n <button mat-stroked-button class=\"mt-2 primary-bg text-white\" type=\"submit\">\r\n Next\r\n <mat-icon>\r\n chevron_right\r\n </mat-icon>\r\n </button>\r\n </div>\r\n </form>\r\n</div>\r\n", styles: ["table{width:100%}th,td{padding:1%}.table-header-row{background-color:#e6e4e4;color:#000;font-weight:bolder}\n"] }]
|
|
144
|
+
}], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.FormValidatorService }, { type: i0.ChangeDetectorRef }, { type: i3.Location }]; }, propDecorators: { data: [{
|
|
145
|
+
type: Input
|
|
146
|
+
}], config: [{
|
|
147
|
+
type: Input
|
|
148
|
+
}], onSave: [{
|
|
149
|
+
type: Output
|
|
150
|
+
}], onReUpload: [{
|
|
151
|
+
type: Output
|
|
152
|
+
}] } });
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtbWFwcGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ltcG9ydC1jc3YvZmllbGQtbWFwcGluZy9maWVsZC1tYXBwaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvaW1wb3J0LWNzdi9maWVsZC1tYXBwaW5nL2ZpZWxkLW1hcHBpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUF3QyxrQkFBa0IsRUFBb0IsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFJeEgsTUFBTSxhQUFhLEdBQVE7SUFDekIsUUFBUSxFQUFFO1FBQ1IsUUFBUSxFQUFFLHNCQUFzQjtRQUNoQyxXQUFXLEVBQUUsaUJBQWlCO0tBQy9CO0NBQ0YsQ0FBQztBQU9GLE1BQU0sT0FBTyxxQkFBcUI7SUFVaEMsWUFDVSxFQUFzQixFQUN0QixvQkFBMEMsRUFDMUMsaUJBQW9DLEVBQ3JDLFFBQWtCO1FBSGpCLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBQ3RCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNyQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBVDNCLG1CQUFjLEdBQVUsRUFBRSxDQUFDO1FBQzNCLGVBQVUsR0FBVSxFQUFFLENBQUM7UUFDYixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1QixlQUFVLEdBQUUsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQVF2QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUs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QW1CO21NQU9wQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUdJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybVZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2Zvcm0tdmFsaWRhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbXBvcnRDc3ZDb25maWcgfSBmcm9tICcuLi9pbXBvcnQtY3N2LWNvbmZpZyc7XHJcblxyXG5jb25zdCBlcnJvck1lc3NhZ2VzOiBhbnkgPSB7XHJcbiAgcHJvcGVydHk6IHtcclxuICAgIHJlcXVpcmVkOiBcIlByb3BlcnR5IGlzIHJlcXVpcmVkXCIsXHJcbiAgICB1bmF2YWlsYWJsZTogXCJEdXBsaWNhdGUgZW50cnlcIlxyXG4gIH0sXHJcbn07XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1maWVsZC1tYXBwaW5nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmllbGQtbWFwcGluZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmllbGQtbWFwcGluZy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWVsZE1hcHBpbmdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBpbXBvcnRNYXBwaW5nRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBkYXRhOiBhbnlbXTtcclxuICBASW5wdXQoKSBjb25maWc6IEltcG9ydENzdkNvbmZpZztcclxuICBmaXJzdERhdGFBcnJheTogYW55W10gPSBbXTtcclxuICBwcm9wZXJ0aWVzOiBhbnlbXSA9IFtdO1xyXG4gIEBPdXRwdXQoKSBvblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uUmVVcGxvYWQ9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIGZvcm1WYWxpZGF0b3JTZXJ2aWNlOiBGb3JtVmFsaWRhdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHVibGljIGxvY2F0aW9uOiBMb2NhdGlvblxyXG4gICkge1xyXG4gICAgdGhpcy5jcmVhdGVJbXBvcnRNYXBwaW5nRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnByb3BlcnRpZXMgPSB0aGlzLmNvbmZpZy5wcm9wZXJ0aWVzOztcclxuICAgIHRoaXMucmVGZWN0b3JBdHRyaWJ1dGVzKHRoaXMuZGF0YVswXSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVJbXBvcnRNYXBwaW5nRm9ybSgpIHtcclxuICAgIHRoaXMuaW1wb3J0TWFwcGluZ0Zvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgZmllbGRzOiB0aGlzLmZiLmFycmF5KFtdKSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpZWxkc0FycmF5KCk6IFVudHlwZWRGb3JtQXJyYXkge1xyXG4gICAgcmV0dXJuIHRoaXMuaW1wb3J0TWFwcGluZ0Zvcm0uZ2V0KCdmaWVsZHMnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlRmllbGQoZmllbGQ6IGFueSk6IFVudHlwZWRGb3JtR3JvdXAge1xyXG4gICAgdmFyIGZpZWxkRm9ybTogVW50eXBlZEZvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBpZDogbmV3IFVudHlwZWRGb3JtQ29udHJvbChmaWVsZC5pZCksXHJcbiAgICAgIGxhYmVsOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKGZpZWxkLmxhYmVsKSxcclxuICAgICAgdmFsdWU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZmllbGQudmFsdWUpLFxyXG4gICAgICBwcm9wZXJ0eTogbmV3IFVudHlwZWRGb3JtQ29udHJvbChmaWVsZC5wcm9wZXJ0eSxcclxuICAgICAgICBWYWxpZGF0b3JzLmNvbXBvc2UoXHJcbiAgICAgICAgICBbXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICAgICAgIF1cclxuICAgICAgICApXHJcbiAgICAgICksXHJcbiAgICAgIHByb3BlcnR5VHlwZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbChmaWVsZC5wcm9wZXJ0eVR5cGUpXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmaWVsZEZvcm07XHJcbiAgfVxyXG5cclxuICByZUZlY3RvckF0dHJpYnV0ZXMoZGF0YSkge1xyXG4gICAgZm9yICh2YXIgayBpbiBkYXRhKSB7XHJcbiAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGspKSB7XHJcbiAgICAgICAgdmFyIGRhdGFWYWx1ZSA9IHtcclxuICAgICAgICAgIGlkOiAnJyxcclxuICAgICAgICAgIGxhYmVsOiBrLFxyXG4gICAgICAgICAgdmFsdWU6IGRhdGFba10sXHJcbiAgICAgICAgICBwcm9wZXJ0eTogJycsXHJcbiAgICAgICAgICBwcm9wZXJ0eVR5cGU6ICcnXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmZpcnN0RGF0YUFycmF5LnB1c2goZGF0YVZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5maXJzdERhdGFBcnJheS5mb3JFYWNoKChlbGVtZW50OiBhbnksIG1haW5JbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGVsZW1lbnQuaWQgPSBtYWluSW5kZXg7XHJcbiAgICAgIHRoaXMucHJvcGVydGllcy5maW5kKChwcm9wZXJ0eTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHByb3BlcnR5LmxhYmVsLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZWxlbWVudC5sYWJlbC50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgZWxlbWVudC5wcm9wZXJ0eSA9IHByb3BlcnR5LnZhbHVlO1xyXG4gICAgICAgICAgZWxlbWVudC5wcm9wZXJ0eVR5cGUgPSBwcm9wZXJ0eS50eXBlO1xyXG4gICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmV4dCgpIHtcclxuICAgIHRoaXMuaW1wb3J0TWFwcGluZ0Zvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgaWYgKCF0aGlzLmltcG9ydE1hcHBpbmdGb3JtLnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMub25TYXZlLmVtaXQodGhpcy5pbXBvcnRNYXBwaW5nRm9ybS52YWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKiogTWV0aG9kIHRvIGV2YWx1YXRlIGZvcm0gZmllbGRzKi9cclxuICBpc0ZpZWxkVmFsaWQoZmllbGQ6IHN0cmluZywgZm9ybTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtVmFsaWRhdG9yU2VydmljZS5pc0ZpZWxkVmFsaWQoZmllbGQsIGZvcm0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIE1ldGhvZCB0byBmaW5kIGVycm9yIGluIGZvcm0gZmllbGRzKi9cclxuICBnZXRFcnJvck1lc3NhZ2UoZmllbGQ6IHN0cmluZywgZm9ybTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtVmFsaWRhdG9yU2VydmljZS5nZXRFcnJvck1lc3NhZ2UoZmllbGQsIGZvcm0sIGVycm9yTWVzc2FnZXMpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgLy9DYWxsZWQgYWZ0ZXIgbmdBZnRlckNvbnRlbnRJbml0IHdoZW4gdGhlIGNvbXBvbmVudCdzIHZpZXcgaGFzIGJlZW4gaW5pdGlhbGl6ZWQuIEFwcGxpZXMgdG8gY29tcG9uZW50cyBvbmx5LlxyXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCcgdG8gdGhlIGNsYXNzLlxyXG4gICAgc2V0VGltZW91dCh4ID0+IHtcclxuICAgICAgdGhpcy5maXJzdERhdGFBcnJheS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmZpZWxkc0FycmF5LnB1c2godGhpcy5jcmVhdGVGaWVsZChlbGVtZW50KSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0sIDUwMCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVQcm9wZXJ0eVR5cGUoZXZlbnQ6IGFueSwgaW5kZXg6IGFueSk6IHZvaWQge1xyXG4gICAgdmFyIGZpZWxkID0gdGhpcy5wcm9wZXJ0aWVzLmZpbmQoKGZpZWxkOiBhbnkpID0+IGZpZWxkLnZhbHVlID09IGV2ZW50LnZhbHVlKTtcclxuICAgIGlmIChmaWVsZCkge1xyXG4gICAgICB0aGlzLmZpZWxkc0FycmF5LmNvbnRyb2xzW2luZGV4XS5nZXQoJ3Byb3BlcnR5VHlwZScpLnNldFZhbHVlKGZpZWxkLnR5cGUpO1xyXG4gICAgICB0aGlzLnVuaXF1ZVZhbGlkYXRvcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdW5pcXVlVmFsaWRhdG9yKCkge1xyXG4gICAgdGhpcy5maWVsZHNBcnJheS52YWx1ZS5mb3JFYWNoKChmaWVsZDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIHZhciBjb250cm9sID0gdGhpcy5maWVsZHNBcnJheS5jb250cm9sc1tpbmRleF0uZ2V0KCdwcm9wZXJ0eScpO1xyXG4gICAgICBjb25zdCBpc05hbWVVbmlxdWUgPSB0aGlzLmZpZWxkc0FycmF5LnZhbHVlLmZpbmQocHJvcGVydHlEYXRhID0+XHJcbiAgICAgICAgcHJvcGVydHlEYXRhLnByb3BlcnR5ID09PSBjb250cm9sLnZhbHVlXHJcbiAgICAgICAgJiYgcHJvcGVydHlEYXRhLmlkICE9IHRoaXMuZmllbGRzQXJyYXkuY29udHJvbHNbaW5kZXhdLmdldCgnaWQnKS52YWx1ZVxyXG4gICAgICApXHJcbiAgICAgICAgPyBmYWxzZVxyXG4gICAgICAgIDogdHJ1ZTtcclxuICAgICAgaWYgKCFpc05hbWVVbmlxdWUpIHtcclxuICAgICAgICBjb250cm9sLnNldEVycm9ycyh7IHVuYXZhaWxhYmxlOiB0cnVlIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUZpZWxkKGluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmIChpbmRleCA9PSAtMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpZWxkc0FycmF5LnJlbW92ZUF0KGluZGV4KTtcclxuICB9XHJcblxyXG4gIHJlVXBsb2FkKCkge1xyXG4gICAgdGhpcy5vblJlVXBsb2FkLmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgY2xhc3M9XCJtdC0yXCI+XHJcbiAgPGRpdiBmeExheW91dD1cInJvdyB3cmFwXCIgY2xhc3M9XCJwYi0zXCI+XHJcbiAgICA8aDUgZnhGbGV4PVwiMzAlXCIgY2xhc3M9XCJwcmltYXJ5LWNvbG9yXCI+U3VtbWFyeTwvaDU+XHJcbiAgICA8ZGl2IGZ4RmxleD1cIjcwJVwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCI+XHJcbiAgICAgIDxoNSBjbGFzcz1cInNlY29uZGFyeS1jb2xvclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC13ZWlnaHQtYm9sZFwiPnt7ZGF0YS5sZW5ndGh9fTwvc3Bhbj5cclxuICAgICAgPC9oNT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkIG1sLTJcIj4gUmVjb3JkcyBGb3VuZCBJbiBVcGxvYWRlZCBGaWxlPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXY+XHJcbiAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJpbXBvcnRNYXBwaW5nRm9ybVwiIChuZ1N1Ym1pdCk9XCJuZXh0KClcIiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwicHQtM1wiPlxyXG4gICAgPGg1IGNsYXNzPVwicHJpbWFyeS1jb2xvciBwYi0yXCI+UHJvcGVydGllczwvaDU+XHJcbiAgICA8dGFibGUgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBjbGFzcz1cInRhYmxlIHRhYmxlLXNtIHRhYmxlLXN0cmlwZWRcIj5cclxuICAgICAgPHRyIGNsYXNzPVwidGFibGUtaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgIDx0aD5Db2x1bW4gSGVhZGVycyBGcm9tIEZpbGU8L3RoPlxyXG4gICAgICAgIDx0aD5QcmV2aWV3IEluZm9ybWF0aW9uPC90aD5cclxuICAgICAgICA8dGg+UHJvcGVydHk8L3RoPlxyXG4gICAgICA8L3RyPlxyXG4gICAgICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJmaWVsZHNcIj5cclxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkc0FycmF5LmNvbnRyb2xzOyBsZXQgaT1pbmRleFwiIFtmb3JtR3JvdXBOYW1lXT1cImlcIj5cclxuICAgICAgICAgIDx0ZD57eyBmaWVsZC5nZXQoJ2xhYmVsJykudmFsdWUgfX08L3RkPlxyXG4gICAgICAgICAgPHRkPnt7IGZpZWxkLmdldCgndmFsdWUnKS52YWx1ZSB9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBmeEZsZXg9XCIxMDAlXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPlNlbGVjdCBQcm9wZXJ0eTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgIDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiU2VsZWN0IFByb3BlcnR5XCIgZm9ybUNvbnRyb2xOYW1lPVwicHJvcGVydHlcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJ1cGRhdGVQcm9wZXJ0eVR5cGUoJGV2ZW50LCBpKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHByb3BlcnR5IG9mIHByb3BlcnRpZXNcIiBbdmFsdWVdPVwicHJvcGVydHkudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAge3twcm9wZXJ0eS5sYWJlbH19XHJcbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ3Byb3BlcnR5JywgZmllbGRzQXJyYXkuY29udHJvbHNbaV0pXCI+XHJcbiAgICAgICAgICAgICAgICB7e2dldEVycm9yTWVzc2FnZSgncHJvcGVydHknLCBmaWVsZHNBcnJheS5jb250cm9sc1tpXSl9fVxyXG4gICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInJlbW92ZUZpZWxkKGkpXCIgKm5nSWY9XCJmaWVsZHNBcnJheS5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiUmVtb3ZlIGNvbHVtblwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwidGV4dC1kYW5nZXJcIj5yZW1vdmVfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC90YWJsZT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibXQtMVwiIGZ4RmxleD1cIjEwMCVcIiBmeExheW91dEFsaWduPVwiZW5kXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cIm10LTIgbXItMlwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibG9jYXRpb24uYmFjaygpXCI+XHJcbiAgICAgICAgQ2FuY2VsXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cIm10LTIgbXItMiBwcmltYXJ5LWNvbG9yXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZVVwbG9hZCgpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucy1vdXRsaW5lZFwiPlxyXG4gICAgICAgICAgICBmaWxlX3VwbG9hZFxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgUmUtdXBsb2FkXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cIm10LTIgcHJpbWFyeS1iZyB0ZXh0LXdoaXRlXCIgdHlwZT1cInN1Ym1pdFwiPlxyXG4gICAgICAgIE5leHRcclxuICAgICAgICA8bWF0LWljb24+XHJcbiAgICAgICAgICBjaGV2cm9uX3JpZ2h0XHJcbiAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Zvcm0+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWNzdi1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ltcG9ydC1jc3YvaW1wb3J0LWNzdi1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWNsYXJlIGNsYXNzIEltcG9ydENzdkNvbmZpZyB7XHJcbiAgYXBpVXJsOiBzdHJpbmc7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBpbXBvcnRUeXBlOiBzdHJpbmc7XHJcbiAgcHJvcGVydGllczogYW55W107XHJcbiAgY3VzdG9tRXJyb3JNZXNzYWdlcz86IGFueVtdOyAvKiogT3B0aW9uYWwgKi9cclxuICBzYW1wbGVGaWxlPzoge1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgcGF0aDogc3RyaW5nO1xyXG4gIH07IC8qKiBPcHRpb25hbCAqL1xyXG4gIHZpZXdSb3V0ZXJMaW5rPzogc3RyaW5nO1xyXG4gIGltcG9ydEhpc3Rvcnk6IHtcclxuICAgIGlzRW5hYmxlZDogYm9vbGVhbjtcclxuICAgIHR5cGU/OiBzdHJpbmc7XHJcbiAgICBhcGlVcmw/OiBzdHJpbmc7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
|
|
3
|
+
import { Component, Input } from '@angular/core';
|
|
4
|
+
import * as XLSX from 'xlsx';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../core/alert.service";
|
|
7
|
+
import * as i2 from "../core/error-handler.service";
|
|
8
|
+
import * as i3 from "../core/http.service";
|
|
9
|
+
import * as i4 from "@angular/common";
|
|
10
|
+
import * as i5 from "@angular/flex-layout/flex";
|
|
11
|
+
import * as i6 from "@angular/material/button";
|
|
12
|
+
import * as i7 from "@angular/material/icon";
|
|
13
|
+
import * as i8 from "@angular/material/card";
|
|
14
|
+
import * as i9 from "@angular/material/tooltip";
|
|
15
|
+
import * as i10 from "../file-dropper/file-dropper.component";
|
|
16
|
+
import * as i11 from "./field-mapping/field-mapping.component";
|
|
17
|
+
import * as i12 from "./failed-items-list/failed-items-list.component";
|
|
18
|
+
import * as i13 from "./import-history-list/import-history-list.component";
|
|
19
|
+
import * as i14 from "./import-success/import-success.component";
|
|
20
|
+
import * as i15 from "./data-import/data-import.component";
|
|
21
|
+
let ImportCsvComponent = class ImportCsvComponent {
|
|
22
|
+
constructor(alertService, errorHandler, http) {
|
|
23
|
+
this.alertService = alertService;
|
|
24
|
+
this.errorHandler = errorHandler;
|
|
25
|
+
this.http = http;
|
|
26
|
+
this.filesList = [];
|
|
27
|
+
this.data = [];
|
|
28
|
+
this.isUploaded = false;
|
|
29
|
+
this.isImportTypeSelected = false;
|
|
30
|
+
this.fileData = [];
|
|
31
|
+
this.failedItems = [];
|
|
32
|
+
this.selectedFields = [];
|
|
33
|
+
this.importSteps = [
|
|
34
|
+
{
|
|
35
|
+
id: 1,
|
|
36
|
+
step: 1,
|
|
37
|
+
title: 'Upload',
|
|
38
|
+
progressTitle: '',
|
|
39
|
+
progressDescription: ''
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: 2,
|
|
43
|
+
step: 2,
|
|
44
|
+
title: 'Field Mappings',
|
|
45
|
+
progressTitle: '',
|
|
46
|
+
progressDescription: ''
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: 3,
|
|
50
|
+
step: 3,
|
|
51
|
+
title: 'Data Validation',
|
|
52
|
+
progressTitle: 'Data Being Validated',
|
|
53
|
+
progressDescription: 'The data is currently being validated and checked for errors, please do not navigate away from this page. '
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: 4,
|
|
57
|
+
step: 3,
|
|
58
|
+
title: 'Data Validation & Errors',
|
|
59
|
+
progressTitle: '',
|
|
60
|
+
progressDescription: ''
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: 5,
|
|
64
|
+
step: 4,
|
|
65
|
+
title: 'Data Importing',
|
|
66
|
+
progressTitle: 'Data Being Imported',
|
|
67
|
+
progressDescription: 'The data is currently being imported and saved, please do not navigate away from this page. After the import is completed, you will be redirected to a page with the imported records.'
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: 6,
|
|
71
|
+
step: 5,
|
|
72
|
+
title: 'Success Page & Data Preview',
|
|
73
|
+
progressTitle: '',
|
|
74
|
+
progressDescription: ''
|
|
75
|
+
},
|
|
76
|
+
];
|
|
77
|
+
this.currentStep = 1;
|
|
78
|
+
this.filesConfig = {
|
|
79
|
+
fileId: "file",
|
|
80
|
+
containerId: "fileContainer",
|
|
81
|
+
styles: {
|
|
82
|
+
height: "200px"
|
|
83
|
+
},
|
|
84
|
+
acceptFile: '.csv',
|
|
85
|
+
multiple: false,
|
|
86
|
+
maxSize: 10,
|
|
87
|
+
acceptFileText: ".csv"
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
ngOnInit() {
|
|
91
|
+
}
|
|
92
|
+
get step() {
|
|
93
|
+
return this.importSteps.find(step => step.id == this.currentStep);
|
|
94
|
+
}
|
|
95
|
+
async fileChanged(event) {
|
|
96
|
+
this.currentStep = 2;
|
|
97
|
+
this.filesList = event;
|
|
98
|
+
let selectedFile = null;
|
|
99
|
+
let jsonData = null;
|
|
100
|
+
const reader = new FileReader();
|
|
101
|
+
const file = this.filesList[0];
|
|
102
|
+
reader.onload = (event) => {
|
|
103
|
+
const data = reader.result;
|
|
104
|
+
selectedFile = XLSX.read(data, {
|
|
105
|
+
type: 'binary',
|
|
106
|
+
cellDates: true,
|
|
107
|
+
});
|
|
108
|
+
jsonData = selectedFile.SheetNames.reduce((initial, name) => {
|
|
109
|
+
const sheet = selectedFile.Sheets[name];
|
|
110
|
+
initial = XLSX.utils.sheet_to_json(sheet, {
|
|
111
|
+
header: 0,
|
|
112
|
+
defval: "",
|
|
113
|
+
});
|
|
114
|
+
return initial;
|
|
115
|
+
}, {});
|
|
116
|
+
this.fileData = jsonData;
|
|
117
|
+
};
|
|
118
|
+
reader.readAsBinaryString(file);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
mappingProcessed(event) {
|
|
122
|
+
this.currentStep = 3;
|
|
123
|
+
setTimeout(x => {
|
|
124
|
+
this.selectedFields = event.fields;
|
|
125
|
+
const tempFileData = JSON.parse(JSON.stringify(this.fileData));
|
|
126
|
+
tempFileData.forEach(data => {
|
|
127
|
+
for (var key in data) {
|
|
128
|
+
var field = event.fields.find((field) => field.label == key);
|
|
129
|
+
if (field) {
|
|
130
|
+
if ((field.propertyType == 'date' || field.propertyType == 'dateTime') && this.isValidDate(new Date(data[field.label]))) {
|
|
131
|
+
data[field.property] = new Date(data[field.label]).toISOString();
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
data[field.property] = data[field.label];
|
|
135
|
+
}
|
|
136
|
+
delete data[key];
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
delete data[key];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
this.save(tempFileData);
|
|
144
|
+
}, 2000);
|
|
145
|
+
}
|
|
146
|
+
async save(tempFileData) {
|
|
147
|
+
try {
|
|
148
|
+
this.http.post(this.config.apiUrl, { data: tempFileData })
|
|
149
|
+
.pipe(untilDestroyed(this)).subscribe((result) => {
|
|
150
|
+
this.failedItems = result.failed_items;
|
|
151
|
+
if (this.failedItems.length) {
|
|
152
|
+
this.alertService.addAlert(result.msg, 'warn');
|
|
153
|
+
}
|
|
154
|
+
if (!(this.failedItems.length > 0)) {
|
|
155
|
+
this.currentStep = 5;
|
|
156
|
+
setTimeout(x => {
|
|
157
|
+
this.currentStep = 6;
|
|
158
|
+
this.result = result;
|
|
159
|
+
}, 2000);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
this.currentStep = 4;
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
if ((error.status === 422 || error.status === 400) && error.msg) {
|
|
168
|
+
this.alertService.addAlert(error.msg, "warning");
|
|
169
|
+
}
|
|
170
|
+
this.errorHandler.handleError(error);
|
|
171
|
+
this.reUpload();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
isValidDate(d) {
|
|
175
|
+
return d instanceof Date && !isNaN(d.getTime());
|
|
176
|
+
}
|
|
177
|
+
reUpload() {
|
|
178
|
+
this.data = [];
|
|
179
|
+
this.fileData = [];
|
|
180
|
+
this.filesList = [];
|
|
181
|
+
this.failedItems = [];
|
|
182
|
+
this.selectedFields = [];
|
|
183
|
+
this.currentStep = 1;
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
ImportCsvComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ImportCsvComponent, deps: [{ token: i1.AlertService }, { token: i2.ErrorHandlerService }, { token: i3.HttpService }], target: i0.ɵɵFactoryTarget.Component });
|
|
187
|
+
ImportCsvComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: ImportCsvComponent, selector: "app-import-csv", inputs: { config: "config" }, ngImport: i0, template: "<div fxLayout=\"column wrap\" class=\"p-4\">\r\n <mat-card fxFlex=\"100%\" fxLayoutAlign=\"center center\" class=\"p-0\">\r\n <mat-card-content fxFill fxLayout=\"row wrap\" fxLayoutAlign=\"center center\" class=\"primary-color\">\r\n <h4 fxFlex=\"20%\" class=\"ml-2\">\r\n Step {{step.step}}: <span class=\"normal-font-weight\">{{step?.title}}</span>\r\n </h4>\r\n <h3 fxFlex=\"80%\" fxLayoutAlign=\"center center\" class=\"text-dark\" fxLayoutGap=\"1rem grid\">\r\n <span>{{config?.title}} Import</span>\r\n <a *ngIf=\"config?.sampleFile && currentStep == 1\" style=\"color: inherit;\" [download]=\"config?.sampleFile?.name\"\r\n target=\"_blank\" [href]=\"config?.sampleFile?.path\" matTooltip=\"Download Sample file\" matTooltipPosition=\"below\"\r\n fxLayoutAlign=\"center center\">\r\n <button mat-stroked-button class=\"primary-color\">\r\n <mat-icon>\r\n download\r\n </mat-icon>\r\n Sample File\r\n </button>\r\n </a>\r\n </h3>\r\n </mat-card-content>\r\n </mat-card>\r\n <div fxFlex=\"100%\" class=\"mt-3\">\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1rem grid\" *ngIf=\"currentStep==1 || currentStep == 2 || currentStep == 4\">\r\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"0 1 calc(70%-1rem)\">\r\n <mat-card fxFlex=\"100%\">\r\n <mat-card-content fxLayout=\"column\">\r\n <div fxFlex=\"100%\">\r\n <section fxLayout=\"column\" *ngIf=\"config.importType && !this.fileData.length && !this.failedItems.length\">\r\n <h5 class=\"primary-color pb-3\">File Upload</h5>\r\n <app-file-dropper fxFill class=\"mb-2 drop-section\" [config]=\"filesConfig\" [fileArray]=\"filesList\"\r\n (fileChanged)=\"fileChanged($event)\">\r\n </app-file-dropper>\r\n <app-import-history-list *ngIf=\"config.importHistory.isEnabled\" [config]=\"config\">\r\n </app-import-history-list>\r\n </section>\r\n <app-field-mapping class=\"w-100\" *ngIf=\"this.fileData.length > 0 && !this.failedItems.length\"\r\n [data]=\"fileData\" [config]=\"config\" (onSave)=\"mappingProcessed($event)\" (onReUpload)=\"reUpload()\">\r\n </app-field-mapping>\r\n <app-failed-items-list class=\"w-100\" *ngIf=\"this.failedItems.length > 0\" [failedItems]=\"failedItems\"\r\n [selectedFields]=\"selectedFields\" (onReUpload)=\"reUpload()\"></app-failed-items-list>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"30%\">\r\n <mat-card fxFlex=\"100%\">\r\n <mat-card-content fxLayout=\"column\" fxLayoutAlign=\"start start\">\r\n <h5 class=\"primary-color pb-3\">Instructions & Requirements</h5>\r\n <div class=\"text-muted\">\r\n <p>\r\n Please use this yyyy-mm-dd date format for all the date fields. Otherwise your date fields will be\r\n incorrect or not will be accepted. Ex: 2021-09-27\r\n </p>\r\n <ng-container *ngIf=\"config?.customErrorMessages\">\r\n <p *ngFor=\"let message of config?.customErrorMessages\">\r\n {{message}}\r\n </p>\r\n </ng-container>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n </div>\r\n <div fxLayout=\"column wrap\" class=\"p-4\" *ngIf=\"currentStep==3 || currentStep == 5\">\r\n <app-data-import [step]=\"step\" fxLayoutAlign=\"center center\"></app-data-import>\r\n </div>\r\n <div fxLayout=\"column wrap\" class=\"p-4\" *ngIf=\"currentStep == 6\">\r\n <app-import-success [data]=\"result\" [config]=\"config\" fxLayoutAlign=\"center center\"></app-import-success>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".drop-section{width:500px!important}.mat-card-title{margin:0!important}.clickable-card{width:100%}.normal-font-weight{font-weight:200!important}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i5.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i5.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i5.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i5.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i6.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i10.FileDropperComponent, selector: "app-file-dropper", inputs: ["fileArray", "config", "styles"], outputs: ["fileChanged"] }, { kind: "component", type: i11.FieldMappingComponent, selector: "app-field-mapping", inputs: ["data", "config"], outputs: ["onSave", "onReUpload"] }, { kind: "component", type: i12.FailedItemsListComponent, selector: "app-failed-items-list", inputs: ["failedItems", "selectedFields"], outputs: ["onReUpload"] }, { kind: "component", type: i13.ImportHistoryListComponent, selector: "app-import-history-list", inputs: ["config"] }, { kind: "component", type: i14.ImportSuccessComponent, selector: "app-import-success", inputs: ["data", "config"] }, { kind: "component", type: i15.DataImportComponent, selector: "app-data-import", inputs: ["step"] }] });
|
|
188
|
+
ImportCsvComponent = __decorate([
|
|
189
|
+
UntilDestroy()
|
|
190
|
+
], ImportCsvComponent);
|
|
191
|
+
export { ImportCsvComponent };
|
|
192
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ImportCsvComponent, decorators: [{
|
|
193
|
+
type: Component,
|
|
194
|
+
args: [{ selector: 'app-import-csv', template: "<div fxLayout=\"column wrap\" class=\"p-4\">\r\n <mat-card fxFlex=\"100%\" fxLayoutAlign=\"center center\" class=\"p-0\">\r\n <mat-card-content fxFill fxLayout=\"row wrap\" fxLayoutAlign=\"center center\" class=\"primary-color\">\r\n <h4 fxFlex=\"20%\" class=\"ml-2\">\r\n Step {{step.step}}: <span class=\"normal-font-weight\">{{step?.title}}</span>\r\n </h4>\r\n <h3 fxFlex=\"80%\" fxLayoutAlign=\"center center\" class=\"text-dark\" fxLayoutGap=\"1rem grid\">\r\n <span>{{config?.title}} Import</span>\r\n <a *ngIf=\"config?.sampleFile && currentStep == 1\" style=\"color: inherit;\" [download]=\"config?.sampleFile?.name\"\r\n target=\"_blank\" [href]=\"config?.sampleFile?.path\" matTooltip=\"Download Sample file\" matTooltipPosition=\"below\"\r\n fxLayoutAlign=\"center center\">\r\n <button mat-stroked-button class=\"primary-color\">\r\n <mat-icon>\r\n download\r\n </mat-icon>\r\n Sample File\r\n </button>\r\n </a>\r\n </h3>\r\n </mat-card-content>\r\n </mat-card>\r\n <div fxFlex=\"100%\" class=\"mt-3\">\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1rem grid\" *ngIf=\"currentStep==1 || currentStep == 2 || currentStep == 4\">\r\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"0 1 calc(70%-1rem)\">\r\n <mat-card fxFlex=\"100%\">\r\n <mat-card-content fxLayout=\"column\">\r\n <div fxFlex=\"100%\">\r\n <section fxLayout=\"column\" *ngIf=\"config.importType && !this.fileData.length && !this.failedItems.length\">\r\n <h5 class=\"primary-color pb-3\">File Upload</h5>\r\n <app-file-dropper fxFill class=\"mb-2 drop-section\" [config]=\"filesConfig\" [fileArray]=\"filesList\"\r\n (fileChanged)=\"fileChanged($event)\">\r\n </app-file-dropper>\r\n <app-import-history-list *ngIf=\"config.importHistory.isEnabled\" [config]=\"config\">\r\n </app-import-history-list>\r\n </section>\r\n <app-field-mapping class=\"w-100\" *ngIf=\"this.fileData.length > 0 && !this.failedItems.length\"\r\n [data]=\"fileData\" [config]=\"config\" (onSave)=\"mappingProcessed($event)\" (onReUpload)=\"reUpload()\">\r\n </app-field-mapping>\r\n <app-failed-items-list class=\"w-100\" *ngIf=\"this.failedItems.length > 0\" [failedItems]=\"failedItems\"\r\n [selectedFields]=\"selectedFields\" (onReUpload)=\"reUpload()\"></app-failed-items-list>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n <div fxFlex=\"100%\" fxFlex.gt-sm=\"30%\">\r\n <mat-card fxFlex=\"100%\">\r\n <mat-card-content fxLayout=\"column\" fxLayoutAlign=\"start start\">\r\n <h5 class=\"primary-color pb-3\">Instructions & Requirements</h5>\r\n <div class=\"text-muted\">\r\n <p>\r\n Please use this yyyy-mm-dd date format for all the date fields. Otherwise your date fields will be\r\n incorrect or not will be accepted. Ex: 2021-09-27\r\n </p>\r\n <ng-container *ngIf=\"config?.customErrorMessages\">\r\n <p *ngFor=\"let message of config?.customErrorMessages\">\r\n {{message}}\r\n </p>\r\n </ng-container>\r\n </div>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n </div>\r\n <div fxLayout=\"column wrap\" class=\"p-4\" *ngIf=\"currentStep==3 || currentStep == 5\">\r\n <app-data-import [step]=\"step\" fxLayoutAlign=\"center center\"></app-data-import>\r\n </div>\r\n <div fxLayout=\"column wrap\" class=\"p-4\" *ngIf=\"currentStep == 6\">\r\n <app-import-success [data]=\"result\" [config]=\"config\" fxLayoutAlign=\"center center\"></app-import-success>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".drop-section{width:500px!important}.mat-card-title{margin:0!important}.clickable-card{width:100%}.normal-font-weight{font-weight:200!important}\n"] }]
|
|
195
|
+
}], ctorParameters: function () { return [{ type: i1.AlertService }, { type: i2.ErrorHandlerService }, { type: i3.HttpService }]; }, propDecorators: { config: [{
|
|
196
|
+
type: Input
|
|
197
|
+
}] } });
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWNzdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ltcG9ydC1jc3YvaW1wb3J0LWNzdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2ltcG9ydC1jc3YvaW1wb3J0LWNzdi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd6RCxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFTaEIsa0JBQWtCLFNBQWxCLGtCQUFrQjtJQTBEN0IsWUFDVSxZQUEwQixFQUMxQixZQUFpQyxFQUNqQyxJQUFpQjtRQUZqQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQXpEM0IsY0FBUyxHQUFVLEVBQUUsQ0FBQztRQUN0QixTQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBRXRDLGFBQVEsR0FBVSxFQUFFLENBQUM7UUFDckIsZ0JBQVcsR0FBVSxFQUFFLENBQUM7UUFDeEIsbUJBQWMsR0FBVSxFQUFFLENBQUM7UUFDM0IsZ0JBQVcsR0FBUTtZQUNqQjtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxJQUFJLEVBQUUsQ0FBQztnQkFDUCxLQUFLLEVBQUUsUUFBUTtnQkFDZixhQUFhLEVBQUUsRUFBRTtnQkFDakIsbUJBQW1CLEVBQUUsRUFBRTthQUN4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QUFPLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQy9ELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDbEQ7WUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLENBQU07UUFDaEIsT0FBTyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUN2QixDQUFDO0NBRUYsQ0FBQTsrR0FyTFksa0JBQWtCO21HQUFsQixrQkFBa0Isb0ZDaEIvQiwyNUhBdUVBO0FEdkRhLGtCQUFrQjtJQVA5QixZQUFZLEVBQUU7R0FPRixrQkFBa0IsQ0FxTDlCO1NBckxZLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUw5QixTQUFTOytCQUNFLGdCQUFnQjsrSkFNakIsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmlld2VyQ29uZmlnIH0gZnJvbSAnLi4vZG9jdW1lbnQtdmlld2VyL3ZpZXdlci1jb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBGaWxlRHJvcHBlckNvbmZpZyB9IGZyb20gJy4uL2ZpbGUtZHJvcHBlci9maWxlLWRyb3BwZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUvaHR0cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZCB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL2FsZXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xyXG5pbXBvcnQgeyBJbXBvcnRDc3ZDb25maWcgfSBmcm9tICcuL2ltcG9ydC1jc3YtY29uZmlnJztcclxuQFVudGlsRGVzdHJveSgpXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1pbXBvcnQtY3N2JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW1wb3J0LWNzdi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaW1wb3J0LWNzdi5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbXBvcnRDc3ZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHJlc3VsdDogYW55O1xyXG4gIEBJbnB1dCgpIGNvbmZpZzogSW1wb3J0Q3N2Q29uZmlnO1xyXG4gIGZpbGVzQ29uZmlnOiBGaWxlRHJvcHBlckNvbmZpZztcclxuICBmaWxlc0xpc3Q6IGFueVtdID0gW107XHJcbiAgZGF0YTogYW55W10gPSBbXTtcclxuICBpc1VwbG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNJbXBvcnRUeXBlU2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICB2aWV3ZXJDb25maWc6IFZpZXdlckNvbmZpZztcclxuICBmaWxlRGF0YTogYW55W10gPSBbXTtcclxuICBmYWlsZWRJdGVtczogYW55W10gPSBbXTtcclxuICBzZWxlY3RlZEZpZWxkczogYW55W10gPSBbXTtcclxuICBpbXBvcnRTdGVwczogYW55ID0gW1xyXG4gICAge1xyXG4gICAgICBpZDogMSxcclxuICAgICAgc3RlcDogMSxcclxuICAgICAgdGl0bGU6ICdVcGxvYWQnLFxyXG4gICAgICBwcm9ncmVzc1RpdGxlOiAnJyxcclxuICAgICAgcHJvZ3Jlc3NEZXNjcmlwdGlvbjogJydcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiAyLFxyXG4gICAgICBzdGVwOiAyLFxyXG4gICAgICB0aXRsZTogJ0ZpZWxkIE1hcHBpbmdzJyxcclxuICAgICAgcHJvZ3Jlc3NUaXRsZTogJycsXHJcbiAgICAgIHByb2dyZXNzRGVzY3JpcHRpb246ICcnXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBpZDogMyxcclxuICAgICAgc3RlcDogMyxcclxuICAgICAgdGl0bGU6ICdEYXRhIFZhbGlkYXRpb24nLFxyXG4gICAgICBwcm9ncmVzc1RpdGxlOiAnRGF0YSBCZWluZyBWYWxpZGF0ZWQnLFxyXG4gICAgICBwcm9ncmVzc0Rlc2NyaXB0aW9uOiAnVGhlIGRhdGEgaXMgY3VycmVudGx5IGJlaW5nIHZhbGlkYXRlZCBhbmQgY2hlY2tlZCBmb3IgZXJyb3JzLCBwbGVhc2UgZG8gbm90IG5hdmlnYXRlIGF3YXkgZnJvbSB0aGlzIHBhZ2UuICdcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiA0LFxyXG4gICAgICBzdGVwOiAzLFxyXG4gICAgICB0aXRsZTogJ0RhdGEgVmFsaWRhdGlvbiAmIEVycm9ycycsXHJcbiAgICAgIHByb2dyZXNzVGl0bGU6ICcnLFxyXG4gICAgICBwcm9ncmVzc0Rlc2NyaXB0aW9uOiAnJ1xyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgaWQ6IDUsXHJcbiAgICAgIHN0ZXA6IDQsXHJcbiAgICAgIHRpdGxlOiAnRGF0YSBJbXBvcnRpbmcnLFxyXG4gICAgICBwcm9ncmVzc1RpdGxlOiAnRGF0YSBCZWluZyBJbXBvcnRlZCcsXHJcbiAgICAgIHByb2dyZXNzRGVzY3JpcHRpb246ICdUaGUgZGF0YSBpcyBjdXJyZW50bHkgYmVpbmcgaW1wb3J0ZWQgYW5kIHNhdmVkLCBwbGVhc2UgZG8gbm90IG5hdmlnYXRlIGF3YXkgZnJvbSB0aGlzIHBhZ2UuIEFmdGVyIHRoZSBpbXBvcnQgaXMgY29tcGxldGVkLCB5b3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIGEgcGFnZSB3aXRoIHRoZSBpbXBvcnRlZCByZWNvcmRzLidcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIGlkOiA2LFxyXG4gICAgICBzdGVwOiA1LFxyXG4gICAgICB0aXRsZTogJ1N1Y2Nlc3MgUGFnZSAmIERhdGEgUHJldmlldycsXHJcbiAgICAgIHByb2dyZXNzVGl0bGU6ICcnLFxyXG4gICAgICBwcm9ncmVzc0Rlc2NyaXB0aW9uOiAnJ1xyXG4gICAgfSxcclxuICBdO1xyXG4gIGN1cnJlbnRTdGVwOiBhbnkgPSAxO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGVycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cFNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmZpbGVzQ29uZmlnID0ge1xyXG4gICAgICBmaWxlSWQ6IFwiZmlsZVwiLFxyXG4gICAgICBjb250YWluZXJJZDogXCJmaWxlQ29udGFpbmVyXCIsXHJcbiAgICAgIHN0eWxlczoge1xyXG4gICAgICAgIGhlaWdodDogXCIyMDBweFwiXHJcbiAgICAgIH0sXHJcbiAgICAgIGFjY2VwdEZpbGU6ICcuY3N2JyxcclxuICAgICAgbXVsdGlwbGU6IGZhbHNlLFxyXG4gICAgICBtYXhTaXplOiAxMCxcclxuICAgICAgYWNjZXB0RmlsZVRleHQ6IFwiLmNzdlwiXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBnZXQgc3RlcCgpIHtcclxuICAgIHJldHVybiB0aGlzLmltcG9ydFN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLmlkID09IHRoaXMuY3VycmVudFN0ZXApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZmlsZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5jdXJyZW50U3RlcCA9IDI7XHJcbiAgICB0aGlzLmZpbGVzTGlzdCA9IGV2ZW50O1xyXG5cclxuICAgIGxldCBzZWxlY3RlZEZpbGUgPSBudWxsO1xyXG4gICAgbGV0IGpzb25EYXRhID0gbnVsbDtcclxuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICBjb25zdCBmaWxlID0gdGhpcy5maWxlc0xpc3RbMF07XHJcbiAgICByZWFkZXIub25sb2FkID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSByZWFkZXIucmVzdWx0O1xyXG4gICAgICBzZWxlY3RlZEZpbGUgPSBYTFNYLnJlYWQoZGF0YSwge1xyXG4gICAgICAgIHR5cGU6ICdiaW5hcnknLFxyXG4gICAgICAgIGNlbGxEYXRlczogdHJ1ZSxcclxuICAgICAgfSk7XHJcbiAgICAgIGpzb25EYXRhID0gc2VsZWN0ZWRGaWxlLlNoZWV0TmFtZXMucmVkdWNlKChpbml0aWFsLCBuYW1lKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2hlZXQgPSBzZWxlY3RlZEZpbGUuU2hlZXRzW25hbWVdO1xyXG4gICAgICAgIGluaXRpYWwgPSBYTFNYLnV0aWxzLnNoZWV0X3RvX2pzb24oc2hlZXQsIHtcclxuICAgICAgICAgIGhlYWRlcjogMCxcclxuICAgICAgICAgIGRlZnZhbDogXCJcIixcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gaW5pdGlhbDtcclxuICAgICAgfSwge30pO1xyXG4gICAgICB0aGlzLmZpbGVEYXRhID0ganNvbkRhdGE7XHJcbiAgICB9XHJcbiAgICByZWFkZXIucmVhZEFzQmluYXJ5U3RyaW5nKGZpbGUpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgbWFwcGluZ1Byb2Nlc3NlZChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRTdGVwID0gMztcclxuICAgIHNldFRpbWVvdXQoeCA9PiB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZHMgPSBldmVudC5maWVsZHM7XHJcbiAgICAgIGNvbnN0IHRlbXBGaWxlRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWxlRGF0YSkpO1xyXG4gICAgICB0ZW1wRmlsZURhdGEuZm9yRWFjaChkYXRhID0+IHtcclxuICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSkge1xyXG4gICAgICAgICAgdmFyIGZpZWxkID0gZXZlbnQuZmllbGRzLmZpbmQoKGZpZWxkOiBhbnkpID0+IGZpZWxkLmxhYmVsID09IGtleSk7XHJcbiAgICAgICAgICBpZiAoZmllbGQpIHtcclxuICAgICAgICAgICAgaWYgKChmaWVsZC5wcm9wZXJ0eVR5cGUgPT0gJ2RhdGUnIHx8IGZpZWxkLnByb3BlcnR5VHlwZSA9PSAnZGF0ZVRpbWUnKSAmJiB0aGlzLmlzVmFsaWREYXRlKG5ldyBEYXRlKGRhdGFbZmllbGQubGFiZWxdKSkpIHtcclxuICAgICAgICAgICAgICBkYXRhW2ZpZWxkLnByb3BlcnR5XSA9IChuZXcgRGF0ZShkYXRhW2ZpZWxkLmxhYmVsXSkgYXMgRGF0ZSkudG9JU09TdHJpbmcoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBkYXRhW2ZpZWxkLnByb3BlcnR5XSA9IGRhdGFbZmllbGQubGFiZWxdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2tleV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZGVsZXRlIGRhdGFba2V5XTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNhdmUodGVtcEZpbGVEYXRhKTtcclxuICAgIH0sIDIwMDApO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2F2ZSh0ZW1wRmlsZURhdGE6IGFueSkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5odHRwLnBvc3QodGhpcy5jb25maWcuYXBpVXJsLCB7IGRhdGE6IHRlbXBGaWxlRGF0YSB9KVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcclxuICAgICAgICApLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgICB0aGlzLmZhaWxlZEl0ZW1zID0gcmVzdWx0LmZhaWxlZF9pdGVtcztcclxuICAgICAgICAgIGlmICh0aGlzLmZhaWxlZEl0ZW1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChyZXN1bHQubXNnLCAnd2FybicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCEodGhpcy5mYWlsZWRJdGVtcy5sZW5ndGggPiAwKSkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwID0gNTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCh4ID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwID0gNjtcclxuICAgICAgICAgICAgICB0aGlzLnJlc3VsdCA9IHJlc3VsdDtcclxuICAgICAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IDQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBpZiAoKGVycm9yLnN0YXR1cyA9PT0gNDIyIHx8IGVycm9yLnN0YXR1cyA9PT0gNDAwKSAmJiBlcnJvci5tc2cpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChlcnJvci5tc2csIFwid2FybmluZ1wiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICAgIHRoaXMucmVVcGxvYWQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzVmFsaWREYXRlKGQ6IGFueSkge1xyXG4gICAgcmV0dXJuIGQgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTihkLmdldFRpbWUoKSk7XHJcbiAgfVxyXG5cclxuICByZVVwbG9hZCgpIHtcclxuICAgIHRoaXMuZGF0YSA9IFtdO1xyXG4gICAgdGhpcy5maWxlRGF0YSA9IFtdO1xyXG4gICAgdGhpcy5maWxlc0xpc3QgPSBbXTtcclxuICAgIHRoaXMuZmFpbGVkSXRlbXMgPSBbXTtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWVsZHMgPSBbXTtcclxuICAgIHRoaXMuY3VycmVudFN0ZXAgPSAxO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBmeExheW91dD1cImNvbHVtbiB3cmFwXCIgY2xhc3M9XCJwLTRcIj5cclxuICA8bWF0LWNhcmQgZnhGbGV4PVwiMTAwJVwiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXIgY2VudGVyXCIgY2xhc3M9XCJwLTBcIj5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50IGZ4RmlsbCBmeExheW91dD1cInJvdyB3cmFwXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIiBjbGFzcz1cInByaW1hcnktY29sb3JcIj5cclxuICAgICAgPGg0IGZ4RmxleD1cIjIwJVwiIGNsYXNzPVwibWwtMlwiPlxyXG4gICAgICAgIFN0ZXAge3tzdGVwLnN0ZXB9fTogPHNwYW4gY2xhc3M9XCJub3JtYWwtZm9udC13ZWlnaHRcIj57e3N0ZXA/LnRpdGxlfX08L3NwYW4+XHJcbiAgICAgIDwvaDQ+XHJcbiAgICAgIDxoMyBmeEZsZXg9XCI4MCVcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiIGNsYXNzPVwidGV4dC1kYXJrXCIgZnhMYXlvdXRHYXA9XCIxcmVtIGdyaWRcIj5cclxuICAgICAgICA8c3Bhbj57e2NvbmZpZz8udGl0bGV9fSBJbXBvcnQ8L3NwYW4+XHJcbiAgICAgICAgPGEgKm5nSWY9XCJjb25maWc/LnNhbXBsZUZpbGUgJiYgY3VycmVudFN0ZXAgPT0gMVwiIHN0eWxlPVwiY29sb3I6IGluaGVyaXQ7XCIgW2Rvd25sb2FkXT1cImNvbmZpZz8uc2FtcGxlRmlsZT8ubmFtZVwiXHJcbiAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJjb25maWc/LnNhbXBsZUZpbGU/LnBhdGhcIiBtYXRUb29sdGlwPVwiRG93bmxvYWQgU2FtcGxlIGZpbGVcIiBtYXRUb29sdGlwUG9zaXRpb249XCJiZWxvd1wiXHJcbiAgICAgICAgICBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJwcmltYXJ5LWNvbG9yXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5cclxuICAgICAgICAgICAgICBkb3dubG9hZFxyXG4gICAgICAgICAgICA8L21hdC1pY29uPlxyXG4gICAgICAgICAgICBTYW1wbGUgRmlsZVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICA8L2gzPlxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gIDwvbWF0LWNhcmQ+XHJcbiAgPGRpdiBmeEZsZXg9XCIxMDAlXCIgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93IHdyYXBcIiBmeExheW91dEdhcD1cIjFyZW0gZ3JpZFwiICpuZ0lmPVwiY3VycmVudFN0ZXA9PTEgfHwgY3VycmVudFN0ZXAgPT0gMiB8fCBjdXJyZW50U3RlcCA9PSA0XCI+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiMTAwJVwiIGZ4RmxleC5ndC1zbT1cIjAgMSBjYWxjKDcwJS0xcmVtKVwiPlxyXG4gICAgICAgIDxtYXQtY2FyZCBmeEZsZXg9XCIxMDAlXCI+XHJcbiAgICAgICAgICA8bWF0LWNhcmQtY29udGVudCBmeExheW91dD1cImNvbHVtblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjEwMCVcIj5cclxuICAgICAgICAgICAgICA8c2VjdGlvbiBmeExheW91dD1cImNvbHVtblwiICpuZ0lmPVwiY29uZmlnLmltcG9ydFR5cGUgJiYgIXRoaXMuZmlsZURhdGEubGVuZ3RoICYmICF0aGlzLmZhaWxlZEl0ZW1zLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgPGg1IGNsYXNzPVwicHJpbWFyeS1jb2xvciBwYi0zXCI+RmlsZSBVcGxvYWQ8L2g1PlxyXG4gICAgICAgICAgICAgICAgPGFwcC1maWxlLWRyb3BwZXIgZnhGaWxsIGNsYXNzPVwibWItMiBkcm9wLXNlY3Rpb25cIiBbY29uZmlnXT1cImZpbGVzQ29uZmlnXCIgW2ZpbGVBcnJheV09XCJmaWxlc0xpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAoZmlsZUNoYW5nZWQpPVwiZmlsZUNoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgPC9hcHAtZmlsZS1kcm9wcGVyPlxyXG4gICAgICAgICAgICAgICAgPGFwcC1pbXBvcnQtaGlzdG9yeS1saXN0ICpuZ0lmPVwiY29uZmlnLmltcG9ydEhpc3RvcnkuaXNFbmFibGVkXCIgW2NvbmZpZ109XCJjb25maWdcIj5cclxuICAgICAgICAgICAgICAgIDwvYXBwLWltcG9ydC1oaXN0b3J5LWxpc3Q+XHJcbiAgICAgICAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgICAgICAgIDxhcHAtZmllbGQtbWFwcGluZyBjbGFzcz1cInctMTAwXCIgKm5nSWY9XCJ0aGlzLmZpbGVEYXRhLmxlbmd0aCA+IDAgJiYgIXRoaXMuZmFpbGVkSXRlbXMubGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgIFtkYXRhXT1cImZpbGVEYXRhXCIgW2NvbmZpZ109XCJjb25maWdcIiAob25TYXZlKT1cIm1hcHBpbmdQcm9jZXNzZWQoJGV2ZW50KVwiIChvblJlVXBsb2FkKT1cInJlVXBsb2FkKClcIj5cclxuICAgICAgICAgICAgICA8L2FwcC1maWVsZC1tYXBwaW5nPlxyXG4gICAgICAgICAgICAgIDxhcHAtZmFpbGVkLWl0ZW1zLWxpc3QgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwidGhpcy5mYWlsZWRJdGVtcy5sZW5ndGggPiAwXCIgW2ZhaWxlZEl0ZW1zXT1cImZhaWxlZEl0ZW1zXCJcclxuICAgICAgICAgICAgICAgIFtzZWxlY3RlZEZpZWxkc109XCJzZWxlY3RlZEZpZWxkc1wiIChvblJlVXBsb2FkKT1cInJlVXBsb2FkKClcIj48L2FwcC1mYWlsZWQtaXRlbXMtbGlzdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9tYXQtY2FyZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiMTAwJVwiIGZ4RmxleC5ndC1zbT1cIjMwJVwiPlxyXG4gICAgICAgIDxtYXQtY2FyZCBmeEZsZXg9XCIxMDAlXCI+XHJcbiAgICAgICAgICA8bWF0LWNhcmQtY29udGVudCBmeExheW91dD1cImNvbHVtblwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBzdGFydFwiPlxyXG4gICAgICAgICAgICA8aDUgY2xhc3M9XCJwcmltYXJ5LWNvbG9yIHBiLTNcIj5JbnN0cnVjdGlvbnMgJiBSZXF1aXJlbWVudHM8L2g1PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZFwiPlxyXG4gICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgUGxlYXNlIHVzZSB0aGlzIHl5eXktbW0tZGQgZGF0ZSBmb3JtYXQgZm9yIGFsbCB0aGUgZGF0ZSBmaWVsZHMuIE90aGVyd2lzZSB5b3VyIGRhdGUgZmllbGRzIHdpbGwgYmVcclxuICAgICAgICAgICAgICAgIGluY29ycmVjdCBvciBub3Qgd2lsbCBiZSBhY2NlcHRlZC4gRXg6IDIwMjEtMDktMjdcclxuICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbmZpZz8uY3VzdG9tRXJyb3JNZXNzYWdlc1wiPlxyXG4gICAgICAgICAgICAgICAgPHAgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgY29uZmlnPy5jdXN0b21FcnJvck1lc3NhZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7bWVzc2FnZX19XHJcbiAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgIDwvbWF0LWNhcmQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uIHdyYXBcIiBjbGFzcz1cInAtNFwiICpuZ0lmPVwiY3VycmVudFN0ZXA9PTMgfHwgY3VycmVudFN0ZXAgPT0gNVwiPlxyXG4gICAgICA8YXBwLWRhdGEtaW1wb3J0IFtzdGVwXT1cInN0ZXBcIiBmeExheW91dEFsaWduPVwiY2VudGVyIGNlbnRlclwiPjwvYXBwLWRhdGEtaW1wb3J0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uIHdyYXBcIiBjbGFzcz1cInAtNFwiICpuZ0lmPVwiY3VycmVudFN0ZXAgPT0gNlwiPlxyXG4gICAgICA8YXBwLWltcG9ydC1zdWNjZXNzIFtkYXRhXT1cInJlc3VsdFwiIFtjb25maWddPVwiY29uZmlnXCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlciBjZW50ZXJcIj48L2FwcC1pbXBvcnQtc3VjY2Vzcz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|