@sunbird-cb/toc 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/_collection/_common/attendance-card/attendance-card.component.mjs +55 -0
- package/esm2022/lib/_collection/_common/attendance-card/attendance-card.module.mjs +126 -0
- package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.component.mjs +32 -0
- package/esm2022/lib/_collection/_common/attendance-helper/attendance-helper.module.mjs +85 -0
- package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.component.mjs +100 -0
- package/esm2022/lib/_collection/_common/avatar-photo/avatar-photo.module.mjs +48 -0
- package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.component.mjs +120 -0
- package/esm2022/lib/_collection/_common/certificate-dialog/certificate-dialog.module.mjs +92 -0
- package/esm2022/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.mjs +48 -0
- package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.component.mjs +25 -0
- package/esm2022/lib/_collection/_common/confirm-dialog/confirm-dialog.module.mjs +41 -0
- package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover-card.component.mjs +89 -0
- package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.module.mjs +42 -0
- package/esm2022/lib/_collection/_common/connection-hover-card/connection-hover.servive.mjs +41 -0
- package/esm2022/lib/_collection/_common/connection-name/connection-name.component.mjs +78 -0
- package/esm2022/lib/_collection/_common/connection-name/connection-name.module.mjs +45 -0
- package/esm2022/lib/_collection/_common/connection-name/profile-v2.model.mjs +2 -0
- package/esm2022/lib/_collection/_common/content-progress/content-progress.component.mjs +70 -0
- package/esm2022/lib/_collection/_common/content-progress/content-progress.module.mjs +28 -0
- package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.mjs +187 -0
- package/esm2022/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.mjs +86 -0
- package/esm2022/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.mjs +31 -0
- package/esm2022/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.mjs +941 -0
- package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.mjs +183 -0
- package/esm2022/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.mjs +327 -0
- package/esm2022/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.mjs +297 -0
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.mjs +223 -0
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.mjs +591 -0
- package/esm2022/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.mjs +16 -0
- package/esm2022/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.mjs +43 -0
- package/esm2022/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.mjs +133 -0
- package/esm2022/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.mjs +66 -0
- package/esm2022/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.mjs +278 -0
- package/esm2022/lib/_collection/_common/content-toc/content-services/handle-claim.service.mjs +21 -0
- package/esm2022/lib/_collection/_common/content-toc/content-services/review-component-data.service.mjs +21 -0
- package/esm2022/lib/_collection/_common/content-toc/content-toc.component.mjs +847 -0
- package/esm2022/lib/_collection/_common/content-toc/content-toc.module.mjs +219 -0
- package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.component.mjs +209 -0
- package/esm2022/lib/_collection/_common/content-toc/karma-points/karma-points.module.mjs +26 -0
- package/esm2022/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.mjs +19 -0
- package/esm2022/lib/_collection/_common/content-toc/pipes/truncate.pipe.mjs +23 -0
- package/esm2022/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.mjs +113 -0
- package/esm2022/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.mjs +110 -0
- package/esm2022/lib/_collection/_common/display-content-type/display-content-type.component.mjs +26 -0
- package/esm2022/lib/_collection/_common/display-content-type/display-content-type.module.mjs +19 -0
- package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.mjs +67 -0
- package/esm2022/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.mjs +28 -0
- package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.component.mjs +77 -0
- package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.model.mjs +2 -0
- package/esm2022/lib/_collection/_common/mark-as-complete/mark-as-complete.module.mjs +61 -0
- package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.module.mjs +20 -0
- package/esm2022/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.mjs +73 -0
- package/esm2022/lib/_collection/_common/player-brief/player-brief.component.mjs +139 -0
- package/esm2022/lib/_collection/_common/player-brief/player-brief.module.mjs +71 -0
- package/esm2022/lib/_collection/_common/rating-summary/rating-summary.component.mjs +34 -0
- package/esm2022/lib/_collection/_common/rating-summary/rating-summary.module.mjs +56 -0
- package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.component.mjs +25 -0
- package/esm2022/lib/_collection/_common/skeleton-loader/skeleton-loader.module.mjs +37 -0
- package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.mjs +32 -0
- package/esm2022/lib/_collection/_common/tips-for-learner/tips-for-learner.module.mjs +30 -0
- package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.mjs +38 -0
- package/esm2022/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.mjs +51 -0
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.component.mjs +115 -0
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.model.mjs +12 -0
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.module.mjs +51 -0
- package/esm2022/lib/_collection/_common/user-autocomplete/user-autocomplete.service.mjs +61 -0
- package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.component.mjs +87 -0
- package/esm2022/lib/_collection/_common/user-content-rating/user-content-rating.module.mjs +36 -0
- package/esm2022/lib/_collection/_common/user-image/user-image.component.mjs +62 -0
- package/esm2022/lib/_collection/_common/user-image/user-image.module.mjs +24 -0
- package/esm2022/lib/_collection/btn-page-back/btn-page-back.component.mjs +192 -0
- package/esm2022/lib/_collection/btn-page-back/btn-page-back.module.mjs +44 -0
- package/esm2022/lib/_collection/btn-page-back/btn-page-back.service.mjs +99 -0
- package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.component.mjs +58 -0
- package/esm2022/lib/_collection/card-rating-comment/card-rating-comment.module.mjs +67 -0
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.component.mjs +112 -0
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.model.mjs +2 -0
- package/esm2022/lib/_collection/sliders-dynamic/sliders-dynamic.module.mjs +69 -0
- package/esm2022/lib/_collection-api.mjs +57 -0
- package/esm2022/lib/_constants/widget-content.constants.mjs +19 -0
- package/esm2022/lib/_directives/tooltip.directive.mjs +68 -0
- package/esm2022/lib/_models/common.model.mjs +2 -0
- package/esm2022/lib/_models/error.model.mjs +2 -0
- package/esm2022/lib/_pipes/highlight.pipe.mjs +24 -0
- package/esm2022/lib/_services/rating.service.mjs +89 -0
- package/esm2022/lib/_services/samuhik-charcha.service.mjs +29 -0
- package/esm2022/lib/_services/viewer-route-util.mjs +103 -0
- package/esm2022/lib/_services/widget-content.model.mjs +246 -0
- package/esm2022/lib/_services/widget-content.service.mjs +589 -0
- package/esm2022/lib/_shared/translate-loader.factory.mjs +9 -0
- package/esm2022/lib/app-toc-lib.module.mjs +499 -0
- package/esm2022/lib/collection.config.mjs +161 -0
- package/esm2022/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.mjs +37 -0
- package/esm2022/lib/components/app-toc-banner/app-toc-banner.component.mjs +1436 -0
- package/esm2022/lib/components/app-toc-cios-home/app-toc-cios-home.component.mjs +475 -0
- package/esm2022/lib/components/app-toc-cios-home/consent-dialog.component.mjs +119 -0
- package/esm2022/lib/components/app-toc-cohorts/app-toc-cohorts.component.mjs +80 -0
- package/esm2022/lib/components/app-toc-content-card/app-toc-content-card.component.mjs +249 -0
- package/esm2022/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.mjs +39 -0
- package/esm2022/lib/components/app-toc-discussion/app-toc-discussion.component.mjs +58 -0
- package/esm2022/lib/components/app-toc-home/app-toc-home.component.mjs +2229 -0
- package/esm2022/lib/components/app-toc-home-v2/app-toc-home-v2.component.mjs +2796 -0
- package/esm2022/lib/components/app-toc-overview/app-toc-overview.component.mjs +157 -0
- package/esm2022/lib/components/app-toc-session-card/app-toc-session-card.component.mjs +48 -0
- package/esm2022/lib/components/app-toc-sessions/app-toc-sessions.component.mjs +47 -0
- package/esm2022/lib/components/app-toc-single-page/app-toc-single-page.component.mjs +766 -0
- package/esm2022/lib/components/completion-survey-form/completion-survey-form.component.mjs +243 -0
- package/esm2022/lib/components/create-batch-dialog/create-batch-dialog.component.mjs +116 -0
- package/esm2022/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.mjs +44 -0
- package/esm2022/lib/components/enroll-profile-form/enroll-profile-form.component.mjs +1838 -0
- package/esm2022/lib/components/enroll-questionnaire/enroll-questionnaire.component.mjs +236 -0
- package/esm2022/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.mjs +213 -0
- package/esm2022/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.mjs +36 -0
- package/esm2022/lib/components/public-survey-form/public-survey-form.component.mjs +256 -0
- package/esm2022/lib/components/survey-form-question/survey-form-question.component.mjs +133 -0
- package/esm2022/lib/components/survey-form-section/survey-form-section.component.mjs +36 -0
- package/esm2022/lib/models/app-toc-analytics.model.mjs +2 -0
- package/esm2022/lib/models/app-toc.model.mjs +38 -0
- package/esm2022/lib/models/auto-complete.model.mjs +2 -0
- package/esm2022/lib/models/card-content.model.mjs +13 -0
- package/esm2022/lib/models/content-strip-with-tabs.model.mjs +2 -0
- package/esm2022/lib/models/discussion-forum.model.mjs +14 -0
- package/esm2022/lib/models/goal.model.mjs +2 -0
- package/esm2022/lib/models/meta-tag.model.mjs +8 -0
- package/esm2022/lib/models/playlist.model.mjs +2 -0
- package/esm2022/lib/models/profile-revamp.model.mjs +2 -0
- package/esm2022/lib/models/rating.model.mjs +2 -0
- package/esm2022/lib/models/user-profile.model.mjs +21 -0
- package/esm2022/lib/resolvers/app-toc-cios-resolver.service.mjs +24 -0
- package/esm2022/lib/resolvers/app-toc-cios-user-enroll-resolver.service.mjs +24 -0
- package/esm2022/lib/resolvers/app-toc-content-read-resolver.service.mjs +60 -0
- package/esm2022/lib/resolvers/app-toc-ext-public-resolver.service.mjs +25 -0
- package/esm2022/lib/resolvers/app-toc-resolver.service.mjs +106 -0
- package/esm2022/lib/resolvers/config-resolver.service.mjs +25 -0
- package/esm2022/lib/resolvers/profile-resolver.service.mjs +25 -0
- package/esm2022/lib/resolvers/restricted-features-resolver.service.mjs +25 -0
- package/esm2022/lib/routes/app-toc-home/app-toc-home.component.mjs +51 -0
- package/esm2022/lib/routes/app-toc-home/app-toc-home.directive.mjs +16 -0
- package/esm2022/lib/routes/app-toc-home/app-toc-home.service.mjs +18 -0
- package/esm2022/lib/services/access-control.service.mjs +56 -0
- package/esm2022/lib/services/action.service.mjs +23 -0
- package/esm2022/lib/services/app-toc-v2.service.mjs +47 -0
- package/esm2022/lib/services/app-toc.service.mjs +1001 -0
- package/esm2022/lib/services/certificate.service.mjs +69 -0
- package/esm2022/lib/services/discuss-utils.service.mjs +58 -0
- package/esm2022/lib/services/editor.service.mjs +34 -0
- package/esm2022/lib/services/load-check.service.mjs +21 -0
- package/esm2022/lib/services/loader.service.mjs +33 -0
- package/esm2022/lib/services/mobile-apps.service.mjs +67 -0
- package/esm2022/lib/services/netcore.service.mjs +56 -0
- package/esm2022/lib/services/nps-grid.service.mjs +31 -0
- package/esm2022/lib/services/otp.service.mjs +43 -0
- package/esm2022/lib/services/profile-v2.service.mjs +43 -0
- package/esm2022/lib/services/reset-ratings.service.mjs +19 -0
- package/esm2022/lib/services/resource-download-helper.service.mjs +64 -0
- package/esm2022/lib/services/timer.service.mjs +23 -0
- package/esm2022/lib/services/title-tag.service.mjs +71 -0
- package/esm2022/lib/services/user-profile.service.mjs +55 -0
- package/esm2022/lib/services/viewer-data.service.mjs +64 -0
- package/esm2022/lib/services/viewer-util.service.mjs +500 -0
- package/esm2022/lib/share-toc/share-toc/share-toc.component.mjs +291 -0
- package/esm2022/lib/share-toc/share-toc.module.mjs +119 -0
- package/esm2022/public-api.mjs +56 -0
- package/esm2022/sunbird-cb-toc.mjs +5 -0
- package/fesm2022/sunbird-cb-toc.mjs +23517 -0
- package/fesm2022/sunbird-cb-toc.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts +17 -0
- package/lib/_collection/_common/attendance-card/attendance-card.component.d.ts.map +1 -0
- package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts +32 -0
- package/lib/_collection/_common/attendance-card/attendance-card.module.d.ts.map +1 -0
- package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts +16 -0
- package/lib/_collection/_common/attendance-helper/attendance-helper.component.d.ts.map +1 -0
- package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts +21 -0
- package/lib/_collection/_common/attendance-helper/attendance-helper.module.d.ts.map +1 -0
- package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts +23 -0
- package/lib/_collection/_common/avatar-photo/avatar-photo.component.d.ts.map +1 -0
- package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts +16 -0
- package/lib/_collection/_common/avatar-photo/avatar-photo.module.d.ts.map +1 -0
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts +23 -0
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.component.d.ts.map +1 -0
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts +23 -0
- package/lib/_collection/_common/certificate-dialog/certificate-dialog.module.d.ts.map +1 -0
- package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts +10 -0
- package/lib/_collection/_common/certificate-dialog/svg-to-pdf.component.d.ts.map +1 -0
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts +12 -0
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.component.d.ts.map +1 -0
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts +13 -0
- package/lib/_collection/_common/confirm-dialog/confirm-dialog.module.d.ts.map +1 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts +19 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover-card.component.d.ts.map +1 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts +15 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover.module.d.ts.map +1 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts +12 -0
- package/lib/_collection/_common/connection-hover-card/connection-hover.servive.d.ts.map +1 -0
- package/lib/_collection/_common/connection-name/connection-name.component.d.ts +18 -0
- package/lib/_collection/_common/connection-name/connection-name.component.d.ts.map +1 -0
- package/lib/_collection/_common/connection-name/connection-name.module.d.ts +15 -0
- package/lib/_collection/_common/connection-name/connection-name.module.d.ts.map +1 -0
- package/lib/_collection/_common/connection-name/profile-v2.model.d.ts +200 -0
- package/lib/_collection/_common/connection-name/profile-v2.model.d.ts.map +1 -0
- package/lib/_collection/_common/content-progress/content-progress.component.d.ts +17 -0
- package/lib/_collection/_common/content-progress/content-progress.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-progress/content-progress.module.d.ts +11 -0
- package/lib/_collection/_common/content-progress/content-progress.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts +39 -0
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts +20 -0
- package/lib/_collection/_common/content-rating-v2-dialog/content-rating-v2-dialog.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts +12 -0
- package/lib/_collection/_common/content-toc/ai-tutor-confirm-popup/ai-tutor-confirm-popup.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts +184 -0
- package/lib/_collection/_common/content-toc/app-toc-about/app-toc-about.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts +42 -0
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewer/app-toc-assignment-viewer.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts +55 -0
- package/lib/_collection/_common/content-toc/app-toc-assignment-viewerV2/app-toc-assignment-viewerV2.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts +48 -0
- package/lib/_collection/_common/content-toc/app-toc-batch-assignments/app-toc-batch-assignments.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts +49 -0
- package/lib/_collection/_common/content-toc/app-toc-content/app-toc-content.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts +92 -0
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2/app-toc-content-card-v2.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts +9 -0
- package/lib/_collection/_common/content-toc/app-toc-content-card-v2-skeleton/app-toc-content-card-v2-skeleton.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts +17 -0
- package/lib/_collection/_common/content-toc/app-toc-reference-notes/app-toc-reference-notes.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts +41 -0
- package/lib/_collection/_common/content-toc/app-toc-session-card-new/app-toc-session-card-new.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts +22 -0
- package/lib/_collection/_common/content-toc/app-toc-sessions-new/app-toc-sessions-new.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts +46 -0
- package/lib/_collection/_common/content-toc/app-toc-teachers-notes/app-toc-teachers-notes.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts +11 -0
- package/lib/_collection/_common/content-toc/content-services/handle-claim.service.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts +11 -0
- package/lib/_collection/_common/content-toc/content-services/review-component-data.service.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts +129 -0
- package/lib/_collection/_common/content-toc/content-toc.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts +52 -0
- package/lib/_collection/_common/content-toc/content-toc.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts +30 -0
- package/lib/_collection/_common/content-toc/karma-points/karma-points.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts +10 -0
- package/lib/_collection/_common/content-toc/karma-points/karma-points.module.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts +8 -0
- package/lib/_collection/_common/content-toc/pipes/replace-nbsp.pipe.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts +8 -0
- package/lib/_collection/_common/content-toc/pipes/truncate.pipe.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts +29 -0
- package/lib/_collection/_common/content-toc/reviews-content/reviews-content.component.d.ts.map +1 -0
- package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts +25 -0
- package/lib/_collection/_common/content-toc/samuhik-charcha-content/samuhik-charcha-content/samuhik-charcha-content.component.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts +15 -0
- package/lib/_collection/_common/display-content-type/display-content-type.component.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts +10 -0
- package/lib/_collection/_common/display-content-type/display-content-type.module.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts +13 -0
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.component.d.ts.map +1 -0
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts +11 -0
- package/lib/_collection/_common/display-content-type-icon/display-content-type-icon.module.d.ts.map +1 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts +23 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.component.d.ts.map +1 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts +9 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.model.d.ts.map +1 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts +19 -0
- package/lib/_collection/_common/mark-as-complete/mark-as-complete.module.d.ts.map +1 -0
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts +9 -0
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.module.d.ts.map +1 -0
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts +17 -0
- package/lib/_collection/_common/pipe-content-route/pipe-content-route.pipe.d.ts.map +1 -0
- package/lib/_collection/_common/player-brief/player-brief.component.d.ts +36 -0
- package/lib/_collection/_common/player-brief/player-brief.component.d.ts.map +1 -0
- package/lib/_collection/_common/player-brief/player-brief.module.d.ts +20 -0
- package/lib/_collection/_common/player-brief/player-brief.module.d.ts.map +1 -0
- package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts +15 -0
- package/lib/_collection/_common/rating-summary/rating-summary.component.d.ts.map +1 -0
- package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts +14 -0
- package/lib/_collection/_common/rating-summary/rating-summary.module.d.ts.map +1 -0
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts +12 -0
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.component.d.ts.map +1 -0
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts +12 -0
- package/lib/_collection/_common/skeleton-loader/skeleton-loader.module.d.ts.map +1 -0
- package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts +16 -0
- package/lib/_collection/_common/tips-for-learner/tips-for-learner-card/tips-for-learner-card.component.d.ts.map +1 -0
- package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts +11 -0
- package/lib/_collection/_common/tips-for-learner/tips-for-learner.module.d.ts.map +1 -0
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts +17 -0
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.component.d.ts.map +1 -0
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts +12 -0
- package/lib/_collection/_common/toc-kpi-values/toc-kpi-values.module.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts +35 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.component.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts +18 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.model.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts +16 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.module.d.ts.map +1 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts +16 -0
- package/lib/_collection/_common/user-autocomplete/user-autocomplete.service.d.ts.map +1 -0
- package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts +22 -0
- package/lib/_collection/_common/user-content-rating/user-content-rating.component.d.ts.map +1 -0
- package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts +13 -0
- package/lib/_collection/_common/user-content-rating/user-content-rating.module.d.ts.map +1 -0
- package/lib/_collection/_common/user-image/user-image.component.d.ts +22 -0
- package/lib/_collection/_common/user-image/user-image.component.d.ts.map +1 -0
- package/lib/_collection/_common/user-image/user-image.module.d.ts +10 -0
- package/lib/_collection/_common/user-image/user-image.module.d.ts.map +1 -0
- package/lib/_collection/btn-page-back/btn-page-back.component.d.ts +48 -0
- package/lib/_collection/btn-page-back/btn-page-back.component.d.ts.map +1 -0
- package/lib/_collection/btn-page-back/btn-page-back.module.d.ts +15 -0
- package/lib/_collection/btn-page-back/btn-page-back.module.d.ts.map +1 -0
- package/lib/_collection/btn-page-back/btn-page-back.service.d.ts +23 -0
- package/lib/_collection/btn-page-back/btn-page-back.service.d.ts.map +1 -0
- package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts +20 -0
- package/lib/_collection/card-rating-comment/card-rating-comment.component.d.ts.map +1 -0
- package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts +16 -0
- package/lib/_collection/card-rating-comment/card-rating-comment.module.d.ts.map +1 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts +26 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.component.d.ts.map +1 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts +22 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.model.d.ts.map +1 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts +19 -0
- package/lib/_collection/sliders-dynamic/sliders-dynamic.module.d.ts.map +1 -0
- package/lib/_collection-api.d.ts +35 -0
- package/lib/_collection-api.d.ts.map +1 -0
- package/lib/_constants/widget-content.constants.d.ts +8 -0
- package/lib/_constants/widget-content.constants.d.ts.map +1 -0
- package/lib/_directives/tooltip.directive.d.ts +18 -0
- package/lib/_directives/tooltip.directive.d.ts.map +1 -0
- package/lib/_models/common.model.d.ts +4 -0
- package/lib/_models/common.model.d.ts.map +1 -0
- package/lib/_models/error.model.d.ts +6 -0
- package/lib/_models/error.model.d.ts.map +1 -0
- package/lib/_pipes/highlight.pipe.d.ts +11 -0
- package/lib/_pipes/highlight.pipe.d.ts.map +1 -0
- package/lib/_services/rating.service.d.ts +19 -0
- package/lib/_services/rating.service.d.ts.map +1 -0
- package/lib/_services/samuhik-charcha.service.d.ts +14 -0
- package/lib/_services/samuhik-charcha.service.d.ts.map +1 -0
- package/lib/_services/viewer-route-util.d.ts +9 -0
- package/lib/_services/viewer-route-util.d.ts.map +1 -0
- package/lib/_services/widget-content.model.d.ts +515 -0
- package/lib/_services/widget-content.model.d.ts.map +1 -0
- package/lib/_services/widget-content.service.d.ts +101 -0
- package/lib/_services/widget-content.service.d.ts.map +1 -0
- package/lib/_shared/translate-loader.factory.d.ts +8 -0
- package/lib/_shared/translate-loader.factory.d.ts.map +1 -0
- package/lib/app-toc-lib.module.d.ts +89 -0
- package/lib/app-toc-lib.module.d.ts.map +1 -0
- package/lib/collection.config.d.ts +160 -0
- package/lib/collection.config.d.ts.map +1 -0
- package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts +18 -0
- package/lib/components/app-toc-analytics-tiles/app-toc-analytics-tiles.component.d.ts.map +1 -0
- package/lib/components/app-toc-banner/app-toc-banner.component.d.ts +226 -0
- package/lib/components/app-toc-banner/app-toc-banner.component.d.ts.map +1 -0
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts +79 -0
- package/lib/components/app-toc-cios-home/app-toc-cios-home.component.d.ts.map +1 -0
- package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts +23 -0
- package/lib/components/app-toc-cios-home/consent-dialog.component.d.ts.map +1 -0
- package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts +32 -0
- package/lib/components/app-toc-cohorts/app-toc-cohorts.component.d.ts.map +1 -0
- package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts +48 -0
- package/lib/components/app-toc-content-card/app-toc-content-card.component.d.ts.map +1 -0
- package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts +15 -0
- package/lib/components/app-toc-dialog-intro-video/app-toc-dialog-intro-video.component.d.ts.map +1 -0
- package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts +22 -0
- package/lib/components/app-toc-discussion/app-toc-discussion.component.d.ts.map +1 -0
- package/lib/components/app-toc-home/app-toc-home.component.d.ts +315 -0
- package/lib/components/app-toc-home/app-toc-home.component.d.ts.map +1 -0
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts +386 -0
- package/lib/components/app-toc-home-v2/app-toc-home-v2.component.d.ts.map +1 -0
- package/lib/components/app-toc-overview/app-toc-overview.component.d.ts +48 -0
- package/lib/components/app-toc-overview/app-toc-overview.component.d.ts.map +1 -0
- package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts +23 -0
- package/lib/components/app-toc-session-card/app-toc-session-card.component.d.ts.map +1 -0
- package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts +15 -0
- package/lib/components/app-toc-sessions/app-toc-sessions.component.d.ts.map +1 -0
- package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts +150 -0
- package/lib/components/app-toc-single-page/app-toc-single-page.component.d.ts.map +1 -0
- package/lib/components/completion-survey-form/completion-survey-form.component.d.ts +43 -0
- package/lib/components/completion-survey-form/completion-survey-form.component.d.ts.map +1 -0
- package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts +28 -0
- package/lib/components/create-batch-dialog/create-batch-dialog.component.d.ts.map +1 -0
- package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts +16 -0
- package/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.d.ts.map +1 -0
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts +196 -0
- package/lib/components/enroll-profile-form/enroll-profile-form.component.d.ts.map +1 -0
- package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts +45 -0
- package/lib/components/enroll-questionnaire/enroll-questionnaire.component.d.ts.map +1 -0
- package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts +55 -0
- package/lib/components/knowledge-artifact-details/knowledge-artifact-details.component.d.ts.map +1 -0
- package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts +19 -0
- package/lib/components/non-relevent-feedback-dialog/non-relevent-feedback-dialog.component.d.ts.map +1 -0
- package/lib/components/public-survey-form/public-survey-form.component.d.ts +44 -0
- package/lib/components/public-survey-form/public-survey-form.component.d.ts.map +1 -0
- package/lib/components/survey-form-question/survey-form-question.component.d.ts +21 -0
- package/lib/components/survey-form-question/survey-form-question.component.d.ts.map +1 -0
- package/lib/components/survey-form-section/survey-form-section.component.d.ts +14 -0
- package/lib/components/survey-form-section/survey-form-section.component.d.ts.map +1 -0
- package/lib/models/app-toc-analytics.model.d.ts +153 -0
- package/lib/models/app-toc-analytics.model.d.ts.map +1 -0
- package/lib/models/app-toc.model.d.ts +85 -0
- package/lib/models/app-toc.model.d.ts.map +1 -0
- package/lib/models/auto-complete.model.d.ts +28 -0
- package/lib/models/auto-complete.model.d.ts.map +1 -0
- package/lib/models/card-content.model.d.ts +20 -0
- package/lib/models/card-content.model.d.ts.map +1 -0
- package/lib/models/content-strip-with-tabs.model.d.ts +45 -0
- package/lib/models/content-strip-with-tabs.model.d.ts.map +1 -0
- package/lib/models/discussion-forum.model.d.ts +41 -0
- package/lib/models/discussion-forum.model.d.ts.map +1 -0
- package/lib/models/goal.model.d.ts +23 -0
- package/lib/models/goal.model.d.ts.map +1 -0
- package/lib/models/meta-tag.model.d.ts +7 -0
- package/lib/models/meta-tag.model.d.ts.map +1 -0
- package/lib/models/playlist.model.d.ts +24 -0
- package/lib/models/playlist.model.d.ts.map +1 -0
- package/lib/models/profile-revamp.model.d.ts +15 -0
- package/lib/models/profile-revamp.model.d.ts.map +1 -0
- package/lib/models/rating.model.d.ts +18 -0
- package/lib/models/rating.model.d.ts.map +1 -0
- package/lib/models/user-profile.model.d.ts +38 -0
- package/lib/models/user-profile.model.d.ts.map +1 -0
- package/lib/resolvers/app-toc-cios-resolver.service.d.ts +13 -0
- package/lib/resolvers/app-toc-cios-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts +13 -0
- package/lib/resolvers/app-toc-cios-user-enroll-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-content-read-resolver.service.d.ts +17 -0
- package/lib/resolvers/app-toc-content-read-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts +13 -0
- package/lib/resolvers/app-toc-ext-public-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/app-toc-resolver.service.d.ts +17 -0
- package/lib/resolvers/app-toc-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/config-resolver.service.d.ts +12 -0
- package/lib/resolvers/config-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/profile-resolver.service.d.ts +12 -0
- package/lib/resolvers/profile-resolver.service.d.ts.map +1 -0
- package/lib/resolvers/restricted-features-resolver.service.d.ts +12 -0
- package/lib/resolvers/restricted-features-resolver.service.d.ts.map +1 -0
- package/lib/routes/app-toc-home/app-toc-home.component.d.ts +20 -0
- package/lib/routes/app-toc-home/app-toc-home.component.d.ts.map +1 -0
- package/lib/routes/app-toc-home/app-toc-home.directive.d.ts +9 -0
- package/lib/routes/app-toc-home/app-toc-home.directive.d.ts.map +1 -0
- package/lib/routes/app-toc-home/app-toc-home.service.d.ts +9 -0
- package/lib/routes/app-toc-home/app-toc-home.service.d.ts.map +1 -0
- package/lib/services/access-control.service.d.ts +30 -0
- package/lib/services/access-control.service.d.ts.map +1 -0
- package/lib/services/action.service.d.ts +10 -0
- package/lib/services/action.service.d.ts.map +1 -0
- package/lib/services/app-toc-v2.service.d.ts +8 -0
- package/lib/services/app-toc-v2.service.d.ts.map +1 -0
- package/lib/services/app-toc.service.d.ts +131 -0
- package/lib/services/app-toc.service.d.ts.map +1 -0
- package/lib/services/certificate.service.d.ts +43 -0
- package/lib/services/certificate.service.d.ts.map +1 -0
- package/lib/services/discuss-utils.service.d.ts +34 -0
- package/lib/services/discuss-utils.service.d.ts.map +1 -0
- package/lib/services/editor.service.d.ts +18 -0
- package/lib/services/editor.service.d.ts.map +1 -0
- package/lib/services/load-check.service.d.ts +9 -0
- package/lib/services/load-check.service.d.ts.map +1 -0
- package/lib/services/loader.service.d.ts +17 -0
- package/lib/services/loader.service.d.ts.map +1 -0
- package/lib/services/mobile-apps.service.d.ts +39 -0
- package/lib/services/mobile-apps.service.d.ts.map +1 -0
- package/lib/services/netcore.service.d.ts +34 -0
- package/lib/services/netcore.service.d.ts.map +1 -0
- package/lib/services/nps-grid.service.d.ts +16 -0
- package/lib/services/nps-grid.service.d.ts.map +1 -0
- package/lib/services/otp.service.d.ts +21 -0
- package/lib/services/otp.service.d.ts.map +1 -0
- package/lib/services/profile-v2.service.d.ts +21 -0
- package/lib/services/profile-v2.service.d.ts.map +1 -0
- package/lib/services/reset-ratings.service.d.ts +9 -0
- package/lib/services/reset-ratings.service.d.ts.map +1 -0
- package/lib/services/resource-download-helper.service.d.ts +30 -0
- package/lib/services/resource-download-helper.service.d.ts.map +1 -0
- package/lib/services/timer.service.d.ts +10 -0
- package/lib/services/timer.service.d.ts.map +1 -0
- package/lib/services/title-tag.service.d.ts +22 -0
- package/lib/services/title-tag.service.d.ts.map +1 -0
- package/lib/services/user-profile.service.d.ts +25 -0
- package/lib/services/user-profile.service.d.ts.map +1 -0
- package/lib/services/viewer-data.service.d.ts +59 -0
- package/lib/services/viewer-data.service.d.ts.map +1 -0
- package/lib/services/viewer-util.service.d.ts +63 -0
- package/lib/services/viewer-util.service.d.ts.map +1 -0
- package/lib/share-toc/share-toc/share-toc.component.d.ts +57 -0
- package/lib/share-toc/share-toc/share-toc.component.d.ts.map +1 -0
- package/lib/share-toc/share-toc.module.d.ts +33 -0
- package/lib/share-toc/share-toc.module.d.ts.map +1 -0
- package/package.json +36 -0
- package/public-api.d.ts +44 -0
- package/public-api.d.ts.map +1 -0
- package/sunbird-cb-toc.d.ts.map +1 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
//#region (imports)
|
|
2
|
+
import { Component, Inject } from '@angular/core';
|
|
3
|
+
import { MAT_LEGACY_DIALOG_DATA } from '@angular/material/legacy-dialog';
|
|
4
|
+
import { Validators } from '@angular/forms';
|
|
5
|
+
import * as _ from 'lodash';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@angular/material/legacy-snack-bar";
|
|
8
|
+
import * as i2 from "@angular/material/legacy-dialog";
|
|
9
|
+
import * as i3 from "@angular/forms";
|
|
10
|
+
import * as i4 from "../../services/app-toc.service";
|
|
11
|
+
import * as i5 from "@ngx-translate/core";
|
|
12
|
+
import * as i6 from "@angular/common";
|
|
13
|
+
import * as i7 from "@angular/material/icon";
|
|
14
|
+
import * as i8 from "@angular/material/legacy-button";
|
|
15
|
+
import * as i9 from "@angular/material/legacy-progress-spinner";
|
|
16
|
+
import * as i10 from "../survey-form-question/survey-form-question.component";
|
|
17
|
+
import * as i11 from "../survey-form-section/survey-form-section.component";
|
|
18
|
+
//#endregion (imports)
|
|
19
|
+
const EMAIL_PATTERN = /^[a-zA-Z0-9]+[a-zA-Z0-9._-]*[a-zA-Z0-9]+@[a-zA-Z0-9]+([-a-zA-Z0-9]*[a-zA-Z0-9]+)?(\.[a-zA-Z0-9-]+)*\.[a-zA-Z]{2,4}$/;
|
|
20
|
+
const MOBILE_PATTERN = /^[0]?[6789]\d{9}$/;
|
|
21
|
+
export class CompletionSurveyFormComponent {
|
|
22
|
+
//#endregion (properties)
|
|
23
|
+
//#region (constructor)
|
|
24
|
+
constructor(snackBar, dialogRef, data, fb, appTocSvc, translate) {
|
|
25
|
+
this.snackBar = snackBar;
|
|
26
|
+
this.dialogRef = dialogRef;
|
|
27
|
+
this.data = data;
|
|
28
|
+
this.fb = fb;
|
|
29
|
+
this.appTocSvc = appTocSvc;
|
|
30
|
+
this.translate = translate;
|
|
31
|
+
//#region (properties)
|
|
32
|
+
this.rating = 0;
|
|
33
|
+
this.stars = Array(5).fill(0);
|
|
34
|
+
this.otherFieldType = [];
|
|
35
|
+
this.selectedOption = false;
|
|
36
|
+
this.surveyId = '';
|
|
37
|
+
this.parentalFields = [];
|
|
38
|
+
this.childFields = [];
|
|
39
|
+
this.surveyFormIsValid = true;
|
|
40
|
+
this.addLoader = 0;
|
|
41
|
+
this.surveyId = data.surveyId;
|
|
42
|
+
if (localStorage.getItem('websiteLanguage')) {
|
|
43
|
+
this.translate.setDefaultLang('en');
|
|
44
|
+
const lang = localStorage.getItem('websiteLanguage');
|
|
45
|
+
this.translate.use(lang);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//#endregion (constructor)
|
|
49
|
+
//#region (initialization)
|
|
50
|
+
ngOnInit() {
|
|
51
|
+
this.getSurveyFormData();
|
|
52
|
+
}
|
|
53
|
+
getSurveyFormData() {
|
|
54
|
+
this.addLoader = this.addLoader + 1;
|
|
55
|
+
this.appTocSvc.getFormById(this.surveyId).subscribe((result) => {
|
|
56
|
+
this.addLoader = this.addLoader - 1;
|
|
57
|
+
this.formDetails = {
|
|
58
|
+
title: _.get(result, 'result.response.title', ''),
|
|
59
|
+
fields: _.get(result, 'result.response.fields', []),
|
|
60
|
+
contextType: _.get(result, 'result.response.contextType', 'form'),
|
|
61
|
+
};
|
|
62
|
+
this.buildForm();
|
|
63
|
+
}, (error) => {
|
|
64
|
+
if (error) {
|
|
65
|
+
this.addLoader = this.addLoader - 1;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
buildForm() {
|
|
70
|
+
if (this.formDetails) {
|
|
71
|
+
this.surveyForm = this.fb.group({
|
|
72
|
+
fields: this.fb.array([])
|
|
73
|
+
});
|
|
74
|
+
const questionsArray = this.questionsArray;
|
|
75
|
+
if (this.formDetails.fields) {
|
|
76
|
+
this.formDetails.fields.forEach((field) => {
|
|
77
|
+
if (field.fieldType !== 'separator' && field.fieldType !== 'heading') {
|
|
78
|
+
const validatorsArray = [];
|
|
79
|
+
if (field.isRequired) {
|
|
80
|
+
validatorsArray.push(Validators.required);
|
|
81
|
+
}
|
|
82
|
+
switch (field.fieldType) {
|
|
83
|
+
case 'phone number':
|
|
84
|
+
validatorsArray.push(Validators.pattern(MOBILE_PATTERN));
|
|
85
|
+
validatorsArray.push(Validators.minLength(10));
|
|
86
|
+
validatorsArray.push(Validators.maxLength(10));
|
|
87
|
+
break;
|
|
88
|
+
case 'email':
|
|
89
|
+
validatorsArray.push(Validators.pattern(EMAIL_PATTERN));
|
|
90
|
+
break;
|
|
91
|
+
case 'numeric':
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
const questionGroup = this.fb.group({
|
|
95
|
+
question: [field.name],
|
|
96
|
+
parentId: [field.parentId],
|
|
97
|
+
questionIndex: [questionsArray.length],
|
|
98
|
+
fieldType: [field.fieldType],
|
|
99
|
+
answer: ['', validatorsArray],
|
|
100
|
+
isNA: [false],
|
|
101
|
+
questionId: [field.id]
|
|
102
|
+
});
|
|
103
|
+
field['controlIndex'] = questionsArray.length;
|
|
104
|
+
field['validatorsArray'] = validatorsArray;
|
|
105
|
+
questionsArray.push(questionGroup);
|
|
106
|
+
if (validatorsArray.length) {
|
|
107
|
+
this.surveyFormIsValid = false;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (field.parentId) {
|
|
111
|
+
this.childFields.push(field);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
this.parentalFields.push(field);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
get questionsArray() {
|
|
121
|
+
if (this.surveyForm && this.surveyForm.controls.fields) {
|
|
122
|
+
return this.surveyForm.controls.fields;
|
|
123
|
+
}
|
|
124
|
+
return this.fb.array([]);
|
|
125
|
+
}
|
|
126
|
+
//#endregion (initialization)
|
|
127
|
+
//#region (UI Interactions)
|
|
128
|
+
getChildQuestionsFormArray(sectionId) {
|
|
129
|
+
if (this.surveyForm && this.surveyForm.controls.fields) {
|
|
130
|
+
const questionsArray = this.questionsArray;
|
|
131
|
+
const childQuestionsArray = questionsArray.controls.filter((question) => {
|
|
132
|
+
return question.value && question.value.parentId === sectionId;
|
|
133
|
+
});
|
|
134
|
+
if (childQuestionsArray.length > 0) {
|
|
135
|
+
return this.fb.array(childQuestionsArray);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return this.fb.array([]);
|
|
139
|
+
}
|
|
140
|
+
getChildFields(sectionId) {
|
|
141
|
+
let sectionChilds = [];
|
|
142
|
+
if (this.childFields) {
|
|
143
|
+
sectionChilds = this.childFields.filter((field) => field.parentId === sectionId);
|
|
144
|
+
}
|
|
145
|
+
return sectionChilds;
|
|
146
|
+
}
|
|
147
|
+
getQuestionControl(index) {
|
|
148
|
+
if (this.questionsArray.controls[index]) {
|
|
149
|
+
return this.questionsArray.controls[index];
|
|
150
|
+
}
|
|
151
|
+
return this.fb.group({});
|
|
152
|
+
}
|
|
153
|
+
submitForm() {
|
|
154
|
+
this.surveyForm.markAllAsTouched();
|
|
155
|
+
this.surveyForm.updateValueAndValidity();
|
|
156
|
+
if (this.surveyFormIsValid) {
|
|
157
|
+
const formBody = {
|
|
158
|
+
formId: this.surveyId,
|
|
159
|
+
version: 4,
|
|
160
|
+
status: 'SUBMITTED',
|
|
161
|
+
responses: this.dataObject,
|
|
162
|
+
contextType: _.get(this.formDetails, 'contextType', ''),
|
|
163
|
+
contextId: _.get(this.data, 'courseID', ''),
|
|
164
|
+
contextName: _.get(this.data, 'courseName', ''),
|
|
165
|
+
contextOrgId: _.get(this.data, 'contextOrgId', '')
|
|
166
|
+
};
|
|
167
|
+
this.addLoader = this.addLoader + 1;
|
|
168
|
+
this.appTocSvc.submitForm(formBody).subscribe({
|
|
169
|
+
next: res => {
|
|
170
|
+
this.addLoader = this.addLoader - 1;
|
|
171
|
+
if (_.get(res, 'params.status') === 'success') {
|
|
172
|
+
this.openSnackbar('Form is submitted successfully');
|
|
173
|
+
this.dialogRef.close(true);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
this.openSnackbar(_.get(res, 'errorMessage', 'Something went wrong please try again'));
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
error: (error) => {
|
|
180
|
+
this.addLoader = this.addLoader - 1;
|
|
181
|
+
if (error) {
|
|
182
|
+
this.openSnackbar('Something went wrong please try again');
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
//#region (data processing)
|
|
189
|
+
get dataObject() {
|
|
190
|
+
const dataObject = [];
|
|
191
|
+
const fields = _.get(this.surveyForm, 'value.fields', []);
|
|
192
|
+
if (fields) {
|
|
193
|
+
fields.forEach((field) => {
|
|
194
|
+
let value = field.isNA ? 'N/A' : field.answer;
|
|
195
|
+
if (!field.isNA && field.fieldType === 'date' && value) {
|
|
196
|
+
const formattedYear = value.getFullYear();
|
|
197
|
+
const formattedMonth = String(value.getMonth() + 1).padStart(2, '0');
|
|
198
|
+
const formattedDay = String(value.getDate()).padStart(2, '0');
|
|
199
|
+
value = `${formattedYear}-${formattedMonth}-${formattedDay}`;
|
|
200
|
+
}
|
|
201
|
+
dataObject.push({
|
|
202
|
+
questionId: field.questionId,
|
|
203
|
+
question: field.question,
|
|
204
|
+
answer: value,
|
|
205
|
+
answerType: field.fieldType
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
return dataObject;
|
|
210
|
+
}
|
|
211
|
+
doItLater() {
|
|
212
|
+
this.dialogRef.close(false);
|
|
213
|
+
}
|
|
214
|
+
//#endregion (data processing)
|
|
215
|
+
updateQuestionValues(event) {
|
|
216
|
+
this.questionsArray.value[event.questionIndex] = event;
|
|
217
|
+
this.updateSurveyFormValidity();
|
|
218
|
+
}
|
|
219
|
+
updateSurveyFormValidity() {
|
|
220
|
+
this.surveyFormIsValid = true;
|
|
221
|
+
this.questionsArray.controls.forEach((form) => {
|
|
222
|
+
if (!form.controls.answer.valid) {
|
|
223
|
+
this.surveyFormIsValid = false;
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
//#endregion (UI Interactions)
|
|
228
|
+
openSnackbar(primaryMsg, duration = 5000) {
|
|
229
|
+
this.snackBar.open(primaryMsg, 'X', {
|
|
230
|
+
duration,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CompletionSurveyFormComponent, deps: [{ token: i1.MatLegacySnackBar }, { token: i2.MatLegacyDialogRef }, { token: MAT_LEGACY_DIALOG_DATA }, { token: i3.FormBuilder }, { token: i4.AppTocService }, { token: i5.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
234
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CompletionSurveyFormComponent, selector: "ws-app-completion-survey-form", ngImport: i0, template: "<div class=\"preview-container\">\n <div class=\"form-header\">\n <div class=\"flex justify-start items-center\">\n <div>{{'apptoc.completeSurvey' | translate}} </div>\n </div>\n </div>\n <div class=\"form-content\">\n <div class=\"my-4 feedback-text flex gap-2\">\n <mat-icon class=\"info-icon\">info</mat-icon>\n <p class=\"margin-remove\">{{'apptoc.takeSurveyToUnlock' | translate}}</p>\n </div>\n <ng-container *ngIf=\"surveyForm\">\n <form [formGroup]=\"surveyForm\">\n <ng-container *ngFor=\"let parentField of parentalFields\">\n <ng-container [ngSwitch]=\"parentField.fieldType\">\n <ng-container *ngSwitchCase=\"'heading'\">\n <ws-app-survey-form-section [childFields]=\"getChildFields(parentField.sectionId)\"\n [sectionField]=\"parentField\"\n [childQuestionsFormArray]=\"getChildQuestionsFormArray(parentField.sectionId)\"\n (questionValues)=\"updateQuestionValues($event)\"></ws-app-survey-form-section>\n </ng-container>\n <ng-container *ngSwitchCase=\"'separator'\">\n <hr class=\"opacity-50 elment-separator\">\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ws-app-survey-form-question [fieldDetails]=\"parentField\"\n [questionForm]=\"getQuestionControl(parentField.controlIndex)\"\n (questionValues)=\"updateQuestionValues($event)\"></ws-app-survey-form-question>\n </ng-container>\n </ng-container>\n </ng-container>\n <div class=\"flex justify-end m-4\">\n <button mat-button class=\"do-later-btn\" (click)=\"doItLater()\">{{'apptoc.doItLater' | translate}}</button>\n <button mat-button class=\"submit-btn\" [disabled]=\"!surveyFormIsValid\" (click)=\"submitForm()\">{{'apptoc.submit' | translate}}</button>\n </div>\n </form>\n </ng-container>\n </div>\n</div>\n\n<ng-container *ngIf=\"addLoader > 0\">\n <div class=\"text-center my-2 loader flex justify-center items-center\">\n <mat-spinner class=\"inline-block\"></mat-spinner>\n </div>\n</ng-container>", styles: [".preview-container{max-height:85vh}.preview-container .form-content{background:#f4f8ff}.preview-container .form-header{font-family:Montserrat;font-size:24px;font-weight:600;line-height:29.26px;text-align:center;text-underline-position:from-font;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;padding:15px 24px;border-bottom:1px solid #c3c3c3}.preview-container .q-element{padding:16px;background:#fff;border-radius:8px}.preview-container .form-content{padding:15px 24px}.preview-container .elment-separator{margin:16px 0}.preview-container .feedback-text{color:#1b4ca1;font:400 16px/20px Lato}.do-later-btn{height:40px;color:#1b4ca1!important;background-color:#fff!important;border-radius:20px;border:1px solid #1b4ca1!important;margin-right:10px}.submit-btn{height:40px;color:#fff!important;background-color:#1b4ca1!important;border-radius:20px}.submit-btn:disabled{opacity:.6!important}.loader{position:absolute;top:0;left:0;z-index:1000;height:100vh;width:100vw;background-color:#80808045}.info-icon{color:#d13924;font-size:21px;height:21px;width:21px;margin-top:2px;flex:0 0 21px}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.MatLegacyButton, 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: i9.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10.SurveyFormQuestionComponent, selector: "ws-app-survey-form-question", inputs: ["questionForm", "fieldDetails"], outputs: ["questionValues"] }, { kind: "component", type: i11.SurveyFormSectionComponent, selector: "ws-app-survey-form-section", inputs: ["childQuestionsFormArray", "childFields", "sectionField"], outputs: ["questionValues"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
|
|
235
|
+
}
|
|
236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CompletionSurveyFormComponent, decorators: [{
|
|
237
|
+
type: Component,
|
|
238
|
+
args: [{ selector: 'ws-app-completion-survey-form', template: "<div class=\"preview-container\">\n <div class=\"form-header\">\n <div class=\"flex justify-start items-center\">\n <div>{{'apptoc.completeSurvey' | translate}} </div>\n </div>\n </div>\n <div class=\"form-content\">\n <div class=\"my-4 feedback-text flex gap-2\">\n <mat-icon class=\"info-icon\">info</mat-icon>\n <p class=\"margin-remove\">{{'apptoc.takeSurveyToUnlock' | translate}}</p>\n </div>\n <ng-container *ngIf=\"surveyForm\">\n <form [formGroup]=\"surveyForm\">\n <ng-container *ngFor=\"let parentField of parentalFields\">\n <ng-container [ngSwitch]=\"parentField.fieldType\">\n <ng-container *ngSwitchCase=\"'heading'\">\n <ws-app-survey-form-section [childFields]=\"getChildFields(parentField.sectionId)\"\n [sectionField]=\"parentField\"\n [childQuestionsFormArray]=\"getChildQuestionsFormArray(parentField.sectionId)\"\n (questionValues)=\"updateQuestionValues($event)\"></ws-app-survey-form-section>\n </ng-container>\n <ng-container *ngSwitchCase=\"'separator'\">\n <hr class=\"opacity-50 elment-separator\">\n </ng-container>\n <ng-container *ngSwitchDefault>\n <ws-app-survey-form-question [fieldDetails]=\"parentField\"\n [questionForm]=\"getQuestionControl(parentField.controlIndex)\"\n (questionValues)=\"updateQuestionValues($event)\"></ws-app-survey-form-question>\n </ng-container>\n </ng-container>\n </ng-container>\n <div class=\"flex justify-end m-4\">\n <button mat-button class=\"do-later-btn\" (click)=\"doItLater()\">{{'apptoc.doItLater' | translate}}</button>\n <button mat-button class=\"submit-btn\" [disabled]=\"!surveyFormIsValid\" (click)=\"submitForm()\">{{'apptoc.submit' | translate}}</button>\n </div>\n </form>\n </ng-container>\n </div>\n</div>\n\n<ng-container *ngIf=\"addLoader > 0\">\n <div class=\"text-center my-2 loader flex justify-center items-center\">\n <mat-spinner class=\"inline-block\"></mat-spinner>\n </div>\n</ng-container>", styles: [".preview-container{max-height:85vh}.preview-container .form-content{background:#f4f8ff}.preview-container .form-header{font-family:Montserrat;font-size:24px;font-weight:600;line-height:29.26px;text-align:center;text-underline-position:from-font;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;padding:15px 24px;border-bottom:1px solid #c3c3c3}.preview-container .q-element{padding:16px;background:#fff;border-radius:8px}.preview-container .form-content{padding:15px 24px}.preview-container .elment-separator{margin:16px 0}.preview-container .feedback-text{color:#1b4ca1;font:400 16px/20px Lato}.do-later-btn{height:40px;color:#1b4ca1!important;background-color:#fff!important;border-radius:20px;border:1px solid #1b4ca1!important;margin-right:10px}.submit-btn{height:40px;color:#fff!important;background-color:#1b4ca1!important;border-radius:20px}.submit-btn:disabled{opacity:.6!important}.loader{position:absolute;top:0;left:0;z-index:1000;height:100vh;width:100vw;background-color:#80808045}.info-icon{color:#d13924;font-size:21px;height:21px;width:21px;margin-top:2px;flex:0 0 21px}\n"] }]
|
|
239
|
+
}], ctorParameters: function () { return [{ type: i1.MatLegacySnackBar }, { type: i2.MatLegacyDialogRef }, { type: undefined, decorators: [{
|
|
240
|
+
type: Inject,
|
|
241
|
+
args: [MAT_LEGACY_DIALOG_DATA]
|
|
242
|
+
}] }, { type: i3.FormBuilder }, { type: i4.AppTocService }, { type: i5.TranslateService }]; } });
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxldGlvbi1zdXJ2ZXktZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvY29tcG9uZW50cy9jb21wbGV0aW9uLXN1cnZleS1mb3JtL2NvbXBsZXRpb24tc3VydmV5LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvY29tcGxldGlvbi1zdXJ2ZXktZm9ybS9jb21wbGV0aW9uLXN1cnZleS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG1CQUFtQjtBQUNuQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQTtBQUV6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQXNCLE1BQU0saUNBQWlDLENBQUE7QUFDNUYsT0FBTyxFQUFxQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM5RSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQTs7Ozs7Ozs7Ozs7OztBQUkzQixzQkFBc0I7QUFFdEIsTUFBTSxhQUFhLEdBQUcscUhBQXFILENBQUE7QUFDM0ksTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUE7QUFPMUMsTUFBTSxPQUFPLDZCQUE2QjtJQWN4Qyx5QkFBeUI7SUFFekIsdUJBQXVCO0lBQ3ZCLFlBQ1UsUUFBMkIsRUFDNUIsU0FBNEQsRUFDNUIsSUFBUyxFQUN4QyxFQUFlLEVBQ2YsU0FBd0IsRUFDeEIsU0FBMkI7UUFMM0IsYUFBUSxHQUFSLFFBQVEsQ0FBbUI7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBbUQ7UUFDNUIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUN4QyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUN4Qixj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QUNQLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFDRCw4QkFBOEI7SUFFOUIsb0JBQW9CLENBQUMsS0FBVTtRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsS0FBSyxDQUFBO1FBQ3RELElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFBO0lBQ2pDLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQTtRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO2dCQUMvQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFBO2FBQy9CO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQ0QsOEJBQThCO0lBTXRCLFlBQVksQ0FBQyxVQUFrQixFQUFFLFdBQW1CLElBQUk7UUFDOUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUNsQyxRQUFRO1NBQ1QsQ0FBQyxDQUFBO0lBQ0osQ0FBQzsrR0E5T1UsNkJBQTZCLHFGQW9COUIsc0JBQXNCO21HQXBCckIsNkJBQTZCLHFFQ25CMUMsd29FQTRDZTs7NEZEekJGLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFDRSwrQkFBK0I7OzBCQXdCdEMsTUFBTTsyQkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gKGltcG9ydHMpXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE1hdExlZ2FjeVNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXNuYWNrLWJhcidcbmltcG9ydCB7IE1BVF9MRUdBQ1lfRElBTE9HX0RBVEEsIE1hdExlZ2FjeURpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnXG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoJ1xuaW1wb3J0IHsgQXBwVG9jU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FwcC10b2Muc2VydmljZSdcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbi8vI2VuZHJlZ2lvbiAoaW1wb3J0cylcblxuY29uc3QgRU1BSUxfUEFUVEVSTiA9IC9eW2EtekEtWjAtOV0rW2EtekEtWjAtOS5fLV0qW2EtekEtWjAtOV0rQFthLXpBLVowLTldKyhbLWEtekEtWjAtOV0qW2EtekEtWjAtOV0rKT8oXFwuW2EtekEtWjAtOS1dKykqXFwuW2EtekEtWl17Miw0fSQvXG5jb25zdCBNT0JJTEVfUEFUVEVSTiA9IC9eWzBdP1s2Nzg5XVxcZHs5fSQvXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dzLWFwcC1jb21wbGV0aW9uLXN1cnZleS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbXBsZXRpb24tc3VydmV5LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb21wbGV0aW9uLXN1cnZleS1mb3JtLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ29tcGxldGlvblN1cnZleUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIC8vI3JlZ2lvbiAocHJvcGVydGllcylcbiAgcmF0aW5nID0gMFxuICBzdGFycyA9IEFycmF5KDUpLmZpbGwoMClcbiAgb3RoZXJGaWVsZFR5cGU6IGFueSA9IFtdXG4gIHNlbGVjdGVkT3B0aW9uID0gZmFsc2VcbiAgZm9ybURldGFpbHM6IGFueVxuICBzdXJ2ZXlJZCA9ICcnXG4gIHN1cnZleUZvcm0hOiBGb3JtR3JvdXBcbiAgcGFyZW50YWxGaWVsZHM6IGFueVtdID0gW11cbiAgY2hpbGRGaWVsZHM6IGFueVtdID0gW11cbiAgc3VydmV5Rm9ybUlzVmFsaWQgPSB0cnVlXG4gIGFkZExvYWRlciA9IDBcbiAgLy8jZW5kcmVnaW9uIChwcm9wZXJ0aWVzKVxuXG4gIC8vI3JlZ2lvbiAoY29uc3RydWN0b3IpXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdExlZ2FjeVNuYWNrQmFyLFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdExlZ2FjeURpYWxvZ1JlZjxDb21wbGV0aW9uU3VydmV5Rm9ybUNvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfTEVHQUNZX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgYXBwVG9jU3ZjOiBBcHBUb2NTZXJ2aWNlLFxuICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuXG4gICkge1xuICAgIHRoaXMuc3VydmV5SWQgPSBkYXRhLnN1cnZleUlkXG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJzaXRlTGFuZ3VhZ2UnKSkge1xuICAgICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcoJ2VuJylcbiAgICAgIGNvbnN0IGxhbmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnd2Vic2l0ZUxhbmd1YWdlJykhXG4gICAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZylcbiAgICB9XG4gIH1cbiAgLy8jZW5kcmVnaW9uIChjb25zdHJ1Y3RvcilcblxuXG4gIC8vI3JlZ2lvbiAoaW5pdGlhbGl6YXRpb24pXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0U3VydmV5Rm9ybURhdGEoKVxuICB9XG5cbiAgZ2V0U3VydmV5Rm9ybURhdGEoKSB7XG4gICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciArIDFcbiAgICB0aGlzLmFwcFRvY1N2Yy5nZXRGb3JtQnlJZCh0aGlzLnN1cnZleUlkKS5zdWJzY3JpYmUoKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyIC0gMVxuICAgICAgdGhpcy5mb3JtRGV0YWlscyA9IHtcbiAgICAgICAgdGl0bGU6IF8uZ2V0KHJlc3VsdCwgJ3Jlc3VsdC5yZXNwb25zZS50aXRsZScsICcnKSxcbiAgICAgICAgZmllbGRzOiBfLmdldChyZXN1bHQsICdyZXN1bHQucmVzcG9uc2UuZmllbGRzJywgW10pLFxuICAgICAgICBjb250ZXh0VHlwZTogXy5nZXQocmVzdWx0LCAncmVzdWx0LnJlc3BvbnNlLmNvbnRleHRUeXBlJywgJ2Zvcm0nKSxcbiAgICAgIH1cbiAgICAgIHRoaXMuYnVpbGRGb3JtKClcbiAgICB9LCAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5hZGRMb2FkZXIgPSB0aGlzLmFkZExvYWRlciAtIDFcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgYnVpbGRGb3JtKCkge1xuICAgIGlmICh0aGlzLmZvcm1EZXRhaWxzKSB7XG4gICAgICB0aGlzLnN1cnZleUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgZmllbGRzOiB0aGlzLmZiLmFycmF5KFtdKVxuICAgICAgfSlcbiAgICAgIGNvbnN0IHF1ZXN0aW9uc0FycmF5ID0gdGhpcy5xdWVzdGlvbnNBcnJheVxuICAgICAgaWYgKHRoaXMuZm9ybURldGFpbHMuZmllbGRzKSB7XG4gICAgICAgIHRoaXMuZm9ybURldGFpbHMuZmllbGRzLmZvckVhY2goKGZpZWxkOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoZmllbGQuZmllbGRUeXBlICE9PSAnc2VwYXJhdG9yJyAmJiBmaWVsZC5maWVsZFR5cGUgIT09ICdoZWFkaW5nJykge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRhdG9yc0FycmF5OiBhbnkgPSBbXVxuICAgICAgICAgICAgaWYgKGZpZWxkLmlzUmVxdWlyZWQpIHtcbiAgICAgICAgICAgICAgdmFsaWRhdG9yc0FycmF5LnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3dpdGNoIChmaWVsZC5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgICAgY2FzZSAncGhvbmUgbnVtYmVyJzpcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzQXJyYXkucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oTU9CSUxFX1BBVFRFUk4pKVxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnNBcnJheS5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSlcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzQXJyYXkucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCgxMCkpXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnNBcnJheS5wdXNoKFZhbGlkYXRvcnMucGF0dGVybihFTUFJTF9QQVRURVJOKSlcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBjYXNlICdudW1lcmljJzpcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBxdWVzdGlvbkdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgICAgIHF1ZXN0aW9uOiBbZmllbGQubmFtZV0sXG4gICAgICAgICAgICAgIHBhcmVudElkOiBbZmllbGQucGFyZW50SWRdLFxuICAgICAgICAgICAgICBxdWVzdGlvbkluZGV4OiBbcXVlc3Rpb25zQXJyYXkubGVuZ3RoXSxcbiAgICAgICAgICAgICAgZmllbGRUeXBlOiBbZmllbGQuZmllbGRUeXBlXSxcbiAgICAgICAgICAgICAgYW5zd2VyOiBbJycsIHZhbGlkYXRvcnNBcnJheV0sXG4gICAgICAgICAgICAgIGlzTkE6IFtmYWxzZV0sXG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IFtmaWVsZC5pZF1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBmaWVsZFsnY29udHJvbEluZGV4J10gPSBxdWVzdGlvbnNBcnJheS5sZW5ndGhcbiAgICAgICAgICAgIGZpZWxkWyd2YWxpZGF0b3JzQXJyYXknXSA9IHZhbGlkYXRvcnNBcnJheVxuICAgICAgICAgICAgcXVlc3Rpb25zQXJyYXkucHVzaChxdWVzdGlvbkdyb3VwKVxuICAgICAgICAgICAgaWYgKHZhbGlkYXRvcnNBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgdGhpcy5zdXJ2ZXlGb3JtSXNWYWxpZCA9IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpZWxkLnBhcmVudElkKSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkRmllbGRzLnB1c2goZmllbGQpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50YWxGaWVsZHMucHVzaChmaWVsZClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IHF1ZXN0aW9uc0FycmF5KCk6IEZvcm1BcnJheSB7XG4gICAgaWYgKHRoaXMuc3VydmV5Rm9ybSAmJiB0aGlzLnN1cnZleUZvcm0uY29udHJvbHMuZmllbGRzKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdXJ2ZXlGb3JtLmNvbnRyb2xzLmZpZWxkcyBhcyBGb3JtQXJyYXlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmIuYXJyYXkoW10pXG4gIH1cbiAgLy8jZW5kcmVnaW9uIChpbml0aWFsaXphdGlvbilcblxuICAvLyNyZWdpb24gKFVJIEludGVyYWN0aW9ucylcbiAgZ2V0Q2hpbGRRdWVzdGlvbnNGb3JtQXJyYXkoc2VjdGlvbklkOiBzdHJpbmcpOiBGb3JtQXJyYXkge1xuICAgIGlmICh0aGlzLnN1cnZleUZvcm0gJiYgdGhpcy5zdXJ2ZXlGb3JtLmNvbnRyb2xzLmZpZWxkcykge1xuICAgICAgY29uc3QgcXVlc3Rpb25zQXJyYXkgPSB0aGlzLnF1ZXN0aW9uc0FycmF5XG4gICAgICBjb25zdCBjaGlsZFF1ZXN0aW9uc0FycmF5ID0gcXVlc3Rpb25zQXJyYXkuY29udHJvbHMuZmlsdGVyKChxdWVzdGlvbjogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBxdWVzdGlvbi52YWx1ZSAmJiBxdWVzdGlvbi52YWx1ZS5wYXJlbnRJZCA9PT0gc2VjdGlvbklkXG4gICAgICB9KVxuXG4gICAgICBpZiAoY2hpbGRRdWVzdGlvbnNBcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZiLmFycmF5KGNoaWxkUXVlc3Rpb25zQXJyYXkpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZiLmFycmF5KFtdKSBhcyBGb3JtQXJyYXlcbiAgfVxuXG4gIGdldENoaWxkRmllbGRzKHNlY3Rpb25JZDogc3RyaW5nKSB7XG4gICAgbGV0IHNlY3Rpb25DaGlsZHM6IGFueSA9IFtdXG4gICAgaWYgKHRoaXMuY2hpbGRGaWVsZHMpIHtcbiAgICAgIHNlY3Rpb25DaGlsZHMgPSB0aGlzLmNoaWxkRmllbGRzLmZpbHRlcigoZmllbGQ6IGFueSkgPT4gZmllbGQucGFyZW50SWQgPT09IHNlY3Rpb25JZClcbiAgICB9XG4gICAgcmV0dXJuIHNlY3Rpb25DaGlsZHNcbiAgfVxuXG4gIGdldFF1ZXN0aW9uQ29udHJvbChpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMucXVlc3Rpb25zQXJyYXkuY29udHJvbHNbaW5kZXhdKSB7XG4gICAgICByZXR1cm4gdGhpcy5xdWVzdGlvbnNBcnJheS5jb250cm9sc1tpbmRleF1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmIuZ3JvdXAoe30pXG4gIH1cblxuICBzdWJtaXRGb3JtKCkge1xuICAgIHRoaXMuc3VydmV5Rm9ybS5tYXJrQWxsQXNUb3VjaGVkKClcbiAgICB0aGlzLnN1cnZleUZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpXG4gICAgaWYgKHRoaXMuc3VydmV5Rm9ybUlzVmFsaWQpIHtcbiAgICAgIGNvbnN0IGZvcm1Cb2R5OiBhbnkgPSB7XG4gICAgICAgIGZvcm1JZDogdGhpcy5zdXJ2ZXlJZCxcbiAgICAgICAgdmVyc2lvbjogNCxcbiAgICAgICAgc3RhdHVzOiAnU1VCTUlUVEVEJyxcbiAgICAgICAgcmVzcG9uc2VzOiB0aGlzLmRhdGFPYmplY3QsXG4gICAgICAgIGNvbnRleHRUeXBlOiBfLmdldCh0aGlzLmZvcm1EZXRhaWxzLCAnY29udGV4dFR5cGUnLCAnJyksXG4gICAgICAgIGNvbnRleHRJZDogXy5nZXQodGhpcy5kYXRhLCAnY291cnNlSUQnLCAnJyksXG4gICAgICAgIGNvbnRleHROYW1lOiBfLmdldCh0aGlzLmRhdGEsICdjb3Vyc2VOYW1lJywgJycpLFxuICAgICAgICBjb250ZXh0T3JnSWQ6IF8uZ2V0KHRoaXMuZGF0YSwgJ2NvbnRleHRPcmdJZCcsICcnKVxuICAgICAgfVxuXG4gICAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyICsgMVxuICAgICAgdGhpcy5hcHBUb2NTdmMuc3VibWl0Rm9ybShmb3JtQm9keSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogcmVzID0+IHtcbiAgICAgICAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyIC0gMVxuICAgICAgICAgIGlmIChfLmdldChyZXMsICdwYXJhbXMuc3RhdHVzJykgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgICAgdGhpcy5vcGVuU25hY2tiYXIoJ0Zvcm0gaXMgc3VibWl0dGVkIHN1Y2Nlc3NmdWxseScpXG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5TbmFja2JhcihfLmdldChyZXMsICdlcnJvck1lc3NhZ2UnLCAnU29tZXRoaW5nIHdlbnQgd3JvbmcgcGxlYXNlIHRyeSBhZ2FpbicpKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICB0aGlzLmFkZExvYWRlciA9IHRoaXMuYWRkTG9hZGVyIC0gMVxuICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgdGhpcy5vcGVuU25hY2tiYXIoJ1NvbWV0aGluZyB3ZW50IHdyb25nIHBsZWFzZSB0cnkgYWdhaW4nKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvLyNyZWdpb24gKGRhdGEgcHJvY2Vzc2luZylcbiAgZ2V0IGRhdGFPYmplY3QoKTogYW55IHtcbiAgICBjb25zdCBkYXRhT2JqZWN0OiBhbnkgPSBbXVxuICAgIGNvbnN0IGZpZWxkcyA9IF8uZ2V0KHRoaXMuc3VydmV5Rm9ybSwgJ3ZhbHVlLmZpZWxkcycsIFtdKVxuICAgIGlmIChmaWVsZHMpIHtcbiAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IGZpZWxkLmlzTkEgPyAnTi9BJyA6IGZpZWxkLmFuc3dlclxuICAgICAgICBpZiAoIWZpZWxkLmlzTkEgJiYgZmllbGQuZmllbGRUeXBlID09PSAnZGF0ZScgJiYgdmFsdWUpIHtcbiAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRZZWFyID0gdmFsdWUuZ2V0RnVsbFllYXIoKVxuICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZE1vbnRoID0gU3RyaW5nKHZhbHVlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpXG4gICAgICAgICAgY29uc3QgZm9ybWF0dGVkRGF5ID0gU3RyaW5nKHZhbHVlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKVxuICAgICAgICAgIHZhbHVlID0gYCR7Zm9ybWF0dGVkWWVhcn0tJHtmb3JtYXR0ZWRNb250aH0tJHtmb3JtYXR0ZWREYXl9YFxuICAgICAgICB9XG4gICAgICAgIGRhdGFPYmplY3QucHVzaCh7XG4gICAgICAgICAgcXVlc3Rpb25JZDogZmllbGQucXVlc3Rpb25JZCxcbiAgICAgICAgICBxdWVzdGlvbjogZmllbGQucXVlc3Rpb24sXG4gICAgICAgICAgYW5zd2VyOiB2YWx1ZSxcbiAgICAgICAgICBhbnN3ZXJUeXBlOiBmaWVsZC5maWVsZFR5cGVcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiBkYXRhT2JqZWN0XG4gIH1cblxuICBkb0l0TGF0ZXIoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoZmFsc2UpXG4gIH1cbiAgLy8jZW5kcmVnaW9uIChkYXRhIHByb2Nlc3NpbmcpXG5cbiAgdXBkYXRlUXVlc3Rpb25WYWx1ZXMoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMucXVlc3Rpb25zQXJyYXkudmFsdWVbZXZlbnQucXVlc3Rpb25JbmRleF0gPSBldmVudFxuICAgIHRoaXMudXBkYXRlU3VydmV5Rm9ybVZhbGlkaXR5KClcbiAgfVxuXG4gIHVwZGF0ZVN1cnZleUZvcm1WYWxpZGl0eSgpIHsgLy8gc29tZSB0aW1lcyByZWFjdGl2ZSBmb3JtcyBub3QgYWJhbGUgdG8gZGV0ZWN0IHZhbHVlIGNoYW5nZXMgYW5kIHZhbGlkaXR5IGluIGR5bmFtaWMgZm9ybUFycmF5XG4gICAgdGhpcy5zdXJ2ZXlGb3JtSXNWYWxpZCA9IHRydWVcbiAgICB0aGlzLnF1ZXN0aW9uc0FycmF5LmNvbnRyb2xzLmZvckVhY2goKGZvcm06IGFueSkgPT4ge1xuICAgICAgaWYgKCFmb3JtLmNvbnRyb2xzLmFuc3dlci52YWxpZCkge1xuICAgICAgICB0aGlzLnN1cnZleUZvcm1Jc1ZhbGlkID0gZmFsc2VcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIC8vI2VuZHJlZ2lvbiAoVUkgSW50ZXJhY3Rpb25zKVxuXG5cblxuXG5cbiAgcHJpdmF0ZSBvcGVuU25hY2tiYXIocHJpbWFyeU1zZzogc3RyaW5nLCBkdXJhdGlvbjogbnVtYmVyID0gNTAwMCkge1xuICAgIHRoaXMuc25hY2tCYXIub3BlbihwcmltYXJ5TXNnLCAnWCcsIHtcbiAgICAgIGR1cmF0aW9uLFxuICAgIH0pXG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInByZXZpZXctY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWhlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktc3RhcnQgaXRlbXMtY2VudGVyXCI+XG4gICAgICA8ZGl2Pnt7J2FwcHRvYy5jb21wbGV0ZVN1cnZleScgfCB0cmFuc2xhdGV9fSA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibXktNCBmZWVkYmFjay10ZXh0IGZsZXggZ2FwLTJcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImluZm8taWNvblwiPmluZm88L21hdC1pY29uPlxuICAgICAgPHAgY2xhc3M9XCJtYXJnaW4tcmVtb3ZlXCI+e3snYXBwdG9jLnRha2VTdXJ2ZXlUb1VubG9jaycgfCB0cmFuc2xhdGV9fTwvcD5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VydmV5Rm9ybVwiPlxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJzdXJ2ZXlGb3JtXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhcmVudEZpZWxkIG9mIHBhcmVudGFsRmllbGRzXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicGFyZW50RmllbGQuZmllbGRUeXBlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaGVhZGluZydcIj5cbiAgICAgICAgICAgICAgPHdzLWFwcC1zdXJ2ZXktZm9ybS1zZWN0aW9uIFtjaGlsZEZpZWxkc109XCJnZXRDaGlsZEZpZWxkcyhwYXJlbnRGaWVsZC5zZWN0aW9uSWQpXCJcbiAgICAgICAgICAgICAgICBbc2VjdGlvbkZpZWxkXT1cInBhcmVudEZpZWxkXCJcbiAgICAgICAgICAgICAgICBbY2hpbGRRdWVzdGlvbnNGb3JtQXJyYXldPVwiZ2V0Q2hpbGRRdWVzdGlvbnNGb3JtQXJyYXkocGFyZW50RmllbGQuc2VjdGlvbklkKVwiXG4gICAgICAgICAgICAgICAgKHF1ZXN0aW9uVmFsdWVzKT1cInVwZGF0ZVF1ZXN0aW9uVmFsdWVzKCRldmVudClcIj48L3dzLWFwcC1zdXJ2ZXktZm9ybS1zZWN0aW9uPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VwYXJhdG9yJ1wiPlxuICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJvcGFjaXR5LTUwIGVsbWVudC1zZXBhcmF0b3JcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgICA8d3MtYXBwLXN1cnZleS1mb3JtLXF1ZXN0aW9uIFtmaWVsZERldGFpbHNdPVwicGFyZW50RmllbGRcIlxuICAgICAgICAgICAgICAgIFtxdWVzdGlvbkZvcm1dPVwiZ2V0UXVlc3Rpb25Db250cm9sKHBhcmVudEZpZWxkLmNvbnRyb2xJbmRleClcIlxuICAgICAgICAgICAgICAgIChxdWVzdGlvblZhbHVlcyk9XCJ1cGRhdGVRdWVzdGlvblZhbHVlcygkZXZlbnQpXCI+PC93cy1hcHAtc3VydmV5LWZvcm0tcXVlc3Rpb24+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIG0tNFwiPlxuICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cImRvLWxhdGVyLWJ0blwiIChjbGljayk9XCJkb0l0TGF0ZXIoKVwiPnt7J2FwcHRvYy5kb0l0TGF0ZXInIHwgdHJhbnNsYXRlfX08L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJzdWJtaXQtYnRuXCIgW2Rpc2FibGVkXT1cIiFzdXJ2ZXlGb3JtSXNWYWxpZFwiIChjbGljayk9XCJzdWJtaXRGb3JtKClcIj57eydhcHB0b2Muc3VibWl0JyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mb3JtPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwiYWRkTG9hZGVyID4gMFwiPlxuICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgbXktMiBsb2FkZXIgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXJcIj5cbiAgICA8bWF0LXNwaW5uZXIgY2xhc3M9XCJpbmxpbmUtYmxvY2tcIj48L21hdC1zcGlubmVyPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPiJdfQ==
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { Component, Inject, ViewChild } from '@angular/core';
|
|
2
|
+
import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';
|
|
3
|
+
import { UntypedFormGroup, UntypedFormControl, Validators } from '@angular/forms';
|
|
4
|
+
import { DateAdapter, NativeDateAdapter } from '@angular/material/core';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/material/legacy-dialog";
|
|
7
|
+
import * as i2 from "../../services/app-toc.service";
|
|
8
|
+
import * as i3 from "@angular/material/legacy-snack-bar";
|
|
9
|
+
import * as i4 from "@sunbird-cb/utils-v2";
|
|
10
|
+
import * as i5 from "@angular/common";
|
|
11
|
+
import * as i6 from "@angular/forms";
|
|
12
|
+
import * as i7 from "@angular/material/legacy-button";
|
|
13
|
+
import * as i8 from "@angular/material/legacy-form-field";
|
|
14
|
+
import * as i9 from "@angular/material/legacy-input";
|
|
15
|
+
import * as i10 from "@angular/material/legacy-progress-spinner";
|
|
16
|
+
import * as i11 from "@angular/material/legacy-select";
|
|
17
|
+
import * as i12 from "@angular/material/legacy-core";
|
|
18
|
+
import * as i13 from "@angular/material/datepicker";
|
|
19
|
+
/**
|
|
20
|
+
* Format a date to YYYY-MM-DD format
|
|
21
|
+
*/
|
|
22
|
+
function startWithYearformat(date) {
|
|
23
|
+
const year = date.getFullYear();
|
|
24
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
25
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
26
|
+
return `${year}-${month}-${day}`;
|
|
27
|
+
}
|
|
28
|
+
export class CreateBatchDialogComponent {
|
|
29
|
+
constructor(dialogRef, data, appTocService, snackBar, configSvc) {
|
|
30
|
+
this.dialogRef = dialogRef;
|
|
31
|
+
this.data = data;
|
|
32
|
+
this.appTocService = appTocService;
|
|
33
|
+
this.snackBar = snackBar;
|
|
34
|
+
this.configSvc = configSvc;
|
|
35
|
+
this.enrollmentTypes = ['open', 'closed'];
|
|
36
|
+
this.namePatern = `^[a-zA-Z\\s\\']{1,32}$`;
|
|
37
|
+
this.today = new Date();
|
|
38
|
+
this.uploadSaveData = false;
|
|
39
|
+
this.createBatchForm = new UntypedFormGroup({
|
|
40
|
+
name: new UntypedFormControl('', [Validators.required, Validators.pattern(this.namePatern)]),
|
|
41
|
+
description: new UntypedFormControl('', []),
|
|
42
|
+
enrollmentType: new UntypedFormControl(this.enrollmentTypes[0], [Validators.required]),
|
|
43
|
+
startDate: new UntypedFormControl('', [Validators.required]),
|
|
44
|
+
endDate: new UntypedFormControl('', []),
|
|
45
|
+
enrollmentEndDate: new UntypedFormControl('', []),
|
|
46
|
+
// createdFor: new FormControl('', []),
|
|
47
|
+
mentors: new UntypedFormControl('', []),
|
|
48
|
+
courseId: new UntypedFormControl('', []),
|
|
49
|
+
createdBy: new UntypedFormControl('', []),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
ngOnInit() {
|
|
53
|
+
}
|
|
54
|
+
createBatchSubmit(form) {
|
|
55
|
+
this.uploadSaveData = true;
|
|
56
|
+
form.value.startDate = startWithYearformat(new Date(`${form.value.startDate}`));
|
|
57
|
+
if (form.value.endDate) {
|
|
58
|
+
form.value.endDate = startWithYearformat(new Date(`${form.value.endDate}`));
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
delete form.value.endDate;
|
|
62
|
+
}
|
|
63
|
+
if (form.value.enrollmentEndDate) {
|
|
64
|
+
form.value.enrollmentEndDate = startWithYearformat(new Date(`${form.value.enrollmentEndDate}`));
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
delete form.value.enrollmentEndDate;
|
|
68
|
+
}
|
|
69
|
+
form.value.mentors = [];
|
|
70
|
+
if (this.configSvc.userProfile) {
|
|
71
|
+
// form.value.createdFor = [this.configSvc.userProfile.rootOrgId]
|
|
72
|
+
form.value.createdBy = this.configSvc.userProfile.userId;
|
|
73
|
+
}
|
|
74
|
+
if (this.data && this.data.content) {
|
|
75
|
+
form.value.courseId = this.data.content.identifier;
|
|
76
|
+
}
|
|
77
|
+
this.appTocService.createBatch(form.value).subscribe(() => {
|
|
78
|
+
this.uploadSaveData = false;
|
|
79
|
+
this.openSnackbar(this.toastSuccess.nativeElement.value);
|
|
80
|
+
this.dialogRef.close();
|
|
81
|
+
}, err => {
|
|
82
|
+
if (err && err.error && err.error.params && err.error.params.errmsg) {
|
|
83
|
+
this.openSnackbar(err.error.params.errmsg);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
this.openSnackbar(this.toastError.nativeElement.value);
|
|
87
|
+
}
|
|
88
|
+
this.uploadSaveData = false;
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
openSnackbar(primaryMsg, duration = 5000) {
|
|
92
|
+
this.snackBar.open(primaryMsg, 'X', {
|
|
93
|
+
duration,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreateBatchDialogComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.AppTocService }, { token: i3.MatLegacySnackBar }, { token: i4.ConfigurationsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
97
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CreateBatchDialogComponent, selector: "ws-app-create-batch-dialog", providers: [
|
|
98
|
+
{ provide: DateAdapter, useClass: NativeDateAdapter },
|
|
99
|
+
], viewQueries: [{ propertyName: "toastSuccess", first: true, predicate: ["toastSuccess"], descendants: true, static: true }, { propertyName: "toastError", first: true, predicate: ["toastError"], descendants: true, static: true }], ngImport: i0, template: "<form [formGroup]=\"createBatchForm\">\n <!-- <h2 mat-dialog-title>Install Angular</h2> -->\n <mat-dialog-content class=\"mat-typography pad-fix\">\n <div class=\"flex flex-1 custom\">\n <div class=\"flex flex-4 flex-column margin-right-l\">\n\n <div class=\"flex flex-1\">\n <mat-form-field appearance=\"outline\" class=\"w-full\">\n <label for=\"name\" class=\" margin-remove-bottom form-label required\"\n i18n=\"Name label|Label which explains the user to enter name\" i18n-aria-label\n aria-label=\"Name label\">\n Name\n </label>\n <input id=\"name\" matInput #name formControlName=\"name\" i18n-placeholder\n placeholder=\"Enter Name\" i18n-aria-label aria-label=\"Name input\" />\n <mat-error [hidden]=\"false\" i18n=\"Name Error|Explains name is required\" i18n-aria-label\n aria-label=\"Name Error|Explains name is required \"\n *ngIf=\"createBatchForm?.controls['name'].errors?.required\">\n Name is mandatory\n </mat-error>\n <mat-error [hidden]=\"false\" *ngIf=\"createBatchForm?.controls['name'].errors?.pattern\"\n i18n-aria-label\n aria-label=\"Name Error|Name fields cannot contain numbers and special characters \">\n Name fields cannot contain numbers and special characters '\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"flex flex-1\">\n <mat-form-field appearance=\"outline\" class=\"w-full\">\n <label for=\"description\" class=\" margin-remove-bottom form-label\"\n i18n=\"description label|Label which explains the user to enter description\" i18n-aria-label\n aria-label=\"description label\">\n Description\n </label>\n <input id=\"description\" matInput #description formControlName=\"description\" i18n-placeholder\n placeholder=\"Enter Description\" i18n-aria-label aria-label=\"Description input\" />\n <mat-error [hidden]=\"false\" i18n=\"Description Error|Explains description is required\" i18n-aria-label\n aria-label=\"Description Error|Explains description is required \"\n *ngIf=\"createBatchForm?.controls['description'].errors?.required\">\n Description is mandatory\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"flex flex-1\">\n <mat-form-field appearance=\"outline\" class=\"w-full\">\n <label for=\"enrollmentType\" class=\" margin-remove-bottom form-label required\"\n i18n=\"enrollmentType label|Label which explains the user to enter enrollmentType\" i18n-aria-label\n aria-label=\"enrollmentType label\">\n Enrollment Type\n </label>\n <mat-select matInput formControlName=\"enrollmentType\" #enrollmentType >\n <mat-option [value]=\"c\" *ngFor=\"let c of enrollmentTypes\" [innerHTML]=\"c\"></mat-option>\n </mat-select>\n <mat-error [hidden]=\"false\" i18n=\"enrollmentType Error|Explains enrollmentType is required\" i18n-aria-label\n aria-label=\"enrollmentType Error|Explains enrollmentType is required \"\n *ngIf=\"createBatchForm?.controls['enrollmentType'].errors?.required\">\n Enrollment Type is mandatory\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"flex flex-1\">\n <mat-form-field appearance=\"outline\" class=\"w-full\">\n <input id=\"startDate\" matInput #startDate formControlName=\"startDate\" [matDatepicker]=\"picker\"\n i18n-placeholder (focus)=\"picker.open()\" placeholder=\"Choose startDate(dd-mm-yyyy)\"\n [min]=\"today\" readonly>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker (closed)=\"startDate.blur()\" i18n-aria-label aria-label=\"Date picker\">\n </mat-datepicker>\n <mat-error [hidden]=\"false\" i18n=\"Start date Error|Explains name is required\">\n Start date is mandatory\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"flex flex-1\">\n <mat-form-field appearance=\"outline\" class=\"w-full\">\n <input id=\"endDate\" matInput #endDate formControlName=\"endDate\" [matDatepicker]=\"endpicker\"\n i18n-placeholder (focus)=\"endpicker.open()\" placeholder=\"Choose endDate(dd-mm-yyyy)\"\n [min]=\"today\" readonly>\n <mat-datepicker-toggle matSuffix [for]=\"endpicker\"></mat-datepicker-toggle>\n <mat-datepicker #endpicker (closed)=\"endDate.blur()\" i18n-aria-label aria-label=\"Date picker\">\n </mat-datepicker>\n <mat-error [hidden]=\"false\" i18n=\"End date Error|Explains name is required\">\n End date is mandatory\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"flex flex-1\">\n <mat-form-field appearance=\"outline\" class=\"w-full\">\n <input id=\"enrollmentEndDate\" matInput #enrollmentEndDate formControlName=\"enrollmentEndDate\" [matDatepicker]=\"enrollmentEndPicker\"\n i18n-placeholder (focus)=\"enrollmentEndPicker.open()\" placeholder=\"Choose enrollmentEndDate(dd-mm-yyyy)\"\n [min]=\"today\" readonly>\n <mat-datepicker-toggle matSuffix [for]=\"enrollmentEndPicker\"></mat-datepicker-toggle>\n <mat-datepicker #enrollmentEndPicker (closed)=\"enrollmentEndDate.blur()\" i18n-aria-label aria-label=\"Date picker\">\n </mat-datepicker>\n <mat-error [hidden]=\"false\" i18n=\"End date Error|Explains name is required\">\n End date is mandatory\n </mat-error>\n </mat-form-field>\n </div>\n <mat-dialog-actions align=\"end\" class=\"mb-0-imp\">\n <button mat-raised-button type=\"button\" [mat-dialog-close]=\"true\"\n class=\"ws-mat-accent-border flex-auto-display\">\n <span class=\"ws-mat-default-text\" >Discard</span>\n </button>\n <button mat-raised-button type=\"submit\"\n class=\"text-white ws-mat-primary-background flex-auto-display\" \n [disabled]=\"uploadSaveData || createBatchForm?.invalid\" (click)=\"createBatchSubmit(createBatchForm)\">\n <span class=\"text-white\" >Create</span>\n </button>\n <span *ngIf=\"uploadSaveData\" class=\"px-4 flex items-center justify-center\">\n <mat-spinner [diameter]=\"30\"></mat-spinner>\n </span>\n </mat-dialog-actions>\n </div>\n\n </div>\n </mat-dialog-content>\n</form>\n\n<input type=\"hidden\" i18-value i18-aria-value aria-value=\"Batch created successfully\"\n value=\"Batch created successfully!\" #toastSuccess />\n<input type=\"hidden\" i18-value i18-aria-value aria-value=\"unable to create batch\"\n value=\"Error in creating batch!\" #toastError />", styles: [".start-card{min-width:80px;margin:0 30px 30px;font-size:16px}.start-card mat-card-content{margin-top:10px}@media only screen and (max-width: 599px){.flex-auto-display{flex:auto;margin-left:0!important;margin-top:1rem}}@media only screen and (min-width: 600px) and (max-width: 959px){.flex-auto-display{flex:auto}}.similar{display:none!important}@media only screen and (max-width: 599px){.similar{display:none!important}}@media only screen and (min-width: 600px) and (max-width: 959px){.similar{display:none!important}}@media only screen and (max-width: 599px){.mob{margin-left:0!important}}@media only screen and (min-width: 600px) and (max-width: 959px){.mob{margin-left:0!important}}.custom{flex-direction:row}@media only screen and (max-width: 599px){.custom{flex-direction:column}}@media only screen and (min-width: 600px) and (max-width: 959px){.custom{flex-direction:column}}.pad-fix{padding:0 0 0 24px}.flex-4{flex:4}.flex-3{flex:3}.flex-2{flex:2}.mb-0-imp{margin-bottom:0!important}.w-full-imp{width:100%!important}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.MatLegacyButton, 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: i8.MatLegacyError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i8.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLegacySuffix, selector: "[matSuffix]" }, { kind: "directive", type: i9.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "component", type: i10.MatLegacyProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i1.MatLegacyDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatLegacyDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatLegacyDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i11.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i12.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i13.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i13.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i13.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] }); }
|
|
100
|
+
}
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreateBatchDialogComponent, decorators: [{
|
|
102
|
+
type: Component,
|
|
103
|
+
args: [{ selector: 'ws-app-create-batch-dialog', providers: [
|
|
104
|
+
{ provide: DateAdapter, useClass: NativeDateAdapter },
|
|
105
|
+
], template: "<form [formGroup]=\"createBatchForm\">\n <!-- <h2 mat-dialog-title>Install Angular</h2> -->\n <mat-dialog-content class=\"mat-typography pad-fix\">\n <div class=\"flex flex-1 custom\">\n <div class=\"flex flex-4 flex-column margin-right-l\">\n\n <div class=\"flex flex-1\">\n <mat-form-field appearance=\"outline\" class=\"w-full\">\n <label for=\"name\" class=\" margin-remove-bottom form-label required\"\n i18n=\"Name label|Label which explains the user to enter name\" i18n-aria-label\n aria-label=\"Name label\">\n Name\n </label>\n <input id=\"name\" matInput #name formControlName=\"name\" i18n-placeholder\n placeholder=\"Enter Name\" i18n-aria-label aria-label=\"Name input\" />\n <mat-error [hidden]=\"false\" i18n=\"Name Error|Explains name is required\" i18n-aria-label\n aria-label=\"Name Error|Explains name is required \"\n *ngIf=\"createBatchForm?.controls['name'].errors?.required\">\n Name is mandatory\n </mat-error>\n <mat-error [hidden]=\"false\" *ngIf=\"createBatchForm?.controls['name'].errors?.pattern\"\n i18n-aria-label\n aria-label=\"Name Error|Name fields cannot contain numbers and special characters \">\n Name fields cannot contain numbers and special characters '\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"flex flex-1\">\n <mat-form-field appearance=\"outline\" class=\"w-full\">\n <label for=\"description\" class=\" margin-remove-bottom form-label\"\n i18n=\"description label|Label which explains the user to enter description\" i18n-aria-label\n aria-label=\"description label\">\n Description\n </label>\n <input id=\"description\" matInput #description formControlName=\"description\" i18n-placeholder\n placeholder=\"Enter Description\" i18n-aria-label aria-label=\"Description input\" />\n <mat-error [hidden]=\"false\" i18n=\"Description Error|Explains description is required\" i18n-aria-label\n aria-label=\"Description Error|Explains description is required \"\n *ngIf=\"createBatchForm?.controls['description'].errors?.required\">\n Description is mandatory\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"flex flex-1\">\n <mat-form-field appearance=\"outline\" class=\"w-full\">\n <label for=\"enrollmentType\" class=\" margin-remove-bottom form-label required\"\n i18n=\"enrollmentType label|Label which explains the user to enter enrollmentType\" i18n-aria-label\n aria-label=\"enrollmentType label\">\n Enrollment Type\n </label>\n <mat-select matInput formControlName=\"enrollmentType\" #enrollmentType >\n <mat-option [value]=\"c\" *ngFor=\"let c of enrollmentTypes\" [innerHTML]=\"c\"></mat-option>\n </mat-select>\n <mat-error [hidden]=\"false\" i18n=\"enrollmentType Error|Explains enrollmentType is required\" i18n-aria-label\n aria-label=\"enrollmentType Error|Explains enrollmentType is required \"\n *ngIf=\"createBatchForm?.controls['enrollmentType'].errors?.required\">\n Enrollment Type is mandatory\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"flex flex-1\">\n <mat-form-field appearance=\"outline\" class=\"w-full\">\n <input id=\"startDate\" matInput #startDate formControlName=\"startDate\" [matDatepicker]=\"picker\"\n i18n-placeholder (focus)=\"picker.open()\" placeholder=\"Choose startDate(dd-mm-yyyy)\"\n [min]=\"today\" readonly>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker (closed)=\"startDate.blur()\" i18n-aria-label aria-label=\"Date picker\">\n </mat-datepicker>\n <mat-error [hidden]=\"false\" i18n=\"Start date Error|Explains name is required\">\n Start date is mandatory\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"flex flex-1\">\n <mat-form-field appearance=\"outline\" class=\"w-full\">\n <input id=\"endDate\" matInput #endDate formControlName=\"endDate\" [matDatepicker]=\"endpicker\"\n i18n-placeholder (focus)=\"endpicker.open()\" placeholder=\"Choose endDate(dd-mm-yyyy)\"\n [min]=\"today\" readonly>\n <mat-datepicker-toggle matSuffix [for]=\"endpicker\"></mat-datepicker-toggle>\n <mat-datepicker #endpicker (closed)=\"endDate.blur()\" i18n-aria-label aria-label=\"Date picker\">\n </mat-datepicker>\n <mat-error [hidden]=\"false\" i18n=\"End date Error|Explains name is required\">\n End date is mandatory\n </mat-error>\n </mat-form-field>\n </div>\n <div class=\"flex flex-1\">\n <mat-form-field appearance=\"outline\" class=\"w-full\">\n <input id=\"enrollmentEndDate\" matInput #enrollmentEndDate formControlName=\"enrollmentEndDate\" [matDatepicker]=\"enrollmentEndPicker\"\n i18n-placeholder (focus)=\"enrollmentEndPicker.open()\" placeholder=\"Choose enrollmentEndDate(dd-mm-yyyy)\"\n [min]=\"today\" readonly>\n <mat-datepicker-toggle matSuffix [for]=\"enrollmentEndPicker\"></mat-datepicker-toggle>\n <mat-datepicker #enrollmentEndPicker (closed)=\"enrollmentEndDate.blur()\" i18n-aria-label aria-label=\"Date picker\">\n </mat-datepicker>\n <mat-error [hidden]=\"false\" i18n=\"End date Error|Explains name is required\">\n End date is mandatory\n </mat-error>\n </mat-form-field>\n </div>\n <mat-dialog-actions align=\"end\" class=\"mb-0-imp\">\n <button mat-raised-button type=\"button\" [mat-dialog-close]=\"true\"\n class=\"ws-mat-accent-border flex-auto-display\">\n <span class=\"ws-mat-default-text\" >Discard</span>\n </button>\n <button mat-raised-button type=\"submit\"\n class=\"text-white ws-mat-primary-background flex-auto-display\" \n [disabled]=\"uploadSaveData || createBatchForm?.invalid\" (click)=\"createBatchSubmit(createBatchForm)\">\n <span class=\"text-white\" >Create</span>\n </button>\n <span *ngIf=\"uploadSaveData\" class=\"px-4 flex items-center justify-center\">\n <mat-spinner [diameter]=\"30\"></mat-spinner>\n </span>\n </mat-dialog-actions>\n </div>\n\n </div>\n </mat-dialog-content>\n</form>\n\n<input type=\"hidden\" i18-value i18-aria-value aria-value=\"Batch created successfully\"\n value=\"Batch created successfully!\" #toastSuccess />\n<input type=\"hidden\" i18-value i18-aria-value aria-value=\"unable to create batch\"\n value=\"Error in creating batch!\" #toastError />", styles: [".start-card{min-width:80px;margin:0 30px 30px;font-size:16px}.start-card mat-card-content{margin-top:10px}@media only screen and (max-width: 599px){.flex-auto-display{flex:auto;margin-left:0!important;margin-top:1rem}}@media only screen and (min-width: 600px) and (max-width: 959px){.flex-auto-display{flex:auto}}.similar{display:none!important}@media only screen and (max-width: 599px){.similar{display:none!important}}@media only screen and (min-width: 600px) and (max-width: 959px){.similar{display:none!important}}@media only screen and (max-width: 599px){.mob{margin-left:0!important}}@media only screen and (min-width: 600px) and (max-width: 959px){.mob{margin-left:0!important}}.custom{flex-direction:row}@media only screen and (max-width: 599px){.custom{flex-direction:column}}@media only screen and (min-width: 600px) and (max-width: 959px){.custom{flex-direction:column}}.pad-fix{padding:0 0 0 24px}.flex-4{flex:4}.flex-3{flex:3}.flex-2{flex:2}.mb-0-imp{margin-bottom:0!important}.w-full-imp{width:100%!important}\n"] }]
|
|
106
|
+
}], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: undefined, decorators: [{
|
|
107
|
+
type: Inject,
|
|
108
|
+
args: [MAT_DIALOG_DATA]
|
|
109
|
+
}] }, { type: i2.AppTocService }, { type: i3.MatLegacySnackBar }, { type: i4.ConfigurationsService }]; }, propDecorators: { toastSuccess: [{
|
|
110
|
+
type: ViewChild,
|
|
111
|
+
args: ['toastSuccess', { static: true }]
|
|
112
|
+
}], toastError: [{
|
|
113
|
+
type: ViewChild,
|
|
114
|
+
args: ['toastError', { static: true }]
|
|
115
|
+
}] } });
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWJhdGNoLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdG9jL3NyYy9saWIvY29tcG9uZW50cy9jcmVhdGUtYmF0Y2gtZGlhbG9nL2NyZWF0ZS1iYXRjaC1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvY3JlYXRlLWJhdGNoLWRpYWxvZy9jcmVhdGUtYmF0Y2gtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFjLFNBQVMsRUFBYyxNQUFNLGVBQWUsQ0FBQTtBQUM1RixPQUFPLEVBQXNDLHNCQUFzQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQy9ILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUlqRixPQUFPLEVBQUUsV0FBVyxFQUFvQixpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFekY7O0dBRUc7QUFDSCxTQUFTLG1CQUFtQixDQUFDLElBQVU7SUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQy9CLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUMxRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUNuRCxPQUFPLEdBQUcs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LENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRTtZQUNsQyxRQUFRO1NBQ1QsQ0FBQyxDQUFBO0lBQ0osQ0FBQzsrR0ExRVUsMEJBQTBCLG9EQVczQixlQUFlO21HQVhkLDBCQUEwQixxREFKMUI7WUFDVCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1NBQ3RELCtQQ3hCSCx1d1FBMEhpRDs7NEZEaEdwQywwQkFBMEI7a0JBUnRDLFNBQVM7K0JBQ0UsNEJBQTRCLGFBRzNCO3dCQUNULEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUU7cUJBQ3REOzswQkFhRSxNQUFNOzJCQUFDLGVBQWU7NElBTG9CLFlBQVk7c0JBQXhELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDQSxVQUFVO3NCQUFwRCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0LCBmb3J3YXJkUmVmLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTWF0TGVnYWN5RGlhbG9nUmVmIGFzIE1hdERpYWxvZ1JlZiwgTUFUX0xFR0FDWV9ESUFMT0dfREFUQSBhcyBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZGlhbG9nJ1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBDb25maWd1cmF0aW9uc1NlcnZpY2UgfSBmcm9tICdAc3VuYmlyZC1jYi91dGlscy12MidcbmltcG9ydCB7IEFwcFRvY1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAtdG9jLnNlcnZpY2UnXG5pbXBvcnQgeyBNYXRMZWdhY3lTbmFja0JhciBhcyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1zbmFjay1iYXInXG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUywgTmF0aXZlRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJ1xuXG4vKipcbiAqIEZvcm1hdCBhIGRhdGUgdG8gWVlZWS1NTS1ERCBmb3JtYXRcbiAqL1xuZnVuY3Rpb24gc3RhcnRXaXRoWWVhcmZvcm1hdChkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKVxuICBjb25zdCBtb250aCA9IFN0cmluZyhkYXRlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpXG4gIGNvbnN0IGRheSA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKVxuICByZXR1cm4gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9YFxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3cy1hcHAtY3JlYXRlLWJhdGNoLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtYmF0Y2gtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3JlYXRlLWJhdGNoLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogTmF0aXZlRGF0ZUFkYXB0ZXIgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ3JlYXRlQmF0Y2hEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBjcmVhdGVCYXRjaEZvcm06IFVudHlwZWRGb3JtR3JvdXBcbiAgZW5yb2xsbWVudFR5cGVzID0gWydvcGVuJywgJ2Nsb3NlZCddXG4gIG5hbWVQYXRlcm4gPSBgXlthLXpBLVpcXFxcc1xcXFwnXXsxLDMyfSRgXG4gIHRvZGF5ID0gbmV3IERhdGUoKVxuICB1cGxvYWRTYXZlRGF0YSA9IGZhbHNlXG4gIEBWaWV3Q2hpbGQoJ3RvYXN0U3VjY2VzcycsIHsgc3RhdGljOiB0cnVlIH0pIHRvYXN0U3VjY2VzcyE6IEVsZW1lbnRSZWY8YW55PlxuICBAVmlld0NoaWxkKCd0b2FzdEVycm9yJywgeyBzdGF0aWM6IHRydWUgfSkgdG9hc3RFcnJvciE6IEVsZW1lbnRSZWY8YW55PlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxDcmVhdGVCYXRjaERpYWxvZ0NvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnksXG4gICAgcHJpdmF0ZSBhcHBUb2NTZXJ2aWNlOiBBcHBUb2NTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgY29uZmlnU3ZjOiBDb25maWd1cmF0aW9uc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jcmVhdGVCYXRjaEZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICBuYW1lOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMubmFtZVBhdGVybildKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnLCBbXSksXG4gICAgICBlbnJvbGxtZW50VHlwZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh0aGlzLmVucm9sbG1lbnRUeXBlc1swXSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIHN0YXJ0RGF0ZTogbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICAgIGVuZERhdGU6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycsIFtdKSxcbiAgICAgIGVucm9sbG1lbnRFbmREYXRlOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnLCBbXSksXG4gICAgICAvLyBjcmVhdGVkRm9yOiBuZXcgRm9ybUNvbnRyb2woJycsIFtdKSxcbiAgICAgIG1lbnRvcnM6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycsIFtdKSxcbiAgICAgIGNvdXJzZUlkOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKCcnLCBbXSksXG4gICAgICBjcmVhdGVkQnk6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycsIFtdKSxcbiAgICB9KVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVCYXRjaFN1Ym1pdChmb3JtOiBhbnkpIHtcbiAgICB0aGlzLnVwbG9hZFNhdmVEYXRhID0gdHJ1ZVxuICAgIGZvcm0udmFsdWUuc3RhcnREYXRlID0gc3RhcnRXaXRoWWVhcmZvcm1hdChuZXcgRGF0ZShgJHtmb3JtLnZhbHVlLnN0YXJ0RGF0ZX1gKSlcbiAgICBpZiAoZm9ybS52YWx1ZS5lbmREYXRlKSB7XG4gICAgICBmb3JtLnZhbHVlLmVuZERhdGUgPSBzdGFydFdpdGhZZWFyZm9ybWF0KG5ldyBEYXRlKGAke2Zvcm0udmFsdWUuZW5kRGF0ZX1gKSlcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIGZvcm0udmFsdWUuZW5kRGF0ZVxuICAgIH1cbiAgICBpZiAoZm9ybS52YWx1ZS5lbnJvbGxtZW50RW5kRGF0ZSkge1xuICAgICAgZm9ybS52YWx1ZS5lbnJvbGxtZW50RW5kRGF0ZSA9IHN0YXJ0V2l0aFllYXJmb3JtYXQobmV3IERhdGUoYCR7Zm9ybS52YWx1ZS5lbnJvbGxtZW50RW5kRGF0ZX1gKSlcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIGZvcm0udmFsdWUuZW5yb2xsbWVudEVuZERhdGVcbiAgICB9XG4gICAgZm9ybS52YWx1ZS5tZW50b3JzID0gW11cbiAgICBpZiAodGhpcy5jb25maWdTdmMudXNlclByb2ZpbGUpIHtcbiAgICAgIC8vIGZvcm0udmFsdWUuY3JlYXRlZEZvciA9IFt0aGlzLmNvbmZpZ1N2Yy51c2VyUHJvZmlsZS5yb290T3JnSWRdXG4gICAgICBmb3JtLnZhbHVlLmNyZWF0ZWRCeSA9IHRoaXMuY29uZmlnU3ZjLnVzZXJQcm9maWxlLnVzZXJJZFxuICAgIH1cbiAgICBpZiAodGhpcy5kYXRhICYmIHRoaXMuZGF0YS5jb250ZW50KSB7XG4gICAgICBmb3JtLnZhbHVlLmNvdXJzZUlkID0gdGhpcy5kYXRhLmNvbnRlbnQuaWRlbnRpZmllclxuICAgIH1cbiAgICB0aGlzLmFwcFRvY1NlcnZpY2UuY3JlYXRlQmF0Y2goZm9ybS52YWx1ZSkuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnVwbG9hZFNhdmVEYXRhID0gZmFsc2VcbiAgICAgICAgdGhpcy5vcGVuU25hY2tiYXIodGhpcy50b2FzdFN1Y2Nlc3MubmF0aXZlRWxlbWVudC52YWx1ZSlcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKVxuICAgICAgfSxcbiAgICAgIGVyciA9PiB7XG4gICAgICAgIGlmIChlcnIgJiYgZXJyLmVycm9yICYmIGVyci5lcnJvci5wYXJhbXMgJiYgZXJyLmVycm9yLnBhcmFtcy5lcnJtc2cpIHtcbiAgICAgICAgICB0aGlzLm9wZW5TbmFja2JhcihlcnIuZXJyb3IucGFyYW1zLmVycm1zZylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9wZW5TbmFja2Jhcih0aGlzLnRvYXN0RXJyb3IubmF0aXZlRWxlbWVudC52YWx1ZSlcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwbG9hZFNhdmVEYXRhID0gZmFsc2VcbiAgICAgIH0pXG4gIH1cbiAgcHJpdmF0ZSBvcGVuU25hY2tiYXIocHJpbWFyeU1zZzogc3RyaW5nLCBkdXJhdGlvbjogbnVtYmVyID0gNTAwMCkge1xuICAgIHRoaXMuc25hY2tCYXIub3BlbihwcmltYXJ5TXNnLCAnWCcsIHtcbiAgICAgIGR1cmF0aW9uLFxuICAgIH0pXG4gIH1cblxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJjcmVhdGVCYXRjaEZvcm1cIj5cbiAgICA8IS0tIDxoMiBtYXQtZGlhbG9nLXRpdGxlPkluc3RhbGwgQW5ndWxhcjwvaDI+IC0tPlxuICAgIDxtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJtYXQtdHlwb2dyYXBoeSBwYWQtZml4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtMSBjdXN0b21cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtNCBmbGV4LWNvbHVtbiBtYXJnaW4tcmlnaHQtbFwiPlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwibmFtZVwiIGNsYXNzPVwiIG1hcmdpbi1yZW1vdmUtYm90dG9tIGZvcm0tbGFiZWwgcmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG49XCJOYW1lIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIG5hbWVcIiBpMThuLWFyaWEtbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiTmFtZSBsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJuYW1lXCIgbWF0SW5wdXQgI25hbWUgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIGkxOG4tcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIE5hbWVcIiBpMThuLWFyaWEtbGFiZWwgYXJpYS1sYWJlbD1cIk5hbWUgaW5wdXRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciBbaGlkZGVuXT1cImZhbHNlXCIgaTE4bj1cIk5hbWUgRXJyb3J8RXhwbGFpbnMgbmFtZSBpcyByZXF1aXJlZFwiIGkxOG4tYXJpYS1sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJOYW1lIEVycm9yfEV4cGxhaW5zIG5hbWUgaXMgcmVxdWlyZWQgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNyZWF0ZUJhdGNoRm9ybT8uY29udHJvbHNbJ25hbWUnXS5lcnJvcnM/LnJlcXVpcmVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSBpcyBtYW5kYXRvcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciBbaGlkZGVuXT1cImZhbHNlXCIgKm5nSWY9XCJjcmVhdGVCYXRjaEZvcm0/LmNvbnRyb2xzWyduYW1lJ10uZXJyb3JzPy5wYXR0ZXJuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMThuLWFyaWEtbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiTmFtZSBFcnJvcnxOYW1lIGZpZWxkcyBjYW5ub3QgY29udGFpbiBudW1iZXJzIGFuZCBzcGVjaWFsIGNoYXJhY3RlcnMgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSBmaWVsZHMgY2Fubm90IGNvbnRhaW4gbnVtYmVycyBhbmQgc3BlY2lhbCBjaGFyYWN0ZXJzICAnXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZXNjcmlwdGlvblwiIGNsYXNzPVwiIG1hcmdpbi1yZW1vdmUtYm90dG9tIGZvcm0tbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG49XCJkZXNjcmlwdGlvbiBsYWJlbHxMYWJlbCB3aGljaCBleHBsYWlucyB0aGUgdXNlciB0byBlbnRlciBkZXNjcmlwdGlvblwiIGkxOG4tYXJpYS1sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJkZXNjcmlwdGlvbiBsYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiZGVzY3JpcHRpb25cIiBtYXRJbnB1dCAjZGVzY3JpcHRpb24gZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIiBpMThuLXBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBEZXNjcmlwdGlvblwiIGkxOG4tYXJpYS1sYWJlbCBhcmlhLWxhYmVsPVwiRGVzY3JpcHRpb24gaW5wdXRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciBbaGlkZGVuXT1cImZhbHNlXCIgaTE4bj1cIkRlc2NyaXB0aW9uIEVycm9yfEV4cGxhaW5zIGRlc2NyaXB0aW9uIGlzIHJlcXVpcmVkXCIgaTE4bi1hcmlhLWxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkRlc2NyaXB0aW9uIEVycm9yfEV4cGxhaW5zIGRlc2NyaXB0aW9uIGlzIHJlcXVpcmVkIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcmVhdGVCYXRjaEZvcm0/LmNvbnRyb2xzWydkZXNjcmlwdGlvbiddLmVycm9ycz8ucmVxdWlyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiBpcyBtYW5kYXRvcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBjbGFzcz1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImVucm9sbG1lbnRUeXBlXCIgY2xhc3M9XCIgbWFyZ2luLXJlbW92ZS1ib3R0b20gZm9ybS1sYWJlbCByZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4bj1cImVucm9sbG1lbnRUeXBlIGxhYmVsfExhYmVsIHdoaWNoIGV4cGxhaW5zIHRoZSB1c2VyIHRvIGVudGVyIGVucm9sbG1lbnRUeXBlXCIgaTE4bi1hcmlhLWxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cImVucm9sbG1lbnRUeXBlIGxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5yb2xsbWVudCBUeXBlXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZW5yb2xsbWVudFR5cGVcIiAjZW5yb2xsbWVudFR5cGUgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJjXCIgKm5nRm9yPVwibGV0IGMgb2YgZW5yb2xsbWVudFR5cGVzXCIgW2lubmVySFRNTF09XCJjXCI+PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciBbaGlkZGVuXT1cImZhbHNlXCIgaTE4bj1cImVucm9sbG1lbnRUeXBlIEVycm9yfEV4cGxhaW5zIGVucm9sbG1lbnRUeXBlIGlzIHJlcXVpcmVkXCIgaTE4bi1hcmlhLWxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cImVucm9sbG1lbnRUeXBlIEVycm9yfEV4cGxhaW5zIGVucm9sbG1lbnRUeXBlIGlzIHJlcXVpcmVkIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjcmVhdGVCYXRjaEZvcm0/LmNvbnRyb2xzWydlbnJvbGxtZW50VHlwZSddLmVycm9ycz8ucmVxdWlyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnJvbGxtZW50IFR5cGUgaXMgbWFuZGF0b3J5XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cInN0YXJ0RGF0ZVwiIG1hdElucHV0ICNzdGFydERhdGUgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnREYXRlXCIgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4bi1wbGFjZWhvbGRlciAoZm9jdXMpPVwicGlja2VyLm9wZW4oKVwiIHBsYWNlaG9sZGVyPVwiQ2hvb3NlIHN0YXJ0RGF0ZShkZC1tbS15eXl5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwidG9kYXlcIiAgcmVhZG9ubHk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXIgKGNsb3NlZCk9XCJzdGFydERhdGUuYmx1cigpXCIgaTE4bi1hcmlhLWxhYmVsIGFyaWEtbGFiZWw9XCJEYXRlIHBpY2tlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZGF0ZXBpY2tlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgW2hpZGRlbl09XCJmYWxzZVwiIGkxOG49XCJTdGFydCBkYXRlIEVycm9yfEV4cGxhaW5zIG5hbWUgaXMgcmVxdWlyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhcnQgZGF0ZSBpcyBtYW5kYXRvcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGNsYXNzPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJlbmREYXRlXCIgbWF0SW5wdXQgI2VuZERhdGUgZm9ybUNvbnRyb2xOYW1lPVwiZW5kRGF0ZVwiIFttYXREYXRlcGlja2VyXT1cImVuZHBpY2tlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG4tcGxhY2Vob2xkZXIgKGZvY3VzKT1cImVuZHBpY2tlci5vcGVuKClcIiBwbGFjZWhvbGRlcj1cIkNob29zZSBlbmREYXRlKGRkLW1tLXl5eXkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJ0b2RheVwiIHJlYWRvbmx5PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJlbmRwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlciAjZW5kcGlja2VyIChjbG9zZWQpPVwiZW5kRGF0ZS5ibHVyKClcIiBpMThuLWFyaWEtbGFiZWwgYXJpYS1sYWJlbD1cIkRhdGUgcGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciBbaGlkZGVuXT1cImZhbHNlXCIgaTE4bj1cIkVuZCBkYXRlIEVycm9yfEV4cGxhaW5zIG5hbWUgaXMgcmVxdWlyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRW5kIGRhdGUgaXMgbWFuZGF0b3J5XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJ3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD1cImVucm9sbG1lbnRFbmREYXRlXCIgbWF0SW5wdXQgI2Vucm9sbG1lbnRFbmREYXRlIGZvcm1Db250cm9sTmFtZT1cImVucm9sbG1lbnRFbmREYXRlXCIgW21hdERhdGVwaWNrZXJdPVwiZW5yb2xsbWVudEVuZFBpY2tlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG4tcGxhY2Vob2xkZXIgKGZvY3VzKT1cImVucm9sbG1lbnRFbmRQaWNrZXIub3BlbigpXCIgcGxhY2Vob2xkZXI9XCJDaG9vc2UgZW5yb2xsbWVudEVuZERhdGUoZGQtbW0teXl5eSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cInRvZGF5XCIgIHJlYWRvbmx5PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJlbnJvbGxtZW50RW5kUGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI2Vucm9sbG1lbnRFbmRQaWNrZXIgKGNsb3NlZCk9XCJlbnJvbGxtZW50RW5kRGF0ZS5ibHVyKClcIiBpMThuLWFyaWEtbGFiZWwgYXJpYS1sYWJlbD1cIkRhdGUgcGlja2VyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciBbaGlkZGVuXT1cImZhbHNlXCIgaTE4bj1cIkVuZCBkYXRlIEVycm9yfEV4cGxhaW5zIG5hbWUgaXMgcmVxdWlyZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRW5kIGRhdGUgaXMgbWFuZGF0b3J5XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxtYXQtZGlhbG9nLWFjdGlvbnMgYWxpZ249XCJlbmRcIiBjbGFzcz1cIm1iLTAtaW1wXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIFttYXQtZGlhbG9nLWNsb3NlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid3MtbWF0LWFjY2VudC1ib3JkZXIgZmxleC1hdXRvLWRpc3BsYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndzLW1hdC1kZWZhdWx0LXRleHRcIiA+RGlzY2FyZDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSB3cy1tYXQtcHJpbWFyeS1iYWNrZ3JvdW5kIGZsZXgtYXV0by1kaXNwbGF5XCIgXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1cGxvYWRTYXZlRGF0YSB8fCBjcmVhdGVCYXRjaEZvcm0/LmludmFsaWRcIiAoY2xpY2spPVwiY3JlYXRlQmF0Y2hTdWJtaXQoY3JlYXRlQmF0Y2hGb3JtKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtd2hpdGVcIiA+Q3JlYXRlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInVwbG9hZFNhdmVEYXRhXCIgY2xhc3M9XCJweC00IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciBbZGlhbWV0ZXJdPVwiMzBcIj48L21hdC1zcGlubmVyPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICA8L21hdC1kaWFsb2ctY29udGVudD5cbjwvZm9ybT5cblxuPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBpMTgtdmFsdWUgaTE4LWFyaWEtdmFsdWUgYXJpYS12YWx1ZT1cIkJhdGNoIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5XCJcbiAgdmFsdWU9XCJCYXRjaCBjcmVhdGVkIHN1Y2Nlc3NmdWxseSFcIiAjdG9hc3RTdWNjZXNzIC8+XG48aW5wdXQgdHlwZT1cImhpZGRlblwiIGkxOC12YWx1ZSBpMTgtYXJpYS12YWx1ZSBhcmlhLXZhbHVlPVwidW5hYmxlIHRvIGNyZWF0ZSBiYXRjaFwiXG4gIHZhbHVlPVwiRXJyb3IgaW4gY3JlYXRpbmcgYmF0Y2ghXCIgI3RvYXN0RXJyb3IgLz4iXX0=
|
package/esm2022/lib/components/enroll-language-dialogue/enroll-language-dialogue.component.mjs
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { MAT_LEGACY_DIALOG_DATA as MAT_DIALOG_DATA } from '@angular/material/legacy-dialog';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/material/legacy-dialog";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "@angular/forms";
|
|
7
|
+
import * as i4 from "@angular/material/legacy-form-field";
|
|
8
|
+
import * as i5 from "@angular/material/legacy-select";
|
|
9
|
+
import * as i6 from "@angular/material/legacy-core";
|
|
10
|
+
export class EnrollLanguageDialogueComponent {
|
|
11
|
+
constructor(dialogRef, data) {
|
|
12
|
+
this.dialogRef = dialogRef;
|
|
13
|
+
this.data = data;
|
|
14
|
+
this.languageList = [];
|
|
15
|
+
}
|
|
16
|
+
ngOnInit() {
|
|
17
|
+
this.languageList = this.data.languageList || [];
|
|
18
|
+
if (this.data.preSelect) {
|
|
19
|
+
const preSelectIndex = this.languageList.findIndex((lang) => lang.langId === this.data.preSelect.langId);
|
|
20
|
+
this.selectedLanguage = preSelectIndex !== -1 ? this.languageList[preSelectIndex] : null;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this.selectedLanguage = this.languageList.length > 0 ? this.languageList[0] : null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
onLanguageChange($event) {
|
|
27
|
+
console.log('Selected Language $event:', $event);
|
|
28
|
+
}
|
|
29
|
+
onSubmit() {
|
|
30
|
+
if (this.selectedLanguage) {
|
|
31
|
+
this.dialogRef.close(this.selectedLanguage); // Pass selected object to parent
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EnrollLanguageDialogueComponent, deps: [{ token: i1.MatLegacyDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
35
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EnrollLanguageDialogueComponent, selector: "ws-app-enroll-language-dialogue", ngImport: i0, template: "<mat-dialog-content>\n <div class=\"dialog-header text-left flex flex-col justify-between align-items-center\">\n <p class=\"mat-subheading-1 text-center\">Choose Your Preferred Language</p>\n <p class=\"mat-body-2 text-center\">This course is available in multiple languages. You can select one to begin.</p>\n </div>\n <div class=\"lang-msg-wrapper\">\n <mat-form-field appearance=\"outline\" class=\"lang-select-wrapper\">\n <mat-select [(ngModel)]=\"selectedLanguage\" (ngModelChange)=\"onLanguageChange($event)\" class=\"mat-body-1\">\n <mat-option *ngFor=\"let lang of languageList\" [value]=\"lang\">\n {{ lang.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <div class=\"flex items-center justify-center\">\n <a (click)=\"this.dialogRef.close()\" class=\"cursor-pointer mat-stroked-button custom-rounded margin-right-m\">Cancel</a>\n <a (click)=\"onSubmit()\" class=\"cursor-pointer action-button\">Confirm & Start Course</a>\n </div>\n </div>\n</mat-dialog-content>\n", styles: [".lang-radio-btn{width:100%;margin-bottom:16px}.mat-form-field{width:100%}.custom-rounded{border:1px solid #1a4ca1!important;border-radius:50px;padding:8px 16px;height:40px;display:flex;align-items:center;justify-content:center;color:#1a4ca1!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLegacyDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i5.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }] }); }
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EnrollLanguageDialogueComponent, decorators: [{
|
|
38
|
+
type: Component,
|
|
39
|
+
args: [{ selector: 'ws-app-enroll-language-dialogue', template: "<mat-dialog-content>\n <div class=\"dialog-header text-left flex flex-col justify-between align-items-center\">\n <p class=\"mat-subheading-1 text-center\">Choose Your Preferred Language</p>\n <p class=\"mat-body-2 text-center\">This course is available in multiple languages. You can select one to begin.</p>\n </div>\n <div class=\"lang-msg-wrapper\">\n <mat-form-field appearance=\"outline\" class=\"lang-select-wrapper\">\n <mat-select [(ngModel)]=\"selectedLanguage\" (ngModelChange)=\"onLanguageChange($event)\" class=\"mat-body-1\">\n <mat-option *ngFor=\"let lang of languageList\" [value]=\"lang\">\n {{ lang.name }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <div class=\"flex items-center justify-center\">\n <a (click)=\"this.dialogRef.close()\" class=\"cursor-pointer mat-stroked-button custom-rounded margin-right-m\">Cancel</a>\n <a (click)=\"onSubmit()\" class=\"cursor-pointer action-button\">Confirm & Start Course</a>\n </div>\n </div>\n</mat-dialog-content>\n", styles: [".lang-radio-btn{width:100%;margin-bottom:16px}.mat-form-field{width:100%}.custom-rounded{border:1px solid #1a4ca1!important;border-radius:50px;padding:8px 16px;height:40px;display:flex;align-items:center;justify-content:center;color:#1a4ca1!important}\n"] }]
|
|
40
|
+
}], ctorParameters: function () { return [{ type: i1.MatLegacyDialogRef }, { type: undefined, decorators: [{
|
|
41
|
+
type: Inject,
|
|
42
|
+
args: [MAT_DIALOG_DATA]
|
|
43
|
+
}] }]; } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5yb2xsLWxhbmd1YWdlLWRpYWxvZ3VlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90b2Mvc3JjL2xpYi9jb21wb25lbnRzL2Vucm9sbC1sYW5ndWFnZS1kaWFsb2d1ZS9lbnJvbGwtbGFuZ3VhZ2UtZGlhbG9ndWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RvYy9zcmMvbGliL2NvbXBvbmVudHMvZW5yb2xsLWxhbmd1YWdlLWRpYWxvZ3VlL2Vucm9sbC1sYW5ndWFnZS1kaWFsb2d1ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQXNDLHNCQUFzQixJQUFJLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFBOzs7Ozs7OztBQU8vSCxNQUFNLE9BQU8sK0JBQStCO0lBRzNDLFlBQ1MsU0FBd0QsRUFDL0IsSUFBUztRQURsQyxjQUFTLEdBQVQsU0FBUyxDQUErQztRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFLO1FBSDFDLGlCQUFZLEdBQVEsRUFBRSxDQUFBO0lBS3BCLENBQUM7SUFHSixRQUFRO1FBQ1AsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDakQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN2QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM5RyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsY0FBYyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDMUY7YUFBTTtZQUNMLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUNwRjtJQUNGLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFXO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNBLFFBQVE7UUFDUixJQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGlDQUFpQztTQUMvRTtJQUNELENBQUM7K0dBM0JVLCtCQUErQixvREFLakMsZUFBZTttR0FMYiwrQkFBK0IsdUVDUjVDLHFuQ0FvQkE7OzRGRFphLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDRSxpQ0FBaUM7OzBCQVN6QyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRMZWdhY3lEaWFsb2dSZWYgYXMgTWF0RGlhbG9nUmVmLCBNQVRfTEVHQUNZX0RJQUxPR19EQVRBIGFzIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xlZ2FjeS1kaWFsb2cnXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dzLWFwcC1lbnJvbGwtbGFuZ3VhZ2UtZGlhbG9ndWUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZW5yb2xsLWxhbmd1YWdlLWRpYWxvZ3VlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZW5yb2xsLWxhbmd1YWdlLWRpYWxvZ3VlLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRW5yb2xsTGFuZ3VhZ2VEaWFsb2d1ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHNlbGVjdGVkTGFuZ3VhZ2U6IGFueVxuICBsYW5ndWFnZUxpc3Q6IGFueSA9IFtdXG4gY29uc3RydWN0b3IoXG4gICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RW5yb2xsTGFuZ3VhZ2VEaWFsb2d1ZUNvbXBvbmVudD4sXG4gICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueSxcblxuICkge31cblxuXG4gbmdPbkluaXQoKSB7XG4gIHRoaXMubGFuZ3VhZ2VMaXN0ID0gdGhpcy5kYXRhLmxhbmd1YWdlTGlzdCB8fCBbXTtcbiAgaWYgKHRoaXMuZGF0YS5wcmVTZWxlY3QpIHtcbiAgICBjb25zdCBwcmVTZWxlY3RJbmRleCA9IHRoaXMubGFuZ3VhZ2VMaXN0LmZpbmRJbmRleCgobGFuZzogYW55KSA9PiBsYW5nLmxhbmdJZCA9PT0gdGhpcy5kYXRhLnByZVNlbGVjdC5sYW5nSWQpO1xuICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSA9IHByZVNlbGVjdEluZGV4ICE9PSAtMSA/IHRoaXMubGFuZ3VhZ2VMaXN0W3ByZVNlbGVjdEluZGV4XSA6IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5zZWxlY3RlZExhbmd1YWdlID0gdGhpcy5sYW5ndWFnZUxpc3QubGVuZ3RoID4gMCA/IHRoaXMubGFuZ3VhZ2VMaXN0WzBdIDogbnVsbDtcbiAgfVxuIH1cblxuIG9uTGFuZ3VhZ2VDaGFuZ2UoJGV2ZW50OiBhbnkpIHtcbiAgY29uc29sZS5sb2coJ1NlbGVjdGVkIExhbmd1YWdlICRldmVudDonLCAkZXZlbnQpO1xuIH1cbiAgb25TdWJtaXQoKSB7XG4gIGlmKHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSk7IC8vIFBhc3Mgc2VsZWN0ZWQgb2JqZWN0IHRvIHBhcmVudFxuICB9XG4gIH1cbn1cbiIsIjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cImRpYWxvZy1oZWFkZXIgdGV4dC1sZWZ0IGZsZXggZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICA8cCBjbGFzcz1cIm1hdC1zdWJoZWFkaW5nLTEgdGV4dC1jZW50ZXJcIj5DaG9vc2UgWW91ciBQcmVmZXJyZWQgTGFuZ3VhZ2U8L3A+XG4gICAgICAgIDxwIGNsYXNzPVwibWF0LWJvZHktMiB0ZXh0LWNlbnRlclwiPlRoaXMgY291cnNlIGlzIGF2YWlsYWJsZSBpbiBtdWx0aXBsZSBsYW5ndWFnZXMuIFlvdSBjYW4gc2VsZWN0IG9uZSB0byBiZWdpbi48L3A+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxhbmctbXNnLXdyYXBwZXJcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgY2xhc3M9XCJsYW5nLXNlbGVjdC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8bWF0LXNlbGVjdCBbKG5nTW9kZWwpXT1cInNlbGVjdGVkTGFuZ3VhZ2VcIiAobmdNb2RlbENoYW5nZSk9XCJvbkxhbmd1YWdlQ2hhbmdlKCRldmVudClcIiBjbGFzcz1cIm1hdC1ib2R5LTFcIj5cbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgbGFuZyBvZiBsYW5ndWFnZUxpc3RcIiBbdmFsdWVdPVwibGFuZ1wiPlxuICAgICAgICAgICAgICAgICAgICB7eyBsYW5nLm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXCI+XG4gICAgICAgICAgICA8YSAoY2xpY2spPVwidGhpcy5kaWFsb2dSZWYuY2xvc2UoKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgbWF0LXN0cm9rZWQtYnV0dG9uIGN1c3RvbS1yb3VuZGVkIG1hcmdpbi1yaWdodC1tXCI+Q2FuY2VsPC9hPlxuICAgICAgICAgICAgPGEgKGNsaWNrKT1cIm9uU3VibWl0KClcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGFjdGlvbi1idXR0b25cIj5Db25maXJtICYgU3RhcnQgQ291cnNlPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuIl19
|